{"_id":"@arlequins/oauth2","_rev":"11-885cd73c9851c96719e0ce4db51db591","name":"@arlequins/oauth2","dist-tags":{"latest":"1.0.13"},"versions":{"1.0.1":{"name":"@arlequins/oauth2","version":"1.0.1","license":"MIT","_id":"@arlequins/oauth2@1.0.1","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"4949f4b8b3ee130c55454fd734275887cba21e2f","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.1.tgz","fileCount":54,"integrity":"sha512-+0Am+prQrKeJNr3BDmdodvaSt0fP+LSs1CO+NyVQE820esop+Ib9YAD1NnnlkhSBcnVUU810uZlF5EAFwF3dPQ==","signatures":[{"sig":"MEUCIQCEBYGBqJtca24KfHhP6RdRyvD8FdUc0t2+ZctKOc3djwIgI/ZZPKZ22uh/Gi3B6bcFtBM0AEPrrraJ3eoVduMWO3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62745234},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=22.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"c37cbcfbc204dfa3d90ac0db3f5cf9f85fcd9506","scripts":{"pull":"prisma db pull","build":"prisma generate && tsc","format":"prisma format","prepare":"npm run build","generate":"prisma generate"},"_npmUser":{"name":"arlequins","email":"tiret.rouge@gmail.com"},"repository":{"url":"https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/ouath2/"},"_npmVersion":"lerna/8.2.3/node@v22.19.0+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"22.19.0","dependencies":{"dayjs":"^1.11.18","@prisma/client":"^6.16.2","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","prisma":"^6.16.2","typescript":"^5.9.2","@types/node":"^24.5.2"},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.1_1758181419587_0.6822056185259526","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@arlequins/oauth2","version":"1.0.2","license":"MIT","_id":"@arlequins/oauth2@1.0.2","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"6b0161e63ee555fb0af155f95048b506029e2d38","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.2.tgz","fileCount":54,"integrity":"sha512-8BYRmCZdSDl0LZ4sWNbR23SbOmO9Vf/KRWXd1UCkpUOqCVD5/4rt68Np09v4a0GJHQJdoO+2lNgxS5OejGd9ZQ==","signatures":[{"sig":"MEYCIQCfAryQjman+QRchO3VruWa9B1nOQKqoLRCwQsVQ3V1OQIhAPXoiBr1RbF8gpGjY9d2JyvRpMO2WfIMxVLKK/YyCmaZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62751136},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=22.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"eb108c8b46a60747872cb257374b6c765f51cb4c","scripts":{"pull":"prisma db pull","build":"prisma generate && tsc","format":"prisma format","prepare":"npm run build","generate":"prisma generate"},"_npmUser":{"name":"arlequins","email":"tiret.rouge@gmail.com"},"repository":{"url":"https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/ouath2/"},"_npmVersion":"lerna/8.2.3/node@v22.19.0+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"22.19.0","dependencies":{"dayjs":"^1.11.18","@prisma/client":"^6.16.2","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","prisma":"^6.16.2","typescript":"^5.9.2","@types/node":"^24.5.2"},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.2_1758183193272_0.8875569178725764","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@arlequins/oauth2","version":"1.0.3","license":"MIT","_id":"@arlequins/oauth2@1.0.3","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"6ac4edc3d2072b8f2a041d08e7d77898a322602a","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.3.tgz","fileCount":54,"integrity":"sha512-Jmge2IOGaApXYPTzNQroQ8iguL1kDsfgDbSJ0xkMiXDQJP7ulLIgUJDd+XiXN7MQy3GR+esTuUdCeH2SX0ggoQ==","signatures":[{"sig":"MEYCIQDAFQN2wkhD8GqSy8XdmikBbPnRyDaHR2EFhLGNiW+kggIhALm2cT4zfLx5SZIVmh4e1u0sB3r69cqUFsTCTcbc5Nv4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62748642},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=22.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"5b62dc7df5db66e755db16eae5f1412e264ea07d","scripts":{"pull":"prisma db pull","build":"prisma generate && tsc","format":"prisma format","prepare":"npm run build","generate":"prisma generate"},"_npmUser":{"name":"arlequins","email":"tiret.rouge@gmail.com"},"repository":{"url":"https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/ouath2/"},"_npmVersion":"lerna/8.2.3/node@v22.19.0+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"22.19.0","dependencies":{"dayjs":"^1.11.18","@prisma/client":"^6.16.2","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","prisma":"^6.16.2","typescript":"^5.9.2","@types/node":"^24.5.2"},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.3_1758237915931_0.0559725755926479","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@arlequins/oauth2","version":"1.0.6","license":"MIT","_id":"@arlequins/oauth2@1.0.6","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"homepage":"https://github.com/arlequins/library-nodejs#readme","bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"11df1ebf28b255e3fd04a894c6552f5510f55629","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.6.tgz","fileCount":31,"integrity":"sha512-j2iSvsF2imRfNmuJkoSScnq+ttO79mujNJ+ump/NdyYjcYpz1gTqboaMrdn4HVIr3SPrMeaDNnccuQAZjA+S5g==","signatures":[{"sig":"MEUCIF7GXeQy8btwl0USND+bo+8kwPNjrSwKk2OrgkWXgmjuAiEA/cVWB9+AtjXfOT3I9HO6aQa3MYvT/2GMxjwwP5z0DmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlequins%2foauth2@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74592},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"f74ea4c14c5abc458822865c44b9fbd7e98460cf","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecff56df-793a-4e4c-8219-a43a3b110efe"}},"repository":{"url":"git+https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/oauth2/"},"_npmVersion":"lerna/9.0.7/node@v24.14.1+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"24.14.1","dependencies":{"dayjs":"^1.11.20","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.14.0","tsx":"^4.21.0","@types/pg":"^8.11.10","typescript":"^5.9.3","@types/node":"^24.12.2","drizzle-orm":"^0.45.2","@types/express":"^5.0.0","@arlequins/oauth2-drizzle":"^0.0.5"},"peerDependencies":{"pg":"^8.14.0","express":"^4.21.0 || ^5.0.0","drizzle-orm":">=0.36.0","@arlequins/oauth2-drizzle":"^0.1.0"},"peerDependenciesMeta":{"pg":{"optional":true},"drizzle-orm":{"optional":true},"@arlequins/oauth2-drizzle":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.6_1775633250679_0.9943962363747239","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@arlequins/oauth2","version":"1.0.7","license":"MIT","_id":"@arlequins/oauth2@1.0.7","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"homepage":"https://github.com/arlequins/library-nodejs#readme","bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"2fcb150cf50a940dac4b9cc36fdafb3049147876","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.7.tgz","fileCount":31,"integrity":"sha512-KKETy4ez7RHjrbMr5rL8tYhGiFz75oJy6ADCjGd/aD8BtWxgR66sXTWEi+AO/eCtNV9AyZPC3nevrD9FUgT3cw==","signatures":[{"sig":"MEQCIDyce3g5JFtPPhb6lQC/Ac65fecdKNl/ylmz/sdjGhD6AiAloSN+hMzC3vdz7aNk5TSbFdFnZDdQ5Xx67ao/8FvPUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlequins%2foauth2@1.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74592},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"a833765715210b5ac134fe6dba5cd71768574ca1","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecff56df-793a-4e4c-8219-a43a3b110efe"}},"repository":{"url":"git+https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/oauth2/"},"_npmVersion":"lerna/9.0.7/node@v24.14.1+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"24.14.1","dependencies":{"dayjs":"^1.11.20","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.14.0","tsx":"^4.21.0","@types/pg":"^8.11.10","typescript":"^5.9.3","@types/node":"^24.12.2","drizzle-orm":"^0.45.2","@types/express":"^5.0.0","@arlequins/oauth2-drizzle":"^0.0.5"},"peerDependencies":{"pg":"^8.14.0","express":"^4.21.0 || ^5.0.0","drizzle-orm":">=0.36.0","@arlequins/oauth2-drizzle":"^0.0.5"},"peerDependenciesMeta":{"pg":{"optional":true},"drizzle-orm":{"optional":true},"@arlequins/oauth2-drizzle":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.7_1775633793161_0.11642280053954202","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@arlequins/oauth2","version":"1.0.8","license":"MIT","_id":"@arlequins/oauth2@1.0.8","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"homepage":"https://github.com/arlequins/library-nodejs#readme","bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"66d89b302790881172214d413e15bb88db9fd8c8","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.8.tgz","fileCount":31,"integrity":"sha512-ahVyUuwMylpx8H81dM1jcG/g2pjb69BOjbrg04wxGTfMooSp3GOlTPpljCRZ2ljCwG2RO7uwZe9JJ54+aI+3KA==","signatures":[{"sig":"MEYCIQC1tntKO4CkQt7QYm2OuWY5Uc2Mvb2/NJhMoDGg/Z+G5QIhANKSDP8SfkkqVhkPIlvMbS/rPuswit+ht1rcsD8blkAo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlequins%2foauth2@1.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74553},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"ad198308150f23fd0355b2ccd40b648f04d98692","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecff56df-793a-4e4c-8219-a43a3b110efe"}},"repository":{"url":"git+https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/oauth2/"},"_npmVersion":"lerna/9.0.7/node@v24.14.1+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"24.14.1","dependencies":{"dayjs":"^1.11.20","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.14.0","tsx":"^4.21.0","@types/pg":"^8.11.10","typescript":"^5.9.3","@types/node":"^24.12.2","drizzle-orm":"^0.45.2","@types/express":"^5.0.0","@arlequins/oauth2-drizzle":"^0.0.5"},"peerDependencies":{"pg":"^8.14.0","express":"^4.21.0 || ^5.0.0","drizzle-orm":">=0.36.0","@arlequins/oauth2-drizzle":"^0.0.5"},"peerDependenciesMeta":{"pg":{"optional":true},"drizzle-orm":{"optional":true},"@arlequins/oauth2-drizzle":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.8_1775635048916_0.46129022338853476","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@arlequins/oauth2","version":"1.0.9","license":"MIT","_id":"@arlequins/oauth2@1.0.9","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"homepage":"https://github.com/arlequins/library-nodejs#readme","bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"77f927e4a98108f46679dd749e286404f4ec7550","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.9.tgz","fileCount":31,"integrity":"sha512-ZwKDwmldPQtZ5VUiDrOI8ENjL8gA983qdiJTx/Wx/B5igxXdYppZgP7caoHuIexGCzPrP1hZwktt88f2RLRnZA==","signatures":[{"sig":"MEUCIQC7KL8Pqy++1f9NhnVsN9qIgFwodpCKTsGWV6gek0GUiwIgdrGfy7wayV/4ilxo1gAo3/fDezZIrHdR36gu9YCrK7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlequins%2foauth2@1.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74462},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"5d01f7eed9c9bf7d248637527e25899981ae7485","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecff56df-793a-4e4c-8219-a43a3b110efe"}},"repository":{"url":"git+https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/oauth2/"},"_npmVersion":"lerna/9.0.7/node@v24.14.1+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"24.14.1","dependencies":{"dayjs":"^1.11.20","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.14.0","tsx":"^4.21.0","@types/pg":"^8.11.10","typescript":"^5.9.3","@types/node":"^24.12.2","drizzle-orm":"^0.45.2","@types/express":"^5.0.0","@arlequins/oauth2-drizzle":"^0.0.6"},"peerDependencies":{"pg":"^8.14.0","express":"^4.21.0 || ^5.0.0","drizzle-orm":">=0.36.0","@arlequins/oauth2-drizzle":"^0.0.5"},"peerDependenciesMeta":{"pg":{"optional":true},"drizzle-orm":{"optional":true},"@arlequins/oauth2-drizzle":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.9_1775637207550_0.4527445982865801","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@arlequins/oauth2","version":"1.0.10","license":"MIT","_id":"@arlequins/oauth2@1.0.10","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"homepage":"https://github.com/arlequins/library-nodejs#readme","bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"a1bae09aae00a671ed92170ae01e8ea51e5622ee","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.10.tgz","fileCount":31,"integrity":"sha512-4ymGShRCUY8YPZo0XaRPfeUEoUD0WL2Aq1S8e21WSD7ENHbCE5Hii09qg35ltn6liFMmPunZLoF2VA2vMu1RSw==","signatures":[{"sig":"MEUCIQCUg4C7mjsUwiVSS2OeAV7glcO+wObf5zznm+e31HsdxgIgf9LYyGEdk11NAOL5jZf0zUZvIdWvB6ij5DT+AzGkXeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlequins%2foauth2@1.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74420},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"b0fa0bcec3be62647e7436d5685031a2a327835d","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecff56df-793a-4e4c-8219-a43a3b110efe"}},"repository":{"url":"git+https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/oauth2/"},"_npmVersion":"lerna/9.0.7/node@v24.14.1+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"24.14.1","dependencies":{"dayjs":"^1.11.20","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.14.0","tsx":"^4.21.0","@types/pg":"^8.11.10","typescript":"^5.9.3","@types/node":"^24.12.2","drizzle-orm":"^0.45.2","@types/express":"^5.0.0","@arlequins/oauth2-drizzle":"^0.0.7"},"peerDependencies":{"pg":"^8.14.0","express":"^4.21.0 || ^5.0.0","drizzle-orm":">=0.36.0"},"peerDependenciesMeta":{"pg":{"optional":true},"drizzle-orm":{"optional":true},"@arlequins/oauth2-drizzle":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.10_1775637398513_0.044022017347721265","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@arlequins/oauth2","version":"1.0.11","license":"MIT","_id":"@arlequins/oauth2@1.0.11","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"homepage":"https://github.com/arlequins/library-nodejs#readme","bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"146a466a6e5d15e8eada63f8173ef05ec4647d61","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.11.tgz","fileCount":31,"integrity":"sha512-atp+Rv76pyTWLIV0DlZzxNe+GGIpm58t2d9rN5a9FvIo4wY1R6wlIUQMEb4an5lMgdD8kVvkkbmvzJBHkgNPFQ==","signatures":[{"sig":"MEYCIQCmDbiP5E5f576D3aA+CGTIAa8B3wlBSF9hy+JWUD5GrgIhAJ9LxZvXyKCXRyk8FWn3uGKxaDDB2Kp+2jshnGGzfgmr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlequins%2foauth2@1.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74190},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"f96aaf46b2bc09434321e1ef026a3ab7fa2d087b","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecff56df-793a-4e4c-8219-a43a3b110efe"}},"repository":{"url":"git+https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/oauth2/"},"_npmVersion":"lerna/9.0.7/node@v24.14.1+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"24.14.1","dependencies":{"dayjs":"^1.11.20","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.14.0","tsx":"^4.21.0","@types/pg":"^8.11.10","typescript":"^5.9.3","@types/node":"^24.12.2","drizzle-orm":"^0.45.2","@types/express":"^5.0.0","@arlequins/oauth2-drizzle":"^0.0.8"},"peerDependencies":{"pg":"^8.14.0","express":"^4.21.0 || ^5.0.0","drizzle-orm":">=0.36.0"},"peerDependenciesMeta":{"pg":{"optional":true},"drizzle-orm":{"optional":true},"@arlequins/oauth2-drizzle":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.11_1775694857770_0.3338631969951078","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@arlequins/oauth2","version":"1.0.12","license":"MIT","_id":"@arlequins/oauth2@1.0.12","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"homepage":"https://github.com/arlequins/library-nodejs#readme","bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"dist":{"shasum":"f4b88106626361e982daab060f88abf615d28ab0","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.12.tgz","fileCount":31,"integrity":"sha512-95Wd+VWmbJmdSB4DIs1da9POW53YQiy/2kiBk1AOnkgMc8pGkHnesYIhtaGmrjtKcp9zjsSVWwnFXTB5v81L8g==","signatures":[{"sig":"MEQCIGdIc+F0ksxnbRLxfv6r7UItQJVYiluaZY5cmn0qKFaZAiA6DunHkZMpqW4ruHD6Cgy4Ir7j1AiXj0kxOS8dE9+law==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlequins%2foauth2@1.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75308},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"5734cc287ccd82690fc4e5ae1392f4a384732a5a","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecff56df-793a-4e4c-8219-a43a3b110efe"}},"repository":{"url":"git+https://github.com/arlequins/library-nodejs.git","type":"git","directory":"packages/oauth2/"},"_npmVersion":"lerna/9.0.7/node@v24.14.1+x64 (linux)","description":"oauth2","directories":{},"_nodeVersion":"24.14.1","dependencies":{"dayjs":"^1.11.20","@node-oauth/oauth2-server":"^5.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.14.0","tsx":"^4.21.0","@types/pg":"^8.11.10","typescript":"^5.9.3","@types/node":"^24.12.2","drizzle-orm":"^0.45.2","@types/express":"^5.0.0","@arlequins/oauth2-drizzle":"^0.0.9"},"peerDependencies":{"pg":"^8.14.0","express":"^4.21.0 || ^5.0.0","drizzle-orm":">=0.36.0"},"peerDependenciesMeta":{"pg":{"optional":true},"drizzle-orm":{"optional":true},"@arlequins/oauth2-drizzle":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oauth2_1.0.12_1775696883783_0.6065906648533061","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@arlequins/oauth2","version":"1.0.13","description":"oauth2","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"default":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","prepare":"npm run build"},"engines":{"node":">=24.x"},"repository":{"type":"git","url":"git+https://github.com/arlequins/library-nodejs.git","directory":"packages/oauth2/"},"license":"MIT","bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@node-oauth/oauth2-server":"^5.2.1","dayjs":"^1.11.20"},"devDependencies":{"@arlequins/oauth2-drizzle":"^0.0.9","@types/express":"^5.0.0","@types/node":"^24.12.2","@types/pg":"^8.11.10","drizzle-orm":"^0.45.2","pg":"^8.14.0","tsx":"^4.21.0","typescript":"^5.9.3"},"peerDependencies":{"drizzle-orm":">=0.36.0","express":"^4.21.0 || ^5.0.0","pg":"^8.14.0"},"peerDependenciesMeta":{"@arlequins/oauth2-drizzle":{"optional":true},"drizzle-orm":{"optional":true},"pg":{"optional":true}},"gitHead":"941745265cbf2031e72d6ba9cee43ae49a875c73","_id":"@arlequins/oauth2@1.0.13","homepage":"https://github.com/arlequins/library-nodejs#readme","_nodeVersion":"24.14.1","_npmVersion":"lerna/9.0.7/node@v24.14.1+x64 (linux)","dist":{"integrity":"sha512-xAtWx2c4uFsSRN86vLUg82JIokQiPjPUooZm5FxRlBAM8OiLeheR4kvELOy4g+kKHmEi39hip37rd+40xp3wRg==","shasum":"9baf88b02dfb076f3797e4e07022333c6c202400","tarball":"https://registry.npmjs.org/@arlequins/oauth2/-/oauth2-1.0.13.tgz","fileCount":31,"unpackedSize":75426,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arlequins%2foauth2@1.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCrND1ufq+tYggMPXU7r805UzuHhhFD+s2zrHu0fND1agIgZIjhEcHH2YAcWKzWrVNHBLhbLr9us8ls9NPlUYsBMD8="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ecff56df-793a-4e4c-8219-a43a3b110efe"}},"directories":{},"maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oauth2_1.0.13_1775697203978_0.3322629685108236"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-18T07:43:39.518Z","modified":"2026-04-09T01:13:24.397Z","1.0.1":"2025-09-18T07:43:40.097Z","1.0.2":"2025-09-18T08:13:13.792Z","1.0.3":"2025-09-18T23:25:16.467Z","1.0.6":"2026-04-08T07:27:30.813Z","1.0.7":"2026-04-08T07:36:33.303Z","1.0.8":"2026-04-08T07:57:29.046Z","1.0.9":"2026-04-08T08:33:27.678Z","1.0.10":"2026-04-08T08:36:38.668Z","1.0.11":"2026-04-09T00:34:17.950Z","1.0.12":"2026-04-09T01:08:03.928Z","1.0.13":"2026-04-09T01:13:24.114Z"},"bugs":{"url":"https://github.com/arlequins/library-nodejs/issues"},"license":"MIT","homepage":"https://github.com/arlequins/library-nodejs#readme","repository":{"type":"git","url":"git+https://github.com/arlequins/library-nodejs.git","directory":"packages/oauth2/"},"description":"oauth2","maintainers":[{"name":"arlequins","email":"tiret.rouge@gmail.com"}],"readme":"# @arlequins/oauth2\n\nExpress middleware and helpers around [`@node-oauth/oauth2-server`](https://www.npmjs.com/package/@node-oauth/oauth2-server).\n\n## What is generic vs. reference-only\n\n| Area | Role |\n|------|------|\n| `ExpressOAuthServer`, `createTokenSettings`, `oauthClientFromRow`, `verifyAccessTokenScopes` | Reusable for any app; wire your own OAuth `model` implementation or use the Drizzle adapters below. |\n| `createDrizzleOAuthModels` | **Reference** Drizzle + PostgreSQL adapter. Requires `@arlequins/oauth2-drizzle` (`oauthSchema` tables) and a `NodePgDatabase` (e.g. from `createOAuthDb` in that package). You must pass **`options.getUser`** (password grant). |\n| `createJwtOAuthModels` | **Reference** Drizzle + PostgreSQL model bundle oriented around JWT flows; requires the same Drizzle DB + schema. You supply `getUser`, `getAccessToken`, `saveToken`, and optional hooks (`fetchUserInfo`, `createNewUser`, etc.) typed via `JwtOAuthModelHooks` / `CreateJwtOAuthModelsOptions`. |\n\n## Peer dependencies\n\n- **Express** (middleware): `express`\n- **Drizzle model** (optional): `drizzle-orm`, `pg`, `@arlequins/oauth2-drizzle` — install when you use `createDrizzleOAuthModels`.\n\n```sh\nnpm install @arlequins/oauth2 @arlequins/oauth2-drizzle drizzle-orm pg express\n```\n\n`@arlequins/oauth2-drizzle`, `drizzle-orm`, and `pg` are optional peers if you only use the middleware with a custom `model`.\n\n## Public exports\n\nThe package entry (`@arlequins/oauth2`) exports:\n\n- `ExpressOAuthServer`, `ExpressOAuthServerOptions`, `ExpressOAuthServerAddition`\n- `createDrizzleOAuthModels`, `CreateOAuthModelsOptions`\n- `createJwtOAuthModels`, `CreateJwtOAuthModelsOptions`, `JwtOAuthModelHooks`\n- `createTokenSettings`\n- `oauthClientFromRow`, `verifyAccessTokenScopes`\n- OAuth-related TypeScript types (via `export type *` from `./oauth-types`, e.g. `OAuthModelBundle`, `ReturnOAuthClient`)\n\n## Usage\n\n### Drizzle model bundle (`createDrizzleOAuthModels`)\n\nUse a Drizzle `db` built with `oauthSchema` from `@arlequins/oauth2-drizzle` (see that package for `createOAuthDb`).\n\n```javascript\nimport { ExpressOAuthServer, createDrizzleOAuthModels } from '@arlequins/oauth2';\nimport { createOAuthDb } from '@arlequins/oauth2-drizzle';\n\nconst { db, pool } = createOAuthDb({\n  connectionString: process.env.DATABASE_URL,\n});\nconst oauthModels = createDrizzleOAuthModels(db, {\n  getUser: async (username, password, client) => {\n    // Return an OAuth user object or `false`\n  },\n});\n\nrouter.oauth = new ExpressOAuthServer({\n  model: oauthModels,\n  grants: ['password', 'refresh_token'],\n});\n```\n\n### Middleware options\n\n- **`passwordGrantPasswordValidation`** (optional `RegExp` or `null`): If set, runs **before** the OAuth2 server handles `grant_type=password`. If the password string does not match the regex, the handler returns `400` with a fixed error body. Omit or set to `null` to skip this check and validate credentials only in `getUser`.\n\n```javascript\nrouter.oauth = new ExpressOAuthServer({\n  model: oauthModels,\n  grants: ['password', 'refresh_token'],\n  passwordGrantPasswordValidation: /.{8,}/, // example: minimum length\n});\n```\n\n### Token settings (`createTokenSettings`)\n\nBuilds `TokenOptions`-compatible settings. **`isDevelop`** selects shorter default lifetimes when you do not pass explicit `accessTokenLifetime` / `refreshTokenLifetime`:\n\n- `isDevelop: true`: defaults roughly **2 minutes** (access) and **2 hours** (refresh).\n- `isDevelop: false` (default): defaults roughly **30 minutes** (access) and **12 hours** (refresh).\n\nExplicit `accessTokenLifetime` / `refreshTokenLifetime` always win over those defaults.\n\n```javascript\nrouter.post(`/oauth/token`, router.oauth.token(createTokenSettings({ isDevelop: true })));\n```\n\n### Routes\n\n```javascript\nrouter.get(\n  `/oauth/authenticate`,\n  router.oauth.authenticate(),\n  async (_req, res) => {\n    const token = res.oauth.token;\n    const scope = token.scope;\n\n    res.json({\n      scope,\n      email: token.user.email,\n      expires: token.accessTokenExpiresAt,\n    });\n  },\n);\n\nrouter.get(\n  `/oauth/userinfo`,\n  router.oauth.authenticate(),\n  async (_req, res) => {\n    const token = res.oauth.token;\n    const scope = token.scope;\n\n    res.json({\n      scope,\n      user_id: token.user.userId,\n    });\n  },\n);\n```\n\nFor JWT access tokens, pass a second argument to `ExpressOAuthServer` with `verifyToken` so `authenticate` can attach `res.oauth.info`.\n","readmeFilename":"README.md"}