{
	"name": "bach",
	"versions": {
		"0.0.0": {
			"name": "bach",
			"version": "0.0.0",
			"description": "Compose async functions",
			"main": "index.js",
			"directories": {
				"test": "test"
			},
			"scripts": {
				"test": "tap ./test"
			},
			"repository": {
				"type": "git",
				"url": "git://github.com/phated/bach"
			},
			"keywords": [
				"async",
				"compose",
				"fluent",
				"composing"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/bach/issues"
			},
			"homepage": "https://github.com/phated/bach",
			"devDependencies": {
				"tap": "^0.4.8"
			},
			"dependencies": {
				"async-settle": "~0.1.0",
				"async-done": "~0.2.0",
				"async": "~0.2.10",
				"lodash": "~2.4.1"
			},
			"_id": "bach@0.0.0",
			"dist": {
				"shasum": "b79cf34eec6ed2374bb70d6828e697fba9bab95c",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.0.0.tgz"
			},
			"_from": ".",
			"_npmVersion": "1.4.4",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"contributors": []
		},
		"0.0.1": {
			"name": "bach",
			"version": "0.0.1",
			"description": "Compose your async functions with elegance",
			"main": "index.js",
			"directories": {
				"test": "test"
			},
			"scripts": {
				"test": "tap ./test"
			},
			"repository": {
				"type": "git",
				"url": "git://github.com/phated/bach"
			},
			"keywords": [
				"async",
				"compose",
				"fluent",
				"composing"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/bach/issues"
			},
			"homepage": "https://github.com/phated/bach",
			"devDependencies": {
				"tap": "~0.4.8"
			},
			"dependencies": {
				"async-settle": "~0.1.0",
				"async-done": "~0.2.0",
				"async": "~0.2.10",
				"lodash": "~2.4.1"
			},
			"_id": "bach@0.0.1",
			"dist": {
				"shasum": "a22005cc2dced688941014eb3ced28e3567c3c11",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.0.1.tgz"
			},
			"_from": ".",
			"_npmVersion": "1.4.4",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"contributors": []
		},
		"0.1.0": {
			"name": "bach",
			"version": "0.1.0",
			"description": "Compose your async functions with elegance",
			"main": "index.js",
			"directories": {
				"test": "test"
			},
			"scripts": {
				"test": "tap ./test"
			},
			"repository": {
				"type": "git",
				"url": "git://github.com/phated/bach"
			},
			"keywords": [
				"async",
				"compose",
				"fluent",
				"composing"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/bach/issues"
			},
			"homepage": "https://github.com/phated/bach",
			"devDependencies": {
				"tap": "~0.4.8"
			},
			"dependencies": {
				"async": "~0.2.10",
				"async-done": "~0.3.0",
				"async-settle": "~0.1.0",
				"async-time": "~0.0.1",
				"lodash": "~2.4.1"
			},
			"gitHead": "70ecf216fd75a4fe3694820d5a48b00565561cb2",
			"_id": "bach@0.1.0",
			"_shasum": "bf5d58a7d7300eec9d06c498b161de8fb46018ec",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "bf5d58a7d7300eec9d06c498b161de8fb46018ec",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.1.0.tgz"
			},
			"contributors": []
		},
		"0.2.0": {
			"name": "bach",
			"version": "0.2.0",
			"description": "Compose your async functions with elegance",
			"main": "index.js",
			"directories": {
				"test": "test"
			},
			"scripts": {
				"test": "lab -cv"
			},
			"repository": {
				"type": "git",
				"url": "git://github.com/phated/bach"
			},
			"keywords": [
				"async",
				"compose",
				"fluent",
				"composing"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/bach/issues"
			},
			"homepage": "https://github.com/phated/bach",
			"devDependencies": {
				"lab": "^4.1.0"
			},
			"dependencies": {
				"async-done": "~0.4.0",
				"async-settle": "~0.2.0",
				"lodash": "~2.4.1",
				"now-and-later": "0.0.4"
			},
			"gitHead": "07a90141f36ad33258f0828c70f5aed13e23080f",
			"_id": "bach@0.2.0",
			"_shasum": "de88e435ceb0e373f15218634330f2345724e853",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "de88e435ceb0e373f15218634330f2345724e853",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.2.0.tgz"
			},
			"contributors": []
		},
		"0.3.0": {
			"name": "bach",
			"version": "0.3.0",
			"description": "Compose your async functions with elegance",
			"main": "index.js",
			"directories": {
				"test": "test"
			},
			"scripts": {
				"test": "lab -cv"
			},
			"repository": {
				"type": "git",
				"url": "git://github.com/phated/bach"
			},
			"keywords": [
				"async",
				"compose",
				"fluent",
				"composing"
			],
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"license": "MIT",
			"bugs": {
				"url": "https://github.com/phated/bach/issues"
			},
			"homepage": "https://github.com/phated/bach",
			"devDependencies": {
				"lab": "^4.1.0"
			},
			"dependencies": {
				"async-done": "~0.4.0",
				"async-settle": "~0.2.0",
				"lodash": "~2.4.1",
				"now-and-later": "0.0.5"
			},
			"gitHead": "65e88a51075d4412873a66cec3744a5e6fc05171",
			"_id": "bach@0.3.0",
			"_shasum": "24f6c3b3c98e3def34dc198ad061eae1644c10b5",
			"_from": ".",
			"_npmVersion": "1.4.21",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "24f6c3b3c98e3def34dc198ad061eae1644c10b5",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.3.0.tgz"
			},
			"contributors": []
		},
		"0.4.0": {
			"name": "bach",
			"version": "0.4.0",
			"description": "Compose your async functions with elegance",
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine@iceddev.com",
					"url": "http://iceddev.com/"
				},
				{
					"name": "Pawel Kozlowski",
					"email": "pkozlowski.opensource@gmail.com"
				},
				{
					"name": "Benjamin Tan",
					"email": "demoneaux@gmail.com",
					"url": "https://d10.github.io/"
				}
			],
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/bach"
			},
			"license": "MIT",
			"engines": {
				"node": ">= 0.10"
			},
			"main": "index.js",
			"files": [
				"index.js",
				"lib",
				"LICENSE"
			],
			"scripts": {
				"test": "lab -cv",
				"lint": "jshint test lib index.js --reporter node_modules/jshint-stylish/stylish.js --exclude node_modules"
			},
			"dependencies": {
				"async-done": "^1.0.0",
				"async-settle": "^0.2.0",
				"lodash": "^2.4.1",
				"now-and-later": "0.0.6"
			},
			"devDependencies": {
				"jshint": "^2.5.5",
				"jshint-stylish": "^0.4.0",
				"lab": "^4.1.0"
			},
			"keywords": [
				"compose",
				"fluent",
				"composing",
				"continuation",
				"function composition",
				"functional",
				"async",
				"map",
				"series",
				"parallel",
				"extension",
				"tracing",
				"debug",
				"timing",
				"aop",
				"settle",
				"promises",
				"callbacks",
				"observables",
				"streams",
				"end",
				"completion",
				"complete",
				"finish",
				"done",
				"error handling"
			],
			"gitHead": "6a456334ccb984beac40f5e3f7306a79b1c2f9ad",
			"bugs": {
				"url": "https://github.com/phated/bach/issues"
			},
			"homepage": "https://github.com/phated/bach",
			"_id": "bach@0.4.0",
			"_shasum": "bc0107a52f56bbf73331454b93d941cc1c725194",
			"_from": ".",
			"_npmVersion": "1.4.28",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "bc0107a52f56bbf73331454b93d941cc1c725194",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.4.0.tgz"
			},
			"directories": {}
		},
		"0.4.1": {
			"name": "bach",
			"version": "0.4.1",
			"description": "Compose your async functions with elegance",
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine@iceddev.com",
					"url": "http://iceddev.com/"
				},
				{
					"name": "Pawel Kozlowski",
					"email": "pkozlowski.opensource@gmail.com"
				},
				{
					"name": "Benjamin Tan",
					"email": "demoneaux@gmail.com",
					"url": "https://d10.github.io/"
				}
			],
			"repository": {
				"type": "git",
				"url": "https://github.com/phated/bach"
			},
			"license": "MIT",
			"engines": {
				"node": ">= 0.10"
			},
			"main": "index.js",
			"files": [
				"index.js",
				"lib",
				"LICENSE"
			],
			"scripts": {
				"test": "lab -cv",
				"lint": "jshint test lib index.js --reporter node_modules/jshint-stylish/stylish.js --exclude node_modules"
			},
			"dependencies": {
				"async-done": "^1.0.0",
				"async-settle": "^0.2.0",
				"lodash": "^3.0.0",
				"now-and-later": "0.0.6"
			},
			"devDependencies": {
				"jshint": "^2.5.5",
				"jshint-stylish": "^0.4.0",
				"lab": "^4.1.0"
			},
			"keywords": [
				"compose",
				"fluent",
				"composing",
				"continuation",
				"function composition",
				"functional",
				"async",
				"map",
				"series",
				"parallel",
				"extension",
				"tracing",
				"debug",
				"timing",
				"aop",
				"settle",
				"promises",
				"callbacks",
				"observables",
				"streams",
				"end",
				"completion",
				"complete",
				"finish",
				"done",
				"error handling"
			],
			"gitHead": "7ee168abdab320492d30566c0aa1f1e738f85156",
			"bugs": {
				"url": "https://github.com/phated/bach/issues"
			},
			"homepage": "https://github.com/phated/bach",
			"_id": "bach@0.4.1",
			"_shasum": "5062a6901b1f72aba42809df17274beda0f818e0",
			"_from": ".",
			"_npmVersion": "2.6.0",
			"_nodeVersion": "0.10.36",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "5062a6901b1f72aba42809df17274beda0f818e0",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.4.1.tgz"
			},
			"directories": {}
		},
		"0.4.2": {
			"name": "bach",
			"version": "0.4.2",
			"description": "Compose your async functions with elegance",
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine@iceddev.com",
					"url": "http://iceddev.com/"
				},
				{
					"name": "Pawel Kozlowski",
					"email": "pkozlowski.opensource@gmail.com"
				},
				{
					"name": "Benjamin Tan",
					"email": "demoneaux@gmail.com",
					"url": "https://d10.github.io/"
				}
			],
			"repository": {
				"type": "git",
				"url": "git+https://github.com/gulpjs/bach.git"
			},
			"license": "MIT",
			"engines": {
				"node": ">= 0.10"
			},
			"main": "index.js",
			"files": [
				"index.js",
				"lib",
				"LICENSE"
			],
			"scripts": {
				"pretest": "npm run lint",
				"test": "lab -cv",
				"lint": "eslint . && jscs *.js lib/ test/"
			},
			"dependencies": {
				"async-done": "^1.1.1",
				"async-settle": "^0.2.1",
				"lodash": "^3.10.1",
				"now-and-later": "0.0.6"
			},
			"devDependencies": {
				"code": "^1.5.0",
				"eslint": "^1.7.3",
				"eslint-config-gulp": "^2.0.0",
				"jscs": "^2.3.5",
				"jscs-preset-gulp": "^1.0.0",
				"lab": "^6.2.0"
			},
			"keywords": [
				"compose",
				"fluent",
				"composing",
				"continuation",
				"function composition",
				"functional",
				"async",
				"map",
				"series",
				"parallel",
				"extension",
				"tracing",
				"debug",
				"timing",
				"aop",
				"settle",
				"promises",
				"callbacks",
				"observables",
				"streams",
				"end",
				"completion",
				"complete",
				"finish",
				"done",
				"error handling"
			],
			"gitHead": "a8b52c9db40238f5a8c301ab2dc27b231c727fd3",
			"bugs": {
				"url": "https://github.com/gulpjs/bach/issues"
			},
			"homepage": "https://github.com/gulpjs/bach#readme",
			"_id": "bach@0.4.2",
			"_shasum": "4dec04b401a50e336c122acd7d3a39c9efce39d9",
			"_from": ".",
			"_npmVersion": "2.14.14",
			"_nodeVersion": "0.10.41",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "4dec04b401a50e336c122acd7d3a39c9efce39d9",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.4.2.tgz"
			},
			"directories": {}
		},
		"0.5.0": {
			"name": "bach",
			"version": "0.5.0",
			"description": "Compose your async functions with elegance",
			"author": {
				"name": "Blaine Bublitz",
				"email": "blaine@iceddev.com",
				"url": "http://iceddev.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine@iceddev.com",
					"url": "http://iceddev.com/"
				},
				{
					"name": "Pawel Kozlowski",
					"email": "pkozlowski.opensource@gmail.com"
				},
				{
					"name": "Benjamin Tan",
					"email": "demoneaux@gmail.com",
					"url": "https://d10.github.io/"
				}
			],
			"repository": {
				"type": "git",
				"url": "git+https://github.com/gulpjs/bach.git"
			},
			"license": "MIT",
			"engines": {
				"node": ">= 0.10"
			},
			"main": "index.js",
			"files": [
				"index.js",
				"lib",
				"LICENSE"
			],
			"scripts": {
				"pretest": "npm run lint",
				"test": "lab -cv",
				"lint": "eslint . && jscs *.js lib/ test/"
			},
			"dependencies": {
				"async-done": "^1.1.1",
				"async-settle": "^0.2.1",
				"lodash.filter": "^4.1.0",
				"lodash.flatten": "^4.0.0",
				"lodash.foreach": "^4.0.0",
				"lodash.initial": "^4.0.1",
				"lodash.last": "^3.0.0",
				"lodash.map": "^4.1.0",
				"now-and-later": "0.0.6"
			},
			"devDependencies": {
				"code": "^1.5.0",
				"eslint": "^1.7.3",
				"eslint-config-gulp": "^2.0.0",
				"jscs": "^2.3.5",
				"jscs-preset-gulp": "^1.0.0",
				"lab": "^6.2.0"
			},
			"keywords": [
				"compose",
				"fluent",
				"composing",
				"continuation",
				"function composition",
				"functional",
				"async",
				"map",
				"series",
				"parallel",
				"extension",
				"tracing",
				"debug",
				"timing",
				"aop",
				"settle",
				"promises",
				"callbacks",
				"observables",
				"streams",
				"end",
				"completion",
				"complete",
				"finish",
				"done",
				"error handling"
			],
			"gitHead": "fa971c5fc6207cfdd666014cf914e0c24fb6b49e",
			"bugs": {
				"url": "https://github.com/gulpjs/bach/issues"
			},
			"homepage": "https://github.com/gulpjs/bach#readme",
			"_id": "bach@0.5.0",
			"_shasum": "3ffa6a3741773ebc0d24be5fda4bc5e85b5b1da1",
			"_from": ".",
			"_npmVersion": "2.14.14",
			"_nodeVersion": "0.10.41",
			"_npmUser": {
				"name": "phated",
				"email": "blaine@iceddev.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "3ffa6a3741773ebc0d24be5fda4bc5e85b5b1da1",
				"tarball": "https://registry.npmjs.org/bach/-/bach-0.5.0.tgz"
			},
			"_npmOperationalInternal": {
				"host": "packages-5-east.internal.npmjs.com",
				"tmp": "tmp/bach-0.5.0.tgz_1455230405207_0.7704204828478396"
			},
			"directories": {}
		},
		"1.0.0": {
			"name": "bach",
			"version": "1.0.0",
			"description": "Compose your async functions with elegance.",
			"author": {
				"name": "Gulp Team",
				"email": "team@gulpjs.com",
				"url": "http://gulpjs.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine.bublitz@gmail.com"
				},
				{
					"name": "Pawel Kozlowski",
					"email": "pkozlowski.opensource@gmail.com"
				},
				{
					"name": "Benjamin Tan",
					"email": "demoneaux@gmail.com"
				}
			],
			"repository": {
				"type": "git",
				"url": "git+https://github.com/gulpjs/bach.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": {
				"async-done": "^1.2.2",
				"async-settle": "^1.0.0",
				"lodash.filter": "^4.1.0",
				"lodash.flatten": "^4.0.0",
				"lodash.foreach": "^4.0.0",
				"lodash.initial": "^4.0.1",
				"lodash.last": "^3.0.0",
				"lodash.map": "^4.1.0",
				"now-and-later": "^1.0.0"
			},
			"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": [
				"compose",
				"fluent",
				"composing",
				"continuation",
				"function composition",
				"functional",
				"async",
				"map",
				"series",
				"parallel",
				"extension",
				"tracing",
				"debug",
				"timing",
				"aop",
				"settle",
				"promises",
				"callbacks",
				"observables",
				"streams",
				"end",
				"completion",
				"complete",
				"finish",
				"done",
				"error handling"
			],
			"gitHead": "7e090f005cc7fe6257e002e6cc74b951b2eebb6b",
			"bugs": {
				"url": "https://github.com/gulpjs/bach/issues"
			},
			"homepage": "https://github.com/gulpjs/bach#readme",
			"_id": "bach@1.0.0",
			"_shasum": "32beadafea6749d7adcaf06e53f09b90277fd272",
			"_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": "32beadafea6749d7adcaf06e53f09b90277fd272",
				"tarball": "https://registry.npmjs.org/bach/-/bach-1.0.0.tgz"
			},
			"_npmOperationalInternal": {
				"host": "packages-16-east.internal.npmjs.com",
				"tmp": "tmp/bach-1.0.0.tgz_1467074932009_0.7337422275450081"
			},
			"directories": {}
		},
		"1.1.0": {
			"name": "bach",
			"version": "1.1.0",
			"description": "Compose your async functions with elegance.",
			"author": {
				"name": "Gulp Team",
				"email": "team@gulpjs.com",
				"url": "http://gulpjs.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine.bublitz@gmail.com"
				},
				{
					"name": "Pawel Kozlowski",
					"email": "pkozlowski.opensource@gmail.com"
				},
				{
					"name": "Benjamin Tan",
					"email": "demoneaux@gmail.com"
				}
			],
			"repository": {
				"type": "git",
				"url": "git+https://github.com/gulpjs/bach.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": {
				"arr-filter": "^1.1.1",
				"arr-flatten": "^1.0.1",
				"arr-map": "^2.0.0",
				"array-each": "^1.0.0",
				"array-initial": "^1.0.0",
				"array-last": "^1.1.1",
				"async-done": "^1.2.2",
				"async-settle": "^1.0.0",
				"now-and-later": "^1.0.0"
			},
			"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": [
				"compose",
				"fluent",
				"composing",
				"continuation",
				"function composition",
				"functional",
				"async",
				"map",
				"series",
				"parallel",
				"extension",
				"tracing",
				"debug",
				"timing",
				"aop",
				"settle",
				"promises",
				"callbacks",
				"observables",
				"streams",
				"end",
				"completion",
				"complete",
				"finish",
				"done",
				"error handling"
			],
			"gitHead": "c456f509d98f85f63d4ef340b59414629fecbe50",
			"bugs": {
				"url": "https://github.com/gulpjs/bach/issues"
			},
			"homepage": "https://github.com/gulpjs/bach#readme",
			"_id": "bach@1.1.0",
			"_shasum": "cfe542db925cb37051fc490ad102c73bcb258a84",
			"_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": "cfe542db925cb37051fc490ad102c73bcb258a84",
				"tarball": "https://registry.npmjs.org/bach/-/bach-1.1.0.tgz"
			},
			"_npmOperationalInternal": {
				"host": "packages-12-west.internal.npmjs.com",
				"tmp": "tmp/bach-1.1.0.tgz_1488124235183_0.3950506588444114"
			},
			"directories": {}
		},
		"1.2.0": {
			"name": "bach",
			"version": "1.2.0",
			"description": "Compose your async functions with elegance.",
			"author": {
				"name": "Gulp Team",
				"email": "team@gulpjs.com",
				"url": "http://gulpjs.com/"
			},
			"contributors": [
				{
					"name": "Blaine Bublitz",
					"email": "blaine.bublitz@gmail.com"
				},
				{
					"name": "Pawel Kozlowski",
					"email": "pkozlowski.opensource@gmail.com"
				},
				{
					"name": "Benjamin Tan",
					"email": "demoneaux@gmail.com"
				}
			],
			"repository": {
				"type": "git",
				"url": "git+https://github.com/gulpjs/bach.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": {
				"arr-filter": "^1.1.1",
				"arr-flatten": "^1.0.1",
				"arr-map": "^2.0.0",
				"array-each": "^1.0.0",
				"array-initial": "^1.0.0",
				"array-last": "^1.1.1",
				"async-done": "^1.2.2",
				"async-settle": "^1.0.0",
				"now-and-later": "^2.0.0"
			},
			"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": [
				"compose",
				"fluent",
				"composing",
				"continuation",
				"function composition",
				"functional",
				"async",
				"map",
				"series",
				"parallel",
				"extension",
				"tracing",
				"debug",
				"timing",
				"aop",
				"settle",
				"promises",
				"callbacks",
				"observables",
				"streams",
				"end",
				"completion",
				"complete",
				"finish",
				"done",
				"error handling"
			],
			"gitHead": "d03f74c91e8f14c12166a45eecda50b5ca3e0223",
			"bugs": {
				"url": "https://github.com/gulpjs/bach/issues"
			},
			"homepage": "https://github.com/gulpjs/bach#readme",
			"_id": "bach@1.2.0",
			"_shasum": "4b3ce96bf27134f79a1b414a51c14e34c3bd9880",
			"_from": ".",
			"_npmVersion": "2.15.1",
			"_nodeVersion": "0.10.48",
			"_npmUser": {
				"name": "phated",
				"email": "blaine.bublitz@gmail.com"
			},
			"maintainers": [
				{
					"name": "phated",
					"email": "blaine@iceddev.com"
				}
			],
			"dist": {
				"shasum": "4b3ce96bf27134f79a1b414a51c14e34c3bd9880",
				"tarball": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz"
			},
			"_npmOperationalInternal": {
				"host": "s3://npm-registry-packages",
				"tmp": "tmp/bach-1.2.0.tgz_1501706918750_0.8439931008033454"
			},
			"directories": {}
		}
	},
	"time": {
		"modified": "2018-08-18T22:56:43.644Z",
		"created": "2014-03-11T04:47:54.410Z",
		"0.0.0": "2014-03-11T04:47:54.410Z",
		"0.0.1": "2014-03-17T05:43:45.923Z",
		"0.1.0": "2014-08-15T02:03:55.390Z",
		"0.2.0": "2014-08-24T04:28:00.167Z",
		"0.3.0": "2014-08-31T17:50:08.954Z",
		"0.4.0": "2014-11-16T20:38:48.283Z",
		"0.4.1": "2015-02-27T19:05:51.317Z",
		"0.4.2": "2016-01-29T01:22:13.198Z",
		"0.5.0": "2016-02-11T22:40:08.555Z",
		"1.0.0": "2016-06-28T00:48:54.337Z",
		"1.1.0": "2017-02-26T15:50:37.163Z",
		"1.2.0": "2017-08-02T20:48:38.835Z"
	},
	"users": {},
	"dist-tags": {
		"latest": "1.2.0"
	},
	"_uplinks": {
		"npmjs": {
			"etag": "W/\"647a5be06e0c482ef3b1e74f63d82ce7\"",
			"fetched": 1597847599764
		}
	},
	"_distfiles": {
		"bach-0.0.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.0.0.tgz",
			"sha": "b79cf34eec6ed2374bb70d6828e697fba9bab95c",
			"registry": "npmjs"
		},
		"bach-0.0.1.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.0.1.tgz",
			"sha": "a22005cc2dced688941014eb3ced28e3567c3c11",
			"registry": "npmjs"
		},
		"bach-0.1.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.1.0.tgz",
			"sha": "bf5d58a7d7300eec9d06c498b161de8fb46018ec",
			"registry": "npmjs"
		},
		"bach-0.2.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.2.0.tgz",
			"sha": "de88e435ceb0e373f15218634330f2345724e853",
			"registry": "npmjs"
		},
		"bach-0.3.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.3.0.tgz",
			"sha": "24f6c3b3c98e3def34dc198ad061eae1644c10b5",
			"registry": "npmjs"
		},
		"bach-0.4.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.4.0.tgz",
			"sha": "bc0107a52f56bbf73331454b93d941cc1c725194",
			"registry": "npmjs"
		},
		"bach-0.4.1.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.4.1.tgz",
			"sha": "5062a6901b1f72aba42809df17274beda0f818e0",
			"registry": "npmjs"
		},
		"bach-0.4.2.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.4.2.tgz",
			"sha": "4dec04b401a50e336c122acd7d3a39c9efce39d9",
			"registry": "npmjs"
		},
		"bach-0.5.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-0.5.0.tgz",
			"sha": "3ffa6a3741773ebc0d24be5fda4bc5e85b5b1da1",
			"registry": "npmjs"
		},
		"bach-1.0.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-1.0.0.tgz",
			"sha": "32beadafea6749d7adcaf06e53f09b90277fd272",
			"registry": "npmjs"
		},
		"bach-1.1.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-1.1.0.tgz",
			"sha": "cfe542db925cb37051fc490ad102c73bcb258a84",
			"registry": "npmjs"
		},
		"bach-1.2.0.tgz": {
			"url": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
			"sha": "4b3ce96bf27134f79a1b414a51c14e34c3bd9880",
			"registry": "npmjs"
		}
	},
	"_attachments": {
		"bach-1.2.0.tgz": {
			"shasum": "4b3ce96bf27134f79a1b414a51c14e34c3bd9880"
		}
	},
	"_rev": "11-01017dde638b5f7a",
	"_id": "bach",
	"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# bach\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\nCompose your async functions with elegance.\n\n## Usage\n\nWith `bach`, it is very easy to compose async functions to run in series or parallel.\n\n```js\nvar bach = require('bach');\n\nfunction fn1(cb) {\n  cb(null, 1);\n}\n\nfunction fn2(cb) {\n  cb(null, 2);\n}\n\nfunction fn3(cb) {\n  cb(null, 3);\n}\n\nvar seriesFn = bach.series(fn1, fn2, fn3);\n// fn1, fn2, and fn3 will be run in series\nseriesFn(function(err, res) {\n  if (err) { // in this example, err is undefined\n    // handle error\n  }\n  // handle results\n  // in this example, res is [1, 2, 3]\n});\n\nvar parallelFn = bach.parallel(fn1, fn2, fn3);\n// fn1, fn2, and fn3 will be run in parallel\nparallelFn(function(err, res) {\n  if (err) { // in this example, err is undefined\n    // handle error\n  }\n  // handle results\n  // in this example, res is [1, 2, 3]\n});\n```\n\nSince the composer functions return a function, you can combine them.\n\n```js\nvar combinedFn = bach.series(fn1, bach.parallel(fn2, fn3));\n// fn1 will be executed before fn2 and fn3 are run in parallel\ncombinedFn(function(err, res) {\n  if (err) { // in this example, err is undefined\n    // handle error\n  }\n  // handle results\n  // in this example, res is [1, [2, 3]]\n});\n```\n\nFunctions are called with [async-done], so you can return a stream, promise, observable or child process. See [`async-done` completion and error resolution][completions] for more detail.\n\n```js\n// streams\nvar fs = require('fs');\n\nfunction streamFn1() {\n  return fs.createReadStream('./example')\n    .pipe(fs.createWriteStream('./example'));\n}\n\nfunction streamFn2() {\n  return fs.createReadStream('./example')\n    .pipe(fs.createWriteStream('./example'));\n}\n\nvar parallelStreams = bach.parallel(streamFn1, streamFn2);\nparallelStreams(function(err) {\n  if (err) { // in this example, err is undefined\n    // handle error\n  }\n  // all streams have emitted an 'end' or 'close' event\n});\n```\n\n```js\n// promises\nvar when = require('when');\n\nfunction promiseFn1() {\n  return when.resolve(1);\n}\n\nfunction promiseFn2() {\n  return when.resolve(2);\n}\n\nvar parallelPromises = bach.parallel(promiseFn1, promiseFn2);\nparallelPromises(function(err, res) {\n  if (err) { // in this example, err is undefined\n    // handle error\n  }\n  // handle results\n  // in this example, res is [1, 2]\n});\n```\n\nAll errors are caught in a [domain] and passed to the final callback as the first argument.\n\n```js\nfunction success(cb) {\n  setTimeout(function() {\n    cb(null, 1);\n  }, 500);\n}\n\nfunction error() {\n  throw new Error('Thrown Error');\n}\n\nvar errorThrownFn = bach.parallel(error, success);\nerrorThrownFn(function(err, res) {\n  if (err) {\n    // handle error\n    // in this example, err is an error caught by the domain\n  }\n  // handle results\n  // in this example, res is [undefined]\n});\n```\n\nWhen an error happens in a parallel composition, the callback will be called as soon as the error happens.\nIf you want to continue on error and wait until all functions have finished before calling the callback, use `settleSeries` or `settleParallel`.\n\n```js\nfunction success(cb) {\n  setTimeout(function() {\n    cb(null, 1);\n  }, 500);\n}\n\nfunction error(cb) {\n  cb(new Error('Async Error'));\n}\n\nvar parallelSettlingFn = bach.settleParallel(success, error);\nparallelSettlingFn(function(err, res) {\n  // all functions have finished executing\n  if (err) {\n    // handle error\n    // in this example, err is an error passed to the callback\n  }\n  // handle results\n  // in this example, res is [1]\n});\n```\n\n## API\n\n### `series(fns..., [extensions])`\n\nTakes a variable amount of functions (`fns`) to be called in series when the returned function is\ncalled. Optionally, takes an [extensions](#extensions) object as the last argument.\n\nReturns an `invoker(cb)` function to be called to start the serial execution. The invoker function takes a callback (`cb`) with the `function(error, results)` signature.\n\nIf all functions complete successfully, the callback function will be called with all `results` as the second argument.\n\nIf an error occurs, execution will stop and the error will be passed to the callback function as the first parameter. The error parameter will always be a single error.\n\n### `parallel(fns..., [extensions])`\n\nTakes a variable amount of functions (`fns`) to be called in parallel when the returned function is\ncalled. Optionally, takes an [extensions](#extensions) object as the last argument.\n\nReturns an `invoker(cb)` function to be called to start the parallel execution. The invoker function takes a callback (`cb`) with the `function(error, results)` signature.\n\nIf all functions complete successfully, the callback function will be called with all `results` as the second argument.\n\nIf an error occurs, the callback function will be called with the error as the first parameter. Any async functions that have not completed, will still complete, but their results will __not__ be available. The error parameter will always be a single error.\n\n### `settleSeries(fns..., [extensions])`\n\nTakes a variable amount of functions (`fns`) to be called in series when the returned function is\ncalled. Optionally, takes an [extensions](#extensions) object as the last argument.\n\nReturns an `invoker(cb)` function to be called to start the serial execution. The invoker function takes a callback (`cb`) with the `function(error, results)` signature.\n\nAll functions will always be called and the callback will receive all settled errors and results. If any errors occur, the error parameter will be an array of errors.\n\n### `settleParallel(fns..., [extensions])`\n\nTakes a variable amount of functions (`fns`) to be called in parallel when the returned function is\ncalled. Optionally, takes an [extensions](#extensions) object as the last argument.\n\nReturns an `invoker(cb)` function to be called to start the parallel execution. The invoker function takes a callback (`cb`) with the `function(error, results)` signature.\n\nAll functions will always be called and the callback will receive all settled errors and results. If any errors occur, the error parameter will be an array of errors.\n\n### `extensions`\n\nThe `extensions` object is used for specifying functions that give insight into the lifecycle of each function call. 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(fn, index)`\n\nCalled at the very beginning of each function call with the function (`fn`) being executed and the `index` from the array/arguments. 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 function call with the `storage` value returned from the `create` extension point.\n\n##### `extensions.after(result, storage)`\n\nCalled immediately after each function call with the `result` of the function and the `storage` value returned from the `create` extension point.\n\n##### `extensions.error(error, storage)`\n\nCalled immediately after a failed function call with the `error` of the function and the `storage` value returned from the `create` extension point.\n\n## License\n\nMIT\n\n[domain]: http://nodejs.org/api/domain.html\n[async-done]: https://github.com/gulpjs/async-done\n[completions]: https://github.com/gulpjs/async-done#completion-and-error-resolution\n\n[downloads-image]: http://img.shields.io/npm/dm/bach.svg\n[npm-url]: https://www.npmjs.com/package/bach\n[npm-image]: http://img.shields.io/npm/v/bach.svg\n\n[travis-url]: https://travis-ci.org/gulpjs/bach\n[travis-image]: http://img.shields.io/travis/gulpjs/bach.svg?label=travis-ci\n\n[appveyor-url]: https://ci.appveyor.com/project/gulpjs/bach\n[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/bach.svg?label=appveyor\n\n[coveralls-url]: https://coveralls.io/r/gulpjs/bach\n[coveralls-image]: http://img.shields.io/coveralls/gulpjs/bach.svg\n\n[gitter-url]: https://gitter.im/gulpjs/gulp\n[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg"
}