{"_id":"join-async-iterator","_rev":"3-4f18bf1a786b38a391662eec9cef1a3e","name":"join-async-iterator","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"join-async-iterator","version":"1.0.0","description":"Join async iterators in order.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/ThaUnknown/join-async-iterator.git"},"keywords":["mutlistream","multi-stream","multi-asnyc-iterator","join-async-iterator","queue-asnyc-iterator","merge-async-iterator","iterator","async","async-iterator","stream","node-stream"],"author":{"name":"ThaUnknown"},"license":"MIT","bugs":{"url":"https://github.com/ThaUnknown/join-async-iterator/issues"},"homepage":"https://github.com/ThaUnknown/join-async-iterator#readme","gitHead":"52ea8a446dabcc2b743d796dfa85f8c9397c6b4a","_id":"join-async-iterator@1.0.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.3","dist":{"integrity":"sha512-l00qNzTAnymxzmg0r7YiNRAiSMZJ3pD1lEd1oMrCFjOMjUv8qCCE9dMkGdAQHcUlZKPYYRIWqRBSgTx0IEx5Nw==","shasum":"d8d5eb2b65104f13cf28e7fdf55d9278e82e94fc","tarball":"https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.0.0.tgz","fileCount":3,"unpackedSize":2188,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9ErSwL6QyPkx85uAO8c7bXnWftMne+um5yFSv1b2+AwIgUFgqAOOvOL7XtTmiu+h9mdKLdZNZ/87IvtVQy8WFKjo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiwuBDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo7MQ//Vmq4Y4gLRdisVs5GTU3Z6RslVru+2OORFcyhoKl97Wk4rYEB\r\nQd9armOuQ7p67eB0g6S7yRbNCIUXgDv5/KfXl5jezOzLk2+b0owMRfnqg/lY\r\nyPqH43RyQR6V67Ii6xBNpeE5imdBz9CVC1eBPKV6ef639Y+wQhzT7CPDzkWl\r\ncbCx1mDmr7IZbuLx/lqvHlgUFF08snrPWUcgvQBFDUXDxFnop5LYYMrLWrYg\r\nb3hvVCY70l/exDcIlmQAnCYo9pIgdK2vtY5uhjBJOxprE3HfFHWH2OD8vLq+\r\ndX3RVUNEyFrfMDA8kz5NlzWKLOwwq4pPzI9LLvTMDdqUFrLBnH1yKgy2zVsA\r\nDz0guEQhKgfbyGY+BIQ15MaI0l4+ucA8j9HCGL8yZz3Vpdl1AUsQxYDOc776\r\ncL2P4nNKKdmlI+UusCSE6F3cE7iTz8ISbtXsLHRABnJekLLPoG7Ovsx1vit5\r\nPUbiFSo8gKPpR5TlkMQUmLr/C2D3GN7VMM5LG2vYU7Rmyt0HsECxc4ar5ti/\r\ndU8CrVzTZRFmM9W8rDhxOq+VOPZ8D2ihbhX1OwKLVAdDao4U/a02a6zur7r+\r\na4X/sDf0nVv1xkKMue3x11bDTvvtCiVTtcroWrjQ109pIhemQ2w8215KxgkL\r\n2icA4MfV+ULkFeUgdTl+YoEoFZb+2VmA//w=\r\n=gNJS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"thaunknown","email":"casistaken@gmail.com"},"directories":{},"maintainers":[{"name":"thaunknown","email":"casistaken@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/join-async-iterator_1.0.0_1656938563550_0.2547817219926236"},"_hasShrinkwrap":false},"1.0.1":{"name":"join-async-iterator","version":"1.0.1","description":"An async iterator that joins multiple other async iterators in order, one after another.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/ThaUnknown/join-async-iterator.git"},"keywords":["mutlistream","multi-stream","multi-asnyc-iterator","join-async-iterator","queue-asnyc-iterator","merge-async-iterator","iterator","async","async-iterator","stream","node-stream"],"author":{"name":"ThaUnknown"},"license":"MIT","bugs":{"url":"https://github.com/ThaUnknown/join-async-iterator/issues"},"homepage":"https://github.com/ThaUnknown/join-async-iterator#readme","gitHead":"953c6cc5af740d573cd0c0ed6e60ff313558ca04","_id":"join-async-iterator@1.0.1","_nodeVersion":"16.13.0","_npmVersion":"8.1.3","dist":{"integrity":"sha512-ItsQFxPnIarp1dvTx9BMrO+Osm+TelPuJdaVuDK8lsBEl/N9K9mezoKYGUwOySnzLIijALpn5OqgtxDd8VTT4g==","shasum":"5f4d4a8095df0583eedb919e5f0cd4c1c5320707","tarball":"https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.0.1.tgz","fileCount":4,"unpackedSize":4465,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD51tqHQD142SYZHGpjUFjXH17s51hNzIGs4tCHRZS5vQIhAPLiL2e9Fgv/9nsBItoTLDYEHLIpxZFXzM4BoznLxkKX"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiyckOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpKFQ//cPPC5AxRc6URgavvfE3AacvkhhtAU5TaiL2xbZ2XctQL7JdN\r\nM0NXNMxjfmrjYmpj2vwwh+JoGYwu2n7v61d81AmTcxtc9In2Lm6L20rRlubm\r\n6X8wG2K9UJrR/SSi/F5PkUUbUrhEkX79Ti3+pQq5y/wiCuU9GxN1xAGkveVl\r\nx0R3pvANW95T+oASniwi79JeTtU6L7Fbsjcw2poTPAHbIdELll0YsqsDGPOC\r\nCyaYMN9BrV9t8F3W+Rtmc39NiS7mtcx7DHCDSs5jLF6GcfFP3jWPk7vg9+6r\r\niLGXRv9dlAPLgf/AIFAHNfzwsw1tW1vzVpIJQpKeetVV+Rb9PZLgfK2U9wlG\r\nBivwe+dy8A4fwrkk+bbhSv6KO2N3gwRV1TtpiwW9fLeovFB7BnY8n8bUNCk3\r\np8KurHixoCofMIyR/2MOW1OiAPbvyzg6B0wVO2O+CZWB1IXnwdN6Pfk22VL3\r\nztP4gjkyM+M1BzsyzMUYaWGloEW1AhauAhOFI9ODLm0sXjNDU3tgPR5cSgt2\r\nrxigSY3BUocXcECGD24LuMnnUgR36pepVJb32NNWOzZQlhVpAfKoEFi0dy7K\r\n2Pwykcf6d+Nfh9o3k+TmNdZlehwKgWlqXWl/sfzchjRn1+jRVa5tBLjI8CfO\r\nU6D7L4qyhvM0T3Sng15hXktIyKApVK0S43Q=\r\n=zuLi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"thaunknown","email":"casistaken@gmail.com"},"directories":{},"maintainers":[{"name":"thaunknown","email":"casistaken@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/join-async-iterator_1.0.1_1657391374078_0.34170618248817597"},"_hasShrinkwrap":false},"1.1.0":{"name":"join-async-iterator","version":"1.1.0","description":"An async iterator that joins multiple other async iterators in order, one after another.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/ThaUnknown/join-async-iterator.git"},"keywords":["mutlistream","multi-stream","multi-asnyc-iterator","join-async-iterator","queue-asnyc-iterator","merge-async-iterator","iterator","async","async-iterator","stream","node-stream"],"author":{"name":"ThaUnknown"},"license":"MIT","bugs":{"url":"https://github.com/ThaUnknown/join-async-iterator/issues"},"homepage":"https://github.com/ThaUnknown/join-async-iterator#readme","gitHead":"4c4900f7e5c93ea4e856e1a3ad96b3c9dd86e748","_id":"join-async-iterator@1.1.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.3","dist":{"integrity":"sha512-IT+8xYLLPlLH7vCaY2qdjzy2AM/eOTZxVr0+LuREhZoaDnMuHTJOBEFXZS6AF+64saD90y0+x+m134rLAx0o7g==","shasum":"5143b55d579b71227445cc062fed32e9c38c8b6d","tarball":"https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.1.0.tgz","fileCount":4,"unpackedSize":4391,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtKdY61OCgs/KMgm/6zHDjr64Cxl46aCz2j1a+ANvYiAIgGta3uh0aejY2+sfkn6JF/EqU40gOkC6UfpC9Wryi4tY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiytIxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpDNA/8DabeTIo+5QvpvOySoe1SPEHiEELSrqtsxDhFey+gTcSZcbUU\r\naYnRdFoooUZhpKhvyNVWsY+Yku9dBxJgZJoP6nLfKEqlFh9yXVLY805nHQqj\r\nYBxbVXlpLI87isrdu+QLeTCeWwvSgVITTNb3mD5JeFogvYg5FeSPH+MDV11C\r\nLKDgAqgaZitDdT4VZMhBzojteOP6FIBASvE81r6u82WVs7JoPlav7p3kI+Cc\r\nlZ3oqQPB3zacBGh0C6eqebXcNhmwnzX+UIA6jnRW0n0To98UvESgYXeAX1cv\r\nthX9VINB63itjEtiw/ISTDScyLJSkC0REtM4rePZ0NnQPyWSC1cGd39btciV\r\n5PXQjod0UnmFqQbgLMzFdcOv+M+gWBvDBEgObUuEM3O2dwmEBYSAQ4RRn2uV\r\nIlgvDnrVmLxFO0WrKmjRkDfSHRaypVKLgXJkKK+5Fyt7Z/yLvOaXkpr2Tgrq\r\nxCpl9HbCPxBJgV49yPtbvufxHgf/urtQbUYqUMlEhTDh29HjHhO2G25dIY6m\r\nlCsgd0rxqHjk2WrtWOS/2HAyhhALld9H/uR+XpEmJV2kV1ZB1GnspzJ2/u1t\r\n7NALP8EUOOwgdt//pdQ0rlCRxryzgI3SEyrhRYEXxw/DQ5piQa9U4fjgHZUV\r\nqox7/NIrrPe5Qb55F7i3Mpg0NwX97djziHU=\r\n=jVnb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"thaunknown","email":"casistaken@gmail.com"},"directories":{},"maintainers":[{"name":"thaunknown","email":"casistaken@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/join-async-iterator_1.1.0_1657459249635_0.4549822556771861"},"_hasShrinkwrap":false},"1.1.1":{"name":"join-async-iterator","version":"1.1.1","description":"An async iterator that joins multiple other async iterators in order, one after another.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/ThaUnknown/join-async-iterator.git"},"keywords":["mutlistream","multi-stream","multi-asnyc-iterator","join-async-iterator","queue-asnyc-iterator","merge-async-iterator","iterator","async","async-iterator","stream","node-stream"],"author":{"name":"ThaUnknown"},"license":"MIT","bugs":{"url":"https://github.com/ThaUnknown/join-async-iterator/issues"},"homepage":"https://github.com/ThaUnknown/join-async-iterator#readme","gitHead":"8342ac483dfe65cbb8f599f224d9f459b5ae821d","_id":"join-async-iterator@1.1.1","_nodeVersion":"16.13.0","_npmVersion":"8.1.3","dist":{"integrity":"sha512-ATse+nuNeKZ9K1y27LKdvPe/GCe9R/u9dw9vI248e+vILeRK3IcJP4JUPAlSmKRCDK0cKhEwfmiw4Skqx7UnGQ==","shasum":"7d2857d7f4066267861888d264769e842110d07e","tarball":"https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.1.1.tgz","fileCount":4,"unpackedSize":4395,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB/K2uvqaYWZClELGfBirjfps7yL5ty1MothOrFAgoH5AiEA6kt0nMmF/10HM6Ub7NLN+UsD3uHQrdTHLpzVdklXszM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiy14rACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmojiw/+J2fTpS87RrpcK/ZE43vT8Vbjpyi7zp7g2RMsVfHxup8LkOOL\r\ngPTiezjcGRLTQi7UxYyraoQFbWuOG+tJqxNhd2P807isnt9wzuGSQgb5d3am\r\ndwk0rmUjuwnr0uNcj7pY5HXK7VAG8Aj5l/ScySTFWlzkGRd5TkoMBhTJKCej\r\nkoKUquXKINzATz4oPrIagzVJSsTsdia5odBZLdgeGo99Giff+ke0PojrxarV\r\nswtNyeIhJRsVucfIBN9pQwurkORT2u58jTCBgm7p+W+9UjcAw7tC4d8LnGWs\r\nMDG8UUR4K0p0lbWbtYABLO3zxkpnF1KZQHu1EEST71PGr8s6z4Rbtwx7/Duw\r\nzUPVMCIwhYf5P+fofNEYPx2uDZe8jGYPFWUVmjDcP4ZunYKDVYf3e3cAvT5/\r\nVNZsKAOUVqesTAIUbI22+Vle7I3VzzvbBFqAyUyamfvHe/ITqOZZ77aSrfxC\r\nIT7g9qtQWmyJWMVQUh0DcuhKB0VTS/jA7do79daQqIgesF8ukYOMqkwdDHCr\r\nyhX/1fTxa6rLfTEuQXLRTCsWJycL53w4th68ZlZEUFJXLR7hX6cqbd7uExGa\r\nVBVYnSQtDONRJ6GWQSIMmRCqTAZsGTRvW35wKIk71k0KTkPp06KiqRsbrYaZ\r\nLJfXr72nsZuhfcgV6m4GvWNKyng3hoqsTSw=\r\n=YW3N\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"thaunknown","email":"casistaken@gmail.com"},"directories":{},"maintainers":[{"name":"thaunknown","email":"casistaken@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/join-async-iterator_1.1.1_1657495083037_0.38085619887059385"},"_hasShrinkwrap":false}},"time":{"created":"2022-07-04T12:42:43.549Z","1.0.0":"2022-07-04T12:42:43.801Z","modified":"2022-07-10T23:18:03.299Z","1.0.1":"2022-07-09T18:29:34.271Z","1.1.0":"2022-07-10T13:20:49.791Z","1.1.1":"2022-07-10T23:18:03.237Z"},"maintainers":[{"name":"thaunknown","email":"casistaken@gmail.com"}],"description":"An async iterator that joins multiple other async iterators in order, one after another.","homepage":"https://github.com/ThaUnknown/join-async-iterator#readme","keywords":["mutlistream","multi-stream","multi-asnyc-iterator","join-async-iterator","queue-asnyc-iterator","merge-async-iterator","iterator","async","async-iterator","stream","node-stream"],"repository":{"type":"git","url":"git+https://github.com/ThaUnknown/join-async-iterator.git"},"author":{"name":"ThaUnknown"},"bugs":{"url":"https://github.com/ThaUnknown/join-async-iterator/issues"},"license":"MIT","readme":"# join-async-iterator\r\n\r\n### An async iterator that joins multiple other async iterators in order, one after another.\r\n\r\nA majorly simplified version of [multistream](https://www.npmjs.com/package/multistream). Dependency free and very fast. When the first interator ends, the next one starts, and so on, until all iterators are consumed. This accepts anything with an async iterator, be that node streams or anything else.\r\n\r\n## Usage\r\n`join-async-iterator` accepts any iterator which yields async/sync iterables, so for example an array or streams:\r\n```js\r\nimport join from 'join-async-iterator'\r\nimport fs from 'fs'\r\nimport { Readable } from 'streamx'\r\n\r\nconst streams = [\r\n  fs.createReadStream(__dirname + '/numbers/1.txt'),\r\n  fs.createReadStream(__dirname + '/numbers/2.txt'),\r\n  fs.createReadStream(__dirname + '/numbers/3.txt')\r\n]\r\n\r\nconst asyncIterator = join(streams)\r\nconst stream = Readable.from(asyncIterator)\r\n\r\nstream.pipe(process.stdout) // => 123\r\n\r\n// or\r\n\r\nlet string = ''\r\nfor await (const number of join(streams)) { // top level await\r\n  string += number\r\n}\r\nconsole.log(string) // 123\r\n```\r\nTo lazily create the streams, wrap them in a function:\r\n```js\r\nconst streams = [\r\n  fs.createReadStream(__dirname + '/numbers/1.txt'),\r\n  function () { // will be executed when the stream is active\r\n    return fs.createReadStream(__dirname + '/numbers/2.txt')\r\n  },\r\n  new Uint8Array([3, 4]), // you can mix and match\r\n  [5, 6], // any form of iterable\r\n  '78' // even sync ones\r\n]\r\n\r\nReadable.from(join(streams)).pipe(process.stdout) // => 123\r\n```\r\nAlternatively, streams may be created by a \"factory\" function:\r\n```js\r\nfunction factory * (directory) {\r\n  for (let i = 1; i < 4, ++i) {\r\n    yield fs.createReadStream(directory + '/numbers/' + i + '.txt')\r\n  }\r\n}\r\n\r\nReadable.from(join(factory(__dirname))).pipe(process.stdout) // => 123\r\n```\r\nAlso works in browsers without needing node stream:\r\n```js\r\nimport 'fast-readable-async-iterator'\r\nimport join from 'join-async-iterator'\r\n\r\nfileinput.onchange = async ({ target }) => {\r\n  const streams = target.files.map(file => file.stream())\r\n  for await (const data of join(streams)) {\r\n    console.log('Read data from disk!', data)\r\n  }\r\n  console.log('Finished reading!')\r\n}\r\n```\r\n","readmeFilename":"README.md"}