{
	"name": "now-and-later",
	"versions": {
		"0.0.0": {
			"name": "now-and-later",
			"version": "0.0.0",
			"description": "now-and-later =============",
			"main": "index.js",
			"scripts": {
				"test": "echo \"Error: no test specified\" && exit 1"
			},
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/now-and-later"
			},
			"keywords": [
				"async",
				"extension",
				"tracing",
				"debug",
				"aop"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/now-and-later/issues"
			},
			"homepage": "https://github.com/phated/now-and-later",
			"dependencies": {
				"async-done": "^0.3.0"
			},
			"gitHead": "9a4deb56224f333ba6991ce95d9a88150dbcb788",
			"_id": "now-and-later@0.0.0",
			"_shasum": "6fb8ebebf33ada0c7659d3580a190be29a1fbb7d",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "6fb8ebebf33ada0c7659d3580a190be29a1fbb7d",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.0.tgz"
			},
			"directories": {},
			"contributors": []
		},
		"0.0.1": {
			"name": "now-and-later",
			"version": "0.0.1",
			"description": "Series/parallel execution of async functions with extension points",
			"main": "index.js",
			"scripts": {
				"test": "echo \"Error: no test specified\" && exit 1"
			},
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/now-and-later"
			},
			"keywords": [
				"async",
				"extension",
				"tracing",
				"debug",
				"aop"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/now-and-later/issues"
			},
			"homepage": "https://github.com/phated/now-and-later",
			"dependencies": {
				"async-done": "^0.3.0"
			},
			"gitHead": "b16837d51b7b285b3ff7a38af3c06b281dc08f9e",
			"_id": "now-and-later@0.0.1",
			"_shasum": "cad9cc87202ad65bfd947d1e1090874c42b829a6",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "cad9cc87202ad65bfd947d1e1090874c42b829a6",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.1.tgz"
			},
			"directories": {},
			"contributors": []
		},
		"0.0.2": {
			"name": "now-and-later",
			"version": "0.0.2",
			"description": "Series/parallel execution of async functions with extension points",
			"main": "index.js",
			"scripts": {
				"test": "echo \"Error: no test specified\" && exit 1"
			},
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/now-and-later"
			},
			"keywords": [
				"async",
				"extension",
				"tracing",
				"debug",
				"aop"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/now-and-later/issues"
			},
			"homepage": "https://github.com/phated/now-and-later",
			"dependencies": {
				"async-done": "^0.3.0"
			},
			"gitHead": "1f095e11d27e157e99e162d873f7cb14eeb43522",
			"_id": "now-and-later@0.0.2",
			"_shasum": "7ce1449be9ddc5de78b32a563c614f6a306d69c1",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "7ce1449be9ddc5de78b32a563c614f6a306d69c1",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.2.tgz"
			},
			"directories": {},
			"contributors": []
		},
		"0.0.3": {
			"name": "now-and-later",
			"version": "0.0.3",
			"description": "Series/parallel execution of async functions with extension points",
			"main": "index.js",
			"scripts": {
				"test": "echo \"Error: no test specified\" && exit 1"
			},
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/now-and-later"
			},
			"keywords": [
				"async",
				"extension",
				"tracing",
				"debug",
				"aop"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/now-and-later/issues"
			},
			"homepage": "https://github.com/phated/now-and-later",
			"dependencies": {
				"async-done": "^0.3.0"
			},
			"gitHead": "34e855e8a9c4a9473f56aeb0b972a74875d0e238",
			"_id": "now-and-later@0.0.3",
			"_shasum": "345eed9d15c2d5fa0e26968ed2c5c101ff51cdae",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "345eed9d15c2d5fa0e26968ed2c5c101ff51cdae",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.3.tgz"
			},
			"directories": {},
			"contributors": []
		},
		"0.0.4": {
			"name": "now-and-later",
			"version": "0.0.4",
			"description": "Series/parallel execution of async functions with extension points",
			"main": "index.js",
			"scripts": {
				"test": "echo \"Error: no test specified\" && exit 1"
			},
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/now-and-later"
			},
			"keywords": [
				"async",
				"extension",
				"tracing",
				"debug",
				"aop"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/now-and-later/issues"
			},
			"homepage": "https://github.com/phated/now-and-later",
			"devDependencies": {
				"async-done": "^0.3.0"
			},
			"dependencies": {
				"once": "^1.3.0"
			},
			"gitHead": "bfb7a15e253d9f9991a0c07482a2cb6d49feee66",
			"_id": "now-and-later@0.0.4",
			"_shasum": "f6ed2b8b2553c4ad695f8ed53b29e568168b3196",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "f6ed2b8b2553c4ad695f8ed53b29e568168b3196",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.4.tgz"
			},
			"directories": {},
			"contributors": []
		},
		"0.0.5": {
			"name": "now-and-later",
			"version": "0.0.5",
			"description": "Series/parallel execution of async functions with extension points",
			"main": "index.js",
			"scripts": {
				"test": "echo \"Error: no test specified\" && exit 1"
			},
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/now-and-later"
			},
			"keywords": [
				"async",
				"extension",
				"tracing",
				"debug",
				"aop"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/now-and-later/issues"
			},
			"homepage": "https://github.com/phated/now-and-later",
			"devDependencies": {
				"async-done": "^0.3.0"
			},
			"dependencies": {
				"once": "^1.3.0"
			},
			"gitHead": "868cf3fcc06048229ae698cc9ec8b5bf0e8d40a8",
			"_id": "now-and-later@0.0.5",
			"_shasum": "4f5b68a55adb7b322f3a653f325cb5b9074218cd",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "4f5b68a55adb7b322f3a653f325cb5b9074218cd",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.5.tgz"
			},
			"directories": {},
			"contributors": []
		},
		"0.0.6": {
			"name": "now-and-later",
			"version": "0.0.6",
			"description": "Map over an array of values in parallel or series, passing each through the async iterator. Optionally, specify lifecycle extension points for before the iterator runs, after completion, or upon error.",
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine@iceddev.com",
					"url": "http://iceddev.com/"
				}
			],
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/now-and-later"
			},
			"license": "MIT",
			"engines": {
				"node": ">= 0.10"
			},
			"main": "index.js",
			"scripts": {
				"test": "lab -cv",
				"lint": "jshint lib test index.js --reporter node_modules/jshint-stylish/stylish.js --exclude node_modules"
			},
			"dependencies": {
				"once": "^1.3.0"
			},
			"devDependencies": {
				"jshint": "^2.5.5",
				"jshint-stylish": "^0.4.0",
				"lab": "^4.2.0"
			},
			"keywords": [
				"async",
				"async.js",
				"map",
				"control",
				"flow",
				"extension",
				"tracing",
				"debug",
				"aop",
				"aspect",
				"timing",
				"tracing"
			],
			"gitHead": "6834e523d651593a70f44a28bec4ca8216c37daa",
			"bugs": {
				"url": "https://github.com/phated/now-and-later/issues"
			},
			"homepage": "https://github.com/phated/now-and-later",
			"_id": "now-and-later@0.0.6",
			"_shasum": "18a14dc3fc495dc06cfbe028f00be16ddac4faea",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "18a14dc3fc495dc06cfbe028f00be16ddac4faea",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.6.tgz"
			},
			"directories": {}
		},
		"1.0.0": {
			"name": "now-and-later",
			"version": "1.0.0",
			"description": "Map over an array or object of values in parallel or series, passing each through the async iterator, with optional lifecycle hooks.",
			"author": {
				"name": "Gulp Team",
				"email": "team@gulpjs.com",
				"url": "http://gulpjs.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine.bublitz@gmail.com"
				}
			],
			"repository": {
				"type": "git",
				"url": "git+https://github.com/gulpjs/now-and-later.git"
			},
			"license": "MIT",
			"engines": {
				"node": ">= 0.10"
			},
			"main": "index.js",
			"files": [
				"index.js",
				"lib",
				"LICENSE"
			],
			"scripts": {
				"lint": "eslint . && jscs index.js lib/ test/",
				"pretest": "npm run lint",
				"test": "mocha --async-only",
				"cover": "istanbul cover _mocha --report lcovonly",
				"coveralls": "npm run cover && istanbul-coveralls"
			},
			"dependencies": {
				"once": "^1.3.2"
			},
			"devDependencies": {
				"eslint": "^1.7.3",
				"eslint-config-gulp": "^2.0.0",
				"expect": "^1.19.0",
				"istanbul": "^0.4.3",
				"istanbul-coveralls": "^1.0.3",
				"jscs": "^2.3.5",
				"jscs-preset-gulp": "^1.0.0",
				"mocha": "^2.4.5"
			},
			"keywords": [
				"async",
				"async.js",
				"map",
				"control",
				"flow",
				"extension",
				"tracing",
				"debug",
				"aop",
				"aspect",
				"timing",
				"tracing"
			],
			"gitHead": "e7bfdad10eec578c0b42955d1cef18ff1ee14758",
			"bugs": {
				"url": "https://github.com/gulpjs/now-and-later/issues"
			},
			"homepage": "https://github.com/gulpjs/now-and-later#readme",
			"_id": "now-and-later@1.0.0",
			"_shasum": "23e798ccaaf0e8acbef0687f82086274746e0893",
			"_from": ".",
			"_npmVersion": "2.15.2",
			"_nodeVersion": "0.10.41",
			"_npmUser": {
				"name": "phated",
				"email": "blaine.bublitz@gmail.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "23e798ccaaf0e8acbef0687f82086274746e0893",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-1.0.0.tgz"
			},
			"_npmOperationalInternal": {
				"host": "packages-16-east.internal.npmjs.com",
				"tmp": "tmp/now-and-later-1.0.0.tgz_1467054053405_0.07281072437763214"
			},
			"directories": {}
		},
		"2.0.0": {
			"name": "now-and-later",
			"version": "2.0.0",
			"description": "Map over an array or object of values in parallel or series, passing each through the async iterator, with optional lifecycle hooks.",
			"author": {
				"name": "Gulp Team",
				"email": "team@gulpjs.com",
				"url": "http://gulpjs.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine.bublitz@gmail.com"
				}
			],
			"repository": {
				"type": "git",
				"url": "git+https://github.com/gulpjs/now-and-later.git"
			},
			"license": "MIT",
			"engines": {
				"node": ">= 0.10"
			},
			"main": "index.js",
			"files": [
				"index.js",
				"lib",
				"LICENSE"
			],
			"scripts": {
				"lint": "eslint . && jscs index.js lib/ test/",
				"pretest": "npm run lint",
				"test": "mocha --async-only",
				"cover": "istanbul cover _mocha --report lcovonly",
				"coveralls": "npm run cover && istanbul-coveralls"
			},
			"dependencies": {
				"once": "^1.3.2"
			},
			"devDependencies": {
				"eslint": "^1.7.3",
				"eslint-config-gulp": "^2.0.0",
				"expect": "^1.19.0",
				"istanbul": "^0.4.3",
				"istanbul-coveralls": "^1.0.3",
				"jscs": "^2.3.5",
				"jscs-preset-gulp": "^1.0.0",
				"mocha": "^2.4.5"
			},
			"keywords": [
				"async",
				"async.js",
				"map",
				"control",
				"flow",
				"extension",
				"tracing",
				"debug",
				"aop",
				"aspect",
				"timing",
				"tracing"
			],
			"gitHead": "771bb1509957b013f35852d94a26c4fa5e963e2a",
			"bugs": {
				"url": "https://github.com/gulpjs/now-and-later/issues"
			},
			"homepage": "https://github.com/gulpjs/now-and-later#readme",
			"_id": "now-and-later@2.0.0",
			"_shasum": "bc61cbb456d79cb32207ce47ca05136ff2e7d6ee",
			"_from": ".",
			"_npmVersion": "2.15.2",
			"_nodeVersion": "0.10.41",
			"_npmUser": {
				"name": "phated",
				"email": "blaine.bublitz@gmail.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "bc61cbb456d79cb32207ce47ca05136ff2e7d6ee",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz"
			},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/now-and-later-2.0.0.tgz_1497714939409_0.8014816557988524"
			},
			"directories": {}
		},
		"2.0.1": {
			"name": "now-and-later",
			"version": "2.0.1",
			"description": "Map over an array or object of values in parallel or series, passing each through the async iterator, with optional lifecycle hooks.",
			"author": {
				"name": "Gulp Team",
				"email": "team@gulpjs.com",
				"url": "http://gulpjs.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine.bublitz@gmail.com"
				}
			],
			"repository": {
				"type": "git",
				"url": "git+https://github.com/gulpjs/now-and-later.git"
			},
			"license": "MIT",
			"engines": {
				"node": ">= 0.10"
			},
			"main": "index.js",
			"scripts": {
				"lint": "eslint . && jscs index.js lib/ test/",
				"pretest": "npm run lint",
				"test": "mocha --async-only",
				"cover": "istanbul cover _mocha --report lcovonly",
				"coveralls": "npm run cover && istanbul-coveralls"
			},
			"dependencies": {
				"once": "^1.3.2"
			},
			"devDependencies": {
				"eslint": "^1.7.3",
				"eslint-config-gulp": "^2.0.0",
				"expect": "^1.19.0",
				"istanbul": "^0.4.3",
				"istanbul-coveralls": "^1.0.3",
				"jscs": "^2.3.5",
				"jscs-preset-gulp": "^1.0.0",
				"mocha": "^2.4.5"
			},
			"keywords": [
				"async",
				"async.js",
				"map",
				"control",
				"flow",
				"extension",
				"tracing",
				"debug",
				"aop",
				"aspect",
				"timing",
				"tracing"
			],
			"gitHead": "c2c029c86b50d103e0046d164a61fe3974147d16",
			"bugs": {
				"url": "https://github.com/gulpjs/now-and-later/issues"
			},
			"homepage": "https://github.com/gulpjs/now-and-later#readme",
			"_id": "now-and-later@2.0.1",
			"_npmVersion": "6.4.1",
			"_nodeVersion": "10.15.1",
			"_npmUser": {
				"name": "phated",
				"email": "blaine.bublitz@gmail.com"
			},
			"dist": {
				"integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
				"shasum": "8e579c8685764a7cc02cb680380e94f43ccb1f7c",
				"tarball": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
				"fileCount": 7,
				"unpackedSize": 14618,
				"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcqBqpCRA9TVsSAnZWagAANI8P/1nX0tk1llrbw/SYAUNt\nOKk6SAKureiPzMquWWKet6Q/+8YSMkiG9S/1ty+sP8bO65CUJQQk5bMHVqtf\nBmFN+6CGmzkxLQsAPcZLe4VxnKfr2W+QjBduEp8BS05Mxa/0xl3Bi2v4mMGN\nt9RmHNre+KeC25IS1TBjrNEL/xwMdVgIE6k4VnRDN8/k4bKyf4wbZcI4aWp7\nQIpd6hZ/cxLeL1K4KzWcHqel/UHGlXnijg1c8unQy1OZXv9qLtAjqbPBhbPK\n2f+2d/89cFxW+ZWS9cH7xiVYKVJOe1GtQCWRnbjIEWbE89ssA15JhBFzDq+V\n/5X1jmfVxvphX4ZIuboRwnepm3eh3z3SbjRupkzJy4IhEIb9avU7ITkg0X3Z\nVmBP40GESPdgla7b7KSaf1A5LNn/XCQf1CzJk85zygBDOdoJiCGoiwTEg2jf\nW4sDuLH63RwNQPGdYSM98fxO4MLIdUNYdKNjEumONeLSj6/0GelUXBu2eEA1\nTNHRM/F+Ir4V/cG6aRFwYF9MO8ky/pC4wgKHfIzYLbbRsWuhtWV1rpea6zvu\njPS9qAYfb0O5+iHnHpOx5N9+pAaxVtLjHoBsZHBh63zXZuT3gfwTAesle1WK\n6Eh7h7wruCBmHSXuwGWNI4UiWo5NFURYZvhW3TnDH0BPkXttnPyN6qPLOBwU\nDeog\r\n=3TWQ\r\n-----END PGP SIGNATURE-----\r\n"
			},
			"maintainers": [
				{
					"email": "yo@contra.io",
					"name": "contra"
				},
				{
					"email": "blaine.bublitz@gmail.com",
					"name": "phated"
				}
			],
			"directories": {},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/now-and-later_2.0.1_1554520745205_0.510710347243752"
			},
			"_hasShrinkwrap": false
		}
	},
	"time": {
		"modified": "2019-04-06T03:19:07.805Z",
		"created": "2014-08-17T00:56:08.041Z",
		"0.0.0": "2014-08-17T00:56:08.041Z",
		"0.0.1": "2014-08-17T02:15:04.142Z",
		"0.0.2": "2014-08-17T21:55:04.781Z",
		"0.0.3": "2014-08-18T04:38:01.999Z",
		"0.0.4": "2014-08-23T22:12:21.557Z",
		"0.0.5": "2014-08-31T17:48:07.542Z",
		"0.0.6": "2014-09-01T22:08:35.851Z",
		"1.0.0": "2016-06-27T19:00:55.525Z",
		"2.0.0": "2017-06-17T15:55:39.509Z",
		"2.0.1": "2019-04-06T03:19:05.296Z"
	},
	"users": {},
	"dist-tags": {
		"latest": "2.0.1"
	},
	"_uplinks": {
		"npmjs": {
			"etag": "W/\"6bd4398a9662ea68a7f8ac1a496dfac3\"",
			"fetched": 1597847605585
		}
	},
	"_distfiles": {
		"now-and-later-0.0.0.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.0.tgz",
			"sha": "6fb8ebebf33ada0c7659d3580a190be29a1fbb7d",
			"registry": "npmjs"
		},
		"now-and-later-0.0.1.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.1.tgz",
			"sha": "cad9cc87202ad65bfd947d1e1090874c42b829a6",
			"registry": "npmjs"
		},
		"now-and-later-0.0.2.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.2.tgz",
			"sha": "7ce1449be9ddc5de78b32a563c614f6a306d69c1",
			"registry": "npmjs"
		},
		"now-and-later-0.0.3.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.3.tgz",
			"sha": "345eed9d15c2d5fa0e26968ed2c5c101ff51cdae",
			"registry": "npmjs"
		},
		"now-and-later-0.0.4.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.4.tgz",
			"sha": "f6ed2b8b2553c4ad695f8ed53b29e568168b3196",
			"registry": "npmjs"
		},
		"now-and-later-0.0.5.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.5.tgz",
			"sha": "4f5b68a55adb7b322f3a653f325cb5b9074218cd",
			"registry": "npmjs"
		},
		"now-and-later-0.0.6.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.6.tgz",
			"sha": "18a14dc3fc495dc06cfbe028f00be16ddac4faea",
			"registry": "npmjs"
		},
		"now-and-later-1.0.0.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-1.0.0.tgz",
			"sha": "23e798ccaaf0e8acbef0687f82086274746e0893",
			"registry": "npmjs"
		},
		"now-and-later-2.0.0.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz",
			"sha": "bc61cbb456d79cb32207ce47ca05136ff2e7d6ee",
			"registry": "npmjs"
		},
		"now-and-later-2.0.1.tgz": {
			"url": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
			"sha": "8e579c8685764a7cc02cb680380e94f43ccb1f7c",
			"registry": "npmjs"
		}
	},
	"_attachments": {},
	"_rev": "10-e4b9d5802638313d",
	"_id": "now-and-later",
	"readme": "<p align=\"center\">\n  <a href=\"http://gulpjs.com\">\n    <img height=\"257\" width=\"114\" src=\"https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png\">\n  </a>\n</p>\n\n# now-and-later\n\n[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]\n\nMap over an array or object of values in parallel or series, passing each through the async iterator, with optional lifecycle hooks.\n\n## Usage\n\n```js\nvar nal = require('now-and-later');\n\nfunction iterator(value, key, cb){\n  // called with each value in sequence\n  // also passes the key\n  cb(null, value * 2)\n}\n\nfunction create(value, key){\n  // called at the beginning of every iteration\n  // return a storage object to be passed to each lifecycle method\n  return { key: key, value: value };\n}\n\nfunction before(storage){\n  // called before the iterator function of every iteration\n  // receives the storage returned from `create`\n}\n\nfunction after(result, storage){\n  // called after a success occurs in the iterator function of any iteration\n  // receives the `result` of the iterator and the storage returned from `create`\n}\n\nfunction error(error, storage){\n  // called after an error occurs in the iterator function of any iteration\n  // receives the `error` of the iterator and the storage returned from `create`\n}\n\nfunction done(error, results) {\n  // called after all iterations complete or an error occurs in an iterator\n  // receives an `error` if one occurred and all results (or partial results upon error) of the iterators\n}\n\n/*\n  Calling mapSeries with an object can't guarantee order\n  It uses Object.keys to get an order\n  It is better to use an array if order must be guaranteed\n */\nnal.mapSeries([1, 2, 3], iterator, {\n  create: create,\n  before: before,\n  after: after,\n  error: error\n}, done);\n\nnal.map({\n  iter1: 1,\n  iter2: 2\n}, iterator, {\n  create: create,\n  before: before,\n  after: after,\n  error: error\n}, done);\n```\n\n## API\n\n### `map(values, iterator[, extensions][, callback])`\n\nTakes an object or array of `values` and an `iterator` function to execute with each value.\nOptionally, takes an `extensions` object and a `callback` function that is called upon completion of the iterations.\n\nAll iterations run in parallel.\n\n#### `values`\n\nAn array or object of values to iterate over.\n\nIf `values` is an array, iterations are started in order by index. If `values` is an object, iterations are started in order by the order returned by `Object.keys` (order is not guaranteed).\n\nIf `values` is an array, the results of each iteration will be mapped to an array. If `values` is an object, the results of each iteration will be mapped to an object with corresponding keys.\n\n#### `iterator(value, key, done)`\n\nAn async function called per iteration. All iterations are run in parallel.\n\nThe `iterator` function is called once with each `value`, `key` and a function (`done(error, result)`) to call when the async work is complete.\n\nIf `done` is passed an error as the first argument, the iteration will fail and the sequence will be ended; however, any iterations in progress will still complete. If `done` is passed a `result` value as the second argument, it will be added to the final results array or object.\n\n#### `extensions`\n\nThe `extensions` object is used for specifying functions that give insight into the lifecycle of each iteration. The possible extension points are `create`, `before`, `after` and `error`. If an extension point is not specified, it defaults to a no-op function.\n\n##### `extensions.create(value, key)`\n\nCalled at the very beginning of each iteration with the `value` being iterated and the `key` from the array or object. If `create` returns a value (`storage`), it is passed to the `before`, `after` and `error` extension points.\n\nIf a value is not returned, an empty object is used as `storage` for each other extension point.\n\nThis is useful for tracking information across an iteration.\n\n##### `extensions.before(storage)`\n\nCalled immediately before each iteration with the `storage` value returned from the `create` extension point.\n\n##### `extensions.after(result, storage)`\n\nCalled immediately after each iteration with the `result` of the iteration and the `storage` value returned from the `create` extension point.\n\n##### `extensions.error(error, storage)`\n\nCalled immediately after a failed iteration with the `error` of the iteration and the `storage` value returned from the `create` extension point.\n\n#### `callback(error, results)`\n\nA function that is called after all iterations have completed or one iteration has errored.\n\nIf all iterations completed successfully, the `error` argument will be empty and the `results` will be a mapping of the `iterator` results.\n\nIf an iteration errored, the `error` argument will be passed from that iteration and the `results` will be whatever partial results had completed successfully before the error occurred.\n\n### `mapSeries(values, iterator[, extensions][, callback])`\n\nTakes an object or array of `values` and an `iterator` function to execute with each value.\nOptionally, takes an `extensions` object and a `callback` function that is called upon completion of the iterations.\n\nAll iterations run in serial.\n\n#### `values`\n\nAn array or object of values to iterate over.\n\nIf `values` is an array, iterations are started in order by index. If `values` is an object, iterations are started in order by the order returned by `Object.keys` (order is not guaranteed).\n\nIf `values` is an array, the results of each iteration will be mapped to an array. If `values` is an object, the results of each iteration will be mapped to an object with corresponding keys.\n\n#### `iterator(value, key, done)`\n\nAn async function called per iteration. All iterations are run in serial.\n\nThe `iterator` function is called once with each `value`, `key` and a function (`done(error, result)`) to call when the async work is complete.\n\nIf `done` is passed an error as the first argument, the iteration will fail and the sequence will be ended without executing any more iterations. If `done` is passed a `result` value as the second argument, it will be added to the final results array or object.\n\n#### `extensions`\n\nThe `extensions` object is used for specifying functions that give insight into the lifecycle of each iteration. The possible extension points are `create`, `before`, `after` and `error`. If an extension point is not specified, it defaults to a no-op function.\n\n##### `extensions.create(value, key)`\n\nCalled at the very beginning of each iteration with the `value` being iterated and the `key` from the array or object. If `create` returns a value (`storage`), it is passed to the `before`, `after` and `error` extension points.\n\nIf a value is not returned, an empty object is used as `storage` for each other extension point.\n\nThis is useful for tracking information across an iteration.\n\n##### `extensions.before(storage)`\n\nCalled immediately before each iteration with the `storage` value returned from the `create` extension point.\n\n##### `extensions.after(result, storage)`\n\nCalled immediately after each iteration with the `result` of the iteration and the `storage` value returned from the `create` extension point.\n\n##### `extensions.error(error, storage)`\n\nCalled immediately after a failed iteration with the `error` of the iteration and the `storage` value returned from the `create` extension point.\n\n#### `callback(error, results)`\n\nA function that is called after all iterations have completed or one iteration has errored.\n\nIf all iterations completed successfully, the `error` argument will be empty and the `results` will be a mapping of the `iterator` results.\n\nIf an iteration errored, the `error` argument will be passed from that iteration and the `results` will be whatever partial results had completed successfully before the error occurred.\n\n## License\n\nMIT\n\n[downloads-image]: http://img.shields.io/npm/dm/now-and-later.svg\n[npm-url]: https://www.npmjs.com/package/now-and-later\n[npm-image]: http://img.shields.io/npm/v/now-and-later.svg\n\n[travis-url]: https://travis-ci.org/gulpjs/now-and-later\n[travis-image]: http://img.shields.io/travis/gulpjs/now-and-later.svg?label=travis-ci\n\n[appveyor-url]: https://ci.appveyor.com/project/gulpjs/now-and-later\n[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/now-and-later.svg?label=appveyor\n\n[coveralls-url]: https://coveralls.io/r/gulpjs/now-and-later\n[coveralls-image]: http://img.shields.io/coveralls/gulpjs/now-and-later/master.svg\n\n[gitter-url]: https://gitter.im/gulpjs/gulp\n[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg"
}