{"_id":"async-parallel","_rev":"15-b5c1ddcde99b9b21cf2f687254c765d5","name":"async-parallel","description":"Async enabled each(), map(), filter() functions that work just like their standard counterparts, but can be used with async/await and also provide concurrency limiting. Includes built-in typings and JSDoc comments for IntelliSense documentation.","dist-tags":{"latest":"1.2.3"},"versions":{"1.0.0":{"name":"async-parallel","version":"1.0.0","description":"Simplifies invoking tasks in parallel using TypeScript async/await","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"b62e610a91237dc3d95a707e9f8a816c6aa48cfa","_id":"async-parallel@1.0.0","_shasum":"c6c2fef4f630ef85039c7dd4f84b4dd1b8817792","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.4","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"c6c2fef4f630ef85039c7dd4f84b4dd1b8817792","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.0.0.tgz","integrity":"sha512-bFBwrjC3yJhfNmBdBYj45Le5lnFDENrtgaNpXy5ww+iemS2H3LpObWU28/VeaENXSJxTKQXIQgwj+FCc2QOPQg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOpZlBFiqWoHaaCtdBCERe9uAR8k3mTeY0nUttWqCz9gIhAMCmQGC9zcqpqRh6ulW/BBVvUgHretube2F8cCy0TdKk"}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/async-parallel-1.0.0.tgz_1454905589271_0.3659745331387967"}},"1.0.1":{"name":"async-parallel","version":"1.0.1","description":"Simplifies invoking tasks in parallel using TypeScript async/await","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"324237a0c6f275dda4d1f3aa099d13236542f6ce","_id":"async-parallel@1.0.1","_shasum":"18349ade5569ce4df539b35d390fa765a8c95b9a","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.4","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"18349ade5569ce4df539b35d390fa765a8c95b9a","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.0.1.tgz","integrity":"sha512-BwucQSeGy1DuwAurIRNxCMWN5aszf/17aFz7TDK5dkYI5IrSrT6187PGM/OVkpqHYRoPq9zX4FrqJLxU164y/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDflNyQfoA1mSWZqImZR80IaZzFlcxZYdesvw2vCNsLJgIgFNPOSPjcv/jQdMEpUlPQZpjzepNYqQX1DiJ6/Nrr5dc="}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/async-parallel-1.0.1.tgz_1454906009536_0.19154225196689367"}},"1.0.2":{"name":"async-parallel","version":"1.0.2","description":"Simplifies invoking tasks in parallel using TypeScript async/await","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"b64932aaa6539fa108cf97f3ec98293aa996747c","_id":"async-parallel@1.0.2","_shasum":"e7acd6fd61e4b8f1f488f0ed251e8228041a640e","_from":".","_npmVersion":"2.14.12","_nodeVersion":"4.2.4","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"e7acd6fd61e4b8f1f488f0ed251e8228041a640e","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.0.2.tgz","integrity":"sha512-Qb0FZpQYjOe1baMPanFUEGpbfKPcPXOWwWUgpiMCZ3qa9sxeyF22D44qlcaOLdniR7j20dkpuqONydjI9iDQWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErauk3T/GMv6/HH1lc7pl91fIajnm/zKZgHaUkS01jsAiBdNRF1rFycOgDgFn8xB1sjBa4g4TQ/Gk2Gh5sSApRI1w=="}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/async-parallel-1.0.2.tgz_1454906466114_0.4452995602041483"}},"1.0.3":{"name":"async-parallel","version":"1.0.3","description":"Simplifies invoking tasks in parallel using TypeScript async/await","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel","each","map","invoke","foreach"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"76a573231410c8da5d183b315d308a770e730164","_id":"async-parallel@1.0.3","_shasum":"a686f13e5b6ab451491415c48177b50a0630a7ae","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.4.0","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"a686f13e5b6ab451491415c48177b50a0630a7ae","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.0.3.tgz","integrity":"sha512-EzXT4BlFDtdFPoPOzO874QKzhQSbz0pO0DfvJnOq+nrxyIqRE315SghjznO2jhFw+DaT3hmYFDxbeSWBj3PZ5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUkpzTP/7lv0XSI5zdKehkQ3mEiMCOst1BF1+EKo+uawIhAO3cRZBG21fgwelj+oziZloanh5Z8l14EysXmpyDGbK9"}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/async-parallel-1.0.3.tgz_1471498082356_0.22419474204070866"}},"1.0.4":{"name":"async-parallel","version":"1.0.4","description":"Simplifies invoking tasks in parallel using TypeScript async/await","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel","each","map","invoke","foreach"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"1114b26fc938d9f5be43b4bd492973ae7206ccd8","_id":"async-parallel@1.0.4","_shasum":"5cad66d5b20523eff9432811f5698c7027326895","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.4.0","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"5cad66d5b20523eff9432811f5698c7027326895","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.0.4.tgz","integrity":"sha512-Y8I286U8mPE89i1U8OZvO7HyvtRlBOtXoB+S1NIxdfmBkOFeTfHQBEl40hTwfZWd+Fr06eTiUVWYcAOv/8CxVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtn96Ljo/n7xF3Qe3yGM2OROXtg5giakBXYotLiMqdywIhAKYWWfUduWzvKbWGSnObK0Zy0mYS3RZr4aFwPWByPtO1"}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/async-parallel-1.0.4.tgz_1471499472783_0.7179267015308142"}},"1.0.5":{"name":"async-parallel","version":"1.0.5","description":"Simplifies invoking tasks in parallel using TypeScript async/await","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel","each","map","invoke","foreach"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"8333c251c364f4aa0605caa4a50d08b9d59d8235","_id":"async-parallel@1.0.5","_shasum":"8534ce88e2eb2a49c901de4e4a5eb0526718bfd4","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.4.0","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"8534ce88e2eb2a49c901de4e4a5eb0526718bfd4","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.0.5.tgz","integrity":"sha512-pxQJyes/5v/1egQCxyvaAGgWGg7Y8+KiNGPR6lTDhDLFLWonnZ+TvkcOuWXC7XREtMJWu6ePAiT6iv6JCmYq5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEpvxvw3haxuppSpCkjnXEHvbCaOlm7wtnb2t7UUQMoZAiEA3as0rrwPOLXhuHdoqoMnyxZfclFEbfWfWoCnWwDFDdA="}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/async-parallel-1.0.5.tgz_1471528961375_0.958816027501598"}},"1.0.6":{"name":"async-parallel","version":"1.0.6","description":"Simplifies invoking tasks in parallel using TypeScript async/await","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel","each","map","invoke","foreach"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"7de540ae159835832fe846e41c03cf67510e7794","_id":"async-parallel@1.0.6","_shasum":"7121fd7cd3df8680b956671b003da7f87fab33f6","_from":".","_npmVersion":"3.10.6","_nodeVersion":"6.4.0","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"7121fd7cd3df8680b956671b003da7f87fab33f6","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.0.6.tgz","integrity":"sha512-gOI7huBevk5DP8set8rL2aOa/rIU2lNQXwnjBeR5QoyX4aOh21RRGrBhqESO1rpmnQwo4K0N+7iQr3Ii8zQ4aA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNwP52Yjrbeh3fuzWlcqOADcY3+BAwNJlGeX/0cGpSlAiEAiJEHABzIXOb6LXChr5cDPN+lyh1QxT6FjoFGmZz1uEE="}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/async-parallel-1.0.6.tgz_1471529117524_0.11391264293342829"}},"1.0.7":{"name":"async-parallel","version":"1.0.7","description":"Simplifies invoking tasks in parallel using TypeScript async/await","main":"index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel","each","map","invoke","foreach"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"8bf65cf777507fd6899333642bee61736029d511","_id":"async-parallel@1.0.7","_shasum":"6df10bfb43ae325a80d0c4e6c51092e037c9cea6","_from":".","_npmVersion":"3.10.6","_nodeVersion":"4.5.0","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"6df10bfb43ae325a80d0c4e6c51092e037c9cea6","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.0.7.tgz","integrity":"sha512-2TngZAfhvQSFdIQXvaKjH+HfGQ942k9O5wYsEwh+zrRp9JOX5GdbPrq/7ndNnXiuDcXEKtd7OVT7s04aAN50Dw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhkxHXvbZboS5FWytrDNfE74qYRoQcr9IsNGD5EAcBfAiEAwKXVhCG+GhkQ7pBPV0a3TTei1Iescl+2hH4tlQjaR4U="}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/async-parallel-1.0.7.tgz_1471929100608_0.1460436312481761"}},"1.2.0":{"name":"async-parallel","version":"1.2.0","description":"Asynchronous versions of each(), map(), filter() that work just like their standard counterparts, but can be used with async/await and also provide concurrency limiting.","main":"index.js","scripts":{"test":"mocha","start":"node main.js"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel","each","map","invoke","foreach","filter","every","reduce","some","asynchronous","iterative","concurrency"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.37","@types/node":"^7.0.0","chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"5f1ffe9724f8f9420039d17f4cd1a539513d541a","_id":"async-parallel@1.2.0","_shasum":"5863285f9b98504beb3b3b53f8984b0343842fd6","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"5863285f9b98504beb3b3b53f8984b0343842fd6","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.2.0.tgz","integrity":"sha512-eJcSYlpluXqYNWwnhuD2xXSVeqM8YyiwlrRWbjbtCBCap872RFzOuuSk7ajYd8j6V0C23xWCCHRpvpDIyHhcnA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVqYKnVRpGEpssjnbd8s8At83FJ0o2RaNRSzwz8Tx/vwIgKj5Z1W1RsVlYzgQd3Y+BdSOchiOLPRJ8z6n2Vx3mUq8="}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/async-parallel-1.2.0.tgz_1498970405154_0.17219495703466237"}},"1.2.1":{"name":"async-parallel","version":"1.2.1","description":"Asynchronous versions of each(), map(), filter() that work just like their standard counterparts, but can be used with async/await and also provide concurrency limiting.","main":"index.js","scripts":{"test":"mocha","start":"node main.js"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel","each","map","invoke","foreach","filter","every","reduce","some","asynchronous","iterative","concurrency"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.37","@types/node":"^7.0.0","chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"01888d69fcfe2acecdb04810ee142595334d5898","_id":"async-parallel@1.2.1","_shasum":"5a820cae81bf078d3f1084ceac588033a683466e","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"5a820cae81bf078d3f1084ceac588033a683466e","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.2.1.tgz","integrity":"sha512-gwwJuHabIFXdC+xzhlK57Vzpq5dCjOZFBSPO7rl1Q3mrxJ8bMpH03oB6ItZNUNxCPjWjxNALOSsd4AXDMwCK9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC3txayFM1NIYPaIU3/uA9WLvXm8kA8dj2Wkf9QpV4aaAiEAvKV1/uIxFe7mLfwQpveQG51r950t7jRvNKBNksmNqVM="}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/async-parallel-1.2.1.tgz_1498971166489_0.3967383655253798"}},"1.2.2":{"name":"async-parallel","version":"1.2.2","description":"Async enabled each(), map(), filter() functions that work just like their standard counterparts, but can be used with async/await and also provide concurrency limiting. Includes built-in typings and JSDoc comments for IntelliSense documentation.","main":"index.js","scripts":{"test":"mocha","start":"node main.js"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["async","await","typescript","promise","parallel","each","map","invoke","foreach","filter","every","reduce","some","asynchronous","iterative","concurrency"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.37","@types/node":"^7.0.0","chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"290a6aa8ce944df38ee7ec5630e84d663fe84eeb","_id":"async-parallel@1.2.2","_shasum":"11f3eed3e02f40f9f2e3e9bfbe29af414c541864","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"11f3eed3e02f40f9f2e3e9bfbe29af414c541864","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.2.2.tgz","integrity":"sha512-XNa7S/owwAsWkC5F2XcDRTZKQRhaEq8g9ADOCjMBmLI7sITvBjKvBjFJI5Be0Tu6J0LBGor3NTEUgsH5B7S81A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH8W7mLhRDo+gSURRQtMA6Qah2VfNa0VoOXFAWjbS6LFAiEAx3NUtptCydkwV7h51PPeq7yPpDe2rV5UjyZaN0//nf8="}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/async-parallel-1.2.2.tgz_1498974718141_0.6076216732617468"}},"1.2.3":{"name":"async-parallel","version":"1.2.3","description":"Async enabled each(), map(), filter() functions that work just like their standard counterparts, but can be used with async/await and also provide concurrency limiting. Includes built-in typings and JSDoc comments for IntelliSense documentation.","main":"index.js","scripts":{"test":"mocha","start":"node main.js"},"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"keywords":["asynchronous","async","await","await-await","await/await","concurrent","concurrency","parallel","typescript","promise","promisify","promisified","each","map","invoke","foreach","filter","every","reduce","some","iterative","functions"],"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"license":"MIT","bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"homepage":"https://github.com/davetemplin/async-parallel#readme","devDependencies":{"@types/chai":"^3.4.34","@types/mocha":"^2.2.37","@types/node":"^7.0.0","chai":"^3.4.1","mocha":"^2.3.4"},"gitHead":"076c594dfd364931b80613d0418cd65066477a84","_id":"async-parallel@1.2.3","_shasum":"0b90550aeffb7a365d8cee881eb0618f656a3450","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"davetemplin","email":"davetemplin@hotmail.com"},"dist":{"shasum":"0b90550aeffb7a365d8cee881eb0618f656a3450","tarball":"https://registry.npmjs.org/async-parallel/-/async-parallel-1.2.3.tgz","integrity":"sha512-FWKFY4Gk8lNobUdjTY7rOjk30yfCdzQ1nbNX/dWV94RaAlBa0clGYGqXORYjdYRaylq+HDyIDzq6smVu2L0P1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJIN+efsjHpNFXk5mhc7JuSjFnyG1Gdtu663EZnEAG/gIhAMjn+YioR/SPd/AjUHddM6ZnvtS9am2/Dgy6T5zcdTxQ"}]},"maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/async-parallel-1.2.3.tgz_1498975403481_0.7464128513820469"}}},"readme":"# async-parallel\r\nAsync enabled each(), map(), filter() functions that work just like their standard counterparts, but can be used with async/await and also provide concurrency limiting. Includes built-in typings and JSDoc comments for IntelliSense documentation.\r\n\r\nThe following iterative functions are provided:\r\n\r\n* **Parallel.each** calls a provided function once per input in parallel.\r\n* **Parallel.map** creates a new array with the results of calling a provided function in parallel on every input, the output will be in the same order as the input.\r\n* **Parallel.filter** creates a new array with all elements that pass the test implemented by the provided function in parallel, the output will be in the same order as the input.\r\n* **Parallel.every** tests whether all elements in the array pass the test implemented by the provided function.\r\n* **Parallel.reduce** applies a function against an accumulator and each value of the array (from left-to-right) to reduce it to a single value.\r\n* **Parallel.some** tests whether some element in the array passes the test implemented by the provided function.\r\n\r\nEvery function above provides a `concurrency` parameter to limit the maximum number of parallel instances at the function call level. In addition, concurrency can be limited at a global level with the following function:\r\n\r\n* **Parallel.setConcurrency** sets a default that limits the number of concurrent actions for all parallel functions. Superceded by the `concurrency` parameter at the function-call level.\r\n\r\nThe following additional utility functions are also provided:\r\n\r\n* **Parallel.invoke** calls a set of provided functions in parallel.\r\n* **Parallel.pool** maintains a pool of parallel instances of a provided function until a specified result is obtained.\r\n* **Parallel.sleep** sleeps for the specified duration.\r\n\r\n## Parallel.each example\r\n```js\r\nvar list = [100, 200, 300]; // provide list of inputs here\r\nawait Parallel.each(list, async item => {\r\n    // process each item here\r\n});\r\n```\r\n\r\n## Parallel.map example\r\n```js\r\nvar list = [100, 200, 300]; // provide list of inputs here\r\nvar result = await Parallel.map(list, async item => {\r\n    // process each item here\r\n});\r\n// result available here\r\n```\r\n\r\n## Parallel.filter example\r\n```js\r\nvar list = [100, 200, 300]; // provide list of inputs here\r\nvar result = await Parallel.filter(list, async item => {\r\n    // test each item here returning true to include or false to reject\r\n});\r\n// result available here\r\n```\r\n\r\n## Parallel.invoke example\r\n```js\r\nawait Parallel.invoke([\r\n    async () => { /* task #1 here */ },\r\n    async () => { /* task #2 here */ },\r\n    async () => { /* task #3 here */ },\r\n    async () => { /* task #4 here */ },\r\n    async () => { /* task #5 here */ }\r\n], 2);\r\n```\r\n> Note: The same result can be achieved without a library using `Promise.all`, however `Parallel.invoke` provides an ability to limit the concurrency.\r\nTherefore, in example above only 2 of the tasks will be run at the same time.\r\n\r\n\r\n## Getting Started\r\n\r\nMake sure you're running Node v4 or higher and TypeScript 1.8 or higher...\r\n```\r\n$ node -v\r\nv7.3.3\r\n$ npm install -g typescript\r\n$ tsc -v\r\nVersion 2.3.4\r\n```\r\n\r\nInstall package...\r\n```\r\n$ npm install async-parallel\r\n```\r\n\r\nWrite some code...\r\n```js\r\nimport * as Parallel from 'async-parallel';\r\n(async function () {\r\n    var list = [100, 200, 300];\r\n    var start = new Date();\r\n    await Parallel.each(list, async value => {\r\n        await Parallel.sleep(value);\r\n        console.log('sleep', value);\r\n    });\r\n    console.log('done', new Date().getTime() - start.getTime());\r\n})();\r\n```\r\n\r\nSave the above to a file `index.ts`, build and run it!\r\n```\r\n$ tsc index.ts --target es6 --module commonjs\r\n$ node index.js\r\nsleep 100\r\nsleep 200\r\nsleep 300\r\ndone 303\r\n```\r\n\r\n## Concurrency\r\nThe number of concurrent actions can be limited at the function level, or by calling the `Parallel.setConcurrency()` which sets a default concurrency setting.\r\n\r\n* concurrency=0 specifies an unlimited number of actions (this is the default).  \r\n* concurrency=1 causes all actions to be performed in series, or one-at-a-time (also useful for debugging/troubleshooting).\r\n* concurrency>1 limits concurrency such that no more than the specified number of actions will be run at the same time.\r\n\r\nExamples:\r\n```js\r\nawait Parallel.each([100, 200, 300], async item => {\r\n    // process each item here\r\n}, 2); // process no more than 2 items at the same time  \r\n```\r\n\r\n```js\r\nawait Parallel.invoke([\r\n    async () => { /* task #1 here */ },\r\n    async () => { /* task #2 here */ },\r\n    async () => { /* task #3 here */ },\r\n    async () => { /* task #4 here */ },\r\n    async () => { /* task #5 here */ }\r\n], 3); // process no more than 3 items at the same time\r\n```\r\n\r\n```js\r\nParallel.setConcurrency(10); // no more than 10 actions running at the same time by default\r\n```\r\n\r\n## Errors\r\nIf one or more actions fail then no further actions will be started and a rollup error will result after all pending actions are complete.\r\nThe rollup error will contain a list of individual failures as shown below.\r\n\r\n```js\r\ntry {\r\n    await Parallel.pool(2, async () => \r\n        await someRecurringTask());\r\n}\r\ncatch (err) {\r\n    console.log(err.message); // print the rollup error message\r\n    for (var item of err.list)\r\n        console.log(item.message); // print each specific error message\r\n}\r\n```\r\n\r\n## Parallel.pool example\r\nCreate several actions, running no more than 2 at a time.\r\n\r\n```js\r\nvar actions = [\r\n    async function () { /* task #1 here */ },\r\n    async function () { /* task #2 here */ },\r\n    async function () { /* task #3 here */ },\r\n    async function () { /* task #4 here */ },\r\n    async function () { /* task #5 here */ }\r\n];\r\nawait Parallel.pool(2, async () => {\r\n    var action = actions.shift();\r\n    await action();\r\n    return action.length > 0;\r\n});\r\n// all actions are complete here\r\n```\r\n\r\n# Reference\r\n\r\n## each\r\n\r\nCalls a provided function once per input in parallel.\r\n\r\n`each<T1, T2>(list: T1[], action: {(value: T1): Promise<T2>}, concurrency?: number): Promise<void>`\r\n\r\n| Parameter   | Type           | Description                                                                 |\r\n| ----------- | -------------- | --------------------------------------------------------------------------- |\r\n| list        | (generic)      | A list of input elements to iterate.                                        |\r\n| action      | function       | An async function callback invoked for each element in the list. The callback takes three arguments: the current element being processed, the index of the current element, and the input list. |\r\n| concurrency | number         | Limits the number of callback actions to run concurrently.                  |\r\n\r\n\r\n## every\r\n\r\nTests whether all elements in the array pass the test implemented by the provided function.\r\n\r\n`every<T>(list: T[], action: {(value: T, index: number, list: T[]): Promise<boolean>}, concurrency?: number): Promise<boolean>`\r\n\r\n| Parameter  | Type            | Description                                                                 |\r\n| ---------- | --------------- | --------------------------------------------------------------------------- |\r\n| list       | (generic)       | A list of input elements to test.                                           |\r\n| action     | function        | An async function callback invoked for each element in the list. The callback takes three arguments: the current element being processed, the index of the current element, and the input list. The callback resolves to true for elements that pass the test. |\r\n| concurrency | number         | Limits the number of callback actions to run concurrently.                  |\r\n\r\nReturns true if every test resolved to true, otherwise false.\r\n\r\n## filter\r\n\r\nCreates a new array with all elements that pass the test implemented by the provided function in parallel.\r\n\r\n`filter<T>(list: T[], action: {(value: T, index: number, list: T[]): Promise<boolean>}, concurrency?: number): Promise<T[]>`\r\n\r\n| Parameter  | Type            | Description                                                                 |\r\n| ---------- | --------------- | --------------------------------------------------------------------------- |\r\n| list       | (generic)       | A list of input elements to test.                                           |\r\n| action     | function        | An async function callback invoked for each element in the list. The callback takes three arguments: the current element being processed, the index of the current element, and the input list. The callback resolves to true for elements to be included in the output list. |\r\n| concurrency | number         | Limits the number of callback actions to run concurrently.                  |\r\n\r\nReturns a list of filtered elements in the same order as the input.\r\n\r\n## invoke\r\n\r\nCalls a set of provided functions in parallel.\r\n\r\n`invoke(list: {(): Promise<void>}[], concurrency?: number): Promise<void>`\r\n\r\n| Parameter  | Type            | Description                                                                 |\r\n| ---------- | --------------- | --------------------------------------------------------------------------- |\r\n| list       | function[]      | A list of async function callbacks to invoke. The callback takes no arguments and resolves to a void. |\r\n| concurrency | number         | Limits the number of callback actions to run concurrently.                  |\r\n\r\n\r\n## map\r\n\r\nCreates a new array with the results of calling a provided function in parallel on every input.\r\nThe output will be in the same order as the input.\r\n\r\n`map<T1, T2>(list: T1[], action: {(value: T1, index: number, list: T1[]): Promise<T2>}, concurrency?: number): Promise<T2[]>`\r\n\r\n| Parameter   | Type            | Description                                                                 |\r\n| ----------- | --------------- | --------------------------------------------------------------------------- |\r\n| list        | (generic)       | A list of input elements to map.                                            |\r\n| action      | function        | An async function callback that produces an element of the output list.  The callback takes three arguments: the current element being processed, the index of the current element, and the input list. The callback resolves to a single output element. |\r\n| concurrency | number          | Limits the number of callback actions to run concurrently. |\r\n\r\nReturns a list of mapped elements in the same order as the input.\r\n\r\n\r\n## pool\r\n\r\nRepeatedly invokes a provided async function that resolves to a boolean result.\r\nA pool of parallel instances is maintained until a true result is obtained, after which no new instances will be invoked.\r\n\r\n`pool(size: number, task: {(): Promise<boolean>}): Promise<void>`\r\n\r\n| Parameter | Type     | Description                                                                                                            |\r\n| --------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |\r\n| size      | number   | Specifies the size of the pool indicating the number of parallel instances of the provided async function to maintain. |\r\n| task      | function | The provided async function callback that takes no arguments and resolves to a boolean. Returning true indicates no new instances should be invoked. |\r\n\r\n## reduce\r\n\r\nApplies a function against an accumulator and each value of the array (from left-to-right) to reduce it to a single value.\r\n\r\n`reduce<T1, T2>(list: T1[], action: {(accumulator: T2, value: T1, index: number, list: T1[]): Promise<T2>}, value: T2, concurrency?: number): Promise<T2>`\r\n\r\n| Parameter    | Type      | Description                                                                 |\r\n| ------------ | --------- | --------------------------------------------------------------------------- |\r\n| list         | (generic) | A list of input elements to reduce. |\r\n| action       | function  | An async function callback invoked for each element in the list. The callback takes four arguments: the accumulated value previously returned in the last invocation of the callback or initialValue, the current element being processed, the index of the current element, and the input list. The callback resolves to an updated accumulated value. |\r\n| initialValue | (generic) | Value to use as the first argument to the first call of the callback. |\r\n| concurrency  | number    | Limits the number of callback actions to run concurrently. |\r\n\r\nReturns the value that results from the reduction.\r\n\r\n## setConcurrency\r\n\r\nSets a default that limits the number of concurrent callback actions for all parallel functions.\r\nSpecifying the concurrency at the function level supercedes this setting.\r\n\r\n`setConcurrency(value: number): void`\r\n\r\n| Parameter  | Type            | Description                                                                 |\r\n| ---------- | --------------- | --------------------------------------------------------------------------- |\r\n| value      | number          | Specifies the new default concurrency setting.                              |\r\n\r\n\r\n## sleep\r\n\r\nSleeps for the specified duration.\r\n\r\n`sleep(milliseconds: number): Promise<void>`\r\n\r\n| Parameter  | Type            | Description                                                                 |\r\n| ------------ | ------------- | --------------------------------------------------------------------------- |\r\n| milliseconds | number        | The amount of time to sleep in milliseconds.                                |\r\n\r\n\r\n## some\r\n\r\nTests whether some element in the array passes the test implemented by the provided function.\r\n\r\n`some<T>(list: T[], action: {(value: T, index: number, list: T[]): Promise<boolean>}, concurrency?: number): Promise<boolean>`\r\n\r\n| Parameter   | Type           | Description                                                                 |\r\n| ----------- | -------------- | --------------------------------------------------------------------------- |\r\n| list        | (generic)      | A list of input elements to test.                                           |\r\n| action      | function       | An async function callback invoked for each element in the list. The callback takes three arguments: the current element being processed, the index of the current element, and the input list. The callback resolves to true for elements that pass the test. |\r\n| concurrency | number         | Limits the number of callback actions to run concurrently.                  |\r\n\r\nReturns true if some (at least one) test resolved to true, otherwise false.","maintainers":[{"name":"davetemplin","email":"davetemplin@hotmail.com"}],"time":{"modified":"2022-06-13T03:37:25.572Z","created":"2016-02-08T04:26:30.242Z","1.0.0":"2016-02-08T04:26:30.242Z","1.0.1":"2016-02-08T04:33:32.043Z","1.0.2":"2016-02-08T04:41:08.656Z","1.0.3":"2016-08-18T05:28:04.027Z","1.0.4":"2016-08-18T05:51:14.453Z","1.0.5":"2016-08-18T14:02:43.309Z","1.0.6":"2016-08-18T14:05:17.770Z","1.0.7":"2016-08-23T05:11:40.853Z","1.2.0":"2017-07-02T04:40:05.244Z","1.2.1":"2017-07-02T04:52:46.607Z","1.2.2":"2017-07-02T05:51:59.828Z","1.2.3":"2017-07-02T06:03:23.740Z"},"homepage":"https://github.com/davetemplin/async-parallel#readme","keywords":["asynchronous","async","await","await-await","await/await","concurrent","concurrency","parallel","typescript","promise","promisify","promisified","each","map","invoke","foreach","filter","every","reduce","some","iterative","functions"],"repository":{"type":"git","url":"git+https://github.com/davetemplin/async-parallel.git"},"author":{"name":"Dave Templin","email":"davetemplin@hotmail.com","url":"https://github.com/davetemplin/"},"bugs":{"url":"https://github.com/davetemplin/async-parallel/issues"},"license":"MIT","readmeFilename":"README.md","users":{"shaunieb":true}}