{"_id":"twostep","_rev":"31-be0378abd9b5aeee8974d71dea93a88f","name":"twostep","description":"Simple control-flow library for node.js that makes parallel execution, serial execution and error handling painless.","dist-tags":{"latest":"0.4.2"},"versions":{"0.0.1":{"name":"twostep","version":"0.0.1","description":"A simple control-flow library for node.JS that makes parallel execution, serial execution, and error handling painless.","engine":["node >=0.2.0"],"repository":{"type":"git","url":"git://github.com/Nordberg/node-twostep.git"},"devDependencies":{"jasmine-node":"1.0.21"},"main":"lib/twoStep","_npmUser":{"name":"nrd11k","email":"nrd11k@gmail.com"},"_id":"twostep@0.0.1","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"0bdb81a3f2a03805c415f300f6c2ab59251ec630","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.0.1.tgz","integrity":"sha512-UpJR9p1KLjYBCohJAo94JjoBKMcCwHBNUO5dxmFvqNLKyg/8baByFDQTxVc+rpJnHWz/wbPvw6UZ6wn+hUMDNg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSMlGTBjns9uV/dTTV5x29wGgU/kL21LiSyHlZ8CwHaAIgfoDeETlfGTSOePdXZW4aKZ9+o2wVhMUMSy65a2M+FS8="}]},"maintainers":[{"name":"nrd11k","email":"nrd11k@gmail.com"}]},"0.2.0":{"name":"twostep","version":"0.2.0","description":"A simple control-flow library for node.JS that makes parallel execution, serial execution, and error handling painless.","engine":["node >=0.2.0"],"repository":{"type":"git","url":"git://github.com/Nordberg/node-twostep.git"},"devDependencies":{"jasmine-node":"1.0.21"},"scripts":{"test":"./node_modules/jasmine-node/bin/jasmine-node ./spec/"},"main":"lib/twoStep","_npmUser":{"name":"nrd11k","email":"nrd11k@gmail.com"},"_id":"twostep@0.2.0","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"302e530999d50359f88e7c42ad3ca7cc7730827a","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.2.0.tgz","integrity":"sha512-C3saEdMUuZDNpuBAKL8XoYzM28xSKPQ6i6zDrI103N1pPglgQ+Tqlj8e74tvvsbKUttpUNcYPYcJBhNFZjqe7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG92Eeu08QHX4M8JdfMsOQSchvo+4wrsSfCDlG/hv9cZAiEA0Oywvc//7yNlDhJLDCahwh8fLkGUe3KovH+W+vZocQ0="}]},"maintainers":[{"name":"nrd11k","email":"nrd11k@gmail.com"}]},"0.3.1":{"name":"twostep","version":"0.3.1","description":"A simple control-flow library for node.JS that makes parallel execution, serial execution, and error handling painless.","engine":["node >=0.2.0"],"repository":{"type":"git","url":"git://github.com/2do2go/node-twostep.git"},"devDependencies":{"jasmine-node":"1.0.21"},"scripts":{"test":"./node_modules/jasmine-node/bin/jasmine-node ./spec/"},"main":"lib/twoStep","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"_id":"twostep@0.3.1","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e4e5a5f9516d78f6ce6dda87626cd7aec965aaed","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.3.1.tgz","integrity":"sha512-yQ7RVel3yAqi9WvMSSfXczX4GAq4+iV0V3Zrxj3q6up+nB5POwAS8UWe9Sk0EOG1ONe3vafPWA9dvBhU8PpIiQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAcNbl7wAlrX05oHAM4pg+jy+6gAdAyWMkR2eIYvF+rHAiB5fb3WQQRiSMVxaZODXLDuNJsbCXDqOPX7BgfE9QQuGg=="}]},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}]},"0.3.2":{"name":"twostep","version":"0.3.2","description":"A simple control-flow library for node.JS that makes parallel execution, serial execution, and error handling painless.","engine":["node >=0.2.0"],"repository":{"type":"git","url":"git://github.com/2do2go/node-twostep.git"},"devDependencies":{"jasmine-node":"1.0.21"},"scripts":{"test":"./node_modules/jasmine-node/bin/jasmine-node ./spec/"},"main":"lib/twoStep","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"_id":"twostep@0.3.2","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"867f349e233571aaff1eedcfe10530b163ca90a2","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.3.2.tgz","integrity":"sha512-Ao5gT/jimp280697L3/hrOUzcoYG65L3Y7dQLkvgegVnByBuH2jligkhaO12T9HMYjL83HaQa6seCBcycaq2uQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICyMWZBUvO+u1wH9T+PjaqqXgpy7Vog9DvYcyT9PeT1lAiBrTPRyikFQ7hG5vmRU0Se2lHJxbdVLnMPPtJxvoWO4qQ=="}]},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}]},"0.3.3":{"name":"twostep","version":"0.3.3","description":"A simple control-flow library for node.JS that makes parallel execution, serial execution, and error handling painless.","engine":["node >=0.2.0"],"repository":{"type":"git","url":"git://github.com/2do2go/node-twostep.git"},"devDependencies":{"jasmine-node":"1.0.21"},"scripts":{"test":"./node_modules/jasmine-node/bin/jasmine-node ./spec/"},"main":"lib/twoStep","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"_id":"twostep@0.3.3","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"7a4bdb63b8df2bb8d5ced99c774e9d6913f966c5","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.3.3.tgz","integrity":"sha512-I6FnMI4HARLZiSsEc3npUGl64karKDy/BRFzhYCziZoodrY+UDQ+ELavFXZH2onUYbJxM7V+8XxLT4ZY2m5hsA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcTQsyiKYKNxjEmdVbfkIA+c637JxOJrBgQ03rd2cz3wIgH59Sovs73uJEtd1z8IUXecD8futKNmrPqMiFxKmqUXo="}]},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}]},"0.3.5":{"name":"twostep","version":"0.3.5","description":"A simple control-flow library for node.JS that makes parallel execution, serial execution, and error handling painless.","engine":["node >=0.2.0"],"repository":{"type":"git","url":"https://github.com/2do2go/node-twostep"},"devDependencies":{"jasmine-node":"1.0.21"},"scripts":{"test":"./node_modules/jasmine-node/bin/jasmine-node ./spec/"},"main":"lib/twoStep","_id":"twostep@0.3.5","dist":{"shasum":"38d184e5e42db47fd6127ecd66a524521909b8c4","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.3.5.tgz","integrity":"sha512-j5aaYboR69cOF9bHQaJUbR5ei961KJghJHptrzgATFUiKq30l4jyZtj1AxABZbwYM9M9i8aZLFL2yH2bg836xA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICQAYVfxPv7CcUwhyvJmASmxtoJmxe5vz8yuF4wMAkMGAiEAqtEmRqMud5hzK6eztH6ppdJxctOOn1EAc0S/zwmb8PY="}]},"_npmVersion":"1.1.66","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}]},"0.3.6":{"name":"twostep","version":"0.3.6","description":"A simple control-flow library for node.JS that makes parallel execution, serial execution, and error handling painless.","engine":["node >=0.2.0"],"repository":{"type":"git","url":"https://github.com/2do2go/node-twostep"},"devDependencies":{"mocha":"1.8.1","expect.js":"0.2.0"},"scripts":{"test":"./node_modules/mocha/bin/mocha ./spec/*.spec.js"},"main":"lib/twoStep","bugs":{"url":"https://github.com/2do2go/node-twostep/issues"},"homepage":"https://github.com/2do2go/node-twostep","_id":"twostep@0.3.6","dist":{"shasum":"675e703ee10ab473cc91605cd2d073a63d68d7ed","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.3.6.tgz","integrity":"sha512-AmHkDignJc8eC670+R33HPlVU7MQ9jYZn2H015tG5o3qR3QUmRvnAofmznIMG8kpRcLcrndnv8GCDUrP2X91WA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHBNbbpEk/CRSBj1gJb4hIv4bTFNVkvYVxNNfWFxn6hsAiAtQwPjY81kyYkj7ZFrhlwYukjihndEm/F1Zv038oVIOQ=="}]},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}]},"0.3.7":{"name":"twostep","description":"Simple control-flow library for node.js that makes parallel execution, serial execution and error handling painless.","version":"0.3.7","author":{"name":"2do2go team","email":"dev.2do2go@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/2do2go/node-twostep"},"keywords":["control","flow","step","async","sync"],"devDependencies":{"mocha":"1.8.1","expect.js":"0.2.0"},"scripts":{"test":"mocha spec --reporter spec"},"main":"lib/twoStep","bugs":{"url":"https://github.com/2do2go/node-twostep/issues"},"homepage":"https://github.com/2do2go/node-twostep","_id":"twostep@0.3.7","dist":{"shasum":"5442c0fee6383d945b504143156e84c368394fa8","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.3.7.tgz","integrity":"sha512-+Eve2RBmVCy2YPSO7PY8rOoQiiq/XR6QP/XSj8DjQcMMhO3KaRviIYSeb7P7qxhIqKdknyCb8UCB4doqawP6mg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGdI5bRSH28lQDX4lB256z57NihH4qE7nqdGajEvlZ5/AiB7nFiuXYtwrL3qRyAaW98+u3N+BMgpYwrN4tAoduM19w=="}]},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}]},"0.4.0":{"name":"twostep","description":"Simple control-flow library for node.js that makes parallel execution, serial execution and error handling painless.","version":"0.4.0","author":{"name":"2do2go team","email":"dev.2do2go@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/2do2go/node-twostep"},"keywords":["control","flow","step","async","sync"],"devDependencies":{"mocha":"1.8.1","expect.js":"0.2.0","istanbul":"0.2.7"},"scripts":{"test":"mocha test --reporter spec","cover":"istanbul cover _mocha -R test && istanbul report html","testAndCover":"npm test && npm run cover"},"main":"lib/twoStep","bugs":{"url":"https://github.com/2do2go/node-twostep/issues"},"homepage":"https://github.com/2do2go/node-twostep","_id":"twostep@0.4.0","dist":{"shasum":"c401ee6a0d3595fa07922116a5acdc6115a0eb98","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.4.0.tgz","integrity":"sha512-yaRxNRKMKDLK5z+Juc5zzj+0KriAJOhKnr8cm2LVzXYIq/dAYmWLikCIZQRynj61RFs15ZPz4js7dEkfxRbu0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIESLDyonnbdYYRMEWl5rhPmoLx5xnGKRGKtwOk4A/McZAiEAhRaoaPyFi+j8V355OjO8T5pNW1YJJtuIoNIQ+XbeEzA="}]},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}]},"0.4.1":{"name":"twostep","description":"Simple control-flow library for node.js that makes parallel execution, serial execution and error handling painless.","version":"0.4.1","author":{"name":"2do2go team","email":"dev.2do2go@gmail.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/2do2go/node-twostep"},"keywords":["control","flow","step","async","sync"],"devDependencies":{"mocha":"1.8.1","expect.js":"0.2.0","istanbul":"0.2.7"},"scripts":{"test":"mocha test --reporter spec","cover":"istanbul cover _mocha -R test && istanbul report html","testAndCover":"npm test && npm run cover"},"main":"lib/twoStep","bugs":{"url":"https://github.com/2do2go/node-twostep/issues"},"homepage":"https://github.com/2do2go/node-twostep","_id":"twostep@0.4.1","dist":{"shasum":"9d4aba087180dda8961c55dcc74a5061022aeb79","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.4.1.tgz","integrity":"sha512-Kvo+tv2gjVyKaz7Zp2ypP0rZHLSwRHLdeYHDpFXmlWWEcOuGefOHR2RiQFxNdc/lJ8UXp9c9j5faGyR5gwoiqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGGsZ19zxKhKuHWoF2VunA0OQPLRCdNa6sdtaziKVLN2AiEAykfgpR3161XD+DgVmllQeqx8iRL62HbdEdp9lcAV/7Q="}]},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}]},"0.4.2":{"name":"twostep","description":"Simple control-flow library for node.js that makes parallel execution, serial execution and error handling painless.","version":"0.4.2","author":{"name":"2do2go team","email":"dev.2do2go@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/2do2go/node-twostep.git"},"keywords":["control","flow","step","async","sync"],"devDependencies":{"mocha":"1.8.1","expect.js":"0.2.0","istanbul":"0.2.7"},"scripts":{"test":"mocha test --reporter spec","cover":"istanbul cover _mocha -R test && istanbul report html","testAndCover":"npm test && npm run cover"},"main":"lib/twoStep","gitHead":"4a491b6982e26f6349c82072f04bed0ff2cc779c","bugs":{"url":"https://github.com/2do2go/node-twostep/issues"},"homepage":"https://github.com/2do2go/node-twostep#readme","_id":"twostep@0.4.2","_shasum":"84bc5087a871574d1ebf7be3079e03e122d415b6","_from":".","_npmVersion":"2.15.3","_nodeVersion":"4.4.2","_npmUser":{"name":"2do2go","email":"dev.2do2go@gmail.com"},"maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}],"dist":{"shasum":"84bc5087a871574d1ebf7be3079e03e122d415b6","tarball":"https://registry.npmjs.org/twostep/-/twostep-0.4.2.tgz","integrity":"sha512-O/wdPYk9ey04qcCiw8AQN74DbvLFZLAgnryrNTpV7T/sxB4lcGkCMHynx5xCcA6fCh739ZAqp3HcGhy770X1qA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFMQmewh29n0kq9Bgo9nnDVDPaB66z0FOKE0f5mv5UYoAiBwqhxSXeM6rUJiVooiTsK6nQYtpRHzLzVnekZVXTzMzQ=="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/twostep-0.4.2.tgz_1467123091852_0.19429699843749404"}}},"readme":"# TwoStep\n\n\nIs a simple control-flow library for node.js that makes serial execution,\nparallel execution and error handling painless. Inspired by [step] twostep was\nbased on Tim Caswell ([step] author) [gist](https://gist.github.com/1524578),\nbut later it was refactored and almost totally rewritten. Twostep follows and\nextends the ideas behind the [step].\n\nFeatures\n\n* serial and parallel (with results grouping support) execution\n* simple error handling\n* simplified error handling for common use case (when error handled at the\nlast step)\n* ability to pass the arbitrary values between steps (using `this.pass()`)\n* pure js code (no dependencies, < 200 lines of code)\n* full test coverage ([100%](https://rawgit.com/2do2go/node-twostep/master/coverage/index.html))\n* super battle-tested (we ubiquitously use twostep in a big project\n(50 000+ lines of code))\n\n[![Build Status](https://travis-ci.org/2do2go/node-twostep.svg?branch=master)](https://travis-ci.org/2do2go/node-twostep)\n\n\n## Installation\n\n```sh\nnpm install twostep\n```\n\n\n## Usage\n\nAll steps (functions) passed to the `Step` will be executed in series. Inside\neach step `this.slot()` for wating of async call, `this.pass()` for\npassing value to the next step or `this.makeGroup()` for creating group (for\nhaving results grouped to array) can be called.\n\n```js\n\nvar Step = require('twostep').Step,\n\tfs = require('fs');\n\nStep(\n\tfunction() {\n\t\t// pass filename to the next step as second argument (error always first)\n\t\tthis.pass(__filename + '.bak');\n\t\t// read the file content, it will be passed as third argument (because\n\t\t// this.pass was called before)\n\t\tfs.readFile(__filename, 'utf8', this.slot());\n\t},\n\tfunction(err, bakFile, content) {\n\t\t// if we have an error, throw it to skip this step\n\t\tif (err) throw err;\n\t\tthis.pass(bakFile);\n\t\tfs.readdir(__dirname, this.slot());\n\t\tfs.writeFile(bakFile, content, this.slot())\n\t\t// `readdir` and `writeFile` will be exeuted in parallel when both of\n\t\t// them done next step will be called\n\t},\n\tfunction(err, bakFile, dirContent) {\n\t\tif (err) throw err;\n\t\tconsole.log('%s successfully written', bakFile);\n\t\tthis.pass(dirContent);\n\t\t// make the group\n\t\tvar group = this.makeGroup();\n\t\t// wait for ordered results using group.slot() - all results\n\t\t// will be passed as an array with same order (as at calls)\n\t\tdirContent.forEach(function(name) {\n\t\t\tfs.stat(name, group.slot());\n\t\t});\n\t},\n\tfunction(err, dirContent, stats) {\n\t\tif (err) throw err;\n\t\tvar fileNames = dirContent.filter(function(name, i) {\n\t\t\treturn stats[i].isFile();\n\t\t});\n\t\tconsole.log('files in dir: %s', fileNames);\n\t\t// don't call next step manually, it's the last step if no error\n\t},\n\tfunction(err) {\n\t\t// this step will be called only if an error was occured at any step\n\t\t// above, so here we can handle the error.\n\t\tconsole.log('Error occured: ', err.stack || err);\n\t\tprocess.exit(1);\n\t}\n);\n\n```\n\nIn the example above we did `if (err) throw err;` at the start of every step to\npass the error (if it exists) to the next step for handle the error at the last\nstep. We can avoid writing this annoying line using `Steppy`. With `Steppy`\nexample described above transforms to\n\n```js\n\nvar Steppy = require('twostep').Steppy,\n\tfs = require('fs');\n\nSteppy(\n\tfunction() {\n\t\tthis.pass(__filename + '.bak');\n\t\tfs.readFile(__filename, 'utf8', this.slot());\n\t},\n\tfunction(err, bakFile, content) {\n\t\tthis.pass(bakFile);\n\t\tfs.readdir(__dirname, this.slot());\n\t\tfs.writeFile(bakFile, content, this.slot())\n\t},\n\tfunction(err, bakFile, dirContent) {\n\t\tconsole.log('%s successfully written', bakFile);\n\t\tthis.pass(dirContent);\n\t\tvar group = this.makeGroup();\n\t\tdirContent.forEach(function(name) {\n\t\t\tfs.stat(name, group.slot());\n\t\t});\n\t},\n\tfunction(err, dirContent, stats) {\n\t\tvar fileNames = dirContent.filter(function(name, i) {\n\t\t\treturn stats[i].isFile();\n\t\t});\n\t\tconsole.log('files in dir: %s', fileNames);\n\t},\n\tfunction(err) {\n\t\tconsole.log('Error occured: ', err.stack || err);\n\t\tprocess.exit(1);\n\t}\n);\n\n```\n\n\n## API\n\n### Step(step1, step2, stepN...)\n\nSteps container accepts functions and executes them in series. If error is\noccured inside step it will be passed to the next step as first argument. First\nargument of the step is always an error (falsy if no error), subsequent\narguments - values passed to the reserved slots (created via `this.pass()`,\n`this.slot()` or `this.makeGroup()`) of previous step in the order the slots\nwere reserved.\n\n### Steppy(step1, step2, stepN...)\n\nSame steps container as `Step` but it also automatically wraps every single step\nwith error check and calls the last step if error occurs.\n\n### Methods which can be called inside each step\n\n#### this.slot()\n\nReserves one slot at the current step. Next step will be called when\nall reserved slots of current step will be filled with data or the error occurs.\nReturns callback `function(err, data)` to fill the slot with data.\n\n#### this.pass(value1, value2, valueN...)\n\nPasses one or several synchronous values to the next step.\n\n#### this.makeGroup()\n\nReserves slot, creates and returns a group, all results of which will be passed\ninto the reserved slot as a single array. `pass`, `slot` methods can be called\nfor created group. If group methods were not called empty array will be passed\ninto reserved slot.\n\n\n\n## Tests\n\ninto cloned repository run\n\n```sh\nnpm install\n```\n\nafter installtion run\n\n```sh\nnpm test\n```\n\nfor run tests and generate coverage report run\n\n```sh\nnpm run testAndCover\n```\n\ndetailed coverage report will be saved at ./coverage/index.html\n\n\n## License\n\nMIT\n\n\n[step]: https://github.com/creationix/step\n","maintainers":[{"name":"2do2go","email":"dev.2do2go@gmail.com"}],"time":{"modified":"2022-06-28T00:30:31.080Z","created":"2012-06-19T11:26:22.612Z","0.0.1":"2012-06-19T11:26:24.904Z","0.2.0":"2012-06-21T13:18:39.388Z","0.3.1":"2012-07-30T07:25:22.542Z","0.3.2":"2012-08-23T11:59:19.341Z","0.3.3":"2012-08-23T12:52:23.151Z","0.3.5":"2014-02-11T13:36:44.975Z","0.3.6":"2014-03-28T08:27:41.505Z","0.3.7":"2014-04-13T02:50:59.132Z","0.3.8":"2014-04-13T10:11:26.318Z","0.4.0":"2014-04-13T10:19:52.492Z","0.4.1":"2014-04-15T07:21:22.377Z","0.4.2":"2016-06-28T14:11:32.981Z"},"repository":{"type":"git","url":"git+https://github.com/2do2go/node-twostep.git"},"users":{"fgribreau":true},"readmeFilename":"README.md","keywords":["control","flow","step","async","sync"],"author":{"name":"2do2go team","email":"dev.2do2go@gmail.com"},"license":"MIT","homepage":"https://github.com/2do2go/node-twostep#readme","bugs":{"url":"https://github.com/2do2go/node-twostep/issues"}}