{"_id":"@async-util/common","_rev":"7-b0830b43760f1d386b86ba99d712cd6b","name":"@async-util/common","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@async-util/common","version":"0.1.0","keywords":["async","util"],"author":{"url":"talrasha007@gmail.com","name":"Tal"},"license":"Apache-2.0","_id":"@async-util/common@0.1.0","maintainers":[{"name":"talrasha007","email":"talrasha007@gmail.com"}],"homepage":"https://github.com/async-util/common#readme","bugs":{"url":"https://github.com/async-util/common/issues"},"dist":{"shasum":"28adeddf381be564a817fe079555dfc528016a7d","tarball":"https://registry.npmjs.org/@async-util/common/-/common-0.1.0.tgz","fileCount":5,"integrity":"sha512-alEU/1+9w+fc8siTyOgvY+p0H9NND4ezapZ4tWea9iXnW24pcq+765MkbQ4PLYLY1gnmZA6dbdXhOqpC5nvvnQ==","signatures":[{"sig":"MEQCIAWh+Tr+Kuxwe1xO00gdmLbHbXaKFpFzbjMNBRTyg65hAiAHvo0ZFBTgxD6GqUG5OZxpe5ImprWBW9kwcaeSdgFklA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13062},"main":"index.mjs","types":"index.d.mts","gitHead":"79a41f195f2b3010bf0ddb75b747089c64407b0b","_npmUser":{"name":"talrasha007","email":"talrasha007@gmail.com"},"repository":{"url":"git+https://github.com/async-util/common.git","type":"git"},"_npmVersion":"9.5.1","description":"Common tools of async-util","directories":{},"_nodeVersion":"18.16.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common_0.1.0_1692412966929_0.2251637606396295","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@async-util/common","version":"0.2.0","keywords":["async","util"],"author":{"url":"talrasha007@gmail.com","name":"Tal"},"license":"Apache-2.0","_id":"@async-util/common@0.2.0","maintainers":[{"name":"talrasha007","email":"talrasha007@gmail.com"}],"homepage":"https://github.com/async-util/common#readme","bugs":{"url":"https://github.com/async-util/common/issues"},"dist":{"shasum":"0239e774e2d6b8f03c3d65fbfe9a000210742074","tarball":"https://registry.npmjs.org/@async-util/common/-/common-0.2.0.tgz","fileCount":5,"integrity":"sha512-CnW03OWgDORMVDB6Ba12I1I2D0kTZzswUZIeT6yVSIBqddduyrvO8V7AUyZhtSpWw/2LUa4HT+sJWLIFqZDOEg==","signatures":[{"sig":"MEYCIQDi2+gbr0GcqwDUn9aH7JWOJeoBhEOOHJx61k20MmQEQQIhAMkSB7sXE1KWxrllLml+CGQb1pMj4hIcPqC2GvOHH+CV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13535},"main":"index.mjs","types":"index.d.mts","gitHead":"ce9708fad64187d481f8b7c1fdb5aa8a6e57929a","_npmUser":{"name":"talrasha007","email":"talrasha007@gmail.com"},"repository":{"url":"git+https://github.com/async-util/common.git","type":"git"},"_npmVersion":"9.5.1","description":"Common tools of async-util","directories":{},"_nodeVersion":"18.16.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common_0.2.0_1701274143952_0.271777244779253","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@async-util/common","version":"0.3.0","keywords":["async","util"],"author":{"url":"talrasha007@gmail.com","name":"Tal"},"license":"Apache-2.0","_id":"@async-util/common@0.3.0","maintainers":[{"name":"talrasha007","email":"talrasha007@gmail.com"}],"homepage":"https://github.com/async-util/common#readme","bugs":{"url":"https://github.com/async-util/common/issues"},"dist":{"shasum":"2faba5fd72a32f6ba2a64f5ebabe21569d13f269","tarball":"https://registry.npmjs.org/@async-util/common/-/common-0.3.0.tgz","fileCount":5,"integrity":"sha512-O+p9mpDwxam8tEdHU1B1jTI/7d7TdgNjVTZ+KqgEPSBOApvFqs9ndwlJpd65xVMgIH30QieSnxbt80ADTtciVw==","signatures":[{"sig":"MEUCIQCMa7t59pfKtO9GApNRdFiUpUUm/W27dqDEzJhM3iNRdwIgC+Ugz1hV91d+5F9PywmV0rkubCx+DR5rSQwqyePbZ0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14783},"main":"index.mjs","types":"index.d.mts","gitHead":"d93ce094bf04390722cb6eeb9992aa915a11fe77","_npmUser":{"name":"talrasha007","email":"talrasha007@gmail.com"},"repository":{"url":"git+https://github.com/async-util/common.git","type":"git"},"_npmVersion":"9.5.1","description":"Common tools of async-util","directories":{},"_nodeVersion":"18.16.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common_0.3.0_1701340443624_0.21618707936941806","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@async-util/common","version":"0.3.1","keywords":["async","util"],"author":{"url":"talrasha007@gmail.com","name":"Tal"},"license":"Apache-2.0","_id":"@async-util/common@0.3.1","maintainers":[{"name":"talrasha007","email":"talrasha007@gmail.com"}],"homepage":"https://github.com/async-util/common#readme","bugs":{"url":"https://github.com/async-util/common/issues"},"dist":{"shasum":"cd84afa2a787ac705e26e22be50d8aa371fabef0","tarball":"https://registry.npmjs.org/@async-util/common/-/common-0.3.1.tgz","fileCount":5,"integrity":"sha512-Y9DpMrUG5YaPpFySZNhQvPPadRfQFq6vL+ydNMqps7E944vUTjtZi1sfhu7P/jEmiadl6RqLl/QrH5DLjVBFEg==","signatures":[{"sig":"MEUCIEdoNmNkvX7iCykKwMpCBYFnv5mUMSGgt9c9ksWSwpq+AiEA7wPW8oq5F9aofOjJzK/nJ1w4lONvSvb0hogDYxKLHP0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16198},"main":"index.mjs","types":"index.d.mts","gitHead":"b02d34a68e3467f4a9c9afb268a7cd387e4d374c","_npmUser":{"name":"talrasha007","email":"talrasha007@gmail.com"},"repository":{"url":"git+https://github.com/async-util/common.git","type":"git"},"_npmVersion":"9.5.1","description":"Common tools of async-util","directories":{},"_nodeVersion":"18.16.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/common_0.3.1_1701348803925_0.7621826413105761","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@async-util/common","version":"0.5.0","keywords":["async","util"],"author":{"url":"talrasha007@gmail.com","name":"Tal"},"license":"Apache-2.0","_id":"@async-util/common@0.5.0","maintainers":[{"name":"talrasha007","email":"talrasha007@gmail.com"}],"homepage":"https://github.com/async-util/common#readme","bugs":{"url":"https://github.com/async-util/common/issues"},"dist":{"shasum":"ef9dcbd90790855fcf7a6a2ef8a32ecabb958565","tarball":"https://registry.npmjs.org/@async-util/common/-/common-0.5.0.tgz","fileCount":8,"integrity":"sha512-FLKoac8ziv8ZoErGGlkYpu4nuqiYoYgrRmLgfmLdHpCj4lIqJvn6TYo8hOF+iLngPMXjeGjyDxeQmCAFOZuzWw==","signatures":[{"sig":"MEYCIQDSfCtuCt2w2Mblwaf5PjHJYVxFGdeRShCJtnfArpUkCQIhANlTvUnjldLl4sNj4WSar4H4XcP1x4v0AfXvEpSOym75","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22452},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"31c4d8ab7f2180b55ba6e9c9be31e9db274f3ddb","scripts":{"build":"tsc"},"_npmUser":{"name":"talrasha007","email":"talrasha007@gmail.com"},"repository":{"url":"git+https://github.com/async-util/common.git","type":"git"},"_npmVersion":"10.8.2","description":"Common tools of async-util","directories":{},"_nodeVersion":"20.18.0","_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2"},"_npmOperationalInternal":{"tmp":"tmp/common_0.5.0_1730970335851_0.3953462062688162","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"@async-util/common","version":"0.6.0","keywords":["async","util"],"author":{"url":"talrasha007@gmail.com","name":"Tal"},"license":"Apache-2.0","_id":"@async-util/common@0.6.0","maintainers":[{"name":"talrasha007","email":"talrasha007@gmail.com"}],"homepage":"https://github.com/async-util/common#readme","bugs":{"url":"https://github.com/async-util/common/issues"},"dist":{"shasum":"d23b60b88c104ca303f36f9f18fcef3e144ab1f4","tarball":"https://registry.npmjs.org/@async-util/common/-/common-0.6.0.tgz","fileCount":8,"integrity":"sha512-GUY3ok8AuDyDq8RSm+L5q2mt3yDy1xTrm+k6kXsGpnyJPI7s6Q5A+QtCCcpXhYhxTXTSXYW4lYKDnV9XiZd8lQ==","signatures":[{"sig":"MEUCIQDbpC6KaVVLi9IJNxcidZnP1DcWdmd3Ro/nrQqLK2JtBwIgMHXk6blhukTz9RH1CR3soLdGHp6kz1KZg2C/IZTkqA0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27996},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"73e682c3c0499cf8eaec5732cce7a1aff9d10977","scripts":{"build":"tsc"},"_npmUser":{"name":"talrasha007","email":"talrasha007@gmail.com"},"repository":{"url":"git+https://github.com/async-util/common.git","type":"git"},"_npmVersion":"10.8.2","description":"Common tools of async-util","directories":{},"_nodeVersion":"20.18.0","_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2"},"_npmOperationalInternal":{"tmp":"tmp/common_0.6.0_1732083647827_0.4633290844481257","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"@async-util/common","version":"0.7.0","description":"Common tools of async-util","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/async-util/common.git"},"keywords":["async","util"],"author":{"name":"Tal","url":"talrasha007@gmail.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/async-util/common/issues"},"homepage":"https://github.com/async-util/common#readme","devDependencies":{"ts-node":"^10.9.2"},"_id":"@async-util/common@0.7.0","gitHead":"664a3a91323e061994a69dcb9fc76d533e969197","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-KM87g9GStnWtwJ9nTxOrGcDsM1oJ8SHqaq1Amcyd3WSffJuMHmkN+tNIRkhaZTCiPFvLaZd7rWWHeOmooWlXmg==","shasum":"54a39b8c6d2c09eae9f94f07eae4bc80995df77a","tarball":"https://registry.npmjs.org/@async-util/common/-/common-0.7.0.tgz","fileCount":6,"unpackedSize":22177,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEMCIG9XKSLQBrkgGKA0vN/a4VUiEJrhekpp43wtLyWDKeKDAh9wMNawlBj4J9227/8K4PIn879abQx1bWe9o8f6DCDM"}]},"_npmUser":{"name":"talrasha007","email":"talrasha007@gmail.com"},"directories":{},"maintainers":[{"name":"talrasha007","email":"talrasha007@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/common_0.7.0_1766577838480_0.5818766111943083"},"_hasShrinkwrap":false}},"time":{"created":"2023-08-19T02:42:46.802Z","modified":"2025-12-24T12:03:58.856Z","0.1.0":"2023-08-19T02:42:47.104Z","0.2.0":"2023-11-29T16:09:04.123Z","0.3.0":"2023-11-30T10:34:03.857Z","0.3.1":"2023-11-30T12:53:24.091Z","0.5.0":"2024-11-07T09:05:36.019Z","0.6.0":"2024-11-20T06:20:48.035Z","0.7.0":"2025-12-24T12:03:58.621Z"},"bugs":{"url":"https://github.com/async-util/common/issues"},"author":{"name":"Tal","url":"talrasha007@gmail.com"},"license":"Apache-2.0","homepage":"https://github.com/async-util/common#readme","keywords":["async","util"],"repository":{"type":"git","url":"git+https://github.com/async-util/common.git"},"description":"Common tools of async-util","maintainers":[{"name":"talrasha007","email":"talrasha007@gmail.com"}],"readme":"# common\ncommon tools for async util\n\n## Install\n```bash\nnpm i @async-util/common\n```\n\n## Usage\n*Note: If you want to use this module in a nodejs app, you should import the lib in .mjs file.*\n\n### sleep\n```js\nimport { sleep } from '@async-util/common';\n\nasync function blabla() {\n  //...\n  await sleep(1000); // Sleep for 1000ms(1 second)\n  //...\n} \n```\n\n### function helper\n```js\nimport { isAsync, isGenerator, isAsyncGenerator } from '@async-util/common';\n\nasync function foo() {}\nfunction *gen() {}\nasync function *genAsync() {}\n\nisAsync(foo); // true\nisGenerator(gen); //true\nisAsyncGenerator(genAsync); // true\n```\n\n### group / groupAsync\n```js\nfor (const g of group([1,2,3,4,5], 3)) {\n  console.log(g)\n}\n\nasync function *genAsync() {\n  for (const i of [1,2,3,4,5]) {\n    yield i;\n    await sleep(500);\n  }\n}\n\nfor await (const g of groupAsync(genAsync(), 3)) {\n  console.log(g)\n}\n```\n\n### getDataFromEvent\n```js\nimport { getDataFromEvent } from '@async-util/common'\nimport { EventEmitter } from 'events'\n\nasync function main() {\n  const emitter = new EventEmitter()\n  const evid = setInterval(() => emitter.emit('data', Date.now()), 500)\n  setTimeout(() => {\n    clearInterval(evid)\n    emitter.emit('end')\n  }, 5000)\n\n  for await (const data of getDataFromEvent(emitter)) {\n    console.log(data)\n  }\n\n  console.log('event1 done')\n\n  const evid2 = setInterval(() => emitter.emit('data', Date.now()), 500)\n  setTimeout(() => {\n    clearInterval(evid2)\n    emitter.emit('error', 'oops')\n  }, 5000)\n\n  for await (const data of getDataFromEvent(emitter)) {\n    console.log(data)\n  }\n\n  console.log('event2 done, should not happend')\n}\n\nmain().catch(console.error)\n```\n\n### EventDataSource\n```js\nimport { EventDataSource } from '@async-util/common'\nimport { EventEmitter } from 'events'\n\nasync function main() {\n  const emitter = new EventEmitter()\n  const evid = setInterval(() => emitter.emit('data', Date.now()), 500)\n  setTimeout(() => {\n    clearInterval(evid)\n    emitter.emit('end')\n  }, 5000)\n\n  const ds = new EventDataSource(emitter);\n\n  for await (const data of ds.getData()) {\n    console.log(data)\n  }\n\n  console.log('event1 done')\n\n  const evid2 = setInterval(() => emitter.emit('data', Date.now()), 500)\n  setTimeout(() => {\n    clearInterval(evid2)\n    emitter.emit('error', 'oops')\n  }, 5000)\n\n  for await (const data of ds.getData()) {\n    console.log(data)\n  }\n\n  console.log('event2 done, should not happen.')\n}\n\nmain().catch(console.error)\n```\n\n### WebSocketDataSource\n```js\nimport { WebSocketDataSource } from '@async-util/common'\n\nasync function main() {\n  const ws = new WebSocketDataSource(new WebSocket('wss://echo.websocket.org'));\n\n  await ws.open();\n  setTimeout(() => ws.send('{\"op\":1,\"d\":6}'), 1000);\n  setTimeout(() => ws.close(), 5000);\n\n  for await (const { data } of ws.getData()) {\n    console.log(data);\n  }\n\n  console.log('Websocket closed...');\n}\n\nmain().catch(console.error);\n```\n\n### AsyncPool\n```js\nimport { sleep, AsyncPool } from '@async-util/common';\n\nasync function Foo(v) {\n  await sleep(500 + Math.random() * 50);\n  console.log(v);\n}\n\nasync function bar() {\n  console.log('Without pool.');\n  for (let i = 0; i < 10; i++) {\n    await Foo(i);\n  }\n\n  console.log('With pool.');\n  const pool = new AsyncPool(3/* concurrency = 3*/);\n  for (let i = 0; i < 10; i++) {\n    await pool.push(() => Foo(i));\n  }\n}\n```\n\n### StreamParser\n```js\nimport { StreamParser } from '@async-util/common';\n\nconst file = Bun.file('path/to/your/file');\nconst stream = file.stream();\nconst parser = new StreamParser(stream);\n\n// parse line by line\nfor await (const line of parser.lines()) {\n  console.log(line);\n}\n\n// or parse as JSON objects\nfor await (const obj of parser.json<YOUR_TYPE_HERE>()) {\n  console.log(obj);\n}\n```","readmeFilename":"README.md"}