{"_id":"gitea-oidc","_rev":"29-939a9cfbe2f065c9c816a65ed79aa27b","name":"gitea-oidc","dist-tags":{"latest":"1.0.29"},"versions":{"1.0.1":{"name":"gitea-oidc","version":"1.0.1","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.1","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"d87ff74306a71864c017fe3932efd7555c843a07","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.1.tgz","fileCount":63,"integrity":"sha512-7cdAhsM5Ec70sPSU3hXsybdYzzHONLWJ6Wg580AI9C7hJ2v7jK+grAKehM4xEv0GJXfzDGXR4YWgLCAjF3gVnQ==","signatures":[{"sig":"MEUCIQDVL4paNURmdqFO9ryiDIAiRh1JZMjhgteEcvIyjAa9IQIgGwcMtDeh20dwny4VSoayzYUUe24kbiBC7RZ3dNBZ/ww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435525},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"45fba852773427909c6c621dbfb1101c14426853","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.1_1763023799748_0.41517256431192706","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"gitea-oidc","version":"1.0.2","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.2","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"83dd10ccc6993ec4f121c9b6238000205eda2b1a","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.2.tgz","fileCount":63,"integrity":"sha512-1XCEOe80DYhMwhkyBzIy9khZWeZAywWBo0PQRuw2qxK1O5ke1fMNDqKubKUtKW6BxxpZojkKH4/XXvgQSR2vPg==","signatures":[{"sig":"MEYCIQCxnlFOXBaiycfUB39ahzJZzRdBI6aEKdASYY5oBKQsCwIhANdH1G68eYMcS/EFLIn1Dj3JaL4Apx25RzXkwM1cEUJ7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435709},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"87f2054dd792a4cc6fe07c4af4aca69db0c6aa7a","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.2_1763024130073_0.38055453010538276","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"gitea-oidc","version":"1.0.3","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.3","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"78b2c30dc9b26f213989927dee8d9824a21bf91e","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.3.tgz","fileCount":63,"integrity":"sha512-RCIZLqaiVJuQzKll6kxgNoXE9ZYrFGNIwM6UKQqcgaZTaqAiuTNWlxGbVx3AegCbKzyV7N/PLHV98KFCJVAPoA==","signatures":[{"sig":"MEQCID5//gJhXDIepz3ButGLN7RY3F/DmFXy1bQwQeIsaUukAiAVvtiEtZxFfPbZqCyomn+9GuprOOcskjnFrsF0YFgoiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435614},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"a198bb1cad3f129f530dcf731458a9a24047398d","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.3_1763024459258_0.2615292978911783","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"gitea-oidc","version":"1.0.4","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.4","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"6b9a1621ff7e600c15c609032b566e6831a1edf7","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.4.tgz","fileCount":63,"integrity":"sha512-b6UH0a7752f4F28j6vGvobSgOKhbvDtdZWtlYKmD0d1By/yu/MxIWIml5xw0hq/ickD3pcbVn7/vJWx1mc8t3w==","signatures":[{"sig":"MEUCIDz2wliU8anyvNw4sj/hiillXrgAOLRrl7OEh24cyhQ1AiEAxMxvbZUb84OpcdofpT0YlnfzatO4tktq/nn2FeW2K0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":435707},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"88a9738d81d79c5d69a9de543e255cb45a8968f9","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.4_1763028549857_0.2999870857159228","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"gitea-oidc","version":"1.0.5","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.5","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"c0885a29696eb2c45f4942faeb27d486b8e3af36","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.5.tgz","fileCount":63,"integrity":"sha512-Pz6GxME2yEEIXHMTmvkgILTSmv1MWALd+Syhwps7DZm2VcK3Nz9XjeZklp+XPa+NizJqMqUps4eSKPJgfAPbvA==","signatures":[{"sig":"MEYCIQCoicnAaVGCwtqV3Kp8lNlPay6/XfDfnsZQd2/NnR0btwIhALp6IJ/r7sHF+0+uFI4Uh5KkpxIknw4LYznuTufXDO4I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436558},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"cf852c0e1ede718f6f5eaa40c78c720572f7d286","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.5_1763029000850_0.22508592859394416","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"gitea-oidc","version":"1.0.6","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.6","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"6b4720c5dcb684b3f890d22e4c2c0dbcfeee03d3","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.6.tgz","fileCount":64,"integrity":"sha512-o8xr09IfTrfgyxrY3teS8wxiL9DiIxEsiRDz/DIOYlcEBA4DGzh96tVwvMIZxGa/UPJOGUokYHGNPVZuRbu82Q==","signatures":[{"sig":"MEQCIEFFxTSXS6KVOf6c9Mo3CRoenhhFOFpWtuwMWp0FXZ9DAiAuC6q+qFFjssW/HKE51gfiHJICtQpDtE6/Kk7VUfPHQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436463},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"076795dee50e4972eef6bb6ad9ee07b48f462abd","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.6_1763029566563_0.4607964903828925","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"gitea-oidc","version":"1.0.7","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.7","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"e9a1907222e01b5f74bd8ad583976ce6cfe043a2","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.7.tgz","fileCount":63,"integrity":"sha512-8MqCBtpjGF2WQuDT+8xY7FMjf64yK8Egyfi1wTjSonDZclAi4YyKWJw6g6G2pBGY/b1mx30Jju+zMcwzw3x6+Q==","signatures":[{"sig":"MEUCIQCI0VOxXLTWP4aZJU+Bdsp0kTm2mRu+g0EyWCf5fcCSpwIgCw4qIEzwhaiMfeVzuPbjZRvMDr/01N9JKepdmvVZ/pU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436500},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"64e8489aff1ac30385b2f23e40498899a22f95db","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.7_1763030084803_0.38774078432268366","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"gitea-oidc","version":"1.0.8","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.8","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"3fe67dd7be6dd1908cbbf588d9c081f3709efb80","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.8.tgz","fileCount":63,"integrity":"sha512-IeN1kOkQ43ghlUFi92RszBt2S8N9lPCnirX8TVxi0lNyZVGC6YTFWqMkjvI1Ssci3eEy2XvAuVFlvhAJiazeGQ==","signatures":[{"sig":"MEMCIHomon2kUB5m2V/vDYniRTECcvK7C7YintC3jH3XGg6UAh9W8p5Xi2ULw1vi0oQnNRR9updc4+v79gnkDVeAXrAF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436672},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"6b2bb200de4ec512202307c5836b46d5dbbb5405","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.8_1763030318732_0.08566421886270414","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"gitea-oidc","version":"1.0.9","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.9","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"a5790ff90ab2625d6a298df821659bca9cddfb1d","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.9.tgz","fileCount":63,"integrity":"sha512-7PH1hkcrXvVwdELM0inPZsWUKrVal9uf4rr3RUOIrdpcK534wd4R4fA5grV36EZwHB2jE9I+01ZHT05pRl6RPg==","signatures":[{"sig":"MEUCICShWs2D3qAiEY44t1P2wVj4SW/lrqByfwZGdqEZGLnXAiEA1CXoKqnqf4B2976NenQzfsF2ZJA+jaraiGi08X52b64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436781},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"850be48ff5434e6e56d735526a8127469bb6fafd","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.9_1763030739399_0.6662650030186847","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"gitea-oidc","version":"1.0.10","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.10","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"e204a858ffc7e0fce010f2f0d6af875d270f3c56","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.10.tgz","fileCount":63,"integrity":"sha512-v7XVCDD2ZXvfMIRAWORaEgHbFBQX78fGJNc880sErDRRTgRfp7Vq3jzQWbCHJ+umOeE8/XWmixIRsmcF/vK86A==","signatures":[{"sig":"MEUCIGhQ2J3Nm4Ug6T26oNc/yHaTtvw+P3+1pE11b0ioo0wPAiEAjWNfbe+bpCBF21y9m2DNZHllchupNgzvKpFI+PCuvuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436937},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"69118a55b2800e07725ea86ce1b44f6231672fd8","scripts":{"dev":"tsx watch src/server.ts","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","jest":"^30.2.0","ts-jest":"^29.4.5","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/jest":"^30.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.10_1763031067080_0.17212711680459192","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"gitea-oidc","version":"1.0.11","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.11","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"94b482715d115d4d5a51a660baba307ff35c662a","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.11.tgz","fileCount":75,"integrity":"sha512-131PHYAxOFY9ps4T8RnBUn9wrcdxVMVuy9twg6eAWNBovua2K5z40ClJzyC/XFm3K+BWnEq50ggYg6EdFjg9HA==","signatures":[{"sig":"MEUCIQCUZ8wx6/yYi6Blz76AMd85oMXiNR1ejPVOqsi/QWh55wIgW+GieRvGZ2YZsPTIiewe9br2dH9nDYrc8JCcifIc5o4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547364},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"31d407feff00ef9ff06904639a31f12b0976e7a6","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.11_1763377269422_0.3916325923604478","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"gitea-oidc","version":"1.0.12","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.12","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"b89cca2ed8c30234caa068f39fcc156b84903cd6","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.12.tgz","fileCount":80,"integrity":"sha512-w+KU3mztSBz+H88Rp4sdZneFNOgrdOBxOT1wUfJbOmznWiN0xQCkFfaTf3+HAxY2gn8Ude2UJl2cIPI/I5srfg==","signatures":[{"sig":"MEUCIQCfQgkU+iEWVlBy4qUZ/m9OOtmQYuZCJXSX0rGMUUNloAIgFmgsoQkOCev2kMS6IHTdqcm/th0nxru5C/q0TWROr5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567666},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"d3e0062bdf514e3793bed38f89c44a2e524b9ec2","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.12_1763379503877_0.8867389656844955","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"gitea-oidc","version":"1.0.13","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.13","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"8baa83b2c511ba808a859947d7498aeb7372f4c2","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.13.tgz","fileCount":81,"integrity":"sha512-FHo6ctlwR2OsIg+KNazqIV7Cfq2xyNf3LwmWmSj8NGlM11yURlmFpHP0BVd6jiZyT49pNAFf2gYuF2Nwn30q8g==","signatures":[{"sig":"MEUCIQCRzfw+271eVLefCUHJ7+Rad6QqKgy+573AKh5vlDNCOgIgcwMhsRdHS4MqaxyefCSnZSft8S7DJdYX5H1HO7SzH3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":573502},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"f107783a217dd6e8369edd20e9cee4ffa5e60568","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.13_1763433022935_0.8529967182922673","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"gitea-oidc","version":"1.0.14","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.14","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"e326e9808131a33ac57aeaffd56d46de51e8f855","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.14.tgz","fileCount":86,"integrity":"sha512-lisECw/yWyBsaoGwHJUEdSl2sWJ562qHfFNw6U/UtQywjWfZAAuo57UyeAUEwdZDO6pw8SWVGQ1iOjI0jIBrZQ==","signatures":[{"sig":"MEUCIFxmz3/OxUn1Zh/Lcx5JyP5wVQ+otYUFDY+15SYuexQRAiEAxhXAJs6Fuor7H0uqlzlJ8MvDBbwBhrM+7WvZfPtJ/MM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":598537},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"98635fa2a39557cf8e6bb2450b4aed53c1da4e7b","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.14_1763435191911_0.6093147769392373","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"gitea-oidc","version":"1.0.15","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.15","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"c6f900026cb6f0eaf9ced480c7124260318d67ca","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.15.tgz","fileCount":95,"integrity":"sha512-4ThnDcSwgAn2goGg9zkTWF0c48jkXIOycbA+R6Hl5+jKkKo71gY7oJSI1d9MF7t0uBNTkSv9E3ZZfQmA+D4fLQ==","signatures":[{"sig":"MEUCIF+BEt+wv3UGhVZpuKLjJD6IMQ6QyWGUt0abxz6TO34SAiEA7f0eE6dSXxzENWwZzIIVUrvv4XwP8GS5+1H7QCgZsKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":696916},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"044f6207322cd2a3df6f2ee5c71b3d403b20197a","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.15_1763436891286_0.5951490796074828","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"gitea-oidc","version":"1.0.16","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.16","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"6a23b05e6dd1c6c23f6c233ecc56f8e3f65dea57","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.16.tgz","fileCount":95,"integrity":"sha512-vryUQWYpyBlBQikgHEmcZPiaQs8UZOeJiFP3BXElA91gJPDwbh0w0uxxfGIhZeYgyox4/2iE+xdfJMLQiW5DcA==","signatures":[{"sig":"MEQCIGlS+eM6U9lLCoOTD+on6zXi2htEiy5Yr26q9LunYgOjAiBs5DOy06Zmb2cf2Dvrzud0L4VtEj04Zd03Y7xK9jyYZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":703377},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"20253a5a305abc0da0a7815891281a80ed8e201f","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.16_1763437937739_0.9428457485492738","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"gitea-oidc","version":"1.0.17","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.17","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"856456db08e53b6494433ea192b1b346f3ca954c","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.17.tgz","fileCount":95,"integrity":"sha512-DAGf8ZF2WQ/18W4vnuDjsY4xxHYXcHG/sOenSqL4j86dsmdjcDAe5VkBeyrM9E69673FG0RTPqR8SRqb78HVvw==","signatures":[{"sig":"MEUCICdOZ8CBgerGIb9C/XbZdwNngR7n32U3Ub+MrSb6KCTQAiEA3+7eA8dm4T/ac4yN5vuvPOPnfTmK03K+rGJbkHz3cuE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":704298},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"40fea62130d0d50a50a0a9c471baafc165fd3548","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.17_1763441545779_0.9253089982042204","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"gitea-oidc","version":"1.0.18","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.18","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"a749bf4d24cfe290aaf1453c4a9fb928937e8633","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.18.tgz","fileCount":95,"integrity":"sha512-bYJ14rlFyVVHxcHgqkOR0zLwWDVrRBjXdQrPZyj+XqUOhIDETYjzYObshKBCtyEgU1iIx5LzkmPc0CSGDrtZBg==","signatures":[{"sig":"MEUCICamIBMSUlurt113Mnlu8k28YSD8WqJwnIlusfxSbgUuAiEA9rlj1F9LJjlKUJNyJeyC6O/7YvEtoxOl5DX8ZCA/2/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":706289},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"17f00623d6ff44c2797fdd1dabd8100e89130caa","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.18_1763442233329_0.29595973952504906","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"gitea-oidc","version":"1.0.19","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.19","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"43dce11cc5ba5a01a331045e74f87eb3c2daafdc","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.19.tgz","fileCount":95,"integrity":"sha512-mbIecvIn8genMhmCnDEt19OCC/IWcYTbQKzJn42ZH/il+B/dXppj+JLXu/J8UwGMQxO+ANU9XL4YsxTM/qgBqg==","signatures":[{"sig":"MEUCIQD6o2IVIJgkJ8u/C5iKsfmpxs55EuLGqqaHRScecEDm5QIgUR2RUu4hzYHju07cROVIEfQeIbr+CyjT9IKftSqUmgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":708616},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"4c955e212bc6ec1dc2587eb7720435a1fef493be","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.19_1763456135593_0.910680439365525","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"gitea-oidc","version":"1.0.20","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.20","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"f2bb38f00741666cc05ca6028a08237a5a38dda5","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.20.tgz","fileCount":95,"integrity":"sha512-RzXcafUzeHGLx+DqdKHMfcSrDVH+0YCAkDMOLjqsRm9DPo+hTWh4doNRO39DtXSu8VHQ5z24BDFOHMF/lOp3Mw==","signatures":[{"sig":"MEQCIDmB9qgQ6CoftfXywKNFlOc7wsGtIm6jsmXagG6kY8brAiBCiQUTNR/o0Lh3a8evam3XapXOU7IExNDk5Nqw+hqKYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709794},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"0f5ede8d40e32c859d440d321aaaa3bc4b1af869","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.20_1763457613918_0.516229589190671","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"gitea-oidc","version":"1.0.21","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.21","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"047a8cca27b758dd17552ebb9634f35a3071617c","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.21.tgz","fileCount":95,"integrity":"sha512-eDZju68TIgQ8BcjLjcR1Losy96k7Km9zjzdhdJtYgqUrLwk2ek2Lxq2rTh/1zBQy6m/AZqbAxq+w+mvxb1q57Q==","signatures":[{"sig":"MEUCIQDkBVe2VPamkM5sVMmxJjCcY5kWa50PsR54JufA01zgEAIgMtybBXFi3zC5h2a8lwSbmpHlhZRWilYz3jX6Ug+ZXLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":710252},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"07e9c1a9edf079625a29ed3a2cc7acab1aa09808","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.21_1763458520089_0.6472330439652474","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"gitea-oidc","version":"1.0.22","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.22","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"7c2b38311bf903410840e4f667ed8bcb6d4b2a06","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.22.tgz","fileCount":96,"integrity":"sha512-8fQw2hGEPlRvd6FwZCkX21+KfhVYcKHNF54PbHPcSO5oy6eY95BdXwIx56cCEnGcvXZQA5RP4uiepzu7bOA+zg==","signatures":[{"sig":"MEQCIFK8q46PR636x1417xqYBnm3zZbztJACLbAXrtKDdXfgAiBlzOlviPTYYGNXH1avBMU4LRxsW5Dyf2YO+/6ftnvxMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712311},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"5ebe23649fe8c454c741ec08c8f1807327f2e1ee","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2","@larksuiteoapi/node-sdk":"^1.55.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.22_1763465497325_0.6518936770006198","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"gitea-oidc","version":"1.0.23","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.23","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"411bac17e04e52cca3c6a010e8cdf971a1715464","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.23.tgz","fileCount":99,"integrity":"sha512-YvN8yZhm5fRZpisyzvToEXuykMmpzmi98piwdeGriANr+fPFcablzlhCGD6zZJHdtCkMUOnM6TemJO8DItZPjg==","signatures":[{"sig":"MEYCIQDTCEdgrG1YVRUwN84i1DSomMOCqjaS+kra2vrluXL1WwIhAJbLO8DWNCYY9Rmp56BYAETkKdsjyWN51uaqUsRna3gD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":727240},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"cf27abea6a834f07d760c52ff056fd7d64412799","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2","@larksuiteoapi/node-sdk":"^1.55.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.23_1763606824850_0.026067044080640533","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"gitea-oidc","version":"1.0.24","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.24","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"377f198278ee68548e181c106296eed4265a053d","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.24.tgz","fileCount":101,"integrity":"sha512-HiL28JVNwo/eoNiHj5aNUUxPnRrOcMUFsDl9cqNeEK7S6xC2tK92xkffT2Xkgvarg7NtbWTrRUs55lHDQKYJIQ==","signatures":[{"sig":"MEYCIQCEPiSDGKmQiK2belp5pa6vcY69hchvetC/Ce05GXFiRQIhALZh66L1/rE9tNjIlgHM5gnH50xxBdVLsNpPVv38lsh2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734493},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"2d6187d61cf0fc9020152e6adcb77c306913d8f8","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2","@larksuiteoapi/node-sdk":"^1.55.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.24_1763608473014_0.9703920688145886","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"gitea-oidc","version":"1.0.25","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.25","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"3b8fc05a82b4d0916dfcaa9dd23f5097ec54628b","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.25.tgz","fileCount":101,"integrity":"sha512-0IdijyIdDr9HfPBBYivOedW24RlF44d65/94utRwh2D10TM2rLNG7I7LGxdmPblcKI1hURkBhtzYq/jTzUJ2qw==","signatures":[{"sig":"MEUCIQDP92PYf2UNBbrR588O/dNDQckHoJL7B+Ian57etDLEzwIgXZDLV1Ov/cq9bNtEr8KD5Lq5RmQEsEAnzJgY6h3n3hs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734585},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"a3745e8d887698ad15942a9ef28c027b1b6217c1","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2","@larksuiteoapi/node-sdk":"^1.55.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.25_1763608704629_0.6459336776057603","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"gitea-oidc","version":"1.0.26","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.26","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"df916a6c1df70e93d29f936305d4d6e5ed033ead","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.26.tgz","fileCount":101,"integrity":"sha512-ZTO8gDhVfPaPx2IawjQqgitVoRPrI96xn84kYQjMWST4AwMuWmXLUeChzgZwxAlUcLARcWc7gdYmTinjgxkXtA==","signatures":[{"sig":"MEUCIBmUmxdeA56zthkv0QKIg1oH6r8vzPXouRv1FLKcCySgAiEAsDbOfqsARFcI2qvrOHJd5ZQJn/flbLVu2rGmdyKhfN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734671},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"6837b02a47e627d09cf54f3f465f8c771645bc99","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2","@larksuiteoapi/node-sdk":"^1.55.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.26_1763608993041_0.36248560800431173","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"gitea-oidc","version":"1.0.27","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.27","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"eee7a3aaedeecc6d2a5ac7b7df1ac01c7b4fd3fb","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.27.tgz","fileCount":102,"integrity":"sha512-YEaKWLmQKPDtOvpMIjh3mFgmTeqJ+NtjB/dMANHhaZB8vLeRgEsSX3QYk+ITWdupNU2jZie2Vas2NXqOxMCvtQ==","signatures":[{"sig":"MEYCIQDX9d813MUAw0ODwzS63m1wR/Nq4yvVuI2SW0NAHLwB6QIhAK0rmh/lWPQZICmI/sapdFBMGCgo8ggxw8Vop8Ynlpnc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":973745},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0"},"gitHead":"b18cd59ddf9e08ef61ec15e4ee6a11d83a738b58","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","release":"release-it","build:prod":"rolldown -c rolldown.config.prod.ts","test:watch":"vitest --watch","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2","@larksuiteoapi/node-sdk":"^1.55.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","@types/bcrypt":"^6.0.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.27_1763609166118_0.6679951901925629","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"gitea-oidc","version":"1.0.28","keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","_id":"gitea-oidc@1.0.28","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"dist":{"shasum":"8889fd6fd2ba3737250d96bc0852d8e97ac606c3","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.28.tgz","fileCount":112,"integrity":"sha512-VPC9aqFyceRNBNui6a0TuSA4wzxevYBmNt8eRNeANYRqaHaMlJBj8sg+DWqHl3eIxdlveN4QXxzDiuiKh+kAGA==","signatures":[{"sig":"MEUCIBLNBInzGUYU20nwLtr9DRetjB4a1wzyJGxwSTiko0obAiEAlLdZdajh/oo3jakeTcMbzRHIqKYp7GW5bdAi/eXjDjg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":979947},"main":"dist/server.js","type":"module","engines":{"node":">=22.0.0","pnpm":">=10.0.0"},"gitHead":"00dd9090846302bf2d4d99cec32546b66774f543","scripts":{"dev":"tsx watch src/server.ts","lint":"biome check .","test":"vitest run","build":"rolldown -c rolldown.config.ts","start":"node dist/server.js","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"!node_modules\" \"!dist\"","prepare":"husky","release":"release-it","lint:fix":"biome check --write .","build:prod":"rolldown -c rolldown.config.prod.ts","preinstall":"node scripts/preinstall.js","test:watch":"vitest --watch","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"!node_modules\" \"!dist\"","generate-jwks":"tsx scripts/generate-jwks.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"_npmVersion":"10.9.4","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"pg":"^8.16.3","zod":"^4.1.12","jose":"^6.1.2","redis":"^5.9.0","bcrypt":"^6.0.0","fastify":"^5.6.1","@fastify/cors":"^11.1.0","oidc-provider":"^9.5.2","better-sqlite3":"^12.4.1","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@fastify/formbody":"^8.0.2","@larksuiteoapi/node-sdk":"^1.55.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.0.0","devDependencies":{"tsx":"^4.20.6","husky":"^9.1.7","vitest":"^4.0.9","ts-node":"^10.9.0","rolldown":"1.0.0-beta.47","@types/pg":"^8.15.6","@types/koa":"^3.0.1","release-it":"^19.0.6","typescript":"^5.0.0","@types/node":"^22.0.0","lint-staged":"^16.2.7","@types/bcrypt":"^6.0.0","@biomejs/biome":"^2.3.6","@commitlint/cli":"^20.1.0","markdownlint-cli2":"^0.19.0","@vitest/coverage-v8":"4.0.9","@types/oidc-provider":"^9.5.0","@types/better-sqlite3":"^7.6.13","@commitlint/config-conventional":"^20.0.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/gitea-oidc_1.0.28_1763616275739_0.007456590446918376","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"gitea-oidc","version":"1.0.29","type":"module","description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","main":"dist/server.js","scripts":{"preinstall":"node scripts/preinstall.js","dev":"tsx watch src/server.ts","build":"rolldown -c rolldown.config.ts","build:prod":"rolldown -c rolldown.config.prod.ts","start":"node dist/server.js","test":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest run --coverage","release":"release-it","generate-jwks":"tsx scripts/generate-jwks.ts","lint":"biome check .","lint:fix":"biome check --write .","format":"biome format --write .","lint:md":"markdownlint-cli2 \"**/*.md\" \"!node_modules\" \"!dist\"","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"!node_modules\" \"!dist\"","prepare":"husky"},"keywords":["oidc","idp","fastify","typescript"],"author":"","license":"ISC","engines":{"node":">=22.0.0","pnpm":">=10.0.0"},"packageManager":"pnpm@10.0.0","publishConfig":{"access":"public"},"devDependencies":{"@biomejs/biome":"^2.3.6","@commitlint/cli":"^20.1.0","@commitlint/config-conventional":"^20.0.0","@release-it/conventional-changelog":"^10.0.1","@types/bcrypt":"^6.0.0","@types/better-sqlite3":"^7.6.13","@types/koa":"^3.0.1","@types/node":"^22.0.0","@types/oidc-provider":"^9.5.0","@types/pg":"^8.15.6","@vitest/coverage-v8":"4.0.9","husky":"^9.1.7","lint-staged":"^16.2.7","markdownlint-cli2":"^0.19.0","release-it":"^19.0.6","rolldown":"1.0.0-beta.47","ts-node":"^10.9.0","tsx":"^4.20.6","typescript":"^5.0.0","vitest":"^4.0.9"},"dependencies":{"@fastify/cors":"^11.1.0","@fastify/formbody":"^8.0.2","@fastify/middie":"^9.0.0","@fastify/static":"^8.3.0","@larksuiteoapi/node-sdk":"^1.55.0","bcrypt":"^6.0.0","better-sqlite3":"^12.4.1","fastify":"^5.6.1","jose":"^6.1.2","oidc-provider":"^9.5.2","pg":"^8.16.3","redis":"^5.9.0","zod":"^4.1.12"},"_id":"gitea-oidc@1.0.29","gitHead":"711d69dd569ed1d1ac646428cd64401b80f8d422","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Q/+/tJ+pnFzctUlq2fxUh7lzqjz1JJKjRL6oywHcNrF2Ig2TSnENMRRLU8OEtj80l+LglYuZtkp4KBz6Q2Y1pA==","shasum":"8efc8e3f9d0bde4a38f35e639f146ed3d4e90e5a","tarball":"https://registry.npmjs.org/gitea-oidc/-/gitea-oidc-1.0.29.tgz","fileCount":112,"unpackedSize":980177,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC8/S3gG+E5PE+w9aARfBz8uF1RMeph+f1k27gPb3B67AiEApgVyGpScKGJt5nr+HTeBA4/WMT0rSyTltgOj7R6NCN8="}]},"_npmUser":{"name":"lydanne","email":"wumacoder@gmail.com"},"directories":{},"maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gitea-oidc_1.0.29_1763616466537_0.8953337398732442"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-13T08:49:59.662Z","modified":"2025-11-20T05:27:46.988Z","1.0.1":"2025-11-13T08:49:59.941Z","1.0.2":"2025-11-13T08:55:30.261Z","1.0.3":"2025-11-13T09:00:59.432Z","1.0.4":"2025-11-13T10:09:10.045Z","1.0.5":"2025-11-13T10:16:41.032Z","1.0.6":"2025-11-13T10:26:06.749Z","1.0.7":"2025-11-13T10:34:44.981Z","1.0.8":"2025-11-13T10:38:38.925Z","1.0.9":"2025-11-13T10:45:39.595Z","1.0.10":"2025-11-13T10:51:07.309Z","1.0.11":"2025-11-17T11:01:09.655Z","1.0.12":"2025-11-17T11:38:24.113Z","1.0.13":"2025-11-18T02:30:23.134Z","1.0.14":"2025-11-18T03:06:32.162Z","1.0.15":"2025-11-18T03:34:51.604Z","1.0.16":"2025-11-18T03:52:17.935Z","1.0.17":"2025-11-18T04:52:26.078Z","1.0.18":"2025-11-18T05:03:53.519Z","1.0.19":"2025-11-18T08:55:35.793Z","1.0.20":"2025-11-18T09:20:14.146Z","1.0.21":"2025-11-18T09:35:20.357Z","1.0.22":"2025-11-18T11:31:37.590Z","1.0.23":"2025-11-20T02:47:05.115Z","1.0.24":"2025-11-20T03:14:33.282Z","1.0.25":"2025-11-20T03:18:24.936Z","1.0.26":"2025-11-20T03:23:13.255Z","1.0.27":"2025-11-20T03:26:06.361Z","1.0.28":"2025-11-20T05:24:35.944Z","1.0.29":"2025-11-20T05:27:46.797Z"},"license":"ISC","keywords":["oidc","idp","fastify","typescript"],"description":"Simple OpenID Connect Identity Provider using Fastify and TypeScript","maintainers":[{"name":"lydanne","email":"wumacoder@gmail.com"}],"readme":"# Gitea OIDC Identity Provider\n\n[English README](./README.en.md) · [中文文档](./README.md)\n\n[![CI-CHECK](https://github.com/Lydanne/gitea-oidc/actions/workflows/ci-check.yml/badge.svg)](https://github.com/Lydanne/gitea-oidc/actions/workflows/ci-check.yml)\n[![Release](https://github.com/Lydanne/gitea-oidc/actions/workflows/release.yml/badge.svg)](https://github.com/Lydanne/gitea-oidc/actions/workflows/release.yml)\n[![npm version](https://img.shields.io/npm/v/gitea-oidc)](https://www.npmjs.com/package/gitea-oidc)\n[![Docker pulls](https://img.shields.io/docker/pulls/lydamirror/gitea-oidc)](https://hub.docker.com/r/lydamirror/gitea-oidc)\n![Node version](https://img.shields.io/badge/node-%3E%3D22.0.0-43853d?logo=node.js)\n![License](https://img.shields.io/badge/license-MIT-blue)\n[![codecov](https://codecov.io/gh/Lydanne/gitea-oidc/branch/main/graph/badge.svg)](https://codecov.io/gh/Lydanne/gitea-oidc)\n[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev)\n\n\n一个使用 Fastify + TypeScript + oidc-provider 实现的可扩展 OIDC (OpenID Connect) 身份提供者，支持多种认证方式的插件化架构。\n\n## 📚 目录\n\n- [✨ 功能特性](#-功能特性)\n- [🚀 快速开始](#-快速开始)\n- [📖 文档](#-文档)\n- [🏗️ 技术栈](#技术栈)\n- [📦 项目结构](#-项目结构)\n- [🔧 配置说明](#-配置说明)\n- [🔗 Gitea 集成](#-gitea-集成)\n- [🐳 Docker 使用](#-docker-使用)\n- [🔐 生产环境](#-生产环境)\n- [🚀 发布流程](#-发布流程)\n- [CI/CD](#cicd)\n\n## ✨ 功能特性\n\n### 核心功能\n\n- ✅ 完整的 OIDC 认证流程支持\n- ✅ 插件化认证架构\n- ✅ 多种认证方式（本地密码、飞书、可扩展）\n- ✅ 统一登录页面\n- ✅ OAuth State 管理（防 CSRF）\n- ✅ 用户仓储抽象层\n- ✅ 动态路由和静态资源\n- ✅ Webhook 支持\n- ✅ TypeScript 类型安全\n- ✅ 完整的测试覆盖\n\n### 认证插件\n\n- 🔐 **本地密码认证** - 支持 htpasswd 格式（bcrypt, MD5, SHA）\n- 🚀 **飞书认证** - 完整的 OAuth 2.0 流程\n- 🔌 **可扩展** - 轻松添加新的认证方式\n\n## 🚀 快速开始\n\n### 1. 安装依赖\n\n```bash\npnpm install\n```\n\n### 2. 配置\n\n```bash\n# 复制示例配置（支持 .json 或 .js 格式，.js 优先级更高）\ncp example.gitea-oidc.config.json gitea-oidc.config.json\n# 或使用 .js 格式以支持动态配置\n# cp example.gitea-oidc.config.json gitea-oidc.config.js\n\n# 创建密码文件（本地认证）\nnode -e \"const bcrypt = require('bcrypt'); console.log('admin:' + bcrypt.hashSync('admin123', 10));\" > .htpasswd\n```\n\n### 3. 启动服务器\n\n#### 方式 1: 直接启动（推荐）\n\n```bash\n# 开发模式（热重载）\npnpm dev\n\n# 生产模式\npnpm build && pnpm start\n```\n\n服务器将在 `http://localhost:3000` 启动\n\n#### 方式 2: 作为模块导入使用\n\n如果你需要在其他项目中集成此服务器，可以作为模块导入：\n\n```typescript\nimport { start } from 'gitea-oidc/server';\nimport type { GiteaOidcConfig } from 'gitea-oidc/config';\n\n// 使用自定义配置启动\nconst customConfig: GiteaOidcConfig = {\n  server: {\n    host: '0.0.0.0',\n    port: 4000,\n    url: 'http://localhost:4000',\n    trustProxy: false,\n  },\n  // ... 其他配置\n};\n\nconst app = await start(customConfig);\n\n// 或者不传入配置，使用配置文件\nconst app = await start();\n```\n\n详细示例请参考 `example-import-usage.ts` 文件。\n\n### 4. 测试\n\n```bash\n# 运行测试\npnpm test\n\n# 查看覆盖率\npnpm test:coverage\n```\n\n## 📖 文档\n\n- **[快速开始](./docs/QUICK_START.md)** - 5 分钟快速上手\n- **[生产环境配置](./docs/PRODUCTION_SETUP.md)** - ⭐ 生产环境部署指南\n- **[集成完成](./docs/INTEGRATION_COMPLETE.md)** - 集成状态和使用说明\n- **[实现状态 & 验证清单](./docs/P0_IMPLEMENTATION_STATUS.md)** - 核心功能实现与验证状态\n- **[设计文档](./docs/AUTH_PLUGIN_DESIGN.md)** - 架构设计详解\n- **[插件开发](./docs/PLUGIN_ROUTES_GUIDE.md)** - 如何开发自定义插件\n- **[P0 改进](./docs/P0_IMPROVEMENTS.md)** - 安全性改进说明\n- **[集成指南](./docs/SERVER_INTEGRATION_GUIDE.md)** - 详细集成步骤\n- **[OIDC 帮助](./docs/OIDC_HELP.md)** - OIDC 相关说明\n- **[发布与 CI/CD 指南](./docs/RELEASE_AND_CI_CD.md)** - release-it 与 GitHub Actions 工作流说明\n\n## 技术栈\n\n- **Node.js 22+** - JavaScript 运行时环境\n- **Fastify 5.x** - 高性能 Node.js Web 框架\n- **oidc-provider 9.x** - OpenID Certified™ OIDC 服务器\n- **TypeScript 5.x** - 类型安全\n- **Vitest** - 测试框架\n- **Rolldown** - 高性能打包工具\n- **bcrypt** - 密码哈希\n- **better-sqlite3** - SQLite 数据库\n- **pg** - PostgreSQL 客户端\n- **redis** - Redis 客户端\n- **Zod** - 配置验证\n\n## 📦 项目结构\n\n```bash\ngitea-oidc/\n├── src/\n│   ├── server.ts               # Fastify + oidc-provider 入口\n│   ├── config.ts               # 配置加载与合并\n│   ├── core/                   # 认证核心\n│   │   ├── AuthCoordinator.ts\n│   │   └── PermissionChecker.ts\n│   ├── adapters/               # OIDC 持久化适配器\n│   │   ├── OidcAdapterFactory.ts\n│   │   ├── SqliteOidcAdapter.ts\n│   │   └── RedisOidcAdapter.ts\n│   ├── stores/                 # OAuth State / 认证结果存储\n│   │   └── MemoryStateStore.ts\n│   ├── providers/              # 认证提供者插件\n│   │   ├── LocalAuthProvider.ts\n│   │   └── FeishuAuthProvider.ts\n│   ├── repositories/           # 用户仓储\n│   │   ├── MemoryUserRepository.ts\n│   │   ├── SqliteUserRepository.ts\n│   │   └── PgsqlUserRepository.ts\n│   ├── schemas/                # Zod 配置 Schema\n│   ├── types/                  # 类型定义\n│   ├── utils/                  # 工具与日志\n│   └── __tests__/              # 单元测试\n├── docs/                       # 文档\n├── public/                     # 静态页面（首页、会话过期页等）\n├── example.gitea-oidc.config.json  # JSON 配置示例\n├── gitea-oidc.config.js        # JS 配置示例（支持动态配置）\n├── Dockerfile                  # Docker 镜像构建\n├── pnpm-lock.yaml\n└── vitest.config.ts            # Vitest 配置\n```\n\n## 🔧 配置说明\n\n### 配置文件格式\n\n支持两种配置文件格式（按优先级排序）：\n\n1. **gitea-oidc.config.js** - JavaScript 格式，支持动态配置、环境变量、函数导出\n2. **gitea-oidc.config.json** - JSON 格式，静态配置\n\n### 配置文件结构\n\n```json\n{\n  \"server\": {\n    \"host\": \"0.0.0.0\",\n    \"port\": 3000,\n    \"url\": \"http://localhost:3000\",\n    \"trustProxy\": false\n  },\n  \"logging\": {\n    \"enabled\": true,\n    \"level\": \"info\"\n  },\n  \"oidc\": {\n    \"issuer\": \"http://localhost:3000\",\n    \"cookieKeys\": [\n      \"change-this-to-a-random-string-in-production\",\n      \"and-another-one-for-key-rotation\"\n    ],\n    \"ttl\": {\n      \"AccessToken\": 3600,\n      \"AuthorizationCode\": 600,\n      \"IdToken\": 3600,\n      \"RefreshToken\": 86400\n    },\n    \"claims\": {\n      \"openid\": [\"sub\"],\n      \"profile\": [\"name\", \"email\", \"email_verified\", \"picture\"]\n    },\n    \"features\": {\n      \"devInteractions\": { \"enabled\": false },\n      \"registration\": { \"enabled\": false },\n      \"revocation\": { \"enabled\": true }\n    }\n  },\n  \"clients\": [\n    {\n      \"client_id\": \"gitea\",\n      \"client_secret\": \"gitea-client-secret-change-in-production\",\n      \"redirect_uris\": [\"http://localhost:3001/user/oauth2/gitea/callback\"],\n      \"response_types\": [\"code\"],\n      \"grant_types\": [\"authorization_code\", \"refresh_token\"],\n      \"token_endpoint_auth_method\": \"client_secret_basic\"\n    }\n  ],\n  \"auth\": {\n    \"userRepository\": {\n      \"type\": \"memory\",\n      \"memory\": {}\n    },\n    \"providers\": {\n      \"local\": {\n        \"enabled\": true,\n        \"displayName\": \"本地密码\",\n        \"priority\": 1,\n        \"config\": {\n          \"passwordFile\": \".htpasswd\",\n          \"passwordFormat\": \"bcrypt\"\n        }\n      },\n      \"feishu\": {\n        \"enabled\": false,\n        \"displayName\": \"飞书登录\",\n        \"priority\": 2,\n        \"config\": {\n          \"appId\": \"cli_your_app_id_here\",\n          \"appSecret\": \"your_app_secret_here\",\n          \"redirectUri\": \"http://localhost:3000/auth/feishu/callback\",\n          \"scope\": \"contact:user.base:readonly\",\n          \"autoCreateUser\": true,\n          \"userMapping\": {\n            \"username\": \"en_name\",\n            \"name\": \"name\",\n            \"email\": \"email\"\n          },\n          \"encryptKey\": \"your_encrypt_key_here\",\n          \"verificationToken\": \"your_verification_token_here\"\n        }\n      }\n    }\n  },\n  \"adapter\": {\n    \"type\": \"sqlite\",\n    \"sqlite\": {\n      \"dbPath\": \"./oidc.db\"\n    }\n  }\n}\n```\n\n### 配置字段说明\n\n#### server\n\n- `host`: 服务器监听地址（`0.0.0.0` 表示监听所有网络接口）\n- `port`: 服务器端口\n- `url`: 公开访问的完整 URL\n- `trustProxy`: 是否信任反向代理（Nginx/Traefik 后必须启用）\n\n#### logging\n\n- `enabled`: 是否启用日志\n- `level`: 日志级别（`info` | `warn` | `error` | `debug`）\n\n#### oidc\n\n- `issuer`: OIDC 发行者 URL，必须与对外访问的 OIDC 根路径一致（例如 `https://auth.example.com/oidc`），应与实际挂载路径 `/oidc` 对应\n- `cookieKeys`: Cookie 签名密钥数组，支持密钥轮换\n- `ttl`: 各种令牌的生存时间（秒）\n- `claims`: OIDC 声明配置\n- `features`: 功能开关\n\n#### auth.userRepository\n\n支持三种用户仓储类型：\n\n**Memory（内存）**\n\n```json\n{\n  \"type\": \"memory\",\n  \"memory\": {}\n}\n```\n\n**SQLite**\n\n```json\n{\n  \"type\": \"sqlite\",\n  \"sqlite\": {\n    \"dbPath\": \"./users.db\"\n  }\n}\n```\n\n**PostgreSQL**\n\n```json\n{\n  \"type\": \"pgsql\",\n  \"pgsql\": {\n    \"connectionString\": \"postgresql://user:pass@localhost:5432/dbname\"\n  }\n}\n```\n\n或使用分离的配置：\n\n```json\n{\n  \"type\": \"pgsql\",\n  \"pgsql\": {\n    \"host\": \"localhost\",\n    \"port\": 5432,\n    \"database\": \"gitea_oidc\",\n    \"user\": \"postgres\",\n    \"password\": \"password\"\n  }\n}\n```\n\n#### adapter\n\nOIDC 数据持久化适配器配置，支持三种类型：\n\n**SQLite（推荐用于单机部署）**\n\n```json\n{\n  \"type\": \"sqlite\",\n  \"sqlite\": {\n    \"dbPath\": \"./oidc.db\"\n  }\n}\n```\n\n**Redis（推荐用于分布式部署）**\n\n```json\n{\n  \"type\": \"redis\",\n  \"redis\": {\n    \"host\": \"localhost\",\n    \"port\": 6379,\n    \"password\": \"optional\",\n    \"db\": 0\n  }\n}\n```\n\n**Memory（仅用于开发测试）**\n\n```json\n{\n  \"type\": \"memory\"\n}\n```\n\n### 测试账户\n\n`.htpasswd` 文件中的测试用户：\n\n- **用户名**: `admin` / **密码**: `admin123`\n- **用户名**: `testuser` / **密码**: `password`\n\n## 🔗 Gitea 集成\n\n### 配置 OIDC 认证源\n\n1. 进入 Gitea **管理面板** → **认证源** → **添加认证源**\n2. 选择 **OpenID Connect**\n3. 填写配置：\n   - **发现 URL**: `http://localhost:3000/oidc/.well-known/openid-configuration`\n   - **客户端 ID**: `gitea`\n   - **客户端密钥**: `gitea-client-secret-change-in-production`\n4. 保存配置\n\n### 测试登录\n\n1. 访问 Gitea 登录页面\n2. 点击 OIDC 登录按钮\n3. 使用测试账户登录（admin/admin123）\n4. 成功后自动返回 Gitea\n\n## 🐳 Docker 使用\n\n项目提供官方 Docker 镜像，可用于快速部署。\n\n### 拉取镜像\n\n```bash\n# 拉取最新版本\ndocker pull lydamirror/gitea-oidc:latest\n\n# 拉取指定版本\ndocker pull lydamirror/gitea-oidc:<version>  # 例如 1.0.22，具体以实际发布的 tag 为准\n```\n\n### 运行容器\n\n```bash\n# 基本运行\ndocker run -d -p 3000:3000 lydamirror/gitea-oidc\n\n# 使用自定义配置（JSON 格式）\ndocker run -p 3000:3000 \\\n  -e NODE_ENV=production \\\n  -v ./gitea-oidc.config.json:/app/gitea-oidc.config.json \\\n  --log-opt max-size=10m \\\n  --log-opt max-file=3 \\\n  lydamirror/gitea-oidc\n\n# 使用自定义配置（JS 格式）\ndocker run -p 3000:3000 \\\n  -e NODE_ENV=production \\\n  -v ./gitea-oidc.config.js:/app/gitea-oidc.config.js \\\n  --log-opt max-size=10m \\\n  --log-opt max-file=3 \\\n  lydamirror/gitea-oidc\n```\n\n### 环境变量\n\n- `NODE_ENV`: 运行环境（默认 development）\n- `PORT`: 当前服务不会自动读取该变量，请通过配置文件 `server.port` 和容器端口映射控制实际监听端口\n\n### 数据持久化\n\n```bash\n# 使用 SQLite 持久化（OIDC 会话数据）\ndocker run -d -p 3000:3000 \\\n  -v /host/data:/app/data \\\n  -v ./gitea-oidc.config.json:/app/gitea-oidc.config.json \\\n  lydamirror/gitea-oidc\n\n# 配置文件中设置：\n# \"adapter\": {\n#   \"type\": \"sqlite\",\n#   \"sqlite\": {\n#     \"dbPath\": \"/app/data/oidc.db\"\n#   }\n# }\n\n# 使用 Redis 持久化（分布式部署）\ndocker run -d -p 3000:3000 \\\n  -v ./gitea-oidc.config.json:/app/gitea-oidc.config.json \\\n  lydamirror/gitea-oidc\n\n# 配置文件中设置：\n# \"adapter\": {\n#   \"type\": \"redis\",\n#   \"redis\": {\n#     \"host\": \"redis\",\n#     \"port\": 6379\n#   }\n# }\n```\n\n## 🔐 生产环境\n\n### 安全建议\n\n1. **更换 Cookie 密钥**：修改配置中的 `oidc.cookieKeys`\n2. **更换客户端密钥**：修改 `clients[].client_secret`\n3. **使用 HTTPS**：配置 SSL 证书，更新 `server.url` 为 https\n4. **启用反向代理支持**：设置 `server.trustProxy: true`\n5. **强密码策略**：使用 bcrypt 生成强密码（`passwordFormat: \"bcrypt\"`）\n6. **持久化存储**：\n   - 用户数据：使用 PostgreSQL 或 SQLite（`auth.userRepository.type`）\n   - OIDC 会话：使用 Redis 或 SQLite（`adapter.type`）\n7. **日志管理**：配置适当的日志级别（`logging.level`）\n8. **限制访问**：配置防火墙规则，仅允许必要的端口访问\n\n### 生产环境配置示例\n\n```json\n{\n  \"server\": {\n    \"host\": \"0.0.0.0\",\n    \"port\": 3000,\n    \"url\": \"https://auth.example.com\",\n    \"trustProxy\": true\n  },\n  \"logging\": {\n    \"enabled\": true,\n    \"level\": \"warn\"\n  },\n  \"oidc\": {\n    \"issuer\": \"https://auth.example.com/oidc\",\n    \"cookieKeys\": [\"your-secure-random-key-1\", \"your-secure-random-key-2\"]\n  },\n  \"auth\": {\n    \"userRepository\": {\n      \"type\": \"pgsql\",\n      \"pgsql\": {\n        \"connectionString\": \"postgresql://user:pass@db:5432/auth\"\n      }\n    }\n  },\n  \"adapter\": {\n    \"type\": \"redis\",\n    \"redis\": {\n      \"host\": \"redis\",\n      \"port\": 6379\n    }\n  }\n}\n```\n\n### 扩展功能\n\n已实现功能：\n\n- ✅ 数据库用户仓储（PostgreSQL、SQLite）\n- ✅ Redis 适配器（分布式部署）\n- ✅ 插件化认证架构\n- ✅ Webhook 支持\n\n计划中的功能：\n\n- ⏳ 添加更多认证插件（企业微信、钉钉、LDAP）\n- ⏳ 添加管理界面\n- ⏳ 实现 MFA 支持\n- ⏳ 用户自助服务（密码重置、账号管理）\n\n## 🚀 发布流程\n\n更多关于发布与 CI/CD 的说明已迁移至独立文档：\n\n- **[发布与 CI/CD 指南](./docs/RELEASE_AND_CI_CD.md)** - release-it 与 GitHub Actions 工作流说明\n\n该文档涵盖：\n\n- 使用 `release-it` 进行版本发布与 npm 发布\n- 发布所需环境变量 / GitHub Secrets 配置\n- GitHub Actions 中 `Release` / `CI-CHECK` 工作流的执行流程\n- Docker 镜像构建与推送流程\n\n## CI/CD\n\n本项目使用 GitHub Actions 提供完整的 CI 与发布自动化，详情请参考上面的「发布与 CI/CD 指南」文档。\n\n## 📄 许可证\n\nMIT License\n\n## Team\n\nXGJ lydanne\n\n---\n\n**更多详细信息请查看 [文档目录](#-文档)**\n","readmeFilename":"README.md"}