{"_id":"@art-of-coding/async-util","_rev":"1-4c222fed5e806a422048ad77dce23639","name":"@art-of-coding/async-util","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@art-of-coding/async-util","version":"0.0.1","description":"A set of async utility helpers","author":{"name":"Michiel van der Velde","email":"michiel@michielvdvelde.nl","url":"http://michielvdvelde.nl"},"license":"MIT","keywords":["async","await","utility","helper"],"engines":{"node":"=>10"},"repository":{"type":"git","url":"git+https://github.com/Art-of-Coding/async-util.git"},"bugs":{"url":"https://github.com/Art-of-Coding/async-util/issues"},"homepage":"https://github.com/Art-of-Coding/async-util","devDependencies":{"@types/node":"^14.11.5"},"gitHead":"b9f692ba6e050ab9102f4add42e0e4cff110bb8e","_id":"@art-of-coding/async-util@0.0.1","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-OqX6uZAQkDwZeTOLm8hlqGvnDg6auNA/qOYhace3BRxZu1PWV9m6YyrO9NYrySxTEgYSam3ERWajzcy4tuIFWg==","shasum":"695ec6652db806dee04436b981e237c23cfb3add","tarball":"https://registry.npmjs.org/@art-of-coding/async-util/-/async-util-0.0.1.tgz","fileCount":11,"unpackedSize":20139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgJTgCRA9TVsSAnZWagAA2xwP/2ZktVIMkOicT1Dn3G0p\n1+AT3Ee7vrPOO1GlDEF9l5BQ+KlNSjw5Mp6ln/q0zVSACSU3cbdHKltqIanx\n5LT+kVu4/cJjsSGpjE73G0Z9IrgSFmoMulRDeUaU6euK2Qd/r+k6G0kovC5K\nmuCXKTtD/+ohQZHYrjwcm4nq341YSQg32fKYqUhzpyCGwnXlZ7cumn9sLWH/\nFtLzQv5RfnLU5dd3QYREt+DOS+ifTWkFgc+ZLaIjZJI+03P2SvFykloZE+iE\ndKKQNj0kR7M+JPsYR0sIhlv58c1RFkO2WFgkWiKl8/6QWr1ipcYALQUPxjwF\nEP+hfxHhJ4votAz4KNawfxZX4JaxRHLHWve4Ihrjt8fdHsgkpM0Gc+gWwuiz\nO2it+3ixQwDhTEPzRG7LcAo6XkG/XCJmw1QmLe2KezU5tgoiyBODCpWbCTYj\nKd2iKO9WuaF5nZzCyRQwl7mePx/lcmVgUqe490fVe5Zo9BvPTAjL0nMAiqhX\nvz++NErtlUoBav87AQgLsJgpLBAkGyUwW5Yx+5/VmzIKdO/+rMeppM14QXT+\nq/kV3bktl5AAutnfDpyYlsmxguyu9sIcuK6i6+DChKA4JLZoqWQx5kQxHz/x\n7korQ6MdVxx/V1A2AA8EuWXBVYLklfnyKd8TpSZx8ERsLn+xSMZnmSNBQXMj\n39ue\r\n=/8up\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBg01CuVzu7SjQW9jThLl2pTCF7gaSePQkflJQaTpfFyAiBhKgZMpCYQPQdclltxhYjALEjIwVCa9spBN92QxX50CQ=="}]},"maintainers":[{"name":"michielvdvelde","email":"michiel@michielvdvelde.nl"}],"_npmUser":{"name":"michielvdvelde","email":"michiel@michielvdvelde.nl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/async-util_0.0.1_1602262240081_0.648744009820996"},"_hasShrinkwrap":false}},"time":{"created":"2020-10-09T16:50:39.914Z","0.0.1":"2020-10-09T16:50:40.211Z","modified":"2022-04-04T15:35:52.872Z"},"maintainers":[{"name":"michielvdvelde","email":"michiel@michielvdvelde.nl"}],"description":"A set of async utility helpers","homepage":"https://github.com/Art-of-Coding/async-util","keywords":["async","await","utility","helper"],"repository":{"type":"git","url":"git+https://github.com/Art-of-Coding/async-util.git"},"author":{"name":"Michiel van der Velde","email":"michiel@michielvdvelde.nl","url":"http://michielvdvelde.nl"},"bugs":{"url":"https://github.com/Art-of-Coding/async-util/issues"},"license":"MIT","readme":"# WS\n\nThree simple, asynchronous methods that may make life easier.\n\nAll methods return a Promise.\n\n## Methods\n\n### `wait (ms: number)`\n\nWaits for `ms` milliseconds before resolving.\nThis method encapsulates `setTimeout` into a Promise.\n\n```ts\nimport { wait } from './index'\n\nasync function run () {\n  console.log('before')\n  await wait(1000) // wait 1000ms or 1s\n  console.log('after')\n}\n```\n\n### `waitUntil (event: string, emitter: EventEmitter)`\n\nWaits until `event` is emitted on the given `emitter`.\nThe promise is resolved with an array containing the event's arguments, or an\nempty array if there were none.\n\n```ts\nimport { EventEmitter } from 'events'\nimport { waitUntil } from './index'\n\nconst emitter = new EventEmitter()\n\nasync function run () {\n  // some code to emit an event...\n  setTimeout(() => emitter.emit('some-event'), 1000)\n\n  console.log('before')\n  await waitUntil('some-event', emitter)\n  console.log('after')\n}\n```\n\n### `waitOrTimeout (event: string, emitter: EventEmitter, ms: number)`\n\nWaits until `event` is emitted on the given `emitter`, or when `ms` has elapsed.\nIf the time has elapsed, the Promise rejects.\n\n```ts\nimport { EventEmitter } from 'events'\nimport { waitOrTimeout } from './index'\n\nconst emitter = new EventEmitter()\n\nasync function run () {\n  // some code to emit an event...\n  setTimeout(() => emitter.emit('some-event'), 1500)\n\n  console.log('before')\n  await waitOrTimeout('some-event', emitter, 1000)\n  console.log('after')\n}\n```\n\n### `waitOrError (event: string, emitter: EventEmitter, errorEvent = 'error')`\n\nWaits until either `event` or `errorEvent` is emitted on the given `emitter`.\nIf `errorEvent` is emitted, the Promise rejects.\n\n```ts\nimport { EventEmitter } from 'events'\nimport { waitErError } from './index'\n\nconst emitter = new EventEmitter()\n\nasync function run () {\n  // some code to emit an event...\n  setTimeout(() => emitter.emit('some-event'), 1000)\n  // some code to emit an error...\n  // setTimeout(() => emitter.emit('error', new Error('some error message')), 1000)\n\n  console.log('before')\n  await waitOrError('some-event', emitter)\n  console.log('after')\n}\n```\n\n### `resolveOrReject (resolveEvents: string[], rejectEvents: string[], emitter: EventEmitter)`\n\nResolves or rejects based on which event is received.\n\n```ts\nimport { EventEmitter } from 'events'\nimport { resolveOrReject } from './index'\n\nconst emitter = new EventEmitter()\n\nasync function run () {\n  const resolveEvents = [ 'connected', 'ready' ]\n  const rejectEvents = [ 'error', 'close' ]\n\n  // some code to emit an event...\n  setTimeout(() => emitter.emit('ready'), 1000)\n\n  console.log('before')\n  await resolveOrReject (resolveEvents, rejectEvents, emitter)\n  console.log('after')\n}\n```\n\n### `waitFor (resolveEvents: string[], rejectEvents: string[], timeout: number, emitter: EventEmitter)`\n\nResolves or rejects based on which event is received, or until the optional\ntimeout has expired. The promise is also cancelable.\n\n```ts\nimport { EventEmitter } from 'events'\nimport { waitFor } from './index'\n\nconst emitter = new EventEmitter()\n\nasync function run () {\n  const resolveEvents = [ 'connected', 'ready' ]\n  const rejectEvents = [ 'error', 'close' ]\n  const timeout = 10 * 1000 // optional timeout 10s\n\n  // some code to emit an event...\n  setTimeout(() => emitter.emit('ready'), 1000)\n\n  const { promise, cancel } = waitFor (resolveEvents, rejectEvents, timeout, emitter)\n\n  console.log('before')\n  await promise\n  console.log('after')\n}\n```\n\n## License\n\nCopyright 2017 [Art of Coding](http://artofcoding.nl).\n\nThis software is licensed under the [MIT License](LICENSE).\n","readmeFilename":"README.md"}