{"_id":"busybox","_rev":"33-14e9405f2b0abae240bdf9e9160413d2","name":"busybox","dist-tags":{"latest":"2019.8.21"},"versions":{"0.0.1":{"name":"busybox","version":"0.0.1","_id":"busybox@0.0.1","scripts":{},"_shasum":"81643e1a48a930354161eaf8d6ad3a4b505ed5f4","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"shasum":"81643e1a48a930354161eaf8d6ad3a4b505ed5f4","tarball":"https://registry.npmjs.org/busybox/-/busybox-0.0.1.tgz","integrity":"sha512-JyuwU2XLBu5JFGcmKbKvF8lt6j0SK8IZ4PCr9YZJYYvgffkyqiTvlNHCTCNZRKIKA5o6/Z5ZLqHQxXKghbGc7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDR+9X28CwAEX0TKqtICjw5bxXehzwFuGFkAhGiCS1lDgIgJeoB7/CQuH3+Wdhh9I07FCn+ksKV7xWULyfhDOEMuXs="}]},"maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/busybox-0.0.1.tgz_1486308736911_0.9433379215188324"},"directories":{}},"2017.2.20":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"this zero-dependency package will run dynamic browser-tests with coverage (via electron and istanbul)","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["atom","atom-shell","browser","build","busybox","ci","code-coverage","continuous-integration","cover","coverage","docker","electron","headless","headless-browser","instrument","istanbul","jscover","jscoverage","phantom","phantomjs","slimer","slimerjs","test","travis","travis-ci","utility2","web"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAlias":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./lib.utility2.sh shRun shReadmeBuild","env":"env","example.sh":"./lib.utility2.sh shRunScreenCapture shReadmeTestSh example.sh","heroku-postbuild":"./lib.utility2.sh shRun shDeployHeroku","postinstall":"if [ -f lib.utility2.npm-scripts.sh ]; then ./lib.utility2.npm-scripts.sh postinstall; fi","publish-alias":"VERSION=$(npm info $npm_package_name version); for ALIAS in busybox busybox2 busyweb; do utility2 shRun shNpmPublish $ALIAS $VERSION; utility2 shRun shNpmTestPublished $ALIAS || exit $?; done","start":"export PORT=${PORT:-8080} && if [ -f assets.app.js ]; then node assets.app.js; return; fi && export npm_config_mode_auto_restart=1 && ./lib.utility2.sh shRun shIstanbulCover test.js","test":"export PORT=$(./lib.utility2.sh shServerPortRandom) && export PORT_REPL=$(./lib.utility2.sh shServerPortRandom) && export npm_config_mode_auto_restart=1 && ./lib.utility2.sh test test.js","test-all":"npm test --mode-coverage=all"},"version":"2017.2.20","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2017.2.20","_shasum":"da0a8da9240f85e811fc77f43afc038c164b9a43","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"shasum":"da0a8da9240f85e811fc77f43afc038c164b9a43","tarball":"https://registry.npmjs.org/busybox/-/busybox-2017.2.20.tgz","integrity":"sha512-x/a/HjvlswDnVjyzWp4a464DeNkcYmH99A//rkZ8U0ka792HCbcnANjoP+Hyvdyp9HpkzV2paD2BRC69Qfr8ew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBAZJA0S8yAr201GQogavAlxVYQM8PdIIFahMiZa4ERjAiBNDLJHZ6x+6fCKdQptyKuvQxdTD7nsXW3ysdoM6KdIuA=="}]},"maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/busybox-2017.2.20.tgz_1487617934224_0.6524234134703875"},"directories":{}},"2017.2.28":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency swiss-army-knife for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["browser","build","busybox","ci","code-coverage","continuous-integration","deploy","docker","electron","headless-browser","istanbul","jscover","jscoverage","phantomjs","slimerjs","swiss-army-knife","test","test-coverage","travis","travis-ci","utility2","webapp"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAlias":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./lib.utility2.sh shRun shReadmeBuild","env":"env","example.sh":"./lib.utility2.sh shRunScreenCapture shReadmeTestSh example.sh","heroku-postbuild":"./lib.utility2.sh shRun shDeployHeroku","postinstall":"if [ -f lib.utility2.npm-scripts.sh ]; then ./lib.utility2.npm-scripts.sh postinstall; fi","publish-alias":"VERSION=$(npm info $npm_package_name version); for ALIAS in apidocs busybox busybox2 busyweb test-lite; do ./lib.utility2.sh shRun shNpmPublishAs . $ALIAS $VERSION; ./lib.utility2.sh shRun shNpmTestPublished $ALIAS || exit $?; done","start":"export PORT=${PORT:-8080} && if [ -f assets.app.js ]; then node assets.app.js; return; fi && export npm_config_mode_auto_restart=1 && ./lib.utility2.sh shRun shIstanbulCover test.js","test":"export PORT=$(./lib.utility2.sh shServerPortRandom) && export PORT_REPL=$(./lib.utility2.sh shServerPortRandom) && export npm_config_mode_auto_restart=1 && ./lib.utility2.sh test test.js","test-all":"npm test --mode-coverage=all"},"version":"2017.2.28","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2017.2.28","_shasum":"222a382b7987bde0b89871d2799605338363a38d","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"shasum":"222a382b7987bde0b89871d2799605338363a38d","tarball":"https://registry.npmjs.org/busybox/-/busybox-2017.2.28.tgz","integrity":"sha512-C16kIP3ylie5iJbUhCb2oCNsMB+hIC7Q+aZ8VMhV7eXzQb5vYzW3LkRFNRk9Bw7Xi9yWO30K+7eM74HWwAHVRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeK/HrbmCPXapgoWTTXPJS1AGJ8OhAIPF8orIhKu8uOQIhAIZfZrdNb/YYNoKXhCqwVlywL+PKY7Jx93R8yIsi5BDH"}]},"maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/busybox-2017.2.28.tgz_1488362920083_0.41907088877633214"},"directories":{}},"2017.3.9":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency swiss-army-knife tool for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["browser","build","busybox","ci","code-coverage","continuous-integration","deploy","docker","electron","headless-browser","istanbul","jscover","jscoverage","phantomjs","slimerjs","swiss-army-knife","test","test-coverage","travis","travis-ci","utility2","webapp"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAlias":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"readmeParse":"1","repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./lib.utility2.sh shReadmeTest build_ci.sh","env":"env","heroku-postbuild":"./lib.utility2.sh shDeployHeroku","postinstall":"if [ -f lib.utility2.npm_scripts.sh ]; then ./lib.utility2.npm_scripts.sh postinstall; fi","publish-alias":"VERSION=$(npm info $npm_package_name version); for ALIAS in busybox busybox2 busyweb test-lite; do ./lib.utility2.sh shNpmPublishAs . $ALIAS $VERSION; ./lib.utility2.sh shNpmTestPublished $ALIAS || exit $?; done","start":"export PORT=${PORT:-8080} && if [ -f assets.app.js ]; then node assets.app.js; return; fi && export npm_config_mode_auto_restart=1 && ./lib.utility2.sh shRun shIstanbulCover test.js","test":"export PORT=$(./lib.utility2.sh shServerPortRandom) && export PORT_REPL=$(./lib.utility2.sh shServerPortRandom) && export npm_config_mode_auto_restart=1 && ./lib.utility2.sh test test.js"},"version":"2017.3.9","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2017.3.9","_shasum":"c5c60e22aa90f52d0189ba7ccb8c4444782427c3","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.2","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"shasum":"c5c60e22aa90f52d0189ba7ccb8c4444782427c3","tarball":"https://registry.npmjs.org/busybox/-/busybox-2017.3.9.tgz","integrity":"sha512-mI1AVtDQ1H1RYVGuIblwqMmupZY+OrGyHyUoLAvgFe6eu4rzr4AJJPdTJjuPkAQcPUCEwngzwdRGTgGoMsugVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHpZ647o3PxzsHkGgIixdnRFaT6BDlag7dK7SOc03SDiAiAH5hyO84AS5wKeaT1fRoEdqVS1Lp0wz/8Cc3/qENE4gQ=="}]},"maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/busybox-2017.3.9.tgz_1489172794712_0.6326354215852916"},"directories":{}},"2017.3.10":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency swiss-army-knife tool for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["browser","build","busybox","ci","code-coverage","continuous-integration","deploy","docker","electron","headless-browser","istanbul","jscover","jscoverage","phantomjs","slimerjs","swiss-army-knife","test","test-coverage","travis","travis-ci","utility2","webapp"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAlias":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"readmeParse":"1","repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./lib.utility2.sh shReadmeTest build_ci.sh","env":"env","heroku-postbuild":"./lib.utility2.sh shDeployHeroku","postinstall":"if [ -f lib.utility2.npm_scripts.sh ]; then ./lib.utility2.npm_scripts.sh postinstall; fi","publish-alias":"VERSION=$(npm info $npm_package_name version); for ALIAS in busybox busybox2 busyweb test-lite; do ./lib.utility2.sh shNpmPublishAs . $ALIAS $VERSION; ./lib.utility2.sh shNpmTestPublished $ALIAS || exit $?; done","start":"export PORT=${PORT:-8080} && if [ -f assets.app.js ]; then node assets.app.js; return; fi && export npm_config_mode_auto_restart=1 && ./lib.utility2.sh shRun shIstanbulCover test.js","test":"export PORT=$(./lib.utility2.sh shServerPortRandom) && export PORT_REPL=$(./lib.utility2.sh shServerPortRandom) && export npm_config_mode_auto_restart=1 && ./lib.utility2.sh test test.js"},"version":"2017.3.10","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2017.3.10","_shasum":"ec8c03f9ac78dcb2796fb0578df541b872a8e6ed","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.2","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"shasum":"ec8c03f9ac78dcb2796fb0578df541b872a8e6ed","tarball":"https://registry.npmjs.org/busybox/-/busybox-2017.3.10.tgz","integrity":"sha512-WUvwkUHaiFjTnbR0QipjiiQstCvo5sIcIJGuzY2R95VDh4pxx5bdqmSVyZBTBFTJUkvWpSCyt/E11ICOFIS9sA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4qvFaeTHVep64H080JAWthA6Z2A/IJfPLO7C/3SME+AiEAxLa/bQMa0cRpeDDq1imI1FkIrk0y+Le1l0SsdQMzkh8="}]},"maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/busybox-2017.3.10.tgz_1489176430948_0.8826867947354913"},"directories":{}},"2017.3.16":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency swiss-army-knife tool for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["browser","build","busybox","ci","code-coverage","continuous-integration","deploy","docker","electron","headless-browser","istanbul","jscover","jscoverage","phantomjs","slimerjs","swiss-army-knife","test","test-coverage","travis","travis-ci","utility2","webapp"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAlias":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"readmeParse":"1","repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./lib.utility2.sh shReadmeTest build_ci.sh","env":"env","heroku-postbuild":"./lib.utility2.sh shDeployHeroku","postinstall":"if [ -f lib.utility2.npm_scripts.sh ]; then ./lib.utility2.npm_scripts.sh postinstall; fi","publish-alias":"VERSION=$(npm info $npm_package_name version); for ALIAS in busybox busybox2 busyweb test-lite; do ./lib.utility2.sh shNpmPublishAs . $ALIAS $VERSION; eval ./lib.utility2.sh shNpmTestPublished $ALIAS || exit $?; done","start":"(set -e; export PORT=${PORT:-8080}; if [ -f assets.app.js ]; then node assets.app.js; exit; fi; export npm_config_mode_auto_restart=1; ./lib.utility2.sh shRun shIstanbulCover test.js)","test":"(set -e; export PORT=$(./lib.utility2.sh shServerPortRandom); export PORT_REPL=$(./lib.utility2.sh shServerPortRandom); export npm_config_mode_auto_restart=1; ./lib.utility2.sh test test.js)"},"version":"2017.3.16","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2017.3.16","_shasum":"d337948bdb973faa116c10268e389899fbf38e1f","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"shasum":"d337948bdb973faa116c10268e389899fbf38e1f","tarball":"https://registry.npmjs.org/busybox/-/busybox-2017.3.16.tgz","integrity":"sha512-gmdWJIsVJzXobi56b6Cd0yvvkHdm2SnTu3SnoEWMCc4+B2Cnvk4XM2FxefmwLu3HN740acGpk6Rjpi4595nilg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmOklGZNQaBk5SnDSSKYi2flOfKzhlG6GiLKRyLt79pgIhAJisAAtj0JtFly40Fzyl+Gypi4wUB53Qf6GkkAsNBDuh"}]},"maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/busybox-2017.3.16.tgz_1489699174323_0.8241191953420639"},"directories":{}},"2017.3.17":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency swiss-army-knife tool for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["browser","build","busybox","ci","code-coverage","continuous-integration","deploy","docker","electron","headless-browser","istanbul","jscover","jscoverage","phantomjs","slimerjs","swiss-army-knife","test","test-coverage","travis","travis-ci","utility2","webapp"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAlias":"utility2","nameAliasDeprecate":"busybox2 busyweb","nameAliasPublish":"busybox test-lite","nameOriginal":"utility2","os":["darwin","linux"],"readmeParse":"1","repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./lib.utility2.sh shReadmeTest build_ci.sh","env":"env","heroku-postbuild":"./lib.utility2.sh shDeployHeroku","postinstall":"if [ -f lib.utility2.npm_scripts.sh ]; then ./lib.utility2.npm_scripts.sh postinstall; fi","start":"(set -e; export PORT=${PORT:-8080}; if [ -f assets.app.js ]; then node assets.app.js; exit; fi; export npm_config_mode_auto_restart=1; ./lib.utility2.sh shRun shIstanbulCover test.js)","test":"(set -e; export PORT=$(./lib.utility2.sh shServerPortRandom); export PORT_REPL=$(./lib.utility2.sh shServerPortRandom); export npm_config_mode_auto_restart=1; ./lib.utility2.sh test test.js)"},"version":"2017.3.17","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2017.3.17","_shasum":"178da981a82e3cde49d1cea47e0228fd11ac1555","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"shasum":"178da981a82e3cde49d1cea47e0228fd11ac1555","tarball":"https://registry.npmjs.org/busybox/-/busybox-2017.3.17.tgz","integrity":"sha512-5U6mbMnbxkRBfJcBRsVrP3TP+nD7wicepHHkhLfPxPllo7wB9MCD4nLeNJoIJZ1aKF3q7hKYG3lVc3N1YQL7LA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHyLAwX1VAFcpJh9uT5fULEw34bArBVk3gF9kuEyu1brAiA5EHxKq2EVyajzBPbpvmoXihMSW9tRFsVGR8F2fh92Zw=="}]},"maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/busybox-2017.3.17.tgz_1489757276879_0.579370655817911"},"directories":{}},"2017.3.21":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency swiss-army-knife tool for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["browser","build","busybox","ci","code-coverage","continuous-integration","deploy","docker","electron","headless-browser","istanbul","jscover","jscoverage","phantomjs","slimerjs","swiss-army-knife","test","test-coverage","travis","travis-ci","utility2","webapp"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAlias":"utility2","nameAliasPublish":"busybox npmtest-lite test-lite","nameOriginal":"utility2","os":["darwin","linux"],"readmeParse":"1","repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./lib.utility2.sh shReadmeTest build_ci.sh","env":"env","heroku-postbuild":"./lib.utility2.sh shDeployHeroku","postinstall":"if [ -f npm_scripts.sh ]; then ./npm_scripts.sh postinstall; fi","start":"(set -e; export PORT=${PORT:-8080}; if [ -f assets.app.js ]; then node assets.app.js; exit; fi; export npm_config_mode_auto_restart=1; ./lib.utility2.sh shRun shIstanbulCover test.js)","test":"(set -e; export PORT=$(./lib.utility2.sh shServerPortRandom); export PORT_REPL=$(./lib.utility2.sh shServerPortRandom); export npm_config_mode_auto_restart=1; ./lib.utility2.sh test test.js)"},"version":"2017.3.21","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2017.3.21","_shasum":"8366c63788c1fffacf352c1c10ff9bb650483736","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"shasum":"8366c63788c1fffacf352c1c10ff9bb650483736","tarball":"https://registry.npmjs.org/busybox/-/busybox-2017.3.21.tgz","integrity":"sha512-oolumhTJbxX9g2uW62lfWOHW3EROGGzfXmzU8BUM8pJD3GcL7XMltcc25oEFFpF8ajDu/o+897dgJMIwobezKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvv2KU8EIsUfofczS+SdsVJwJ+ph7pJmd7a8wGvmpnLwIgOyxz1vFMcJAd9yMTdPzq9UFwucaYzaSPoinzvyL6d18="}]},"maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/busybox-2017.3.21.tgz_1490119803018_0.30051817605271935"},"directories":{}},"2017.3.22":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"dependencies":{},"devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"directories":{},"dist":{"shasum":"0cb2a7677bf3502bcceca043b6e73890b8385ab1","tarball":"https://registry.npmjs.org/busybox/-/busybox-2017.3.22.tgz","integrity":"sha512-ichIUhnKiVPvB5p2AORi0OT6Fnulye4gLUhrWd77i7kJ6Lyd+oWymru8zo3UnaA6ARLOWsSwllFEekHi92TanQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBoBJwUrMsoJaom1LFK3RTPRgy3luVuUPHA17Nv10uqyAiEA3rIbJTlyPrLnwr5r3E8OTgRvZeIhEfWQJpLism0o0hg="}]},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["browser","build","busybox","ci","code-coverage","continuous-integration","deploy","docker","electron","headless-browser","istanbul","jscover","jscoverage","phantomjs","slimerjs","swiss-army-knife","test","test-coverage","travis","travis-ci","utility2","webapp"],"license":"MIT","main":"lib.utility2.js","maintainers":[{"name":"kaizhu","email":"kaizhu256@gmail.com"}],"name":"busybox","nameAlias":"utility2","nameAliasPublish":"busybox npmtest-lite test-lite","nameOriginal":"utility2","optionalDependencies":{},"os":["darwin","linux"],"readmeParse":"1","repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./lib.utility2.sh shReadmeTest build_ci.sh","env":"env","heroku-postbuild":"./lib.utility2.sh shDeployHeroku","postinstall":"if [ -f npm_scripts.sh ]; then ./npm_scripts.sh postinstall; fi","start":"(set -e; export PORT=${PORT:-8080}; if [ -f assets.app.js ]; then node assets.app.js; exit; fi; export npm_config_mode_auto_restart=1; ./lib.utility2.sh shRun shIstanbulCover test.js)","test":"(set -e; export PORT=$(./lib.utility2.sh shServerPortRandom); export PORT_REPL=$(./lib.utility2.sh shServerPortRandom); export npm_config_mode_auto_restart=1; ./lib.utility2.sh test test.js)"},"version":"2017.3.22","_id":"busybox@2017.3.22","_shasum":"0cb2a7677bf3502bcceca043b6e73890b8385ab1","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/busybox-2017.3.22.tgz_1490692552481_0.5384840099141002"}},"2018.5.25":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.5.25","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.5.25","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-7752AJ0pGn0Wovvo9JwxYXGKwFDzvukoYnvSU/bW/tTqTUiMtt6MLzCmIw125WPMO4MTKFVlU5gRe/SDBxtJwg==","shasum":"9b20a92317e0f84f8d98727c3475c17e67a6afde","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.5.25.tgz","fileCount":17,"unpackedSize":1720624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEDWxCRA9TVsSAnZWagAAFYoQAJ22gN1SH8rgcGGEdeQa\njKqMk3p0Sjjzf9joXd3dO0WZI/IZQ0HOdu6GUy68lDr/0IY7UOqfBSdc7CBK\nZXpT6wtQ8CEbdaxsbTCEfx63aVbruUnQv798jWYItBrw2fORyVUNN2xSnjSJ\nsdtcSFXLruQ1Yx01l9bFtvIscX8zyTOxiJWXU4c8ijtNStf1h1RekUJN+q+o\nu5yL1tsDT/++F1xVfPLb3hWkHPqVQr7jk/WL0KqUgoaEPo15fXJRUYxl9L/g\nG8UfWfj4jKyELgyXPlZpVWdtC1sttArierx6VDpSHrZLGAi5i+DDV72kkBSS\n5ASSN5cyW+s6eiIQ6NxTCAnWhNhgi23LlosoQ/ivm5+uSLjxy5PklSFY29Df\nU46VewrkHf6/PkHteWwr4kFp3/urgcgzrAxzG1F/QXH4Fks67qHeNc84zs4c\noabjWlcU6sj/ZMJqogNLRGvWpWF+qndmOVbZ9mYtxWaXGmUjKgsQncsIpTYG\n5vm9agsOsMg0l7T/a4m1RtqQNzeCB02prtUj6+nDYdeh/KDxu/e7DInY9EJ/\npzb6dSMKGaSAX7eJ1jJD5g+SONfiSl2q3d1YUGaxDvzbuGhNU7K1nmberQpf\naahQLEiaRJNKuhB48WJOneRssr2kyLUs+sOKWqD7jFt5V4y7bB+BIKyATpLj\nP+W2\r\n=LyK0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDjJudi39AZCvvrXrfqZ9RiFbsBROtGnO7oI05psVEfGAiEA99Rkuz8TQNvR/fCES9YzhmAub9d9Mdmg3McadK6oc3c="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.5.25_1527788975529_0.7677796194557778"},"_hasShrinkwrap":false},"2018.6.21":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.6.21","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.6.21","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-E+UluD0vF1whPT7BDrfbG2fddqSMjM3pJbvvn5+7pNZpQiIQIrYhNsawbP5kFK/AJNyB77EPpxgnH8A4u7Wqew==","shasum":"397228591bd507ac392b1d78b8e3b78e1aebcc26","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.6.21.tgz","fileCount":17,"unpackedSize":1726090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbK/DUCRA9TVsSAnZWagAA+kkP/12m1RG29ohbex7L4eWo\nDkHmc4hDSVoRlr+WMXjRNUdN7ObDG/6rmJPbqV0rEKD/vp8lUiCJ/3eA73Wk\nZrqQ52zFLPCIUYnlMxU/Oum9Q9gaxn6pHT+QgjhihbCFIAmkfUalyqRO23u9\nJL4L1DebR/LvnURp5Nv+PWG+WV1Vl6cokdCZAKGwWmoybeYPwg5yTpssjeBf\ncumvDbdO6r1uzrDKs/XJTo3DEv+8wAdI27yoQd6rJPmLaMZ7Og4slBCiL4N6\n1O+aCKALvrIFef9uTrs4g7zgAz9tXQfzri3/I3af+XaP6hyXix+QacvszTgY\nbRGx6qzL8UADOv1Nz5MIEfpHScDOXCdTDT/5GNCUYh7jJtcVZ/QNsZDtIhjM\nZlhaJVRMZEQJfRSN1nYPsR7E/K/Ae5MXL7QYau+8ckx/Wc8JJCe3ZclRBGpR\nRZ9IfIrKta+Peo7m8pMvJCQcKlLj+nEq2JuKAUPM1UHpn5JbqryB1cZ1hRkE\nOgZRHsJesT/Dadi0uIIWnnoOCuwfVyEwvGKWlx5FcgQClDvvp7zqyWU+5zRb\nR3S5iRIFoQApfUgNh1bsVhai2mofwopa+qz6uLylnus9euNx+kN5Xhqtit+X\nMgryXclpxwHQg6xQKZ9swOAw2DYMfxgbxdFjiIfM5a1PDQqnvu4WnDqaq6+q\nxq56\r\n=Hg5X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOjZY7VM1rQ23lCmwWmBC8BjvVs6wEy//3qVhgLkpZrAiEA0ntmZsEmdK7zx/m56vOXbyO9agYq9OjWZyppV/NFH+Y="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.6.21_1529606355936_0.06248226182759575"},"_hasShrinkwrap":false},"2018.8.5":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.8.5","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.8.5","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-hfURqpHksAJWn5WaM0icgn876vtdZzgiID8PJCKYVOGCmIo3pj3zOVXJtZa5/acXvd9HRVT/5IydqVRqPS/f8w==","shasum":"43c48954eb07b486b855fa62435b3b0ac035097e","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.8.5.tgz","fileCount":17,"unpackedSize":1754930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZ2YeCRA9TVsSAnZWagAAwEEP/24YGOUUswWfaQMDub4m\nRzsCpVO9wOleEvw3GS5rB1sbUAEaiEGX98Ch5U4s/WUTOBZfGmP8752wKRVf\nutsTX/vMhju6x4WLsqhR48BcbcrhkiOeMHOnPjxRm7EN855fTLrBvV5N39xH\nCULHPYyhj+adzwtJLNulNKqV9zXoN4DislcBLNwI7Riv/7iVH4iWBPn5MncF\nu9mAldDleTDDo/KRFYdTeZve6ZTcp36wPcfCLal9zLKKYnaWkveu54RHGmML\n2yFKCXyWWcNixiW8lZMacQgpXu0BIsGaCVbvmNjlGbT+uMkvu9DzCRYWKxLi\n5LsIRHglN9F69QJyvfZJIRI/WpDvEqGiLtX52YnmCidCUu2MZJLs1pO4FPT3\nXKOnkxFzuuWchS/MSUovXlUb+iHsqYJBJSKaRqETE6+Mdn77jOX4se6AM+zd\n2rSGZklR/kK8QlRXcFMw12+IyMbe0Ecb1Dtf6DuS2yJTCorLS0L1Wc2H3Nwy\nkuLQ/kBm9nov2zyW5jTIJCNE9sZEqQ3gItfxOBdXFn3cUkr4S+x6mjcKV3be\nP22Hs8EgLhTLMrlm/om/+eM+anJqnyyMwg++ewESZin5mTAPdN+QvmB+szhZ\nWyjVWOljrsN5CxbZDRI6e9UJZrziaYPsx97WjRLfCDkH6ralsU7mLGd5ahAb\n55iq\r\n=QC7M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLlEivq74UhH7iOmDq0RnYAkCvGWwbuxoiGPFoAVTROAiAFUROue0u5raPFdFFQVnKaPIgvdADlvlJOopWi0CY3wQ=="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.8.5_1533503006158_0.09050701080553392"},"_hasShrinkwrap":false},"2018.8.19":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.8.19","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.8.19","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-DBnAispSAhIq5WiSE5v80sY/bLjeKuI6/5YWp3VMRjqjKyLjX2xF/jPYXttUO+EqsLkqUF0ZyU21ZvYPOo4OnQ==","shasum":"bf640ed19fb2129b82cea1c892ecfa347ff9a636","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.8.19.tgz","fileCount":17,"unpackedSize":1792652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbecsyCRA9TVsSAnZWagAA1IIQAKIyUfJGG9OdqOZe7tqf\n2dTt/+BzYmJBYptCHzPFtADVbusZyqmbNkObFjlE0vk+Na33F69HYrj3+NSE\nW+Qkhk/PQ8HlXQSHkbxOWYD1hlLL6lEye9PTXcPJsj0cCuZs1QOp0DxkLOQV\n1SgeoCf43p8EgGeHVp472hpCfUKELaSEvXKGGQj8gwyQJxtZ0Hd8S3zVuY2K\neLxXXUjBnaqyR8AvaoLrV2Use+0CqkgMRvCPgFPRyAsF6QYFX1Tcfgr1+K0A\ne7D8XXsHTaDxZaB0UW2OtLvjw7Ndtbt4RbgH90rniWSgxnsnVTirL1kXEjjz\n3IaEVJS1U3XwP/4Bna/3A2XdrtmzHOzmfUyJANaFgVSMGbZS04V/8JUQMXgU\nmkZfKYX0mBknU7a156oiJ7LU+5HWNOY03gWs4Xx/IMSf5GTWzCi/Y1/apqL+\nxTJynhShwXcPeBT6Z0r0TAVJZUoS6uk6q0tcbzE4oPDzz3OjWEp0DQIcZP3+\n90jK3HvVPtCkeIiuzHWgJ7KXpM8gwiVNiGiCNS2Bv18mJChHpuK47iM6EekB\nnTF3ZheBKtcIycxjIxFrfNkzaoS2bL2mh0k6j+9EDufioXc9a9aGy6A/YUUY\nhrPNcwZdo7ss0E0WoRSpIE4I+bdXaMIE6Z1mFmChylchGvU1ssk8janANsLu\n5RiK\r\n=c4a6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIwqxAbpDw3BEbk4ewSYh/JgjoK3YZLx7yOWG3bxJ5fAIhAKBPPngwfGNNmzLZRkIQYtP73f56kyFiZI67R0+unuwh"}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.8.19_1534708529115_0.17420446955530777"},"_hasShrinkwrap":false},"2018.9.1":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.9.1","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.9.1","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-0ryk/qkcatDr7Ypc20CNP4HMSchDSOQF5jJcCRpDiMoHhM/G6uvdmV3pYRzOFCnEnHuF1k74Qf5me5EQan5FMQ==","shasum":"78ce80d05f70315f2779fcdd983fa22aeed2e2c9","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.9.1.tgz","fileCount":17,"unpackedSize":1789855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbifhzCRA9TVsSAnZWagAA1QoP/0Qs5fI0jP4Lkm3SbvUp\nrnB73GmBjcQDanXl/lUqWWOVzzld8sUi4tJm1Dp2klcNZonFQ34wh+gocPEd\nVuv4gOeQ+/hgh5fgPOnceFvAlRWyCO3VABBOLG7ertH3EfyLVmH5ZZMqhDxn\nclOExckjBbm9FEszHEXu99JC+wH5j+qYR770ymnh3Jvv5MPWtxtL5FVZHeFV\nIO9/yKjw4ZCHUduVfY9b4EzviAtXJTSiYB73o5AqlsBmbciNy7lZjXkrwwtU\n7xl0FrA0Lh9n1pEg1GFV7xO1v6e/koyTX6Xd72qGmrCMHg+QaI7wPbc+P7wK\ng+XLcJFmYm5Lrd+3PB6KsPtba0teaukahvB2Z/7olTNYSAMsMN5NXD6OGyb/\nf9SWHuwagZ+JfccAaHtXYVCixgTGW2K7+GTDOmBnpr16en3VilYbjNItDYBJ\n+ee0mDr2U/2ImxJEpVXwXw3X2o2kC+sSCMgXSW8Umc76ganMcnveyE0ksVON\nVrhT2cQ4qcPTPBYy0X2l6Io/Vk//X4QCZmfS9qQ6XSLQ5VP1K2V4/B+TK15X\nGzS+SSInsu1EX52sgMo3Z2353pG11bzJjf4AYemDA4P2oam1FAND7n38fO2m\nPBivJvxahRKGM+3ieJ2ypprEcjxYv+GwdFa7H+JXXnv8bI4pFpmgAJRaa3mt\nuZwv\r\n=AXiM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChRUAKB/Jib+pxjd+uLFrAXQfrv8tFPt4d8uvCGqkSaQIgAdUCVOL/WCwTVl2GKUzTzWwl7b4rxDB2qIq+fBARU6Q="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.9.1_1535768689986_0.21511991932946462"},"_hasShrinkwrap":false},"2018.9.8":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=4.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.9.8","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.9.8","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-OiY0eR4jtEinp64wIWS8XdwcB46jJboBYkLvAu0sl7tHkvYMikC5WEJAADU2hwzFseDDMCoMbEq3Jf2EvkA5uw==","shasum":"7fdab9afe2dbf8ed5e94003475fa362697c65db4","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.9.8.tgz","fileCount":17,"unpackedSize":1806659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbk/aDCRA9TVsSAnZWagAAILkP/2O5rI6DXv0dz50KjKVv\nKrMuNzMyvm2iOJ/Jnt98cwD36/TpeJAMvj4uXRjnU7CR21slXhSOFCNAXNU7\n+B3TboTbFXvy1RWe+Jb5Bn2ElkGIcjd+9xZXKyGtI21IqRI3XWexsthM4oM0\ndkNc7+SDgOgPyYTAgMyB3zo+TE7koUH3/9CjmYgK2Z5VttnAZuUUbDZ6x7ct\nP9pBAsEtPvnDXXpAP/zLILMB0iDJyr/aOhiwaSQ5XKXF/NicdgxmCvc6hMpU\nsnUrXXy944QEtKMoKsoICuhEUTZXydGVPlm4XxlX9kWK7Kmqe5eCJdybP0IZ\nZK2sukdI3NHjl62JtKck3b1M0tAjS+emMUtxoGd0J6kmhP5d/T7h3V7hq4nE\nPs22pNMGZ5bR3hJ4kkOtwxLwNKrx0v8JxawhDyYwlU56/PKxn+1gQTOdmcsj\nfRIAB+vzBZRND0MWFYY/6SMjtvmGDseqd55X+xuTVWLsyDYGyxkblzmaDrro\n7je3ADutdqO5E48XtchckK8/FvA34QBAeOF0cdSopG2i8XlGXP7rCkNUytZn\nCLRpUdqNnl1t+rDMwq1oJwBMxppC44utU4eLOEDLywp67ci/4BJlPr8YYcCV\n3RWvemJyQ4GjUEhgt0zrwBbg/txgWg0I0A4+5LZgTIeCF5NtjfbgF/jpEm81\nDstl\r\n=RpYD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF4vIsVx8XQt1MSm2qF4BHCNtm7AKdwKvwcAbHMKQL/wAiEArNJxWGtQl8oFiG5L0B0mM8+biABCIWd1bmQgrr91+/U="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.9.8_1536423553847_0.17987722439886977"},"_hasShrinkwrap":false},"2018.9.29":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=8.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.9.29","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.9.29","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-oy8btpr0LR1iKrXH8l/AXAL+avYOGCuRHQmvyPYIEGuy3G6Ki68eG+8VSXwkSspJ+GLSoEujjvvaVYPIDxjDww==","shasum":"d87cdc0341e1c9891b51a54c552ac22a55715fd1","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.9.29.tgz","fileCount":20,"unpackedSize":2166156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsGV1CRA9TVsSAnZWagAAQbYQAI4+5jH/PHl3sfIApIPw\nDdttDk5hPQgJ6WXcMYR9VTo71mnWT7qlZRmKPCSnNk/o6eBoeQhKr2Pb/EBe\nyCdlJLfrzvR6MwYNCyEZacWWMigCEJnH7fFp1TNKHW3ssrqzzz4FTmCAx6R2\nKQ6KJNfcjTRDULATPBz1wmNHYuBE9xDpYGsj7cg/CmzR5P8Yse8VaIdwCp1z\nOj4+kbjSvlK52sVblPL/tmOH0KTt2bsabbCKCHlr88epQiGzAnrieCOvZQ7f\nLcQpHbghpEsEvrQ/g5iGKOgoVpFPmV7D4rkYHTgwKJYr1arjVIDaSH8HPsQr\nR6anm+oKw4liSfjEGGNodjPrhqA8U6sSKPDHHyljNsSipBqF7e2XAdd+1F3L\n2NuUmjdovwsWXJYKIL3mLFOAfmMnqCon6SiVSBULC9JNG3wsqYUtguTLCHQe\ntGP0Nxstx6mlOoIuDGkf8AnbJ37GUCw2CQbCdz6UNxI6soCSd96VjdLTNMlz\novBHiHC8ShfORVPun7+rbN1d68fNNGaOjKIasFVKi0/Tp9fCC5zX7k2/ebF6\nvSVRUBvxQK7roH2MWV0rAWDeHO0S0WVPDRqP+ENSu/xwgKSRJtHE2Cqu7No7\nMf+JZ3tIpoG8rxIJa79wZhtShwfZsdHFytA9swIE07DZ1NYU6Wjahcz+Dl70\n7FCK\r\n=/ysK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+w9SkmmQNcwa7nl/IMT5+1MwnJw9iA/RfhNe/3S7RGwIhANayWiqO7bB6pgWxwG8PgOcbgibXvvBgeL+OqQMb4Btf"}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.9.29_1538286964539_0.6289567439133035"},"_hasShrinkwrap":false},"2018.11.14":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=8.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.11.14","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.11.14","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-bpAV8+20apPiQ8d6eccN5lzTGRYE7d6audx2cAKQguqlU4SRYYUMWp9anLqsMGwOCZYYC7OS624tG9adnTIAIA==","shasum":"082c646d298114a76e41606dd04158a0386bf8b7","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.11.14.tgz","fileCount":20,"unpackedSize":2220480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7FXSCRA9TVsSAnZWagAAmBwP/06RDWj9BDmCZyl+m7t4\nuoecFQ0acEAinRThPLZbnog+HJWad0kp+OBj69xF1ESfJV7cBOpvQDpCQxBW\nuZhCtgjaK6AKlbzGSx0AOpJsaMUdQLS0oghUTPJncar+JNf12jyJePHRK5ht\nfzavmcj9IOnqQGijEKk0zMWMfq3uRxJ4+HP14t/HS9iRFFIUzcbAkamuZ/vx\nij729Ky8ukZP5mHbFzEiSU2iU1eo4zLsIjK/VG5uJrj3wupcxDiXOB5i8h3b\ncoBd1P2gDAh22vexfjESP/BFpbOTZ4WCELS/rgYnrbJvaC2Qur9O2h6dAmOB\n9vGdyD1jOBejLY/EJZ85TLKYzUpLo/BslCYRaPsl9D+QGURXqLaU33F01hTa\nqBHdjYVmGrkk2L3bIMYYfiX4kOHqU36TlLvwuver9lbP2xxzY2u2RTd9ZAwD\nF/NBsrPR+RTZI/Kh/8OEKNQyhyNAj/qmI0LAuRRxgxgf9HeMFbv1vNyE2L6p\n4Y59d7OFG4ZhyG+YGTjBI17GwEJDUwknkBNKwZ5Vl+MlIMpaLod5ivCX4D8R\nmOSsiqAI0QykRgxLw+VMHOrffIIYkbPCDulsGxVCkb2xsw8ZhO3Ue8Xb9pRB\nMPuD27NcMiA92xIqhednB0B478AklCZxaUMZJJCDe4TYGDLKmXcIHl84WWwb\nWHwZ\r\n=z0gQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkmTmfZ6UgKTyYX524UOLdELLr1ug9FCLR+Vf9D2K1zAiAp7o0HfO7U5B2/RpHwrNElh1FIys9oCSC83MBJeOkkrA=="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.11.14_1542215121336_0.9640252063410837"},"_hasShrinkwrap":false},"2018.12.8":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=8.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.12.8","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.12.8","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-4T4Y1oreUuGFVyzflWkBWA0eYdrML6QUr25svARlmgULTEh8yk8wbynRngK73QjPj6MfPSSppc6v9gFu8K5TXQ==","shasum":"bc2f0781cc19dc867da33177b83dffcfb63a32f2","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.12.8.tgz","fileCount":20,"unpackedSize":2208444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcC6QMCRA9TVsSAnZWagAARXIP+weORduuzo2D5f2eq0Aa\ntHG1SyKO6Jpoqc4XZphIrVIHblec4YnFkAQtSRqJ4cXrxzp1k7MEGkjgl9/H\nKEaht42CiuQ/m7IwcUTJ0RFGY+A7Jzd4N5WPQ3RIUEyly1w12nq8MAxlhrW+\nmaC76ROv+jQo9pa1IhuG4evdM+Fj1ZKvbNIoPZDFzU8lUrtpR4Iffv87mn8Y\njo8y9kzjS/jlCGN0BMwZEQI51wOkpBn89odtqKT5OHID7CwSSwfpT2rqYyZF\ndQeQv5p3cWU+jU7mwJ7GPLkRurvY1w49X1a+Kd+EDD+zzeSGGMxErDOh955+\nuybWA+Javj2FwyRXqLBcsA9pQPt3x68/7JisW+wOSOW6trm592YGjD2pIY37\nFRNUbJbVu87nH2JOu2WKC4NBKreqcSAtXcPqERVL8BV3+F4/t4xbgaZJyyMQ\nqFugz5++HIcu+QZh2nVbM3cgdDiOGc+6eqI8urn4y/MaVaSoTDpHgMQLCGT3\nL3V6OLQ+AM+vxU13x8OnsM7ooTULb2A11krXw3M7dpT/Grk/byVA46szvCpY\nKUcvagWcIcaZDEudAw3fRu8auU6Kt8yGXAafn3H8Jp8Tvulr+yf66ZBVWflB\nWBus1yYLsAEITTp53Av8ZxyTBKT+VTfoF0epmD0y0qyyoRBFnePZmx4uF/DW\nawsF\r\n=qscL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUs6oJPzaVsG5TBdjgwVNC+eAPbFReThWp7VcsZE/NVgIhAMZqdy3frYZCyCrHa3b2JXDMRlE7zEmyvL/rzIQmG29/"}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.12.8_1544266763138_0.30618880205360854"},"_hasShrinkwrap":false},"2018.12.30":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=8.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2018.12.30","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2018.12.30","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"dist":{"integrity":"sha512-N8CVOvLOOSs60Wjieebfw5vFTu4WE94uadM9zhvGZgWOKiz9iSMGw2x70gPjeroGhtmaNf5U1OtytqQcnB13nw==","shasum":"ecdc013316a3ca038de9017317afa3ce29a927b5","tarball":"https://registry.npmjs.org/busybox/-/busybox-2018.12.30.tgz","fileCount":20,"unpackedSize":2216958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcKIIhCRA9TVsSAnZWagAAnp4P/0S9rv1Ja4YrQbO+EdqW\nbzTH7kW4pl6yySrSzYp5xB7d1ZqVGmDt2MI3PExlamSiP3Atc5vDZ7lCeMIi\nFxWFj6j9CP7Y57m6rj9GtGIIo101SAi/RCDgibfcsaM3zXOKbDDASxdbagMu\nljKCIDPR+tChismaUJlNwiTKmFMJyIJROab8+0vG1k5dgVySCUcPKAd4eU/M\nwu7XHywZNEAsErnHaWTKyskLSgtqWFm3b9fbgdtlMWFoT3+siOAXq7NP2Jg7\nkHoFNt+rAMpjR+/3+smdXKWGjLxPmealKT1mgkxMcz2xzC4pw1B4EeZjrIN8\n4nHYQRz7hzl5k5GUa19XrH/zNBAv42fKmEwdCvsLPOvA9erRISOFDZn2y7hI\n6ZXEviCcgN76IsKnMKnWQdxdb3deUdZDZIHxvNF6DD7dD+MwLIa4b8qj66Cl\n6wioG/AaoCrQ9Z6T5PFDT6aK91F7S831XUMUMJaNJ62E4pBEWPEzMGd8PVKY\n6K5PfjutR8/3hCGT56lZp2ydLX77Y9FOdtQVQyyo0akAxfhYSdcAh1rNtz/e\nWxURbGRDB43212uH5KOj9li58VR92QuUOBRtq/7X2KQqiky0xtQxxVdvIFnY\nV/4v4wbQ9q7i2zvDkbe+58mver1x9DV8sVtOqIM9DWtsUH6ektLcFvXw/O32\nR3Jb\r\n=DNx5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGeM9La1AXkyBHmahNxM3UBhpzicZQv95zXuOiPquPimAiAZ+lGrQb6ZFdrfHkSxOAOCL23Zo20z6XPstD8eAmrjnw=="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2018.12.30_1546158624520_0.6954612800415165"},"_hasShrinkwrap":false},"2019.2.28":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js","utility2-uglifyjs":"lib.uglifyjs.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=10.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2019.2.28","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2019.2.28","_nodeVersion":"11.10.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-6A0M6KC+Z+yKFkxOase8pfMmTUh9RCwO8As+HW3wXYqNHGbG2MzRh4xPmSM7V2f80aadS0UTFBS/Kp2Du92mBg==","shasum":"070a477e38a6d90c4b0cb11418235fc747f27e5d","tarball":"https://registry.npmjs.org/busybox/-/busybox-2019.2.28.tgz","fileCount":20,"unpackedSize":2212892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcd301CRA9TVsSAnZWagAAVHYP/jaLxAPufCVjXrl6LS81\nvWl6Sud7/hJxPA7fe2AljSchsZqakR8PNoOAxpegNA4wi1THf3qXUgneiOQq\nzcTyFNNnbPMEt4SMQYNEnkRoJAqs/wmZonioFONuyGO5y6vVPwmky9IwwTHl\nO3tXz7BeAjGehMnVvD+y9oHkim1jcECermVJgFo9G2V6/LqXxnoULj/HpFS/\nehMzBBxQe6mChfvP6gBxm+F4xj37AhHHSpbnUmcjcBgNgJfWuyhSs82C9oQd\nJ5Vq2NTaSTRI44wEzIYa+/3f9jUuIIVPtMmFZtwxZxbgy2dVY+8jcISD8EHy\n3xqYhrBYGa7VPhu8S6JIKwaYdEJCIPWIihq8t6Mo1XlWHjV2dDUyF6QRE9nr\n/OO5FlkMg3FVvvj8OkTN/UAxt3mZO8PZPFlR06adhi48HU45PdsNTMSrDKmx\nk3YGllk/4dR/c0DLyDyyABAlT0oybeDN3qGmz2ygD55oE6HV5Fc6rcTscU+x\n/UgBweqa5yXC3gbFN6A284inMMgWvlXQqTZiyLtqNxwNLkqppWf7jWYqfr2R\nn9KaSMsWMEVgOB6Qr+Y81QgM/OSwYgRzbhU24CByAZ/p9gx7GUoMSt0e3hg7\n60HLgAYK+fQ86c7Ad68JGuSpc2X6hoU7RYPA09CDfzrBVW+mT63uSX07RRYA\nNDcL\r\n=3/Nt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/p/BROkz+y+jaIKSnPU4uq5s9e2exLOlnYguJkW9wEAiEAxDJxO889WYhgbWznRoCU4jQYwgyHefRnzPVCG4YgBuw="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2019.2.28_1551334708237_0.5446245425886518"},"_hasShrinkwrap":false},"2019.4.9":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=10.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2019.4.9","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2019.4.9","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-2scvqPVTyGQt1/v7Q7hRbVy1CAuQyL6NedwL2GpT3dwHd/WGZaRinlEtK7NErTSNJKnkHeMbha8v+SzJiIaPMg==","shasum":"bc8fc7abca2f9a14b2a8d840d64ebe118f7b98c7","tarball":"https://registry.npmjs.org/busybox/-/busybox-2019.4.9.tgz","fileCount":20,"unpackedSize":2934671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrAvUCRA9TVsSAnZWagAAOGgP/A8ruy7BGr3qEktzLVyh\n0UOQMei2Eani9nAZRvn9XXPBXFFiIlzrd9af908Wm/06OrZ9i1lVMCRdvZVj\nSRbZ2btfAzJ/iw1SjzpQPkXc0mB4Df2ZDdg0l2ZkVsOBtPxhrzjmIdo55OOh\npcj1QBXEBprwcgRPLFoBFMtTU9JoJx8jSvZQRaBO08y7qhtR9fmVY8HBVXLN\nDCTrW66KP8Tz4CVWNmCmxIUCwy6CY1OTEXlvogqSdT7HbaHH1mOk3Md4noRw\nfqzu5RSF/w7TN3DAtcd0tYAZ6A9tO8VK8RtKCsxEnOghxSvIcRoq25/eooKn\nFQvAiQ3c6OcCmu0SrUG5xHxeN0IcwO2LxvgT94qjnDpvlH3Dc2mzJZ2jOqnG\n79eZXx4auxEUBO9NBa2geGXsLh9AcNeT/1o+Mkabi1GMRXgI+LKGG2TOqeFt\nG6fKn3p1zBhHkV6c90MP6aPYoYzVywVEeEi5WiPLW/D4emeQHZ/ryJIRw2a2\nLS57+MHt2Gu9ChgIfMFe3Rf+vKTuVUrWXj/n6EADCxr/xUCvcrpmgqSCn34T\nDzer+SJEzQO55OyjIIh8EKArmR6zClg6QpMJrmgJkJbsAt1JzvzDyX9QMdaC\nakmh5cME+JKRmKmIavqeBK0NBQx39UwTelHXQgVBl79BtRXVSY/anNNpi1jd\nRX6r\r\n=PBLd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMp5Ngn8s+j+L1+xxddRT67euXfxymYaDtrqUQm97S/AiAYYnjIfa8rPeth6RVnG+2oKKswB43CVR6ySXUHHnkuIw=="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2019.4.9_1554779091668_0.2105376880192229"},"_hasShrinkwrap":false},"2019.8.1":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js"},"description":"the zero-dependency, swiss-army-knife utility for building, testing, and deploying webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=10.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"version":"2019.8.1","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2019.8.1","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-RdSM1Xg3C9ulyYJMUEkAW22PfEP4zmzXmRas8jsAhL1EzmoU4iGuakXQpclSPSTxJkDnQNUWKkORBC2E46K2aw==","shasum":"b9fc0ff176eef9a41c58efc83222730e46a25c6e","tarball":"https://registry.npmjs.org/busybox/-/busybox-2019.8.1.tgz","fileCount":20,"unpackedSize":3212340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRDlhCRA9TVsSAnZWagAAZawP/RrjC49ye5IBCZ30b2IN\nfn5KO9pZUzXh8CUg/Qo4Eq0vy6mb+b74Wbfzf9JpwqKqVKJ1ftxk3+rS5z7h\nC1Au08wTqlguSpbUOHK+fRriZocVJWp8st3wPmzcnZxGR61UKFeGRlZiNEtV\nOaVCC+fhyYf23ZuSuZr8vNuo+zDq1jkwiRiJO8p3WAp7Yjq+clv+VtlOMiZc\nzEQfeuBn1SkOlimlk2B6NmIeYkS26kqK/RH+o0ad0IzOjTKyL1yjRentOExm\naS1u/3tkCsbvyPMOBiHqGd77YpF/kojByOe7fU4xiZ9cZxQsofVRa/Tv+H+3\nV+3QIxxtABKQB1XlnramTWlHLLLGWU6/YwGCOKUbZbKNIgmWAl4MlWNdWSFx\ndNYrN3VpYMTmLE+P1PrPvbUTYQaH7LMCrwJ9IsCfbOmtv7nDTU6PC1hhGZf8\nwGBHN0lOrD3C+HdHQ7oxtww9/9rGqxV2dk/A0CVVLOd+ir+87tlAgNyh65eJ\n3jUPcgNMVecvZPRmK/yiMoto6wYebg6Q5329dibCrMhVs1Lq8Wu94Kwc10vz\nDO39anPXn9jcosFX5xisJ4SmvHFuX68o1xx87d8cJ6D2VkspsqtmecqDjLtL\nRhQ0cW8Y//k41BM4qmecftSyu8uEqpPPjnN97yLGsR3RKIUQpsGo4/YhuLC5\ndl04\r\n=LH8c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB8N8oOLKxYzCYGS9sBNqyr/F2iIEc/6C+YaLrfCGdvsAiBKI4XXdJ1YGBe3NY4zfRNUeLRbKxCuoWw0npx3EIETIQ=="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2019.8.1_1564752224730_0.8773211642959238"},"_hasShrinkwrap":false},"2019.8.11":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js"},"description":"this zero-dependency package will provide a collection of high-level functions to to build, test, and deploy webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=10.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"sh ./npm_scripts.sh","env":"env","eval":"sh ./npm_scripts.sh","heroku-postbuild":"sh ./npm_scripts.sh","postinstall":"sh ./npm_scripts.sh","start":"sh ./npm_scripts.sh","test":"sh ./npm_scripts.sh","utility2":"sh ./npm_scripts.sh"},"utility2Dependents":["2018.09.29 apidoc-lite","2018.12.30 db-lite","2019.01.21 github-crud","2019.01.30 bootstrap-lite","2019.02.20 swgg","2019.08.09 istanbul-lite","2019.08.10 jslint-lite","2019.08.01 utility2"],"version":"2019.8.11","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2019.8.11","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-4zYxn8hHLsXEZm4GH914mcJHxuxDxBDCJ6wv2d/gQ6Y+DedKra5E/HQDR0JZFs2HPlZlkjCXbJjvST8Qb5uVPg==","shasum":"f274092e93eb281a0f059386f5fa06ba2ea71547","tarball":"https://registry.npmjs.org/busybox/-/busybox-2019.8.11.tgz","fileCount":20,"unpackedSize":3957898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUFRHCRA9TVsSAnZWagAAwhEP/0nDcJwbIBb+mxgzwD0A\nk8gZLrIEx4gH55vsrginR1KyKasVED1eOrpZ2XW1MCvbSGQZUkLc4XstkvEK\nqcyXxSLgKQ+OhzW/AXdnJ9cejvFDSn32Mb+795VXvbOZXhsQYLOJMXMYYrko\n9Z/bsGB6mqBOzcM6QjxWPir5mEERenlIJHcqs36dxqpspGcXv910W2/5MEwO\nlPKiKfcWzrkRtnccyT/GyTHx9Cx1cXcf1Bd+geOXrhJF2fmkpH09BV3H4Cmt\nFuByh2D5qzGkb2H6VBBL/xx0IAWn6R9/RYjpiT94MiND9wvuxQTOaywBugCx\nX9+HjBnMWoU0IESHUr/MBXJtz5tvTimytFGkQXa/GyWH/aGrJlactiF1rUD1\n8AsYNq6xKAaJWPAocdm6YxDlW7ozn3+Kl9DU45OCsM9Cj9Whu6qUMTMNuCQd\nT7A+rreaRX8/S9Dlp/bt5YXrCmF3GZkiokBGLxErzfRAdJ2PaXF6sHMvL9/T\nvunT5xr1Ae8RyXgoxv7I6DpEuvu6U8BbnA4rbCINeFCYU+B4oVT7BOIDnMsg\nqu9mc1L4NcPrFGRXmDWsz75PnFeYstdiprXPqLUbXwZFAO04xACE51QFTuu/\nKW3fnLZDLXjOx32Sdc/P2C9Za+uuziIjkwcWqeAcKZeAkdjUsAEdnn1pts2l\nTxzu\r\n=3iP+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFTto5Jg/zT3ZE74UsD51mFRRYfxIm0/aPWz4Gmy/vgiAiEAjONQ6NjaJajHK+CzTJ1TwVEx1JgYuP3edgZkrmahaaI="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2019.8.11_1565545540483_0.8313607804458865"},"_hasShrinkwrap":false},"2019.8.12":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js"},"description":"this zero-dependency package will provide a collection of high-level functions to to build, test, and deploy webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=10.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"utility2Dependents":["2018.12.30 db-lite","2019.01.21 github-crud","2019.01.30 bootstrap-lite","2019.02.20 swgg","2019.08.09 istanbul-lite","2019.08.10 jslint-lite","2019.08.16 apidoc-lite","2019.08.01 utility2"],"version":"2019.8.12","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2019.8.12","_nodeVersion":"12.8.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-bgciLqhc0WAd8rbxSvqTefYZbSLkvktkkYO3GiLbuxqLH4tCVTfGO7x52pY5HvCuKNOaEKaAPIVjJ4+0gbGYqQ==","shasum":"76d2c998ad9b4bf752bf52d9420cc1f0c31ceb1b","tarball":"https://registry.npmjs.org/busybox/-/busybox-2019.8.12.tgz","fileCount":20,"unpackedSize":3959801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWEBzCRA9TVsSAnZWagAA588P/36XzLW68dPyT6Bq1U3F\nyRQ0Z9gFRBbj1GLqaiumvqvH2MC19uxoCW9eJd14BFBOqoIklAZzW++yiD7+\n1oqRDx9+EZv06ZD8B/atJmYEsXnffLUVEOC+lQ0FLBnOozkdJlDA36sbR+VS\nt+6jo/mN7BCRBjrao5yTbVZJUcNN7iBZtmGApbV0sPHN1GERTKQciiwD8IxU\nMPtkOETuCHf5I8bhgBoxUwSEklLnHhKRuyxqmTPfSKLVEA887NnafvRMNVlk\nPLbGoAP1JX3B7FTonClXoTbF6JLMaVAe0ryeUStG9WHvYFyBxZksgxXQMP3l\naFgMFP5nmTQ9Nbi8m8143Ov+nFHfN8z7JV++RK4xw+whhfR7fSXTEMCt4eDy\nyJc8tgh03uxs05+31mI3tKS9WoavmBUEUNZGB4q7eN6lv8dYoLFamjwDY8wn\n5tksbDsxMzShi1HKhL5l4786FczliEuSWPGXItWRUAMsCUKcZLTE4K9QnHa/\nLbhEf+OKogmThmjStz4LZwPEWTejGLRJRG+fxpsC2heKNCAdBjVA6SRQ2lPF\nINh+fqcdHe3Sc31chBTFZvLaQsoyOSjlDur4evxYXGHuJ2Eb3MUB2mNkaiLd\nRZZu96f2ahPPldwoxRKfANtFGJVdKkz0qz68GvhKD/ANyRoQgyONU2Shs7G/\nGq4e\r\n=ip8I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDY2Jk//ZEg93XzUbgmwncTl+tgcbtQXBF8+M8FCjjGoAIgODNFZ2dTEKI9kcASd/myhVmbOVTRptHubXNQAW30OhU="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2019.8.12_1566064754033_0.7378166271447482"},"_hasShrinkwrap":false},"2019.8.21":{"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bin":{"utility2":"lib.utility2.sh","utility2-apidoc":"lib.apidoc.js","utility2-db":"lib.db.js","utility2-github-crud":"lib.github_crud.js","utility2-istanbul":"lib.istanbul.js","utility2-jslint":"lib.jslint.js"},"description":"this zero-dependency package will provide a collection of high-level functions to to build, test, and deploy webapps","devDependencies":{"electron-lite":"github:kaizhu256/node-electron-lite#alpha"},"engines":{"node":">=10.0"},"homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"license":"MIT","main":"lib.utility2.js","name":"busybox","nameAliasPublish":"busybox npmtest-lite test-lite","nameLib":"utility2","nameOriginal":"utility2","os":["darwin","linux"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"scripts":{"build-ci":"./npm_scripts.sh","env":"env","eval":"./npm_scripts.sh","heroku-postbuild":"./npm_scripts.sh","postinstall":"./npm_scripts.sh","start":"./npm_scripts.sh","test":"./npm_scripts.sh","utility2":"./npm_scripts.sh"},"utility2Dependents":["2019.01.21 github-crud","2019.01.30 bootstrap-lite","2019.02.20 swgg","2019.08.09 istanbul-lite master","2019.08.10 jslint-lite master","2019.08.16 apidoc-lite master","2019.08.20 db-lite","2019.08.01 utility2"],"version":"2019.8.21","bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"_id":"busybox@2019.8.21","_nodeVersion":"12.9.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-iFqiuIr+unc8vyL1kmlxJOePugRmNmP2aqfq/WoRfuonG1beV1Rfz0iWYFWb86OpOSlRkQcLwVzR8i62lMg5Pg==","shasum":"21869b7fef2bae599418343197cbbecfd543fe77","tarball":"https://registry.npmjs.org/busybox/-/busybox-2019.8.21.tgz","fileCount":22,"unpackedSize":4755665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXtJ6CRA9TVsSAnZWagAAWHYP/jN2ezwJ7jnVizcYtOXp\n6xx+0kp7gBBN9gwPQr55dWroGlGNS+b1+y3HSVMOS7Pklzoqv6LeaHEGrO8Z\nxLtMc1fGj8gOj28BLVCFi2fizfE3AfpCJZXW1deickPdXwhBEPQMkGVSGmll\nf3UN32V6QJ8KocnjcMygc0rz0c3acngWhuXXvyIFXT3Nu9B0s0dKqgt6PRMY\n21y6cZIaoPl68w6SGYrNoeuU9XU2dYzyBdJhfNmrVhfiDO6nC6VdbB30yDQ7\nRN2j6P4V0tNwlpKLuOTAyzvdm7rq7CBvAuUtHqj90YwvvNcPzZ2LdajuWmlZ\n8tmEdGL5TrMht12cvaH51Kkf3WOBMqAaNFsUqXQe7MKHtpc9m75xO/brNEf2\nEuXVf7pK2bxL/yLwe0t5yGzb68ZeJTF/Kj0w+swGAEiCzmNIhPk7QR0BUz8L\nikHOoRZuvmV2p9f2yjIuGatwcVz6ywpAfSPexf51F/ZLPYS2cPROxIGO/bhL\nSUUNGVk9vq9jsIa5CIfNVqoVEKIOgQJAA6ZBcimROT+kelGvinSwsx/q345k\nPLHfMycIt3M8zLyktooYt3Xo3HTcN1M9fWFTL7FwBfFRoD1U+3dBMtjuxuTU\na5hr12rs4VfSA98AFqkN85cwnBPJgExSvf50XrTmkckqcdZJZ/l8S3DMV73Z\n/HiD\r\n=d2w3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhl84PGOYBk5i13PVhvzBlZrmpqi+2zh0pAM6HydUtjwIgUGH69r8ClC6+QFAvnviD7qxXMGWB53udQgWfcx0Qmu4="}]},"maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"_npmUser":{"name":"kaizhu","email":"kaizhu256@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/busybox_2019.8.21_1566495353896_0.817566992058844"},"_hasShrinkwrap":false}},"readme":"# utility2\nthis zero-dependency package will provide a collection of high-level functions to to build, test, and deploy webapps\n\n# live web demo\n- [https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/app](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/app/)\n\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/app/)\n\n\n\n[![travis-ci.org build-status](https://api.travis-ci.org/kaizhu256/node-utility2.svg)](https://travis-ci.org/kaizhu256/node-utility2) [![coverage](https://kaizhu256.github.io/node-utility2/build/coverage.badge.svg)](https://kaizhu256.github.io/node-utility2/build/coverage.html/index.html)\n\n[![NPM](https://nodei.co/npm/utility2.png?downloads=true)](https://www.npmjs.com/package/utility2)\n\n[![build commit status](https://kaizhu256.github.io/node-utility2/build/build.badge.svg)](https://travis-ci.org/kaizhu256/node-utility2)\n\n| git-branch : | [master](https://github.com/kaizhu256/node-utility2/tree/master) | [beta](https://github.com/kaizhu256/node-utility2/tree/beta) | [alpha](https://github.com/kaizhu256/node-utility2/tree/alpha)|\n|--:|:--|:--|:--|\n| test-server-github : | [![github.com test-server](https://kaizhu256.github.io/node-utility2/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-utility2/build..master..travis-ci.org/app) | [![github.com test-server](https://kaizhu256.github.io/node-utility2/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/app) | [![github.com test-server](https://kaizhu256.github.io/node-utility2/GitHub-Mark-32px.png)](https://kaizhu256.github.io/node-utility2/build..alpha..travis-ci.org/app)|\n| test-server-heroku : | [![heroku.com test-server](https://kaizhu256.github.io/node-utility2/heroku-logo.75x25.png)](https://h1-utility2-master.herokuapp.com) | [![heroku.com test-server](https://kaizhu256.github.io/node-utility2/heroku-logo.75x25.png)](https://h1-utility2-beta.herokuapp.com) | [![heroku.com test-server](https://kaizhu256.github.io/node-utility2/heroku-logo.75x25.png)](https://h1-utility2-alpha.herokuapp.com)|\n| test-report : | [![test-report](https://kaizhu256.github.io/node-utility2/build..master..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-utility2/build..master..travis-ci.org/test-report.html) | [![test-report](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/test-report.html) | [![test-report](https://kaizhu256.github.io/node-utility2/build..alpha..travis-ci.org/test-report.badge.svg)](https://kaizhu256.github.io/node-utility2/build..alpha..travis-ci.org/test-report.html)|\n| coverage : | [![coverage](https://kaizhu256.github.io/node-utility2/build..master..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-utility2/build..master..travis-ci.org/coverage.html/index.html) | [![coverage](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/coverage.html/index.html) | [![coverage](https://kaizhu256.github.io/node-utility2/build..alpha..travis-ci.org/coverage.badge.svg)](https://kaizhu256.github.io/node-utility2/build..alpha..travis-ci.org/coverage.html/index.html)|\n| build-artifacts : | [![build-artifacts](https://kaizhu256.github.io/node-utility2/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-utility2/tree/gh-pages/build..master..travis-ci.org) | [![build-artifacts](https://kaizhu256.github.io/node-utility2/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-utility2/tree/gh-pages/build..beta..travis-ci.org) | [![build-artifacts](https://kaizhu256.github.io/node-utility2/glyphicons_144_folder_open.png)](https://github.com/kaizhu256/node-utility2/tree/gh-pages/build..alpha..travis-ci.org)|\n\n[![npmPackageListing](https://kaizhu256.github.io/node-utility2/build/screenshot.npmPackageListing.svg)](https://github.com/kaizhu256/node-utility2)\n\n![npmPackageDependencyTree](https://kaizhu256.github.io/node-utility2/build/screenshot.npmPackageDependencyTree.svg)\n\n\n\n# table of contents\n1. [cdn download](#cdn-download)\n1. [documentation](#documentation)\n1. [quickstart standalone app](#quickstart-standalone-app)\n1. [quickstart example.js](#quickstart-examplejs)\n1. [extra screenshots](#extra-screenshots)\n1. [package.json](#packagejson)\n1. [changelog of last 50 commits](#changelog-of-last-50-commits)\n1. [internal build script](#internal-build-script)\n1. [misc](#misc)\n\n\n\n# cdn download\n- [https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/app/assets.utility2.rollup.js](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/app/assets.utility2.rollup.js)\n\n\n\n# documentation\n#### cli help\n![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.npmPackageCliHelp.svg)\n\n#### api doc\n- [https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/apidoc.html](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/apidoc.html)\n\n[![apidoc](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/apidoc.html)\n\n#### todo\n- jslint - remove ternary-operator/newline comment preceding bra\n- migrate browser-testing from electron to headless-chromium\n- rename var value to val\n- replace uglifyjs-lite with terser-lite (v2.8.29)\n- jslint - remove bad_property_a and unexpected_a hacks\n- jslint - sort nested switch-statements\n- add default testCase _testCase_cliRun_help\n- merge class _http.IncomingMessage -> _http.ServerResponse\n- integrate db-lite and github-crud into a cloud-based db on github\n- add server stress-test using puppeteer\n- none\n\n#### changelog 2019.8.21\n- npm publish 2019.8.21\n- jslint - remove allow-method-chain-newline hack\n- jslint - remove autofix - autofix-js-braket - remove leading-whitespace from bra\n- jslint - internalize hacks to function warn_at_extra\n- jslint - unhack const, let from var\n- jslint - upgrade to jslint edition 2019.8.3\n- jslint - add async/await support\n- jslint - remove autofix-js-whitespace - ...}()); to ...}());\\n\\n\\n\\n\n- rename coverage-hack to hack-istanbul, gotoNext to gotoNext, gotoState to gotoState, jslint-hack to hack-jslint\n- istanbul - add cli-command report\n- add files lib.puppeteer.js, raw.puppeteer.js\n- istanbul - fix pragma-istanbul-ignore in acorn\n- none\n\n#### this package requires\n- darwin or linux os\n\n\n\n# quickstart standalone app\n#### to run this example, follow instruction in script below\n- [assets.app.js](https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/app/assets.app.js)\n```shell\n# example.sh\n\n# this shell script will download and run a web-demo of utility2 as a standalone app\n\n# 1. download standalone app\ncurl -O https://kaizhu256.github.io/node-utility2/build..beta..travis-ci.org/app/assets.app.js\n# 2. run standalone app\nPORT=8081 node ./assets.app.js\n# 3. open a browser to http://127.0.0.1:8081 and play with web-demo\n# 4. edit file assets.app.js to suit your needs\n```\n\n#### output from browser\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleSh.browser.%252F.png)](https://kaizhu256.github.io/node-utility2/build/app/assets.example.html)\n\n#### output from shell\n![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleSh.svg)\n\n\n\n# quickstart example.js\n![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleJs.browser.%252Ftmp%252Fapp%252Ftmp%252Fbuild%252Ftest-report.html.png)\n\n#### to run this example, follow the instruction in the script below\n- [example.js](https://kaizhu256.github.io/node-utility2/build/example.js)\n```javascript\n/*\nexample.js\n\nthis script will demo automated browser-tests with coverage\n(via electron and istanbul)\n\ninstruction\n    1. save this script as example.js\n    2. run the shell-command:\n        $ npm install utility2 electron-lite && \\\n            PATH=\"$(pwd)/node_modules/.bin:$PATH\" \\\n            PORT=8081 \\\n            npm_config_mode_coverage=utility2 \\\n            node_modules/.bin/utility2 test example.js\n    3. view test-report in ./tmp/build/test-report.html\n    4. view coverage in ./tmp/build/coverage.html/index.html\n*/\n\n\n\n/* istanbul instrument in package utility2 */\n/* istanbul ignore next */\n/* jslint utility2:true */\n(function (globalThis) {\n    \"use strict\";\n    var consoleError;\n    var local;\n    // init globalThis\n    (function () {\n        try {\n            globalThis = Function(\"return this\")(); // jslint ignore:line\n        } catch (ignore) {}\n    }());\n    globalThis.globalThis = globalThis;\n    // init debug_inline\n    if (!globalThis[\"debug\\u0049nline\"]) {\n        consoleError = console.error;\n        globalThis[\"debug\\u0049nline\"] = function () {\n        /*\n         * this function will both print <arguments> to stderr\n         * and return <arguments>[0]\n         */\n            var argList;\n            argList = Array.from(arguments); // jslint ignore:line\n            // debug arguments\n            globalThis[\"debug\\u0049nlineArguments\"] = argList;\n            consoleError(\"\\n\\ndebug\\u0049nline\");\n            consoleError.apply(console, argList);\n            consoleError(\"\\n\");\n            // return arg0 for inspection\n            return argList[0];\n        };\n    }\n    // init local\n    local = {};\n    local.local = local;\n    globalThis.globalLocal = local;\n    // init isBrowser\n    local.isBrowser = (\n        typeof window === \"object\"\n        && window === globalThis\n        && typeof window.XMLHttpRequest === \"function\"\n        && window.document\n        && typeof window.document.querySelector === \"function\"\n    );\n    // init function\n    local.assertThrow = function (passed, message) {\n    /*\n     * this function will throw err.<message> if <passed> is falsy\n     */\n        var err;\n        if (passed) {\n            return;\n        }\n        err = (\n            // ternary-operator\n            (\n                message\n                && typeof message.message === \"string\"\n                && typeof message.stack === \"string\"\n            )\n            // if message is errObj, then leave as is\n            ? message\n            : new Error(\n                typeof message === \"string\"\n                // if message is a string, then leave as is\n                ? message\n                // else JSON.stringify message\n                : JSON.stringify(message, null, 4)\n            )\n        );\n        throw err;\n    };\n    local.functionOrNop = function (fnc) {\n    /*\n     * this function will if <fnc> exists,\n     * them return <fnc>,\n     * else return <nop>\n     */\n        return fnc || local.nop;\n    };\n    local.identity = function (value) {\n    /*\n     * this function will return <value>\n     */\n        return value;\n    };\n    local.nop = function () {\n    /*\n     * this function will do nothing\n     */\n        return;\n    };\n    local.objectAssignDefault = function (target, source) {\n    /*\n     * this function will if items from <target> are\n     * null, undefined, or empty-string,\n     * then overwrite them with items from <source>\n     */\n        target = target || {};\n        Object.keys(source || {}).forEach(function (key) {\n            if (\n                target[key] === null\n                || target[key] === undefined\n                || target[key] === \"\"\n            ) {\n                target[key] = target[key] || source[key];\n            }\n        });\n        return target;\n    };\n    // require builtin\n    if (!local.isBrowser) {\n        local.assert = require(\"assert\");\n        local.buffer = require(\"buffer\");\n        local.child_process = require(\"child_process\");\n        local.cluster = require(\"cluster\");\n        local.crypto = require(\"crypto\");\n        local.dgram = require(\"dgram\");\n        local.dns = require(\"dns\");\n        local.domain = require(\"domain\");\n        local.events = require(\"events\");\n        local.fs = require(\"fs\");\n        local.http = require(\"http\");\n        local.https = require(\"https\");\n        local.net = require(\"net\");\n        local.os = require(\"os\");\n        local.path = require(\"path\");\n        local.querystring = require(\"querystring\");\n        local.readline = require(\"readline\");\n        local.repl = require(\"repl\");\n        local.stream = require(\"stream\");\n        local.string_decoder = require(\"string_decoder\");\n        local.timers = require(\"timers\");\n        local.tls = require(\"tls\");\n        local.tty = require(\"tty\");\n        local.url = require(\"url\");\n        local.util = require(\"util\");\n        local.vm = require(\"vm\");\n        local.zlib = require(\"zlib\");\n    }\n}(this));\n\n\n\n(function (local) {\n\"use strict\";\n\n\n\n// run shared js-env code - init-before\n(function () {\n// init local\nlocal = (\n    globalThis.utility2_rollup\n    || globalThis.utility2_utility2\n    || require(\"utility2\")\n);\n// init exports\nglobalThis.local = local;\n// run test-server\nlocal.testRunServer(local);\n// init assets\nlocal.assetsDict[\"/assets.hello.txt\"] = \"hello \\ud83d\\ude01\\n\";\nlocal.assetsDict[\"/assets.index.template.html\"] = \"\";\n}());\n\n\n\n// run shared js-env code - function\n(function () {\nlocal.testCase_ajax_200 = function (opt, onError) {\n/*\n * this function will test ajax's \"200 ok\" handling-behavior\n */\n    if (!local.isBrowser) {\n        onError(null, opt);\n        return;\n    }\n    opt = {};\n    // test ajax-path \"assets.hello.txt\"\n    local.ajax({\n        url: \"assets.hello.txt\"\n    }, function (err, xhr) {\n        local.tryCatchOnError(function () {\n            // validate no err occurred\n            local.assertThrow(!err, err);\n            // validate data\n            opt.data = xhr.responseText;\n            local.assertThrow(\n                opt.data === \"hello \\ud83d\\ude01\\n\",\n                opt.data\n            );\n            onError();\n        }, onError);\n    });\n};\n\nlocal.testCase_ajax_404 = function (opt, onError) {\n/*\n * this function will test ajax's \"404 not found\" handling-behavior\n */\n    if (!local.isBrowser) {\n        onError(null, opt);\n        return;\n    }\n    opt = {};\n    // test ajax-path \"/undefined\"\n    local.ajax({\n        url: \"/undefined\"\n    }, function (err) {\n        local.tryCatchOnError(function () {\n            // validate err occurred\n            local.assertThrow(err, err);\n            opt.statusCode = err.statusCode;\n            // validate 404 http statusCode\n            local.assertThrow(opt.statusCode === 404, opt.statusCode);\n            onError();\n        }, onError);\n    });\n};\n\nlocal.testCase_webpage_default = function (opt, onError) {\n/*\n * this function will test webpage's default handling-behavior\n */\n    if (local.isBrowser) {\n        onError(null, opt);\n        return;\n    }\n    opt = {\n        modeCoverageMerge: true,\n        url: local.serverLocalHost + \"?modeTest=1\"\n    };\n    local.browserTest(opt, onError);\n};\n}());\n\n\n\n/* istanbul ignore next */\n// run browser js-env code - init-test\n(function () {\nif (!local.isBrowser) {\n    return;\n}\n// log stderr and stdout to #outputStdout1\n[\"error\", \"log\"].forEach(function (key) {\n    var argList;\n    var elem;\n    var fnc;\n    elem = document.querySelector(\n        \"#outputStdout1\"\n    );\n    if (!elem) {\n        return;\n    }\n    fnc = console[key];\n    console[key] = function () {\n        argList = Array.from(arguments); // jslint ignore:line\n        fnc.apply(console, argList);\n        // append text to #outputStdout1\n        elem.textContent += argList.map(function (arg) {\n            return (\n                typeof arg === \"string\"\n                ? arg\n                : JSON.stringify(arg, null, 4)\n            );\n        }).join(\" \").replace((\n            /\\u001b\\[\\d*m/g\n        ), \"\") + \"\\n\";\n        // scroll textarea to bottom\n        elem.scrollTop = elem.scrollHeight;\n    };\n});\nlocal.objectAssignDefault(local, globalThis.domOnEventDelegateDict);\nglobalThis.domOnEventDelegateDict = local;\nlocal.onEventDomDb = local.db && local.db.onEventDomDb;\nlocal.testRunBrowser = function (evt) {\n/*\n * this function will run browser-tests\n */\n    switch (\n        !evt.ctrlKey\n        && !evt.metaKey\n        && (\n            evt.modeInit\n            || (evt.type + \".\" + (evt.target && evt.target.id))\n        )\n    ) {\n    // custom-case\n    case \"click.jslintAutofixButton1\":\n    case \"keydown.inputTextarea1\":\n    case true:\n        globalThis.domOnEventDelegateDict.domOnEventResetOutput();\n        // jslint #inputTextarea1\n        local.jslint.jslintAndPrint(\n            document.querySelector(\"#inputTextarea1\").value,\n            \"inputTextarea1.js\",\n            {\n                autofix: (\n                    evt\n                    && evt.currentTarget\n                    && evt.currentTarget.id === \"jslintAutofixButton1\"\n                ),\n                conditional: true\n            }\n        );\n        if (local.jslint.jslintResult.autofix) {\n            document.querySelector(\"#inputTextarea1\").value = (\n                local.jslint.jslintResult.code\n            );\n        }\n        document.querySelector(\"#outputJslintPre1\").textContent = (\n            local.jslint.jslintResult.errText\n        ).replace((\n            /\\u001b\\[\\d*m/g\n        ), \"\").trim();\n        // try to cleanup __coverage__\n        try {\n            delete globalThis.__coverage__[\"/inputTextarea1.js\"];\n        } catch (ignore) {}\n        // try to cover and eval #inputTextarea1\n        try {\n            document.querySelector(\"#outputCode1\").textContent = (\n                local.istanbul.instrumentSync(\n                    document.querySelector(\"#inputTextarea1\").value,\n                    \"/inputTextarea1.js\"\n                )\n            );\n            eval( // jslint ignore:line\n                document.querySelector(\"#outputCode1\").textContent\n            );\n            document.querySelector(\"#coverageReportDiv1\").innerHTML = (\n                local.istanbul.coverageReportCreate({\n                    coverage: globalThis.__coverage__\n                })\n            );\n        } catch (errCaught) {\n            console.error(errCaught);\n        }\n        return;\n    case \"click.testRunButton1\":\n        local.modeTest = 1;\n        local.testRunDefault(local);\n        return;\n    // run browser-tests\n    default:\n        if (\n            (evt.target && evt.target.id) !== \"testRunButton1\"\n            && !(evt.modeInit && (\n                /\\bmodeTest=1\\b/\n            ).test(location.search))\n        ) {\n            return;\n        }\n        // show browser-tests\n        if (document.querySelector(\n            \"#testReportDiv1\"\n        ).style.maxHeight === \"0px\") {\n            globalThis.domOnEventDelegateDict.domOnEventResetOutput();\n            local.uiAnimateSlideDown(document.querySelector(\n                \"#testReportDiv1\"\n            ));\n            document.querySelector(\n                \"#testRunButton1\"\n            ).textContent = \"hide internal test\";\n            local.modeTest = 1;\n            local.testRunDefault(local);\n            return;\n        }\n        // hide browser-tests\n        local.uiAnimateSlideUp(document.querySelector(\n            \"#testReportDiv1\"\n        ));\n        document.querySelector(\n            \"#testRunButton1\"\n        ).textContent = \"run internal test\";\n    }\n};\n\nlocal.testRunBrowser({\n    modeInit: true\n});\n}());\n\n\n\n/* istanbul ignore next */\n// run node js-env code - init-test\n(function () {\nif (local.isBrowser) {\n    return;\n}\n// init exports\nmodule.exports = local;\n/* validateLineSortedReset */\n// init assets\nlocal.assetsDict = local.assetsDict || {};\n[\n    \"assets.index.template.html\",\n    \"assets.swgg.swagger.json\",\n    \"assets.swgg.swagger.server.json\"\n].forEach(function (file) {\n    file = \"/\" + file;\n    local.assetsDict[file] = local.assetsDict[file] || \"\";\n    if (local.fs.existsSync(local.__dirname + file)) {\n        local.assetsDict[file] = local.fs.readFileSync(\n            local.__dirname + file,\n            \"utf8\"\n        );\n    }\n});\n/* jslint ignore:start */\nlocal.assetsDict[\"/assets.index.template.html\"] = '\\\n<!doctype html>\\n\\\n<html lang=\"en\">\\n\\\n<head>\\n\\\n<meta charset=\"utf-8\">\\n\\\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\\n\\\n<!-- \"assets.utility2.template.html\" -->\\n\\\n<title>{{env.npm_package_name}} ({{env.npm_package_version}})</title>\\n\\\n<style>\\n\\\n/* jslint utility2:true */\\n\\\n/*csslint\\n\\\n*/\\n\\\n/* csslint ignore:start */\\n\\\n*,\\n\\\n*:after,\\n\\\n*:before {\\n\\\n    box-sizing: border-box;\\n\\\n}\\n\\\n/* csslint ignore:end */\\n\\\n@keyframes uiAnimateShake {\\n\\\n0%,\\n\\\n50% {\\n\\\n    transform: translateX(10px);\\n\\\n}\\n\\\n100% {\\n\\\n    transform: translateX(0);\\n\\\n}\\n\\\n25%,\\n\\\n75% {\\n\\\n    transform: translateX(-10px);\\n\\\n}\\n\\\n}\\n\\\n@keyframes uiAnimateSpin {\\n\\\n0% {\\n\\\n    transform: rotate(0deg);\\n\\\n}\\n\\\n100% {\\n\\\n    transform: rotate(360deg);\\n\\\n}\\n\\\n}\\n\\\na {\\n\\\n    overflow-wrap: break-word;\\n\\\n}\\n\\\nbody {\\n\\\n    background: #eef;\\n\\\n    font-family: Arial, Helvetica, sans-serif;\\n\\\n    font-size: small;\\n\\\n    margin: 0 40px;\\n\\\n}\\n\\\nbody > div,\\n\\\nbody > form > div,\\n\\\nbody > form > input,\\n\\\nbody > form > pre,\\n\\\nbody > form > .button,\\n\\\nbody > form > .textarea,\\n\\\nbody > input,\\n\\\nbody > pre,\\n\\\nbody > .button,\\n\\\nbody > .textarea {\\n\\\n    margin-bottom: 20px;\\n\\\n    margin-top: 0;\\n\\\n}\\n\\\nbody > form > input,\\n\\\nbody > form > .button,\\n\\\nbody > input,\\n\\\nbody > .button {\\n\\\n    width: 20rem;\\n\\\n}\\n\\\nbody > form > .textarea,\\n\\\nbody > .textarea {\\n\\\n    height: 10rem;\\n\\\n    width: 100%;\\n\\\n}\\n\\\nbody > .readonly {\\n\\\n    background: #ddd;\\n\\\n}\\n\\\ncode,\\n\\\npre,\\n\\\n.textarea {\\n\\\n    font-family: Consolas, Menlo, monospace;\\n\\\n    font-size: smaller;\\n\\\n}\\n\\\npre {\\n\\\n    overflow-wrap: break-word;\\n\\\n    white-space: pre-wrap;\\n\\\n}\\n\\\n.button {\\n\\\n    background: #ddd;\\n\\\n    border: 1px solid #999;\\n\\\n    color: #000;\\n\\\n    cursor: pointer;\\n\\\n    display: inline-block;\\n\\\n    padding: 2px 5px;\\n\\\n    text-align: center;\\n\\\n    text-decoration: none;\\n\\\n}\\n\\\n.button:hover {\\n\\\n    background: #bbb;\\n\\\n}\\n\\\n.colorError {\\n\\\n    color: #d00;\\n\\\n}\\n\\\n.textarea {\\n\\\n    background: #fff;\\n\\\n    border: 1px solid #999;\\n\\\n    border-radius: 0;\\n\\\n    cursor: auto;\\n\\\n    overflow: auto;\\n\\\n    padding: 2px;\\n\\\n}\\n\\\n.uiAnimateShake {\\n\\\n    animation-duration: 500ms;\\n\\\n    animation-name: uiAnimateShake;\\n\\\n}\\n\\\n.uiAnimateSlide {\\n\\\n    overflow-y: hidden;\\n\\\n    transition: max-height ease-in 250ms, min-height ease-in 250ms, padding-bottom ease-in 250ms, padding-top ease-in 250ms;\\n\\\n}\\n\\\n.utility2FooterDiv {\\n\\\n    text-align: center;\\n\\\n}\\n\\\n.zeroPixel {\\n\\\n    border: 0;\\n\\\n    height: 0;\\n\\\n    margin: 0;\\n\\\n    padding: 0;\\n\\\n    width: 0;\\n\\\n}\\n\\\n</style>\\n\\\n</head>\\n\\\n<body>\\n\\\n<div id=\"ajaxProgressDiv1\" style=\"background: #d00; height: 2px; left: 0; margin: 0; padding: 0; position: fixed; top: 0; transition: background 500ms, width 1500ms; width: 0%; z-index: 1;\"></div>\\n\\\n<div class=\"uiAnimateSpin\" style=\"animation: uiAnimateSpin 2s linear infinite; border: 5px solid #999; border-radius: 50%; border-top: 5px solid #7d7; display: none; height: 25px; vertical-align: middle; width: 25px;\"></div>\\n\\\n<a class=\"zeroPixel\" download=\"db.persistence.json\" href=\"\" id=\"dbExportA1\"></a>\\n\\\n<input class=\"zeroPixel\" data-onevent=\"onEventDomDb\" data-onevent-db=\"dbImportInput\" type=\"file\">\\n\\\n<script>\\n\\\n/* jslint utility2:true */\\n\\\n// init domOnEventWindowOnloadTimeElapsed\\n\\\n(function () {\\n\\\n/*\\n\\\n * this function will measure and print time-elapsed for window.onload\\n\\\n */\\n\\\n    \"use strict\";\\n\\\n    if (window.domOnEventWindowOnloadTimeElapsed) {\\n\\\n        return;\\n\\\n    }\\n\\\n    window.domOnEventWindowOnloadTimeElapsed = Date.now() + 100;\\n\\\n    window.addEventListener(\"load\", function () {\\n\\\n        setTimeout(function () {\\n\\\n            window.domOnEventWindowOnloadTimeElapsed = (\\n\\\n                Date.now()\\n\\\n                - window.domOnEventWindowOnloadTimeElapsed\\n\\\n            );\\n\\\n            console.error(\\n\\\n                \"domOnEventWindowOnloadTimeElapsed = \"\\n\\\n                + window.domOnEventWindowOnloadTimeElapsed\\n\\\n            );\\n\\\n        }, 100);\\n\\\n    });\\n\\\n}());\\n\\\n\\n\\\n\\n\\\n\\n\\\n// init domOnEventDelegateDict\\n\\\n(function () {\\n\\\n/*\\n\\\n * this function will handle delegated dom-event\\n\\\n */\\n\\\n    \"use strict\";\\n\\\n    var timerTimeoutDict;\\n\\\n    if (window.domOnEventDelegateDict) {\\n\\\n        return;\\n\\\n    }\\n\\\n    window.domOnEventDelegateDict = {};\\n\\\n    timerTimeoutDict = {};\\n\\\n    window.domOnEventDelegateDict.domOnEventDelegate = function (evt) {\\n\\\n        evt.targetOnEvent = evt.target.closest(\\n\\\n            \"[data-onevent]\"\\n\\\n        );\\n\\\n        if (\\n\\\n            !evt.targetOnEvent\\n\\\n            || evt.targetOnEvent.dataset.onevent === \"domOnEventNop\"\\n\\\n            || evt.target.closest(\\n\\\n                \".disabled, .readonly\"\\n\\\n            )\\n\\\n        ) {\\n\\\n            return;\\n\\\n        }\\n\\\n        // rate-limit high-frequency-event\\n\\\n        switch (evt.type) {\\n\\\n        case \"keydown\":\\n\\\n        case \"keyup\":\\n\\\n            // filter non-input keyboard-event\\n\\\n            if (!evt.target.closest(\\n\\\n                \"input, option, select, textarea\"\\n\\\n            )) {\\n\\\n                return;\\n\\\n            }\\n\\\n            if (timerTimeoutDict[evt.type] !== true) {\\n\\\n                timerTimeoutDict[evt.type] = timerTimeoutDict[\\n\\\n                    evt.type\\n\\\n                ] || setTimeout(function () {\\n\\\n                    timerTimeoutDict[evt.type] = true;\\n\\\n                    window.domOnEventDelegateDict.domOnEventDelegate(evt);\\n\\\n                }, 50);\\n\\\n                return;\\n\\\n            }\\n\\\n            timerTimeoutDict[evt.type] = null;\\n\\\n            break;\\n\\\n        }\\n\\\n        switch (evt.targetOnEvent.tagName) {\\n\\\n        case \"BUTTON\":\\n\\\n        case \"FORM\":\\n\\\n            evt.preventDefault();\\n\\\n            break;\\n\\\n        }\\n\\\n        evt.stopPropagation();\\n\\\n        window.domOnEventDelegateDict[evt.targetOnEvent.dataset.onevent](\\n\\\n            evt\\n\\\n        );\\n\\\n    };\\n\\\n    window.domOnEventDelegateDict.domOnEventResetOutput = function () {\\n\\\n        document.querySelectorAll(\\n\\\n            \".onevent-reset-output\"\\n\\\n        ).forEach(function (elem) {\\n\\\n            switch (elem.tagName) {\\n\\\n            case \"INPUT\":\\n\\\n            case \"TEXTAREA\":\\n\\\n                elem.value = \"\";\\n\\\n                break;\\n\\\n            case \"PRE\":\\n\\\n                elem.textContent = \"\";\\n\\\n                break;\\n\\\n            default:\\n\\\n                elem.innerHTML = \"\";\\n\\\n            }\\n\\\n        });\\n\\\n    };\\n\\\n    // init event-handling\\n\\\n    [\\n\\\n        \"change\",\\n\\\n        \"click\",\\n\\\n        \"keydown\",\\n\\\n        \"submit\"\\n\\\n    ].forEach(function (eventType) {\\n\\\n        document.addEventListener(\\n\\\n            eventType,\\n\\\n            window.domOnEventDelegateDict.domOnEventDelegate\\n\\\n        );\\n\\\n    });\\n\\\n}());\\n\\\n\\n\\\n\\n\\\n\\n\\\n// init timerIntervalAjaxProgressUpdate\\n\\\n(function () {\\n\\\n/*\\n\\\n * this function will increment ajax-progress-bar\\n\\\n * until webpage has loaded\\n\\\n */\\n\\\n    \"use strict\";\\n\\\n    var ajaxProgressDiv1;\\n\\\n    var ajaxProgressState;\\n\\\n    var ajaxProgressUpdate;\\n\\\n    if (\\n\\\n        window.timerIntervalAjaxProgressUpdate\\n\\\n        || !document.querySelector(\\n\\\n            \"#ajaxProgressDiv1\"\\n\\\n        )\\n\\\n    ) {\\n\\\n        return;\\n\\\n    }\\n\\\n    ajaxProgressDiv1 = document.querySelector(\\n\\\n        \"#ajaxProgressDiv1\"\\n\\\n    );\\n\\\n    setTimeout(function () {\\n\\\n        ajaxProgressDiv1.style.width = \"25%\";\\n\\\n    });\\n\\\n    ajaxProgressState = 0;\\n\\\n    ajaxProgressUpdate = (\\n\\\n        window.local\\n\\\n        && window.local.ajaxProgressUpdate\\n\\\n    ) || function () {\\n\\\n        ajaxProgressDiv1.style.width = \"100%\";\\n\\\n        setTimeout(function () {\\n\\\n            ajaxProgressDiv1.style.background = \"transparent\";\\n\\\n            setTimeout(function () {\\n\\\n                ajaxProgressDiv1.style.width = \"0%\";\\n\\\n            }, 500);\\n\\\n        }, 1000);\\n\\\n    };\\n\\\n    window.timerIntervalAjaxProgressUpdate = setInterval(function () {\\n\\\n        ajaxProgressState += 1;\\n\\\n        ajaxProgressDiv1.style.width = Math.max(\\n\\\n            100 - 75 * Math.exp(-0.125 * ajaxProgressState),\\n\\\n            ajaxProgressDiv1.style.width.slice(0, -1) | 0\\n\\\n        ) + \"%\";\\n\\\n    }, 1000);\\n\\\n    window.addEventListener(\"load\", function () {\\n\\\n        clearInterval(window.timerIntervalAjaxProgressUpdate);\\n\\\n        ajaxProgressUpdate();\\n\\\n    });\\n\\\n}());\\n\\\n\\n\\\n\\n\\\n\\n\\\n// init domOnEventSelectAllWithinPre\\n\\\n(function () {\\n\\\n/*\\n\\\n * this function will limit select-all within <pre tabIndex=\"0\"> elements\\n\\\n * https://stackoverflow.com/questions/985272/selecting-text-in-an-element-akin-to-highlighting-with-your-mouse\\n\\\n */\\n\\\n    \"use strict\";\\n\\\n    if (window.domOnEventSelectAllWithinPre) {\\n\\\n        return;\\n\\\n    }\\n\\\n    window.domOnEventSelectAllWithinPre = function (evt) {\\n\\\n        var range;\\n\\\n        var selection;\\n\\\n        if (\\n\\\n            evt\\n\\\n            && evt.key === \"a\"\\n\\\n            && (evt.ctrlKey || evt.metaKey)\\n\\\n            && evt.target.closest(\\n\\\n                \"pre\"\\n\\\n            )\\n\\\n        ) {\\n\\\n            range = document.createRange();\\n\\\n            range.selectNodeContents(evt.target.closest(\\n\\\n                \"pre\"\\n\\\n            ));\\n\\\n            selection = window.getSelection();\\n\\\n            selection.removeAllRanges();\\n\\\n            selection.addRange(range);\\n\\\n            evt.preventDefault();\\n\\\n        }\\n\\\n    };\\n\\\n    // init event-handling\\n\\\n    document.addEventListener(\\n\\\n        \"keydown\",\\n\\\n        window.domOnEventSelectAllWithinPre\\n\\\n    );\\n\\\n}());\\n\\\n</script>\\n\\\n<h1>\\n\\\n<!-- utility2-comment\\n\\\n    <a\\n\\\n        {{#if env.npm_package_homepage}}\\n\\\n        href=\"{{env.npm_package_homepage}}\"\\n\\\n        {{/if env.npm_package_homepage}}\\n\\\n        target=\"_blank\"\\n\\\n    >\\n\\\nutility2-comment -->\\n\\\n        {{env.npm_package_name}} ({{env.npm_package_version}})\\n\\\n<!-- utility2-comment\\n\\\n    </a>\\n\\\nutility2-comment -->\\n\\\n</h1>\\n\\\n<h3>{{env.npm_package_description}}</h3>\\n\\\n<!-- utility2-comment\\n\\\n<a class=\"button\" download href=\"assets.app.js\">download standalone app</a><br>\\n\\\n<button class=\"button\" data-onevent=\"testRunBrowser\" id=\"testRunButton1\">run internal test</button><br>\\n\\\nutility2-comment -->\\n\\\n\\n\\\n\\n\\\n\\n\\\n<label>edit or paste script below to cover and test</label>\\n\\\n<textarea class=\"textarea\" data-onevent=\"testRunBrowser\" id=\"inputTextarea1\">\\n\\\n// remove comment below to disable jslint\\n\\\n/*jslint browser, devel*/\\n\\\n/*global window*/\\n\\\n(function () {\\n\\\n    \"use strict\";\\n\\\n    var testCaseDict;\\n\\\n    testCaseDict = {};\\n\\\n    testCaseDict.modeTest = 1;\\n\\\n\\n\\\n    // comment this testCase to disable failed error demo\\n\\\n    testCaseDict.testCase_failed_error_demo = function (opt, onError) {\\n\\\n    /*\\n\\\n     * this function will run a failed error demo\\n\\\n     */\\n\\\n        // hack-jslint\\n\\\n        window.utility2.nop(opt);\\n\\\n        onError(new Error(\"this is a failed error demo\"));\\n\\\n    };\\n\\\n\\n\\\n    testCaseDict.testCase_passed_ajax_demo = function (opt, onError) {\\n\\\n    /*\\n\\\n     * this function will demo a passed ajax test\\n\\\n     */\\n\\\n        var data;\\n\\\n        opt = {url: \"/\"};\\n\\\n        // test ajax-req for main-page \"/\"\\n\\\n        window.utility2.ajax(opt, function (err, xhr) {\\n\\\n            try {\\n\\\n                // validate no err occurred\\n\\\n                console.assert(!err, err);\\n\\\n                // validate \"200 ok\" status\\n\\\n                console.assert(xhr.statusCode === 200, xhr.statusCode);\\n\\\n                // validate non-empty data\\n\\\n                data = xhr.responseText;\\n\\\n                console.assert(data && data.length > 0, data);\\n\\\n                onError();\\n\\\n            } catch (errCaught) {\\n\\\n                onError(errCaught);\\n\\\n            }\\n\\\n        });\\n\\\n    };\\n\\\n\\n\\\n    window.utility2.testRunDefault(testCaseDict);\\n\\\n}());\\n\\\n</textarea>\\n\\\n<button class=\"button\" data-onevent=\"testRunBrowser\" id=\"jslintAutofixButton1\">jslint autofix</button><br>\\n\\\n<pre class= \"colorError\" id=\"outputJslintPre1\" tabindex=\"0\"></pre>\\n\\\n<label>instrumented-code</label>\\n\\\n<pre class=\"readonly textarea\" id=\"outputCode1\" tabindex=\"0\"></pre>\\n\\\n<label>stderr and stdout</label>\\n\\\n<pre class=\"onevent-reset-output readonly textarea\" id=\"outputStdout1\" tabindex=\"0\"></pre>\\n\\\n<div id=\"testReportDiv1\"></div>\\n\\\n<div id=\"coverageReportDiv1\"></div>\\n\\\n<!-- utility2-comment\\n\\\n{{#if isRollup}}\\n\\\n<script src=\"assets.app.js\"></script>\\n\\\n{{#unless isRollup}}\\n\\\nutility2-comment -->\\n\\\n<script src=\"assets.utility2.lib.istanbul.js\"></script>\\n\\\n<script src=\"assets.utility2.lib.jslint.js\"></script>\\n\\\n<script src=\"assets.utility2.lib.db.js\"></script>\\n\\\n<script src=\"assets.utility2.lib.marked.js\"></script>\\n\\\n<script src=\"assets.utility2.lib.sjcl.js\"></script>\\n\\\n<script src=\"assets.utility2.js\"></script>\\n\\\n<script>window.utility2_onReadyBefore.counter += 1;</script>\\n\\\n<script src=\"jsonp.utility2.stateInit?callback=window.utility2.stateInit\"></script>\\n\\\n<script src=\"assets.example.js\"></script>\\n\\\n<script src=\"assets.test.js\"></script>\\n\\\n<script>window.utility2_onReadyBefore();</script>\\n\\\n<!-- utility2-comment\\n\\\n{{/if isRollup}}\\n\\\nutility2-comment -->\\n\\\n<div class=\"utility2FooterDiv\">\\n\\\n    [ this app was created with\\n\\\n    <a href=\"https://github.com/kaizhu256/node-utility2\" target=\"_blank\">utility2</a>\\n\\\n    ]\\n\\\n</div>\\n\\\n</body>\\n\\\n</html>\\n\\\n';\n/* jslint ignore:end */\n/* validateLineSortedReset */\n/* jslint ignore:start */\nlocal.assetsDict[\"/assets.utility2.js\"] =\n    local.assetsDict[\"/assets.utility2.js\"] ||\n    local.fs.readFileSync(local.__dirname + \"/lib.utility2.js\", \"utf8\"\n).replace((/^#!\\//), \"// \");\n/* jslint ignore:end */\n/* validateLineSortedReset */\nlocal.assetsDict[\"/\"] = local.assetsDict[\n    \"/assets.index.template.html\"\n].replace((\n    /\\{\\{env\\.(\\w+?)\\}\\}/g\n), function (match0, match1) {\n    switch (match1) {\n    case \"npm_package_description\":\n        return \"the greatest app in the world!\";\n    case \"npm_package_name\":\n        return \"utility2\";\n    case \"npm_package_nameLib\":\n        return \"utility2\";\n    case \"npm_package_version\":\n        return \"0.0.1\";\n    default:\n        return match0;\n    }\n});\nlocal.assetsDict[\"/assets.example.html\"] = local.assetsDict[\"/\"];\nlocal.assetsDict[\"/index.html\"] = local.assetsDict[\"/\"];\n// init cli\nif (module !== require.main || globalThis.utility2_rollup) {\n    return;\n}\n/* validateLineSortedReset */\nlocal.assetsDict[\"/assets.example.js\"] = (\n    local.assetsDict[\"/assets.example.js\"]\n    || local.fs.readFileSync(__filename, \"utf8\")\n);\nlocal.assetsDict[\"/favicon.ico\"] = local.assetsDict[\"/favicon.ico\"] || \"\";\n// if $npm_config_timeout_exit exists,\n// then exit this process after $npm_config_timeout_exit ms\nif (Number(process.env.npm_config_timeout_exit)) {\n    setTimeout(process.exit, Number(process.env.npm_config_timeout_exit));\n}\n// start server\nif (globalThis.utility2_serverHttp1) {\n    return;\n}\nprocess.env.PORT = process.env.PORT || \"8081\";\nconsole.error(\"http-server listening on port \" + process.env.PORT);\nlocal.http.createServer(function (req, res) {\n    req.urlParsed = local.url.parse(req.url);\n    if (local.assetsDict[req.urlParsed.pathname] !== undefined) {\n        res.end(local.assetsDict[req.urlParsed.pathname]);\n        return;\n    }\n    res.statusCode = 404;\n    res.end();\n}).listen(process.env.PORT);\n}());\n}());\n```\n\n#### output from browser\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleJs.browser.%252Ftmp%252Fapp%252Ftmp%252Fbuild%252Ftest-report.html.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleJs.browser.%252Ftmp%252Fapp%252Ftmp%252Fbuild%252Ftest-report.html.html)\n\n#### output from shell\n![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleJs.svg)\n\n\n\n# extra screenshots\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fapidoc.html.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Fcoverage.lib.html.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.buildCi.browser.%252Ftmp%252Fbuild%252Ftest-report.html.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp%252Fassets.swgg.html.png](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp%252Fassets.swgg.html.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp%252Fassets.swgg.html.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp%252Fassets.swgg.html.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp.png](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithub.browser.%252Fnode-utility2%252Fbuild%252Fapp.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithubTest.browser.%252Fnode-utility2%252Fbuild%252Fapp.png](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithubTest.browser.%252Fnode-utility2%252Fbuild%252Fapp.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithubTest.browser.%252Fnode-utility2%252Fbuild%252Fapp.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.deployGithubTest.browser.%252Fnode-utility2%252Fbuild%252Fapp.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.deployHeroku.browser.%252Fassets.swgg.html.png](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHeroku.browser.%252Fassets.swgg.html.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHeroku.browser.%252Fassets.swgg.html.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHeroku.browser.%252Fassets.swgg.html.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.deployHeroku.browser.%252F.png](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHeroku.browser.%252F.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHeroku.browser.%252F.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHeroku.browser.%252F.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.deployHerokuTest.browser.%252F.png](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHerokuTest.browser.%252F.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHerokuTest.browser.%252F.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.deployHerokuTest.browser.%252F.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.npmTest.browser.%252F.png](https://kaizhu256.github.io/node-utility2/build/screenshot.npmTest.browser.%252F.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.npmTest.browser.%252F.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.npmTest.browser.%252F.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleJs.browser.%252F.png](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleJs.browser.%252F.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleJs.browser.%252F.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleJs.browser.%252F.png)\n\n1. [https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleSh.browser.%252F.png](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleSh.browser.%252F.png)\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleSh.browser.%252F.png)](https://kaizhu256.github.io/node-utility2/build/screenshot.testExampleSh.browser.%252F.png)\n\n\n\n# package.json\n```json\n{\n    \"author\": \"kai zhu <kaizhu256@gmail.com>\",\n    \"bin\": {\n        \"utility2\": \"lib.utility2.sh\",\n        \"utility2-apidoc\": \"lib.apidoc.js\",\n        \"utility2-db\": \"lib.db.js\",\n        \"utility2-github-crud\": \"lib.github_crud.js\",\n        \"utility2-istanbul\": \"lib.istanbul.js\",\n        \"utility2-jslint\": \"lib.jslint.js\"\n    },\n    \"description\": \"this zero-dependency package will provide a collection of high-level functions to to build, test, and deploy webapps\",\n    \"devDependencies\": {\n        \"electron-lite\": \"kaizhu256/node-electron-lite#alpha\"\n    },\n    \"engines\": {\n        \"node\": \">=10.0\"\n    },\n    \"homepage\": \"https://github.com/kaizhu256/node-utility2\",\n    \"keywords\": [\n        \"continuous-integration\",\n        \"npmdoc\",\n        \"npmtest\",\n        \"test-coverage\",\n        \"travis-ci\"\n    ],\n    \"license\": \"MIT\",\n    \"main\": \"lib.utility2.js\",\n    \"name\": \"utility2\",\n    \"nameAliasPublish\": \"busybox npmtest-lite test-lite\",\n    \"nameLib\": \"utility2\",\n    \"nameOriginal\": \"utility2\",\n    \"os\": [\n        \"darwin\",\n        \"linux\"\n    ],\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/kaizhu256/node-utility2.git\"\n    },\n    \"scripts\": {\n        \"build-ci\": \"./npm_scripts.sh\",\n        \"env\": \"env\",\n        \"eval\": \"./npm_scripts.sh\",\n        \"heroku-postbuild\": \"./npm_scripts.sh\",\n        \"postinstall\": \"./npm_scripts.sh\",\n        \"start\": \"./npm_scripts.sh\",\n        \"test\": \"./npm_scripts.sh\",\n        \"utility2\": \"./npm_scripts.sh\"\n    },\n    \"utility2Dependents\": [\n        \"2019.01.21 github-crud\",\n        \"2019.01.30 bootstrap-lite\",\n        \"2019.02.20 swgg\",\n        \"2019.08.09 istanbul-lite master\",\n        \"2019.08.10 jslint-lite master\",\n        \"2019.08.16 apidoc-lite master\",\n        \"2019.08.20 db-lite\",\n        \"2019.08.01 utility2\"\n    ],\n    \"version\": \"2019.8.21\"\n}\n```\n\n\n\n# changelog of last 50 commits\n[![screenshot](https://kaizhu256.github.io/node-utility2/build/screenshot.gitLog.svg)](https://github.com/kaizhu256/node-utility2/commits)\n\n\n\n# internal build script\n- Dockerfile.base\n```shell\n# Dockerfile.base\n# docker build -f tmp/README.Dockerfile.base -t kaizhu256/node-utility2:base .\n# docker build -f \"tmp/README.Dockerfile.$DOCKER_TAG\" -t \"$GITHUB_REPO:$DOCKER_TAG\" .\n# https://hub.docker.com/_/node/\nFROM debian:stable-slim\nMAINTAINER kai zhu <kaizhu256@gmail.com>\nVOLUME [ \\\n    \"/mnt\", \\\n    \"/root\", \\\n    \"/tmp\", \\\n    \"/usr/share/doc\", \\\n    \"/usr/share/man\", \\\n    \"/var/cache\", \\\n    \"/var/lib/apt\", \\\n    \"/var/log\", \\\n    \"/var/tmp\" \\\n]\nWORKDIR /tmp\n# install nodejs\n# https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions\nRUN (set -e; \\\n    export DEBIAN_FRONTEND=noninteractive; \\\n    apt-get update; \\\n    apt-get install --no-install-recommends -y \\\n        apt-utils \\\n        busybox \\\n        ca-certificates \\\n        curl \\\n        git \\\n        gnupg; \\\n    (busybox --list | xargs -n1 /bin/sh -c 'ln -s /bin/busybox /bin/$0 2>/dev/null' || true); \\\n    curl -#L https://deb.nodesource.com/setup_10.x | /bin/bash -; \\\n    apt-get install -y nodejs; \\\n    (cd /usr/lib && npm install sqlite3@4); \\\n)\n# install electron-lite\n# COPY electron-*.zip /tmp\n# libasound.so.2: cannot open shared object file: No such file or directory\n# libgconf-2.so.4: cannot open shared object file: No such file or directory\n# libgtk-3.so.0: cannot open shared object file: No such file or directory\n# libnss3.so: cannot open shared object file: No such file or directory\n# libXss.so.1: cannot open shared object file: No such file or directory\n# libXtst.so.6: cannot open shared object file: No such file or directory\nRUN (set -e; \\\n    export DEBIAN_FRONTEND=noninteractive; \\\n    apt-get update; \\\n    apt-get install --no-install-recommends -y \\\n        libasound2 \\\n        libgconf-2-4 \\\n        libgtk-3-0 \\\n        libnss3 \\\n        libxss1 \\\n        libxtst6 \\\n        xvfb; \\\n    rm -f /tmp/.X99-lock && export DISPLAY=:99.0 && (Xvfb \"$DISPLAY\" &); \\\n    npm install kaizhu256/node-electron-lite#alpha; \\\n    mv node_modules/electron-lite/external /opt/electron; \\\n    ln -fs /opt/electron/electron /bin/electron; \\\n    cd node_modules/electron-lite; \\\n    npm install --unsafe-perm; \\\n    npm test; \\\n)\n# install extra\nRUN (set -e; \\\n    export DEBIAN_FRONTEND=noninteractive; \\\n    apt-get update; \\\n    apt-get install --no-install-recommends -y \\\n        ffmpeg \\\n        imagemagick \\\n        nginx-extras \\\n        sqlite3 \\\n        transmission-daemon \\\n        ssh \\\n        vim \\\n        wget; \\\n)\n```\n\n- Dockerfile.latest\n```shell\n# Dockerfile.latest\nFROM kaizhu256/node-utility2:base\nMAINTAINER kai zhu <kaizhu256@gmail.com>\n# install utility2\nRUN (set -e; \\\n    export DEBIAN_FRONTEND=noninteractive; \\\n    rm -f /tmp/.X99-lock && export DISPLAY=:99.0 && (Xvfb \"$DISPLAY\" &); \\\n    npm install kaizhu256/node-utility2#alpha; \\\n    cp -a node_modules /; \\\n    cd node_modules/utility2; \\\n    npm install; \\\n    npm test; \\\n)\n# install elasticsearch-lite\nRUN (set -e; \\\n    export DEBIAN_FRONTEND=noninteractive; \\\n    mkdir -p /usr/share/man/man1; \\\n    apt-get update; \\\n    apt-get install --no-install-recommends -y \\\n        default-jre; \\\n    rm -f /tmp/.X99-lock && export DISPLAY=:99.0 && (Xvfb \"$DISPLAY\" &); \\\n    npm install kaizhu256/node-elasticsearch-lite#alpha; \\\n    cp -a node_modules /; \\\n    cd node_modules/elasticsearch-lite; \\\n    npm install; \\\n    npm test; \\\n)\n```\n\n- Dockerfile.tmp\n```shell\n# Dockerfile.tmp\nFROM kaizhu256/node-utility2:base\nMAINTAINER kai zhu <kaizhu256@gmail.com>\n# install extra\nRUN (set -e; \\\n    export DEBIAN_FRONTEND=noninteractive; \\\n    apt-get update; \\\n    apt-get install --no-install-recommends -y \\\n        aptitude \\\n        cmake \\\n        g++ \\\n        make; \\\n)\n# install binaryen\nRUN (set -e; \\\n    export DEBIAN_FRONTEND=noninteractive; \\\n    git clone https://github.com/WebAssembly/binaryen.git \\\n        --branch version_31 \\\n        --depth 1; \\\n    cd binaryen; \\\n    cmake .; \\\n    make; \\\n    mv bin /opt/binaryen; \\\n)\n```\n\n- build_ci.sh\n```shell\n# build_ci.sh\n\n# this shell script will run the build for this package\n\nshBuildCiAfter () {(set -e\n    #// hack-istanbul - test comment handling-behavior\n    # shDeployCustom\n    shDeployGithub\n    shDeployHeroku\n    shReadmeTest example.sh\n    # restore $CI_BRANCH\n    export CI_BRANCH=\"$CI_BRANCH_OLD\"\n    # docker build\n    docker --version 2>/dev/null || return\n    export DOCKER_TAG=\"$(printf \"$CI_BRANCH\" | sed -e \"s/docker.//\")\"\n    # if $DOCKER_TAG is not unique from $CI_BRANCH, then return\n    if [ \"$DOCKER_TAG\" = \"$CI_BRANCH\" ]\n    then\n        return\n    fi\n    # docker build\n    docker build \\\n        -f \"tmp/README.Dockerfile.$DOCKER_TAG\" \\\n        -t \"$GITHUB_REPO:$DOCKER_TAG\" .\n    # docker test\n    case \"$CI_BRANCH\" in\n    docker.base)\n        # npm test utility2\n        for PACKAGE in utility2 \"kaizhu256/node-utility2#alpha\"\n        do\n            docker run \"$GITHUB_REPO:$DOCKER_TAG\" /bin/sh -c \"set -e\n                curl -Ls https://raw.githubusercontent.com\\\n/kaizhu256/node-utility2/alpha/lib.utility2.sh > /tmp/lib.utility2.sh\n                . /tmp/lib.utility2.sh\n                npm install '$PACKAGE'\n                cd node_modules/utility2\n                shBuildInsideDocker\n\"\n        done\n        ;;\n    esac\n    # https://docs.travis-ci.com/user/docker/#Pushing-a-Docker-Image-to-a-Registry\n    # docker push\n    if [ \"$DOCKER_PASSWORD\" ]\n    then\n        docker login -p=\"$DOCKER_PASSWORD\" -u=\"$DOCKER_USERNAME\"\n        docker push \"$GITHUB_REPO:$DOCKER_TAG\"\n    fi\n)}\n\nshBuildCiBefore () {(set -e\n    shNpmTestPublished\n    shReadmeTest example.js\n    # screenshot\n    MODE_BUILD=testExampleJs shBrowserScreenshot \\\n        file:///tmp/app/tmp/build/coverage.html/app/example.js.html\n    MODE_BUILD=testExampleJs shBrowserScreenshot \\\n        file:///tmp/app/tmp/build/test-report.html\n)}\n\n# run shBuildCi\n. ./lib.utility2.sh\nshBuildCi\n```\n\n\n\n# misc\n- this package was created with [utility2](https://github.com/kaizhu256/node-utility2)\n","maintainers":[{"name":"sandbox2","email":"kaizhu256@gmail.com"}],"time":{"modified":"2022-06-13T05:20:09.826Z","created":"2017-02-05T15:32:18.915Z","0.0.1":"2017-02-05T15:32:18.915Z","2017.2.20":"2017-02-20T19:12:14.466Z","2017.2.28":"2017-03-01T10:08:42.405Z","2017.3.9":"2017-03-10T19:06:37.167Z","2017.3.10":"2017-03-10T20:07:13.394Z","2017.3.16":"2017-03-16T21:19:37.251Z","2017.3.17":"2017-03-17T13:27:59.443Z","2017.3.21":"2017-03-21T18:10:03.839Z","2017.3.22":"2017-03-28T09:15:54.769Z","2018.5.25":"2018-05-31T17:49:35.621Z","2018.6.21":"2018-06-21T18:39:16.047Z","2018.8.5":"2018-08-05T21:03:26.316Z","2018.8.19":"2018-08-19T19:55:29.224Z","2018.9.1":"2018-09-01T02:24:50.274Z","2018.9.8":"2018-09-08T16:19:14.072Z","2018.9.29":"2018-09-30T05:56:04.732Z","2018.11.14":"2018-11-14T17:05:21.615Z","2018.12.8":"2018-12-08T10:59:23.316Z","2018.12.30":"2018-12-30T08:30:24.673Z","2019.2.28":"2019-02-28T06:18:28.600Z","2019.4.9":"2019-04-09T03:04:51.823Z","2019.8.1":"2019-08-02T13:23:44.940Z","2019.8.11":"2019-08-11T17:45:40.638Z","2019.8.12":"2019-08-17T17:59:14.230Z","2019.8.21":"2019-08-22T17:35:54.041Z"},"readmeFilename":"README.md","homepage":"https://github.com/kaizhu256/node-utility2","keywords":["continuous-integration","npmdoc","npmtest","test-coverage","travis-ci"],"repository":{"type":"git","url":"git+https://github.com/kaizhu256/node-utility2.git"},"author":{"name":"kai zhu","email":"kaizhu256@gmail.com"},"bugs":{"url":"https://github.com/kaizhu256/node-utility2/issues"},"license":"MIT","users":{"professorcoal":true,"mhaun0910":true},"description":"this zero-dependency package will provide a collection of high-level functions to to build, test, and deploy webapps"}