{"_id":"grfn","_rev":"8-634c514725e986f5e4109410bce965ba","name":"grfn","dist-tags":{"latest":"3.0.0"},"versions":{"0.0.1":{"name":"grfn","version":"0.0.1","keywords":["graph","dag","dependency","concurrently","async","function","solver","topological"],"author":{"url":"https://tomeraberba.ch","name":"Tomer Aberbach","email":"tomeraberbach@gmail.com"},"license":"Apache 2.0","_id":"grfn@0.0.1","maintainers":[{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"}],"homepage":"https://github.com/TomerAberbach/grfn","bugs":{"url":"https://github.com/TomerAberbach/grfn/issues"},"ava":{"files":["./test/**/*.js","!**/helpers.js"]},"dist":{"shasum":"19d177bbd32694cb01ef8a1dd5e478ae839fce08","tarball":"https://registry.npmjs.org/grfn/-/grfn-0.0.1.tgz","fileCount":10,"integrity":"sha512-kl0PUfDovHqBMsp7AX1t/Yem37nRQqm1fL4MKsTzFoay6ex04PuoEANUC0NxRAadwwhI3i17bbSSpTS1Zo7zsA==","signatures":[{"sig":"MEQCIBdvynI6gopb7BLZJrPUMp5wK1bfktgFMR+p+ce2HnZPAiBpUoVxghxSdTOzoV27KXJ3obQMru6zRGhg8Ki8BABV8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/yC4CRA9TVsSAnZWagAANtsP/2uMq47QanAU4q7qg3qN\nMj0Qet7B4iI47oacWSrVFHACTOmU0qUIQU+tx6DufWFlvBQ479JI8OjYYlnw\nE6lJD9kfoHLBfqQzxYe1hDUOphrbYF/e0/YG/XrqIYuh3LUi4N/PCoi+uzCI\nhSkkP4whjx+Lk+jZZtYqo5tkODvMFEOvWi8xCP2qWw9UCZ+eb3UQZRavFuGD\n7j+srv03JUwD2zhl5NT9s2O+iWBAllHQ0ZcCddGh/A83qiwPwkOr76NYdR2b\nlFLZPWE9jP4LR1bWLvzLSavQ8owT5UqOuQCVUATWAB/U7pjQGwvaBIKz5okt\nlxDqsDTIwTSpSFSgVJhaIkOGIQjEijYs1o2BFpslgr4VgPIkFnF6O0i6kOaS\n/WQuRoup7B1G985A6H+Bb8zq6CEWpBENQvzU6fmzEW9pTy0wKKjdeXuXUIvY\nKdxzUiECpGc48y3GmX9uP5Uvj/uoX0Ul2DU9itXc5UY8ACI4jDDoBycPldR4\narsWIEP71CWTWWls5UHszg8a0E1rrbmMVp+TVquKwglEA8dfcy7asEoM+S1O\n/wrHKCNbg06ysa86vfdJnLFQaPbjFsvpfIFJg/f5JmvA8MejURZjhrKlBIVR\nRqetQ34JEd7X6VPZ7j+b4KkMRCS7U3ncRHmYSo8FsdmIkQ74wGUJmB0fjb2c\n73tj\r\n=nQ/C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.js","type":"module","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"types":"./src/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">= 6.0.0"},"exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./debug":{"import":"./dist/esm/debug.js","require":"./dist/cjs/debug.js"},"./debug/node":{"import":"./dist/esm/node-debug.js","require":"./dist/cjs/node-debug.js"}},"gitHead":"b9c2085979dabdb8178c7bf833b3dc6770173577","scripts":{"lint":"run-s lint:*","test":"ava","build":"node build.js","license":"addlicense $(git diff --name-only HEAD)","coverage":"c8 pnpm run test","lint:eslint":"pnpm run lint:eslint:base -- --fix .","lint:prettier":"pnpm run lint:prettier:base -- --write .","prepublishOnly":"run-s lint build","lint:eslint:base":"eslint --ext js --ignore-path .gitignore","lint:prettier:base":"prettier --loglevel silent --ignore-path .gitignore"},"_npmUser":{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"},"prettier":"@tomer/prettier-config","commitlint":{"extends":"@commitlint/config-conventional"},"repository":{"url":"git+https://github.com/TomerAberbach/grfn.git","type":"git"},"_npmVersion":"6.14.9","description":"A tiny (~400B) utility that executes a dependency graph of async functions as concurrently as possible.","directories":{},"lint-staged":{"*.js":["addlicense","pnpm run lint:prettier:base -- --write","pnpm run lint:eslint:base -- --fix"],"!(pnpm-lock).{json,yaml,md}":"pnpm run lint:prettier:base -- --write"},"_nodeVersion":"15.4.0","browserslist":["defaults","not IE 11","not op_mini all"],"dependencies":{"open":"7.3.0","png-js":"1.0.0","graphviz":"0.0.9","gifencoder":"2.0.1"},"eslintConfig":{"rules":{"node/no-unsupported-features/es-syntax":["error",{"ignores":["modules"]}],"node/no-unsupported-features/es-builtins":"error"},"extends":"@tomer","plugins":["node"],"overrides":[{"files":["build.js","playground.js","**/test/**/*.js"],"rules":{"node/no-unsupported-features/es-syntax":"off","node/no-unsupported-features/es-builtins":"off"}}]},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.4.0","ava":"3.15.0","husky":"4.3.6","eslint":"7.17.0","terser":"5.5.1","prettier":"2.2.1","fast-check":"2.10.0","@babel/core":"7.12.10","lint-staged":"10.5.3","npm-run-all":"4.1.5","babel-eslint":"10.1.0","ava-fast-check":"4.0.0","@commitlint/cli":"11.0.0","eslint-plugin-node":"11.1.0","@tomer/eslint-config":"0.0.14","@tomer/prettier-config":"0.0.2","@commitlint/config-conventional":"11.0.0","babel-plugin-add-module-exports":"1.0.4","@babel/plugin-transform-modules-commonjs":"7.12.1"},"optionalDependencies":{"open":"7.3.0","png-js":"1.0.0","graphviz":"0.0.9","gifencoder":"2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/grfn_0.0.1_1610555576442_0.2444228508624895","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"grfn","version":"0.0.2","keywords":["graph","dag","dependency","concurrently","async","function","solver","topological"],"author":{"url":"https://tomeraberba.ch","name":"Tomer Aberbach","email":"tomeraberbach@gmail.com"},"license":"Apache 2.0","_id":"grfn@0.0.2","maintainers":[{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"}],"homepage":"https://github.com/TomerAberbach/grfn","bugs":{"url":"https://github.com/TomerAberbach/grfn/issues"},"ava":{"files":["./test/**/*.js","!**/helpers.js"]},"dist":{"shasum":"e1648ed45421df086212e3be68d84f85577537fe","tarball":"https://registry.npmjs.org/grfn/-/grfn-0.0.2.tgz","fileCount":10,"integrity":"sha512-JxnukhWpC/oCu1lNhZAwUTXWlZa3DROlpzy3TElnnnmQzElMCi0jcOLRzb4BAyr/zhM67or4SjsSq1j2E5JRYg==","signatures":[{"sig":"MEUCIAaEGtg79whDs5XPCPDBKkO+9bQ9iJVpbBdF3lUm/7XiAiEAyq/nMe4LiJ0frLRmmJEFjYPvd1lotgJvBba6BT9g8xg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/yezCRA9TVsSAnZWagAA+voP/33G7aV7J3Cb2myeadlC\nCuPNQOYgA8F1xfXPGGCpQzsyndrS7vYzMZ/OMx7/cXViLVz/0aPVoDjA/A+/\nNx2Br74iaN1vBLX7/WeTvWUp8SxFMVWNPizFTVgflvfW801JjIN6KNsvH27W\nIrYQmLlVtzOEFz7k2uAfagkiTJTIJTqDTZXeHga8is3YQ/j34ekh60SYPwbr\nxJYM465CWgwpmSCo6DyrOZEPwllyrvPftvl43u5X8N+QRNfQxEn3xNBKf5G7\n0+t2GYqswR+5Et5GUyhv/wwM5HmUgcwVCA7+wsmvyDY0BhtGDfbJ6HdZ96dD\nwboTzMPE6tm1IgMP+FNVn8s2xrsaAqhLKVdSqWnZBI2AbTLJESx3qGoLen1N\nHojoayoSl+3j7n23uPiXDPMkYn/ez1S9mHV/GLYzx6ps6wYb93+fxp6GK57x\nHhW4wqs4+aDrgqgBojKG82gEGJ+tSpqzmcu7h962UZZGSTBhsY1D0tcxrOpc\nK4Itlk5Wa5DgJqE9Kzu7YsyvfK1taVjHbz/WQyhT8VUAvN0RdUZHs0Dg5tT1\n4EoaPxDTN+CuNYzVkMDKqhvdEUaC4KRpAm7gAiCmQo3y9xHQjO7AiA3OPzT9\nmESpgzqeThOa7csgpi0aNjk7hrQSktdi4cxbexU2bIGgDeVjcJbI9OTyRUBQ\nVdk9\r\n=6qZM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.js","type":"module","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"types":"./src/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">= 6.0.0"},"exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./debug":{"import":"./dist/esm/debug.js","require":"./dist/cjs/debug.js"},"./debug/node":{"import":"./dist/esm/node-debug.js","require":"./dist/cjs/node-debug.js"}},"gitHead":"7aa806d48a1cc49c9f92c499e75231ed837a2ef9","scripts":{"lint":"run-s lint:*","test":"ava","build":"node build.js","license":"addlicense $(git diff --name-only HEAD)","coverage":"c8 pnpm run test","lint:eslint":"pnpm run lint:eslint:base -- --fix .","lint:prettier":"pnpm run lint:prettier:base -- --write .","prepublishOnly":"run-s lint build","lint:eslint:base":"eslint --ext js --ignore-path .gitignore","lint:prettier:base":"prettier --loglevel silent --ignore-path .gitignore"},"_npmUser":{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"},"prettier":"@tomer/prettier-config","commitlint":{"extends":"@commitlint/config-conventional"},"repository":{"url":"git+https://github.com/TomerAberbach/grfn.git","type":"git"},"_npmVersion":"6.14.9","description":"A tiny (~400B) utility that executes a dependency graph of async functions as concurrently as possible.","directories":{},"lint-staged":{"*.js":["addlicense","pnpm run lint:prettier:base -- --write","pnpm run lint:eslint:base -- --fix"],"!(pnpm-lock).{json,yaml,md}":"pnpm run lint:prettier:base -- --write"},"_nodeVersion":"15.4.0","browserslist":["defaults","not IE 11","not op_mini all"],"eslintConfig":{"rules":{"node/no-unsupported-features/es-syntax":["error",{"ignores":["modules"]}],"node/no-unsupported-features/es-builtins":"error"},"extends":"@tomer","plugins":["node"],"overrides":[{"files":["build.js","playground.js","**/test/**/*.js"],"rules":{"node/no-unsupported-features/es-syntax":"off","node/no-unsupported-features/es-builtins":"off"}}]},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.4.0","ava":"3.15.0","husky":"4.3.6","eslint":"7.17.0","terser":"5.5.1","prettier":"2.2.1","fast-check":"2.10.0","@babel/core":"7.12.10","lint-staged":"10.5.3","npm-run-all":"4.1.5","babel-eslint":"10.1.0","ava-fast-check":"4.0.0","@commitlint/cli":"11.0.0","eslint-plugin-node":"11.1.0","@tomer/eslint-config":"0.0.14","@tomer/prettier-config":"0.0.2","@commitlint/config-conventional":"11.0.0","babel-plugin-add-module-exports":"1.0.4","@babel/plugin-transform-modules-commonjs":"7.12.1"},"_npmOperationalInternal":{"tmp":"tmp/grfn_0.0.2_1610557362610_0.47916267564024073","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"grfn","version":"0.0.3","keywords":["graph","dag","dependency","concurrently","async","function","solver","topological"],"author":{"url":"https://tomeraberba.ch","name":"Tomer Aberbach","email":"tomeraberbach@gmail.com"},"license":"Apache 2.0","_id":"grfn@0.0.3","maintainers":[{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"}],"homepage":"https://github.com/TomerAberbach/grfn","bugs":{"url":"https://github.com/TomerAberbach/grfn/issues"},"ava":{"files":["./test/**/*.js","!**/helpers.js"]},"dist":{"shasum":"39ff52a5e3cdc52448da80eb56a6058d33c7541a","tarball":"https://registry.npmjs.org/grfn/-/grfn-0.0.3.tgz","fileCount":10,"integrity":"sha512-ETij3YSVMUA3T7GRoXXSe2GJYU9KwiwmZvq7488mfjvE2TSjG2rW0CUQx8iXoc21NtjWRK9P91+wALUP0gvV8w==","signatures":[{"sig":"MEUCIHgGSUz03kTXxj4m9GU6i7ni6+HC2jupuFyqFXQNCZXkAiEA4V5uiXjyyf6H3wvJGzeVwrRx0BU53M3IqhrFN7KpuWo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/zVKCRA9TVsSAnZWagAA3e0P/0W9ruziHSjt2odnWc0p\nXKGm8qodRP1FacM1RmEDNfUxZyVgGcmO74BPBX+WZqjnCO9Fy/F4+WjceB5p\npFZqPeLZPAa0xHfBxL5o+AQm3rotOF1EK9zwPFGX3tBAdsY+SB+EtdVLdUob\nITSTY+71qjVJPVi9GXF8oPFWCsRAgk5TWOk0R9ZjzZbdYMHYf37wtdKLhKCa\nAVjHxxAd+Ko374aWLirIfsF6D/bFCLejkIVTHENFkWVNhxaRoCaL6mxxuWz+\n7MHAjSVcrye2pI0sd4iQLnF1WcjWsILfCJhbugfaac5L4pyiB1tDuICIdxAD\n+dqtZxmFshtWHarQeF6P2jgjKy/Cirmntzhln7EwkKWMIq9O/mqPUybDL7Wm\n/imrFsjpLjs+/Q9pB3/uZ3pKiv+/PpzNHs5VJwa7zYNgr57BmdH0g2ao3e25\nqHXsZKgkbKZkgO6d+6Wl6X5Mw2uZwIzlpkKROik2NTBakac64ClqxG3w0FvA\nu9eekn4kp+8KXkrO1gxQYpFlfhKXeCc80/S9R51bXJiDfp6RBnRZ4WbvSX84\nx6/brGIAHb7atB5yn9xqOFv2J9w28keS7mFfBtWJpgs5BTBD8GHPiWu3BcKp\n1Ygnp9i1bdZMIW0EWIvLJJbeE/bGHRK3ZHJ8sMVegN1EIUbwyQA44Jlf9I13\nb8Ts\r\n=NwkP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/cjs/index.js","type":"module","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"types":"./src/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">= 6.0.0"},"exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./debug":{"import":"./dist/esm/debug.js","require":"./dist/cjs/debug.js"}},"gitHead":"7831c5c2bde240fbe35952a0c6257648fdbd7650","scripts":{"lint":"run-s lint:*","test":"ava","build":"node build.js","license":"addlicense $(git diff --name-only HEAD)","coverage":"c8 pnpm run test","lint:eslint":"pnpm run lint:eslint:base -- --fix .","lint:prettier":"pnpm run lint:prettier:base -- --write .","prepublishOnly":"run-s lint build","lint:eslint:base":"eslint --ext js --ignore-path .gitignore","lint:prettier:base":"prettier --loglevel silent --ignore-path .gitignore"},"_npmUser":{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"},"prettier":"@tomer/prettier-config","commitlint":{"extends":"@commitlint/config-conventional"},"repository":{"url":"git+https://github.com/TomerAberbach/grfn.git","type":"git"},"_npmVersion":"6.14.9","description":"A tiny (~400B) utility that executes a dependency graph of async functions as concurrently as possible.","directories":{},"lint-staged":{"*.js":["addlicense","pnpm run lint:prettier:base -- --write","pnpm run lint:eslint:base -- --fix"],"!(pnpm-lock).{json,yaml,md}":"pnpm run lint:prettier:base -- --write"},"_nodeVersion":"15.4.0","browserslist":["defaults","not IE 11","not op_mini all"],"eslintConfig":{"rules":{"node/no-unsupported-features/es-syntax":["error",{"ignores":["modules"]}],"node/no-unsupported-features/es-builtins":"error"},"extends":"@tomer","plugins":["node"],"overrides":[{"files":["build.js","playground.js","**/test/**/*.js"],"rules":{"node/no-unsupported-features/es-syntax":"off","node/no-unsupported-features/es-builtins":"off"}}]},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.4.0","ava":"3.15.0","husky":"4.3.6","eslint":"7.17.0","terser":"5.5.1","prettier":"2.2.1","fast-check":"2.10.0","@babel/core":"7.12.10","lint-staged":"10.5.3","npm-run-all":"4.1.5","babel-eslint":"10.1.0","ava-fast-check":"4.0.0","@commitlint/cli":"11.0.0","eslint-plugin-node":"11.1.0","@tomer/eslint-config":"0.0.14","@tomer/prettier-config":"0.0.2","@commitlint/config-conventional":"11.0.0","babel-plugin-add-module-exports":"1.0.4","@babel/plugin-transform-modules-commonjs":"7.12.1"},"_npmOperationalInternal":{"tmp":"tmp/grfn_0.0.3_1610560842141_0.0996257505803071","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"grfn","version":"1.0.0","keywords":["graph","dag","dependency","concurrently","async","function","solver","topological"],"author":{"url":"https://tomeraberba.ch","name":"Tomer Aberbach","email":"tomeraberbach@gmail.com"},"license":"Apache-2.0","_id":"grfn@1.0.0","maintainers":[{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"}],"homepage":"https://github.com/TomerAberbach/grfn","bugs":{"url":"https://github.com/TomerAberbach/grfn/issues"},"tsd":{"directory":"./test"},"dist":{"shasum":"fcbf0007bd53946f7d64c91316f30dbc9d177312","tarball":"https://registry.npmjs.org/grfn/-/grfn-1.0.0.tgz","fileCount":7,"integrity":"sha512-Oe4MOGe2Xp8GcR1x/xipanL/ilFxnLWbGNWlhQITI6ex2RTQ4OGU1pv1F76skuPi2Galcaxl/ti0ZFMmAPVnSw==","signatures":[{"sig":"MEUCIH6RW0Bftav3NOUoLLZSbvpBxrXb0PAFMyTFkJfCFW4AAiEAv9ytv+wKkSR/xwBAVBn1hi/L4gd9UEzcqJCOxJU1Eog=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguFdmCRA9TVsSAnZWagAAVVwP/1jCckPqYRpqJh4yr65h\n5trvnfYnzGRkt9TfeH3Mf4MDjfYCIdYrQ/olshM03CQHoPIWia2CXDKFwYSi\nP2Ms4AXSl5nKhhhoPh/BrLgyCgjTPPGF/BSErFwCx0tTuv7jiqgVfWQI2hY5\nk62YL43Indn8MCkST7uoTkUHHnjri+mvT5KoGmomS9mdlcGkvWrjEfa6xm4+\nqlaNgEshOgIrADZFABaGjX9M0UMg0b1mxyeLdX8yZkvSn3dIxtAPKeLLOnTt\n+l/ZcsHwchclDeeaIgQSRBmx7ZVkpjRtHG8FTC7S7iLgxOS6mJo6W6231qIY\ndDZHL96QzHnz9sISpaoZVxLiKxFZbrN1o2485H+vAtKByhsxb42838NhoXOY\n8GHpp2fAl9DEP7u+mKxffqEweSLlzoW49AjufPpuMKkJ9a9Z3/CdsvhdaFWt\nMHR8E8MiltOVaox7xNSL/G8MseiMtFeieVSiZ0of7gxJ1xwn3lHdk0bpL9x8\nFaJq9JGRYyV8JcsycjQ5zUzKhcSVlnPosW3of4RLtN4x26pSp/7L4VT/jUzk\nuJi3Gebo0oidqB5wALHqVBgcrcKHBo2G23zCZ6eIHXDuVi5NuwdZ2mgDnoGU\n+Ew4wFg8UboGgfFXFRfySeWILvI3sPZuKMTtunZ8DokV1KIhfWEG/svSEAfE\nAMv+\r\n=9Gr7\r\n-----END PGP SIGNATURE-----\r\n"},"type":"module","types":"./src/index.d.ts","module":"./dist/index.js","engines":{"node":">= 12.17"},"exports":"./dist/index.js","gitHead":"4f924b44c96a745ea0230bb86d13b3326944b9af","scripts":{"lint":"run-s lint:*","test":"run-s test:*","build":"node build.js","license":"addlicense $(git diff --name-only HEAD)","test:js":"ava","test:ts":"tsd","coverage":"c8 run-s test:js","lint:eslint":"run-s \"lint:eslint:base -- --fix .\"","lint:prettier":"run-s \"lint:prettier:base -- --write .\"","lint:eslint:base":"eslint --cache --ext js --ignore-path .gitignore","lint:prettier:base":"prettier --loglevel silent --ignore-path .gitignore"},"_npmUser":{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"},"prettier":"@tomer/prettier-config","commitlint":{"extends":"@commitlint/config-conventional"},"repository":{"url":"git+https://github.com/TomerAberbach/grfn.git","type":"git"},"_npmVersion":"7.12.1","description":"A tiny (~400B) utility that executes a dependency graph of async functions as concurrently as possible.","directories":{},"lint-staged":{"*.js":["addlicense","run-s \"lint:prettier:base -- --write {@}\" --","run-s \"lint:eslint:base -- --fix {@}\" --"],"*.ts":["addlicense","run-s \"lint:prettier:base -- --write {@}\" --"],"*.{json,yml,md}":"run-s \"lint:prettier:base -- --write {@}\" --"},"_nodeVersion":"16.1.0","browserslist":["defaults","not IE 11","not op_mini all"],"eslintConfig":{"extends":"@tomer"},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.7.2","ava":"3.15.0","tsd":"0.16.0","eslint":"7.27.0","terser":"5.7.0","prettier":"2.3.0","fast-check":"2.16.0","typescript":"4.3.2","@types/node":"15.9.0","lint-staged":"11.0.0","npm-run-all":"4.1.5","get-all-files":"4.0.0","ava-fast-check":"4.0.2","@commitlint/cli":"12.1.4","simple-git-hooks":"2.4.1","@tomer/eslint-config":"0.1.1","@tomer/prettier-config":"0.1.0","@commitlint/config-conventional":"12.1.4"},"simple-git-hooks":{"commit-msg":"pnpx --no-install commitlint -e","pre-commit":"pnpx --no-install lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/grfn_1.0.0_1622693734834_0.614596717911754","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"grfn","version":"1.0.1","keywords":["graph","dag","dependency","concurrently","async","function","solver","topological"],"author":{"url":"https://tomeraberba.ch","name":"Tomer Aberbach","email":"tomeraberbach@gmail.com"},"license":"Apache-2.0","_id":"grfn@1.0.1","maintainers":[{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"}],"homepage":"https://github.com/TomerAberbach/grfn","bugs":{"url":"https://github.com/TomerAberbach/grfn/issues"},"dist":{"shasum":"99f345e225a864efaa25562ef0f2e8233a2ac6bd","tarball":"https://registry.npmjs.org/grfn/-/grfn-1.0.1.tgz","fileCount":8,"integrity":"sha512-1WILaFZBINdYRkXy+c0/o3RoKMiQAzZ6YfA5QaD17FcvxfDR23nTIX1UmhG7SnBFFayPuf1yXKE23/4CexioFQ==","signatures":[{"sig":"MEQCIDDblo/HT9dpRgIoY934ElrABI8c58C8p8pGRwDt6XuFAiB8BuQnN6hAAcXRwMpvXAgXy/EvP10NkYmbigyYLrSESg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRbAAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrqCxAAkqRVX2Qs8CnpzFPK1lBYdqw4U1td1zwdAlGCca31mW3eiZcJ\r\n3CdHHxRfrgtRmnb3eDcu8nTO5A1zGMEm7uYJdv3Tx7isE/BH+1h6UKhCKDEw\r\n1CTdq63R5+xIWT7ACCJAYG3Hi/uTVCD/hMIjJceWZgSDg+Ou5c6gOzC6ZAF0\r\n5BupQcnYYhMmntv/gjs6IIyUgo1YLLc5p8q1PLtbGdmPGrap5Z6pWE41nxLd\r\nSt3V88hSl73zaByWOM1r2PNb/wkyqlWpdE/yIsidW/5UByGHmFxs9QsywKmF\r\nW1gqZ8xbG6q/eixEDu8rwa/rXn75L2Jg3j2VcXWGl5LEPvJjuLOPrFUxH3we\r\n7wwflbTnYQTqBUqNglT1w0nK1iuMC1Bu9CHKrw8P/qKAKU7dkYuZjdvoe5Qa\r\ny/WF5BQLePw9sLM/rzxqC75UzrbqxyXUVQgiA2kwcJldvtjI7h3L2pS8gfaX\r\nSyW5EKoMVhIhiKlgpV2iq1Myi0yNNcVm/e4K4QkWmAzJ0lzRRPGh/BHQpXB5\r\nkKVADOne+8zMETLl/BDCcSUql6fu2yPqB6n4hFpu29A323KUg+kyADrZ0ARY\r\nlUf3ijpao4BxP3XNvhRp7krUUN6IRzqK/qgur2qjukASdjZFCyt9Nf4qXNjo\r\nJ5/2qoaFLjKxmyDOcb4bBF6xz5cyRku6IqE=\r\n=z/TX\r\n-----END PGP SIGNATURE-----\r\n"},"type":"module","_from":"file:grfn-1.0.1.tgz","types":"./src/index.d.ts","module":"./dist/index.js","engines":{"node":">= 12.17"},"exports":{".":{"types":"./src/index.d.ts","import":"./dist/index.js"},"./debug":{"types":"./src/debug.d.ts","import":"./dist/debug.js"},"./package.json":"./package.json"},"scripts":{"lint":"tomer lint","test":"tomer test","build":"node build.js","clean":"tomer clean dist","format":"tomer format","typecheck":"tomer typecheck"},"_npmUser":{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"},"prettier":"tomer/prettier","_resolved":"/private/var/folders/kn/41l_nk9568j6j0grkb3g35580000gn/T/7e68ffda559e63e2903a010f1727e106/grfn-1.0.1.tgz","_integrity":"sha512-1WILaFZBINdYRkXy+c0/o3RoKMiQAzZ6YfA5QaD17FcvxfDR23nTIX1UmhG7SnBFFayPuf1yXKE23/4CexioFQ==","repository":{"url":"git+https://github.com/TomerAberbach/grfn.git","type":"git"},"_npmVersion":"9.6.4","description":"A tiny (~400B) utility that executes a dependency graph of async functions as concurrently as possible.","directories":{},"_nodeVersion":"20.0.0","_hasShrinkwrap":false,"devDependencies":{"tomer":"^2.0.0","terser":"^5.17.1","@types/jest":"^29.5.1","get-all-files":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/grfn_1.0.1_1682288640356_0.4513640177688827","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"grfn","version":"2.0.0","keywords":["graph","dag","dependency","concurrently","async","function","solver","topological"],"author":{"url":"https://tomeraberba.ch","name":"Tomer Aberbach","email":"tomeraberbach@gmail.com"},"license":"Apache-2.0","_id":"grfn@2.0.0","maintainers":[{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"}],"homepage":"https://github.com/TomerAberbach/grfn","bugs":{"url":"https://github.com/TomerAberbach/grfn/issues"},"dist":{"shasum":"fc51a920e1649acda4cbacd0677fe9dd15dc0536","tarball":"https://registry.npmjs.org/grfn/-/grfn-2.0.0.tgz","fileCount":6,"integrity":"sha512-5k67rz3bLrnm4dD9TJyaEe++Bs4g/CtVXzpopddPVeMcleGN8Ss4LRaJxErKBT1IpbW5y4su8plL5Y3wNPZ+Fg==","signatures":[{"sig":"MEQCIDw+E7UPeUbNFs8uK1h0OJQc6OVc+XwzA4D1eu4IHYPGAiBmLMtYdMgbJVTwM68GK1SZZYWJtwZwPqOqx9APwsqkbQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25055},"main":"./dist/index.min.cjs","type":"module","_from":"file:grfn-2.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.min.js","terser":{"mangle":{"properties":{"regex":"^_[^_]+"}}},"engines":{"node":">= 18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.min.js","require":"./dist/index.min.cjs"},"./package.json":"./package.json"},"scripts":{"lint":"tomer lint","test":"tomer test","build":"tomer build","clean":"tomer clean dist","format":"tomer format","typecheck":"tomer typecheck"},"_npmUser":{"name":"tomeraberbach","email":"tomeraberbach@gmail.com"},"prettier":"tomer/prettier","_resolved":"/private/var/folders/kn/41l_nk9568j6j0grkb3g35580000gn/T/bcaaaba3aff84aa89f15bfcce5f447a4/grfn-2.0.0.tgz","_integrity":"sha512-5k67rz3bLrnm4dD9TJyaEe++Bs4g/CtVXzpopddPVeMcleGN8Ss4LRaJxErKBT1IpbW5y4su8plL5Y3wNPZ+Fg==","repository":{"url":"git+https://github.com/TomerAberbach/grfn.git","type":"git"},"_npmVersion":"10.5.0","description":"A tiny (~400B) utility that executes a dependency graph of async functions as concurrently as possible.","directories":{},"sideEffects":false,"_nodeVersion":"21.7.3","dependencies":{"type-fest":"^4.18.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tomer":"^3.2.1","eslint":"^8.57.0","prettier":"^3.2.5","typescript":"^5.4.5","@types/jest":"^29.5.2"},"_npmOperationalInternal":{"tmp":"tmp/grfn_2.0.0_1715564318074_0.9563592467195041","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"grfn","version":"3.0.0","author":{"name":"Tomer Aberbach","email":"tomer@aberba.ch","url":"https://tomeraberba.ch"},"description":"A tiny (~315B) utility that executes a dependency graph of async functions as concurrently as possible.","keywords":["graph","dag","dependency","concurrently","async","function","solver","topological"],"homepage":"https://github.com/TomerAberbach/grfn","repository":{"type":"git","url":"git+https://github.com/TomerAberbach/grfn.git"},"bugs":{"url":"https://github.com/TomerAberbach/grfn/issues"},"funding":{"url":"https://github.com/sponsors/TomerAberbach"},"license":"Apache-2.0 AND MIT","type":"module","sideEffects":false,"engines":{"node":">= 22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"prettier":"@tomer/prettier-config","dependencies":{"type-fest":"^4.41.0"},"devDependencies":{"@fast-check/vitest":"^0.2.2","@rollup/plugin-terser":"^0.4.4","@tomer/eslint-config":"^4.1.1","@tomer/prettier-config":"^4.0.0","@vitest/coverage-v8":"^3.2.4","eslint":"^9.34.0","jest-extended":"^6.0.0","jsdom":"^26.1.0","prettier":"^3.6.2","publint":"^0.3.12","rollup-plugin-tree-shakeable":"^2.0.0","tsdown":"^0.14.2","typescript":"^5.9.2","vitest":"^3.2.4"},"scripts":{"format":"prettier --cache --write .","lint":"eslint --cache --cache-location node_modules/.cache/eslint/ --fix .","typecheck":"tsc --noEmit","test":"vitest","coverage":"vitest --coverage","bench":"vitest bench","build":"tsdown"},"_id":"grfn@3.0.0","_integrity":"sha512-+yiytbF5Amv9lDag9yR4IVWH9RK/xognH86aAk9Dd/rB9e2oVu1/H8o+IX+WXlDO372YNAXFiYaqp8GUBa1AYQ==","_resolved":"/private/var/folders/kn/41l_nk9568j6j0grkb3g35580000gn/T/9c8ea565839f27ccc8b59483e80079b0/grfn-3.0.0.tgz","_from":"file:grfn-3.0.0.tgz","_nodeVersion":"24.5.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-+yiytbF5Amv9lDag9yR4IVWH9RK/xognH86aAk9Dd/rB9e2oVu1/H8o+IX+WXlDO372YNAXFiYaqp8GUBa1AYQ==","shasum":"075e4e068e68a7bee39a11792a4a1cbcf0e9a90a","tarball":"https://registry.npmjs.org/grfn/-/grfn-3.0.0.tgz","fileCount":7,"unpackedSize":28136,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCPeHpXPLhhQbahulqRpLCJL9W4ZcU7y68s0dlV3HT6twIhAJ0GCcnEHTUKxakw8hvK6yaSKM8eHnIbn6JvOG0WZNyz"}]},"_npmUser":{"name":"tomeraberbach","email":"tomer@aberba.ch"},"directories":{},"maintainers":[{"name":"tomeraberbach","email":"tomer@aberba.ch"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/grfn_3.0.0_1756765495026_0.8278302327862479"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-13T16:32:56.442Z","modified":"2025-09-01T22:24:55.424Z","0.0.1":"2021-01-13T16:32:56.570Z","0.0.2":"2021-01-13T17:02:42.774Z","0.0.3":"2021-01-13T18:00:42.239Z","1.0.0":"2021-06-03T04:15:34.956Z","1.0.1":"2023-04-23T22:24:00.467Z","2.0.0":"2024-05-13T01:38:38.207Z","3.0.0":"2025-09-01T22:24:55.238Z"},"bugs":{"url":"https://github.com/TomerAberbach/grfn/issues"},"author":{"name":"Tomer Aberbach","email":"tomer@aberba.ch","url":"https://tomeraberba.ch"},"license":"Apache-2.0 AND MIT","homepage":"https://github.com/TomerAberbach/grfn","keywords":["graph","dag","dependency","concurrently","async","function","solver","topological"],"repository":{"type":"git","url":"git+https://github.com/TomerAberbach/grfn.git"},"description":"A tiny (~315B) utility that executes a dependency graph of async functions as concurrently as possible.","maintainers":[{"name":"tomeraberbach","email":"tomer@aberba.ch"}],"readme":"<div align=\"center\">\n  <img src=\"grfn.svg\" alt=\"grfn\" width=\"400\" />\n</div>\n\n<h1 align=\"center\">\n  grfn\n</h1>\n\n<div align=\"center\">\n  <a href=\"https://npmjs.org/package/grfn\">\n    <img src=\"https://badgen.net/npm/v/grfn\" alt=\"version\" />\n  </a>\n  <a href=\"https://github.com/TomerAberbach/grfn/actions\">\n    <img src=\"https://github.com/TomerAberbach/grfn/workflows/CI/badge.svg\" alt=\"CI\" />\n  </a>\n  <a href=\"https://unpkg.com/grfn/dist/index.js\">\n    <img src=\"https://deno.bundlejs.com/?q=grfn&badge\" alt=\"gzip size\" />\n  </a>\n  <a href=\"https://unpkg.com/grfn/dist/index.js\">\n    <img src=\"https://deno.bundlejs.com/?q=grfn&config={%22compression%22:{%22type%22:%22brotli%22}}&badge\" alt=\"brotli size\" />\n  </a>\n  <a href=\"https://github.com/sponsors/TomerAberbach\">\n    <img src=\"https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86\" alt=\"Sponsor\" />\n  </a>\n</div>\n\n<div align=\"center\">\n  A tiny (~315B) utility that executes a dependency graph of async functions as concurrently as possible.\n</div>\n\n## Features\n\n- **Lightweight:** ~315 bytes gzipped\n- **Unobtrusive and Unopinionated:** takes normal functions; returns a normal\n  function!\n- **Isomorphic:** works in node and the browser\n- **Easy Debugging:** provides type-level validation of the input graph,\n  including cycle detection!\n- **Awesome Logo:** designed by [Jill Marbach](https://jillmarbach.com)!\n\n## Table of Contents\n\n- [Install](#install)\n- [Usage](#usage)\n- [API](#api)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Install\n\n```sh\n$ npm i grfn\n```\n\n## Usage\n\n<img src=\"animation.gif\" width=\"350\" align=\"right\">\n\n```js\nimport { setTimeout } from 'node:timers/promises'\nimport grfn from 'grfn'\n\nconst fn = grfn({\n  // `e` depends on `a`, `c`, and `d`. Call `e` with the results of the\n  // functions once their returned promises resolve.\n  e: [\n    async (a, c, d) => {\n      await setTimeout(10)\n      return a * c * d\n    },\n    [`a`, `c`, `d`],\n  ],\n\n  // `d` depends on `b`.\n  d: [\n    async b => {\n      await setTimeout(1)\n      return b * 2\n    },\n    [`b`],\n  ],\n\n  // `c` depends on `a` and `b`.\n  c: [\n    async (a, b) => {\n      await setTimeout(5)\n      return a + b\n    },\n    [`a`, `b`],\n  ],\n\n  // `a` and `b` have no dependencies! But they must still be listed. They take\n  // the input given to `fn`.\n  a: async (n1, n2, n3) => {\n    await setTimeout(15)\n    return n1 + n2 + n3\n  },\n  b: async (n1, n2, n3) => {\n    await setTimeout(10)\n    return n1 * n2 * n3\n  },\n})\n\nconst output = await fn(4, 2, 3)\n\n// This will be the output of `e` because no function depends on it!\nconsole.log(`final output: ${output}`)\n```\n\nOutput:\n\n```\nfinal output: 14256\n```\n\n### Debugging\n\nThe graph will be automatically validated, including cycle detection, via\nTypeScript magic!\n\n## API\n\n### `grfn(vertices) => (...args) => Promise`\n\nReturns a function that runs the dependency graph of functions described by\n`vertices`:\n\n- Input: passed to the functions that don't have dependencies in the graph.\n- Output: a `Promise` that resolves to the value returned from the graph's\n  _output function_, the function that is not depended on by any function.\n\n#### `vertices`\n\nType: `{ [key: string]: Function | [Function, string[]?] }`\n\nAn object describing a dependency graph of functions.\n\nEach value in `vertices` must be either:\n\n- A pair containing a function and its array of dependencies by key (e.g.\n  `[fnA, ['keyB', 'keyC']]`)\n- Or a function (equivalent to `[fn, []]`)\n\nThe following constraints, which are validated via TypeScript magic, must also\nbe met:\n\n- Each dependency in `vertices` must also appear as a non-dependency:\n  - Not okay (`b` doesn't appear as a non-dependency):\n    ```js\n    grfn({\n      a: [fnA, [`b`]],\n    })\n    ```\n  - Okay:\n    ```js\n    grfn({\n      a: [fnA, [`b`]],\n      b: fnB,\n    })\n    ```\n- `vertices` must describe an\n  [acyclic](https://en.wikipedia.org/wiki/Directed_acyclic_graph) dependency\n  graph:\n  - Not okay (cycle: `a -> b -> a`):\n    ```js\n    grfn({\n      a: [fnA, [`b`]],\n      b: [fnB, [`a`]],\n    })\n    ```\n  - Okay:\n    ```js\n    grfn({\n      a: [fnA, [`b`]],\n      b: fnB,\n    })\n    ```\n- `vertices` must have exactly one _output function_, a function that is not\n  depended on by any function:\n  - Not okay (both `b` and `c` are not depended on by any function):\n    ```js\n    grfn({\n      b: [fnB, [`a`]],\n      c: [fnC, [`a`]],\n      a: fnA,\n    })\n    ```\n  - Okay:\n    ```js\n    grfn({\n      d: [fnD, [`b`, `c`]],\n      b: [fnB, [`a`]],\n      c: [fnC, [`a`]],\n      a: fnA,\n    })\n    ```\n\n## Contributing\n\nStars are always welcome!\n\nFor bugs and feature requests,\n[please create an issue](https://github.com/TomerAberbach/grfn/issues/new).\n\n## License\n\n[MIT](https://github.com/TomerAberbach/grfn/blob/main/license-mit) ©\n[Tomer Aberbach](https://github.com/TomerAberbach) \\\n[Apache 2.0](https://github.com/TomerAberbach/grfn/blob/main/license-apache) ©\n[Google](https://github.com/TomerAberbach/grfn/blob/main/notice-apache)\n","readmeFilename":"readme.md"}