{"_id":"vercel-node-dev","_rev":"28-b765050a37e8fb7a4c49ddb980cde5e5","name":"vercel-node-dev","dist-tags":{"latest":"0.7.1","next":"0.5.0-alpha.6"},"versions":{"0.1.0":{"name":"vercel-node-dev","version":"0.1.0","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.0","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run-path":"^4.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","string.prototype.replaceall":"^1.0.3","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.9","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","babel-jest":"^26.0.1","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","rimraf":"^3.0.2","ts-jest":"^26.1.0","typescript":"3.8.3"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"d7034f310c22e5cd137f4b864377dcfc23f70209","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.1.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-yAJr473eAnwevA4sGDTt0co+47lpnAxzswngJDtME8h7oOI5ltUjqejR/sWG9nQB2Ce8+pUc/IaqICXssHyRtw==","shasum":"682d53cd577c6e599975389b0d658d0e38e36681","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.1.0.tgz","fileCount":17,"unpackedSize":55857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe11PkCRA9TVsSAnZWagAAGSsP/i6fkXezajZlfJUgFAuA\n52gMHb67qE98NXqvsZawZaK9mOXcP1/Q9XkXLG+zwl6njisym/IgGXd+iJ36\nbwO4du1YLzvnjxisdMsICTdyfskyB8h+VIfS5mjO7bJoQfxA3EnHUpFlJZvb\ntbujgK82VQylxhvpKElz4JtAweZ/uVmBNQKKoG6442ENvmE3A7GQsL45DgQN\nrSsKg85E2k41kQ2HKjIDxKKHztF5MLoLpnoGp4bbZNwV3GVM5BZBpwSLDF60\nEqcHaeNwuLD8wZTDeYwyZ6u7rDMaOftrwxZ0HZmfoJE1oNDb9cPn1RVfTaq+\n6NRvkCwC05/DIg9c+yNVRyAc78/NHKO3k8P1JwPVruRSZlCFoktB9nmvbtxp\nc43OK7JX+bQGXKF7PZO3Pg7oTav/e6cJ4tOVK/zBxA0PI4Eh2UsPR2B6UtiZ\nzmC01n9skNmiPUuxBZZkVZJ9MMO/95luXcVDiigu8o0gS6zs7e5HWGaGPspv\nUuuAGlLxhy+4jvzJVl2JdxHCZp4auLoqzUBbOOopHt21Etu+DiXje7LxRjbr\nIqLFkYToPNVKXQKm8dlikCb38GeL/4+36fWhTSW8UJj9hpSZh1iWoj7o9wRN\nF6xTJs2GAkN2m6xcAnvOUs5CwAsxG+6fAeTB6BL4KpyPK8KNwfDXp8+R+wep\nVLMF\r\n=p1iY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6H84S41EeZdmd+g6Y8O5qPy73n+QDNrTkG0aYFQG16AiEAjXTzeth0ZjWRTrzd1+mYBdaJ0oWsMhCvrFBJFV9IDss="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.1.0_1591170020033_0.48124566274683334"},"_hasShrinkwrap":false},"0.1.1":{"name":"vercel-node-dev","version":"0.1.1","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.0","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run-path":"^4.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","string.prototype.replaceall":"^1.0.3","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.9","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","babel-jest":"^26.0.1","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","rimraf":"^3.0.2","ts-jest":"^26.1.0","typescript":"3.8.3"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"259ac4b310056a6c8009624aeea4cbd0866be21f","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.1.1","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ZbogXTv3x7FkRJBpGcKFpH2RIsy9w2jY0GxkRfkOJVwTOG0kPNyCb/mYpfwkoV6JMBN0SADtJ9dm/NDQSApneA==","shasum":"32fdbdb26e4dbc211c791f1f32022195a9a2e386","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.1.1.tgz","fileCount":18,"unpackedSize":56567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe11gxCRA9TVsSAnZWagAASB8QAItbHXY/hUxGFX0JwZzY\n60kYI2+JU1KA/Ofq0qQkt9HZqPYv+BDLhKe6MZuIJFv+IY0F6gb8KcJB8VhN\nuFWazYulmmysMV4Z5RmMe4HqQFSjxYw+czfs29ABebh/tJJYqnLpLc2EKUUl\nJta3EHNNsIuRla7xwyEL2aBshHnrXnaHnupaojK2NlVde4zedsEepKYnd0ZS\nZoDv85U8hLzXZYiHVfCbMJC278vhX0ps+OL9PKRD+qv6XdVrQgWeUCvmXEy5\n6j2PgtMLJXoRctwoL+cWql993qZjthqeZKH213sUXWZvTRks1L1R6MY82CsQ\nHjWKBW/60Q0bfglYdsubRID+C/ZTpce0YCKUNRVZn8i/0JHFaaSkd3sVzfHD\n8KDPOV68hCQJc/iXZXlbfAfVDvK1MbwTWfpDrininKeEAdP4K0NsgaaQRWwc\nQYW1h/SE+xEJMYPnWQPL15O9M04HDK3sP3fixzsFMOrpA/W8AbTu/O53/iWq\nCFNAXxBFY1nbcaJK2Dk1Z7zo78MljhvzyYRfGLTRnK2IDsIxLcD1IUYnlKYW\nEcUUD4UvkATNmHfubiPIZmN9vABzLZBnQ5iGAnDwUwk3RUFimOeA4KH7oYli\nOOP1BwwbxxFqar+XkFs97TCTfXiS6fjAesWetNcg7htqtHT1ex//Q3dLuxOs\nwsTk\r\n=UdQv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLhXX/9TBpskhqTUuSHfT1hf7IjJopNy46OcJzr6GJ3gIgOI2e0HO8BnRIwETrnB4fzA2NEJpsJgA8jkhyIREltic="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.1.1_1591171120980_0.406540920990313"},"_hasShrinkwrap":false},"0.1.2":{"name":"vercel-node-dev","version":"0.1.2","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.0","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run-path":"^4.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","string.prototype.replaceall":"^1.0.3","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0","typescript":"3.8.3"},"devDependencies":{"@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.9","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","babel-jest":"^26.0.1","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","rimraf":"^3.0.2","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"259ac4b310056a6c8009624aeea4cbd0866be21f","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.1.2","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-EJ8NxR7H+5y6XTqpPF4fYIX4AF2lKXQsadxim5bMDE+SQ5Ca/DrbLGhLR+HjrNMtH4vx2SumGLxvy1gxXUMZfw==","shasum":"4f31a3465698d7475c6b994c1a6474b4c003b3fd","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.1.2.tgz","fileCount":18,"unpackedSize":56573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe11ilCRA9TVsSAnZWagAApb4P/Rr0N84rAgPXOqnAhnoG\n+ZHZZg7o5WwikYA1VcfRH/NfdmfTaSpYiQ4xLCEvviugTZD8L8Nsn6BoEHiz\nQnqXVV2+WVN/NvoE16/hSDHiP3ZUNJ+ataLPbHD+mKKVFNzkarefaJQaMXPY\nInrE4IQyRQH68e0khzGxOHPpoMhQSepG0/gZuMKZt0uz8Q9TUzUjhlFYGtkM\n2QwxEuktwP4RxA8VjtNK7+bfnnIe9oyOpkAGGkEXI1zSAzigAdhgTYbjDBNA\nnMAZlhExF9ZxHhh1RC66REm6WH/rRkJOI4ljCfjrGlqnSxYX3QoqMGBmGre7\nsIw2cvbI33/cIrdDK59gspf10UcoGyU3JHx2CgZMsbDpTJAz76zoEFdhjYCd\niJRKpXtCwfcksPIIq9pk6bnEZ51SZOJ9kLE85o2H+FYphBw2EQ9Ismw9B68+\n8XqtfRCNCkeNHU4bLMtG0/5jAwknHG5kxdXOMuI9V99L9m1pevOdYPshfRMe\nc6feDCjs6jRixVu2LvSZCqxKcIlWAHO8yZRpZotrCVo44WGBCnfVaUblXc0K\nWAv0ilh8JugfqgAK2vZvx9qSezneFw6L39ow5gHqyfANCO9dVCBwPUo0pUBl\nipIP+7BHb3JrADe2NsrE8bXuIfgaJH7XE3hs3L06eUhcmo7fabBZMvkb+ghQ\nodYk\r\n=LrR1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPDYL0T8PLnKTBbEtkNE9t7QuQOznP/V8BElxmFdVV5QIhALj3LUYfH+kQiNE48wA5AmEroqeCdxyFhokgtebs3R+C"}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.1.2_1591171237149_0.6492377864316812"},"_hasShrinkwrap":false},"0.1.3":{"name":"vercel-node-dev","version":"0.1.3","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.0","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.9","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"c9bd2d27d3fb1bc4611612948e0e692587e5e538","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.1.3","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-7WzRzQrozXr5jiBb1cgg22RBcr1Znkm4aBQsIdHh01QriPBgDHJKibwvRtV5sLitSXVdpKPiMoxBbFeEDyGWiw==","shasum":"13fef6bd0728fd276d254bcda4f0a581c9823882","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.1.3.tgz","fileCount":18,"unpackedSize":58361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe16cWCRA9TVsSAnZWagAAB+kP+wSYIFz5IdwnFZuogcYe\n4QAD5gcA7PQ5otN6JUO1Q9fZQbLQ27zHGVW2UHd0LpLJMhcWkGRn/92aihdM\ngeDgtSJeIwlh4lu9E01B3O8FYrVLinLvTuYM3vZvuxvPwD3Ht7pTR0bB8iuI\nEek7WsTxkDlCBwrHW23f0to0gEO5cDUjpuZ3caR0y2BhN8RsV4xLEAKZ2KE8\n1D6VsyDvl9GiLhjI6xC8y0vPKLdzONnznZdQ5M+g3Sf3pe5ZKXEwC3kngTrp\n6yLSI6t7MN/SKgoieTyGmcyPm81uFolHO56pEaBuzb8uWguWJHvw4r2+THT6\nSd1Ji2Tf9083+m+CuGawu1KGgbmePV3b1C7rw5/2JY+PDjHPAMRdT/IGH302\neIGg+B9R1fvCllZV8uzwdazbs6bu2aftzZRG61LBgEbdZH/ESwdDxRs1vyXf\nOjpM6R52/7N7HfOxisiNac2QF2s+vgg685YB9xxspkVaeq6rtWIw4NCylEWb\nPT4NShN3l6z1BkOnfilMadB8jEj+hSiLmJU24ZaqjO1DEO4Utjgw4INSojSW\nOm9P8mniFEKSn/CzwOrQZurQ0taEdyJAmoHP27XQPmL75Qc9fOJ8/9KTNOXI\nSyBzsCvb4Ci9bOslQnloLmX2geh/nDHkLAV9K5buxpKCERArA/gxz26Z/ngc\nrH2u\r\n=3pMp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPcR9vmR6LsTyKfSKGjphVqwtjYKyM31C0rlntEHwz1wIgdiS9gePPRAs/ICWYbhIpD61HacDJs8nuoRKdjksEHc8="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.1.3_1591191317762_0.24044753880643888"},"_hasShrinkwrap":false},"0.1.4":{"name":"vercel-node-dev","version":"0.1.4","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.0","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.9","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"c133da337a392271656cb3aa47040de335c84c4d","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.1.4","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-IZu7wYMfDh0fM66u786ByFj8JBirOPmOEnn4HucLX1+vSweOReDbHPGw5KcqpWJ66bqsUvUdF+kD0BjH9nriyw==","shasum":"29c8fe98caba30dce85608744510c3273b2a0edd","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.1.4.tgz","fileCount":19,"unpackedSize":58592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe18eaCRA9TVsSAnZWagAA1REP/3fVCS5x2yHp572w8kXo\naSEkId8cGMUfeuOz9QqWxAkKZFupGOGvCZmUWnYYFO82Kr/c4m4Z9hZO+tEW\n/X3Zs7wZYHJBhirIDDFzT9vwf4Wj85Gmepiah+lc0wgn/phzheXFr38BCpvn\na7eJFFWlyxjxGC59juD9UUItDf+aXcn+ENtV+DdGzNZB8qh0Cvc1aQJMbJ47\n5KVIPDvJZwW3g8IncDuLSVc6+viLB6odaMXCscnbl+KGrtkUBHabzgg4Kb2Q\n2VwGUzcdnYS9YtG+VBAXtXTRCqKjcD9WWjywy2SBWPfpXYTtB6W6dMWk1mlu\nYqn7CJ186UrAsk8Oce6rkSKs0agYwy/ymRti8AwayQpwS9A5jdWpHP1CJJ8L\nhXq4++KAinCg26GZ5MZP2kmpDAtk57Ggz1+LIEYapp7zgOIjtFEeWDd55bP+\nC0W0nHrbSty0Bc3YAKlvJlr237SPeNTo7Nutg6hYIuKILYfgvt5Qsavp1ltV\nL73q7lZPoVzso31/wU5OV0UhyA8VThtlb01lH/IrJ8o1+iqvbg3a6ESQ1t+L\nbVAZ5mz2axnuy+1R4foqFPVfqAoLjSPeeXm0/9TKjqKd5dIZOyglnywycYM4\noaOFAznkmI+CplZ3FjHTpefrXE6HbsB5VBaq/BCz0Japv3QxuCVsPm4hSp36\nvF5x\r\n=PcYQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgbwVwklmSTttF5sghQDLDCkFw/5FyPI5n/PrHOr2qwgIgU6uW8vnFpdheIsR6Sx95/74N5f3R0th+u2esq5d16YE="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.1.4_1591199641740_0.7679319309329404"},"_hasShrinkwrap":false},"0.1.5":{"name":"vercel-node-dev","version":"0.1.5","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.0","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.9","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"80b44ea9b0cbe0ea53fb1f0976c1174fa3c86889","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.1.5","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-05bQdtv+CH30n8jn7LJmpe9pyL01aAMfcirfu3Zop1f+JJvRGG7poGcmRbjmqfi8L+FxJabSdEnxEx8cJ+GEqw==","shasum":"9eb2f94738783f35be3af990a5ac3856e64a338a","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.1.5.tgz","fileCount":19,"unpackedSize":58550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2CKbCRA9TVsSAnZWagAAJ9IQAJORadL54bYxZf+yKTkG\nM735RwkzjqbHJKGta6cjp5WpBXVULNhE9h1ZKHPV7Hy6UsIgLn3vlqmMccvu\nIv8sFWnrJalYW7VThP79KFcmEaQPTDT2vhg8Y0rbne46NNadMcKXFxa4xAKK\nQW4pTspDqRJcj0Qbe/v86fuhvFBOwedTf4QAr2ozT/CT2uxEF6BGH2E4Ib7q\nNs+9Ypu860E7vlXqLOPKb7pJBx+3fw/bLCTzprtlDd9kBpOw28fR6p4W8sCr\nbZdpf44/A9KHY9F09AXX1kWB0XuPs4XdAE0m3CHezG5sJwf3i2lGJ0mD+dVf\nrFRXRcau0YFgDVa7p1DzmJ1Nunk2YIL6Orpbt6GxT2UOiktPpWOUyy8rskV7\nBvWonHv9ONjpoXpJFGbU1gBsNyK4yesfNVf3Kxmsa/tppqCFmJpAoheaEChs\ny64VXrz7rG0eP+oDlyw6m93oxHiF0ok2OYqgpA1057FR/dSUTYbLwn10NlJF\nTXY/9VdDMT2Hv3Bz19r8ACKe3oo53+nvNJoCfh8PT1n9v3upeekjybhKkQO8\n1EACE7TmkFLXB7wX/NojnV8ycbojh9zj9tps+3Uz7gRXlKw4Zchilb9guyTo\n3W49jkuWAnx/r5NXG4/iI7lerGGgC/ZkuJAi9HQfkxpqzZZsHb6HQ0kjIoCr\nU2jV\r\n=yv/m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9g05ZjXGzkScwnQgE6ugucKhayiEMrXBcKVssUB7GkgIhAI+Cezu71KXVW4Bb9GEm5zVtRXEuVHTBrPLmfgW/dklb"}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.1.5_1591222938904_0.765629599554912"},"_hasShrinkwrap":false},"0.1.6":{"name":"vercel-node-dev","version":"0.1.6","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.0","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.9","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"80b44ea9b0cbe0ea53fb1f0976c1174fa3c86889","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.1.6","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-G4ti1DWqjr2JIEU5Sa9Naz7k2Q6kyYHsxBWxNIUPGOQlJQsGFBcRPuUDsFxuUkWDTl9gYBzckDhygp2EQn/+4Q==","shasum":"13f0d08f54e23a9e1770b8c25455b2e630f4f75a","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.1.6.tgz","fileCount":19,"unpackedSize":58665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2DcBCRA9TVsSAnZWagAA6O0P/3WoIu39DJiyKhoD9vB9\nHXUzAfm4DRtIADQA3itZxwud2M4mG2+ZKkI5RnDTGBGIdgc1gOrCF7ELfCos\n4DeD6wUe4KzJu1AmK1dkfqp4Uk6MFvkr1RtET66MCsnL/8+dfGTgXRUM3Iri\naN4BL7PtqwAcOwF1+L4ho6+Z7BxrS+qmMC0Fm6lKPq4SvILzlNfeisOpDOJz\n9L8OWUGS/rJS1/TKZl2+087lbw5RQjSkVEg/d8l0kmU8yV3/TbptCXX+CjoT\n3wnDOnx0QETDOSFvCWJHHu5efmwH/3atLPAgahiNZL6xnj7CD795u2btrynv\n9viSEH3IqajgSqu9s6OTSQYijpyC+PqeAgtzo17YgqFsZ1k0iui06E2S9PkN\nNbn4I0FSJRQfhJKtT1m/PPI7No6UcrVs3VWNOMTdvrPcBBXABMT8HgbcrP3F\nCxeZth7JPGN/lfXYPjsopOPIN++BuZuFgVd3YcsukujF4ZNdeoCk77Jgchjp\nOyVIzIOITRspXg5QmD31kSNbiUCoEB7+BVj5HPPm7blPV/eph3F9Lt+Y+JQk\nI+uzQ9pvfnFPKvbyrviI6TPwKECdI3KHSKTj33gMfo0X6yJuHbDcrr44KsGy\n5BQPveq1HZREkFNeV/bLJcKgl6KExe1Wxk/6fBBCDvaJG/4zTxDEkh6QSNxj\nPsAQ\r\n=GWCV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJ/x6hqZXx0jCiZdtUGBUoeRc6QDl/A2SbnPnklc9lbgIgD+A1ygaL7l/Ew+uo8VUP0vY4rR3uCp90kFyxIyNg4TY="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.1.6_1591228160645_0.3055170550606121"},"_hasShrinkwrap":false},"0.1.7":{"name":"vercel-node-dev","version":"0.1.7","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.10","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"c07186d3470985ee55a1375ef63e892a7e267f51","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.1.7","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-zXeuwt0XZw3ALqJdfYbFgLxIHnK2llaMedTQQ8j2Gn26uhbs8J0vEUUt4WptNWE+6d1HEDKB0VvDYv3jMy+lTg==","shasum":"8224d64b8fec5cd5c8efc32f4d192bfb6bb6a17f","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.1.7.tgz","fileCount":19,"unpackedSize":59012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2IyzCRA9TVsSAnZWagAAXAIQAJQS3Ap+4XBc0v4mY7U1\n2V7rk65T/2Ahe/+NooluaFetI0s9fN2tUx+q7W0VT92KVmHcdB3q1MDzdppc\njB+9acRPpPug5+LZ+l9BsgEsHZAJ9pwUf67wyLGMJTaAZTECyGIVRcvMe5hi\nAWDnbz0klpsOkxi3Zb/gNzFN8QcXViIhqbAgMCXX2HAVZ02mmOJQ/5K/ToEh\nv2ty7Z8ghc7DXI+fC0oMyUkiXElW5JAVQZNTTOG05S0EC4ut/Oyidb0r0Z8D\n0l0d+tS5Q8/V2xADVE8OSFEWZ4aUWJrxTaUfWWA5IPGyZwfztk1H+ZoVBq8k\nWnf5DeWE/WnWP2dHzKMahHpROSMTzg++H5EkOYhWLRgCLlE8Kuf28IHZFu3M\nZYDPDRD8wWai8AJNmGJ2mcTdZAJdc2FaodcyxgqOgPjVgbK/3rh64PxKBibh\nlGDZJMo3TRUhH5Gn/40B739BaIouZs6uzjTNSXMLj0m3Hb9BWa8TW6ICwel1\nbnqehL5ukBz7gk6QzGV1OZQXXC80SwG4O08lDXDwC8DW/EojKTiRPML4WdHh\n/ha1ESLGr7tX8p353P0U4nN/xO8XDtFHXGFVgUYvg6MuSwbc0Ib02dGLAFgp\npZFoxUvpWt9W1txFH4iOfdnOx7FcvUBZtoDKbwCK7kCUVuvJVAylJf8yqMSz\n1rqA\r\n=hyCG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxbpbNfRXWFGCYRlsRfLEvd/0SR0MaHIFYnp5jW1omAgIgBaXwa+7ZRvHJ76Jub3bS7/KiT43FMHBRTEcnjpZ6Bjo="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.1.7_1591250098991_0.03519396873384517"},"_hasShrinkwrap":false},"0.2.0":{"name":"vercel-node-dev","version":"0.2.0","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.10","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"ea2ee38370766e3f945876b6785c82f04378709f","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.2.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Yd9UDqiGkCOMhBVfIj4YmMbbGZhJHbwx1oD2PSyshH3Hzz0ZLnG5WnnBuCfJYOMJWynMC4K1gQ5OFpg8Uw28lA==","shasum":"9c91a455616e3fe9cc012bf7eccdf86ec759395f","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.2.0.tgz","fileCount":19,"unpackedSize":62150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2JoPCRA9TVsSAnZWagAAtVsP/jYlJbJrdNqm0Ms0levJ\nsE69uZZ7x+lae0IMfys3K3MmthYhG4EPXfpYokDnoVfSpro99lAkKPOAk2eE\nPfSh1DEZiics16asYg1YO7PbKGffGTaGpG82stb6pO1FOybk2J4Y7a5Ov9u0\n64NFPePocSxC14v1CbNUWqhkmTHqLOxf16pS9QMxCoIkmPWI8e5NHbJCXHSv\nYM3xMXxO/uO0MLOI71ljG2i/XUb/7TfKoDUeLyA9TtTxTteq9C73Hmdu9KQF\naeW9uWiKtRfW5Y4P+EbvwAkIEtC1FlPNsLDooI8D56t72B5hV2YiIaXYB+lZ\nvC07+sN7BcNHIdIXDzcb3EvIYmYaHneFA/Rt3+h9o6fvxw8nUqYqAsvJzrsl\n82vX0c/Umw8vgpqDkWAuuE28ITf1d+qMRe1C1I/ReLkYLFAq6vdGtXhmh63+\noiHrgg9gYmiT6C4t8QdFj2IAAS1cMrZOZlsAeroTc3VPXS5fLSfpV1WxPu0n\noNdD172AkvoT3EqjrSHDrzI20kd/iMEvV1mDyxfWePYEc0FYX1PPXlfjnT0m\nvRFOWiHANYTMGWOMCK7nJ7lD3u87w2SOt3LhtfbfDiaTIlc0vqVFyBM5G/62\nJ4qhfLbVEn3A1IQuKWLTMFfl8BUMbmN8ICmTjKWxBaO50AbzxxJV8XrXDdT+\nj1gQ\r\n=jvVL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOGK3aNEfYxyekKIqLjFj7HlNjHa2v8V19fck3ZQknfAIhALAs0Vj1Mj39XkupQ48PTRUYjvlzu3bXsY4CI4VIRsip"}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.2.0_1591253519322_0.9357669672482241"},"_hasShrinkwrap":false},"0.2.1":{"name":"vercel-node-dev","version":"0.2.1","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.10","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"dc7d22435a3ed7cb43d13127866b30405056e08b","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.2.1","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QzIn6MlAlaYXxWi2MjTE2TjHe/ObISSNq1ZQ/3QGOuvXbXFej8vn4rlYhtP7oNmp+NKFU7hUct+oxnVbv0EuBw==","shasum":"d0d5a50f5d3d7d71c51e668828c5d04e3475ddee","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.2.1.tgz","fileCount":19,"unpackedSize":61785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2KGMCRA9TVsSAnZWagAA9b4QAIeU8f1ihnBFf9HdtybH\nHsc72AFVR/h2Ryp538bHG4kdvAZPFDJ5DSrddZPtGVU8DaI5pLnx8n52o+sv\n/4lJmVW9Tv+OQ9kZKrUykEQKw07DLlydGVhLzh0N29Ph8Lm8mXFhMCSXC3Tw\nzs3kzIvZswfjvM6sbcmwbvDOcjeZxGOO+Mp2Q8IODaOJBZW6BhRvWIDysTc2\nrLbo82SosZ4xKnuoJD7nOfh9S8aAVPZXJ90Ijr+Xe0+KRAm4dMLMCSCfS/9n\naWuaWOMOr7dDWMUqOX14Wjsy7aJtyFuuzBm48msvznV1WzRDI+u9ZHdsgCjS\nM+qsvMseNrhwKLDy53URxVIRsmgSNl5iku/RUq2zhkhWIXFNnj50m0sgbjfF\ns56EnE1ME+daUF6sM2AwR095qFgr+F7YnbCcfw56ytBiO2Q/FrsrljplizyK\n7Rc+vIMYGgVGJUW6+k5F0CSKnzhg6ATLwrNds6KEy4sXdBsNerxy7nK+GRaJ\nQ2q1FVwadaoU0J6a30MVxeaDHg+URHlK/b39hGUWK0ImwKuOrMTjrudhWecG\nU4VLSzQMMshBPzqECiHOkPtNQ/nqG1okZdgwPLEMjulWuUTknrxDpxLf6oc1\nYQ/Ju+8BHh+1RKjckG8y9YL8urHEh2cPU0QwNkkpAQTNqpgaecj3p9vNCNiO\nZ2bV\r\n=rV3X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICNWN6MX/USeyaK8Wov3DzutpgheNYBe/tvckgHIANH9AiBQK7V2ok4aimt0DxGEQJYYG3UllwFbmK7iVWbnBYRV4A=="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.2.1_1591255435883_0.9174883968135596"},"_hasShrinkwrap":false},"0.2.2":{"name":"vercel-node-dev","version":"0.2.2","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.10","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"2737158282d5202b2920bbb695a13baff53a3cc6","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.2.2","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-DuozNqQut8oClxdZOP3cZcJ5wNIEPpkizk6qcqelXLhaPCNcwC2rAOBDao4xVxwMcsQlh7i/3beW6hUfr1OMNg==","shasum":"fb2b097a52f81a22cc43264e8460548e454941d4","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.2.2.tgz","fileCount":19,"unpackedSize":61879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2KMkCRA9TVsSAnZWagAAqB4P+gJgerLjii0UX5Gbs+bv\nlquGyaEIqSr2kNuOHURy+CZHJeES0pGi+78FG8uEbQzxl8NO/WS2Ae5jBFch\nv5Z7X+b6QFlzl8+g2k8N/g2SvwM7px1Z1f5tMdBR9V5m5+MKrFe4OWaLS2qS\nsGq3eXPuXFDl++qSC9wgobLiZthovSqWq/DtPL82NQJ/6IY5gIYEJ0Ya2ir5\nZjVUpxC8Edp3W1QrJ9KWFHB+GV1iJIyAPHH+KenX4pQqwDdQGn5KZ/YHtes/\nzeEgGBunIkkzzGS8yTMjZcHNqDD4X7/wjwfOwU1pUKJk0ovLCuUY9AnsZCHV\nwIZNwVgz0CIiTv8CPFo50ulxIW/kvCaJJIA2OsWDB2wfFCmuBUA5OSSV84qq\n1nNbV29h5tAbDjKb/v19cl1pUUdYZEt53NGNwsnljCc+EjV3Wv3Q7vJHkWKA\nIk0YgOZXADvLw3Yx/nT+AYJrs7tgU910G8208FeC4BKAHwnXwbUY/W/iYQxB\nc8xd00VPUfbZmkJpb7P/16HQOIAL0dlkpao2hjJ00r+6sN1wyKNfUSzzE+Ya\nM1GG6shkiLUbxoLD3h5SPU9eA4yNUR4tgNV0NJcCjlFEFpzV65RQtt16f5RF\nixj3J6LsipRws01APVBkTF/RsmPmXicm2wdFcHPwxp4bZ8cisoPhhdGOOMZ0\nbm8U\r\n=/rmd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXsEI2CF27pc2Y/8N3G/lYqzWzs7marmLK71cTHM2ebgIhAIRPqWuldFdpXyEWlBs28LotGcYyQoMmg88S+wekQXwR"}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.2.2_1591255844516_0.4563717745699305"},"_hasShrinkwrap":false},"0.2.3":{"name":"vercel-node-dev","version":"0.2.3","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.10","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"2f64f069be6875ce15b3e0d9a7f213b111265c7d","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.2.3","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-N7IImCnjuaUshaPUPqz+naHA4LoFiUwLU5s6XehxjlpXyWaEylKDWpL46dpeZS7QT9MCGqzPyRE9luiMpzb5Pw==","shasum":"47102dd573f1b1f2e165225f788fbb072b02429d","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.2.3.tgz","fileCount":19,"unpackedSize":62587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2KmGCRA9TVsSAnZWagAATcwP/0TJOxW635DtFi7MLEjN\n1lHHtC6vl+zF+M6gRhVzo3pv3LBbyS5kOD2A/sF1v+caLCKpZ8gH1EC0Ydng\ni1DkxxcTZ/4dfSWam8PvfhBkL8cNMjXtzsFMxEHTphv54inVumYw8EahCsbE\nqwwjEcR2VxM9KsrInBQC1z5ir5kUylqYsBWnQ4TYPlMQbD8UeQk1xAf2wGJh\n7xkq6zzF2Eqp8dhostkZUkHfZt0kso//C++f+ouaH9BFFwB6nJBgtfWF9EHm\nHKYRpz2rcFZj4fPnQR98Jm8rT9K2+vUuApUV16C9pPHxGyPHxY+ezTMncarJ\nIwP+p3AxFFv7RPg8HRJO5RgAaxpt2J7skjELp3G+X1kg9yarf/UhHLcj3FUA\neFncyADCUIMoJJae+938jRpSE9/oyZV2KYyUCdI/QAf+o+TzMJwZPUmv+g4m\nZ0m8kHld+fXJBg8WZtrlSz4X4AkvP+IHNHKuhLLByGuSi0nWMT1hkSywPGfF\nOFiUfvXwM1JN6/TrgvBr2OfKb2nh59XWeWfexgNB/IdT2D4DMP9Yz1HZd+uP\nNI0TDyvtoFCxd2wrX4pNaGUy5hXMZ25AZKgGFAHhC/gNX0ovpuQlgWi2gwfo\nyLcL3nUKTuBmlLcDHOASOX9wJQPblO5jedN8tWkVcJESXeSXYCzKRb8UWG3Y\nCUlX\r\n=3HDX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXMTKOZEXKIE8fVCFGgMzAJeTyLJaRhPFZ/L+NWhc1hgIgCUAdiDSuJVmD5g6CwzHtl1MDlm/dOiQlqezbCTS+3Y4="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.2.3_1591257477907_0.5054365575955313"},"_hasShrinkwrap":false},"0.2.4":{"name":"vercel-node-dev","version":"0.2.4","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.10","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"01ddd562bdbfcbc292170c45aba56ee33d0d2679","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.2.4","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-oXqQSV/qCz93wF2Gw0VNcjLHbCk3xqi5UsRHvaPKRiWnxFK/pKGhKQl1OSjHSpPn9+zDzikT7vz+IYHoi9M5aQ==","shasum":"df88984dd95fd8827e993b658c1e9591bb0ce7a0","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.2.4.tgz","fileCount":19,"unpackedSize":62669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2KtGCRA9TVsSAnZWagAA+YAP/2mLnt37qbV6yM9xkduC\nEjUiXiaodEpLnB4+H+T7CZbCORJQgyw1i6Bn3CAffCPje36VzdF2x4k4m5Te\n6Ot0ZgUDCiqQV2vs0s6UVSFWSspSxXC+hTnEbetPSxkiysfxJQ5Fadtwsvuw\nUTrVB5pt3FIbSNFzsL/77IjcEFyvkp4gb6hJWoewGC5z6uGwrZuEgIAPfgkC\nEwdSbvoc5V/ed/opMkmr/7UUXqg1Wq+W7cJERoQjA75+4q38ghz1KxAOZ07d\ne5bubT5umvyF+baWDjNapAsjf9ucy6KU1IQYhEOvZkpuu70adrWR7pz7HIvW\n0JxcDEwpc9nOz9zu5/CXpG+QMlSTLaev92bZXFi3XCsXq5sufIjExnFZRDkY\n2QuvZ9ir1zXz8iWZlaiba9Hcq9noDw9xKehGT72Z8eYaqsbmbJSPPOX/XDQv\n5xoxCoXFVwaCV/fyKmmh5NTXMKYKRMNor/w0v8dyM6ddIoKWBXW10cJvL4Sy\ns39cHQmKSk0mQBu+ZIPnw6swT/nDCHZL57COZ1JmWxsO9qdU8ebL7xgb30Sd\nA7KAFvh4hBlrk6Bl7n7t4zpJtz+RiyNCqJkzwbFZNcdiTfqDqXb9CMRB/rjm\nJQqFkS0qJarBiizW/+zekmtuHyd69fGml6eCnQXJy8o2w7YQBI9c9QRH3HV2\nZ7Dt\r\n=bl/z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiVrSHRydKICQmM4cBkqwoJEZLP1osLu2FKLC9dZTLzAIgGZRhOpg46Fu/m6gi4DxLP5fUZwG2WuRlev/D+rfunV4="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.2.4_1591257926211_0.3947416416207279"},"_hasShrinkwrap":false},"0.2.5":{"name":"vercel-node-dev","version":"0.2.5","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"3.8.3","vercel-node-server":"^2.1.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.10","@typescript-eslint/eslint-plugin":"^3.1.0","@typescript-eslint/parser":"^3.1.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.20.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"4d8f72f7c4668a987760d7af5770e40c2a85e3e7","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.2.5","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-3JZfSRU7ocfocdbcSjF4GmsM4wxS8P/gNvsMNwLKxCzDVxaoYg0REwa3gPAmLJx3ZQ+yNVp2IZguNfQzTObGkA==","shasum":"ffdae6b6c4f152a045cbf7796e8ab70e4c517f0f","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.2.5.tgz","fileCount":19,"unpackedSize":62693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2KzYCRA9TVsSAnZWagAArwwP/0IXPevUVEZM6ZsJ87Iy\n8XHxZdcK8VUYt07Bj3zyMvGZ8Nswe5B/CaDrW6Z1KJ86VuYJxI6WrLUZZU3v\nuzfel1b197uDzkyC5fj9RLHw31dUwQ7QmQ06oFsP7ckLVm1McKUhTQvqGX6C\npjNXz/1v0U+WXmGr36pl1Ijjxemq7fWE/rTyK3n5jgQcJnMiRbH5+8d9fYRW\nmQ1mFR2VoyKz98hhn76q98orONVrFfVfF1L0X/UmPWK6GRuvcVfYvyEfehXb\nSQcvFr1JLYPTxuAtloPFzpxmoMdKNc0n68my6lMDiiy8qhcgDQAsfAicEKZr\n8q3Qf13oxuC14Al0MGplnz/vIMQzjNUlpRyp2lY9xvFQl07yuF+8e9fP7+hZ\nyVsrfON4N9OavbPTazyLHg3EGIoYEMHJDDFCmYdxS/aZ3Vj5MlL2QzhuLDD+\nQ4oSAHM7GCq0V/0DP9q7z1SH4+vjiIQfuYVHgHCS/53slaG3uAf/xdf8q6cW\nkMWzRmgGd0ZotA8qijtlZxUKTYkCsBL0hPA6SVxa/4YwA7L4Kg+kwG9lc3z6\nqCt4GqlR7JA6WE7ksRrzhqyeefvHvGWZbnNef0x6UnxcQzvqiby/MwCFcOoq\nJYVEB1HmkglfNL6vQ45mgXkmEWFVpl4g0FZk0HFYslrd3qZhoQveoVCYyPZH\n/dAp\r\n=fwYw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHCzApHUDiqW+un9hgPHxhZfURRYs33XOIKwB8S3BSDmAiEAoAOqN5EkR+3L84BUYY58+9mKWqSoIuWGx33n7bQjeOY="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.2.5_1591258327898_0.20592731867882086"},"_hasShrinkwrap":false},"0.4.0":{"name":"vercel-node-dev","version":"0.4.0","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.3.0-alpha.0","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"5cabd090763809164cd371735ca4a0e18bf711c5","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.4.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-WkcknXUrRBklHcu+GB3mxIl4ibij1X0t61VDE0SoSlRuoCwCkJHB1gc0l4UkWB39h2w5rchHjXmNwAL7Gqqz2Q==","shasum":"3b04c234ccf3612752fb319c48bc25c6fc41a9ab","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.4.0.tgz","fileCount":18,"unpackedSize":64800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3xVwCRA9TVsSAnZWagAA/L8P+gNJcwByyX6c6j2PC2qy\n3J3/VVSZM1NotaHdF9zU3Qtx2DNQA9LlSFH9e/I7fVVggdA2Og04zlaBnjUg\nWldvinSJVh3eve3g8KTMpXcvVYlkKESJ0brAixHMw+WC/JQfwSxK+NoxckTL\nf4qqdwA78bafTsSFa0jXxcRvPnkyd3uMWyt4TYt9ym04orPkxMlbK0oUtv6n\n39SdGBvWd9tNGeasnSRMWE5MOpIsiSFjIPbDxDS/tBRbwfLwcqTCuqOwnrTV\ndTk7XiodViwXHXAHNOpkW1m4DrcHGQkbREUvCJChjw4QIxhDSXhNvsitf4tR\nYjgqdM8Z9khgKd1/0dvkv/zDHbwj7rdDH2L01IcbZPj9mGZ8CfFHfgX+qHgC\n+jYIciK46iY67dxW7XtZz9vQpIcM27VKK+k519zvHVaPIxZwVu/r//+XUAsZ\nrDiiWjlo+8A7St/zcirdZQRvjqc/L+//kX3mHgNPVJ9eypWefOVrEN+MqqVz\neGrnbWcti8S5xxs1hdcQb1i75ObPmsFkOaGPPVXQIaCsAnhzxeknOv0jyaIH\nJUhibRYvKEsQJKDOsWtSL7Sf4NkeeITVqcqD7pVHt+zk0mTl4Rxj9JcrEavi\nvuHYB2ESuoculuO1lViiDnz9JWtv9VnWJF18MYgXGaMoArClI125W4GrqO1K\n3MJ+\r\n=rIyj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGr3rTlLzbHwkcsQXw8Ys6uva4E21hacuWjy7KW/53DjAiBq2a9ekEdZ3uOiRv19nYG72BwNn5QhQTdWGYfQOoisjQ=="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.4.0_1591678320028_0.3352499542874594"},"_hasShrinkwrap":false},"0.4.1":{"name":"vercel-node-dev","version":"0.4.1","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"650560e61fce80065ee50ec0e6eacbb04a9740c4","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.4.1","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-SgilDpzDhgo110oqa9b5qcwwPVLKyJ9ORqj4tALnwTykWl260fAsIM0/d4OqIYWx8FbDtbqWWOZV3klGwrZsZQ==","shasum":"f227bd9a03b615d08e77b0d010764f7c61e56ed3","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.4.1.tgz","fileCount":18,"unpackedSize":65259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3zBYCRA9TVsSAnZWagAAu9cP/juCknSuW/POOtrUMjtq\nCC5aYSog24Yq/8h+S7c9xNPZfhpMTsSspZwdtmAweeJmINDTtfynOiNumUHU\nA4k0oe8NND9fabyS3tIgY1VVkwB5O9OUv71rCcTuzQSRiA/wymNEQYV3S3fe\n5zQPfqhBJE6dYvJDdAnrlxGkK79MGiFIBLSKcgbbuXyOgqNSb1eZUY8kcTtI\nZ8uJxhGc/flUUTnRTCXlRND1T6rahtOSt5eAWkT3jxj56vNHNVlGG0AEaiID\nldpbGvNKa9FD9Qp2FB/s53hTH/5jBESiRUfgyaKsZo5yHxFh9wPrkrDIIh5q\nirNzD3KQHocp/dNg60NxdBcmAKqFh0Sgtn0Ggux2Y2wLMrQ3Kf5zkH6vN2rc\n/zNE7dF9mh0YBHQJQkQFxBcd3grlHZ9DTzTyk7c4Cw4srosw84r3YknkZLBZ\n3iLEuT8tuV0uKjeHQcCt2Drr7xU6rkXLEDK7bmNj6bywqaZOAiQi9Wh+s5v0\nXPkEtlRuCYCKHC/x1psmzj4VfPBZrfDEnwdj3vj1ZBng9OjEBGJ+e26QFoTq\nYdaA0IhSF8GTueRlzFvRqAuy2fPhh+SZJnO2fTucZy2jQLgsDhTLXmI8NcOh\nO+6Ncy5Ksy0XL17zx1U17tSYt0UCC0HanxB02X4d2+y7jFmt4cSjcgnKUZ9z\ncDhM\r\n=9h9R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGsoAv5yVOJJHoLNwZZUr/bafGdPFMIoRMzwQVkWLH0YAiEAsgDvjXFVJOUnEumwbqdnb/J9zs8vDAYhVU9mEhQht0A="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.4.1_1591685207568_0.5131936180269627"},"_hasShrinkwrap":false},"0.4.2":{"name":"vercel-node-dev","version":"0.4.2","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"1f56cd048136261eebd8278f92683ce65fd66965","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.4.2","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-URJPl/qUUnTzBKVjrs2NUuhX5CTRvIkP+7UqSKGoUu+WlFKXZa6GSn8YoaYwvNydLUSq5XFr28WlSIZLZAzaFA==","shasum":"5ea8c8dd88d09b02de4bc20fd5aa7752765e7595","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.4.2.tgz","fileCount":18,"unpackedSize":65256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3zi7CRA9TVsSAnZWagAA14IP/3qrRQVLsK6AjNKY413r\njaVacTHwuaG2shaloHaWOr0bAM8mFQPj2hnFEMXBdnUrfEgBRSXgAjWDFgXs\nNEalgCZryc+b21HzThySGcBE6pkbVwOYN9NBu5YADO9sRb6fT6Ssoz/ANdGF\noytIe+fI9TquzV8IN8O+tV1m3Hti03aOrXrXYG2b73Hkbz8GaZuIu8jF9C2A\na1rwws0/tAsI0Vl4YsA8GeZfGknK81knJsvSNjQTjL3SolWAE20BpaMfIIMe\nv64YjG0SwHgWzYN2h4QP6zWY1w/GDIS7YXntyTZmf4403mJ1bx3lxzYh2rjE\nBHeVpgtqe8GU2smlemZr3Ea4KDnkyEsyO8AHzaMD0602QDsMyjnAnvbyE8sd\nKNZ5N+PUEIPApnWtoNC0moCR66kk7Ehlq8jzCrNQNG9foVJzGAPNS81Ok24+\nj1bd1pz41zkftu5Wj4W5AwciJvi9JAnlF0jmsLV54V7YHx94Wwjz8JLTGxF0\nyiGZdEtq5boxVLMNJif29TWAhXbgDjM2OmfS07LrYe6T1QvqE9/16kcWQ+fG\n4LgvLgtjH87dGtwjvNKQxE5Qf1PBJ93YoxWxiu0vhlVvsmO7oo97ugnOcL4m\ndp9hlJz0aAkxBLa+RJ5umbGnHA3wKvoYCTjAmrzt63YAu5j/f5omuIqwAzar\nEQPh\r\n=BXtN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICEg6JphxbwB6gUcB7+v7l3k7wZ6DE7GSIZjlGjKI/hQAiEAyhRbBAGEiqFManJMv+o9Pk5ep34a+HLOq0chzNbpO3Q="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.4.2_1591687355107_0.5602944716305585"},"_hasShrinkwrap":false},"0.5.0-alpha.0":{"name":"vercel-node-dev","version":"0.5.0-alpha.0","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"readme":"<h1 align=\"center\">\n  🧸\n  <br/>\n  vercel-node-dev\n</h1>\n\n<p align=\"center\">\nAn unofficial development CLI for <a href=\"https://vercel.com/\" target=\"_blank\">Vercel</a> applications targeting the <a href=\"https://vercel.com/docs/runtimes#official-runtimes/node-js\" target=\"_blank\">Node.js runtime</a>.\n</p>\n\n<p align=\"center\">\nFast reloads, improved reliability, offline and debugger support.\n</p>\n\n<p align='center'>\n  <a href=\"http://npm.im/vercel-node-dev\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"http://opensource.org/licenses/MIT\"><img alt=\"MIT License\" src=\"https://img.shields.io/npm/l/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"https://travis-ci.org/ctrlplusb/vercel-node-dev\"><img alt=\"Travis\" src=\"https://img.shields.io/travis/ctrlplusb/vercel-node-dev.svg?style=flat-square\" /></a>\n</p>\n\n<p>&nbsp;</p>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Vercel vs Us?](#vercel-vs-us)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Supported Features](#supported-features)\n- [Supported Frameworks](#supported-frameworks)\n- [Limitations](#limitations)\n- [CLI Options](#cli-options)\n- [Specifying a custom develop command](#specifying-a-custom-develop-command)\n- [Debugging your Lambdas](#debugging-your-lambdas)\n- [Bonus: Unit Testing your Lambdas](#bonus-unit-testing-your-lambdas)\n\n<p>&nbsp;</p>\n\n## Features\n\n- Optimised for the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Built against the [Vercel specifications](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Supports Vercel [\"Zero Config\"](https://vercel.com/blog/zero-config) approach\n- Supports both JavaScript or TypeScript lambdas\n- Supports the attaching of a debugger session against lambda execution\n- Supports Vercel custom [routes](https://vercel.com/docs/configuration#project/routes) configuration\n- Fast reloading for any changes to your lambdas\n- Extensively tested and verified via an integration test suite\n- Can be run offline\n- No need for a Vercel project to be configured prior to execution\n- Does not need to be installed as a local dependency\n\n<p>&nbsp;</p>\n\n## Motivation\n\n[Vercel](https://vercel.com/) provides its own development environment via the `vercel dev` command. Whilst this tool is powerful, I was experiencing the following issues:\n\n- **Performance:** The feedback loop when making changes to my lambdas was very slow. After making a change, the subsequent request to the lamda would result in a significant wait for the lambda to be rebuilt and then served.\n- **Reliability:** When making changes to my lambdas the build performance degraded over time, eventually resulting in them becoming unresponsive. The only way I was able to resolve this was to restart the `vercel dev` command, significantly impacting my development flow.\n- **Debugging:** I was unable to attach a debugger instance against my lambdas. Whilst I try not to overuse the debugger, preferring to leverage integration tests, there are times when a debugger session can work wonders at issue discovery.\n- **Usability:** There was a double hit for me here. Firstly, you need to have first set up / linked your project to a project configuration against Vercel. Secondly, and related to the first point, you need to be connected to the internet in order to use the tool.\n\nThe implementation of `vercel-node-dev` addresses these issues; focussing on the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js), which allowed me to create a much more bespoke and optimised development tool.\n\n<p>&nbsp;</p>\n\n## Vercel vs Us?\n\nThis tool is **_not_** meant to be **_competitive_**!\n\nIt is released with good intentions and respect for the Vercel team and community, offering a temporary alternative for those who may be experiencing similar issues with their development flow.\n\nThe `vercel dev` command is still in **beta**. My belief is that the Vercel team will eventually address the issues above, at which point this CLI will be deprecated. Given that we are following the official Vercel specifications, this would be a zero impact move for those using this CLI. You would only need to switch to executing the official `vercel dev` command instead of this one.\n\n<p>&nbsp;</p>\n\n## Installation\n\nWe recommend installing this library globally. This will allow you to quickly and easily use it against any of your Vercel applications, without polluting them with additional dependencies.\n\n```bash\nnpm install -g vercel-node-dev\n```\n\nAfter the installation two CLI commands will be available to you, namely;\n\n- `vercel-node-dev`\n- `vnd` - a shorter aliased version\n\n<p>&nbsp;</p>\n\n## Usage\n\nSimply navigate to the root of the [Vercel](https://vercel.com/) application and execute the CLI.\n\n```bash\nvercel-node-dev\n```\n\nSimilar to the `vercel dev` command we will attempt to bind the development server against port `3000`.\n\nOpen your web browser and browse to `http://localhost:3000`.\n\n<p>&nbsp;</p>\n\n## Supported Features\n\nBelow is a list of the official Vercel features that we support.\n\nI don't add any additional API features in comparison to the official APIs.\n\nThe design goal of this tool is to support as much of the official API as possible, whilst providing an improved development experience.\n\n- The [\"Zero Config\"](https://vercel.com/blog/zero-config) approach promoted by Vercel.\n- TypeScript (`.ts`) or JavaScript (`.js`) lambdas, within the `/api` directory, with filesystem based routing.\n- The ability to [ignore files/directories](https://vercel.com/docs/v2/serverless-functions/introduction#prevent-endpoint-listing) within your `/api` directory from being bound as lambdas.\n- [Path segments](https://vercel.com/docs/v2/serverless-functions/introduction#path-segments) for your lambdas.\n- A [custom build step](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/custom-build-step-for-node-js), which will be executed prior to the execution of your lambdas.\n- Automatic exposure of any environment variables defined within the `.env` file defined in the root of the project. This is inline with the [approach recommended by Vercel](https://vercel.com/docs/v2/build-step#environment-variables) for managing environment variables.\n- Automated [extension of the HTTP Request and Response objects](https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-request-and-response-objects/node-js-helpers) that are passed into your lambdas.\n- Custom [routes](https://vercel.com/docs/configuration#project/routes) configuration.\n\nWe follows the design, API, and features of the official [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js) as closely as possible.\n\nThe [official docs](https://vercel.com/docs/runtimes#official-runtimes/node-js) and [advanced usage docs](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage) should be used as your reference for understanding the above features in detail.\n\n**Todo**\n\nThe following configuration options will be supported in the near future:\n\n- [cleanUrls](https://vercel.com/docs/configuration#project/cleanurls)\n- [trailingSlash](https://vercel.com/docs/configuration#project/trailingslash)\n\n<p>&nbsp;</p>\n\n## Supported Frameworks\n\nI have tested the CLI against the following frameworks, utilising the [\"Zero Config\"](https://vercel.com/blog/zero-config) approach.\n\n- [x] Create React App\n- [x] Create React App + TypeScript\n- [x] Gatsby\n- [x] Vue.js\n- [ ] Svelte\n- [ ] Angular\n- [ ] Ember.js\n- [ ] Hugo\n- [ ] Preact\n- [ ] Docusaurus\n- [ ] Gridsome\n- [ ] Nuxt.js\n- [ ] Eleventy\n- [ ] Hexo\n\n<p>&nbsp;</p>\n\n## Limitations\n\nBelow is a list of the Vercel features that this CLI does not support. These limitations are intentional, and the likelihood is that I will not extend the CLI to support them.\n\n- Support for any of the other runtimes - i.e. Go, Ruby, Python, or bespoke.\n\n  > I feel like Node.js is where Vercel really shines, and IMO feel like they should have gone all in on Node.js rather than supporting an array of runtimes.\n\n- Support for any of the following [`vercel.json` configuration](https://vercel.com/docs/configuration#introduction) options:\n\n  - [headers](https://vercel.com/docs/configuration#project/headers)\n  - [redirects](https://vercel.com/docs/configuration#project/redirects)\n  - [rewrites](https://vercel.com/docs/configuration#project/rewrites)\n\n  > Despair not! All of these configuration options can be represented via the [routes](https://vercel.com/docs/configuration#project/routes) configuration, which is supported.\n\n- Support for the raw AWS lambda API, which is currently [supported by the official Node.js runtime](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/aws-lambda-api)\n\n  > As stated in their docs, this has been exposed to help clients with existing lambdas migrate over to their platform. I'm not convinced this alternative CLI should support this.\n\n- The bespoke [Vercel](https://vercel.com/) 4XX / 5XX error pages.\n\n  > Meh. I return the expected error codes. I'd recommend you implement your own custom error pages in your UI anyways.\n\n- Support for [disabling the Node.js helpers](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/disabling-helpers-for-node-js)\n\n  > This has more of an impact on production environments, where you would want to hyper optimise lambda performance in some cases.\n\n- Support for [Next.js](https://nextjs.org/) projects.\n\n  > Next has it's own development server with bespoke features around the APIs and pages. I would recommend using the `next dev` command instead.\n\n<p>&nbsp;</p>\n\n## CLI Options\n\nThe CLI current supports the following options.\n\n- `--debug-apis` | `-d`\n\n  Setting this flag will enable the debugger against your lambdas.\n\n- `--debug-apis-port [number]` | `-o [number]`\n\n  Allows you to specify the port at which the debugger for your lambdas will run. By default it runs on port `9229`.\n\n- `--port [number]` | `-p [number]`\n\n  Allows you to specify the port at which the `vercel-node-dev` server will run. By default it will attempt to bind to port `3000`.\n\n<p>&nbsp;</p>\n\n## Specifying a custom develop command\n\nIf you aren't using one of the [supported frameworks](#supported-frameworks), or if you would like to customise the develop command, then you can add a `dev` script to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"my-dev-tool -p $PORT\"\n  }\n}\n```\n\n**Note:** It is important that you pass through the `$PORT` environment variable as shown in the example above. This is so that your development server can be correctly managed by `vercel-node-dev`.\n\n<p>&nbsp;</p>\n\n## Debugging your Lambdas\n\nYou can enabled the debugger for your lambdas by providing the respective option to the CLI:\n\n```bash\nvercel-node-dev --debug-apis\n```\n\nThis will start the development server, with the debugger instance running. By default the debugger runs on port `9229`. You can change the port number via the `--debug-apis-port` option.\n\nOnce the debugger is running you can attach to it utilising your tool of choice.\n\n### Debugging via VSCode\n\nBelow is a set of [`code` debug configurations](https://code.visualstudio.com/docs/editor/debugging), allowing you to either start the `vercel-dev-node` instance with the debugger attached, or to attach to an already executing debugger instance.\n\n```jsonc\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    // This will start vercel-node-dev with the debugger attached\n    {\n      \"name\": \"Launch vercel-node-dev\",\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"program\": \"vercel-node-dev\",\n      \"args\": [\"--debug-apis\"],\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"autoAttachChildProcesses\": true,\n      \"protocol\": \"inspector\"\n    },\n    // First run `vercel-node-dev --debug-apis` and then execute this debug\n    // configuration in order to attach to the running debugger.\n    {\n      \"name\": \"Attach to process\",\n      \"type\": \"node\",\n      \"request\": \"attach\"\n    }\n  ]\n}\n```\n\n<p>&nbsp;</p>\n\n## Bonus: Unit Testing your Lambdas\n\nThis tool leverages another library I built, [`vercel-node-server`](https://github.com/ctrlplusb/vercel-node-server), which allows you to create `http` instances of your lambdas. This opens up opportunities for you to write integration or unit tests for you lambdas.\n\nFirstly, install the library as development dependency:\n\n```bash\nnpm install -D vercel-node-server\n```\n\nYou can then write tests for your lambdas similar to the one below:\n\n```javascript\nimport { createServer } from 'vercel-node-server';\nimport listen from 'test-listen';\nimport axios from 'axios';\nimport helloLambda from './api/hello';\n\nlet server;\nlet url;\n\nbeforeAll(async () => {\n  server = createServer(routeUnderTest);\n  url = await listen(server);\n});\n\nafterAll(() => {\n  server.close();\n});\n\nit('should return the expected response', async () => {\n  const response = await axios.get(url, { params: { name: 'Pearl' } });\n  expect(response.data).toBe('Hello Pearl');\n});\n```\n","readmeFilename":"README.md","gitHead":"1f56cd048136261eebd8278f92683ce65fd66965","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.5.0-alpha.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-cUPLDuoaYXJDPKFXz3ZKbrOxMbvwm3q03DmzE7WQ371Kcc6QCQLLtBSraEJ4uIbCgliErH7re1UUxzlbDld18w==","shasum":"1e067c6223f5b00409d53d505f906af116d7e844","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.5.0-alpha.0.tgz","fileCount":18,"unpackedSize":65526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3z4QCRA9TVsSAnZWagAA9d4QAKQ3ejGuYHx8jHQy6xjc\nbDEEBCkDPwPURVrUrvpYtFZ7tFYWxD3BziF7mciZB2ZbWEqTMIZQBocj+AAc\noEAq3ES2+ulNLlmkCGfBICL27o7ZdoIS3dm3u98vPjBZahlb46wPt/vDnfkQ\nwmETYWxBZ2/ikp6TYZEmNDmF+FgNQmelz0QtuHCfiMwy0AwkGq1teoXCF0oj\nh9DDIIpdGH2SZqXdgupsTdst5E/D5buwU9mF9zW1FgYg1aTChwAVaR/SBrF9\nOuy0Dta+habdDOrGgcPZm1M5jISHfUzVhaGMQ50li9gI9jifiFn+MngYEz89\nf1F8uhn9zwGGkHkOAh5qNxVn6gYINTpMpg+tXH+Eazz6AtwWLkuNVrodL8JC\nhL9tcS2QkpatrNvlW0+923VgfQgF+iS3FOoZVdzGrsyQpC+UHzok9vmfpov6\nlL/8EES2hWMCU7Y34z+MF39g19Ye3l4Q5Y50VypW0UXwqQd3DRTB5mzYCY1p\n4nZ5y5l4SIFtYIAEtAq6kMtRXfN2nY1EsCuLfByp2a/u7rNCzfy7DWv1VGxX\ngau4gVfkwoaUuXB8EJfftKAvmcSiWNNY9ymIkUne/PH/hpgicPB2INfdIxP4\nW17G8HNjovST2/zmHwvHCYGDwBjkV5XCi7mPc+c11Zj6EpnJGul1OAEcXYNE\nZ1g6\r\n=8iLQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDjzCYEYukKT+P5btmBFKC7+EQJDKEKhwRFr5LCX7tT4AiEAhp7JnlxDL9NY/bIRsO6tpgkHE7tS+h3Ynzf8FlPyjH0="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.5.0-alpha.0_1591688720494_0.2898784851285239"},"_hasShrinkwrap":false},"0.5.0-alpha.1":{"name":"vercel-node-dev","version":"0.5.0-alpha.1","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"readme":"<h1 align=\"center\">\n  🧸\n  <br/>\n  vercel-node-dev\n</h1>\n\n<p align=\"center\">\nAn unofficial development CLI for <a href=\"https://vercel.com/\" target=\"_blank\">Vercel</a> applications targeting the <a href=\"https://vercel.com/docs/runtimes#official-runtimes/node-js\" target=\"_blank\">Node.js runtime</a>.\n</p>\n\n<p align=\"center\">\nFast reloads, improved reliability, offline and debugger support.\n</p>\n\n<p align='center'>\n  <a href=\"http://npm.im/vercel-node-dev\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"http://opensource.org/licenses/MIT\"><img alt=\"MIT License\" src=\"https://img.shields.io/npm/l/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"https://travis-ci.org/ctrlplusb/vercel-node-dev\"><img alt=\"Travis\" src=\"https://img.shields.io/travis/ctrlplusb/vercel-node-dev.svg?style=flat-square\" /></a>\n</p>\n\n<p>&nbsp;</p>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Vercel vs Us?](#vercel-vs-us)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Supported Features](#supported-features)\n- [Supported Frameworks](#supported-frameworks)\n- [Limitations](#limitations)\n- [CLI Options](#cli-options)\n- [Specifying a custom develop command](#specifying-a-custom-develop-command)\n- [Debugging your Lambdas](#debugging-your-lambdas)\n- [Bonus: Unit Testing your Lambdas](#bonus-unit-testing-your-lambdas)\n\n<p>&nbsp;</p>\n\n## Features\n\n- Optimised for the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Built against the [Vercel specifications](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Supports Vercel [\"Zero Config\"](https://vercel.com/blog/zero-config) approach\n- Supports both JavaScript or TypeScript lambdas\n- Supports the attaching of a debugger session against lambda execution\n- Supports Vercel custom [routes](https://vercel.com/docs/configuration#project/routes) configuration\n- Fast reloading for any changes to your lambdas\n- Extensively tested and verified via an integration test suite\n- Can be run offline\n- No need for a Vercel project to be configured prior to execution\n- Does not need to be installed as a local dependency\n\n<p>&nbsp;</p>\n\n## Motivation\n\n[Vercel](https://vercel.com/) provides its own development environment via the `vercel dev` command. Whilst this tool is powerful, I was experiencing the following issues:\n\n- **Performance:** The feedback loop when making changes to my lambdas was very slow. After making a change, the subsequent request to the lamda would result in a significant wait for the lambda to be rebuilt and then served.\n- **Reliability:** When making changes to my lambdas the build performance degraded over time, eventually resulting in them becoming unresponsive. The only way I was able to resolve this was to restart the `vercel dev` command, significantly impacting my development flow.\n- **Debugging:** I was unable to attach a debugger instance against my lambdas. Whilst I try not to overuse the debugger, preferring to leverage integration tests, there are times when a debugger session can work wonders at issue discovery.\n- **Usability:** There was a double hit for me here. Firstly, you need to have first set up / linked your project to a project configuration against Vercel. Secondly, and related to the first point, you need to be connected to the internet in order to use the tool.\n\nThe implementation of `vercel-node-dev` addresses these issues; focussing on the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js), which allowed me to create a much more bespoke and optimised development tool.\n\n<p>&nbsp;</p>\n\n## Vercel vs Us?\n\nThis tool is **_not_** meant to be **_competitive_**!\n\nIt is released with good intentions and respect for the Vercel team and community, offering a temporary alternative for those who may be experiencing similar issues with their development flow.\n\nThe `vercel dev` command is still in **beta**. My belief is that the Vercel team will eventually address the issues above, at which point this CLI will be deprecated. Given that we are following the official Vercel specifications, this would be a zero impact move for those using this CLI. You would only need to switch to executing the official `vercel dev` command instead of this one.\n\n<p>&nbsp;</p>\n\n## Installation\n\nWe recommend installing this library globally. This will allow you to quickly and easily use it against any of your Vercel applications, without polluting them with additional dependencies.\n\n```bash\nnpm install -g vercel-node-dev\n```\n\nAfter the installation two CLI commands will be available to you, namely;\n\n- `vercel-node-dev`\n- `vnd` - a shorter aliased version\n\n<p>&nbsp;</p>\n\n## Usage\n\nSimply navigate to the root of the [Vercel](https://vercel.com/) application and execute the CLI.\n\n```bash\nvercel-node-dev\n```\n\nSimilar to the `vercel dev` command we will attempt to bind the development server against port `3000`.\n\nOpen your web browser and browse to `http://localhost:3000`.\n\n<p>&nbsp;</p>\n\n## Supported Features\n\nBelow is a list of the official Vercel features that we support.\n\nI don't add any additional API features in comparison to the official APIs.\n\nThe design goal of this tool is to support as much of the official API as possible, whilst providing an improved development experience.\n\n- The [\"Zero Config\"](https://vercel.com/blog/zero-config) approach promoted by Vercel.\n- TypeScript (`.ts`) or JavaScript (`.js`) lambdas, within the `/api` directory, with filesystem based routing.\n- The ability to [ignore files/directories](https://vercel.com/docs/v2/serverless-functions/introduction#prevent-endpoint-listing) within your `/api` directory from being bound as lambdas.\n- [Path segments](https://vercel.com/docs/v2/serverless-functions/introduction#path-segments) for your lambdas.\n- A [custom build step](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/custom-build-step-for-node-js), which will be executed prior to the execution of your lambdas.\n- Automatic exposure of any environment variables defined within the `.env` file defined in the root of the project. This is inline with the [approach recommended by Vercel](https://vercel.com/docs/v2/build-step#environment-variables) for managing environment variables.\n- Automated [extension of the HTTP Request and Response objects](https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-request-and-response-objects/node-js-helpers) that are passed into your lambdas.\n- Custom [routes](https://vercel.com/docs/configuration#project/routes) configuration.\n\nWe follows the design, API, and features of the official [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js) as closely as possible.\n\nThe [official docs](https://vercel.com/docs/runtimes#official-runtimes/node-js) and [advanced usage docs](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage) should be used as your reference for understanding the above features in detail.\n\n**Todo**\n\nThe following configuration options will be supported in the near future:\n\n- [cleanUrls](https://vercel.com/docs/configuration#project/cleanurls)\n- [trailingSlash](https://vercel.com/docs/configuration#project/trailingslash)\n\n<p>&nbsp;</p>\n\n## Supported Frameworks\n\nI have tested the CLI against the following frameworks, utilising the [\"Zero Config\"](https://vercel.com/blog/zero-config) approach.\n\n- [x] Create React App\n- [x] Create React App + TypeScript\n- [x] Gatsby\n- [x] Vue.js\n- [ ] Svelte\n- [ ] Angular\n- [ ] Ember.js\n- [ ] Hugo\n- [ ] Preact\n- [ ] Docusaurus\n- [ ] Gridsome\n- [ ] Nuxt.js\n- [ ] Eleventy\n- [ ] Hexo\n\n<p>&nbsp;</p>\n\n## Limitations\n\nBelow is a list of the Vercel features that this CLI does not support. These limitations are intentional, and the likelihood is that I will not extend the CLI to support them.\n\n- Support for any of the other runtimes - i.e. Go, Ruby, Python, or bespoke.\n\n  > I feel like Node.js is where Vercel really shines, and IMO feel like they should have gone all in on Node.js rather than supporting an array of runtimes.\n\n- Support for any of the following [`vercel.json` configuration](https://vercel.com/docs/configuration#introduction) options:\n\n  - [headers](https://vercel.com/docs/configuration#project/headers)\n  - [redirects](https://vercel.com/docs/configuration#project/redirects)\n  - [rewrites](https://vercel.com/docs/configuration#project/rewrites)\n\n  > Despair not! All of these configuration options can be represented via the [routes](https://vercel.com/docs/configuration#project/routes) configuration, which is supported.\n\n- Support for the raw AWS lambda API, which is currently [supported by the official Node.js runtime](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/aws-lambda-api)\n\n  > As stated in their docs, this has been exposed to help clients with existing lambdas migrate over to their platform. I'm not convinced this alternative CLI should support this.\n\n- The bespoke [Vercel](https://vercel.com/) 4XX / 5XX error pages.\n\n  > Meh. I return the expected error codes. I'd recommend you implement your own custom error pages in your UI anyways.\n\n- Support for [disabling the Node.js helpers](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/disabling-helpers-for-node-js)\n\n  > This has more of an impact on production environments, where you would want to hyper optimise lambda performance in some cases.\n\n- Support for [Next.js](https://nextjs.org/) projects.\n\n  > Next has it's own development server with bespoke features around the APIs and pages. I would recommend using the `next dev` command instead.\n\n<p>&nbsp;</p>\n\n## CLI Options\n\nThe CLI current supports the following options.\n\n- `--debug-apis` | `-d`\n\n  Setting this flag will enable the debugger against your lambdas.\n\n- `--debug-apis-port [number]` | `-o [number]`\n\n  Allows you to specify the port at which the debugger for your lambdas will run. By default it runs on port `9229`.\n\n- `--port [number]` | `-p [number]`\n\n  Allows you to specify the port at which the `vercel-node-dev` server will run. By default it will attempt to bind to port `3000`.\n\n<p>&nbsp;</p>\n\n## Specifying a custom develop command\n\nIf you aren't using one of the [supported frameworks](#supported-frameworks), or if you would like to customise the develop command, then you can add a `dev` script to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"my-dev-tool -p $PORT\"\n  }\n}\n```\n\n**Note:** It is important that you pass through the `$PORT` environment variable as shown in the example above. This is so that your development server can be correctly managed by `vercel-node-dev`.\n\n<p>&nbsp;</p>\n\n## Debugging your Lambdas\n\nYou can enabled the debugger for your lambdas by providing the respective option to the CLI:\n\n```bash\nvercel-node-dev --debug-apis\n```\n\nThis will start the development server, with the debugger instance running. By default the debugger runs on port `9229`. You can change the port number via the `--debug-apis-port` option.\n\nOnce the debugger is running you can attach to it utilising your tool of choice.\n\n### Debugging via VSCode\n\nBelow is a set of [`code` debug configurations](https://code.visualstudio.com/docs/editor/debugging), allowing you to either start the `vercel-dev-node` instance with the debugger attached, or to attach to an already executing debugger instance.\n\n```jsonc\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    // This will start vercel-node-dev with the debugger attached\n    {\n      \"name\": \"Launch vercel-node-dev\",\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"program\": \"vercel-node-dev\",\n      \"args\": [\"--debug-apis\"],\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"autoAttachChildProcesses\": true,\n      \"protocol\": \"inspector\"\n    },\n    // First run `vercel-node-dev --debug-apis` and then execute this debug\n    // configuration in order to attach to the running debugger.\n    {\n      \"name\": \"Attach to process\",\n      \"type\": \"node\",\n      \"request\": \"attach\"\n    }\n  ]\n}\n```\n\n<p>&nbsp;</p>\n\n## Bonus: Unit Testing your Lambdas\n\nThis tool leverages another library I built, [`vercel-node-server`](https://github.com/ctrlplusb/vercel-node-server), which allows you to create `http` instances of your lambdas. This opens up opportunities for you to write integration or unit tests for you lambdas.\n\nFirstly, install the library as development dependency:\n\n```bash\nnpm install -D vercel-node-server\n```\n\nYou can then write tests for your lambdas similar to the one below:\n\n```javascript\nimport { createServer } from 'vercel-node-server';\nimport listen from 'test-listen';\nimport axios from 'axios';\nimport helloLambda from './api/hello';\n\nlet server;\nlet url;\n\nbeforeAll(async () => {\n  server = createServer(routeUnderTest);\n  url = await listen(server);\n});\n\nafterAll(() => {\n  server.close();\n});\n\nit('should return the expected response', async () => {\n  const response = await axios.get(url, { params: { name: 'Pearl' } });\n  expect(response.data).toBe('Hello Pearl');\n});\n```\n","readmeFilename":"README.md","gitHead":"1f56cd048136261eebd8278f92683ce65fd66965","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.5.0-alpha.1","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-1xM7Iy8GabQ1FVEXr8zoLtxRVndEjHG15/NiOVQAwP5lnDJmtviL23h49egvKrsjvOI2/tEs8ZLPniLBsBcl7w==","shasum":"9fe4374b87b3bd99913176fe56d72b613fe74ace","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.5.0-alpha.1.tgz","fileCount":18,"unpackedSize":65509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3z7UCRA9TVsSAnZWagAA9tEP/jb7YHzDhAFFBMki6Y3n\nahQIaDd/Zjg+imHqoUeBwFlRxKDSGz5asB4KawnCoBcHgqqzFbR3+PlzyAKI\nVgiNj1LzzZYDPlaxP+RdMrcQVb4PzzTOFHCdfkywXRJC+kGfqZWTLGFJPgwF\n3EUPRv5Kg94BsHVV2XVyBkbtG3RZI9U+I11yQ7+O1Isahz16foaaBEhSdnZf\nYhF0xANjriDb7z4IWujIKHa0fiLGnR7kqbXuEv7U+j9qtO/WAAwDWqsZyQEF\n1ZC7mvrAx8ZzST8wMNDqU2Y4c0tKBwKALzNB8h5P42TftQsa2Li2ZMitojNE\nFoWdSdqB9V+2xb9VDPYhzeM4Pgeeu2SuYSm7Ny9TBXqh8LLeU02R56USvfDs\n+e+kQmTbok8jR/KMu7uMlK9JypFZOwSXcsYLnNDiP4XQi/6WkMj+zYaBkKLf\nuMdjZfKRxaZDCsBSrXcqeqNtQM2COThhwuBZHnkGAMAvsDD9SAbVNECxkzu7\nVick9LWjH/TZ4ggOVUA8CbJH+nLyEWX5UPY/htth6wT/W5xMxQdJB9ANy/yJ\nxuvBcv1pdI6R7tf5hoXXNMIq0PssQzMtmPDM6qxcC0fiRFIgjl3JkUJ2V2PH\ntPKhuYUEyeBHJEsWf7xK1Df+tjsO1yQOeG9bZeQqPRamnf099n7/lAKLwdLc\ndFjP\r\n=WauD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRjWASFcSuNbMJrq6S4eUrqP/jtyqwAENS6QSUiTCGfgIgLrjX5H/0Vi3uC9yqC1yOlNnv4242+jV6PEoFLJVnobA="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.5.0-alpha.1_1591688916405_0.09435176843690618"},"_hasShrinkwrap":false},"0.5.0-alpha.2":{"name":"vercel-node-dev","version":"0.5.0-alpha.2","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"readme":"<h1 align=\"center\">\n  🧸\n  <br/>\n  vercel-node-dev\n</h1>\n\n<p align=\"center\">\nAn unofficial development CLI for <a href=\"https://vercel.com/\" target=\"_blank\">Vercel</a> applications targeting the <a href=\"https://vercel.com/docs/runtimes#official-runtimes/node-js\" target=\"_blank\">Node.js runtime</a>.\n</p>\n\n<p align=\"center\">\nFast reloads, improved reliability, offline and debugger support.\n</p>\n\n<p align='center'>\n  <a href=\"http://npm.im/vercel-node-dev\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"http://opensource.org/licenses/MIT\"><img alt=\"MIT License\" src=\"https://img.shields.io/npm/l/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"https://travis-ci.org/ctrlplusb/vercel-node-dev\"><img alt=\"Travis\" src=\"https://img.shields.io/travis/ctrlplusb/vercel-node-dev.svg?style=flat-square\" /></a>\n</p>\n\n<p>&nbsp;</p>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Vercel vs Us?](#vercel-vs-us)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Supported Features](#supported-features)\n- [Supported Frameworks](#supported-frameworks)\n- [Limitations](#limitations)\n- [CLI Options](#cli-options)\n- [Specifying a custom develop command](#specifying-a-custom-develop-command)\n- [Debugging your Lambdas](#debugging-your-lambdas)\n- [Bonus: Unit Testing your Lambdas](#bonus-unit-testing-your-lambdas)\n\n<p>&nbsp;</p>\n\n## Features\n\n- Optimised for the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Built against the [Vercel specifications](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Supports Vercel [\"Zero Config\"](https://vercel.com/blog/zero-config) approach\n- Supports both JavaScript or TypeScript lambdas\n- Supports the attaching of a debugger session against lambda execution\n- Supports Vercel custom [routes](https://vercel.com/docs/configuration#project/routes) configuration\n- Fast reloading for any changes to your lambdas\n- Extensively tested and verified via an integration test suite\n- Can be run offline\n- No need for a Vercel project to be configured prior to execution\n- Does not need to be installed as a local dependency\n\n<p>&nbsp;</p>\n\n## Motivation\n\n[Vercel](https://vercel.com/) provides its own development environment via the `vercel dev` command. Whilst this tool is powerful, I was experiencing the following issues:\n\n- **Performance:** The feedback loop when making changes to my lambdas was very slow. After making a change, the subsequent request to the lamda would result in a significant wait for the lambda to be rebuilt and then served.\n- **Reliability:** When making changes to my lambdas the build performance degraded over time, eventually resulting in them becoming unresponsive. The only way I was able to resolve this was to restart the `vercel dev` command, significantly impacting my development flow.\n- **Debugging:** I was unable to attach a debugger instance against my lambdas. Whilst I try not to overuse the debugger, preferring to leverage integration tests, there are times when a debugger session can work wonders at issue discovery.\n- **Usability:** There was a double hit for me here. Firstly, you need to have first set up / linked your project to a project configuration against Vercel. Secondly, and related to the first point, you need to be connected to the internet in order to use the tool.\n\nThe implementation of `vercel-node-dev` addresses these issues; focussing on the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js), which allowed me to create a much more bespoke and optimised development tool.\n\n<p>&nbsp;</p>\n\n## Vercel vs Us?\n\nThis tool is **_not_** meant to be **_competitive_**!\n\nIt is released with good intentions and respect for the Vercel team and community, offering a temporary alternative for those who may be experiencing similar issues with their development flow.\n\nThe `vercel dev` command is still in **beta**. My belief is that the Vercel team will eventually address the issues above, at which point this CLI will be deprecated. Given that we are following the official Vercel specifications, this would be a zero impact move for those using this CLI. You would only need to switch to executing the official `vercel dev` command instead of this one.\n\n<p>&nbsp;</p>\n\n## Installation\n\nWe recommend installing this library globally. This will allow you to quickly and easily use it against any of your Vercel applications, without polluting them with additional dependencies.\n\n```bash\nnpm install -g vercel-node-dev\n```\n\nAfter the installation two CLI commands will be available to you, namely;\n\n- `vercel-node-dev`\n- `vnd` - a shorter aliased version\n\n<p>&nbsp;</p>\n\n## Usage\n\nSimply navigate to the root of the [Vercel](https://vercel.com/) application and execute the CLI.\n\n```bash\nvercel-node-dev\n```\n\nSimilar to the `vercel dev` command we will attempt to bind the development server against port `3000`.\n\nOpen your web browser and browse to `http://localhost:3000`.\n\n<p>&nbsp;</p>\n\n## Supported Features\n\nBelow is a list of the official Vercel features that we support.\n\nI don't add any additional API features in comparison to the official APIs.\n\nThe design goal of this tool is to support as much of the official API as possible, whilst providing an improved development experience.\n\n- The [\"Zero Config\"](https://vercel.com/blog/zero-config) approach promoted by Vercel.\n- TypeScript (`.ts`) or JavaScript (`.js`) lambdas, within the `/api` directory, with filesystem based routing.\n- The ability to [ignore files/directories](https://vercel.com/docs/v2/serverless-functions/introduction#prevent-endpoint-listing) within your `/api` directory from being bound as lambdas.\n- [Path segments](https://vercel.com/docs/v2/serverless-functions/introduction#path-segments) for your lambdas.\n- A [custom build step](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/custom-build-step-for-node-js), which will be executed prior to the execution of your lambdas.\n- Automatic exposure of any environment variables defined within the `.env` file defined in the root of the project. This is inline with the [approach recommended by Vercel](https://vercel.com/docs/v2/build-step#environment-variables) for managing environment variables.\n- Automated [extension of the HTTP Request and Response objects](https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-request-and-response-objects/node-js-helpers) that are passed into your lambdas.\n- Custom [routes](https://vercel.com/docs/configuration#project/routes) configuration.\n\nWe follows the design, API, and features of the official [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js) as closely as possible.\n\nThe [official docs](https://vercel.com/docs/runtimes#official-runtimes/node-js) and [advanced usage docs](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage) should be used as your reference for understanding the above features in detail.\n\n**Todo**\n\nThe following configuration options will be supported in the near future:\n\n- [cleanUrls](https://vercel.com/docs/configuration#project/cleanurls)\n- [trailingSlash](https://vercel.com/docs/configuration#project/trailingslash)\n\n<p>&nbsp;</p>\n\n## Supported Frameworks\n\nI have tested the CLI against the following frameworks, utilising the [\"Zero Config\"](https://vercel.com/blog/zero-config) approach.\n\n- [x] Create React App\n- [x] Create React App + TypeScript\n- [x] Gatsby\n- [x] Vue.js\n- [ ] Svelte\n- [ ] Angular\n- [ ] Ember.js\n- [ ] Hugo\n- [ ] Preact\n- [ ] Docusaurus\n- [ ] Gridsome\n- [ ] Nuxt.js\n- [ ] Eleventy\n- [ ] Hexo\n\n<p>&nbsp;</p>\n\n## Limitations\n\nBelow is a list of the Vercel features that this CLI does not support. These limitations are intentional, and the likelihood is that I will not extend the CLI to support them.\n\n- Support for any of the other runtimes - i.e. Go, Ruby, Python, or bespoke.\n\n  > I feel like Node.js is where Vercel really shines, and IMO feel like they should have gone all in on Node.js rather than supporting an array of runtimes.\n\n- Support for any of the following [`vercel.json` configuration](https://vercel.com/docs/configuration#introduction) options:\n\n  - [headers](https://vercel.com/docs/configuration#project/headers)\n  - [redirects](https://vercel.com/docs/configuration#project/redirects)\n  - [rewrites](https://vercel.com/docs/configuration#project/rewrites)\n\n  > Despair not! All of these configuration options can be represented via the [routes](https://vercel.com/docs/configuration#project/routes) configuration, which is supported.\n\n- Support for the raw AWS lambda API, which is currently [supported by the official Node.js runtime](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/aws-lambda-api)\n\n  > As stated in their docs, this has been exposed to help clients with existing lambdas migrate over to their platform. I'm not convinced this alternative CLI should support this.\n\n- The bespoke [Vercel](https://vercel.com/) 4XX / 5XX error pages.\n\n  > Meh. I return the expected error codes. I'd recommend you implement your own custom error pages in your UI anyways.\n\n- Support for [disabling the Node.js helpers](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/disabling-helpers-for-node-js)\n\n  > This has more of an impact on production environments, where you would want to hyper optimise lambda performance in some cases.\n\n- Support for [Next.js](https://nextjs.org/) projects.\n\n  > Next has it's own development server with bespoke features around the APIs and pages. I would recommend using the `next dev` command instead.\n\n<p>&nbsp;</p>\n\n## CLI Options\n\nThe CLI current supports the following options.\n\n- `--debug-apis` | `-d`\n\n  Setting this flag will enable the debugger against your lambdas.\n\n- `--debug-apis-port [number]` | `-o [number]`\n\n  Allows you to specify the port at which the debugger for your lambdas will run. By default it runs on port `9229`.\n\n- `--port [number]` | `-p [number]`\n\n  Allows you to specify the port at which the `vercel-node-dev` server will run. By default it will attempt to bind to port `3000`.\n\n<p>&nbsp;</p>\n\n## Specifying a custom develop command\n\nIf you aren't using one of the [supported frameworks](#supported-frameworks), or if you would like to customise the develop command, then you can add a `dev` script to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"my-dev-tool -p $PORT\"\n  }\n}\n```\n\n**Note:** It is important that you pass through the `$PORT` environment variable as shown in the example above. This is so that your development server can be correctly managed by `vercel-node-dev`.\n\n<p>&nbsp;</p>\n\n## Debugging your Lambdas\n\nYou can enabled the debugger for your lambdas by providing the respective option to the CLI:\n\n```bash\nvercel-node-dev --debug-apis\n```\n\nThis will start the development server, with the debugger instance running. By default the debugger runs on port `9229`. You can change the port number via the `--debug-apis-port` option.\n\nOnce the debugger is running you can attach to it utilising your tool of choice.\n\n### Debugging via VSCode\n\nBelow is a set of [`code` debug configurations](https://code.visualstudio.com/docs/editor/debugging), allowing you to either start the `vercel-dev-node` instance with the debugger attached, or to attach to an already executing debugger instance.\n\n```jsonc\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    // This will start vercel-node-dev with the debugger attached\n    {\n      \"name\": \"Launch vercel-node-dev\",\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"program\": \"vercel-node-dev\",\n      \"args\": [\"--debug-apis\"],\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"autoAttachChildProcesses\": true,\n      \"protocol\": \"inspector\"\n    },\n    // First run `vercel-node-dev --debug-apis` and then execute this debug\n    // configuration in order to attach to the running debugger.\n    {\n      \"name\": \"Attach to process\",\n      \"type\": \"node\",\n      \"request\": \"attach\"\n    }\n  ]\n}\n```\n\n<p>&nbsp;</p>\n\n## Bonus: Unit Testing your Lambdas\n\nThis tool leverages another library I built, [`vercel-node-server`](https://github.com/ctrlplusb/vercel-node-server), which allows you to create `http` instances of your lambdas. This opens up opportunities for you to write integration or unit tests for you lambdas.\n\nFirstly, install the library as development dependency:\n\n```bash\nnpm install -D vercel-node-server\n```\n\nYou can then write tests for your lambdas similar to the one below:\n\n```javascript\nimport { createServer } from 'vercel-node-server';\nimport listen from 'test-listen';\nimport axios from 'axios';\nimport helloLambda from './api/hello';\n\nlet server;\nlet url;\n\nbeforeAll(async () => {\n  server = createServer(routeUnderTest);\n  url = await listen(server);\n});\n\nafterAll(() => {\n  server.close();\n});\n\nit('should return the expected response', async () => {\n  const response = await axios.get(url, { params: { name: 'Pearl' } });\n  expect(response.data).toBe('Hello Pearl');\n});\n```\n","readmeFilename":"README.md","gitHead":"1f56cd048136261eebd8278f92683ce65fd66965","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.5.0-alpha.2","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/+7Ut+lWvdqDKEwJRL3dCQNMmhys2nuZZ6e7C04WUCUh7i19RtnxW3C+FcnInR/5jtz1grdXZjWjPOi0NaUYHQ==","shasum":"96d6a5a4b230dcfdd2871efa5bfc99fdc05abaf5","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.5.0-alpha.2.tgz","fileCount":18,"unpackedSize":65511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3z+NCRA9TVsSAnZWagAAj4wQAIHBgcZUTTHqkZF4WppM\nDTh0eiwQLWvNTd2PUtRkUOuBiaAmXjhIt0yqp0Jw/4w7ZUuF02p/9QSsuyE8\nxB0uhXvEm6nFcSjK6zLgQao54HNrGQWYW/49KYI7faymY75bCZbfyP6f6LIc\nZOPUfpJvwFfDO20fCmllsbIaCx/zuNMvyK0I24AoiEnI740EHUnOjkBcOL+I\nv1OlCeFozTH6qpBH37HebVWtqMLz1HRlRScEd1HZFSl5dAhX+3DFqDpZX8XB\nrxvZcg7aix9SiXkFR08zVdA5WyrPHMo2wxZPHEIggzYB5G9l8h0edjz3ZDGA\n4h5Ubb5lVkoR8S3K9wpfh3qsp7ABeZR0Q+rldDnbYCrtJtykbIUwj9abwiJH\nbFkljmyQrGto361QPHwj28uSeNI1SLwdu+LKpcRoWgJVRhwX5h3l27ejEkoi\n1HIyEtU++1EZqxGvnaVckUot1wwKB6O80TD+494jWqFxXLI6dizJAhB9VhWS\n87XwNWpGrhGRZPwrTqAhddQIjyc0lKy2lzH7kEHJGeDN+fIXSZOKG35S5qMj\nZef07jkLVpLCFdbl0RTWM/3Q7jBCP+pZXBq0p16G6+EMv1hMg2W3zMrqlFMF\nK3l1Fqjsnc37Ozn5RyUSnstaCbpN5tdRFSpaNl4wrQn4dQK34Q19eEQg6W6a\nUVtX\r\n=6ybf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUfC1fTbVJAXML1Z2PCh3hSvvszCmEQlWbjCiJcGifBwIhAJwbjHVPOIgUgVxTljq51E686TIqt9ZTxcT981/H5wnl"}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.5.0-alpha.2_1591689101000_0.8122578218739591"},"_hasShrinkwrap":false},"0.5.0-alpha.3":{"name":"vercel-node-dev","version":"0.5.0-alpha.3","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"readme":"<h1 align=\"center\">\n  🧸\n  <br/>\n  vercel-node-dev\n</h1>\n\n<p align=\"center\">\nAn unofficial development CLI for <a href=\"https://vercel.com/\" target=\"_blank\">Vercel</a> applications targeting the <a href=\"https://vercel.com/docs/runtimes#official-runtimes/node-js\" target=\"_blank\">Node.js runtime</a>.\n</p>\n\n<p align=\"center\">\nFast reloads, improved reliability, offline and debugger support.\n</p>\n\n<p align='center'>\n  <a href=\"http://npm.im/vercel-node-dev\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"http://opensource.org/licenses/MIT\"><img alt=\"MIT License\" src=\"https://img.shields.io/npm/l/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"https://travis-ci.org/ctrlplusb/vercel-node-dev\"><img alt=\"Travis\" src=\"https://img.shields.io/travis/ctrlplusb/vercel-node-dev.svg?style=flat-square\" /></a>\n</p>\n\n<p>&nbsp;</p>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Vercel vs Us?](#vercel-vs-us)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Supported Features](#supported-features)\n- [Supported Frameworks](#supported-frameworks)\n- [Limitations](#limitations)\n- [CLI Options](#cli-options)\n- [Specifying a custom develop command](#specifying-a-custom-develop-command)\n- [Debugging your Lambdas](#debugging-your-lambdas)\n- [Bonus: Unit Testing your Lambdas](#bonus-unit-testing-your-lambdas)\n\n<p>&nbsp;</p>\n\n## Features\n\n- Optimised for the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Built against the [Vercel specifications](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Supports Vercel [\"Zero Config\"](https://vercel.com/blog/zero-config) approach\n- Supports both JavaScript or TypeScript lambdas\n- Supports the attaching of a debugger session against lambda execution\n- Supports Vercel custom [routes](https://vercel.com/docs/configuration#project/routes) configuration\n- Fast reloading for any changes to your lambdas\n- Extensively tested and verified via an integration test suite\n- Can be run offline\n- No need for a Vercel project to be configured prior to execution\n- Does not need to be installed as a local dependency\n\n<p>&nbsp;</p>\n\n## Motivation\n\n[Vercel](https://vercel.com/) provides its own development environment via the `vercel dev` command. Whilst this tool is powerful, I was experiencing the following issues:\n\n- **Performance:** The feedback loop when making changes to my lambdas was very slow. After making a change, the subsequent request to the lamda would result in a significant wait for the lambda to be rebuilt and then served.\n- **Reliability:** When making changes to my lambdas the build performance degraded over time, eventually resulting in them becoming unresponsive. The only way I was able to resolve this was to restart the `vercel dev` command, significantly impacting my development flow.\n- **Debugging:** I was unable to attach a debugger instance against my lambdas. Whilst I try not to overuse the debugger, preferring to leverage integration tests, there are times when a debugger session can work wonders at issue discovery.\n- **Usability:** There was a double hit for me here. Firstly, you need to have first set up / linked your project to a project configuration against Vercel. Secondly, and related to the first point, you need to be connected to the internet in order to use the tool.\n\nThe implementation of `vercel-node-dev` addresses these issues; focussing on the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js), which allowed me to create a much more bespoke and optimised development tool.\n\n<p>&nbsp;</p>\n\n## Vercel vs Us?\n\nThis tool is **_not_** meant to be **_competitive_**!\n\nIt is released with good intentions and respect for the Vercel team and community, offering a temporary alternative for those who may be experiencing similar issues with their development flow.\n\nThe `vercel dev` command is still in **beta**. My belief is that the Vercel team will eventually address the issues above, at which point this CLI will be deprecated. Given that we are following the official Vercel specifications, this would be a zero impact move for those using this CLI. You would only need to switch to executing the official `vercel dev` command instead of this one.\n\n<p>&nbsp;</p>\n\n## Installation\n\nWe recommend installing this library globally. This will allow you to quickly and easily use it against any of your Vercel applications, without polluting them with additional dependencies.\n\n```bash\nnpm install -g vercel-node-dev\n```\n\nAfter the installation two CLI commands will be available to you, namely;\n\n- `vercel-node-dev`\n- `vnd` - a shorter aliased version\n\n<p>&nbsp;</p>\n\n## Usage\n\nSimply navigate to the root of the [Vercel](https://vercel.com/) application and execute the CLI.\n\n```bash\nvercel-node-dev\n```\n\nSimilar to the `vercel dev` command we will attempt to bind the development server against port `3000`.\n\nOpen your web browser and browse to `http://localhost:3000`.\n\n<p>&nbsp;</p>\n\n## Supported Features\n\nBelow is a list of the official Vercel features that we support.\n\nI don't add any additional API features in comparison to the official APIs.\n\nThe design goal of this tool is to support as much of the official API as possible, whilst providing an improved development experience.\n\n- The [\"Zero Config\"](https://vercel.com/blog/zero-config) approach promoted by Vercel.\n- TypeScript (`.ts`) or JavaScript (`.js`) lambdas, within the `/api` directory, with filesystem based routing.\n- The ability to [ignore files/directories](https://vercel.com/docs/v2/serverless-functions/introduction#prevent-endpoint-listing) within your `/api` directory from being bound as lambdas.\n- [Path segments](https://vercel.com/docs/v2/serverless-functions/introduction#path-segments) for your lambdas.\n- A [custom build step](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/custom-build-step-for-node-js), which will be executed prior to the execution of your lambdas.\n- Automatic exposure of any environment variables defined within the `.env` file defined in the root of the project. This is inline with the [approach recommended by Vercel](https://vercel.com/docs/v2/build-step#environment-variables) for managing environment variables.\n- Automated [extension of the HTTP Request and Response objects](https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-request-and-response-objects/node-js-helpers) that are passed into your lambdas.\n- Custom [routes](https://vercel.com/docs/configuration#project/routes) configuration.\n\nWe follows the design, API, and features of the official [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js) as closely as possible.\n\nThe [official docs](https://vercel.com/docs/runtimes#official-runtimes/node-js) and [advanced usage docs](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage) should be used as your reference for understanding the above features in detail.\n\n**Todo**\n\nThe following configuration options will be supported in the near future:\n\n- [cleanUrls](https://vercel.com/docs/configuration#project/cleanurls)\n- [trailingSlash](https://vercel.com/docs/configuration#project/trailingslash)\n\n<p>&nbsp;</p>\n\n## Supported Frameworks\n\nI have tested the CLI against the following frameworks, utilising the [\"Zero Config\"](https://vercel.com/blog/zero-config) approach.\n\n- [x] Create React App\n- [x] Create React App + TypeScript\n- [x] Gatsby\n- [x] Vue.js\n- [ ] Svelte\n- [ ] Angular\n- [ ] Ember.js\n- [ ] Hugo\n- [ ] Preact\n- [ ] Docusaurus\n- [ ] Gridsome\n- [ ] Nuxt.js\n- [ ] Eleventy\n- [ ] Hexo\n\n<p>&nbsp;</p>\n\n## Limitations\n\nBelow is a list of the Vercel features that this CLI does not support. These limitations are intentional, and the likelihood is that I will not extend the CLI to support them.\n\n- Support for any of the other runtimes - i.e. Go, Ruby, Python, or bespoke.\n\n  > I feel like Node.js is where Vercel really shines, and IMO feel like they should have gone all in on Node.js rather than supporting an array of runtimes.\n\n- Support for any of the following [`vercel.json` configuration](https://vercel.com/docs/configuration#introduction) options:\n\n  - [headers](https://vercel.com/docs/configuration#project/headers)\n  - [redirects](https://vercel.com/docs/configuration#project/redirects)\n  - [rewrites](https://vercel.com/docs/configuration#project/rewrites)\n\n  > Despair not! All of these configuration options can be represented via the [routes](https://vercel.com/docs/configuration#project/routes) configuration, which is supported.\n\n- Support for the raw AWS lambda API, which is currently [supported by the official Node.js runtime](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/aws-lambda-api)\n\n  > As stated in their docs, this has been exposed to help clients with existing lambdas migrate over to their platform. I'm not convinced this alternative CLI should support this.\n\n- The bespoke [Vercel](https://vercel.com/) 4XX / 5XX error pages.\n\n  > Meh. I return the expected error codes. I'd recommend you implement your own custom error pages in your UI anyways.\n\n- Support for [disabling the Node.js helpers](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/disabling-helpers-for-node-js)\n\n  > This has more of an impact on production environments, where you would want to hyper optimise lambda performance in some cases.\n\n- Support for [Next.js](https://nextjs.org/) projects.\n\n  > Next has it's own development server with bespoke features around the APIs and pages. I would recommend using the `next dev` command instead.\n\n<p>&nbsp;</p>\n\n## CLI Options\n\nThe CLI current supports the following options.\n\n- `--debug-apis` | `-d`\n\n  Setting this flag will enable the debugger against your lambdas.\n\n- `--debug-apis-port [number]` | `-o [number]`\n\n  Allows you to specify the port at which the debugger for your lambdas will run. By default it runs on port `9229`.\n\n- `--port [number]` | `-p [number]`\n\n  Allows you to specify the port at which the `vercel-node-dev` server will run. By default it will attempt to bind to port `3000`.\n\n<p>&nbsp;</p>\n\n## Specifying a custom develop command\n\nIf you aren't using one of the [supported frameworks](#supported-frameworks), or if you would like to customise the develop command, then you can add a `dev` script to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"my-dev-tool -p $PORT\"\n  }\n}\n```\n\n**Note:** It is important that you pass through the `$PORT` environment variable as shown in the example above. This is so that your development server can be correctly managed by `vercel-node-dev`.\n\n<p>&nbsp;</p>\n\n## Debugging your Lambdas\n\nYou can enabled the debugger for your lambdas by providing the respective option to the CLI:\n\n```bash\nvercel-node-dev --debug-apis\n```\n\nThis will start the development server, with the debugger instance running. By default the debugger runs on port `9229`. You can change the port number via the `--debug-apis-port` option.\n\nOnce the debugger is running you can attach to it utilising your tool of choice.\n\n### Debugging via VSCode\n\nBelow is a set of [`code` debug configurations](https://code.visualstudio.com/docs/editor/debugging), allowing you to either start the `vercel-dev-node` instance with the debugger attached, or to attach to an already executing debugger instance.\n\n```jsonc\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    // This will start vercel-node-dev with the debugger attached\n    {\n      \"name\": \"Launch vercel-node-dev\",\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"program\": \"vercel-node-dev\",\n      \"args\": [\"--debug-apis\"],\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"autoAttachChildProcesses\": true,\n      \"protocol\": \"inspector\"\n    },\n    // First run `vercel-node-dev --debug-apis` and then execute this debug\n    // configuration in order to attach to the running debugger.\n    {\n      \"name\": \"Attach to process\",\n      \"type\": \"node\",\n      \"request\": \"attach\"\n    }\n  ]\n}\n```\n\n<p>&nbsp;</p>\n\n## Bonus: Unit Testing your Lambdas\n\nThis tool leverages another library I built, [`vercel-node-server`](https://github.com/ctrlplusb/vercel-node-server), which allows you to create `http` instances of your lambdas. This opens up opportunities for you to write integration or unit tests for you lambdas.\n\nFirstly, install the library as development dependency:\n\n```bash\nnpm install -D vercel-node-server\n```\n\nYou can then write tests for your lambdas similar to the one below:\n\n```javascript\nimport { createServer } from 'vercel-node-server';\nimport listen from 'test-listen';\nimport axios from 'axios';\nimport helloLambda from './api/hello';\n\nlet server;\nlet url;\n\nbeforeAll(async () => {\n  server = createServer(routeUnderTest);\n  url = await listen(server);\n});\n\nafterAll(() => {\n  server.close();\n});\n\nit('should return the expected response', async () => {\n  const response = await axios.get(url, { params: { name: 'Pearl' } });\n  expect(response.data).toBe('Hello Pearl');\n});\n```\n","readmeFilename":"README.md","gitHead":"1f56cd048136261eebd8278f92683ce65fd66965","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.5.0-alpha.3","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-bTB4DySxYswHt4tcVc3GAo4UX1MbuXgnPAfcsHfYzJxR1ohQVFRZ881Ekslyo2iqeidn/UQwN773/T/++tY0Yw==","shasum":"c42baaddad8f8a69008326b45deb9d2b8d0df30d","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.5.0-alpha.3.tgz","fileCount":18,"unpackedSize":65531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe30CpCRA9TVsSAnZWagAALBMP/3JzDM2CmUbz58oMlRqR\nnAva276p4WahBAevhEShX4oCZBsK03dFj9CQ7aZoEZC3WHfc+6hGaq3yCCTm\neIY459OFTqpkieaEJmL4G9KBQF9fhp2BF1BfcucncVG5kQIwWsgqFmM/SlGX\nzrlqWsmowXN1tIXap0uhAKeOMmSjngfWQFdaIjJNWATYPHI5gQxQ9VO7STVq\nlsBdbI5mmXJv9tmETnaDSU6QQRufm93JU35uqsWc3zotyLrt5aQjD+wNwqeD\nWQYg038tNK3HWeK83g/NUQtJYI2EgrZIeTLPrIZ2njuyUrtue9ZtFSZJ36l3\njYios3FmrTLHLlknRJEiTfYv6UeTbLOqMN6vqqKg3UxXY+/hw3/oDWhsNF60\nZ2IPAoQx1oxV8WR3V2Dgt21RnCuvrHYg2e7AYmep9ySvvy/lU5nBD26lj8y+\nTe6GaGdSu36367KRPfgOrqEwJltWcjXD46dZJjszcgiYfn/01E98SFTj5njw\n0qjIOjErbrAMTwJDuKGvxA56OauZDo9B0+gVtj/eNovBpoutiiCOEllCLWTI\n5BQccoYV8DOnN3DmkcGzTumGl0chaPnx1U8H4wNowMpBkoolbnVxXxq3uIim\n6Mc/waGtfAwuc55V2+1DqopXHRiQxoMju7lv3tH0vYE2HUsbESEgQIxJxEqw\nslNt\r\n=v05F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBFpXrnwArbxUn97yalXAKpN302PtgYpmngr/zdLj4RNAiEAijbqbsq3IPw3WaL/KihXyRrGnrd4ig8qSj5r6WWY47o="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.5.0-alpha.3_1591689384785_0.5147583089013188"},"_hasShrinkwrap":false},"0.5.0-alpha.4":{"name":"vercel-node-dev","version":"0.5.0-alpha.4","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"readme":"<h1 align=\"center\">\n  🧸\n  <br/>\n  vercel-node-dev\n</h1>\n\n<p align=\"center\">\nAn unofficial development CLI for <a href=\"https://vercel.com/\" target=\"_blank\">Vercel</a> applications targeting the <a href=\"https://vercel.com/docs/runtimes#official-runtimes/node-js\" target=\"_blank\">Node.js runtime</a>.\n</p>\n\n<p align=\"center\">\nFast reloads, improved reliability, offline and debugger support.\n</p>\n\n<p align='center'>\n  <a href=\"http://npm.im/vercel-node-dev\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"http://opensource.org/licenses/MIT\"><img alt=\"MIT License\" src=\"https://img.shields.io/npm/l/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"https://travis-ci.org/ctrlplusb/vercel-node-dev\"><img alt=\"Travis\" src=\"https://img.shields.io/travis/ctrlplusb/vercel-node-dev.svg?style=flat-square\" /></a>\n</p>\n\n<p>&nbsp;</p>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Vercel vs Us?](#vercel-vs-us)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Supported Features](#supported-features)\n- [Supported Frameworks](#supported-frameworks)\n- [Limitations](#limitations)\n- [CLI Options](#cli-options)\n- [Specifying a custom develop command](#specifying-a-custom-develop-command)\n- [Debugging your Lambdas](#debugging-your-lambdas)\n- [Bonus: Unit Testing your Lambdas](#bonus-unit-testing-your-lambdas)\n\n<p>&nbsp;</p>\n\n## Features\n\n- Optimised for the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Built against the [Vercel specifications](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Supports Vercel [\"Zero Config\"](https://vercel.com/blog/zero-config) approach\n- Supports both JavaScript or TypeScript lambdas\n- Supports the attaching of a debugger session against lambda execution\n- Supports Vercel custom [routes](https://vercel.com/docs/configuration#project/routes) configuration\n- Fast reloading for any changes to your lambdas\n- Extensively tested and verified via an integration test suite\n- Can be run offline\n- No need for a Vercel project to be configured prior to execution\n- Does not need to be installed as a local dependency\n\n<p>&nbsp;</p>\n\n## Motivation\n\n[Vercel](https://vercel.com/) provides its own development environment via the `vercel dev` command. Whilst this tool is powerful, I was experiencing the following issues:\n\n- **Performance:** The feedback loop when making changes to my lambdas was very slow. After making a change, the subsequent request to the lamda would result in a significant wait for the lambda to be rebuilt and then served.\n- **Reliability:** When making changes to my lambdas the build performance degraded over time, eventually resulting in them becoming unresponsive. The only way I was able to resolve this was to restart the `vercel dev` command, significantly impacting my development flow.\n- **Debugging:** I was unable to attach a debugger instance against my lambdas. Whilst I try not to overuse the debugger, preferring to leverage integration tests, there are times when a debugger session can work wonders at issue discovery.\n- **Usability:** There was a double hit for me here. Firstly, you need to have first set up / linked your project to a project configuration against Vercel. Secondly, and related to the first point, you need to be connected to the internet in order to use the tool.\n\nThe implementation of `vercel-node-dev` addresses these issues; focussing on the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js), which allowed me to create a much more bespoke and optimised development tool.\n\n<p>&nbsp;</p>\n\n## Vercel vs Us?\n\nThis tool is **_not_** meant to be **_competitive_**!\n\nIt is released with good intentions and respect for the Vercel team and community, offering a temporary alternative for those who may be experiencing similar issues with their development flow.\n\nThe `vercel dev` command is still in **beta**. My belief is that the Vercel team will eventually address the issues above, at which point this CLI will be deprecated. Given that we are following the official Vercel specifications, this would be a zero impact move for those using this CLI. You would only need to switch to executing the official `vercel dev` command instead of this one.\n\n<p>&nbsp;</p>\n\n## Installation\n\nWe recommend installing this library globally. This will allow you to quickly and easily use it against any of your Vercel applications, without polluting them with additional dependencies.\n\n```bash\nnpm install -g vercel-node-dev\n```\n\nAfter the installation two CLI commands will be available to you, namely;\n\n- `vercel-node-dev`\n- `vnd` - a shorter aliased version\n\n<p>&nbsp;</p>\n\n## Usage\n\nSimply navigate to the root of the [Vercel](https://vercel.com/) application and execute the CLI.\n\n```bash\nvercel-node-dev\n```\n\nSimilar to the `vercel dev` command we will attempt to bind the development server against port `3000`.\n\nOpen your web browser and browse to `http://localhost:3000`.\n\n<p>&nbsp;</p>\n\n## Supported Features\n\nBelow is a list of the official Vercel features that we support.\n\nI don't add any additional API features in comparison to the official APIs.\n\nThe design goal of this tool is to support as much of the official API as possible, whilst providing an improved development experience.\n\n- The [\"Zero Config\"](https://vercel.com/blog/zero-config) approach promoted by Vercel.\n- TypeScript (`.ts`) or JavaScript (`.js`) lambdas, within the `/api` directory, with filesystem based routing.\n- The ability to [ignore files/directories](https://vercel.com/docs/v2/serverless-functions/introduction#prevent-endpoint-listing) within your `/api` directory from being bound as lambdas.\n- [Path segments](https://vercel.com/docs/v2/serverless-functions/introduction#path-segments) for your lambdas.\n- A [custom build step](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/custom-build-step-for-node-js), which will be executed prior to the execution of your lambdas.\n- Automatic exposure of any environment variables defined within the `.env` file defined in the root of the project. This is inline with the [approach recommended by Vercel](https://vercel.com/docs/v2/build-step#environment-variables) for managing environment variables.\n- Automated [extension of the HTTP Request and Response objects](https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-request-and-response-objects/node-js-helpers) that are passed into your lambdas.\n- Custom [routes](https://vercel.com/docs/configuration#project/routes) configuration.\n\nWe follows the design, API, and features of the official [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js) as closely as possible.\n\nThe [official docs](https://vercel.com/docs/runtimes#official-runtimes/node-js) and [advanced usage docs](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage) should be used as your reference for understanding the above features in detail.\n\n**Todo**\n\nThe following configuration options will be supported in the near future:\n\n- [cleanUrls](https://vercel.com/docs/configuration#project/cleanurls)\n- [trailingSlash](https://vercel.com/docs/configuration#project/trailingslash)\n\n<p>&nbsp;</p>\n\n## Supported Frameworks\n\nI have tested the CLI against the following frameworks, utilising the [\"Zero Config\"](https://vercel.com/blog/zero-config) approach.\n\n- [x] Create React App\n- [x] Create React App + TypeScript\n- [x] Gatsby\n- [x] Vue.js\n- [ ] Svelte\n- [ ] Angular\n- [ ] Ember.js\n- [ ] Hugo\n- [ ] Preact\n- [ ] Docusaurus\n- [ ] Gridsome\n- [ ] Nuxt.js\n- [ ] Eleventy\n- [ ] Hexo\n\n<p>&nbsp;</p>\n\n## Limitations\n\nBelow is a list of the Vercel features that this CLI does not support. These limitations are intentional, and the likelihood is that I will not extend the CLI to support them.\n\n- Support for any of the other runtimes - i.e. Go, Ruby, Python, or bespoke.\n\n  > I feel like Node.js is where Vercel really shines, and IMO feel like they should have gone all in on Node.js rather than supporting an array of runtimes.\n\n- Support for any of the following [`vercel.json` configuration](https://vercel.com/docs/configuration#introduction) options:\n\n  - [headers](https://vercel.com/docs/configuration#project/headers)\n  - [redirects](https://vercel.com/docs/configuration#project/redirects)\n  - [rewrites](https://vercel.com/docs/configuration#project/rewrites)\n\n  > Despair not! All of these configuration options can be represented via the [routes](https://vercel.com/docs/configuration#project/routes) configuration, which is supported.\n\n- Support for the raw AWS lambda API, which is currently [supported by the official Node.js runtime](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/aws-lambda-api)\n\n  > As stated in their docs, this has been exposed to help clients with existing lambdas migrate over to their platform. I'm not convinced this alternative CLI should support this.\n\n- The bespoke [Vercel](https://vercel.com/) 4XX / 5XX error pages.\n\n  > Meh. I return the expected error codes. I'd recommend you implement your own custom error pages in your UI anyways.\n\n- Support for [disabling the Node.js helpers](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/disabling-helpers-for-node-js)\n\n  > This has more of an impact on production environments, where you would want to hyper optimise lambda performance in some cases.\n\n- Support for [Next.js](https://nextjs.org/) projects.\n\n  > Next has it's own development server with bespoke features around the APIs and pages. I would recommend using the `next dev` command instead.\n\n<p>&nbsp;</p>\n\n## CLI Options\n\nThe CLI current supports the following options.\n\n- `--debug-apis` | `-d`\n\n  Setting this flag will enable the debugger against your lambdas.\n\n- `--debug-apis-port [number]` | `-o [number]`\n\n  Allows you to specify the port at which the debugger for your lambdas will run. By default it runs on port `9229`.\n\n- `--port [number]` | `-p [number]`\n\n  Allows you to specify the port at which the `vercel-node-dev` server will run. By default it will attempt to bind to port `3000`.\n\n<p>&nbsp;</p>\n\n## Specifying a custom develop command\n\nIf you aren't using one of the [supported frameworks](#supported-frameworks), or if you would like to customise the develop command, then you can add a `dev` script to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"my-dev-tool -p $PORT\"\n  }\n}\n```\n\n**Note:** It is important that you pass through the `$PORT` environment variable as shown in the example above. This is so that your development server can be correctly managed by `vercel-node-dev`.\n\n<p>&nbsp;</p>\n\n## Debugging your Lambdas\n\nYou can enabled the debugger for your lambdas by providing the respective option to the CLI:\n\n```bash\nvercel-node-dev --debug-apis\n```\n\nThis will start the development server, with the debugger instance running. By default the debugger runs on port `9229`. You can change the port number via the `--debug-apis-port` option.\n\nOnce the debugger is running you can attach to it utilising your tool of choice.\n\n### Debugging via VSCode\n\nBelow is a set of [`code` debug configurations](https://code.visualstudio.com/docs/editor/debugging), allowing you to either start the `vercel-dev-node` instance with the debugger attached, or to attach to an already executing debugger instance.\n\n```jsonc\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    // This will start vercel-node-dev with the debugger attached\n    {\n      \"name\": \"Launch vercel-node-dev\",\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"program\": \"vercel-node-dev\",\n      \"args\": [\"--debug-apis\"],\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"autoAttachChildProcesses\": true,\n      \"protocol\": \"inspector\"\n    },\n    // First run `vercel-node-dev --debug-apis` and then execute this debug\n    // configuration in order to attach to the running debugger.\n    {\n      \"name\": \"Attach to process\",\n      \"type\": \"node\",\n      \"request\": \"attach\"\n    }\n  ]\n}\n```\n\n<p>&nbsp;</p>\n\n## Bonus: Unit Testing your Lambdas\n\nThis tool leverages another library I built, [`vercel-node-server`](https://github.com/ctrlplusb/vercel-node-server), which allows you to create `http` instances of your lambdas. This opens up opportunities for you to write integration or unit tests for you lambdas.\n\nFirstly, install the library as development dependency:\n\n```bash\nnpm install -D vercel-node-server\n```\n\nYou can then write tests for your lambdas similar to the one below:\n\n```javascript\nimport { createServer } from 'vercel-node-server';\nimport listen from 'test-listen';\nimport axios from 'axios';\nimport helloLambda from './api/hello';\n\nlet server;\nlet url;\n\nbeforeAll(async () => {\n  server = createServer(routeUnderTest);\n  url = await listen(server);\n});\n\nafterAll(() => {\n  server.close();\n});\n\nit('should return the expected response', async () => {\n  const response = await axios.get(url, { params: { name: 'Pearl' } });\n  expect(response.data).toBe('Hello Pearl');\n});\n```\n","readmeFilename":"README.md","gitHead":"1f56cd048136261eebd8278f92683ce65fd66965","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.5.0-alpha.4","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-6JW9nwqPZZvpCGhxXRaKJc2EBv1FmEBdnqFd16nmOWYLdOG9iDjU+GxtSdreIqu1X/sohD1XQSErrjyY5v/Y8A==","shasum":"debc0d7e6736e35f29e83b5f4e8f1c1829b99f2f","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.5.0-alpha.4.tgz","fileCount":18,"unpackedSize":65533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe31RoCRA9TVsSAnZWagAAXHgP/2OzaN5rNrKdz+RAI0Hc\nEgwKKf56kulFJ4kcdFRMxIDGB2lEYHO/xc+RvQE02I/MX4tN4AlxqWVtuB1O\niZnG8S49ei/doG+UDfd+7TL+/FcHIVaIAqlFtnuOkbEqVW/7cukJTBEw8xnB\nol1ko2e8ayKnErZlRDPAd1QdCDdg137hdix2zG7o8MFt2sMiwhuorm7gfvwS\n9vfpcnxRwH48/ztNg0GZqOHxd2TMwcOaFIrl5hDvOV47E31CR1ZIMt3515nk\nM9WFNWGjYuumCDefT/XoEsi3TUQEWtss0j+v4XH9YByIzl0TnQTm0ExWrDjl\nX1a26yyySZM4vrLeTKeB82VHi4zrp2CmeZlvgL8rqwZwFTKNE7bDe85HdoR0\nUkf2W4W64XYCvMInbbWQ4gFEqIsRqLPHE7RtAhB51zo8E7RkalBimw1ZbQCh\nSsmb8YxZ0LS7HppQ6s6w6Wzm6NbxkbI/5YufZc75hwaxNeN5CUGzV2TU4jqZ\nVB29ArWawMEOnRPaL6cY1eK7f/HwrOxUYVi1rdqjuIlRzZWfwJxc12rCgP0e\nLaT5Bi4kBHD/NAnX7XyyV4ORVeWVA7VYLmgbHLT8jlwutsRBW24ZX+WxrsJF\nqyyA5bcxcwt1YTSG3cKTl9VT3eUYTwZ3tieXDrOZWXsYFXCBdosRE3Vz7fKH\nmQXs\r\n=s8ki\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCM5qe60Ov92/FO+wrDobNdaZExI2SG9ucKaczUk2W96QIhALXxGT/ncQJI5Ulexv/K8x8ccM0fs3dzhltiLxJiH/XU"}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.5.0-alpha.4_1591694439857_0.7173128642343385"},"_hasShrinkwrap":false},"0.5.0-alpha.5":{"name":"vercel-node-dev","version":"0.5.0-alpha.5","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"readme":"<h1 align=\"center\">\n  🧸\n  <br/>\n  vercel-node-dev\n</h1>\n\n<p align=\"center\">\nAn unofficial development CLI for <a href=\"https://vercel.com/\" target=\"_blank\">Vercel</a> applications targeting the <a href=\"https://vercel.com/docs/runtimes#official-runtimes/node-js\" target=\"_blank\">Node.js runtime</a>.\n</p>\n\n<p align=\"center\">\nFast reloads, improved reliability, offline and debugger support.\n</p>\n\n<p align='center'>\n  <a href=\"http://npm.im/vercel-node-dev\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"http://opensource.org/licenses/MIT\"><img alt=\"MIT License\" src=\"https://img.shields.io/npm/l/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"https://travis-ci.org/ctrlplusb/vercel-node-dev\"><img alt=\"Travis\" src=\"https://img.shields.io/travis/ctrlplusb/vercel-node-dev.svg?style=flat-square\" /></a>\n</p>\n\n<p>&nbsp;</p>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Vercel vs Us?](#vercel-vs-us)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Supported Features](#supported-features)\n- [Supported Frameworks](#supported-frameworks)\n- [Limitations](#limitations)\n- [CLI Options](#cli-options)\n- [Specifying a custom develop command](#specifying-a-custom-develop-command)\n- [Debugging your Lambdas](#debugging-your-lambdas)\n- [Bonus: Unit Testing your Lambdas](#bonus-unit-testing-your-lambdas)\n\n<p>&nbsp;</p>\n\n## Features\n\n- Optimised for the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Built against the [Vercel specifications](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Supports Vercel [\"Zero Config\"](https://vercel.com/blog/zero-config) approach\n- Supports both JavaScript or TypeScript lambdas\n- Supports the attaching of a debugger session against lambda execution\n- Supports Vercel custom [routes](https://vercel.com/docs/configuration#project/routes) configuration\n- Fast reloading for any changes to your lambdas\n- Extensively tested and verified via an integration test suite\n- Can be run offline\n- No need for a Vercel project to be configured prior to execution\n- Does not need to be installed as a local dependency\n\n<p>&nbsp;</p>\n\n## Motivation\n\n[Vercel](https://vercel.com/) provides its own development environment via the `vercel dev` command. Whilst this tool is powerful, I was experiencing the following issues:\n\n- **Performance:** The feedback loop when making changes to my lambdas was very slow. After making a change, the subsequent request to the lamda would result in a significant wait for the lambda to be rebuilt and then served.\n- **Reliability:** When making changes to my lambdas the build performance degraded over time, eventually resulting in them becoming unresponsive. The only way I was able to resolve this was to restart the `vercel dev` command, significantly impacting my development flow.\n- **Debugging:** I was unable to attach a debugger instance against my lambdas. Whilst I try not to overuse the debugger, preferring to leverage integration tests, there are times when a debugger session can work wonders at issue discovery.\n- **Usability:** There was a double hit for me here. Firstly, you need to have first set up / linked your project to a project configuration against Vercel. Secondly, and related to the first point, you need to be connected to the internet in order to use the tool.\n\nThe implementation of `vercel-node-dev` addresses these issues; focussing on the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js), which allowed me to create a much more bespoke and optimised development tool.\n\n<p>&nbsp;</p>\n\n## Vercel vs Us?\n\nThis tool is **_not_** meant to be **_competitive_**!\n\nIt is released with good intentions and respect for the Vercel team and community, offering a temporary alternative for those who may be experiencing similar issues with their development flow.\n\nThe `vercel dev` command is still in **beta**. My belief is that the Vercel team will eventually address the issues above, at which point this CLI will be deprecated. Given that we are following the official Vercel specifications, this would be a zero impact move for those using this CLI. You would only need to switch to executing the official `vercel dev` command instead of this one.\n\n<p>&nbsp;</p>\n\n## Installation\n\nWe recommend installing this library globally. This will allow you to quickly and easily use it against any of your Vercel applications, without polluting them with additional dependencies.\n\n```bash\nnpm install -g vercel-node-dev\n```\n\nAfter the installation two CLI commands will be available to you, namely;\n\n- `vercel-node-dev`\n- `vnd` - a shorter aliased version\n\n<p>&nbsp;</p>\n\n## Usage\n\nSimply navigate to the root of the [Vercel](https://vercel.com/) application and execute the CLI.\n\n```bash\nvercel-node-dev\n```\n\nSimilar to the `vercel dev` command we will attempt to bind the development server against port `3000`.\n\nOpen your web browser and browse to `http://localhost:3000`.\n\n<p>&nbsp;</p>\n\n## Supported Features\n\nBelow is a list of the official Vercel features that we support.\n\nI don't add any additional API features in comparison to the official APIs.\n\nThe design goal of this tool is to support as much of the official API as possible, whilst providing an improved development experience.\n\n- The [\"Zero Config\"](https://vercel.com/blog/zero-config) approach promoted by Vercel.\n- TypeScript (`.ts`) or JavaScript (`.js`) lambdas, within the `/api` directory, with filesystem based routing.\n- The ability to [ignore files/directories](https://vercel.com/docs/v2/serverless-functions/introduction#prevent-endpoint-listing) within your `/api` directory from being bound as lambdas.\n- [Path segments](https://vercel.com/docs/v2/serverless-functions/introduction#path-segments) for your lambdas.\n- A [custom build step](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/custom-build-step-for-node-js), which will be executed prior to the execution of your lambdas.\n- Automatic exposure of any environment variables defined within the `.env` file defined in the root of the project. This is inline with the [approach recommended by Vercel](https://vercel.com/docs/v2/build-step#environment-variables) for managing environment variables.\n- Automated [extension of the HTTP Request and Response objects](https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-request-and-response-objects/node-js-helpers) that are passed into your lambdas.\n- Custom [routes](https://vercel.com/docs/configuration#project/routes) configuration.\n\nWe follows the design, API, and features of the official [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js) as closely as possible.\n\nThe [official docs](https://vercel.com/docs/runtimes#official-runtimes/node-js) and [advanced usage docs](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage) should be used as your reference for understanding the above features in detail.\n\n**Todo**\n\nThe following configuration options will be supported in the near future:\n\n- [cleanUrls](https://vercel.com/docs/configuration#project/cleanurls)\n- [trailingSlash](https://vercel.com/docs/configuration#project/trailingslash)\n\n<p>&nbsp;</p>\n\n## Supported Frameworks\n\nI have tested the CLI against the following frameworks, utilising the [\"Zero Config\"](https://vercel.com/blog/zero-config) approach.\n\n- [x] Create React App\n- [x] Create React App + TypeScript\n- [x] Gatsby\n- [x] Vue.js\n- [ ] Svelte\n- [ ] Angular\n- [ ] Ember.js\n- [ ] Hugo\n- [ ] Preact\n- [ ] Docusaurus\n- [ ] Gridsome\n- [ ] Nuxt.js\n- [ ] Eleventy\n- [ ] Hexo\n\n<p>&nbsp;</p>\n\n## Limitations\n\nBelow is a list of the Vercel features that this CLI does not support. These limitations are intentional, and the likelihood is that I will not extend the CLI to support them.\n\n- Support for any of the other runtimes - i.e. Go, Ruby, Python, or bespoke.\n\n  > I feel like Node.js is where Vercel really shines, and IMO feel like they should have gone all in on Node.js rather than supporting an array of runtimes.\n\n- Support for any of the following [`vercel.json` configuration](https://vercel.com/docs/configuration#introduction) options:\n\n  - [headers](https://vercel.com/docs/configuration#project/headers)\n  - [redirects](https://vercel.com/docs/configuration#project/redirects)\n  - [rewrites](https://vercel.com/docs/configuration#project/rewrites)\n\n  > Despair not! All of these configuration options can be represented via the [routes](https://vercel.com/docs/configuration#project/routes) configuration, which is supported.\n\n- Support for the raw AWS lambda API, which is currently [supported by the official Node.js runtime](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/aws-lambda-api)\n\n  > As stated in their docs, this has been exposed to help clients with existing lambdas migrate over to their platform. I'm not convinced this alternative CLI should support this.\n\n- The bespoke [Vercel](https://vercel.com/) 4XX / 5XX error pages.\n\n  > Meh. I return the expected error codes. I'd recommend you implement your own custom error pages in your UI anyways.\n\n- Support for [disabling the Node.js helpers](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/disabling-helpers-for-node-js)\n\n  > This has more of an impact on production environments, where you would want to hyper optimise lambda performance in some cases.\n\n- Support for [Next.js](https://nextjs.org/) projects.\n\n  > Next has it's own development server with bespoke features around the APIs and pages. I would recommend using the `next dev` command instead.\n\n<p>&nbsp;</p>\n\n## CLI Options\n\nThe CLI current supports the following options.\n\n- `--debug-apis` | `-d`\n\n  Setting this flag will enable the debugger against your lambdas.\n\n- `--debug-apis-port [number]` | `-o [number]`\n\n  Allows you to specify the port at which the debugger for your lambdas will run. By default it runs on port `9229`.\n\n- `--port [number]` | `-p [number]`\n\n  Allows you to specify the port at which the `vercel-node-dev` server will run. By default it will attempt to bind to port `3000`.\n\n<p>&nbsp;</p>\n\n## Specifying a custom develop command\n\nIf you aren't using one of the [supported frameworks](#supported-frameworks), or if you would like to customise the develop command, then you can add a `dev` script to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"my-dev-tool -p $PORT\"\n  }\n}\n```\n\n**Note:** It is important that you pass through the `$PORT` environment variable as shown in the example above. This is so that your development server can be correctly managed by `vercel-node-dev`.\n\n<p>&nbsp;</p>\n\n## Debugging your Lambdas\n\nYou can enabled the debugger for your lambdas by providing the respective option to the CLI:\n\n```bash\nvercel-node-dev --debug-apis\n```\n\nThis will start the development server, with the debugger instance running. By default the debugger runs on port `9229`. You can change the port number via the `--debug-apis-port` option.\n\nOnce the debugger is running you can attach to it utilising your tool of choice.\n\n### Debugging via VSCode\n\nBelow is a set of [`code` debug configurations](https://code.visualstudio.com/docs/editor/debugging), allowing you to either start the `vercel-dev-node` instance with the debugger attached, or to attach to an already executing debugger instance.\n\n```jsonc\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    // This will start vercel-node-dev with the debugger attached\n    {\n      \"name\": \"Launch vercel-node-dev\",\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"program\": \"vercel-node-dev\",\n      \"args\": [\"--debug-apis\"],\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"autoAttachChildProcesses\": true,\n      \"protocol\": \"inspector\"\n    },\n    // First run `vercel-node-dev --debug-apis` and then execute this debug\n    // configuration in order to attach to the running debugger.\n    {\n      \"name\": \"Attach to process\",\n      \"type\": \"node\",\n      \"request\": \"attach\"\n    }\n  ]\n}\n```\n\n<p>&nbsp;</p>\n\n## Bonus: Unit Testing your Lambdas\n\nThis tool leverages another library I built, [`vercel-node-server`](https://github.com/ctrlplusb/vercel-node-server), which allows you to create `http` instances of your lambdas. This opens up opportunities for you to write integration or unit tests for you lambdas.\n\nFirstly, install the library as development dependency:\n\n```bash\nnpm install -D vercel-node-server\n```\n\nYou can then write tests for your lambdas similar to the one below:\n\n```javascript\nimport { createServer } from 'vercel-node-server';\nimport listen from 'test-listen';\nimport axios from 'axios';\nimport helloLambda from './api/hello';\n\nlet server;\nlet url;\n\nbeforeAll(async () => {\n  server = createServer(routeUnderTest);\n  url = await listen(server);\n});\n\nafterAll(() => {\n  server.close();\n});\n\nit('should return the expected response', async () => {\n  const response = await axios.get(url, { params: { name: 'Pearl' } });\n  expect(response.data).toBe('Hello Pearl');\n});\n```\n","readmeFilename":"README.md","gitHead":"1f56cd048136261eebd8278f92683ce65fd66965","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.5.0-alpha.5","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-2CwOpA+1tSV4+iUZ2qdVNy2sGriCqSyT8SHtxYe80PrM3BxJ86V2cz1lqKqt0oROGXTD62DLCuBom5S3iIp8ww==","shasum":"2e345043c50dacbabaf246e838d42dbbc32dda25","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.5.0-alpha.5.tgz","fileCount":18,"unpackedSize":65539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe31UjCRA9TVsSAnZWagAAhIMP/jfyJOWRJrPA20Hdpk2U\n9C0Q4H5php2tz/GMMmDuAB58rzyswJQvm1tUFqHRon2i5L63snL72tXuTHfs\nZHzFWALz2Hx/yIIMiAMlsUjzblNgCsl9uI5cjVB+FFZHkTVMeB61qBeyK7WW\ne1XIJ2HLKWIrXJNfnL47x9XvM4xNevfy7nCBHhLv29CVTphpYFoVaVdh81rA\nxyS8IZfemmrK1eyKoP+weMHcNzyL3y9GKHJTjmVu85id0u5mq1V37dusWfm4\n18eTuJtQh3vekpaWUTTZF9MOyN74Bto32HwzodX6X8wO6q6HpGMHA7oO0Tep\nT6Xo1RAJp7kPLjpzXaAR1ufpgGay/Fc4VAEkzVuQdpWES69w1fco7pzq4y+U\nx32K5Tp6TtKtIxDDhY/eCa8COt2C8T8avaf6WN68rargWl+ubTxzMEp8CVPU\nThOWLuJ8EbKvfAHbG0VECJf/OBAcHT24OnJrXLC0PFI8cYUvubGc89sNxbGA\nZ5vict15yP7odftLP82hDLbBnP4XPVXeLVBgN/XlWC652ua2U038yDtSOMdz\nSJddwQD5dQuGV3RCA7i0PpqZ7tYmwaDDksKR1fLNdMgRwSzG5CfE969qv4CL\nzsF1uk1nctqJq+2MtZYaStWaMdexxQ1WfVETSKoxYd31hOjTAQO9NKsJoIob\nODUe\r\n=z/8O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDcCeXelAPXC6R0N8D1802hFrQ8mrHFpmwAGJaQapqGbAiA954vEjCVdaqM+81Fc8moaLNIp8KqSVd2m+0zmRDrT9w=="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.5.0-alpha.5_1591694627227_0.30098939403626024"},"_hasShrinkwrap":false},"0.5.0-alpha.6":{"name":"vercel-node-dev","version":"0.5.0-alpha.6","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","strip-color":"^0.1.0","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@types/strip-color":"^0.1.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"readme":"<h1 align=\"center\">\n  🧸\n  <br/>\n  vercel-node-dev\n</h1>\n\n<p align=\"center\">\nAn unofficial development CLI for <a href=\"https://vercel.com/\" target=\"_blank\">Vercel</a> applications targeting the <a href=\"https://vercel.com/docs/runtimes#official-runtimes/node-js\" target=\"_blank\">Node.js runtime</a>.\n</p>\n\n<p align=\"center\">\nFast reloads, improved reliability, offline and debugger support.\n</p>\n\n<p align='center'>\n  <a href=\"http://npm.im/vercel-node-dev\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"http://opensource.org/licenses/MIT\"><img alt=\"MIT License\" src=\"https://img.shields.io/npm/l/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"https://travis-ci.org/ctrlplusb/vercel-node-dev\"><img alt=\"Travis\" src=\"https://img.shields.io/travis/ctrlplusb/vercel-node-dev.svg?style=flat-square\" /></a>\n</p>\n\n<p>&nbsp;</p>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Vercel vs Us?](#vercel-vs-us)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Supported Features](#supported-features)\n- [Supported Frameworks](#supported-frameworks)\n- [Limitations](#limitations)\n- [CLI Options](#cli-options)\n- [Specifying a custom develop command](#specifying-a-custom-develop-command)\n- [Debugging your Lambdas](#debugging-your-lambdas)\n- [Bonus: Unit Testing your Lambdas](#bonus-unit-testing-your-lambdas)\n\n<p>&nbsp;</p>\n\n## Features\n\n- Optimised for the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Built against the [Vercel specifications](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Supports Vercel [\"Zero Config\"](https://vercel.com/blog/zero-config) approach\n- Supports both JavaScript or TypeScript lambdas\n- Supports the attaching of a debugger session against lambda execution\n- Supports Vercel custom [routes](https://vercel.com/docs/configuration#project/routes) configuration\n- Fast reloading for any changes to your lambdas\n- Extensively tested and verified via an integration test suite\n- Can be run offline\n- No need for a Vercel project to be configured prior to execution\n- Does not need to be installed as a local dependency\n\n<p>&nbsp;</p>\n\n## Motivation\n\n[Vercel](https://vercel.com/) provides its own development environment via the `vercel dev` command. Whilst this tool is powerful, I was experiencing the following issues:\n\n- **Performance:** The feedback loop when making changes to my lambdas was very slow. After making a change, the subsequent request to the lamda would result in a significant wait for the lambda to be rebuilt and then served.\n- **Reliability:** When making changes to my lambdas the build performance degraded over time, eventually resulting in them becoming unresponsive. The only way I was able to resolve this was to restart the `vercel dev` command, significantly impacting my development flow.\n- **Debugging:** I was unable to attach a debugger instance against my lambdas. Whilst I try not to overuse the debugger, preferring to leverage integration tests, there are times when a debugger session can work wonders at issue discovery.\n- **Usability:** There was a double hit for me here. Firstly, you need to have first set up / linked your project to a project configuration against Vercel. Secondly, and related to the first point, you need to be connected to the internet in order to use the tool.\n\nThe implementation of `vercel-node-dev` addresses these issues; focussing on the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js), which allowed me to create a much more bespoke and optimised development tool.\n\n<p>&nbsp;</p>\n\n## Vercel vs Us?\n\nThis tool is **_not_** meant to be **_competitive_**!\n\nIt is released with good intentions and respect for the Vercel team and community, offering a temporary alternative for those who may be experiencing similar issues with their development flow.\n\nThe `vercel dev` command is still in **beta**. My belief is that the Vercel team will eventually address the issues above, at which point this CLI will be deprecated. Given that we are following the official Vercel specifications, this would be a zero impact move for those using this CLI. You would only need to switch to executing the official `vercel dev` command instead of this one.\n\n<p>&nbsp;</p>\n\n## Installation\n\nWe recommend installing this library globally. This will allow you to quickly and easily use it against any of your Vercel applications, without polluting them with additional dependencies.\n\n```bash\nnpm install -g vercel-node-dev\n```\n\nAfter the installation two CLI commands will be available to you, namely;\n\n- `vercel-node-dev`\n- `vnd` - a shorter aliased version\n\n<p>&nbsp;</p>\n\n## Usage\n\nSimply navigate to the root of the [Vercel](https://vercel.com/) application and execute the CLI.\n\n```bash\nvercel-node-dev\n```\n\nSimilar to the `vercel dev` command we will attempt to bind the development server against port `3000`.\n\nOpen your web browser and browse to `http://localhost:3000`.\n\n<p>&nbsp;</p>\n\n## Supported Features\n\nBelow is a list of the official Vercel features that we support.\n\nI don't add any additional API features in comparison to the official APIs.\n\nThe design goal of this tool is to support as much of the official API as possible, whilst providing an improved development experience.\n\n- The [\"Zero Config\"](https://vercel.com/blog/zero-config) approach promoted by Vercel.\n- TypeScript (`.ts`) or JavaScript (`.js`) lambdas, within the `/api` directory, with filesystem based routing.\n- The ability to [ignore files/directories](https://vercel.com/docs/v2/serverless-functions/introduction#prevent-endpoint-listing) within your `/api` directory from being bound as lambdas.\n- [Path segments](https://vercel.com/docs/v2/serverless-functions/introduction#path-segments) for your lambdas.\n- A [custom build step](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/custom-build-step-for-node-js), which will be executed prior to the execution of your lambdas.\n- Automatic exposure of any environment variables defined within the `.env` file defined in the root of the project. This is inline with the [approach recommended by Vercel](https://vercel.com/docs/v2/build-step#environment-variables) for managing environment variables.\n- Automated [extension of the HTTP Request and Response objects](https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-request-and-response-objects/node-js-helpers) that are passed into your lambdas.\n- Custom [routes](https://vercel.com/docs/configuration#project/routes) configuration.\n\nWe follows the design, API, and features of the official [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js) as closely as possible.\n\nThe [official docs](https://vercel.com/docs/runtimes#official-runtimes/node-js) and [advanced usage docs](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage) should be used as your reference for understanding the above features in detail.\n\n**Todo**\n\nThe following configuration options will be supported in the near future:\n\n- [cleanUrls](https://vercel.com/docs/configuration#project/cleanurls)\n- [trailingSlash](https://vercel.com/docs/configuration#project/trailingslash)\n\n<p>&nbsp;</p>\n\n## Supported Frameworks\n\nI have tested the CLI against the following frameworks, utilising the [\"Zero Config\"](https://vercel.com/blog/zero-config) approach.\n\n- [x] Create React App\n- [x] Create React App + TypeScript\n- [x] Gatsby\n- [x] Vue.js\n- [ ] Svelte\n- [ ] Angular\n- [ ] Ember.js\n- [ ] Hugo\n- [ ] Preact\n- [ ] Docusaurus\n- [ ] Gridsome\n- [ ] Nuxt.js\n- [ ] Eleventy\n- [ ] Hexo\n\n<p>&nbsp;</p>\n\n## Limitations\n\nBelow is a list of the Vercel features that this CLI does not support. These limitations are intentional, and the likelihood is that I will not extend the CLI to support them.\n\n- Support for any of the other runtimes - i.e. Go, Ruby, Python, or bespoke.\n\n  > I feel like Node.js is where Vercel really shines, and IMO feel like they should have gone all in on Node.js rather than supporting an array of runtimes.\n\n- Support for any of the following [`vercel.json` configuration](https://vercel.com/docs/configuration#introduction) options:\n\n  - [headers](https://vercel.com/docs/configuration#project/headers)\n  - [redirects](https://vercel.com/docs/configuration#project/redirects)\n  - [rewrites](https://vercel.com/docs/configuration#project/rewrites)\n\n  > Despair not! All of these configuration options can be represented via the [routes](https://vercel.com/docs/configuration#project/routes) configuration, which is supported.\n\n- Support for the raw AWS lambda API, which is currently [supported by the official Node.js runtime](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/aws-lambda-api)\n\n  > As stated in their docs, this has been exposed to help clients with existing lambdas migrate over to their platform. I'm not convinced this alternative CLI should support this.\n\n- The bespoke [Vercel](https://vercel.com/) 4XX / 5XX error pages.\n\n  > Meh. I return the expected error codes. I'd recommend you implement your own custom error pages in your UI anyways.\n\n- Support for [disabling the Node.js helpers](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/disabling-helpers-for-node-js)\n\n  > This has more of an impact on production environments, where you would want to hyper optimise lambda performance in some cases.\n\n- Support for [Next.js](https://nextjs.org/) projects.\n\n  > Next has it's own development server with bespoke features around the APIs and pages. I would recommend using the `next dev` command instead.\n\n<p>&nbsp;</p>\n\n## CLI Options\n\nThe CLI current supports the following options.\n\n- `--debug-apis` | `-d`\n\n  Setting this flag will enable the debugger against your lambdas.\n\n- `--debug-apis-port [number]` | `-o [number]`\n\n  Allows you to specify the port at which the debugger for your lambdas will run. By default it runs on port `9229`.\n\n- `--port [number]` | `-p [number]`\n\n  Allows you to specify the port at which the `vercel-node-dev` server will run. By default it will attempt to bind to port `3000`.\n\n<p>&nbsp;</p>\n\n## Specifying a custom develop command\n\nIf you aren't using one of the [supported frameworks](#supported-frameworks), or if you would like to customise the develop command, then you can add a `dev` script to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"my-dev-tool -p $PORT\"\n  }\n}\n```\n\n**Note:** It is important that you pass through the `$PORT` environment variable as shown in the example above. This is so that your development server can be correctly managed by `vercel-node-dev`.\n\n<p>&nbsp;</p>\n\n## Debugging your Lambdas\n\nYou can enabled the debugger for your lambdas by providing the respective option to the CLI:\n\n```bash\nvercel-node-dev --debug-apis\n```\n\nThis will start the development server, with the debugger instance running. By default the debugger runs on port `9229`. You can change the port number via the `--debug-apis-port` option.\n\nOnce the debugger is running you can attach to it utilising your tool of choice.\n\n### Debugging via VSCode\n\nBelow is a set of [`code` debug configurations](https://code.visualstudio.com/docs/editor/debugging), allowing you to either start the `vercel-dev-node` instance with the debugger attached, or to attach to an already executing debugger instance.\n\n```jsonc\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    // This will start vercel-node-dev with the debugger attached\n    {\n      \"name\": \"Launch vercel-node-dev\",\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"program\": \"vercel-node-dev\",\n      \"args\": [\"--debug-apis\"],\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"autoAttachChildProcesses\": true,\n      \"protocol\": \"inspector\"\n    },\n    // First run `vercel-node-dev --debug-apis` and then execute this debug\n    // configuration in order to attach to the running debugger.\n    {\n      \"name\": \"Attach to process\",\n      \"type\": \"node\",\n      \"request\": \"attach\"\n    }\n  ]\n}\n```\n\n<p>&nbsp;</p>\n\n## Bonus: Unit Testing your Lambdas\n\nThis tool leverages another library I built, [`vercel-node-server`](https://github.com/ctrlplusb/vercel-node-server), which allows you to create `http` instances of your lambdas. This opens up opportunities for you to write integration or unit tests for you lambdas.\n\nFirstly, install the library as development dependency:\n\n```bash\nnpm install -D vercel-node-server\n```\n\nYou can then write tests for your lambdas similar to the one below:\n\n```javascript\nimport { createServer } from 'vercel-node-server';\nimport listen from 'test-listen';\nimport axios from 'axios';\nimport helloLambda from './api/hello';\n\nlet server;\nlet url;\n\nbeforeAll(async () => {\n  server = createServer(routeUnderTest);\n  url = await listen(server);\n});\n\nafterAll(() => {\n  server.close();\n});\n\nit('should return the expected response', async () => {\n  const response = await axios.get(url, { params: { name: 'Pearl' } });\n  expect(response.data).toBe('Hello Pearl');\n});\n```\n","readmeFilename":"README.md","gitHead":"1f56cd048136261eebd8278f92683ce65fd66965","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.5.0-alpha.6","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-FnU8/hFHxzYunmmveeIn3jVyPVUOcbmGwXJkKLGg/W1R6PsYpdDu20W0c1u0AqZuFufJ2TteXUbC4Sj0OOOR4g==","shasum":"e1ea3036c4a4e45b02c1795890847667f5b424df","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.5.0-alpha.6.tgz","fileCount":18,"unpackedSize":65567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe31Y4CRA9TVsSAnZWagAAkrYP/33ZhMUCv27EF0u9M/aR\nDPh7RYV2MmihUnDde65iNPfHLPb6H1bbX2ExGsuFNGofyZovvbgCCitB7+0Z\nGT+YPMk5GlJYvMBnRoN7W9WCJTca727DS9YLuXcNS1TZ45StNi9SdiVo1Vu5\no8tOTWq6c3JZzi7OuDXHXxT86u123dBvpFkjgJOzZaYekjAZcYouDdH5dOL4\nP5oMRj7mFqpQ4sNhbeepkMhZ+60vuY+sdjSEgHEMvRt7CeVcjabfRhdYy5HE\nu2hb0uYIHMBLxox8roRFksCPOME+TivR5Cps31uz6TtOGzBxQMJ6OKgr+s3e\nuEUeq3F+8UrQLCKwaZQKp2f8UWHKGfRj19rDmwS9myPmhT5b2Om+oVof6A4u\n+OrN1kjbzaHHExLoGqWcAj5n57FnBNkl7jRCn5Do8lf+Yp/YsXQpF9rmJ/pR\n3OU2Ep486jZ4UdGEJnL0WHjon2Pa0AwaWiUCnJMt37sI7ck9iSUtR0U20q47\n1DCIEsersiwCLJ/mBBtCmy4qKTIeR0x6vlOwLVayA4sAWMfljeOZT9jkR26l\n0eHyVs8hnM763cC5tIt3P/UT1m2AT3nkUtxL374ZNONFPULGfC7S0E+Ug/om\nnzEonLlBWMbm3TjIhIxPDbgmYQtFoWq6tbIqFgfcAkaVNMl/bKhgV/WSwMaP\nUKFG\r\n=nP1b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp6Pgkrob/gjITWuj+L5+r3NaZcTQevcx4D6y+Pc4dMwIhAJmdC1F7e3rGCCkyCmI8Soc0cup8cOxfA7FXaUnWWDyU"}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.5.0-alpha.6_1591694903973_0.766129993457292"},"_hasShrinkwrap":false},"0.5.0":{"name":"vercel-node-dev","version":"0.5.0","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.0.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","strip-color":"^0.1.0","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^25.2.1","@types/node":"^14.0.12","@types/strip-color":"^0.1.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.1","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"3f4bbbdbefb1ec6be9e0ff4b2a53548cad576a0d","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.5.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Ghpa+Xv8cyU25MVNysydc6hw/9w1ML6YRNJSi+5NtIshWYkb4btl+23NzguTAdM/zhVy9UuHAO4SeIisS9VGyA==","shasum":"1142fbbe1f4abb8bf8d706aef40fdd93cd741317","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.5.0.tgz","fileCount":18,"unpackedSize":65559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe31c1CRA9TVsSAnZWagAALO4P/2Tf+xQ7iNlwCrw54C7/\ns3ud9GCxDCBIKIBRD7EjWs7+2hUhqRSftSOHrqNPLSz9z3QEiTaLiLccGpHK\nh3S5WQbdr36vJTgg8mtichdez3EmXO//rtQeze1L807roUG0eRQRHVExongG\n0Mb6rFJVWaVP7rOpOCbMGAt+N+SE4vduSnucUpvT5FrS8UyskcphpihYw4GQ\nu3sY4qMOaF38uuufavSDqP/54Ilp1CPKwWYziEQJNzIouK5psC2zTmoR+8v+\nDe7QBVtVZ4Yrhs7R/K9U1BoDCj4+5FjFMysEf34sv54PwwmzmsMO5Xv+C/gY\nxIBpVTC7eoAoro+ZhV6/S8vSqqan+iGUgaqkbbFATEvQmLxGVppxiSbsW3j0\nDkP6ZNyDzwW1wJjVLGB0f8LeUY3ubDnkcy/mjX4/wFukhOVf1QvUgqrggYoS\nWie44NSM4enZxzxvYUOz/L4CcJbglN+1elnsDu37IWDAvpN/w7VF0Sp1ZNS0\njDDG2EMwOZIxQQTpATKoeMAGa1VV13sGH25MNXeqiGCgpjKGyfK1vj/cDcbj\nmpz9TL+wpXpm6nLYXoPLSRfX9KVp4FoW13UkpcHh9Q2g4KRbTC2NdydrZwll\n3CJUqgI4Tf4mQeur239lCGg5i9/yQMQuiPnkSE+rq+0rkRjwG2E+4cCx+dlP\nr9l0\r\n=Yrmi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCWZf2qlb10uhFeBJr076zNRwSuKF1dBM37I3UbTvHEQIgTPbhduezOP819H9Zp1+Cf8JJ8le4dM1a8fhumLyoSO4="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.5.0_1591695156730_0.8366361534409472"},"_hasShrinkwrap":false},"0.6.0":{"name":"vercel-node-dev","version":"0.6.0","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.1.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","strip-color":"^0.1.0","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^26.0.0","@types/node":"^14.0.13","@types/strip-color":"^0.1.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"8eb9a4d5aef5a8363b8433cf9ae27b294019de02","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.6.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-5LtAMeeVP0g5PsY3+5BsTdQq9fMmKeQLIdY6juNbWQiaxWOcQSztr7eLV+/XG96SNAH4rw7l8etaYxA06o/VpQ==","shasum":"756dcbc12ed3f082cd8af8fb1999e97fceb49ce3","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.6.0.tgz","fileCount":18,"unpackedSize":66355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4OHPCRA9TVsSAnZWagAAnh8P/2NDm5dpLL7DErOk8d57\nP0Vw1ai1XQhoTBhJwgRlNREU+2jkWUde2cyDgWJITgf+xA/rpH7B8GKec2Za\n6ECWgDa2P+xDcvljA882qxiWLR1KlreY/UY1bTtWDiQDdIVW0JSixzhLjub8\nSCEacakltO0hjou8kPFNFCoDd2KCuNRDTN616jIRWBXbPHuDK+3scyLDUDLa\n3DhzJr+QTZOnHpFU0DVf/P05MqwniilpbOkbqM8laOYzsTz/tJAfUunkY9M+\nYd8QsDbNVy+II2H19pqhT0fmxqmCRJ3WID0Q6BVfPmLUpgjHm9qJrQK9nSnm\nW+g8hIJazxbf7kTKG6/DTcSbmZLWtp7MXArWTMmD4oumSNzlD8zgiyMs6CZ7\nInqzuugpV4S2CX+FPNURUSCzHmdwajsxrxiOZmPv+//nX4N2jFPWNMr0A8OL\nkiGTlZZgGWnTHA/8LuxTroZGgRpzGlE8sDHxHl9sm8NXU1eaXT3A9KmKbylI\nCi66P8t3M2MdkT+FeR1RoFqWxBbAl/d+TP77ZpncqiIXC0E8nTUgfuMK0sKP\neoPJARjC2NDS4z8SvR5Kf7rH+wBWwIrKCNU7K+fCXsJ3cy+1fr+CIjqlydxe\nIwn2jlOsusbMMxkozdcVDZfZ5bBeMe9xxm9D19fws/K+oVPMlVRfDEIPhmi3\nbAt5\r\n=p04m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBVEvlLzr5nZXJkokzo5Yyaa3rKn4R0R/739fKrtJucDAiBulWG+1Bk1zsBWPiI/zaxq3Es5pdDC2sSrSGP0yrb1aQ=="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.6.0_1591796175273_0.8593058996525402"},"_hasShrinkwrap":false},"0.7.0":{"name":"vercel-node-dev","version":"0.7.0","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.3.1","@vercel/frameworks":"^0.0.14","@vercel/node":"^1.6.1","@vercel/routing-utils":"^1.8.2","chalk":"^4.1.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.2","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.0.1","strip-color":"^0.1.0","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.44","typescript":"^3.9.5","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^26.0.0","@types/node":"^14.0.13","@types/strip-color":"^0.1.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.1.3","eslint-plugin-import":"^2.21.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.3","eslint-plugin-react":"^7.20.0","eslint-plugin-react-hooks":"^4.0.4","husky":"^4.2.5","jest":"^26.0.1","prettier":"^2.0.5","ts-jest":"^26.1.0"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"aa6ff49820cf5f9f0d7deea8c1d1eed2b0208c95","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.7.0","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-BKyuJ3P7nvfXncJUgwhyFlGd2IWHNuzR/tRnDpxssRXR6FyxpJ6i+lBapdRypHdXqrPf9AFeAnEzJZbzYjYmCA==","shasum":"77dc06f1344d0d14f06f4c9ebfd856b5b8b1ac11","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.7.0.tgz","fileCount":18,"unpackedSize":66600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDwaWCRA9TVsSAnZWagAAInwP/i57rZE9Gc6zGZruJaJ1\nHa0ngRyXhsteDABl5q6scXL1I8TXsy00SkyVECW0ratdVGy0QxpU++m5u49q\nwVF4Ci9zK2w7e3Uo8WaUofQYt5cGqXKbn/YCSOrZvPBFoSWW2EfYMQFLEw6m\nWlVS43/q6oQrWgo2+jm907ZZRBl+MTNpKR0KTyPAypiv42e5g3Otf2vPWGRq\nLfxgp1DY2IpU8rjgsbqaaMMEwVb8KW/XCDPwex3c3ONNHeQTaZONSh/RufiX\n1N2In6ShDcQJe5jsiWJSkZCwZRy3NGvtATvubF+QCYX1bS11OZqdSMLy/mRl\nvkFDlV9QsVKAX7upSJuQKtz6yuqfZg20xkG8GEocBAfLvwslExxcZT/k/Z6l\n212hyFGu5LTV8nTMg1H+/ZllQAQYCOZCwcco0I2AJRu16VCW+IP0RHNRkKoU\nL/I4VNjMD9Wu4YxHUOqYDr09Ytg2sYV0ef844RLjvrEXNVVthcyE5uvhjTn3\n7i8Lh2zSDr8MvQM5vN8adxpEclFnjtvKVkOU5ycAqCwqSDEXL+gj8HEslCpR\nigdtootfvGMP2Dun1goRcqE2uL/LtkEmBN2dQUVTKz/GjpBMZlxnP0t4ATV9\n6kAN3RTEosgugGpjbtho8V6aG1X/uJRDmuaVLnazwnt/oObsJipLnxBCS00+\nDLcv\r\n=7CuD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIErwcspYavi0VMUmalSie2YWsBmksVuOnfRxfNmnx0JPAiEAwbx1C04KJNIl+4HYAvhtEaVi/lBkhPRWZaEYo7oDIKU="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.7.0_1594820246083_0.6393297219537588"},"_hasShrinkwrap":false},"0.7.1":{"name":"vercel-node-dev","version":"0.7.1","description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","license":"MIT","author":{"name":"Sean Matheson"},"repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"bin":{"vercel-node-dev":"bin/vercel-node-dev","vnd":"bin/vercel-node-dev"},"engines":{"node":">=10"},"scripts":{"test":"jest","experiment":"FORCE_COLOR=1 VND_TARGET_PATH=targets/finished node -r ts-node/register --preserve-symlinks src"},"dependencies":{"@vercel/build-utils":"^2.4.1","@vercel/frameworks":"^0.0.16","@vercel/node":"^1.7.2","@vercel/routing-utils":"^1.8.3","chalk":"^4.1.0","dedent":"^0.7.0","dotenv":"^8.2.0","execa":"^4.0.3","fs-extra":"^9.0.1","get-port":"^5.1.1","globby":"^11.0.1","http-proxy":"^1.18.1","load-json-file":"^6.2.0","meow":"^7.0.1","npm-run":"^5.0.1","p-timeout":"^3.2.0","pretty-format":"^26.1.0","strip-color":"^0.1.0","tempy":"^0.5.0","ts-node-dev":"^1.0.0-pre.51","typescript":"^3.9.6","vercel-node-server":"^2.2.1","wait-port":"^0.2.9","write-json-file":"^4.3.0"},"devDependencies":{"@types/dedent":"^0.7.0","@types/fs-extra":"^9.0.1","@types/http-proxy":"^1.17.4","@types/jest":"^26.0.4","@types/node":"^14.0.23","@types/strip-color":"^0.1.0","@typescript-eslint/eslint-plugin":"^3.6.1","@typescript-eslint/parser":"^3.6.1","axios":"^0.19.2","babel-eslint":"^10.1.0","eslint":"^7.4.0","eslint-config-prettier":"^6.11.0","eslint-config-react-app":"^5.2.1","eslint-plugin-flowtype":"^5.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-jsx-a11y":"^6.3.1","eslint-plugin-prettier":"^3.1.4","eslint-plugin-react":"^7.20.3","eslint-plugin-react-hooks":"^4.0.8","husky":"^4.2.5","jest":"^26.1.0","prettier":"^2.0.5","ts-jest":"^26.1.2"},"prettier":{"semi":true,"singleQuote":true,"trailingComma":"all"},"eslintConfig":{"root":true,"parser":"@typescript-eslint/parser","extends":["react-app","plugin:@typescript-eslint/recommended","prettier","prettier/@typescript-eslint"],"plugins":["@typescript-eslint"],"env":{"commonjs":true,"es6":true,"node":true,"jest":true},"rules":{"@typescript-eslint/explicit-function-return-type":0}},"eslintIgnore":["**/node_modules/*"],"gitHead":"5911986027e3da4d9db529e611ddbd50ab1d41a1","bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","_id":"vercel-node-dev@0.7.1","_nodeVersion":"12.16.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-HyTXK+d2YBwLDq2uNhuCcrZGWvCCxfLJH3Q5WOSuASz9eCt+7/2hVtdRvnbnCb7buGaQSsR5OfWpcWlp4nostg==","shasum":"e5b4d759b4d0a36bdd7489d4ac4f6255e6bbde0b","tarball":"https://registry.npmjs.org/vercel-node-dev/-/vercel-node-dev-0.7.1.tgz","fileCount":18,"unpackedSize":66601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDwmRCRA9TVsSAnZWagAA6m4P/1BrO0W8zVlbYUpdFRs9\ndRetiUYntYoiaFdvNeuIGj9CLZBHrDjdHVYPCQduDXeTMnNPnWKphnf9UEUF\n8XJAC8DSSLqwNWfpuEivwc2lLlq1UyL0NdseVJq3gH+kFTDrU/EOCqdcGbtA\nuDD36+knBe9/r+NW+/PaTCY1sT2wYm6fKlF0S5t7V+rsCPFiyPl6O3Xkq51A\njwHIR5zBnn+CaNO22eenNRfYrz9AwLZaYORzul1mcKjg6w8IpbOhfx+1TwNv\nfi1F+lxspZkJ7BKTIPxOUiG0G9PH9OsiTRcLPGcrjSjEpHLd4+vq7zm1wKkh\nOU/pRwju/sRbiN3LK0JDmoQ9g5tgXLsaADy7cxf1bKwKVwEMROwDo/1P2FzL\nNWCx+iNWULiXLG/5WoqHlnjZdIcPmsAiWNfCzSiN+lcOESWY0P0juHmDihx/\ni66tKhIS/kbn7RT8PGB9oO7Ye2EOWiLc/oLZIqGZjLPjMRyJ1FBb7v86p9il\nJmcZkEWhX+WNlRAdcL2cXo2lOlUNNGhEKY0OdyxosW4J/bgf5kIDw7HX/Esp\n9eHdm4WMgiUkNPJ4vdv1wANHOIeoOFiEaEsBW3TS1IxZjHz+/l+PburTea1D\nUMy6LKozgK7Mt+GET7rGn2VJ+dXTHHtg8NevMNhhwxm2pQd0nZfgWjwxUX6q\n/xJp\r\n=MJqc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFdKHJUYkQBNNjbgx4+9JpWcPrydKXDBvaMy89fyn36lAiAOaWNfzqYTfSpOBwiMT51zo8jayauQFl9BRZ+D27vUHQ=="}]},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"_npmUser":{"name":"ctrlplusb","email":"sean@ctrlplusb.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vercel-node-dev_0.7.1_1594821008935_0.4975062328185009"},"_hasShrinkwrap":false}},"time":{"created":"2020-06-03T07:40:20.033Z","0.1.0":"2020-06-03T07:40:20.249Z","modified":"2022-05-23T04:59:47.240Z","0.1.1":"2020-06-03T07:58:41.099Z","0.1.2":"2020-06-03T08:00:37.268Z","0.1.3":"2020-06-03T13:35:17.897Z","0.1.4":"2020-06-03T15:54:01.882Z","0.1.5":"2020-06-03T22:22:19.038Z","0.1.6":"2020-06-03T23:49:20.809Z","0.1.7":"2020-06-04T05:54:59.153Z","0.2.0":"2020-06-04T06:51:59.514Z","0.2.1":"2020-06-04T07:23:56.086Z","0.2.2":"2020-06-04T07:30:44.621Z","0.2.3":"2020-06-04T07:57:58.016Z","0.2.4":"2020-06-04T08:05:26.361Z","0.2.5":"2020-06-04T08:12:08.033Z","0.4.0":"2020-06-09T04:52:00.186Z","0.4.1":"2020-06-09T06:46:47.686Z","0.4.2":"2020-06-09T07:22:35.263Z","0.5.0-alpha.0":"2020-06-09T07:45:20.610Z","0.5.0-alpha.1":"2020-06-09T07:48:36.568Z","0.5.0-alpha.2":"2020-06-09T07:51:41.097Z","0.5.0-alpha.3":"2020-06-09T07:56:24.937Z","0.5.0-alpha.4":"2020-06-09T09:20:40.041Z","0.5.0-alpha.5":"2020-06-09T09:23:47.350Z","0.5.0-alpha.6":"2020-06-09T09:28:24.121Z","0.5.0":"2020-06-09T09:32:36.970Z","0.6.0":"2020-06-10T13:36:15.425Z","0.7.0":"2020-07-15T13:37:26.191Z","0.7.1":"2020-07-15T13:50:09.067Z"},"maintainers":[{"name":"ctrlplusb","email":"sean@ctrlplusb.com"}],"description":"An unofficial development CLI for Vercel applications targeting the Node.js runtime.","homepage":"https://github.com/ctrlplusb/vercel-node-dev#readme","repository":{"type":"git","url":"git+https://github.com/ctrlplusb/vercel-node-dev.git"},"author":{"name":"Sean Matheson"},"bugs":{"url":"https://github.com/ctrlplusb/vercel-node-dev/issues"},"license":"MIT","readme":"<h1 align=\"center\">\n  🧸\n  <br/>\n  vercel-node-dev\n</h1>\n\n<p align=\"center\">\nAn unofficial development CLI for <a href=\"https://vercel.com/\" target=\"_blank\">Vercel</a> applications targeting the <a href=\"https://vercel.com/docs/runtimes#official-runtimes/node-js\" target=\"_blank\">Node.js runtime</a>.\n</p>\n\n<p align=\"center\">\nFast reloads, improved reliability, offline and debugger support.\n</p>\n\n<p align='center'>\n  <a href=\"http://npm.im/vercel-node-dev\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"http://opensource.org/licenses/MIT\"><img alt=\"MIT License\" src=\"https://img.shields.io/npm/l/vercel-node-dev.svg?style=flat-square\" /></a>\n  <a href=\"https://travis-ci.org/ctrlplusb/vercel-node-dev\"><img alt=\"Travis\" src=\"https://img.shields.io/travis/ctrlplusb/vercel-node-dev.svg?style=flat-square\" /></a>\n</p>\n\n<p>&nbsp;</p>\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [Vercel vs Us?](#vercel-vs-us)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Supported Features](#supported-features)\n- [Supported Frameworks](#supported-frameworks)\n- [Limitations](#limitations)\n- [CLI Options](#cli-options)\n- [Specifying a custom develop command](#specifying-a-custom-develop-command)\n- [Debugging your Lambdas](#debugging-your-lambdas)\n- [Bonus: Unit Testing your Lambdas](#bonus-unit-testing-your-lambdas)\n\n<p>&nbsp;</p>\n\n## Features\n\n- Optimised for the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Built against the [Vercel specifications](https://vercel.com/docs/runtimes#official-runtimes/node-js)\n- Supports Vercel [\"Zero Config\"](https://vercel.com/blog/zero-config) approach\n- Supports both JavaScript or TypeScript lambdas\n- Supports the attaching of a debugger session against lambda execution\n- Supports Vercel custom [routes](https://vercel.com/docs/configuration#project/routes) configuration\n- Fast reloading for any changes to your lambdas\n- Extensively tested and verified via an integration test suite\n- Can be run offline\n- No need for a Vercel project to be configured prior to execution\n- Does not need to be installed as a local dependency\n\n<p>&nbsp;</p>\n\n## Motivation\n\n[Vercel](https://vercel.com/) provides its own development environment via the `vercel dev` command. Whilst this tool is powerful, I was experiencing the following issues:\n\n- **Performance:** The feedback loop when making changes to my lambdas was very slow. After making a change, the subsequent request to the lamda would result in a significant wait for the lambda to be rebuilt and then served.\n- **Reliability:** When making changes to my lambdas the build performance degraded over time, eventually resulting in them becoming unresponsive. The only way I was able to resolve this was to restart the `vercel dev` command, significantly impacting my development flow.\n- **Debugging:** I was unable to attach a debugger instance against my lambdas. Whilst I try not to overuse the debugger, preferring to leverage integration tests, there are times when a debugger session can work wonders at issue discovery.\n- **Usability:** There was a double hit for me here. Firstly, you need to have first set up / linked your project to a project configuration against Vercel. Secondly, and related to the first point, you need to be connected to the internet in order to use the tool.\n\nThe implementation of `vercel-node-dev` addresses these issues; focussing on the [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js), which allowed me to create a much more bespoke and optimised development tool.\n\n<p>&nbsp;</p>\n\n## Vercel vs Us?\n\nThis tool is **_not_** meant to be **_competitive_**!\n\nIt is released with good intentions and respect for the Vercel team and community, offering a temporary alternative for those who may be experiencing similar issues with their development flow.\n\nThe `vercel dev` command is still in **beta**. My belief is that the Vercel team will eventually address the issues above, at which point this CLI will be deprecated. Given that we are following the official Vercel specifications, this would be a zero impact move for those using this CLI. You would only need to switch to executing the official `vercel dev` command instead of this one.\n\n<p>&nbsp;</p>\n\n## Installation\n\nWe recommend installing this library globally. This will allow you to quickly and easily use it against any of your Vercel applications, without polluting them with additional dependencies.\n\n```bash\nnpm install -g vercel-node-dev\n```\n\nAfter the installation two CLI commands will be available to you, namely;\n\n- `vercel-node-dev`\n- `vnd` - a shorter aliased version\n\n<p>&nbsp;</p>\n\n## Usage\n\nSimply navigate to the root of the [Vercel](https://vercel.com/) application and execute the CLI.\n\n```bash\nvercel-node-dev\n```\n\nSimilar to the `vercel dev` command we will attempt to bind the development server against port `3000`.\n\nOpen your web browser and browse to `http://localhost:3000`.\n\n<p>&nbsp;</p>\n\n## Supported Features\n\nBelow is a list of the official Vercel features that we support.\n\nI don't add any additional API features in comparison to the official APIs.\n\nThe design goal of this tool is to support as much of the official API as possible, whilst providing an improved development experience.\n\n- The [\"Zero Config\"](https://vercel.com/blog/zero-config) approach promoted by Vercel.\n- TypeScript (`.ts`) or JavaScript (`.js`) lambdas, within the `/api` directory, with filesystem based routing.\n- The ability to [ignore files/directories](https://vercel.com/docs/v2/serverless-functions/introduction#prevent-endpoint-listing) within your `/api` directory from being bound as lambdas.\n- [Path segments](https://vercel.com/docs/v2/serverless-functions/introduction#path-segments) for your lambdas.\n- A [custom build step](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/custom-build-step-for-node-js), which will be executed prior to the execution of your lambdas.\n- Automatic exposure of any environment variables defined within the `.env` file defined in the root of the project. This is inline with the [approach recommended by Vercel](https://vercel.com/docs/v2/build-step#environment-variables) for managing environment variables.\n- Automated [extension of the HTTP Request and Response objects](https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-request-and-response-objects/node-js-helpers) that are passed into your lambdas.\n- Custom [routes](https://vercel.com/docs/configuration#project/routes) configuration.\n\nWe follows the design, API, and features of the official [Node.js runtime](https://vercel.com/docs/runtimes#official-runtimes/node-js) as closely as possible.\n\nThe [official docs](https://vercel.com/docs/runtimes#official-runtimes/node-js) and [advanced usage docs](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage) should be used as your reference for understanding the above features in detail.\n\n**Todo**\n\nThe following configuration options will be supported in the near future:\n\n- [cleanUrls](https://vercel.com/docs/configuration#project/cleanurls)\n- [trailingSlash](https://vercel.com/docs/configuration#project/trailingslash)\n\n<p>&nbsp;</p>\n\n## Supported Frameworks\n\nI have tested the CLI against the following frameworks, utilising the [\"Zero Config\"](https://vercel.com/blog/zero-config) approach.\n\n- [x] Create React App\n- [x] Create React App + TypeScript\n- [x] Gatsby\n- [x] Vue.js\n- [ ] Svelte\n- [ ] Angular\n- [ ] Ember.js\n- [ ] Hugo\n- [ ] Preact\n- [ ] Docusaurus\n- [ ] Gridsome\n- [ ] Nuxt.js\n- [ ] Eleventy\n- [ ] Hexo\n\n<p>&nbsp;</p>\n\n## Limitations\n\nBelow is a list of the Vercel features that this CLI does not support. These limitations are intentional, and the likelihood is that I will not extend the CLI to support them.\n\n- Support for any of the other runtimes - i.e. Go, Ruby, Python, or bespoke.\n\n  > I feel like Node.js is where Vercel really shines, and IMO feel like they should have gone all in on Node.js rather than supporting an array of runtimes.\n\n- Support for any of the following [`vercel.json` configuration](https://vercel.com/docs/configuration#introduction) options:\n\n  - [headers](https://vercel.com/docs/configuration#project/headers)\n  - [redirects](https://vercel.com/docs/configuration#project/redirects)\n  - [rewrites](https://vercel.com/docs/configuration#project/rewrites)\n\n  > Despair not! All of these configuration options can be represented via the [routes](https://vercel.com/docs/configuration#project/routes) configuration, which is supported.\n\n- Support for the raw AWS lambda API, which is currently [supported by the official Node.js runtime](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/aws-lambda-api)\n\n  > As stated in their docs, this has been exposed to help clients with existing lambdas migrate over to their platform. I'm not convinced this alternative CLI should support this.\n\n- The bespoke [Vercel](https://vercel.com/) 4XX / 5XX error pages.\n\n  > Meh. I return the expected error codes. I'd recommend you implement your own custom error pages in your UI anyways.\n\n- Support for [disabling the Node.js helpers](https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage/disabling-helpers-for-node-js)\n\n  > This has more of an impact on production environments, where you would want to hyper optimise lambda performance in some cases.\n\n- Support for [Next.js](https://nextjs.org/) projects.\n\n  > Next has it's own development server with bespoke features around the APIs and pages. I would recommend using the `next dev` command instead.\n\n<p>&nbsp;</p>\n\n## CLI Options\n\nThe CLI current supports the following options.\n\n- `--debug-apis` | `-d`\n\n  Setting this flag will enable the debugger against your lambdas.\n\n- `--debug-apis-port [number]` | `-o [number]`\n\n  Allows you to specify the port at which the debugger for your lambdas will run. By default it runs on port `9229`.\n\n- `--port [number]` | `-p [number]`\n\n  Allows you to specify the port at which the `vercel-node-dev` server will run. By default it will attempt to bind to port `3000`.\n\n- `--root [string]` | `-r [string]`\n\n  Allows you to specify the relative path at which your application code (APIs + UI) live. By default it will be `.`.\n\n<p>&nbsp;</p>\n\n## Specifying a custom develop command\n\nIf you aren't using one of the [supported frameworks](#supported-frameworks), or if you would like to customise the develop command, then you can add a `dev` script to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"my-dev-tool -p $PORT\"\n  }\n}\n```\n\n**Note:** It is important that you pass through the `$PORT` environment variable as shown in the example above. This is so that your development server can be correctly managed by `vercel-node-dev`.\n\n<p>&nbsp;</p>\n\n## Debugging your Lambdas\n\nYou can enabled the debugger for your lambdas by providing the respective option to the CLI:\n\n```bash\nvercel-node-dev --debug-apis\n```\n\nThis will start the development server, with the debugger instance running. By default the debugger runs on port `9229`. You can change the port number via the `--debug-apis-port` option.\n\nOnce the debugger is running you can attach to it utilising your tool of choice.\n\n### Debugging via VSCode\n\nBelow is a set of [`code` debug configurations](https://code.visualstudio.com/docs/editor/debugging), allowing you to either start the `vercel-dev-node` instance with the debugger attached, or to attach to an already executing debugger instance.\n\n```jsonc\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    // This will start vercel-node-dev with the debugger attached\n    {\n      \"name\": \"Launch vercel-node-dev\",\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"program\": \"vercel-node-dev\",\n      \"args\": [\"--debug-apis\"],\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"autoAttachChildProcesses\": true,\n      \"protocol\": \"inspector\"\n    },\n    // First run `vercel-node-dev --debug-apis` and then execute this debug\n    // configuration in order to attach to the running debugger.\n    {\n      \"name\": \"Attach to process\",\n      \"type\": \"node\",\n      \"request\": \"attach\"\n    }\n  ]\n}\n```\n\n<p>&nbsp;</p>\n\n## Bonus: Unit Testing your Lambdas\n\nThis tool leverages another library I built, [`vercel-node-server`](https://github.com/ctrlplusb/vercel-node-server), which allows you to create `http` instances of your lambdas. This opens up opportunities for you to write integration or unit tests for you lambdas.\n\nFirstly, install the library as development dependency:\n\n```bash\nnpm install -D vercel-node-server\n```\n\nYou can then write tests for your lambdas similar to the one below:\n\n```javascript\nimport { createServer } from 'vercel-node-server';\nimport listen from 'test-listen';\nimport axios from 'axios';\nimport helloLambda from './api/hello';\n\nlet server;\nlet url;\n\nbeforeAll(async () => {\n  server = createServer(routeUnderTest);\n  url = await listen(server);\n});\n\nafterAll(() => {\n  server.close();\n});\n\nit('should return the expected response', async () => {\n  const response = await axios.get(url, { params: { name: 'Pearl' } });\n  expect(response.data).toBe('Hello Pearl');\n});\n```\n","readmeFilename":"README.md"}