{"_id":"bearer-token-parser","_rev":"10-514664ee1ba70a3cb0bd2a06626da346","name":"bearer-token-parser","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.0":{"name":"bearer-token-parser","version":"1.0.0","keywords":["node","nodejs","javascript","js","shared","library","lib","module","typescript","ts","esm","es6","bearer"],"author":{"url":"https://twitter.com/TakuyaMotoshima","name":"Takuya Motoshima","email":"developer.takuyamotoshima@gmail.com"},"license":"MIT","_id":"bearer-token-parser@1.0.0","maintainers":[{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"}],"homepage":"https://github.com/takuya-motoshima/bearer-token-parser#readme","bugs":{"url":"https://github.com/takuya-motoshima/bearer-token-parser/issues","email":"developer.takuyamotoshima@gmail.com"},"dist":{"shasum":"0646780b7b1ee41f8f751ab82f4dde05104513fb","tarball":"https://registry.npmjs.org/bearer-token-parser/-/bearer-token-parser-1.0.0.tgz","fileCount":10,"integrity":"sha512-d1+bDmh9iJRsYYi04QWKjJvkk3sK+XNoVOGOca5AdovUcTtf4CbkWDaG9Nc5LmqQdIcMC+/13xJYXKPkhKt1Yg==","signatures":[{"sig":"MEUCIArh6jxQ5fmw+7zhsi4dQUhXgQVmh33telA1n/VI13blAiEAu1C5lPxOBdy2dH6fAKe8e/tbVYhfaD3L6bCxirCNiS0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuhfVCRA9TVsSAnZWagAAmrkP/1hsioB0RUSC9g/si6xw\nyzNBavtaSSV7cCgCGs5L/rTXd/P3k2il7bo8buNdRNRffKS234jjDgF3Qxn3\nSAaUEKJdwgffY3myBUMbcG/S4337VpmkGNyCQEk2RQeACyQd4yK5jzCOTCvm\n/nZ5jKQTjTUkQPD92MVD0j+fp0IMq0nyx1qtXcXaloE0dF04TkRwgxYbgW0v\nDWd1I117DxNq9zmZE2YyiqlHvpGfd9Yopr6zQyWg/VH2NDjXdC/VcaAzh3uk\nVucsHVOCO+tiBsTGRPCDomHXYLBZ64Y61V/KeSC0hRkkBoqv8By2enADPdq2\ng71ouI0rkKwxe5/oy87LTYb87RYn9oZJAQN8EqyBl4FV2SvUpjwplov5r5QE\n/QhoxqpEIXiKFKmkS2syesljXzFhzpz7oNE3f4SZ/H5808r/f21ZDsnUzQ2s\nr947TFhpktl08PVSPsJwHfmK998BbrDi67vosclcKw+7LX1XutdeqaRjWjgj\nZci7t71+4hkpO+cj/uw4x1ndBboyC83IdYFLN5gsE/hB/YPYmtguTQtCsdx8\nc9KlfCNbHOR1nG2oFXvb1Mb+I0rO/DumSd4+gMujTv5FX5xYGE600DrWuqI5\ngolBIwqrwSuo8T4AmyNQgekjljfZEW6NY6tSAACCXrUJgbdhcA/n3zA8lC0k\njsqt\r\n=TGtA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/build.common.js","types":"types/index.d.ts","module":"dist/build.esm.js","gitHead":"e6db3b66aade1b346db50efbf94e4e074755b7c3","scripts":{"test":"jest","build":"rollup -c","start":"ts-node -r tsconfig-paths/register -P tsconfig.json -O '{\"module\":\"commonjs\"}' -e \"import * as index from '~/index';console.log(index);\"","watch":"rollup -c --watch","prebuild":"rm -rf dist types && json2module package.json > src/package.ts","prestart":"json2module package.json > src/package.ts","prewatch":"rm -rf dist types && json2module package.json > src/package.ts"},"_npmUser":{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"},"repository":{"url":"git+https://github.com/takuya-motoshima/bearer-token-parser.git","type":"git"},"_npmVersion":"6.14.4","description":"This is a package that contains the Bearer token parsing and validation modules.","directories":{},"_nodeVersion":"13.14.0","dependencies":{"bowser":"^2.10.0","express":"^4.17.1","module-alias":"^2.2.2"},"_hasShrinkwrap":false,"_moduleAliases":{"~":"."},"devDependencies":{"jest":"^26.1.0","rollup":"^2.21.0","tslint":"^6.1.2","ts-node":"^8.10.2","ts-loader":"^7.0.5","typescript":"^3.9.5","@types/jest":"^26.0.3","@types/node":"^14.0.22","json2module":"0.0.3","@types/express":"^4.17.9","tsconfig-paths":"^3.9.0","builtin-modules":"^3.1.0","rollup-plugin-json":"^4.0.0","rollup-plugin-terser":"^6.1.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.27.1","rollup-plugin-node-resolve":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/bearer-token-parser_1.0.0_1606031317335_0.160553105733793","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"bearer-token-parser","version":"1.0.1","keywords":["node","nodejs","javascript","js","shared","library","lib","module","typescript","ts","esm","es6","bearer"],"author":{"url":"https://twitter.com/TakuyaMotoshima","name":"Takuya Motoshima","email":"developer.takuyamotoshima@gmail.com"},"license":"MIT","_id":"bearer-token-parser@1.0.1","maintainers":[{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"}],"homepage":"https://github.com/takuya-motoshima/bearer-token-parser#readme","bugs":{"url":"https://github.com/takuya-motoshima/bearer-token-parser/issues","email":"developer.takuyamotoshima@gmail.com"},"dist":{"shasum":"7fedd785fc40ac9947d99a80fa3497b4d4003fde","tarball":"https://registry.npmjs.org/bearer-token-parser/-/bearer-token-parser-1.0.1.tgz","fileCount":10,"integrity":"sha512-TNJEbGMrMiMkrlSqXgr1dxRM6Cin0uEykKxtRlgqfvRORGBHneF0mV1ZO2z7Q0OL3vtGrsA9oudTkRXouMNn4A==","signatures":[{"sig":"MEUCIDJ93u8LuwIncPbTUzUu3g9mq0+I1zAXVxj8iD4BDvSxAiEAi3OIyZHuoEV2iIIrkulycklcL2zNUsrmpsq0ju7q+BE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuhmFCRA9TVsSAnZWagAA+F8QAIO/CG9lMmDJKbb0DOOK\nV8yIuB2yFMXIObNMC8giiibCdZbPCN6ha04b0GmdUsrEiGtm4hxhRmP5s7pe\nNtT3REptw7iqR5wKY4HdrQf6x6ZGboAfCBk8L+NWomd2Fy70MDFDKNnrvYGB\nj8c8tHonEeZ/Wncv0jIudc8AUpIljv2X998n0LG2Z5PnPeLOf/LiiijBGE0/\naSktA48p2bAJkAlL7wXox5E8m3disl0Rw+jXpuYKdPoYH4aCcI2D5SKgWKIA\nFYFA4+9oC9kC8kyC+k6rnFbL+2JLH+vMFHlNdWg247LKzo9u47/qSqS/jVcb\nI6/5FcJGSALvZuBXNxLq8Kn06NCPYySLB5SZu1yWg9DGdU3lyT0l2/sA401A\nYw3JTf3ofFOaaPOlYyilEnWdK5jf8HS2yQLK3UPEEYmXCs21sxbKQ7tQF51U\nsgilmsmYtlG1kkr8NNoRO9hX89i1Fx/Otfz7O/T857P3xvvU1V1xADelc7lH\neyZIqclXsbSPzqUSAC5X5La/twYwlHGgbqicTJA4KHMkOG7oSDCSmBL9IhHm\nGU0iAhNm7ki1TNQ01eEyzJrI4dcrkY8HwIkF5n8foPwihZyi4S1/Y11QPtd4\nQSoA5H3P0Vf/+S8CpQp8aPZFE4z8IToeYgWF8o2QblNrFKiLp+Pn3XngzH+/\nHl21\r\n=ZxQl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/build.common.js","types":"types/index.d.ts","module":"dist/build.esm.js","gitHead":"98e8bc739ef2f9df7aecfa2d1f18a95fa61b924e","scripts":{"test":"jest","build":"rollup -c","start":"ts-node -r tsconfig-paths/register -P tsconfig.json -O '{\"module\":\"commonjs\"}' -e \"import * as index from '~/index';console.log(index);\"","watch":"rollup -c --watch","prebuild":"rm -rf dist types && json2module package.json > src/package.ts","prestart":"json2module package.json > src/package.ts","prewatch":"rm -rf dist types && json2module package.json > src/package.ts"},"_npmUser":{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"},"repository":{"url":"git+https://github.com/takuya-motoshima/bearer-token-parser.git","type":"git"},"_npmVersion":"6.14.4","description":"This is a package that contains the Bearer token parsing and validation modules.","directories":{},"_nodeVersion":"13.14.0","dependencies":{"bowser":"^2.10.0","express":"^4.17.1","module-alias":"^2.2.2"},"_hasShrinkwrap":false,"_moduleAliases":{"~":"."},"devDependencies":{"jest":"^26.1.0","rollup":"^2.21.0","tslint":"^6.1.2","ts-node":"^8.10.2","ts-loader":"^7.0.5","typescript":"^3.9.5","@types/jest":"^26.0.3","@types/node":"^14.0.22","json2module":"0.0.3","@types/express":"^4.17.9","tsconfig-paths":"^3.9.0","builtin-modules":"^3.1.0","rollup-plugin-json":"^4.0.0","rollup-plugin-terser":"^6.1.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.27.1","rollup-plugin-node-resolve":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/bearer-token-parser_1.0.1_1606031749032_0.5932708953204633","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"bearer-token-parser","version":"1.0.2","keywords":["node","nodejs","javascript","js","shared","library","lib","module","typescript","ts","esm","es6","bearer"],"author":{"url":"https://twitter.com/TakuyaMotoshima","name":"Takuya Motoshima","email":"developer.takuyamotoshima@gmail.com"},"license":"MIT","_id":"bearer-token-parser@1.0.2","maintainers":[{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"}],"homepage":"https://github.com/takuya-motoshima/bearer-token-parser#readme","bugs":{"url":"https://github.com/takuya-motoshima/bearer-token-parser/issues","email":"developer.takuyamotoshima@gmail.com"},"dist":{"shasum":"d2bcecd02770deb7040ef4c42fcde1ed2b2ec11c","tarball":"https://registry.npmjs.org/bearer-token-parser/-/bearer-token-parser-1.0.2.tgz","fileCount":10,"integrity":"sha512-sKs7GzHBQVasL5MOLc1UspypQGRhXpbvS/APpleGgPPQequdanD9W7XwCx68QGr1xDUahMgdL/pq8YGOk+M0kg==","signatures":[{"sig":"MEUCIFqABY9RqfaZGlxNgooBh24Rbqqqe6573jMGc56LTZNgAiEA18LBFTONmPa7rvofqhBenOlyjxTrItUeqaiBkrg2s3A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvcMXCRA9TVsSAnZWagAA7Q0P/0bl50CefcOtcFa6vOYE\nzQDu48RqQ0P+KahYJDFt84A44S3+PxsAn71hw50Df945jnMrQS9jOeqoBRNW\ny9c0i5uXVdPnYTngJUhDRcA1biqYQ+h0Zb7tDlhDyLh8jjpoyj23OER01GZs\nZYDLt83fvm/tatYjwddxVj9xxLbGUoRx9ucWkDdZrRTLkGCxh4aANKYgHEUa\nJ03zKqBtPqmrnMOMbMsTwxc4g8N4FN2eWsWDL93Hxx1SbjPBl3Pqw4tNwSFa\nqG/OcYSOMlAPDlKhMpENjD1oJMn65rLKxIkDgieNP6/QE/21OfKHFo1vu0cD\nM3TfnrVQ+FR0YZMm8Sv6X2ddCILe49iwAisH8MZ6uDk0lZo+3EpR9J6OdP6i\n3u5JprigSWTRiQu6C9cvONOC3TE3YbzkK7tohfuFYtG7keHCsWhgXK5ecd8z\n1xqIPV2yTzLFaCSSdLWFORqAEqzNexoNQhWTE4QUdTwDAa17E5klKeLubgR9\nR1FUh9omTn8WDUUXyzRhxw5FRIZjRa9KLWC+RonRLKK1iuAJwfNXDLtoQcjA\nGmdx5z6guFWaZX2E5P/eKF8VZfvtIHYzUdiuMqPDyG/zVV6NQGh5OCiMS3Ly\nv85q7pbPi7Q+4tnDfTdL+z5im8gzS1mQo2GBEw7X8cZ4Iil4HYvqrru1HI32\nuseR\r\n=FzP4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/build.common.js","types":"types/index.d.ts","module":"dist/build.esm.js","gitHead":"7707f7f88fe1dd16b135cf1c03414fbdba567f1c","scripts":{"test":"jest","build":"rollup -c","start":"ts-node -r tsconfig-paths/register -P tsconfig.json -O '{\"module\":\"commonjs\"}' -e \"import * as index from '~/index';console.log(index);\"","watch":"rollup -c --watch","prebuild":"rm -rf dist types && json2module package.json > src/package.ts","prestart":"json2module package.json > src/package.ts","prewatch":"rm -rf dist types && json2module package.json > src/package.ts"},"_npmUser":{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"},"repository":{"url":"git+https://github.com/takuya-motoshima/bearer-token-parser.git","type":"git"},"_npmVersion":"6.14.9","description":"This is a package that contains the Bearer token parsing and validation modules.","directories":{},"_nodeVersion":"13.14.0","dependencies":{"bowser":"^2.10.0","express":"^4.17.1","module-alias":"^2.2.2"},"_hasShrinkwrap":false,"_moduleAliases":{"~":"."},"devDependencies":{"jest":"^26.1.0","rollup":"^2.21.0","tslint":"^6.1.2","ts-node":"^8.10.2","ts-loader":"^7.0.5","typescript":"^3.9.5","@types/jest":"^26.0.3","@types/node":"^14.0.22","json2module":"0.0.3","@types/express":"^4.17.9","tsconfig-paths":"^3.9.0","builtin-modules":"^3.1.0","rollup-plugin-json":"^4.0.0","rollup-plugin-terser":"^6.1.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.27.1","rollup-plugin-node-resolve":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/bearer-token-parser_1.0.2_1606271766812_0.6214001698739464","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"bearer-token-parser","version":"1.0.3","keywords":["node","nodejs","javascript","js","shared","library","lib","module","typescript","ts","esm","es6","bearer"],"author":{"url":"https://twitter.com/TakuyaMotoshima","name":"Takuya Motoshima","email":"developer.takuyamotoshima@gmail.com"},"license":"MIT","_id":"bearer-token-parser@1.0.3","maintainers":[{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"}],"homepage":"https://github.com/takuya-motoshima/bearer-token-parser#readme","bugs":{"url":"https://github.com/takuya-motoshima/bearer-token-parser/issues","email":"developer.takuyamotoshima@gmail.com"},"dist":{"shasum":"65cd3cf124ef23999d48b89ecdcbe6c895322d27","tarball":"https://registry.npmjs.org/bearer-token-parser/-/bearer-token-parser-1.0.3.tgz","fileCount":7484,"integrity":"sha512-V2wiTPT+5caTtLM/e8HVm6vVYDkcNFYmHsPJSCmXnM2PbJFywGizEjHjZZJUZPZEbsfArd1NWmBhEPy/MfKpZw==","signatures":[{"sig":"MEYCIQC3yfhfeFncc3EiHYWAq6tbo/lznwdtoeNI9RNQnmKhjQIhANG4Iw8PpPsR4x8+AluT4Fxj7Ace3z5VFMsguGeWtpl3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119880923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2kjqCRA9TVsSAnZWagAA/i0P/1vlIUOHHikIxdICSu2W\nV9fZR9CV+PH8g1YSS7SSC8918my5rFb+QgtGAVD0YJlx+0KIiEjyQ8P2kueJ\nL6MRwgRBqf5xkLiU5tA2wcPgp88AyCOI4k6oweV2FpQ/Pi3+/xj/Jf5UTxoc\nivJTMF5i1cSNLcbre4ihQUwcwWTVd7aYfjD2A8Vh/Ll8YZbZBNS2e0jMfX/p\nt2urI/cYPdscjHcY0rw3zj3sJHWZqtAmuLpT0aA+F9xyq1RpsLpQzgirvQca\n2MyivQV/neKog5TVwoqOfxGnN/0fh1LoY8IZfJ683ovcEpQMA5lgCZRRnQFU\nRB/M1Vh0nLD/MRf3pi3INvXLDTie8uV31e8gBMnIk2Wx2JCxw79ZpwDDSy3X\nju0+p/q1D1Ouk0UOVZBebZ/I31O+9ZQ0TXRf/rkDBGmtlWmwTEwzwxKLJtJV\nuhVmMiMskIzbkq7d1GN2i3BBcGlTHdRKxLnYct4HVaUiEECDOUs6lxsO0HKL\nW+64Yhgu1qyZjgyTlHK6s0t28JIOBz7tNFYJrwQ3CQ4Ve8VV0mfNoK1YN9q2\nWW2Bk/csR0ER8meDJ3YzEzYY0ONYl9ti9rmLjJ1ggDZY2SA0x0RNUOBX7bE3\n8/yLal3/FVipifPnb0Jhvf+cwMsEJSqLVcd7qZ+TleWziiz5SsVfINhsOjD3\nFz1s\r\n=IHlY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/build.common.js","types":"types/index.d.ts","module":"dist/build.esm.js","gitHead":"9d2b0788d8f1857919f9dc5ede78e3ce3790c21b","scripts":{"test":"jest","build":"rollup -c","start":"ts-node -r tsconfig-paths/register -P tsconfig.json -O '{\"module\":\"commonjs\"}' -e \"import * as index from '~/index';console.log(index);\"","watch":"rollup -c --watch","prebuild":"rm -rf dist types && json2module package.json > src/package.ts","prestart":"json2module package.json > src/package.ts","prewatch":"rm -rf dist types && json2module package.json > src/package.ts"},"_npmUser":{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"},"repository":{"url":"git+https://github.com/takuya-motoshima/bearer-token-parser.git","type":"git"},"_npmVersion":"8.1.1","description":"This is a Bearer token authentication module that you can use with the Express framework.","directories":{},"_nodeVersion":"14.15.5","dependencies":{"bowser":"^2.10.0","express":"^4.17.1","module-alias":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.1.0","rollup":"^2.21.0","tslint":"^6.1.2","ts-node":"^8.10.2","ts-loader":"^7.0.5","typescript":"^3.9.5","@types/jest":"^26.0.3","@types/node":"^14.0.22","json2module":"0.0.3","@types/express":"^4.17.9","tsconfig-paths":"^3.9.0","builtin-modules":"^3.1.0","rollup-plugin-json":"^4.0.0","rollup-plugin-terser":"^6.1.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.27.1","rollup-plugin-node-resolve":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/bearer-token-parser_1.0.3_1636621825173_0.6206257288130532","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"bearer-token-parser","version":"2.0.0","keywords":["node","nodejs","javascript","js","shared","library","lib","module","typescript","ts","esm","es6","bearer"],"author":{"url":"https://twitter.com/TakuyaMotoshima","name":"Takuya Motoshima","email":"developer.takuyamotoshima@gmail.com"},"license":"MIT","_id":"bearer-token-parser@2.0.0","maintainers":[{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"}],"homepage":"https://github.com/takuya-motoshima/bearer-token-parser#readme","bugs":{"url":"https://github.com/takuya-motoshima/bearer-token-parser/issues","email":"developer.takuyamotoshima@gmail.com"},"dist":{"shasum":"5341da004d9cc7b7613a57ef8349a8465e7d60f6","tarball":"https://registry.npmjs.org/bearer-token-parser/-/bearer-token-parser-2.0.0.tgz","fileCount":39,"integrity":"sha512-vx69Od1ERitdyu45A/DUCp5yBig+kmxtS3dLLtZyhcpEtRssDJdwbhbcVKbliOO8eufWTXEktC8GS53oifhyIQ==","signatures":[{"sig":"MEYCIQDxw3KtqXgWX1rQ7cdtmJWDGL2JWTq6984jfY2klqX7HQIhANBRFwzqBNk88lAcGuAMjiN+7xKKXBNK3CkVkIfVddhL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":579435},"main":"dist/build.common.js","types":"types/index.d.ts","module":"dist/build.esm.js","gitHead":"e57a8a765bc4942317d85bd3cfbcca3fa2d81bd5","scripts":{"test":"jest","build":"rollup -c","watch":"rollup -c --watch","prebuild":"rm -rf dist types","prewatch":"rm -rf dist types"},"_npmUser":{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"},"repository":{"url":"git+https://github.com/takuya-motoshima/bearer-token-parser.git","type":"git"},"_npmVersion":"9.4.1","description":"This is a Bearer token authentication module that you can use with the Express framework.","directories":{},"_nodeVersion":"16.13.0","dependencies":{"express":"^4.17.1","module-alias":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","sinon":"^17.0.1","rollup":"^2.79.1","ts-node":"^8.10.2","ts-loader":"^9.4.2","typescript":"^5.4.2","@types/jest":"^29.2.4","@types/node":"^14.0.22","@types/express":"^4.17.9","builtin-modules":"^3.1.0","@rollup/plugin-json":"^5.0.2","@rollup/plugin-terser":"^0.2.1","@rollup/plugin-commonjs":"^23.0.7","rollup-plugin-typescript2":"^0.35.0","@rollup/plugin-node-resolve":"^15.2.1"},"_npmOperationalInternal":{"tmp":"tmp/bearer-token-parser_2.0.0_1710831191418_0.8138641997018705","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"bearer-token-parser","version":"2.1.0","keywords":["bearer","token","authentication","auth","middleware","express","oauth","rfc6750","authorization","api","typescript"],"author":{"url":"https://x.com/shumatsumonobu","name":"shumatsumonobu","email":"shumatsumonobu@gmail.com"},"license":"MIT","_id":"bearer-token-parser@2.1.0","maintainers":[{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"}],"homepage":"https://github.com/shumatsumonobu/bearer-token-parser#readme","bugs":{"url":"https://github.com/shumatsumonobu/bearer-token-parser/issues","email":"shumatsumonobu@gmail.com"},"dist":{"shasum":"4aa2014375aa79c856d747a46c393ac6490740cf","tarball":"https://registry.npmjs.org/bearer-token-parser/-/bearer-token-parser-2.1.0.tgz","fileCount":11,"integrity":"sha512-gjAueAg7d16xB3M0qiMa7R/gCsXnwic5HzGuDXTiZkMzoEr3qrKD7WAvFtfw+pU+20MihQu2YyOiOkRVquipNA==","signatures":[{"sig":"MEUCIQCwrBTSM66V1xxro3ghxUFiI583h16DMPMvVHV+j6uinwIgO9/i12q2NCAqjcB8x/A9O5PVGKFzbu432jqwwKWFzGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31986},"main":"dist/build.common.cjs","type":"module","types":"types/index.d.ts","module":"dist/build.esm.js","gitHead":"3e22d37682aa708c877cfe042e795e7a6b247c1c","scripts":{"test":"jest","build":"rollup -c","watch":"rollup -c --watch","prebuild":"rm -rf dist types","prewatch":"rm -rf dist types"},"_npmUser":{"name":"takuya-motoshima","email":"developer.takuyamotoshima@gmail.com"},"repository":{"url":"git+https://github.com/shumatsumonobu/bearer-token-parser.git","type":"git"},"_npmVersion":"11.6.2","description":"Zero-dependency Bearer token parser & validator middleware for Express. Extracts and validates tokens from headers, query strings, and request bodies with async support.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0","rollup":"^4.0.0","typescript":"^5.9.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/express":"^5.0.0","builtin-modules":"^5.0.0","@rollup/plugin-json":"^6.1.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^29.0.0","rollup-plugin-typescript2":"^0.36.0","@rollup/plugin-node-resolve":"^16.0.0"},"peerDependencies":{"express":"^4.17.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bearer-token-parser_2.1.0_1772985701032_0.758869981803286","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2020-11-22T07:48:37.335Z","modified":"2026-03-14T16:48:14.309Z","1.0.0":"2020-11-22T07:48:37.475Z","1.0.1":"2020-11-22T07:55:49.144Z","1.0.2":"2020-11-25T02:36:06.943Z","1.0.3":"2021-11-11T09:10:25.626Z","2.0.0":"2024-03-19T06:53:11.576Z","2.1.0":"2026-03-08T16:01:41.194Z"},"bugs":{"url":"https://github.com/shumatsumonobu/bearer-token-parser/issues","email":"shumatsumonobu@gmail.com"},"author":{"url":"https://x.com/shumatsumonobu","name":"shumatsumonobu","email":"shumatsumonobu@gmail.com"},"license":"MIT","homepage":"https://github.com/shumatsumonobu/bearer-token-parser#readme","keywords":["bearer","token","authentication","auth","middleware","express","oauth","rfc6750","authorization","api","typescript"],"repository":{"url":"git+https://github.com/shumatsumonobu/bearer-token-parser.git","type":"git"},"description":"Zero-dependency Bearer token parser & validator middleware for Express. Extracts and validates tokens from headers, query strings, and request bodies with async support.","maintainers":[{"email":"shumatsumonobu@gmail.com","name":"shumatsumonobu"}],"readme":"# bearer-token-parser\n\n[![npm version](https://img.shields.io/npm/v/bearer-token-parser)](https://www.npmjs.com/package/bearer-token-parser)\n[![license](https://img.shields.io/npm/l/bearer-token-parser)](LICENSE)\n\nZero-dependency Bearer token parser & validator middleware for Express.\nExtracts and validates tokens from headers, query strings, and request bodies with full async support.\n\n### Features\n\n- **3 token sources** — Authorization header, query string, request body\n- **Async-ready** — `tokenCheckCallback` and `requestParameterCheck` support both sync and async functions\n- **RFC 6750 compliant** — automatic `WWW-Authenticate` error responses\n- **Zero dependencies** — only Express as a peer dependency\n- **TypeScript included** — ships with type definitions out of the box\n- **ESM & CJS** — works with `import` and `require`\n- **Express 4 & 5** — compatible with both major versions\n\n## Installation\n\n```bash\nnpm i bearer-token-parser\n```\n\n```js\n// ESM\nimport {BearerParser, BearerValidator} from 'bearer-token-parser';\n\n// CommonJS\nconst {BearerParser, BearerValidator} = require('bearer-token-parser');\n```\n\n## Quick Start\n\nProtect any Express route with Bearer token authentication in just a few lines.\nPass `BearerValidator.validation()` as route middleware — it extracts the token, runs your check, and rejects invalid requests with proper `WWW-Authenticate` headers automatically.\n\n```js\nimport express from 'express';\nimport {BearerParser, BearerValidator} from 'bearer-token-parser';\n\nconst app = express();\n\napp.get('/api/protected', [\n  BearerValidator.validation({\n    realm: 'my-api',\n    tokenCheckCallback: async (token) => {\n      // Verify token against your database, JWT, etc.\n      // Return true if valid, false otherwise.\n      const user = await db.findUserByToken(token);\n      return user != null;\n    },\n  })\n], (req, res) => {\n  // Token is valid — extract it if needed.\n  const token = BearerParser.parseBearerToken(req);\n  res.json({authenticated: true, token});\n});\n```\n\n## How It Works\n\nThis library provides two classes:\n\n**BearerValidator** creates Express middleware that validates Bearer tokens and automatically responds with RFC 6750-compliant `WWW-Authenticate` headers on failure.\n\n**BearerParser** extracts Bearer tokens from requests. Used internally by BearerValidator, but also available for standalone use — it only needs a plain request object with `headers`, `query`, or `body`.\n\n### Validation Flow\n\n![Validation Flow](screenshots/validation-flow.png)\n\n<!-- Mermaid source: screenshots/validation-flow.mmd -->\n\nWhen all checks pass, the middleware calls `next()` and your route handler receives the request as normal.\n\n### Error Responses\n\nOn failure, the middleware responds via `BearerValidator.resWithWwwAuthenticate()` with a `WWW-Authenticate` header following [RFC 6750](https://datatracker.ietf.org/doc/html/rfc6750):\n\n| HTTP Status | WWW-Authenticate | When |\n|-------------|-----------------|------|\n| 401 | `Bearer realm=\"…\", error=\"token_required\"` | Token source is missing (no header / no query param / no body param) |\n| 401 | `Bearer realm=\"…\", error=\"invalid_token\", error_description=\"Token format error\"` | Token is empty or has an invalid format |\n| 401 | `Bearer realm=\"…\", error=\"invalid_token\", error_description=\"Token cannot be authenticated\"` | `tokenCheckCallback` returned `false` |\n| 400 | `Bearer realm=\"…\", error=\"invalid_request\"` | `requestParameterCheck` returned `false` |\n\n## Usage Examples\n\n### Token from Authorization Header (default)\n\n```js\nimport express from 'express';\nimport {BearerValidator} from 'bearer-token-parser';\n\nconst app = express();\n\napp.get('/api/resource', [\n  // Validate the Bearer token from the Authorization header.\n  BearerValidator.validation({\n    realm: 'my-api',\n    // Check if the token matches the expected value.\n    tokenCheckCallback: token => token === process.env.API_TOKEN,\n  })\n], (req, res) => {\n  // Only reached when the token is valid.\n  res.json({ok: true});\n});\n```\n\n```bash\ncurl -H \"Authorization: Bearer <token>\" http://localhost:3000/api/resource\n```\n\n### Token from Query Parameter\n\n```js\nimport express from 'express';\nimport {BearerValidator} from 'bearer-token-parser';\n\nconst app = express();\n\napp.get('/api/resource', [\n  // Validate the token from the query string (?api_key=...).\n  BearerValidator.validation({\n    tokenLocation: 'query',\n    tokenParameter: 'api_key',\n    realm: 'my-api',\n    tokenCheckCallback: token => token === process.env.API_TOKEN,\n  })\n], (req, res) => {\n  res.json({ok: true});\n});\n```\n\n```bash\ncurl http://localhost:3000/api/resource?api_key=<token>\n```\n\n### Token from Request Body\n\n```js\nimport express from 'express';\nimport {BearerValidator} from 'bearer-token-parser';\n\nconst app = express();\n\napp.post('/api/resource', [\n  // Validate the token from the JSON body ({ \"access_token\": \"...\" }).\n  BearerValidator.validation({\n    tokenLocation: 'body',\n    tokenParameter: 'access_token',\n    realm: 'my-api',\n    tokenCheckCallback: token => token === process.env.API_TOKEN,\n  })\n], (req, res) => {\n  res.json({ok: true});\n});\n```\n\n```bash\ncurl -X POST -H \"Content-Type: application/json\" \\\n  -d '{\"access_token\":\"<token>\"}' \\\n  http://localhost:3000/api/resource\n```\n\n### With Request Parameter Validation\n\nYou can add a second validation layer using `requestParameterCheck` to validate request body fields after the token is verified:\n\n```js\nimport express from 'express';\nimport {BearerValidator} from 'bearer-token-parser';\nimport {body, validationResult} from 'express-validator';\n\nconst app = express();\n\napp.post('/api/users', [\n  body('email').isEmail(),\n  body('name').isLength({min: 1, max: 50}),\n\n  BearerValidator.validation({\n    realm: 'my-api',\n    // Verify the token (async supported).\n    tokenCheckCallback: async (token) => {\n      const user = await db.findUserByToken(token);\n      return user != null;\n    },\n    // Validate request params after token passes.\n    // Return false to respond with 400 invalid_request.\n    requestParameterCheck: (req) => {\n      return validationResult(req).isEmpty();\n    },\n  })\n], async (req, res) => {\n  res.json({created: true});\n});\n```\n\n### Standalone Token Parsing (without validation)\n\n`BearerParser` can be used on its own — it only needs a request object with `headers`, `query`, or `body`:\n\n```js\nimport {BearerParser} from 'bearer-token-parser';\n\n// Extract from the Authorization header (\"Bearer <token>\").\nconst headerToken = BearerParser.parseBearerTokenHeader(req);\n\n// Extract from a query parameter (?access_token=...).\nconst queryToken = BearerParser.parseBearerTokenQuery(req, 'access_token');\n\n// Extract from the request body ({ \"access_token\": \"...\" }).\nconst bodyToken = BearerParser.parseBearerTokenBody(req, 'access_token');\n\n// Each returns the token string, or undefined if not found / invalid format.\n```\n\n## API Reference\n\n### BearerParser\n\nUtility class for extracting Bearer tokens from HTTP requests.\n\n#### `BearerParser.parseBearerToken(req)`\n\nAlias for `parseBearerTokenHeader`.\n\n#### `BearerParser.parseBearerTokenHeader(req)`\n\nExtracts a Bearer token from the `Authorization` request header. Parses the header value matching the pattern `Bearer <token>` and returns the token portion.\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `req` | `Request \\| {headers: {authorization?: string}}` | The request object |\n\n**Returns:** `string | undefined` — The extracted token, or `undefined` if the header is missing or the format is invalid.\n\n#### `BearerParser.parseBearerTokenQuery(req, tokenParameter?)`\n\nExtracts a Bearer token from a query string parameter.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `req` | `Request \\| {query: {[key: string]: any}}` | | The request object |\n| `tokenParameter` | `string` | `'access_token'` | The query parameter name |\n\n**Returns:** `string | undefined`\n\n#### `BearerParser.parseBearerTokenBody(req, tokenParameter?)`\n\nExtracts a Bearer token from the request body.\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `req` | `Request \\| {body: {[key: string]: any}}` | | The request object |\n| `tokenParameter` | `string` | `'access_token'` | The body parameter name |\n\n**Returns:** `string | undefined`\n\n### BearerValidator\n\nExpress middleware for Bearer token authentication.\n\n#### `BearerValidator.validation(options)`\n\nCreates an Express middleware that validates Bearer tokens. Extracts a token from the configured location, validates it, and either calls `next()` on success or responds with a `401`/`400` status and `WWW-Authenticate` header on failure.\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `tokenLocation` | `'header' \\| 'query' \\| 'body'` | `'header'` | Where to extract the token from |\n| `tokenParameter` | `string` | `'access_token'` | Parameter name for query/body tokens. Required when `tokenLocation` is `'query'` or `'body'`. |\n| `realm` | `string` | `''` | Realm name included in the `WWW-Authenticate` response header |\n| `tokenCheckCallback` | `(token: string) => boolean \\| Promise<boolean>` | — | Validates the extracted token. Supports sync and async functions. |\n| `requestParameterCheck` | `(req: Request) => boolean \\| Promise<boolean>` | — | Validates request parameters after token verification. Supports sync and async functions. |\n\n**Returns:** Express middleware function `(req, res, next) => Promise<void>`\n\n**Throws:** `TypeError` if `tokenLocation` is `'query'` or `'body'` and `tokenParameter` is empty.\n\n#### `BearerValidator.resWithWwwAuthenticate(res, statusCode, realm, error?, errorDescription?)`\n\nSends an HTTP response with a `WWW-Authenticate` header following RFC 6750. Can be used directly for custom error responses.\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `res` | `Response` | The Express response object |\n| `statusCode` | `number` | HTTP status code (e.g., `401`, `400`) |\n| `realm` | `string` | Realm name for the `WWW-Authenticate` header |\n| `error` | `string?` | Error code (e.g., `'invalid_token'`) |\n| `errorDescription` | `string?` | Human-readable error description |\n\n```js\n// Custom error response example\nBearerValidator.resWithWwwAuthenticate(res, 401, 'my-api', 'invalid_token', 'The token has expired');\n// => WWW-Authenticate: Bearer realm=\"my-api\", error=\"invalid_token\", error_description=\"The token has expired\"\n```\n\n### BearerValidatorOptions\n\nTypeScript interface for the `validation()` options. Available as a named export for type-safe configuration:\n\n```typescript\nimport {BearerValidator, BearerValidatorOptions} from 'bearer-token-parser';\n\nconst options: BearerValidatorOptions = {\n  tokenLocation: 'header',\n  realm: 'my-api',\n  tokenCheckCallback: async (token) => {\n    // Your validation logic.\n    return token === process.env.API_TOKEN;\n  },\n};\n\napp.use('/api', BearerValidator.validation(options));\n```\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md).\n\n## Author\n\n**shumatsumonobu**\n\n- [github/shumatsumonobu](https://github.com/shumatsumonobu)\n- [X/shumatsumonobu](https://x.com/shumatsumonobu)\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}