{"_id":"impulse-api","_rev":"43-ea01fedb56f9dd90f2c76656f87a0e94","name":"impulse-api","dist-tags":{"latest":"3.0.11"},"versions":{"2.0.0":{"name":"impulse-api","version":"2.0.0","license":"MIT","_id":"impulse-api@2.0.0","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"d92741f4670645e602290fc209f935cb43c039e3","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-2.0.0.tgz","fileCount":22,"integrity":"sha512-ACEKmBP12HQwC786JiO7PF8dE0ZM/bowTsyXK4gT3KPFEtz3ZI8g6eyyMTU81TPExseaCbexj8Uy6j3avf05GQ==","signatures":[{"sig":"MEYCIQCAK/Y6MOdthLoovVdi3QN/y/UOCnBlhM8oThbEt4TL6AIhALcBXjXE86oQAz8ZuJRjZM23SvsiVjT/KrCka3XITRBS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIzhQCRA9TVsSAnZWagAA6vMQAIs4hmgGqCZWwzxG0TN9\nT3lOszE6ghE8unKF4rMlYR16S6lx4vLnXnSHPGTuo8Qf25p6L3rnU0xAxQns\nbmhloWrjRhIR72oCcmkAtgKeRIOV/XxVsVoadOsZHyvoWDzgLSL9B2bqlnCH\ngE7jkeRxXGC+31fmkAZ1PqBvUlnCLpKVQMWca+3PWImF/lRpBmqEkoVWKPJb\nUfZnqo/0bYrNkeHAA44hI4spPof2DFXvSoSY3b1KcsN+PRqqh/Ap4MPbTWNd\nqARGW83c2vJ6fAhBdhQHkNkKeloNcjQo8RZ7Qii18RJuxCOLbeswgLBdrFpA\n9J7mGr5mUvQUnBAMKwnKHGE1XUuGjLCzKbgs62eUMqISpBWOj5EN+xZRkd+X\nQzgL1MDoHigH1rV3CZBuXEO3KZmTtnimnRadpaL2lQ8Flv37XojBslOSyufS\nlMma3LqRriJBAn5/vBLUrMvIaQeJ7H3P6e/CAqvV9NxZ0r5QzDOuMDbNLMn/\nn4Pm8QZpWrQ5ZEJffnWuCwAeNGucl23PSlHY3TzYEEYqMZhBobOJy4ETd7V+\nRxQJTqHFPUe2fhN3cZnce1NmXl1E0SAfMOzhqMRdw4skSA5IvIAGcJxRGYfN\nR7XH1Tb/vOrkxrGhsQFCB6K186ZQK3MhuO9RHTZDulyLxXEq3X/TugA24MsV\nghbC\r\n=Kfbs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/api.js","author:":"Dan L <dan.lampman@gmail.com>","gitHead":"6cee55bc5c752c75246d446c82cf05e0e82a6dbf","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","integration-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["lint","test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"6.14.9","description":"A quick and efficient Api with Express under the hood.","directories":{},"_nodeVersion":"14.15.2","dependencies":{"cors":"2.8.4","async":"1.5.2","lodash":"^4.17.15","morgan":"1.9.1","multer":"1.4.1","aws-sdk":"2.343.0","express":"4.16.4","restify":"^8.5.1","http-errors":"1.7.2","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.7","express-fileupload":"^1.1.9","express-xml-bodyparser":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.1","chai":"4.2.0","mocha":"7.1.1","sinon":"4.4.6","eslint":"3.12.2","istanbul":"0.4.5","pre-commit":"1.1.3","eslint-plugin-import":"2.2.0","eslint-config-airbnb-base":"9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_2.0.0_1629698128354_0.7972155251081035","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"impulse-api","version":"2.0.1","license":"MIT","_id":"impulse-api@2.0.1","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"de116d1f6d17d43fb58125ccaa633534a0f36695","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-2.0.1.tgz","fileCount":22,"integrity":"sha512-Yu9SssD6j7bZpV1TF5Yd/jpoOGLmH3wt9vyhsqw5Uyd21dI8BJ8ZwJH2F4gWfdCsl9gGHBwfbC1boeWm01bkoQ==","signatures":[{"sig":"MEUCIQDkOfxoViCrRRsX+InwqmPixv+gTs1kWA3IO52uF4/dvAIgRdy0cLNHPO8ahAqBb1YsMahtgdBz8qvIaxOkCQaEAck=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhI+uSCRA9TVsSAnZWagAAucQP+QFW8dvwLseYU7wxqWaG\ndZTE07h6hzkPTaSOMvRTPAnGX3zk5stbEGr4et4MLmyk4kkDkEfdUXD2jeFV\n24aB8M6cDbGYrr5rAz9p8DV2D8C20pAhivaooEPt1Lsvq57pFQkjMs7hbR1j\nlXJFY0Aya46lXJ6dyZJ1v/g8B5BdKCADqI0UUv0glDk/21tF+wnKGddJAf2T\nWYV1PjhPa48OnNf3cqWeZloWl3n6ouaHvfFcKwyqoKMFnBSyIUL9TeOX5Kw9\nnWDUcYrmUZKFoOl+4SA8pV1DQ3vw8gVAylFhqvWvzY6hwnzkRhukzbgkV+a+\nVhK7f9p8fGj1Rr6++vjNDV76umKWxfCyA5YWh/pCzJ6dEzuS6B1oZ1pTMaW1\nRv2Gzc84E0vBw6LrsZurSQVrmCd4YHN2Qkrdr2ED9E2IS1rdiB3zmTE+mb3U\nykFBbEvMK/2mxbo0xxNmUFNlL7XJ3DZoc9GlE+BsyTjWRWuSa81G/n6h621x\nCGm+H1RSidWyE5XKYu1+m8mxxCl3llALwgvHci4c9K3444KVi6GE7UPzDFo0\nnu+81K83dj9qGc4PS1uEtzUJSoEipFXvSCNLX/HkB7m6wicNVKOdDPFhXXNj\n3XgN51krwVC47EnIc6lwCWw9+FwKGiA6i+6KTZBhIMEirbRx/J8UbPqL4x6B\n4j+W\r\n=mxG2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/api.js","author:":"Dan L <dan.lampman@gmail.com>","gitHead":"6cee55bc5c752c75246d446c82cf05e0e82a6dbf","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","integration-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["lint","test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"6.14.9","description":"A quick and efficient Api with Express under the hood.","directories":{},"_nodeVersion":"14.15.2","dependencies":{"cors":"2.8.4","async":"1.5.2","lodash":"^4.17.15","morgan":"1.9.1","multer":"1.4.1","aws-sdk":"2.343.0","express":"4.16.4","restify":"^8.5.1","http-errors":"1.7.2","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.7","express-fileupload":"^1.1.9","express-xml-bodyparser":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.1","chai":"4.2.0","mocha":"7.1.1","sinon":"4.4.6","eslint":"3.12.2","istanbul":"0.4.5","pre-commit":"1.1.3","eslint-plugin-import":"2.2.0","eslint-config-airbnb-base":"9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_2.0.1_1629744018411_0.43920893049822385","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"impulse-api","version":"1.5.0","license":"MIT","_id":"impulse-api@1.5.0","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"450c04c5d46f1c82090895585623de60f3e42b57","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-1.5.0.tgz","fileCount":22,"integrity":"sha512-VQS39KzOMJtU1AX+L0PsNNSiCgdbJuPdO2FLF19m/S8KpIpLYtcv5y+YCf1Zr+72Sc2hcDG1MUGASjorZbz0Hg==","signatures":[{"sig":"MEUCIGojJrCxeCoAJwuF18botHhnR7pIP3SOr9VGvjWGtGikAiEAtmwd8tS5oMygufa8DwSscGyB65Nu2E6CVaBEN3UIf0I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhI+2KCRA9TVsSAnZWagAAdDUP/3iKD4vkvbcgK9timK2y\nNmXDa8kt5L2sWdIPNqWEuCFdYLNfAvNQ1RvGcKL6Ixdu1CQb6QVlQI9KbzRX\neMyOtGzhPAZGI5aPd85b4pszmCwXPsJC71435KMVM9fyJTjE195ite8xJ1oY\n47Yc1pqyrdT8wbfg0Q8ljZ1F97p18TEdjLRPSr+0hGKHoLYiodoRibMsu33r\nMFvLquvj8N/cwpseLLfPHyJOAKrHeTgw8RSsfgHqPNYNuwAs2lRkPt0iTuDk\nmrX8OzaGqntnovaD+0VVJaXjIv+d4Sqp6uhz7OlAGzDaawNYqWfjcfUeApBW\nIJyk7DuTE0WxCFEPRAsCbW72Bpo7xALiUNPHlO2r43CFs3l8KSFeBcgeEiis\nVaIJ1telQgfs9/U/m8ZajBSz82wmTFhKagn7XkRDgUt9kZmqpj43HfA050uD\n2gC/ZpGWjqczxGsPQbrSHtKl96U6kDI9MeLTB5wEY7jIMU6yXmxDQgr1dWsn\n77DwLtz1G7kLFxCqFRxdJ/nJN41IldluEzGAYP3+xG2kKBRMD5O7jMbGAv1p\nzaASzBXz18CuGQevOIns/fVhFqfWS+Dh2ZZ2G/U0QqC7S/7zuvIg/W1IJHu/\nZcE3k/HzhO7aXpdpO65LLiRUtBqTtRp49U7jQ7DkLIEGt8sNKzuff7zmOZY9\nvGwh\r\n=ZK1a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/api.js","author:":"Dan L <dan.lampman@gmail.com>","gitHead":"6cee55bc5c752c75246d446c82cf05e0e82a6dbf","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","integration-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["lint","test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"6.14.9","description":"A quick and efficient Api with Express under the hood.","directories":{},"_nodeVersion":"14.15.2","dependencies":{"cors":"2.8.4","async":"1.5.2","lodash":"^4.17.15","morgan":"1.9.1","multer":"1.4.1","aws-sdk":"2.343.0","express":"4.16.4","restify":"^8.5.1","http-errors":"1.7.2","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.7","express-fileupload":"^1.1.9","express-xml-bodyparser":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.1","chai":"4.2.0","mocha":"7.1.1","sinon":"4.4.6","eslint":"3.12.2","istanbul":"0.4.5","pre-commit":"1.1.3","eslint-plugin-import":"2.2.0","eslint-config-airbnb-base":"9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_1.5.0_1629744522606_0.9847013284208495","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"impulse-api","version":"2.0.2","license":"MIT","_id":"impulse-api@2.0.2","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"7f071a1a715d7f0fcc2ffeb99bfc2e4089d4e43b","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-2.0.2.tgz","fileCount":22,"integrity":"sha512-jWDOccrElODc+gaxBJl3HVHJpWFf/hQRBfGhdQ5hbNGyWZwL3Qytw3d7zJcWf67kBwdrXPLe6z8KOY75M4z3ZA==","signatures":[{"sig":"MEYCIQDLobanOIIJqwYeYwU9E5Uc+kF0tZ0qJ70MGV3Po5jNWwIhAKInZDe7YdVFTrDULix4qrj64hKxhaDmgJ5FHLoFXG9u","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhI/uhCRA9TVsSAnZWagAAiMAQAJ3bfmCicNuah0V2/1j4\nFEzxB9U1+rsBhD6iHi0MDHnDjAIjxUZ/EvAMSq+hdPga0Xu3wG09q1tzYPQO\nUbxCj1i3LeGdFd11mvzOV82HjB3ESFLSCj3n+3jOhNQDq/Xgb/YN1sPBcTw5\n1H6MktS2meg/Gag8h4z3ZCLpcMFI1dFl4c/hUo8EiXtvVIDZFSBTRb2Hz4GD\nEx9gl8UJXOdYuhhU1XdFnkXulNMxIH+xQ2nuz8LhHKKCHEwgUGM/WzpAbkIY\noVwIpINR+d65UlneVLg6Rmq/aEc9xjkGnc47AuYzRrbwmFPLBvFmtzfYH0Qn\n28tL2lNq7sdH9kl2byRV/7+DNbN1fOo1fIoOyTBWGDfLsfVF0QdQuX7Geu5L\nEShwR4wVbBINkeXm7sPMP1zFFfjHbtYP0iQqKhbT+vbDuOvug9UXLsNRcoSY\noLjKwnQ88Ud7av+8FqpXVNlHSTVmElV5kg8Bs7HqCV3aOmY7en9Ln1UxsdAp\novO+ChTkxUP3Tq5AfAICzcVgMCjhwgV6eiqrp2oa9dhaPqOuj+2ys0tWUc5g\nSw9ppcl2HC6PeHtoA9hcLXkYrznDtE6zkJVYEDLRbtNTO9E+/cdJaYNEBThO\nrDbvbekgT4dcJTUuHVnsI8H8Pu37G6F+Pd7bYZ2ocJWU5TXynz7Pp6zZWc5n\nvhHM\r\n=RoMD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/api.js","author:":"Dan L <dan.lampman@gmail.com>","gitHead":"0ca4e6b5ef7600d38cfc9e3d1e08e80f045967b5","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","integration-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["lint","test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"6.14.9","description":"A quick and efficient Api with Express under the hood.","directories":{},"_nodeVersion":"14.15.2","dependencies":{"cors":"2.8.4","async":"1.5.2","lodash":"^4.17.15","morgan":"1.9.1","multer":"1.4.1","aws-sdk":"2.343.0","express":"4.16.4","restify":"^8.5.1","http-errors":"1.7.2","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.7","express-fileupload":"^1.1.9","express-xml-bodyparser":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.1","chai":"4.2.0","mocha":"7.1.1","sinon":"4.4.6","eslint":"3.12.2","istanbul":"0.4.5","pre-commit":"1.1.3","eslint-plugin-import":"2.2.0","eslint-config-airbnb-base":"9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_2.0.2_1629748129251_0.6007223001360285","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"impulse-api","version":"2.1.0","license":"MIT","_id":"impulse-api@2.1.0","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"06816eebb51270814b7c9a1d2cf577ffc0f0d808","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-2.1.0.tgz","fileCount":24,"integrity":"sha512-XBpcWsdE00EQbs6bLKMHhuPKiRhUM5vviNgI2eLo5thXlRkj9plwQV112WekYDUpskaSNii89rksPuojz/fubA==","signatures":[{"sig":"MEUCIQCdB3XfVOyBAGLkgyPpMW2L4ETH6fP+coslrePthY9PJgIgMwGu610AfyfIn2SIZ/xEYY7ie58m7bVXkKJ8pmIYo0Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":46686,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJij7HpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9mA/7B/zqXz0KzHW3NDC/mwXEC+ZzI0WUscaHqAENMegXcWQAKm5w\r\ndk7NPWNeCcCqwk7UYkse4Y8OpxNgbA7UrL2iuBJpsYUMuzVQxjB7h7UKQ46C\r\nuRtcz5VxWDaGpUmcWZvlLikqMLRJH+BAou68w6fA/5VNFE81+PMGfetSps/2\r\ncrL5Dn3y4W3lhb8GHzbYSUr475gGkTnKXHzTnjLRjdcv/PLRqPbXD4EjKX/c\r\n1ZjrSL2c2KwCy1kejk8rfSK+7HcOpf5SqkI0QUDTjusgzPs0n25HdrKPd70J\r\nDWoVPe+GfYIXibvDvfdWM7FeG8lWYvdiPgFXNuhWH9vsjRvb7GvO8Ov1+GvQ\r\nINIEePfbc/TVJMJrmGjhKYSDtutVuju230WMTMijaBDI01ysQ8hJEz9LI+ew\r\nIn2/pSW35FWjCt3WQEebsuRmEdyPU1x/cmUVcZNeyQZLc8nx5DTV0icMn8Gg\r\n31U6tirtFGQzKCJfur03HhcFMmqRD00g7JEn7rutuUxStSjR4l4Yv7MS5MCJ\r\nD677wmrLWIq01Wog+UInHV8Cyey+2UlKaHdAy8prJh8tgLqt3z7Vkf92yR1V\r\n7c+TVw+pOGn/gc2GsiA9P7XVsK4rBGKCjOOdfUO+kD5DXEM1KHpICuaJpV+7\r\neS1n0w+LSlnVdFCzGWjusR8N9yfSQfc2Eyg=\r\n=SwGm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/api.js","author:":"Dan L <dan.lampman@gmail.com>","gitHead":"ef193e4eff203d24f59dca690f82d464653ffe9b","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["lint","test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"8.5.5","description":"A quick and efficient Api with Express under the hood.","directories":{},"_nodeVersion":"16.15.0","dependencies":{"cors":"2.8.4","async":"*2.6.4","lodash":"^4.17.15","morgan":"1.9.1","multer":"1.4.1","aws-sdk":"^2.1141.0","express":"4.16.4","restify":"^8.5.1","http-errors":"1.7.2","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.7","express-fileupload":"^1.1.9","express-xml-bodyparser":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"15.1.0","mocha":"7.1.1","sinon":"4.4.6","eslint":"8.16.0","pre-commit":"1.1.3","eslint-plugin-import":"2.26.0","eslint-config-airbnb-base":"15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_2.1.0_1653584360866_0.5395504522932724","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"impulse-api","version":"2.2.0","license":"MIT","_id":"impulse-api@2.2.0","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"ada769c38c088a004939de4fe90036e11e4a95ef","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-2.2.0.tgz","fileCount":24,"integrity":"sha512-/QIurhZ0wmOIBnr+0ZAqFnPUPnQhCB+aP6YUk/wNFR/Dt4GYcX1E8S6BbpzXKMJgCie+bNvpoBJDvnrEKN17ug==","signatures":[{"sig":"MEUCIAxzAr1B/dhAqv76faGeB/7lCHisHjNop+ss4RNFTDGmAiEAvEdemsR8+zSRTvZHOf0sUThboY8pX1cuWFgIEW2v13g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilOjvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9EBAAj33ylU7jnU8Rp3uJ9ZkevtoC+kt3x3ILJdgT/Ejx9x9dqSHG\r\nF0DPTzdIInCDMUVj/7UTXiYcDqNmUmWtmg6ljQnJ7lYwmxex8ps+9y8IRaIr\r\n26yfX4DevOyZxGyF79H5M+5WdYjXyMFQehLC+lrtB1KiM75LUCjV5foCSwM5\r\nOfXRR+614HkZMhdS3vfz7N3Nw7TpZUYhfEGnEgch2mR5ActSvyWtLD2HzVS1\r\n+Gi69MQQX2jASydoFEi38xAIJLzybRbORjsLEJuCMO4sBo/8PRirxR2YQL6C\r\n1NQI+JUTp2J2TnxJznJwx6Bu8WpKwIR0GcLMfuQAwZLAPZOoCDsUThD4WnJg\r\nuCTwQhzHxFM+h6DeHocOvMbUCZwaLaJCClF0o4PQc4i3O3iCtyxMbx6s1d59\r\ntTwaHHzmUlXm6d9JMhc7Z1cEUOCkVsdU7i4d/nW+//uDM6Ijw2DuMOP5iOuk\r\ndIoEaXUXgiC7xq3v19HfI/72OCgQjX5njxC1CEeU0OnuNuTnmjcEnxD0Pqbk\r\nxEnAsMMYI4k8d9/nrKQ5TPHocsXXRZfnja1VTNqxZYn9bc0Nbxp/crV79e6N\r\nGt61AkIkDP8mA5Gp7/wGcYR7Xy5N4K3ShqkjTIk0Sl2FmCw8gATGh24y5RNY\r\njNmhYHhhfh3zSInZRcG0cKz1Myn1XjngC20=\r\n=tvOO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/api.js","author:":"Dan L <dan.lampman@gmail.com>","gitHead":"215d212366c32db252087edd52ce758d26250420","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["lint","test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"8.5.5","description":"A quick and efficient Api with Express under the hood.","directories":{},"_nodeVersion":"16.15.0","dependencies":{"cors":"2.8.4","async":"*2.6.4","lodash":"^4.17.15","morgan":"1.9.1","multer":"1.4.4-lts.1","aws-sdk":"^2.1141.0","express":"4.16.4","restify":"^8.5.1","http-errors":"1.7.2","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.7","express-fileupload":"^1.1.9","express-xml-bodyparser":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"15.1.0","mocha":"7.1.1","sinon":"4.4.6","eslint":"8.16.0","pre-commit":"1.1.3","eslint-plugin-import":"2.26.0","eslint-config-airbnb-base":"15.0.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_2.2.0_1653926127380_0.9322313714248678","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"impulse-api","version":"3.0.0","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.0","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"5622136732d871bef135b537e1c9361a47e43dad","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.0.tgz","fileCount":25,"integrity":"sha512-j6i5HImZ5rLJ/d2HJ9/m/JCooZzipKLj61CI/9E97OIMMnogmz0EmnQiz4yDdZh8I/XDGotlF6cGaXjt3Vwofw==","signatures":[{"sig":"MEQCIHlWQR4YLV0YhFZJ2mAbVucfyfla6bHpADIY6ZsoPHtzAiBtHLm9IF3UToKc1J2zTH2ealhGKoVb3ju1W6WHg1RgqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46985},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"77e4610e4a958d74b7c58180062db276d6a54fee","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"10.9.2","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","multer":"1.4.5-lts.2","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.0_1743435302519_0.04638739140801351","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"impulse-api","version":"3.0.1","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.1","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"574e1e897bf4b5a9f266af33f76714834a427b4d","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.1.tgz","fileCount":25,"integrity":"sha512-H6vl1i4cEd0Thq0Keof7VdYgiIO5SJA4MMDOuTAmfIIlXaMsbNoSWoi+ilOBuIFRxPc2cy6nnWXOIopp+wIn9g==","signatures":[{"sig":"MEUCIFuQ4wiGVZetaTD+KXvg1VtwkAuohu/gyl79AV2D/c1tAiEAsx9M5AgPBabBH8TeogkMQ0985IPGPJHrmDaChy9zQ98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46925},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"6257c18cf50c81943e01f0d361ab9b1b5b9429f2","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"^1.10.1","multer":"1.4.5-lts.2","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"^9.0.2","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.1_1760024691417_0.876057938363284","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"impulse-api","version":"3.0.2","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.2","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"3a57d8d4eb87d5ce38578049f7dfc95175bf98ec","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.2.tgz","fileCount":27,"integrity":"sha512-vA5HhemqmTkNFAHxecC0TphczavQ1HfGU2+I1sR3ncrCmy9DduRHXGdSn51qluDxdu0WH1Urov2u/lOYxnpeDw==","signatures":[{"sig":"MEUCIG9PYPacZ2noUCg6jUjjyvFgbAoeKwIxizc1RRRUV+8GAiEAoYxrjHGlq2J+1ueGpWW0a+/h+Lll6xe15DNebJ0Jw3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62904},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"a83c066ff797e61a64f03c686b771232d127670d","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","multer":"1.4.5-lts.2","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.2_1761490566198_0.5690231948626097","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"impulse-api","version":"3.0.3","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.3","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"79fa15615fbd877a5ebada333e32047cfc4dbcda","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.3.tgz","fileCount":27,"integrity":"sha512-/Alh+BQNv2MK8l63z9HQpN8qGVLQeiXiWQtuMs4UxJFxAAxeOYcwm5GAjwXVDIhmwER2h2AdxF/6ByvbJi98rA==","signatures":[{"sig":"MEUCIQDIGqlv+Bs38kP2MyicAhtQW/KvI8O45j5J/i/krWYbPgIgLJ/aMcsmAmGbf4iuBMpcz+epbb7hy1mO7KoaM5wGPLg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63236},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"c12fce072f74d8b0fb94567202ccd2147f45c9e8","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","multer":"1.4.5-lts.2","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.3_1762204370915_0.6973972643145208","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"impulse-api","version":"3.0.4","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.4","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"93979abe41e9fdbe7d3bd77f2f227fccc77e4a24","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.4.tgz","fileCount":27,"integrity":"sha512-qjUJZccLAlXwsA7hHI4vBeI2DLlcKUhe8evTb4Fz3sRbpoibQI5k3Qn8jCfgqAsXx6qbbQ0us2guN9M9Ps4YRA==","signatures":[{"sig":"MEQCIC4bAP4uafjFYopi5u8tGIbXpmvsJnEiQOpWMp1B8E6cAiBIEgq4bYM8SujYe/y5JdJa21TRwjOPBwv9ihWYWxmW/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69496},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"47903c5434e95c6553c1e04cbd688a3d1d453dc6","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","multer":"1.4.5-lts.2","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.4_1762388348368_0.9706034218107646","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"impulse-api","version":"3.0.5","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.5","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"f1c3b1c09a1e7ddb15f18fa3998cde3dc68034db","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.5.tgz","fileCount":27,"integrity":"sha512-G/mIr6z4tf1qUEMSm/dMdlAb/chbJQ29vW+dlluZTbNXeQ6BzzMvOoqc8Sk9MIWIRDcLLuRUAGTmT3sdJbntLg==","signatures":[{"sig":"MEYCIQDEr+fFZEpAeTp2SJWECL77p3buOu5QWlvBa7jT1CTCFgIhANErRDb5T0Vx0qaDqbhKcc8ewHl1sqMNbMAnTnsBLn1x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71691},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"eb52558ded3105e7308708e8ce1432e8f5d3dca4","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","multer":"1.4.5-lts.2","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.5_1762397994738_0.7350492746049857","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"impulse-api","version":"3.0.6","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.6","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"51609236dc8b158117f662a06476df8b53dc6d5a","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.6.tgz","fileCount":27,"integrity":"sha512-bx657maRrbmejbWme4iGdl4C6Gtb2pb9Jlrz81TvzK45zcx9u2ALHcLmbmNvKgZo4zjxNjhlNM7pQJeLwSbJrg==","signatures":[{"sig":"MEQCIQDXBWduCE9Iwc9rHcl4n8zGnjuhpaq9svBr5wPVRUVdJwIfP1xSyUSMab2xwbGuvwjN+m3gQSvXVOh2uDNIpv+vIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71612},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"462ce514db9885db0be75f263a2977e80dac3033","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.6_1762399080136_0.197755175298288","host":"s3://npm-registry-packages-npm-production"}},"3.0.7":{"name":"impulse-api","version":"3.0.7","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.7","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"59e41ded9fed00cfaa26ccd924d94536b8528cc9","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.7.tgz","fileCount":27,"integrity":"sha512-LAED01mcOnQelIvrlHEumfVpDW+XZ3b1c2tV4RTLBfxxHijVVJ7i4I3nWR8N5vkoqysGV8kzXk2mQ0bzzFWOIA==","signatures":[{"sig":"MEQCIBLO0qgK6aDLGOe5mRIOX4R7XXki9IWzXAv2hTkQ6TPEAiAJJ0DifflxJ1avXABhPhUo/LcONeRaZYibWuxZIaz2Kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79066},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"7eaf9f85c2f86ed9ea44710dc13b7faec618c0ef","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.7_1765775082805_0.11596952042733166","host":"s3://npm-registry-packages-npm-production"}},"3.0.8":{"name":"impulse-api","version":"3.0.8","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.8","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"79e6df523036d4b788a9bbb05c07629338cc6088","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.8.tgz","fileCount":27,"integrity":"sha512-jWtgaNLqnBvz16HMnLob7GM/6RFf9sXBOxWxuc5ccVtQr2RbnZd77OWkafWDktdi/yFAQCNbbx+Xeo5yo7tIlQ==","signatures":[{"sig":"MEQCIGaTf9XaTKY1A+YpJr+kBjTxhUdGyMImo2X9kU2bxSbhAiAPpS1qqJj7bL8X3BPMbkngEWEXOEU3fbBzbzYrIQRZDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82183},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"031123119ca0a40570b2490918768686615da044","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"nyc --reporter=lcov --reporter=text-summary mocha","test-server":"node ./test/integration/test-server.js"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.8_1765941074392_0.21511018534110193","host":"s3://npm-registry-packages-npm-production"}},"3.0.9":{"name":"impulse-api","version":"3.0.9","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.9","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"4d1510379007a9e1d4870a939ab09dddd827d344","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.9.tgz","fileCount":31,"integrity":"sha512-ghIYuvcbbHUCKk2acz5v1fVDynxOPiq9Wqgaj7RCKGT11bOxFEH8FQqnyER+HT0yM9+qrYGoq7GU46NRMpUoBA==","signatures":[{"sig":"MEUCIEbkd1zSftuLDI6fRZm18kcveVKMgTkgeoMdpzGIX9ppAiEA+VEyAYfDuv+uFoWrwTHXi2tUptbP+/Dwye+omxjk4Wo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114936},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"7b3ed7a11ef067fe198fe5245f1799e5cf491f06","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"npm run test:unit && npm run test:integration","test:unit":"nyc --reporter=lcov --reporter=text-summary mocha test/unit/**/*.js","test-server":"node ./test/integration/test-server.js","test:integration":"nyc --reporter=lcov --reporter=text-summary mocha 'test/integration/**/*-test.js'"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.9_1765942871326_0.13418249124969495","host":"s3://npm-registry-packages-npm-production"}},"3.0.10":{"name":"impulse-api","version":"3.0.10","keywords":["http","web-server"],"license":"MIT","_id":"impulse-api@3.0.10","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"homepage":"https://github.com/dan-lampman/impulse-api#readme","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"dist":{"shasum":"34ebac3a792db3c2a09b441f8c7074b8f5e7659a","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.10.tgz","fileCount":33,"integrity":"sha512-Qkbh9YYaiis/+WBsCWMgSC6dv4Anual4ORtd/AAcLxWpojSQsx/B5amtNSUdcU4jLIFH2SupWuQNKuthxmAQrw==","signatures":[{"sig":"MEQCIExFIKX8DEV/Q52X5o6/Y8nrwhRCiD/dx+QxSOWsu9PuAiAX0C4avzAFdS5Ebqsd5nWc2g1YoImYXW/rgZ2ttwEvkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133113},"main":"./src/api.js","author:":"Dan Lampman <dan.lampman@gmail.com>","engines":{"node":">=22"},"gitHead":"116096e99e8a85aa9acd19905235281ecb14e780","scripts":{"lint":"eslint --ignore-path .gitignore .","test":"npm run test:unit && npm run test:integration","test:unit":"nyc --reporter=lcov --reporter=text-summary mocha test/unit/**/*.js","test-server":"node ./test/integration/test-server.js","test:integration":"nyc --reporter=lcov --reporter=text-summary mocha 'test/integration/**/*-test.js'"},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"pre-commit":["test"],"repository":{"url":"git+https://github.com/dan-lampman/impulse-api.git","type":"git"},"_npmVersion":"11.3.0","description":"A efficient and powerful API with Express under the hood.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"cors":"2.8.5","async":"2.6.4","lodash":"4.17.21","morgan":"1.10.0","express":"4.21.2","http-errors":"2.0.0","jsonwebtoken":"8.5.1","path-to-regexp":"0.1.12","express-fileupload":"1.5.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","sinon":"4.4.6","eslint":"^9.23.0","pre-commit":"^1.2.2","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/impulse-api_3.0.10_1768157894944_0.546634430614166","host":"s3://npm-registry-packages-npm-production"}},"3.0.11":{"author:":"Dan Lampman <dan.lampman@gmail.com>","main":"./src/api.js","name":"impulse-api","description":"A efficient and powerful API with Express under the hood.","license":"MIT","pre-commit":["test"],"scripts":{"lint":"eslint --ignore-path .gitignore .","test":"npm run test:unit && npm run test:integration","test:unit":"mocha test/unit/**/*.js","test:integration":"mocha test/integration/**/*-test.js","test-server":"node ./test/integration/test-server.js"},"version":"3.0.11","engines":{"node":">=22"},"dependencies":{"async":"2.6.4","cors":"2.8.5","express":"4.21.2","express-fileupload":"1.5.1","http-errors":"2.0.0","jsonwebtoken":"^9.0.2","lodash":"4.17.21","morgan":"1.10.0","path-to-regexp":"0.1.12"},"devDependencies":{"eslint":"^9.23.0","eslint-plugin-import":"^2.31.0","mocha":"^10.2.0","pre-commit":"^1.2.2","sinon":"4.4.6"},"keywords":["http","web-server"],"repository":{"type":"git","url":"git+https://github.com/dan-lampman/impulse-api.git"},"gitHead":"3065cf595514a5a6e18d302a9d34e01c1c7e3399","_id":"impulse-api@3.0.11","bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"homepage":"https://github.com/dan-lampman/impulse-api#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-xfadZcRFuMfLqhtambxQeOA9JzYLbygCH+qiAOvv0DJvuZbtyHLpK9BQOB0PTghSyfyNLc3KkYdpHR2KsKsOzA==","shasum":"f949061b5cacfd30075af61c228bcc97cca9f4c7","tarball":"https://registry.npmjs.org/impulse-api/-/impulse-api-3.0.11.tgz","fileCount":33,"unpackedSize":140864,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC4M6Hw3hA9MZXr+5XnyiA57//p3/Bj6Rudcjscxv9VTAiA2dnPM2cNYkiEShua/Cccg+84a5q2TKZ6dF/U5RYt52Q=="}]},"_npmUser":{"name":"dan-lampman","email":"dan.lampman@gmail.com"},"directories":{},"maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/impulse-api_3.0.11_1768321539603_0.7052038219229451"},"_hasShrinkwrap":false}},"time":{"created":"2021-08-23T05:55:28.353Z","modified":"2026-01-13T16:25:39.957Z","1.2.0":"2021-08-20T18:50:34.250Z","1.4.0":"2021-08-20T18:50:34.250Z","1.0.9":"2021-08-20T18:50:34.250Z","1.4.1":"2021-08-20T18:50:34.250Z","1.0.5":"2021-08-20T18:50:34.250Z","1.0.7":"2021-08-20T18:50:34.250Z","1.1.3":"2021-08-20T18:50:34.250Z","1.3.1":"2021-08-20T18:50:34.250Z","1.1.0":"2021-08-20T18:50:34.250Z","1.0.2":"2021-08-20T18:50:34.250Z","1.0.3":"2021-08-20T18:50:34.250Z","1.0.4":"2021-08-20T18:50:34.250Z","1.0.8":"2021-08-20T18:50:34.250Z","1.0.6":"2021-08-20T18:50:34.250Z","1.1.4":"2021-08-20T18:50:34.250Z","1.1.1":"2021-08-20T18:50:34.250Z","1.1.2":"2021-08-20T18:50:34.250Z","2.0.0":"2021-08-23T05:55:28.497Z","2.0.1":"2021-08-23T18:40:18.535Z","1.5.0":"2021-08-23T18:48:42.724Z","2.0.2":"2021-08-23T19:48:49.403Z","2.1.0":"2022-05-26T16:59:21.033Z","2.2.0":"2022-05-30T15:55:27.499Z","3.0.0":"2025-03-31T15:35:02.694Z","3.0.1":"2025-10-09T15:44:51.612Z","3.0.2":"2025-10-26T14:56:06.404Z","3.0.3":"2025-11-03T21:12:51.096Z","3.0.4":"2025-11-06T00:19:08.568Z","3.0.5":"2025-11-06T02:59:54.928Z","3.0.6":"2025-11-06T03:18:00.331Z","3.0.7":"2025-12-15T05:04:42.974Z","3.0.8":"2025-12-17T03:11:14.532Z","3.0.9":"2025-12-17T03:41:11.467Z","3.0.10":"2026-01-11T18:58:15.077Z","3.0.11":"2026-01-13T16:25:39.767Z"},"bugs":{"url":"https://github.com/dan-lampman/impulse-api/issues"},"license":"MIT","homepage":"https://github.com/dan-lampman/impulse-api#readme","keywords":["http","web-server"],"repository":{"type":"git","url":"git+https://github.com/dan-lampman/impulse-api.git"},"description":"A efficient and powerful API with Express under the hood.","maintainers":[{"name":"dan-lampman","email":"dan.lampman@gmail.com"}],"readme":"# impulse-api\nThis module provides a quick and easy way to create powerful http servers.\n\n## Installation\n```npm install impulse-api```\n\n## Unit Tests\n```npm run test```\n\n## Usage\nA at least one .js file must exist at `{project-root}/routes` in order to initialize a new Api. See [sample-routes](https://github.com/dan-lampman/impulse-api/tree/master/sample-routes) for reference.\n\n```js\nconst Impulse = require('impulse-api');\n\nconst config = {\n    env: 'DEV',\n    port: 3000,\n    secretKey: 'topSecret!',\n    appKey:  '@adminSecretKey',\n    version: '1.0.0',\n    name: 'Hello-World-Api',\n    routeDir: __dirname.concat('/routes'),\n    services: {}\n}\n\nconst api = new Impulse(config);\napi.init().then((response) => {\n    console.log(response)\n}).catch((error) => {\n    console.log(error)\n})\n```\n#### Server Parameters\n-__env__ (required)\nThe Environment the server should be running in. Typically this can be parsed from `.env` or hoisted from `process.ENV`.\n\n-__port__  (required)\nThe port on which the server should be running.\n\n-__secretKey__\nThe key used for all JSON web token encoding and decoding.\n\n-__applicationKey__\nThe key used for all basic application authentication.\n\n-__name__\nThe name of the server.\n\n-__version__\nThe version of the server.\n\n-__routeDir__ (required)\nThe location of the root route directory.\n\n-__services__\nOptional object that is available on every route. Services is ideal for storing connection information to databases or any other auxiliary functionality.\n\n#### Heartbeat endpoint\nBy default, all Impulse-APIs have a `/heartbeat` endpoint that returns 200 along with the following standard output:\n```js\n{ status: 'alive' }\n```\n## Routes\nRoutes are functions that expose HTTP path functionality.\n\nRoute files must exist in any number of folders or subfolders at `{project-root}/routes`\n```js\n// routes/documents.js\nexports.getDocument = {\n    name: 'getDocument',\n    description: 'get a document by id',\n    method: 'get',\n    endpoint: '/api/document/:id',\n    version: 'v1',\n    tokenAuth: true,\n    inputs: {\n        id: {\n            required: true,\n            validate: val => parseInt(val, 10)\n        },\n    },\n    run: (services, inputs, next) => {\n        const id = inputs.id;\n        next(200, {\n            id\n        });\n    },\n};\n```\n### Route Auth\n\n#### Token Auth\nImpulse-Api comes with [JSON web token](https://www.npmjs.com/package/jsonwebtoken) auth built in. As long as `secretKey` is provided to the server configuration on initialization, routes can use an optional `tokenAuth:true` in order to enable basic JWT authentication.\n\nAdditionally, any variables that are encoded in the token are accessible once the token has been decoded via `inputs.decoded`.\n\n#### Token Generation\n\nToken generation is handled via the `Auth` class. You must create an `Auth` instance with your `secretKey`, then you can generate and verify tokens without passing the secret key on every call.\n\n```js\nconst Impulse = require('impulse-api');\nconst Auth = Impulse.Auth;\n\n// Create an Auth instance with your secret key\nconst auth = new Auth('your-secret-key');\n\n// Generate a token (no need to pass secretKey again)\nconst token = auth.generateToken({ \n    userId: '123', \n    username: 'john.doe',\n    role: 'admin' \n});\n\n// Verify a token (no need to pass secretKey again)\nconst decoded = auth.verifyToken(token);\nconsole.log(decoded.userId); // '123'\nconsole.log(decoded.username); // 'john.doe'\n```\n\n**Important:** The `Auth` class requires a `secretKey` in the constructor. If you don't provide one, it will throw an error.\n\n```js\n// This will throw an error\nconst auth = new Auth(); // Error: Auth instance must be initialized with secretKey\n\n// This is correct\nconst auth = new Auth('your-secret-key');\n```\n\nWhen using the server with `secretKey` in the config, the server automatically creates an `Auth` instance internally. You can also create your own `Auth` instances for token generation in your application code (e.g., in login routes).\n\n**Example: Login Route**\n\nHere's a complete example of a login route that generates tokens:\n\n```js\n// routes/auth.js\nconst Impulse = require('impulse-api');\nconst Auth = Impulse.Auth;\n\n// Create Auth instance with your secret key (same as server config)\nconst auth = new Auth(process.env.SECRET_KEY || 'your-secret-key');\n\nexports.login = {\n    name: 'login',\n    description: 'User login endpoint',\n    method: 'post',\n    endpoint: '/api/login',\n    version: 'v1',\n    inputs: {\n        email: {\n            required: true,\n            validate: (val) => typeof val === 'string' && val.includes('@')\n        },\n        password: {\n            required: true\n        }\n    },\n    run: (services, inputs, next) => {\n        // Authenticate user (check database, etc.)\n        const user = services.userService.authenticate(inputs.email, inputs.password);\n        \n        if (!user) {\n            return next(401, { error: 'Invalid credentials' });\n        }\n        \n        // Generate token with user data\n        const token = auth.generateToken({\n            userId: user.id,\n            email: user.email,\n            role: user.role\n        });\n        \n        next(200, {\n            token,\n            user: {\n                id: user.id,\n                email: user.email,\n                role: user.role\n            }\n        });\n    }\n};\n```\n\n#### Custom JWT Validation\n\nYou can override JWT validation to use custom authentication providers (like Google OAuth, Auth0, etc.) instead of the default JWT validation. This is typically configured once at the server level.\n\n##### Server-Level Custom Validation (Recommended)\n```javascript\nconst config = {\n    name: 'my-api',\n    port: 3000,\n    secretKey: 'fallback-secret',\n    routeDir: './routes',\n    tokenValidator: async (token, services) => {\n        // Global token validation for all routes with tokenAuth: true\n        const userInfo = await services.googleOAuth.verifyToken(token);\n        return {\n            userId: userInfo.googleId,\n            email: userInfo.email,\n            name: userInfo.name,\n            picture: userInfo.picture\n        };\n    },\n    services: {\n        googleOAuth: {\n            verifyToken: async (token) => {\n                // Your Google OAuth validation logic\n                // This would typically make an API call to Google\n                return { \n                    googleId: 'google-123', \n                    email: 'user@example.com',\n                    name: 'John Doe',\n                    picture: 'https://example.com/photo.jpg'\n                };\n            }\n        }\n    }\n};\n\nconst api = new Impulse(config);\n```\n\n##### Per-Route Override (Optional)\nIf you need different validation for specific routes, you can override the global validator:\n\n```javascript\nexports.specialRoute = {\n    name: 'specialRoute',\n    method: 'post',\n    endpoint: '/api/special',\n    version: 'v1',\n    tokenAuth: true,\n    validateToken: async (token, services) => {\n        // Override global validation for this specific route\n        const userInfo = await services.specialAuth.verifyToken(token);\n        return {\n            userId: userInfo.specialId,\n            role: userInfo.role,\n            permissions: userInfo.permissions\n        };\n    },\n    run: (services, inputs, next) => {\n        const user = inputs.decoded; // From route-specific validation\n        next(200, { message: 'Success', user });\n    }\n};\n```\n\n##### Validation Flow\n1. **Global token validator** (`config.tokenValidator`) - primary validation\n2. **Route-specific validator** (`route.validateToken`) - optional override\n3. **Default JWT validation** - fallback when no token validator is provided\n\n##### Backward Compatibility\nExisting routes without custom validators continue to work with default JWT validation. No breaking changes to the existing API.\n\n##### Error Handling\nCustom validators should throw errors for invalid tokens. The framework will catch these and return appropriate HTTP 401 responses.\n\n```javascript\nvalidateToken: async (token, services) => {\n    try {\n        const userInfo = await services.oauth.verifyToken(token);\n        return userInfo;\n    } catch (error) {\n        throw new Error('Invalid authentication token');\n    }\n}\n```\n\n#### Application Auth\nFor `admin` type routes, Impulse-Api also provides `applicationAuth` which secures any routes behind basic key authorization provided by `appKey` in the server configuration. The `applicationAuth` can be verified and passed in the header, parameters, query, or body as `key`.\n\n```js\n// routes/users.js\nexports.createUser = {\n    name: 'createUser',\n    description: 'create a new user',\n    method: 'post',\n    endpoint: '/api/user/',\n    version: 'v1',\n    applicationAuth: true,\n    inputs: {\n        username: {\n            required: true,\n        },\n        password: {\n            required: true,\n        }\n    },\n    run: (services, inputs, next) => {\n        const id = inputs.id;\n        next(200, {\n            id\n        });\n    },\n};\n```\nIf a route specifies both Application and Token auth, Application auth will take precedence.\n\n-- Application auth routes should not be called from any public client since this will expose `appKey`.\n\n\n### Inputs\n\nImpulse-Api automatically parses all request query, body, params, and files variables with the following priority: query, body, params, files. Header fields are always parsed.\n\nThis allows for very dynamic routes. The following routes will all parse `newEmailAddress`.\n\n```js\nPUT /user/:id/&newEmailAddress=hello@world.com\n\nPUT /user/:id/\nbody: {\n\tnewEmailAddress: 'hello@world.com'\n}\n\nPUT /user/:id/\njson: {\n\t\"newEmailAddress\": \"hello@world.com\"\n}\n\nPUT /user/:id/\nparams: newEmailAddress=\"hello@world.com\"\n\n```\n","readmeFilename":"readme.md"}