@geekmidas/auth 10.0.0-alpha.2 → 10.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/{cacheTokenStorage-DaqxdNxI.d.mts → cacheTokenStorage-B3u8Sf-6.d.cts} +2 -5
  2. package/dist/cacheTokenStorage-B3u8Sf-6.d.cts.map +1 -0
  3. package/dist/{cacheTokenStorage-B7sOoysu.d.cts → cacheTokenStorage-B3u8Sf-6.d.mts} +2 -5
  4. package/dist/cacheTokenStorage-B3u8Sf-6.d.mts.map +1 -0
  5. package/dist/cacheTokenStorage.cjs +30 -2
  6. package/dist/cacheTokenStorage.cjs.map +1 -0
  7. package/dist/cacheTokenStorage.d.cts +1 -1
  8. package/dist/cacheTokenStorage.d.mts +1 -1
  9. package/dist/cacheTokenStorage.mjs +29 -2
  10. package/dist/cacheTokenStorage.mjs.map +1 -0
  11. package/dist/client.cjs +144 -6
  12. package/dist/client.cjs.map +1 -0
  13. package/dist/client.d.cts +1 -1
  14. package/dist/client.d.mts +1 -1
  15. package/dist/client.mjs +140 -3
  16. package/dist/client.mjs.map +1 -0
  17. package/dist/cookies.cjs +24 -2
  18. package/dist/cookies.cjs.map +1 -0
  19. package/dist/cookies.d.cts +1 -3
  20. package/dist/cookies.d.cts.map +1 -1
  21. package/dist/cookies.d.mts +1 -3
  22. package/dist/cookies.d.mts.map +1 -1
  23. package/dist/cookies.mjs +23 -2
  24. package/dist/cookies.mjs.map +1 -0
  25. package/dist/hono/jwt.cjs +5 -5
  26. package/dist/hono/jwt.cjs.map +1 -1
  27. package/dist/hono/jwt.d.cts +4 -6
  28. package/dist/hono/jwt.d.cts.map +1 -1
  29. package/dist/hono/jwt.d.mts +4 -6
  30. package/dist/hono/jwt.d.mts.map +1 -1
  31. package/dist/hono/jwt.mjs +4 -5
  32. package/dist/hono/jwt.mjs.map +1 -1
  33. package/dist/hono/oidc.cjs +5 -5
  34. package/dist/hono/oidc.cjs.map +1 -1
  35. package/dist/hono/oidc.d.cts +5 -7
  36. package/dist/hono/oidc.d.cts.map +1 -1
  37. package/dist/hono/oidc.d.mts +5 -7
  38. package/dist/hono/oidc.d.mts.map +1 -1
  39. package/dist/hono/oidc.mjs +4 -5
  40. package/dist/hono/oidc.mjs.map +1 -1
  41. package/dist/index.cjs +5 -5
  42. package/dist/index.d.cts +2 -2
  43. package/dist/index.d.mts +2 -2
  44. package/dist/index.mjs +4 -5
  45. package/dist/{jwt-kejix7rd.d.mts → jwt-CoKrpeMB.d.cts} +2 -3
  46. package/dist/jwt-CoKrpeMB.d.cts.map +1 -0
  47. package/dist/{jwt-3eIuY2dg.d.cts → jwt-CoKrpeMB.d.mts} +2 -3
  48. package/dist/jwt-CoKrpeMB.d.mts.map +1 -0
  49. package/dist/jwt.cjs +56 -4
  50. package/dist/jwt.cjs.map +1 -0
  51. package/dist/jwt.d.cts +1 -1
  52. package/dist/jwt.d.mts +1 -1
  53. package/dist/jwt.mjs +51 -2
  54. package/dist/jwt.mjs.map +1 -0
  55. package/dist/lambda/jwt.cjs +14 -17
  56. package/dist/lambda/jwt.cjs.map +1 -1
  57. package/dist/lambda/jwt.d.cts +4 -6
  58. package/dist/lambda/jwt.d.cts.map +1 -1
  59. package/dist/lambda/jwt.d.mts +4 -6
  60. package/dist/lambda/jwt.d.mts.map +1 -1
  61. package/dist/lambda/jwt.mjs +13 -17
  62. package/dist/lambda/jwt.mjs.map +1 -1
  63. package/dist/lambda/oidc.cjs +14 -17
  64. package/dist/lambda/oidc.cjs.map +1 -1
  65. package/dist/lambda/oidc.d.cts +5 -7
  66. package/dist/lambda/oidc.d.cts.map +1 -1
  67. package/dist/lambda/oidc.d.mts +5 -7
  68. package/dist/lambda/oidc.d.mts.map +1 -1
  69. package/dist/lambda/oidc.mjs +13 -17
  70. package/dist/lambda/oidc.mjs.map +1 -1
  71. package/dist/oidc.cjs +64 -2
  72. package/dist/oidc.cjs.map +1 -0
  73. package/dist/oidc.d.cts +84 -3
  74. package/dist/oidc.d.cts.map +1 -0
  75. package/dist/oidc.d.mts +84 -3
  76. package/dist/oidc.d.mts.map +1 -0
  77. package/dist/oidc.mjs +61 -2
  78. package/dist/oidc.mjs.map +1 -0
  79. package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-VH7oDXx4.cjs} +8 -10
  80. package/dist/server.cjs +4 -4
  81. package/dist/server.d.cts +3 -3
  82. package/dist/server.d.mts +3 -3
  83. package/dist/server.mjs +3 -4
  84. package/dist/tokenManager.cjs +64 -2
  85. package/dist/tokenManager.cjs.map +1 -0
  86. package/dist/tokenManager.d.cts +37 -2
  87. package/dist/tokenManager.d.cts.map +1 -0
  88. package/dist/tokenManager.d.mts +37 -2
  89. package/dist/tokenManager.d.mts.map +1 -0
  90. package/dist/tokenManager.mjs +61 -2
  91. package/dist/tokenManager.mjs.map +1 -0
  92. package/package.json +8 -8
  93. package/dist/cacheTokenStorage-16NE8Cd9.mjs +0 -32
  94. package/dist/cacheTokenStorage-16NE8Cd9.mjs.map +0 -1
  95. package/dist/cacheTokenStorage-B7sOoysu.d.cts.map +0 -1
  96. package/dist/cacheTokenStorage-CEpMniTi.cjs +0 -38
  97. package/dist/cacheTokenStorage-CEpMniTi.cjs.map +0 -1
  98. package/dist/cacheTokenStorage-DaqxdNxI.d.mts.map +0 -1
  99. package/dist/client-BPl_mMvb.cjs +0 -162
  100. package/dist/client-BPl_mMvb.cjs.map +0 -1
  101. package/dist/client-eidYNJSH.mjs +0 -144
  102. package/dist/client-eidYNJSH.mjs.map +0 -1
  103. package/dist/cookies-Bc6gUjb6.cjs +0 -30
  104. package/dist/cookies-Bc6gUjb6.cjs.map +0 -1
  105. package/dist/cookies-C80f8JtE.mjs +0 -24
  106. package/dist/cookies-C80f8JtE.mjs.map +0 -1
  107. package/dist/jwt-3eIuY2dg.d.cts.map +0 -1
  108. package/dist/jwt-bZR2_t8F.mjs +0 -52
  109. package/dist/jwt-bZR2_t8F.mjs.map +0 -1
  110. package/dist/jwt-clq6I6vG.cjs +0 -70
  111. package/dist/jwt-clq6I6vG.cjs.map +0 -1
  112. package/dist/jwt-kejix7rd.d.mts.map +0 -1
  113. package/dist/oidc-BYHREHir.mjs +0 -62
  114. package/dist/oidc-BYHREHir.mjs.map +0 -1
  115. package/dist/oidc-Ca7GYwmM.d.mts +0 -87
  116. package/dist/oidc-Ca7GYwmM.d.mts.map +0 -1
  117. package/dist/oidc-ChA17wLB.d.cts +0 -87
  118. package/dist/oidc-ChA17wLB.d.cts.map +0 -1
  119. package/dist/oidc-jdMfVyyC.cjs +0 -68
  120. package/dist/oidc-jdMfVyyC.cjs.map +0 -1
  121. package/dist/tokenManager-BbylTW7F.mjs +0 -66
  122. package/dist/tokenManager-BbylTW7F.mjs.map +0 -1
  123. package/dist/tokenManager-CL3yE06D.d.cts +0 -40
  124. package/dist/tokenManager-CL3yE06D.d.cts.map +0 -1
  125. package/dist/tokenManager-CosB7J0i.d.mts +0 -40
  126. package/dist/tokenManager-CosB7J0i.d.mts.map +0 -1
  127. package/dist/tokenManager-PQ-OI_NU.cjs +0 -72
  128. package/dist/tokenManager-PQ-OI_NU.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.cjs","names":["c: Context","options: TokenExtractionOptions","options: JwtMiddlewareOptions<TClaims>","JwtVerifier","next: Next"],"sources":["../../src/hono/jwt.ts"],"sourcesContent":["import type { Context, MiddlewareHandler, Next } from 'hono';\nimport { readCookie } from '../cookies';\nimport {\n\ttype JwtClaims,\n\ttype JwtConfig,\n\tJwtVerifier,\n\ttype TokenExtractionOptions,\n} from '../jwt';\n\nexport type { JwtVerifier, JwtClaims, JwtConfig, TokenExtractionOptions };\n\nfunction extractToken(\n\tc: Context,\n\toptions: TokenExtractionOptions = {},\n): string | null {\n\tconst {\n\t\theaderName = 'authorization',\n\t\tcookieName,\n\t\ttokenPrefix = 'Bearer ',\n\t} = options;\n\n\tconst headerValue = c.req.header(headerName);\n\tif (headerValue) {\n\t\tif (tokenPrefix && headerValue.startsWith(tokenPrefix)) {\n\t\t\treturn headerValue.slice(tokenPrefix.length);\n\t\t}\n\t\treturn headerValue;\n\t}\n\n\tif (cookieName) {\n\t\tconst cookie = readCookie(c.req.header('cookie'), cookieName);\n\t\tif (cookie) {\n\t\t\treturn cookie;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {\n\tconfig: JwtConfig;\n\textraction?: TokenExtractionOptions;\n\tcontextKey?: string;\n\tonError?: (c: Context, error: Error) => Response | Promise<Response>;\n\ttransformClaims?: (claims: JwtClaims) => TClaims;\n}\n\n/**\n * JWT Middleware for Hono\n *\n * @example\n * ```typescript\n * const jwt = new JwtMiddleware({\n * config: { secret: process.env.JWT_SECRET! },\n * });\n *\n * app.use('/api/*', jwt.handler());\n *\n * // Or for optional auth\n * app.use('/public/*', jwt.optional());\n * ```\n */\nexport class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {\n\tprivate readonly verifier: JwtVerifier<TClaims>;\n\tprivate readonly extraction: TokenExtractionOptions;\n\tprivate readonly contextKey: string;\n\tprivate readonly onError?: (\n\t\tc: Context,\n\t\terror: Error,\n\t) => Response | Promise<Response>;\n\tprivate readonly transformClaims?: (claims: JwtClaims) => TClaims;\n\n\tconstructor(options: JwtMiddlewareOptions<TClaims>) {\n\t\tthis.verifier = new JwtVerifier(options.config);\n\t\tthis.extraction = options.extraction ?? {};\n\t\tthis.contextKey = options.contextKey ?? 'jwtClaims';\n\t\tthis.onError = options.onError;\n\t\tthis.transformClaims = options.transformClaims;\n\t}\n\n\t/**\n\t * Returns middleware that requires valid JWT\n\t */\n\thandler(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (!token) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, new Error('No token provided'));\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Unauthorized' }, 401);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst payload = await this.verifier.verify(token);\n\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t? this.transformClaims(payload)\n\t\t\t\t\t: payload;\n\n\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\tc.set('jwtToken', token);\n\n\t\t\t\tawait next();\n\t\t\t} catch (error) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, error as Error);\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Invalid token' }, 401);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Returns middleware that allows unauthenticated requests\n\t */\n\toptional(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (token) {\n\t\t\t\tconst claims = await this.verifier.verifyOrNull(token);\n\t\t\t\tif (claims) {\n\t\t\t\t\tconst transformed = this.transformClaims\n\t\t\t\t\t\t? this.transformClaims(claims)\n\t\t\t\t\t\t: claims;\n\t\t\t\t\tc.set(this.contextKey, transformed);\n\t\t\t\t\tc.set('jwtToken', token);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait next();\n\t\t};\n\t}\n}\n"],"mappings":";;;;AAWA,SAAS,aACRA,GACAC,UAAkC,CAAE,GACpB;CAChB,MAAM,EACL,aAAa,iBACb,YACA,cAAc,WACd,GAAG;CAEJ,MAAM,cAAc,EAAE,IAAI,OAAO,WAAW;AAC5C,KAAI,aAAa;AAChB,MAAI,eAAe,YAAY,WAAW,YAAY,CACrD,QAAO,YAAY,MAAM,YAAY,OAAO;AAE7C,SAAO;CACP;AAED,KAAI,YAAY;EACf,MAAM,SAAS,2BAAW,EAAE,IAAI,OAAO,SAAS,EAAE,WAAW;AAC7D,MAAI,OACH,QAAO;CAER;AAED,QAAO;AACP;;;;;;;;;;;;;;;;AAyBD,IAAa,gBAAb,MAAkE;CACjE,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAIjB,AAAiB;CAEjB,YAAYC,SAAwC;AACnD,OAAK,WAAW,IAAIC,wBAAY,QAAQ;AACxC,OAAK,aAAa,QAAQ,cAAc,CAAE;AAC1C,OAAK,aAAa,QAAQ,cAAc;AACxC,OAAK,UAAU,QAAQ;AACvB,OAAK,kBAAkB,QAAQ;CAC/B;;;;CAKD,UAA6B;AAC5B,SAAO,OAAOH,GAAYI,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,WAAW;AAE9C,QAAK,OAAO;AACX,QAAI,KAAK,QACR,QAAO,KAAK,QAAQ,GAAG,IAAI,MAAM,qBAAqB;AAEvD,WAAO,EAAE,KAAK,EAAE,OAAO,eAAgB,GAAE,IAAI;GAC7C;AAED,OAAI;IACH,MAAM,UAAU,MAAM,KAAK,SAAS,OAAO,MAAM;IACjD,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,QAAQ,GAC7B;AAEH,MAAE,IAAI,KAAK,YAAY,OAAO;AAC9B,MAAE,IAAI,YAAY,MAAM;AAExB,UAAM,MAAM;GACZ,SAAQ,OAAO;AACf,QAAI,KAAK,QACR,QAAO,KAAK,QAAQ,GAAG,MAAe;AAEvC,WAAO,EAAE,KAAK,EAAE,OAAO,gBAAiB,GAAE,IAAI;GAC9C;EACD;CACD;;;;CAKD,WAA8B;AAC7B,SAAO,OAAOJ,GAAYI,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,WAAW;AAE9C,OAAI,OAAO;IACV,MAAM,SAAS,MAAM,KAAK,SAAS,aAAa,MAAM;AACtD,QAAI,QAAQ;KACX,MAAM,cAAc,KAAK,kBACtB,KAAK,gBAAgB,OAAO,GAC5B;AACH,OAAE,IAAI,KAAK,YAAY,YAAY;AACnC,OAAE,IAAI,YAAY,MAAM;IACxB;GACD;AAED,SAAM,MAAM;EACZ;CACD;AACD"}
1
+ {"version":3,"file":"jwt.cjs","names":["readCookie","JwtVerifier"],"sources":["../../src/hono/jwt.ts"],"sourcesContent":["import type { Context, MiddlewareHandler, Next } from 'hono';\nimport { readCookie } from '../cookies';\nimport {\n\ttype JwtClaims,\n\ttype JwtConfig,\n\tJwtVerifier,\n\ttype TokenExtractionOptions,\n} from '../jwt';\n\nexport type { JwtVerifier, JwtClaims, JwtConfig, TokenExtractionOptions };\n\nfunction extractToken(\n\tc: Context,\n\toptions: TokenExtractionOptions = {},\n): string | null {\n\tconst {\n\t\theaderName = 'authorization',\n\t\tcookieName,\n\t\ttokenPrefix = 'Bearer ',\n\t} = options;\n\n\tconst headerValue = c.req.header(headerName);\n\tif (headerValue) {\n\t\tif (tokenPrefix && headerValue.startsWith(tokenPrefix)) {\n\t\t\treturn headerValue.slice(tokenPrefix.length);\n\t\t}\n\t\treturn headerValue;\n\t}\n\n\tif (cookieName) {\n\t\tconst cookie = readCookie(c.req.header('cookie'), cookieName);\n\t\tif (cookie) {\n\t\t\treturn cookie;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {\n\tconfig: JwtConfig;\n\textraction?: TokenExtractionOptions;\n\tcontextKey?: string;\n\tonError?: (c: Context, error: Error) => Response | Promise<Response>;\n\ttransformClaims?: (claims: JwtClaims) => TClaims;\n}\n\n/**\n * JWT Middleware for Hono\n *\n * @example\n * ```typescript\n * const jwt = new JwtMiddleware({\n * config: { secret: process.env.JWT_SECRET! },\n * });\n *\n * app.use('/api/*', jwt.handler());\n *\n * // Or for optional auth\n * app.use('/public/*', jwt.optional());\n * ```\n */\nexport class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {\n\tprivate readonly verifier: JwtVerifier<TClaims>;\n\tprivate readonly extraction: TokenExtractionOptions;\n\tprivate readonly contextKey: string;\n\tprivate readonly onError?: (\n\t\tc: Context,\n\t\terror: Error,\n\t) => Response | Promise<Response>;\n\tprivate readonly transformClaims?: (claims: JwtClaims) => TClaims;\n\n\tconstructor(options: JwtMiddlewareOptions<TClaims>) {\n\t\tthis.verifier = new JwtVerifier(options.config);\n\t\tthis.extraction = options.extraction ?? {};\n\t\tthis.contextKey = options.contextKey ?? 'jwtClaims';\n\t\tthis.onError = options.onError;\n\t\tthis.transformClaims = options.transformClaims;\n\t}\n\n\t/**\n\t * Returns middleware that requires valid JWT\n\t */\n\thandler(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (!token) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, new Error('No token provided'));\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Unauthorized' }, 401);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst payload = await this.verifier.verify(token);\n\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t? this.transformClaims(payload)\n\t\t\t\t\t: payload;\n\n\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\tc.set('jwtToken', token);\n\n\t\t\t\tawait next();\n\t\t\t} catch (error) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, error as Error);\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Invalid token' }, 401);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Returns middleware that allows unauthenticated requests\n\t */\n\toptional(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (token) {\n\t\t\t\tconst claims = await this.verifier.verifyOrNull(token);\n\t\t\t\tif (claims) {\n\t\t\t\t\tconst transformed = this.transformClaims\n\t\t\t\t\t\t? this.transformClaims(claims)\n\t\t\t\t\t\t: claims;\n\t\t\t\t\tc.set(this.contextKey, transformed);\n\t\t\t\t\tc.set('jwtToken', token);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait next();\n\t\t};\n\t}\n}\n"],"mappings":";;;;AAWA,SAAS,aACR,GACA,UAAkC,CAAC,GACnB;CAChB,MAAM,EACL,aAAa,iBACb,YACA,cAAc,cACX;CAEJ,MAAM,cAAc,EAAE,IAAI,OAAO,UAAU;CAC3C,IAAI,aAAa;EAChB,IAAI,eAAe,YAAY,WAAW,WAAW,GACpD,OAAO,YAAY,MAAM,YAAY,MAAM;EAE5C,OAAO;CACR;CAEA,IAAI,YAAY;EACf,MAAM,SAASA,gBAAAA,WAAW,EAAE,IAAI,OAAO,QAAQ,GAAG,UAAU;EAC5D,IAAI,QACH,OAAO;CAET;CAEA,OAAO;AACR;;;;;;;;;;;;;;;;AAyBA,IAAa,gBAAb,MAAkE;CACjE;CACA;CACA;CACA;CAIA;CAEA,YAAY,SAAwC;EACnD,KAAK,WAAW,IAAIC,YAAAA,YAAY,QAAQ,MAAM;EAC9C,KAAK,aAAa,QAAQ,cAAc,CAAC;EACzC,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,UAAU,QAAQ;EACvB,KAAK,kBAAkB,QAAQ;CAChC;;;;CAKA,UAA6B;EAC5B,OAAO,OAAO,GAAY,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,UAAU;GAE7C,IAAI,CAAC,OAAO;IACX,IAAI,KAAK,SACR,OAAO,KAAK,QAAQ,mBAAG,IAAI,MAAM,mBAAmB,CAAC;IAEtD,OAAO,EAAE,KAAK,EAAE,OAAO,eAAe,GAAG,GAAG;GAC7C;GAEA,IAAI;IACH,MAAM,UAAU,MAAM,KAAK,SAAS,OAAO,KAAK;IAChD,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,OAAO,IAC5B;IAEH,EAAE,IAAI,KAAK,YAAY,MAAM;IAC7B,EAAE,IAAI,YAAY,KAAK;IAEvB,MAAM,KAAK;GACZ,SAAS,OAAO;IACf,IAAI,KAAK,SACR,OAAO,KAAK,QAAQ,GAAG,KAAc;IAEtC,OAAO,EAAE,KAAK,EAAE,OAAO,gBAAgB,GAAG,GAAG;GAC9C;EACD;CACD;;;;CAKA,WAA8B;EAC7B,OAAO,OAAO,GAAY,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,UAAU;GAE7C,IAAI,OAAO;IACV,MAAM,SAAS,MAAM,KAAK,SAAS,aAAa,KAAK;IACrD,IAAI,QAAQ;KACX,MAAM,cAAc,KAAK,kBACtB,KAAK,gBAAgB,MAAM,IAC3B;KACH,EAAE,IAAI,KAAK,YAAY,WAAW;KAClC,EAAE,IAAI,YAAY,KAAK;IACxB;GACD;GAEA,MAAM,KAAK;EACZ;CACD;AACD"}
@@ -1,8 +1,7 @@
1
- import { JwtClaims, JwtConfig, JwtVerifier, TokenExtractionOptions } from "../jwt-3eIuY2dg.cjs";
1
+ import { a as JwtVerifier, n as JwtConfig, o as TokenExtractionOptions, t as JwtClaims } from "../jwt-CoKrpeMB.cjs";
2
2
  import { Context, MiddlewareHandler } from "hono";
3
-
4
3
  //#region src/hono/jwt.d.ts
5
- interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {
4
+ export interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {
6
5
  config: JwtConfig;
7
6
  extraction?: TokenExtractionOptions;
8
7
  contextKey?: string;
@@ -24,7 +23,7 @@ interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {
24
23
  * app.use('/public/*', jwt.optional());
25
24
  * ```
26
25
  */
27
- declare class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {
26
+ export declare class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {
28
27
  private readonly verifier;
29
28
  private readonly extraction;
30
29
  private readonly contextKey;
@@ -40,7 +39,6 @@ declare class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {
40
39
  */
41
40
  optional(): MiddlewareHandler;
42
41
  }
43
- //# sourceMappingURL=jwt.d.ts.map
44
42
  //#endregion
45
- export { JwtClaims, JwtConfig, JwtMiddleware, JwtMiddlewareOptions, JwtVerifier, TokenExtractionOptions };
43
+ export type { JwtClaims, JwtConfig, JwtVerifier, TokenExtractionOptions };
46
44
  //# sourceMappingURL=jwt.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.d.cts","names":[],"sources":["../../src/hono/jwt.ts"],"sourcesContent":[],"mappings":";;;;UAuCiB,qCAAqC,YAAY;EAAjD,MAAA,EACR,SADQ;EAAoB,UAAA,CAAA,EAEvB,sBAFuB;EAAA,UAAiB,CAAA,EAAA,MAAA;EAAS,OAAG,CAAA,EAAA,CAAA,CAAA,EAInD,OAJmD,EAAA,KAAA,EAInC,KAJmC,EAAA,GAIzB,QAJyB,GAId,OAJc,CAIN,QAJM,CAAA;EAAS,eAClE,CAAA,EAAA,CAAA,MAAA,EAImB,SAJnB,EAAA,GAIiC,OAJjC;;;;;;;;;AAIwC;AAkBjD;;;;;;;AAsDa,cAtDA,aAsDA,CAAA,gBAtD8B,SAsD9B,GAtD0C,SAsD1C,CAAA,CAAA;EAAiB,iBAAA,QAAA;;;;;uBA5CR,qBAAqB;;;;aAW/B;;;;cAiCC"}
1
+ {"version":3,"file":"jwt.d.cts","names":[],"sources":["../../src/hono/jwt.ts"],"mappings":";;;iBAuCiB,qBAAqB,gBAAgB,YAAY;EACjE,QAAQ;EACR,aAAa;EACb;EACA,WAAW,GAAG,SAAS,OAAO,UAAU,WAAW,QAAQ;EAC3D,mBAAmB,QAAQ,cAAc;;;;;;;;;;;;;;;;;qBAkB7B,cAAc,gBAAgB,YAAY;mBACrC;mBACA;mBACA;mBACA;mBAIA;EAEjB,YAAY,SAAS,qBAAqB;;;;EAW1C,WAAW;;;;EAiCX,YAAY"}
@@ -1,8 +1,7 @@
1
- import { JwtClaims, JwtConfig, JwtVerifier, TokenExtractionOptions } from "../jwt-kejix7rd.mjs";
1
+ import { a as JwtVerifier, n as JwtConfig, o as TokenExtractionOptions, t as JwtClaims } from "../jwt-CoKrpeMB.mjs";
2
2
  import { Context, MiddlewareHandler } from "hono";
3
-
4
3
  //#region src/hono/jwt.d.ts
5
- interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {
4
+ export interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {
6
5
  config: JwtConfig;
7
6
  extraction?: TokenExtractionOptions;
8
7
  contextKey?: string;
@@ -24,7 +23,7 @@ interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {
24
23
  * app.use('/public/*', jwt.optional());
25
24
  * ```
26
25
  */
27
- declare class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {
26
+ export declare class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {
28
27
  private readonly verifier;
29
28
  private readonly extraction;
30
29
  private readonly contextKey;
@@ -40,7 +39,6 @@ declare class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {
40
39
  */
41
40
  optional(): MiddlewareHandler;
42
41
  }
43
- //# sourceMappingURL=jwt.d.ts.map
44
42
  //#endregion
45
- export { JwtClaims, JwtConfig, JwtMiddleware, JwtMiddlewareOptions, JwtVerifier, TokenExtractionOptions };
43
+ export type { JwtClaims, JwtConfig, JwtVerifier, TokenExtractionOptions };
46
44
  //# sourceMappingURL=jwt.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.d.mts","names":[],"sources":["../../src/hono/jwt.ts"],"sourcesContent":[],"mappings":";;;;UAuCiB,qCAAqC,YAAY;EAAjD,MAAA,EACR,SADQ;EAAoB,UAAA,CAAA,EAEvB,sBAFuB;EAAA,UAAiB,CAAA,EAAA,MAAA;EAAS,OAAG,CAAA,EAAA,CAAA,CAAA,EAInD,OAJmD,EAAA,KAAA,EAInC,KAJmC,EAAA,GAIzB,QAJyB,GAId,OAJc,CAIN,QAJM,CAAA;EAAS,eAClE,CAAA,EAAA,CAAA,MAAA,EAImB,SAJnB,EAAA,GAIiC,OAJjC;;;;;;;;;AAIwC;AAkBjD;;;;;;;AAsDa,cAtDA,aAsDA,CAAA,gBAtD8B,SAsD9B,GAtD0C,SAsD1C,CAAA,CAAA;EAAiB,iBAAA,QAAA;;;;;uBA5CR,qBAAqB;;;;aAW/B;;;;cAiCC"}
1
+ {"version":3,"file":"jwt.d.mts","names":[],"sources":["../../src/hono/jwt.ts"],"mappings":";;;iBAuCiB,qBAAqB,gBAAgB,YAAY;EACjE,QAAQ;EACR,aAAa;EACb;EACA,WAAW,GAAG,SAAS,OAAO,UAAU,WAAW,QAAQ;EAC3D,mBAAmB,QAAQ,cAAc;;;;;;;;;;;;;;;;;qBAkB7B,cAAc,gBAAgB,YAAY;mBACrC;mBACA;mBACA;mBACA;mBAIA;EAEjB,YAAY,SAAS,qBAAqB;;;;EAW1C,WAAW;;;;EAiCX,YAAY"}
package/dist/hono/jwt.mjs CHANGED
@@ -1,6 +1,5 @@
1
- import { readCookie } from "../cookies-C80f8JtE.mjs";
2
- import { JwtVerifier } from "../jwt-bZR2_t8F.mjs";
3
-
1
+ import { readCookie } from "../cookies.mjs";
2
+ import { JwtVerifier } from "../jwt.mjs";
4
3
  //#region src/hono/jwt.ts
5
4
  function extractToken(c, options = {}) {
6
5
  const { headerName = "authorization", cookieName, tokenPrefix = "Bearer " } = options;
@@ -50,7 +49,7 @@ var JwtMiddleware = class {
50
49
  return async (c, next) => {
51
50
  const token = extractToken(c, this.extraction);
52
51
  if (!token) {
53
- if (this.onError) return this.onError(c, new Error("No token provided"));
52
+ if (this.onError) return this.onError(c, /* @__PURE__ */ new Error("No token provided"));
54
53
  return c.json({ error: "Unauthorized" }, 401);
55
54
  }
56
55
  try {
@@ -83,7 +82,7 @@ var JwtMiddleware = class {
83
82
  };
84
83
  }
85
84
  };
86
-
87
85
  //#endregion
88
86
  export { JwtMiddleware };
87
+
89
88
  //# sourceMappingURL=jwt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.mjs","names":["c: Context","options: TokenExtractionOptions","options: JwtMiddlewareOptions<TClaims>","next: Next"],"sources":["../../src/hono/jwt.ts"],"sourcesContent":["import type { Context, MiddlewareHandler, Next } from 'hono';\nimport { readCookie } from '../cookies';\nimport {\n\ttype JwtClaims,\n\ttype JwtConfig,\n\tJwtVerifier,\n\ttype TokenExtractionOptions,\n} from '../jwt';\n\nexport type { JwtVerifier, JwtClaims, JwtConfig, TokenExtractionOptions };\n\nfunction extractToken(\n\tc: Context,\n\toptions: TokenExtractionOptions = {},\n): string | null {\n\tconst {\n\t\theaderName = 'authorization',\n\t\tcookieName,\n\t\ttokenPrefix = 'Bearer ',\n\t} = options;\n\n\tconst headerValue = c.req.header(headerName);\n\tif (headerValue) {\n\t\tif (tokenPrefix && headerValue.startsWith(tokenPrefix)) {\n\t\t\treturn headerValue.slice(tokenPrefix.length);\n\t\t}\n\t\treturn headerValue;\n\t}\n\n\tif (cookieName) {\n\t\tconst cookie = readCookie(c.req.header('cookie'), cookieName);\n\t\tif (cookie) {\n\t\t\treturn cookie;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {\n\tconfig: JwtConfig;\n\textraction?: TokenExtractionOptions;\n\tcontextKey?: string;\n\tonError?: (c: Context, error: Error) => Response | Promise<Response>;\n\ttransformClaims?: (claims: JwtClaims) => TClaims;\n}\n\n/**\n * JWT Middleware for Hono\n *\n * @example\n * ```typescript\n * const jwt = new JwtMiddleware({\n * config: { secret: process.env.JWT_SECRET! },\n * });\n *\n * app.use('/api/*', jwt.handler());\n *\n * // Or for optional auth\n * app.use('/public/*', jwt.optional());\n * ```\n */\nexport class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {\n\tprivate readonly verifier: JwtVerifier<TClaims>;\n\tprivate readonly extraction: TokenExtractionOptions;\n\tprivate readonly contextKey: string;\n\tprivate readonly onError?: (\n\t\tc: Context,\n\t\terror: Error,\n\t) => Response | Promise<Response>;\n\tprivate readonly transformClaims?: (claims: JwtClaims) => TClaims;\n\n\tconstructor(options: JwtMiddlewareOptions<TClaims>) {\n\t\tthis.verifier = new JwtVerifier(options.config);\n\t\tthis.extraction = options.extraction ?? {};\n\t\tthis.contextKey = options.contextKey ?? 'jwtClaims';\n\t\tthis.onError = options.onError;\n\t\tthis.transformClaims = options.transformClaims;\n\t}\n\n\t/**\n\t * Returns middleware that requires valid JWT\n\t */\n\thandler(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (!token) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, new Error('No token provided'));\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Unauthorized' }, 401);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst payload = await this.verifier.verify(token);\n\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t? this.transformClaims(payload)\n\t\t\t\t\t: payload;\n\n\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\tc.set('jwtToken', token);\n\n\t\t\t\tawait next();\n\t\t\t} catch (error) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, error as Error);\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Invalid token' }, 401);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Returns middleware that allows unauthenticated requests\n\t */\n\toptional(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (token) {\n\t\t\t\tconst claims = await this.verifier.verifyOrNull(token);\n\t\t\t\tif (claims) {\n\t\t\t\t\tconst transformed = this.transformClaims\n\t\t\t\t\t\t? this.transformClaims(claims)\n\t\t\t\t\t\t: claims;\n\t\t\t\t\tc.set(this.contextKey, transformed);\n\t\t\t\t\tc.set('jwtToken', token);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait next();\n\t\t};\n\t}\n}\n"],"mappings":";;;;AAWA,SAAS,aACRA,GACAC,UAAkC,CAAE,GACpB;CAChB,MAAM,EACL,aAAa,iBACb,YACA,cAAc,WACd,GAAG;CAEJ,MAAM,cAAc,EAAE,IAAI,OAAO,WAAW;AAC5C,KAAI,aAAa;AAChB,MAAI,eAAe,YAAY,WAAW,YAAY,CACrD,QAAO,YAAY,MAAM,YAAY,OAAO;AAE7C,SAAO;CACP;AAED,KAAI,YAAY;EACf,MAAM,SAAS,WAAW,EAAE,IAAI,OAAO,SAAS,EAAE,WAAW;AAC7D,MAAI,OACH,QAAO;CAER;AAED,QAAO;AACP;;;;;;;;;;;;;;;;AAyBD,IAAa,gBAAb,MAAkE;CACjE,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAIjB,AAAiB;CAEjB,YAAYC,SAAwC;AACnD,OAAK,WAAW,IAAI,YAAY,QAAQ;AACxC,OAAK,aAAa,QAAQ,cAAc,CAAE;AAC1C,OAAK,aAAa,QAAQ,cAAc;AACxC,OAAK,UAAU,QAAQ;AACvB,OAAK,kBAAkB,QAAQ;CAC/B;;;;CAKD,UAA6B;AAC5B,SAAO,OAAOF,GAAYG,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,WAAW;AAE9C,QAAK,OAAO;AACX,QAAI,KAAK,QACR,QAAO,KAAK,QAAQ,GAAG,IAAI,MAAM,qBAAqB;AAEvD,WAAO,EAAE,KAAK,EAAE,OAAO,eAAgB,GAAE,IAAI;GAC7C;AAED,OAAI;IACH,MAAM,UAAU,MAAM,KAAK,SAAS,OAAO,MAAM;IACjD,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,QAAQ,GAC7B;AAEH,MAAE,IAAI,KAAK,YAAY,OAAO;AAC9B,MAAE,IAAI,YAAY,MAAM;AAExB,UAAM,MAAM;GACZ,SAAQ,OAAO;AACf,QAAI,KAAK,QACR,QAAO,KAAK,QAAQ,GAAG,MAAe;AAEvC,WAAO,EAAE,KAAK,EAAE,OAAO,gBAAiB,GAAE,IAAI;GAC9C;EACD;CACD;;;;CAKD,WAA8B;AAC7B,SAAO,OAAOH,GAAYG,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,WAAW;AAE9C,OAAI,OAAO;IACV,MAAM,SAAS,MAAM,KAAK,SAAS,aAAa,MAAM;AACtD,QAAI,QAAQ;KACX,MAAM,cAAc,KAAK,kBACtB,KAAK,gBAAgB,OAAO,GAC5B;AACH,OAAE,IAAI,KAAK,YAAY,YAAY;AACnC,OAAE,IAAI,YAAY,MAAM;IACxB;GACD;AAED,SAAM,MAAM;EACZ;CACD;AACD"}
1
+ {"version":3,"file":"jwt.mjs","names":[],"sources":["../../src/hono/jwt.ts"],"sourcesContent":["import type { Context, MiddlewareHandler, Next } from 'hono';\nimport { readCookie } from '../cookies';\nimport {\n\ttype JwtClaims,\n\ttype JwtConfig,\n\tJwtVerifier,\n\ttype TokenExtractionOptions,\n} from '../jwt';\n\nexport type { JwtVerifier, JwtClaims, JwtConfig, TokenExtractionOptions };\n\nfunction extractToken(\n\tc: Context,\n\toptions: TokenExtractionOptions = {},\n): string | null {\n\tconst {\n\t\theaderName = 'authorization',\n\t\tcookieName,\n\t\ttokenPrefix = 'Bearer ',\n\t} = options;\n\n\tconst headerValue = c.req.header(headerName);\n\tif (headerValue) {\n\t\tif (tokenPrefix && headerValue.startsWith(tokenPrefix)) {\n\t\t\treturn headerValue.slice(tokenPrefix.length);\n\t\t}\n\t\treturn headerValue;\n\t}\n\n\tif (cookieName) {\n\t\tconst cookie = readCookie(c.req.header('cookie'), cookieName);\n\t\tif (cookie) {\n\t\t\treturn cookie;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport interface JwtMiddlewareOptions<TClaims extends JwtClaims = JwtClaims> {\n\tconfig: JwtConfig;\n\textraction?: TokenExtractionOptions;\n\tcontextKey?: string;\n\tonError?: (c: Context, error: Error) => Response | Promise<Response>;\n\ttransformClaims?: (claims: JwtClaims) => TClaims;\n}\n\n/**\n * JWT Middleware for Hono\n *\n * @example\n * ```typescript\n * const jwt = new JwtMiddleware({\n * config: { secret: process.env.JWT_SECRET! },\n * });\n *\n * app.use('/api/*', jwt.handler());\n *\n * // Or for optional auth\n * app.use('/public/*', jwt.optional());\n * ```\n */\nexport class JwtMiddleware<TClaims extends JwtClaims = JwtClaims> {\n\tprivate readonly verifier: JwtVerifier<TClaims>;\n\tprivate readonly extraction: TokenExtractionOptions;\n\tprivate readonly contextKey: string;\n\tprivate readonly onError?: (\n\t\tc: Context,\n\t\terror: Error,\n\t) => Response | Promise<Response>;\n\tprivate readonly transformClaims?: (claims: JwtClaims) => TClaims;\n\n\tconstructor(options: JwtMiddlewareOptions<TClaims>) {\n\t\tthis.verifier = new JwtVerifier(options.config);\n\t\tthis.extraction = options.extraction ?? {};\n\t\tthis.contextKey = options.contextKey ?? 'jwtClaims';\n\t\tthis.onError = options.onError;\n\t\tthis.transformClaims = options.transformClaims;\n\t}\n\n\t/**\n\t * Returns middleware that requires valid JWT\n\t */\n\thandler(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (!token) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, new Error('No token provided'));\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Unauthorized' }, 401);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst payload = await this.verifier.verify(token);\n\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t? this.transformClaims(payload)\n\t\t\t\t\t: payload;\n\n\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\tc.set('jwtToken', token);\n\n\t\t\t\tawait next();\n\t\t\t} catch (error) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, error as Error);\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Invalid token' }, 401);\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Returns middleware that allows unauthenticated requests\n\t */\n\toptional(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (token) {\n\t\t\t\tconst claims = await this.verifier.verifyOrNull(token);\n\t\t\t\tif (claims) {\n\t\t\t\t\tconst transformed = this.transformClaims\n\t\t\t\t\t\t? this.transformClaims(claims)\n\t\t\t\t\t\t: claims;\n\t\t\t\t\tc.set(this.contextKey, transformed);\n\t\t\t\t\tc.set('jwtToken', token);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait next();\n\t\t};\n\t}\n}\n"],"mappings":";;;AAWA,SAAS,aACR,GACA,UAAkC,CAAC,GACnB;CAChB,MAAM,EACL,aAAa,iBACb,YACA,cAAc,cACX;CAEJ,MAAM,cAAc,EAAE,IAAI,OAAO,UAAU;CAC3C,IAAI,aAAa;EAChB,IAAI,eAAe,YAAY,WAAW,WAAW,GACpD,OAAO,YAAY,MAAM,YAAY,MAAM;EAE5C,OAAO;CACR;CAEA,IAAI,YAAY;EACf,MAAM,SAAS,WAAW,EAAE,IAAI,OAAO,QAAQ,GAAG,UAAU;EAC5D,IAAI,QACH,OAAO;CAET;CAEA,OAAO;AACR;;;;;;;;;;;;;;;;AAyBA,IAAa,gBAAb,MAAkE;CACjE;CACA;CACA;CACA;CAIA;CAEA,YAAY,SAAwC;EACnD,KAAK,WAAW,IAAI,YAAY,QAAQ,MAAM;EAC9C,KAAK,aAAa,QAAQ,cAAc,CAAC;EACzC,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,UAAU,QAAQ;EACvB,KAAK,kBAAkB,QAAQ;CAChC;;;;CAKA,UAA6B;EAC5B,OAAO,OAAO,GAAY,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,UAAU;GAE7C,IAAI,CAAC,OAAO;IACX,IAAI,KAAK,SACR,OAAO,KAAK,QAAQ,mBAAG,IAAI,MAAM,mBAAmB,CAAC;IAEtD,OAAO,EAAE,KAAK,EAAE,OAAO,eAAe,GAAG,GAAG;GAC7C;GAEA,IAAI;IACH,MAAM,UAAU,MAAM,KAAK,SAAS,OAAO,KAAK;IAChD,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,OAAO,IAC5B;IAEH,EAAE,IAAI,KAAK,YAAY,MAAM;IAC7B,EAAE,IAAI,YAAY,KAAK;IAEvB,MAAM,KAAK;GACZ,SAAS,OAAO;IACf,IAAI,KAAK,SACR,OAAO,KAAK,QAAQ,GAAG,KAAc;IAEtC,OAAO,EAAE,KAAK,EAAE,OAAO,gBAAgB,GAAG,GAAG;GAC9C;EACD;CACD;;;;CAKA,WAA8B;EAC7B,OAAO,OAAO,GAAY,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,UAAU;GAE7C,IAAI,OAAO;IACV,MAAM,SAAS,MAAM,KAAK,SAAS,aAAa,KAAK;IACrD,IAAI,QAAQ;KACX,MAAM,cAAc,KAAK,kBACtB,KAAK,gBAAgB,MAAM,IAC3B;KACH,EAAE,IAAI,KAAK,YAAY,WAAW;KAClC,EAAE,IAAI,YAAY,KAAK;IACxB;GACD;GAEA,MAAM,KAAK;EACZ;CACD;AACD"}
@@ -1,6 +1,6 @@
1
- const require_cookies = require('../cookies-Bc6gUjb6.cjs');
2
- const require_oidc = require('../oidc-jdMfVyyC.cjs');
3
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_cookies = require("../cookies.cjs");
3
+ const require_oidc = require("../oidc.cjs");
4
4
  //#region src/hono/oidc.ts
5
5
  function extractToken(c, options = {}) {
6
6
  const { headerName = "authorization", cookieName, tokenPrefix = "Bearer " } = options;
@@ -55,7 +55,7 @@ var OidcMiddleware = class {
55
55
  return async (c, next) => {
56
56
  const token = extractToken(c, this.extraction);
57
57
  if (!token) {
58
- if (this.onError) return this.onError(c, new Error("No token provided"));
58
+ if (this.onError) return this.onError(c, /* @__PURE__ */ new Error("No token provided"));
59
59
  return c.json({ error: "Unauthorized" }, 401);
60
60
  }
61
61
  try {
@@ -95,7 +95,7 @@ var OidcMiddleware = class {
95
95
  };
96
96
  }
97
97
  };
98
-
99
98
  //#endregion
100
99
  exports.OidcMiddleware = OidcMiddleware;
100
+
101
101
  //# sourceMappingURL=oidc.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"oidc.cjs","names":["c: Context","options: TokenExtractionOptions","options: OidcMiddlewareOptions<TClaims, TUserInfo>","OidcVerifier","next: Next","userInfo: TUserInfo | undefined"],"sources":["../../src/hono/oidc.ts"],"sourcesContent":["import type { Context, MiddlewareHandler, Next } from 'hono';\nimport { readCookie } from '../cookies';\nimport {\n\ttype OidcClaims,\n\ttype OidcConfig,\n\ttype OidcUserInfo,\n\tOidcVerifier,\n\ttype TokenExtractionOptions,\n} from '../oidc';\n\nexport type {\n\tOidcVerifier,\n\tOidcClaims,\n\tOidcConfig,\n\tOidcUserInfo,\n\tTokenExtractionOptions,\n};\n\nfunction extractToken(\n\tc: Context,\n\toptions: TokenExtractionOptions = {},\n): string | null {\n\tconst {\n\t\theaderName = 'authorization',\n\t\tcookieName,\n\t\ttokenPrefix = 'Bearer ',\n\t} = options;\n\n\tconst headerValue = c.req.header(headerName);\n\tif (headerValue) {\n\t\tif (tokenPrefix && headerValue.startsWith(tokenPrefix)) {\n\t\t\treturn headerValue.slice(tokenPrefix.length);\n\t\t}\n\t\treturn headerValue;\n\t}\n\n\tif (cookieName) {\n\t\tconst cookie = readCookie(c.req.header('cookie'), cookieName);\n\t\tif (cookie) {\n\t\t\treturn cookie;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport interface OidcMiddlewareOptions<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tconfig: OidcConfig;\n\textraction?: TokenExtractionOptions;\n\tcontextKey?: string;\n\tfetchUserInfo?: boolean;\n\tonError?: (c: Context, error: Error) => Response | Promise<Response>;\n\ttransformClaims?: (claims: OidcClaims, userInfo?: TUserInfo) => TClaims;\n}\n\n/**\n * OIDC Middleware for Hono\n *\n * @example\n * ```typescript\n * const oidc = new OidcMiddleware({\n * config: {\n * issuer: 'https://auth.example.com',\n * audience: 'my-client-id',\n * },\n * });\n *\n * app.use('/api/*', oidc.handler());\n *\n * // With user info\n * const oidcWithUserInfo = new OidcMiddleware({\n * config: { issuer: '...', audience: '...' },\n * fetchUserInfo: true,\n * });\n * ```\n */\nexport class OidcMiddleware<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tprivate readonly verifier: OidcVerifier<TClaims, TUserInfo>;\n\tprivate readonly extraction: TokenExtractionOptions;\n\tprivate readonly contextKey: string;\n\tprivate readonly fetchUserInfo: boolean;\n\tprivate readonly onError?: (\n\t\tc: Context,\n\t\terror: Error,\n\t) => Response | Promise<Response>;\n\tprivate readonly transformClaims?: (\n\t\tclaims: OidcClaims,\n\t\tuserInfo?: TUserInfo,\n\t) => TClaims;\n\n\tconstructor(options: OidcMiddlewareOptions<TClaims, TUserInfo>) {\n\t\tthis.verifier = new OidcVerifier(options.config);\n\t\tthis.extraction = options.extraction ?? {};\n\t\tthis.contextKey = options.contextKey ?? 'oidcClaims';\n\t\tthis.fetchUserInfo = options.fetchUserInfo ?? false;\n\t\tthis.onError = options.onError;\n\t\tthis.transformClaims = options.transformClaims;\n\t}\n\n\thandler(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (!token) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, new Error('No token provided'));\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Unauthorized' }, 401);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst payload = await this.verifier.verify(token);\n\n\t\t\t\tlet userInfo: TUserInfo | undefined;\n\t\t\t\tif (this.fetchUserInfo) {\n\t\t\t\t\tuserInfo = (await this.verifier.fetchUserInfo(token)) ?? undefined;\n\t\t\t\t\tc.set('oidcUserInfo', userInfo);\n\t\t\t\t}\n\n\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t? this.transformClaims(payload, userInfo)\n\t\t\t\t\t: payload;\n\n\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\tc.set('oidcToken', token);\n\n\t\t\t\tawait next();\n\t\t\t} catch (error) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, error as Error);\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Invalid token' }, 401);\n\t\t\t}\n\t\t};\n\t}\n\n\toptional(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (token) {\n\t\t\t\tconst payload = await this.verifier.verifyOrNull(token);\n\t\t\t\tif (payload) {\n\t\t\t\t\tlet userInfo: TUserInfo | undefined;\n\t\t\t\t\tif (this.fetchUserInfo) {\n\t\t\t\t\t\tuserInfo = (await this.verifier.fetchUserInfo(token)) ?? undefined;\n\t\t\t\t\t\tc.set('oidcUserInfo', userInfo);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t\t? this.transformClaims(payload, userInfo)\n\t\t\t\t\t\t: payload;\n\n\t\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\t\tc.set('oidcToken', token);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait next();\n\t\t};\n\t}\n}\n"],"mappings":";;;;AAkBA,SAAS,aACRA,GACAC,UAAkC,CAAE,GACpB;CAChB,MAAM,EACL,aAAa,iBACb,YACA,cAAc,WACd,GAAG;CAEJ,MAAM,cAAc,EAAE,IAAI,OAAO,WAAW;AAC5C,KAAI,aAAa;AAChB,MAAI,eAAe,YAAY,WAAW,YAAY,CACrD,QAAO,YAAY,MAAM,YAAY,OAAO;AAE7C,SAAO;CACP;AAED,KAAI,YAAY;EACf,MAAM,SAAS,2BAAW,EAAE,IAAI,OAAO,SAAS,EAAE,WAAW;AAC7D,MAAI,OACH,QAAO;CAER;AAED,QAAO;AACP;;;;;;;;;;;;;;;;;;;;;;AAmCD,IAAa,iBAAb,MAGE;CACD,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAIjB,AAAiB;CAKjB,YAAYC,SAAoD;AAC/D,OAAK,WAAW,IAAIC,0BAAa,QAAQ;AACzC,OAAK,aAAa,QAAQ,cAAc,CAAE;AAC1C,OAAK,aAAa,QAAQ,cAAc;AACxC,OAAK,gBAAgB,QAAQ,iBAAiB;AAC9C,OAAK,UAAU,QAAQ;AACvB,OAAK,kBAAkB,QAAQ;CAC/B;CAED,UAA6B;AAC5B,SAAO,OAAOH,GAAYI,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,WAAW;AAE9C,QAAK,OAAO;AACX,QAAI,KAAK,QACR,QAAO,KAAK,QAAQ,GAAG,IAAI,MAAM,qBAAqB;AAEvD,WAAO,EAAE,KAAK,EAAE,OAAO,eAAgB,GAAE,IAAI;GAC7C;AAED,OAAI;IACH,MAAM,UAAU,MAAM,KAAK,SAAS,OAAO,MAAM;IAEjD,IAAIC;AACJ,QAAI,KAAK,eAAe;AACvB,gBAAY,MAAM,KAAK,SAAS,cAAc,MAAM;AACpD,OAAE,IAAI,gBAAgB,SAAS;IAC/B;IAED,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,SAAS,SAAS,GACvC;AAEH,MAAE,IAAI,KAAK,YAAY,OAAO;AAC9B,MAAE,IAAI,aAAa,MAAM;AAEzB,UAAM,MAAM;GACZ,SAAQ,OAAO;AACf,QAAI,KAAK,QACR,QAAO,KAAK,QAAQ,GAAG,MAAe;AAEvC,WAAO,EAAE,KAAK,EAAE,OAAO,gBAAiB,GAAE,IAAI;GAC9C;EACD;CACD;CAED,WAA8B;AAC7B,SAAO,OAAOL,GAAYI,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,WAAW;AAE9C,OAAI,OAAO;IACV,MAAM,UAAU,MAAM,KAAK,SAAS,aAAa,MAAM;AACvD,QAAI,SAAS;KACZ,IAAIC;AACJ,SAAI,KAAK,eAAe;AACvB,iBAAY,MAAM,KAAK,SAAS,cAAc,MAAM;AACpD,QAAE,IAAI,gBAAgB,SAAS;KAC/B;KAED,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,SAAS,SAAS,GACvC;AAEH,OAAE,IAAI,KAAK,YAAY,OAAO;AAC9B,OAAE,IAAI,aAAa,MAAM;IACzB;GACD;AAED,SAAM,MAAM;EACZ;CACD;AACD"}
1
+ {"version":3,"file":"oidc.cjs","names":["readCookie","OidcVerifier"],"sources":["../../src/hono/oidc.ts"],"sourcesContent":["import type { Context, MiddlewareHandler, Next } from 'hono';\nimport { readCookie } from '../cookies';\nimport {\n\ttype OidcClaims,\n\ttype OidcConfig,\n\ttype OidcUserInfo,\n\tOidcVerifier,\n\ttype TokenExtractionOptions,\n} from '../oidc';\n\nexport type {\n\tOidcVerifier,\n\tOidcClaims,\n\tOidcConfig,\n\tOidcUserInfo,\n\tTokenExtractionOptions,\n};\n\nfunction extractToken(\n\tc: Context,\n\toptions: TokenExtractionOptions = {},\n): string | null {\n\tconst {\n\t\theaderName = 'authorization',\n\t\tcookieName,\n\t\ttokenPrefix = 'Bearer ',\n\t} = options;\n\n\tconst headerValue = c.req.header(headerName);\n\tif (headerValue) {\n\t\tif (tokenPrefix && headerValue.startsWith(tokenPrefix)) {\n\t\t\treturn headerValue.slice(tokenPrefix.length);\n\t\t}\n\t\treturn headerValue;\n\t}\n\n\tif (cookieName) {\n\t\tconst cookie = readCookie(c.req.header('cookie'), cookieName);\n\t\tif (cookie) {\n\t\t\treturn cookie;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport interface OidcMiddlewareOptions<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tconfig: OidcConfig;\n\textraction?: TokenExtractionOptions;\n\tcontextKey?: string;\n\tfetchUserInfo?: boolean;\n\tonError?: (c: Context, error: Error) => Response | Promise<Response>;\n\ttransformClaims?: (claims: OidcClaims, userInfo?: TUserInfo) => TClaims;\n}\n\n/**\n * OIDC Middleware for Hono\n *\n * @example\n * ```typescript\n * const oidc = new OidcMiddleware({\n * config: {\n * issuer: 'https://auth.example.com',\n * audience: 'my-client-id',\n * },\n * });\n *\n * app.use('/api/*', oidc.handler());\n *\n * // With user info\n * const oidcWithUserInfo = new OidcMiddleware({\n * config: { issuer: '...', audience: '...' },\n * fetchUserInfo: true,\n * });\n * ```\n */\nexport class OidcMiddleware<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tprivate readonly verifier: OidcVerifier<TClaims, TUserInfo>;\n\tprivate readonly extraction: TokenExtractionOptions;\n\tprivate readonly contextKey: string;\n\tprivate readonly fetchUserInfo: boolean;\n\tprivate readonly onError?: (\n\t\tc: Context,\n\t\terror: Error,\n\t) => Response | Promise<Response>;\n\tprivate readonly transformClaims?: (\n\t\tclaims: OidcClaims,\n\t\tuserInfo?: TUserInfo,\n\t) => TClaims;\n\n\tconstructor(options: OidcMiddlewareOptions<TClaims, TUserInfo>) {\n\t\tthis.verifier = new OidcVerifier(options.config);\n\t\tthis.extraction = options.extraction ?? {};\n\t\tthis.contextKey = options.contextKey ?? 'oidcClaims';\n\t\tthis.fetchUserInfo = options.fetchUserInfo ?? false;\n\t\tthis.onError = options.onError;\n\t\tthis.transformClaims = options.transformClaims;\n\t}\n\n\thandler(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (!token) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, new Error('No token provided'));\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Unauthorized' }, 401);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst payload = await this.verifier.verify(token);\n\n\t\t\t\tlet userInfo: TUserInfo | undefined;\n\t\t\t\tif (this.fetchUserInfo) {\n\t\t\t\t\tuserInfo = (await this.verifier.fetchUserInfo(token)) ?? undefined;\n\t\t\t\t\tc.set('oidcUserInfo', userInfo);\n\t\t\t\t}\n\n\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t? this.transformClaims(payload, userInfo)\n\t\t\t\t\t: payload;\n\n\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\tc.set('oidcToken', token);\n\n\t\t\t\tawait next();\n\t\t\t} catch (error) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, error as Error);\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Invalid token' }, 401);\n\t\t\t}\n\t\t};\n\t}\n\n\toptional(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (token) {\n\t\t\t\tconst payload = await this.verifier.verifyOrNull(token);\n\t\t\t\tif (payload) {\n\t\t\t\t\tlet userInfo: TUserInfo | undefined;\n\t\t\t\t\tif (this.fetchUserInfo) {\n\t\t\t\t\t\tuserInfo = (await this.verifier.fetchUserInfo(token)) ?? undefined;\n\t\t\t\t\t\tc.set('oidcUserInfo', userInfo);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t\t? this.transformClaims(payload, userInfo)\n\t\t\t\t\t\t: payload;\n\n\t\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\t\tc.set('oidcToken', token);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait next();\n\t\t};\n\t}\n}\n"],"mappings":";;;;AAkBA,SAAS,aACR,GACA,UAAkC,CAAC,GACnB;CAChB,MAAM,EACL,aAAa,iBACb,YACA,cAAc,cACX;CAEJ,MAAM,cAAc,EAAE,IAAI,OAAO,UAAU;CAC3C,IAAI,aAAa;EAChB,IAAI,eAAe,YAAY,WAAW,WAAW,GACpD,OAAO,YAAY,MAAM,YAAY,MAAM;EAE5C,OAAO;CACR;CAEA,IAAI,YAAY;EACf,MAAM,SAASA,gBAAAA,WAAW,EAAE,IAAI,OAAO,QAAQ,GAAG,UAAU;EAC5D,IAAI,QACH,OAAO;CAET;CAEA,OAAO;AACR;;;;;;;;;;;;;;;;;;;;;;AAmCA,IAAa,iBAAb,MAGE;CACD;CACA;CACA;CACA;CACA;CAIA;CAKA,YAAY,SAAoD;EAC/D,KAAK,WAAW,IAAIC,aAAAA,aAAa,QAAQ,MAAM;EAC/C,KAAK,aAAa,QAAQ,cAAc,CAAC;EACzC,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,gBAAgB,QAAQ,iBAAiB;EAC9C,KAAK,UAAU,QAAQ;EACvB,KAAK,kBAAkB,QAAQ;CAChC;CAEA,UAA6B;EAC5B,OAAO,OAAO,GAAY,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,UAAU;GAE7C,IAAI,CAAC,OAAO;IACX,IAAI,KAAK,SACR,OAAO,KAAK,QAAQ,mBAAG,IAAI,MAAM,mBAAmB,CAAC;IAEtD,OAAO,EAAE,KAAK,EAAE,OAAO,eAAe,GAAG,GAAG;GAC7C;GAEA,IAAI;IACH,MAAM,UAAU,MAAM,KAAK,SAAS,OAAO,KAAK;IAEhD,IAAI;IACJ,IAAI,KAAK,eAAe;KACvB,WAAY,MAAM,KAAK,SAAS,cAAc,KAAK,KAAM,KAAA;KACzD,EAAE,IAAI,gBAAgB,QAAQ;IAC/B;IAEA,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,SAAS,QAAQ,IACtC;IAEH,EAAE,IAAI,KAAK,YAAY,MAAM;IAC7B,EAAE,IAAI,aAAa,KAAK;IAExB,MAAM,KAAK;GACZ,SAAS,OAAO;IACf,IAAI,KAAK,SACR,OAAO,KAAK,QAAQ,GAAG,KAAc;IAEtC,OAAO,EAAE,KAAK,EAAE,OAAO,gBAAgB,GAAG,GAAG;GAC9C;EACD;CACD;CAEA,WAA8B;EAC7B,OAAO,OAAO,GAAY,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,UAAU;GAE7C,IAAI,OAAO;IACV,MAAM,UAAU,MAAM,KAAK,SAAS,aAAa,KAAK;IACtD,IAAI,SAAS;KACZ,IAAI;KACJ,IAAI,KAAK,eAAe;MACvB,WAAY,MAAM,KAAK,SAAS,cAAc,KAAK,KAAM,KAAA;MACzD,EAAE,IAAI,gBAAgB,QAAQ;KAC/B;KAEA,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,SAAS,QAAQ,IACtC;KAEH,EAAE,IAAI,KAAK,YAAY,MAAM;KAC7B,EAAE,IAAI,aAAa,KAAK;IACzB;GACD;GAEA,MAAM,KAAK;EACZ;CACD;AACD"}
@@ -1,9 +1,8 @@
1
- import { TokenExtractionOptions } from "../jwt-3eIuY2dg.cjs";
2
- import { OidcClaims, OidcConfig, OidcUserInfo, OidcVerifier } from "../oidc-ChA17wLB.cjs";
1
+ import { o as TokenExtractionOptions } from "../jwt-CoKrpeMB.cjs";
2
+ import { OidcClaims, OidcConfig, OidcUserInfo, OidcVerifier } from "../oidc.cjs";
3
3
  import { Context, MiddlewareHandler } from "hono";
4
-
5
4
  //#region src/hono/oidc.d.ts
6
- interface OidcMiddlewareOptions<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
5
+ export interface OidcMiddlewareOptions<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
7
6
  config: OidcConfig;
8
7
  extraction?: TokenExtractionOptions;
9
8
  contextKey?: string;
@@ -32,7 +31,7 @@ interface OidcMiddlewareOptions<TClaims extends OidcClaims = OidcClaims, TUserIn
32
31
  * });
33
32
  * ```
34
33
  */
35
- declare class OidcMiddleware<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
34
+ export declare class OidcMiddleware<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
36
35
  private readonly verifier;
37
36
  private readonly extraction;
38
37
  private readonly contextKey;
@@ -43,7 +42,6 @@ declare class OidcMiddleware<TClaims extends OidcClaims = OidcClaims, TUserInfo
43
42
  handler(): MiddlewareHandler;
44
43
  optional(): MiddlewareHandler;
45
44
  }
46
- //# sourceMappingURL=oidc.d.ts.map
47
45
  //#endregion
48
- export { OidcClaims, OidcConfig, OidcMiddleware, OidcMiddlewareOptions, OidcUserInfo, OidcVerifier, TokenExtractionOptions };
46
+ export type { OidcClaims, OidcConfig, OidcUserInfo, OidcVerifier, TokenExtractionOptions };
49
47
  //# sourceMappingURL=oidc.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oidc.d.cts","names":[],"sources":["../../src/hono/oidc.ts"],"sourcesContent":[],"mappings":";;;;;UA8CiB,sCACA,aAAa,8BACX,eAAe;UAEzB;EAJQ,UAAA,CAAA,EAKH,sBALwB;EAAA,UAAA,CAAA,EAAA,MAAA;EAAA,aACrB,CAAA,EAAA,OAAA;EAAU,OAAG,CAAA,EAAA,CAAA,CAAA,EAOf,OAPe,EAAA,KAAA,EAOC,KAPD,EAAA,GAOW,QAPX,GAOsB,OAPtB,CAO8B,QAP9B,CAAA;EAAU,eACrB,CAAA,EAAA,CAAA,MAAA,EAOS,UAPT,EAAA,QAAA,CAAA,EAOgC,SAPhC,EAAA,GAO8C,OAP9C;;;;;;;;;;;;AAOqD;AAwBxE;;;;;;;;;;AA+Da,cA/DA,cA+DA,CAAA,gBA9DI,UA8DJ,GA9DiB,UA8DjB,EAAA,kBA7DM,YA6DN,GA7DqB,YA6DrB,CAAA,CAAA;EAAiB,iBAAA,QAAA;;;;;;uBA9CR,sBAAsB,SAAS;aASzC;cAqCC"}
1
+ {"version":3,"file":"oidc.d.cts","names":[],"sources":["../../src/hono/oidc.ts"],"mappings":";;;;iBA8CiB,sBAChB,gBAAgB,aAAa,YAC7B,kBAAkB,eAAe;EAEjC,QAAQ;EACR,aAAa;EACb;EACA;EACA,WAAW,GAAG,SAAS,OAAO,UAAU,WAAW,QAAQ;EAC3D,mBAAmB,QAAQ,YAAY,WAAW,cAAc;;;;;;;;;;;;;;;;;;;;;;;qBAwBpD,eACZ,gBAAgB,aAAa,YAC7B,kBAAkB,eAAe;mBAEhB;mBACA;mBACA;mBACA;mBACA;mBAIA;EAKjB,YAAY,SAAS,sBAAsB,SAAS;EASpD,WAAW;EAqCX,YAAY"}
@@ -1,9 +1,8 @@
1
- import { TokenExtractionOptions } from "../jwt-kejix7rd.mjs";
2
- import { OidcClaims, OidcConfig, OidcUserInfo, OidcVerifier } from "../oidc-Ca7GYwmM.mjs";
1
+ import { o as TokenExtractionOptions } from "../jwt-CoKrpeMB.mjs";
2
+ import { OidcClaims, OidcConfig, OidcUserInfo, OidcVerifier } from "../oidc.mjs";
3
3
  import { Context, MiddlewareHandler } from "hono";
4
-
5
4
  //#region src/hono/oidc.d.ts
6
- interface OidcMiddlewareOptions<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
5
+ export interface OidcMiddlewareOptions<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
7
6
  config: OidcConfig;
8
7
  extraction?: TokenExtractionOptions;
9
8
  contextKey?: string;
@@ -32,7 +31,7 @@ interface OidcMiddlewareOptions<TClaims extends OidcClaims = OidcClaims, TUserIn
32
31
  * });
33
32
  * ```
34
33
  */
35
- declare class OidcMiddleware<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
34
+ export declare class OidcMiddleware<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
36
35
  private readonly verifier;
37
36
  private readonly extraction;
38
37
  private readonly contextKey;
@@ -43,7 +42,6 @@ declare class OidcMiddleware<TClaims extends OidcClaims = OidcClaims, TUserInfo
43
42
  handler(): MiddlewareHandler;
44
43
  optional(): MiddlewareHandler;
45
44
  }
46
- //# sourceMappingURL=oidc.d.ts.map
47
45
  //#endregion
48
- export { OidcClaims, OidcConfig, OidcMiddleware, OidcMiddlewareOptions, OidcUserInfo, OidcVerifier, TokenExtractionOptions };
46
+ export type { OidcClaims, OidcConfig, OidcUserInfo, OidcVerifier, TokenExtractionOptions };
49
47
  //# sourceMappingURL=oidc.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oidc.d.mts","names":[],"sources":["../../src/hono/oidc.ts"],"sourcesContent":[],"mappings":";;;;;UA8CiB,sCACA,aAAa,8BACX,eAAe;UAEzB;EAJQ,UAAA,CAAA,EAKH,sBALwB;EAAA,UAAA,CAAA,EAAA,MAAA;EAAA,aACrB,CAAA,EAAA,OAAA;EAAU,OAAG,CAAA,EAAA,CAAA,CAAA,EAOf,OAPe,EAAA,KAAA,EAOC,KAPD,EAAA,GAOW,QAPX,GAOsB,OAPtB,CAO8B,QAP9B,CAAA;EAAU,eACrB,CAAA,EAAA,CAAA,MAAA,EAOS,UAPT,EAAA,QAAA,CAAA,EAOgC,SAPhC,EAAA,GAO8C,OAP9C;;;;;;;;;;;;AAOqD;AAwBxE;;;;;;;;;;AA+Da,cA/DA,cA+DA,CAAA,gBA9DI,UA8DJ,GA9DiB,UA8DjB,EAAA,kBA7DM,YA6DN,GA7DqB,YA6DrB,CAAA,CAAA;EAAiB,iBAAA,QAAA;;;;;;uBA9CR,sBAAsB,SAAS;aASzC;cAqCC"}
1
+ {"version":3,"file":"oidc.d.mts","names":[],"sources":["../../src/hono/oidc.ts"],"mappings":";;;;iBA8CiB,sBAChB,gBAAgB,aAAa,YAC7B,kBAAkB,eAAe;EAEjC,QAAQ;EACR,aAAa;EACb;EACA;EACA,WAAW,GAAG,SAAS,OAAO,UAAU,WAAW,QAAQ;EAC3D,mBAAmB,QAAQ,YAAY,WAAW,cAAc;;;;;;;;;;;;;;;;;;;;;;;qBAwBpD,eACZ,gBAAgB,aAAa,YAC7B,kBAAkB,eAAe;mBAEhB;mBACA;mBACA;mBACA;mBACA;mBAIA;EAKjB,YAAY,SAAS,sBAAsB,SAAS;EASpD,WAAW;EAqCX,YAAY"}
@@ -1,6 +1,5 @@
1
- import { readCookie } from "../cookies-C80f8JtE.mjs";
2
- import { OidcVerifier } from "../oidc-BYHREHir.mjs";
3
-
1
+ import { readCookie } from "../cookies.mjs";
2
+ import { OidcVerifier } from "../oidc.mjs";
4
3
  //#region src/hono/oidc.ts
5
4
  function extractToken(c, options = {}) {
6
5
  const { headerName = "authorization", cookieName, tokenPrefix = "Bearer " } = options;
@@ -55,7 +54,7 @@ var OidcMiddleware = class {
55
54
  return async (c, next) => {
56
55
  const token = extractToken(c, this.extraction);
57
56
  if (!token) {
58
- if (this.onError) return this.onError(c, new Error("No token provided"));
57
+ if (this.onError) return this.onError(c, /* @__PURE__ */ new Error("No token provided"));
59
58
  return c.json({ error: "Unauthorized" }, 401);
60
59
  }
61
60
  try {
@@ -95,7 +94,7 @@ var OidcMiddleware = class {
95
94
  };
96
95
  }
97
96
  };
98
-
99
97
  //#endregion
100
98
  export { OidcMiddleware };
99
+
101
100
  //# sourceMappingURL=oidc.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"oidc.mjs","names":["c: Context","options: TokenExtractionOptions","options: OidcMiddlewareOptions<TClaims, TUserInfo>","next: Next","userInfo: TUserInfo | undefined"],"sources":["../../src/hono/oidc.ts"],"sourcesContent":["import type { Context, MiddlewareHandler, Next } from 'hono';\nimport { readCookie } from '../cookies';\nimport {\n\ttype OidcClaims,\n\ttype OidcConfig,\n\ttype OidcUserInfo,\n\tOidcVerifier,\n\ttype TokenExtractionOptions,\n} from '../oidc';\n\nexport type {\n\tOidcVerifier,\n\tOidcClaims,\n\tOidcConfig,\n\tOidcUserInfo,\n\tTokenExtractionOptions,\n};\n\nfunction extractToken(\n\tc: Context,\n\toptions: TokenExtractionOptions = {},\n): string | null {\n\tconst {\n\t\theaderName = 'authorization',\n\t\tcookieName,\n\t\ttokenPrefix = 'Bearer ',\n\t} = options;\n\n\tconst headerValue = c.req.header(headerName);\n\tif (headerValue) {\n\t\tif (tokenPrefix && headerValue.startsWith(tokenPrefix)) {\n\t\t\treturn headerValue.slice(tokenPrefix.length);\n\t\t}\n\t\treturn headerValue;\n\t}\n\n\tif (cookieName) {\n\t\tconst cookie = readCookie(c.req.header('cookie'), cookieName);\n\t\tif (cookie) {\n\t\t\treturn cookie;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport interface OidcMiddlewareOptions<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tconfig: OidcConfig;\n\textraction?: TokenExtractionOptions;\n\tcontextKey?: string;\n\tfetchUserInfo?: boolean;\n\tonError?: (c: Context, error: Error) => Response | Promise<Response>;\n\ttransformClaims?: (claims: OidcClaims, userInfo?: TUserInfo) => TClaims;\n}\n\n/**\n * OIDC Middleware for Hono\n *\n * @example\n * ```typescript\n * const oidc = new OidcMiddleware({\n * config: {\n * issuer: 'https://auth.example.com',\n * audience: 'my-client-id',\n * },\n * });\n *\n * app.use('/api/*', oidc.handler());\n *\n * // With user info\n * const oidcWithUserInfo = new OidcMiddleware({\n * config: { issuer: '...', audience: '...' },\n * fetchUserInfo: true,\n * });\n * ```\n */\nexport class OidcMiddleware<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tprivate readonly verifier: OidcVerifier<TClaims, TUserInfo>;\n\tprivate readonly extraction: TokenExtractionOptions;\n\tprivate readonly contextKey: string;\n\tprivate readonly fetchUserInfo: boolean;\n\tprivate readonly onError?: (\n\t\tc: Context,\n\t\terror: Error,\n\t) => Response | Promise<Response>;\n\tprivate readonly transformClaims?: (\n\t\tclaims: OidcClaims,\n\t\tuserInfo?: TUserInfo,\n\t) => TClaims;\n\n\tconstructor(options: OidcMiddlewareOptions<TClaims, TUserInfo>) {\n\t\tthis.verifier = new OidcVerifier(options.config);\n\t\tthis.extraction = options.extraction ?? {};\n\t\tthis.contextKey = options.contextKey ?? 'oidcClaims';\n\t\tthis.fetchUserInfo = options.fetchUserInfo ?? false;\n\t\tthis.onError = options.onError;\n\t\tthis.transformClaims = options.transformClaims;\n\t}\n\n\thandler(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (!token) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, new Error('No token provided'));\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Unauthorized' }, 401);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst payload = await this.verifier.verify(token);\n\n\t\t\t\tlet userInfo: TUserInfo | undefined;\n\t\t\t\tif (this.fetchUserInfo) {\n\t\t\t\t\tuserInfo = (await this.verifier.fetchUserInfo(token)) ?? undefined;\n\t\t\t\t\tc.set('oidcUserInfo', userInfo);\n\t\t\t\t}\n\n\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t? this.transformClaims(payload, userInfo)\n\t\t\t\t\t: payload;\n\n\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\tc.set('oidcToken', token);\n\n\t\t\t\tawait next();\n\t\t\t} catch (error) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, error as Error);\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Invalid token' }, 401);\n\t\t\t}\n\t\t};\n\t}\n\n\toptional(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (token) {\n\t\t\t\tconst payload = await this.verifier.verifyOrNull(token);\n\t\t\t\tif (payload) {\n\t\t\t\t\tlet userInfo: TUserInfo | undefined;\n\t\t\t\t\tif (this.fetchUserInfo) {\n\t\t\t\t\t\tuserInfo = (await this.verifier.fetchUserInfo(token)) ?? undefined;\n\t\t\t\t\t\tc.set('oidcUserInfo', userInfo);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t\t? this.transformClaims(payload, userInfo)\n\t\t\t\t\t\t: payload;\n\n\t\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\t\tc.set('oidcToken', token);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait next();\n\t\t};\n\t}\n}\n"],"mappings":";;;;AAkBA,SAAS,aACRA,GACAC,UAAkC,CAAE,GACpB;CAChB,MAAM,EACL,aAAa,iBACb,YACA,cAAc,WACd,GAAG;CAEJ,MAAM,cAAc,EAAE,IAAI,OAAO,WAAW;AAC5C,KAAI,aAAa;AAChB,MAAI,eAAe,YAAY,WAAW,YAAY,CACrD,QAAO,YAAY,MAAM,YAAY,OAAO;AAE7C,SAAO;CACP;AAED,KAAI,YAAY;EACf,MAAM,SAAS,WAAW,EAAE,IAAI,OAAO,SAAS,EAAE,WAAW;AAC7D,MAAI,OACH,QAAO;CAER;AAED,QAAO;AACP;;;;;;;;;;;;;;;;;;;;;;AAmCD,IAAa,iBAAb,MAGE;CACD,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAIjB,AAAiB;CAKjB,YAAYC,SAAoD;AAC/D,OAAK,WAAW,IAAI,aAAa,QAAQ;AACzC,OAAK,aAAa,QAAQ,cAAc,CAAE;AAC1C,OAAK,aAAa,QAAQ,cAAc;AACxC,OAAK,gBAAgB,QAAQ,iBAAiB;AAC9C,OAAK,UAAU,QAAQ;AACvB,OAAK,kBAAkB,QAAQ;CAC/B;CAED,UAA6B;AAC5B,SAAO,OAAOF,GAAYG,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,WAAW;AAE9C,QAAK,OAAO;AACX,QAAI,KAAK,QACR,QAAO,KAAK,QAAQ,GAAG,IAAI,MAAM,qBAAqB;AAEvD,WAAO,EAAE,KAAK,EAAE,OAAO,eAAgB,GAAE,IAAI;GAC7C;AAED,OAAI;IACH,MAAM,UAAU,MAAM,KAAK,SAAS,OAAO,MAAM;IAEjD,IAAIC;AACJ,QAAI,KAAK,eAAe;AACvB,gBAAY,MAAM,KAAK,SAAS,cAAc,MAAM;AACpD,OAAE,IAAI,gBAAgB,SAAS;IAC/B;IAED,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,SAAS,SAAS,GACvC;AAEH,MAAE,IAAI,KAAK,YAAY,OAAO;AAC9B,MAAE,IAAI,aAAa,MAAM;AAEzB,UAAM,MAAM;GACZ,SAAQ,OAAO;AACf,QAAI,KAAK,QACR,QAAO,KAAK,QAAQ,GAAG,MAAe;AAEvC,WAAO,EAAE,KAAK,EAAE,OAAO,gBAAiB,GAAE,IAAI;GAC9C;EACD;CACD;CAED,WAA8B;AAC7B,SAAO,OAAOJ,GAAYG,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,WAAW;AAE9C,OAAI,OAAO;IACV,MAAM,UAAU,MAAM,KAAK,SAAS,aAAa,MAAM;AACvD,QAAI,SAAS;KACZ,IAAIC;AACJ,SAAI,KAAK,eAAe;AACvB,iBAAY,MAAM,KAAK,SAAS,cAAc,MAAM;AACpD,QAAE,IAAI,gBAAgB,SAAS;KAC/B;KAED,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,SAAS,SAAS,GACvC;AAEH,OAAE,IAAI,KAAK,YAAY,OAAO;AAC9B,OAAE,IAAI,aAAa,MAAM;IACzB;GACD;AAED,SAAM,MAAM;EACZ;CACD;AACD"}
1
+ {"version":3,"file":"oidc.mjs","names":[],"sources":["../../src/hono/oidc.ts"],"sourcesContent":["import type { Context, MiddlewareHandler, Next } from 'hono';\nimport { readCookie } from '../cookies';\nimport {\n\ttype OidcClaims,\n\ttype OidcConfig,\n\ttype OidcUserInfo,\n\tOidcVerifier,\n\ttype TokenExtractionOptions,\n} from '../oidc';\n\nexport type {\n\tOidcVerifier,\n\tOidcClaims,\n\tOidcConfig,\n\tOidcUserInfo,\n\tTokenExtractionOptions,\n};\n\nfunction extractToken(\n\tc: Context,\n\toptions: TokenExtractionOptions = {},\n): string | null {\n\tconst {\n\t\theaderName = 'authorization',\n\t\tcookieName,\n\t\ttokenPrefix = 'Bearer ',\n\t} = options;\n\n\tconst headerValue = c.req.header(headerName);\n\tif (headerValue) {\n\t\tif (tokenPrefix && headerValue.startsWith(tokenPrefix)) {\n\t\t\treturn headerValue.slice(tokenPrefix.length);\n\t\t}\n\t\treturn headerValue;\n\t}\n\n\tif (cookieName) {\n\t\tconst cookie = readCookie(c.req.header('cookie'), cookieName);\n\t\tif (cookie) {\n\t\t\treturn cookie;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport interface OidcMiddlewareOptions<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tconfig: OidcConfig;\n\textraction?: TokenExtractionOptions;\n\tcontextKey?: string;\n\tfetchUserInfo?: boolean;\n\tonError?: (c: Context, error: Error) => Response | Promise<Response>;\n\ttransformClaims?: (claims: OidcClaims, userInfo?: TUserInfo) => TClaims;\n}\n\n/**\n * OIDC Middleware for Hono\n *\n * @example\n * ```typescript\n * const oidc = new OidcMiddleware({\n * config: {\n * issuer: 'https://auth.example.com',\n * audience: 'my-client-id',\n * },\n * });\n *\n * app.use('/api/*', oidc.handler());\n *\n * // With user info\n * const oidcWithUserInfo = new OidcMiddleware({\n * config: { issuer: '...', audience: '...' },\n * fetchUserInfo: true,\n * });\n * ```\n */\nexport class OidcMiddleware<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tprivate readonly verifier: OidcVerifier<TClaims, TUserInfo>;\n\tprivate readonly extraction: TokenExtractionOptions;\n\tprivate readonly contextKey: string;\n\tprivate readonly fetchUserInfo: boolean;\n\tprivate readonly onError?: (\n\t\tc: Context,\n\t\terror: Error,\n\t) => Response | Promise<Response>;\n\tprivate readonly transformClaims?: (\n\t\tclaims: OidcClaims,\n\t\tuserInfo?: TUserInfo,\n\t) => TClaims;\n\n\tconstructor(options: OidcMiddlewareOptions<TClaims, TUserInfo>) {\n\t\tthis.verifier = new OidcVerifier(options.config);\n\t\tthis.extraction = options.extraction ?? {};\n\t\tthis.contextKey = options.contextKey ?? 'oidcClaims';\n\t\tthis.fetchUserInfo = options.fetchUserInfo ?? false;\n\t\tthis.onError = options.onError;\n\t\tthis.transformClaims = options.transformClaims;\n\t}\n\n\thandler(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (!token) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, new Error('No token provided'));\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Unauthorized' }, 401);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst payload = await this.verifier.verify(token);\n\n\t\t\t\tlet userInfo: TUserInfo | undefined;\n\t\t\t\tif (this.fetchUserInfo) {\n\t\t\t\t\tuserInfo = (await this.verifier.fetchUserInfo(token)) ?? undefined;\n\t\t\t\t\tc.set('oidcUserInfo', userInfo);\n\t\t\t\t}\n\n\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t? this.transformClaims(payload, userInfo)\n\t\t\t\t\t: payload;\n\n\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\tc.set('oidcToken', token);\n\n\t\t\t\tawait next();\n\t\t\t} catch (error) {\n\t\t\t\tif (this.onError) {\n\t\t\t\t\treturn this.onError(c, error as Error);\n\t\t\t\t}\n\t\t\t\treturn c.json({ error: 'Invalid token' }, 401);\n\t\t\t}\n\t\t};\n\t}\n\n\toptional(): MiddlewareHandler {\n\t\treturn async (c: Context, next: Next) => {\n\t\t\tconst token = extractToken(c, this.extraction);\n\n\t\t\tif (token) {\n\t\t\t\tconst payload = await this.verifier.verifyOrNull(token);\n\t\t\t\tif (payload) {\n\t\t\t\t\tlet userInfo: TUserInfo | undefined;\n\t\t\t\t\tif (this.fetchUserInfo) {\n\t\t\t\t\t\tuserInfo = (await this.verifier.fetchUserInfo(token)) ?? undefined;\n\t\t\t\t\t\tc.set('oidcUserInfo', userInfo);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst claims = this.transformClaims\n\t\t\t\t\t\t? this.transformClaims(payload, userInfo)\n\t\t\t\t\t\t: payload;\n\n\t\t\t\t\tc.set(this.contextKey, claims);\n\t\t\t\t\tc.set('oidcToken', token);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait next();\n\t\t};\n\t}\n}\n"],"mappings":";;;AAkBA,SAAS,aACR,GACA,UAAkC,CAAC,GACnB;CAChB,MAAM,EACL,aAAa,iBACb,YACA,cAAc,cACX;CAEJ,MAAM,cAAc,EAAE,IAAI,OAAO,UAAU;CAC3C,IAAI,aAAa;EAChB,IAAI,eAAe,YAAY,WAAW,WAAW,GACpD,OAAO,YAAY,MAAM,YAAY,MAAM;EAE5C,OAAO;CACR;CAEA,IAAI,YAAY;EACf,MAAM,SAAS,WAAW,EAAE,IAAI,OAAO,QAAQ,GAAG,UAAU;EAC5D,IAAI,QACH,OAAO;CAET;CAEA,OAAO;AACR;;;;;;;;;;;;;;;;;;;;;;AAmCA,IAAa,iBAAb,MAGE;CACD;CACA;CACA;CACA;CACA;CAIA;CAKA,YAAY,SAAoD;EAC/D,KAAK,WAAW,IAAI,aAAa,QAAQ,MAAM;EAC/C,KAAK,aAAa,QAAQ,cAAc,CAAC;EACzC,KAAK,aAAa,QAAQ,cAAc;EACxC,KAAK,gBAAgB,QAAQ,iBAAiB;EAC9C,KAAK,UAAU,QAAQ;EACvB,KAAK,kBAAkB,QAAQ;CAChC;CAEA,UAA6B;EAC5B,OAAO,OAAO,GAAY,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,UAAU;GAE7C,IAAI,CAAC,OAAO;IACX,IAAI,KAAK,SACR,OAAO,KAAK,QAAQ,mBAAG,IAAI,MAAM,mBAAmB,CAAC;IAEtD,OAAO,EAAE,KAAK,EAAE,OAAO,eAAe,GAAG,GAAG;GAC7C;GAEA,IAAI;IACH,MAAM,UAAU,MAAM,KAAK,SAAS,OAAO,KAAK;IAEhD,IAAI;IACJ,IAAI,KAAK,eAAe;KACvB,WAAY,MAAM,KAAK,SAAS,cAAc,KAAK,KAAM,KAAA;KACzD,EAAE,IAAI,gBAAgB,QAAQ;IAC/B;IAEA,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,SAAS,QAAQ,IACtC;IAEH,EAAE,IAAI,KAAK,YAAY,MAAM;IAC7B,EAAE,IAAI,aAAa,KAAK;IAExB,MAAM,KAAK;GACZ,SAAS,OAAO;IACf,IAAI,KAAK,SACR,OAAO,KAAK,QAAQ,GAAG,KAAc;IAEtC,OAAO,EAAE,KAAK,EAAE,OAAO,gBAAgB,GAAG,GAAG;GAC9C;EACD;CACD;CAEA,WAA8B;EAC7B,OAAO,OAAO,GAAY,SAAe;GACxC,MAAM,QAAQ,aAAa,GAAG,KAAK,UAAU;GAE7C,IAAI,OAAO;IACV,MAAM,UAAU,MAAM,KAAK,SAAS,aAAa,KAAK;IACtD,IAAI,SAAS;KACZ,IAAI;KACJ,IAAI,KAAK,eAAe;MACvB,WAAY,MAAM,KAAK,SAAS,cAAc,KAAK,KAAM,KAAA;MACzD,EAAE,IAAI,gBAAgB,QAAQ;KAC/B;KAEA,MAAM,SAAS,KAAK,kBACjB,KAAK,gBAAgB,SAAS,QAAQ,IACtC;KAEH,EAAE,IAAI,KAAK,YAAY,MAAM;KAC7B,EAAE,IAAI,aAAa,KAAK;IACzB;GACD;GAEA,MAAM,KAAK;EACZ;CACD;AACD"}
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
- const require_cacheTokenStorage = require('./cacheTokenStorage-CEpMniTi.cjs');
2
- const require_client = require('./client-BPl_mMvb.cjs');
3
- const require_tokenManager = require('./tokenManager-PQ-OI_NU.cjs');
4
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_cacheTokenStorage = require("./cacheTokenStorage.cjs");
3
+ const require_client = require("./client.cjs");
4
+ const require_tokenManager = require("./tokenManager.cjs");
5
5
  exports.CacheTokenStorage = require_cacheTokenStorage.CacheTokenStorage;
6
6
  exports.LocalStorageTokenStorage = require_client.LocalStorageTokenStorage;
7
7
  exports.MemoryTokenStorage = require_client.MemoryTokenStorage;
8
8
  exports.TokenClient = require_client.TokenClient;
9
- exports.TokenManager = require_tokenManager.TokenManager;
9
+ exports.TokenManager = require_tokenManager.TokenManager;
package/dist/index.d.cts CHANGED
@@ -1,3 +1,3 @@
1
- import { CacheTokenStorage, LocalStorageTokenStorage, MemoryTokenStorage, TokenClient, TokenClientOptions, TokenStorage } from "./cacheTokenStorage-B7sOoysu.cjs";
2
- import { DecodedToken, TokenManager, TokenManagerOptions, TokenPair, TokenPayload } from "./tokenManager-CL3yE06D.cjs";
1
+ import { a as TokenClientOptions, i as TokenClient, n as LocalStorageTokenStorage, o as TokenStorage, r as MemoryTokenStorage, t as CacheTokenStorage } from "./cacheTokenStorage-B3u8Sf-6.cjs";
2
+ import { DecodedToken, TokenManager, TokenManagerOptions, TokenPair, TokenPayload } from "./tokenManager.cjs";
3
3
  export { CacheTokenStorage, DecodedToken, LocalStorageTokenStorage, MemoryTokenStorage, TokenClient, TokenClientOptions, TokenManager, TokenManagerOptions, TokenPair, TokenPayload, TokenStorage };
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { CacheTokenStorage, LocalStorageTokenStorage, MemoryTokenStorage, TokenClient, TokenClientOptions, TokenStorage } from "./cacheTokenStorage-DaqxdNxI.mjs";
2
- import { DecodedToken, TokenManager, TokenManagerOptions, TokenPair, TokenPayload } from "./tokenManager-CosB7J0i.mjs";
1
+ import { a as TokenClientOptions, i as TokenClient, n as LocalStorageTokenStorage, o as TokenStorage, r as MemoryTokenStorage, t as CacheTokenStorage } from "./cacheTokenStorage-B3u8Sf-6.mjs";
2
+ import { DecodedToken, TokenManager, TokenManagerOptions, TokenPair, TokenPayload } from "./tokenManager.mjs";
3
3
  export { CacheTokenStorage, DecodedToken, LocalStorageTokenStorage, MemoryTokenStorage, TokenClient, TokenClientOptions, TokenManager, TokenManagerOptions, TokenPair, TokenPayload, TokenStorage };
package/dist/index.mjs CHANGED
@@ -1,5 +1,4 @@
1
- import { CacheTokenStorage } from "./cacheTokenStorage-16NE8Cd9.mjs";
2
- import { LocalStorageTokenStorage, MemoryTokenStorage, TokenClient } from "./client-eidYNJSH.mjs";
3
- import { TokenManager } from "./tokenManager-BbylTW7F.mjs";
4
-
5
- export { CacheTokenStorage, LocalStorageTokenStorage, MemoryTokenStorage, TokenClient, TokenManager };
1
+ import { CacheTokenStorage } from "./cacheTokenStorage.mjs";
2
+ import { LocalStorageTokenStorage, MemoryTokenStorage, TokenClient } from "./client.mjs";
3
+ import { TokenManager } from "./tokenManager.mjs";
4
+ export { CacheTokenStorage, LocalStorageTokenStorage, MemoryTokenStorage, TokenClient, TokenManager };
@@ -56,7 +56,6 @@ declare class JwtVerifier<TClaims extends JwtClaims = JwtClaims> {
56
56
  * WARNING: This does NOT verify the token signature!
57
57
  */
58
58
  declare function decodeJwt<TClaims extends JwtClaims = JwtClaims>(token: string): TClaims;
59
- //# sourceMappingURL=jwt.d.ts.map
60
59
  //#endregion
61
- export { JwtClaims, JwtConfig, JwtJwksConfig, JwtSecretConfig, JwtVerifier, TokenExtractionOptions, decodeJwt, isJwksConfig };
62
- //# sourceMappingURL=jwt-kejix7rd.d.mts.map
60
+ export { JwtVerifier as a, isJwksConfig as c, JwtSecretConfig as i, JwtConfig as n, TokenExtractionOptions as o, JwtJwksConfig as r, decodeJwt as s, JwtClaims as t };
61
+ //# sourceMappingURL=jwt-CoKrpeMB.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-CoKrpeMB.d.cts","names":[],"sources":["../src/jwt.ts"],"mappings":";;;;UAKiB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;;;;UAMgB;EAChB;EACA;EACA;EACA;;;;;UAMgB;EAChB;EACA;EACA;EACA;;KAGW,YAAY,kBAAkB;;;;UAKzB;EAChB;EACA;EACA;;iBAGe,aAAa,QAAQ,YAAY,UAAU;;;;cAO9C,YAAY,gBAAgB,YAAY;mBAIvB;UAHrB;mBACS;EAEjB,YAA6B,QAAQ;EAS/B,OAAO,gBAAgB,QAAQ;EAkB/B,aAAa,gBAAgB,QAAQ;EAQ3C;;;;;;iBASe,UAAU,gBAAgB,YAAY,WACrD,gBACE"}
@@ -56,7 +56,6 @@ declare class JwtVerifier<TClaims extends JwtClaims = JwtClaims> {
56
56
  * WARNING: This does NOT verify the token signature!
57
57
  */
58
58
  declare function decodeJwt<TClaims extends JwtClaims = JwtClaims>(token: string): TClaims;
59
- //# sourceMappingURL=jwt.d.ts.map
60
59
  //#endregion
61
- export { JwtClaims, JwtConfig, JwtJwksConfig, JwtSecretConfig, JwtVerifier, TokenExtractionOptions, decodeJwt, isJwksConfig };
62
- //# sourceMappingURL=jwt-3eIuY2dg.d.cts.map
60
+ export { JwtVerifier as a, isJwksConfig as c, JwtSecretConfig as i, JwtConfig as n, TokenExtractionOptions as o, JwtJwksConfig as r, decodeJwt as s, JwtClaims as t };
61
+ //# sourceMappingURL=jwt-CoKrpeMB.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-CoKrpeMB.d.mts","names":[],"sources":["../src/jwt.ts"],"mappings":";;;;UAKiB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;;;;;UAMgB;EAChB;EACA;EACA;EACA;;;;;UAMgB;EAChB;EACA;EACA;EACA;;KAGW,YAAY,kBAAkB;;;;UAKzB;EAChB;EACA;EACA;;iBAGe,aAAa,QAAQ,YAAY,UAAU;;;;cAO9C,YAAY,gBAAgB,YAAY;mBAIvB;UAHrB;mBACS;EAEjB,YAA6B,QAAQ;EAS/B,OAAO,gBAAgB,QAAQ;EAkB/B,aAAa,gBAAgB,QAAQ;EAQ3C;;;;;;iBASe,UAAU,gBAAgB,YAAY,WACrD,gBACE"}
package/dist/jwt.cjs CHANGED
@@ -1,5 +1,57 @@
1
- const require_jwt = require('./jwt-clq6I6vG.cjs');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_rolldown_runtime = require("./rolldown-runtime-VH7oDXx4.cjs");
3
+ let jose = require("jose");
4
+ jose = require_rolldown_runtime.__toESM(jose, 1);
5
+ //#region src/jwt.ts
6
+ function isJwksConfig(config) {
7
+ return "jwksUri" in config;
8
+ }
9
+ /**
10
+ * JWT Verifier with JWKS caching
11
+ */
12
+ var JwtVerifier = class {
13
+ config;
14
+ jwks = null;
15
+ verifyOptions;
16
+ constructor(config) {
17
+ this.config = config;
18
+ this.verifyOptions = {
19
+ issuer: config.issuer,
20
+ audience: config.audience,
21
+ algorithms: config.algorithms ?? (isJwksConfig(config) ? void 0 : ["HS256"])
22
+ };
23
+ }
24
+ async verify(token) {
25
+ if (isJwksConfig(this.config)) {
26
+ if (!this.jwks) this.jwks = jose.createRemoteJWKSet(new URL(this.config.jwksUri));
27
+ const { payload } = await jose.jwtVerify(token, this.jwks, this.verifyOptions);
28
+ return payload;
29
+ }
30
+ const secret = new TextEncoder().encode(this.config.secret);
31
+ const { payload } = await jose.jwtVerify(token, secret, this.verifyOptions);
32
+ return payload;
33
+ }
34
+ async verifyOrNull(token) {
35
+ try {
36
+ return await this.verify(token);
37
+ } catch {
38
+ return null;
39
+ }
40
+ }
41
+ clearCache() {
42
+ this.jwks = null;
43
+ }
44
+ };
45
+ /**
46
+ * Decode a JWT without verification
47
+ * WARNING: This does NOT verify the token signature!
48
+ */
49
+ function decodeJwt(token) {
50
+ return jose.decodeJwt(token);
51
+ }
52
+ //#endregion
53
+ exports.JwtVerifier = JwtVerifier;
54
+ exports.decodeJwt = decodeJwt;
55
+ exports.isJwksConfig = isJwksConfig;
2
56
 
3
- exports.JwtVerifier = require_jwt.JwtVerifier;
4
- exports.decodeJwt = require_jwt.decodeJwt;
5
- exports.isJwksConfig = require_jwt.isJwksConfig;
57
+ //# sourceMappingURL=jwt.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.cjs","names":[],"sources":["../src/jwt.ts"],"sourcesContent":["import * as jose from 'jose';\n\n/**\n * Standard JWT claims\n */\nexport interface JwtClaims {\n\tsub?: string;\n\tiss?: string;\n\taud?: string | string[];\n\texp?: number;\n\tiat?: number;\n\tnbf?: number;\n\tjti?: string;\n}\n\n/**\n * Configuration for JWT verification with a symmetric secret\n */\nexport interface JwtSecretConfig {\n\tsecret: string;\n\tissuer?: string;\n\taudience?: string | string[];\n\talgorithms?: string[];\n}\n\n/**\n * Configuration for JWT verification with JWKS\n */\nexport interface JwtJwksConfig {\n\tjwksUri: string;\n\tissuer?: string;\n\taudience?: string | string[];\n\talgorithms?: string[];\n}\n\nexport type JwtConfig = JwtSecretConfig | JwtJwksConfig;\n\n/**\n * Options for token extraction from requests\n */\nexport interface TokenExtractionOptions {\n\theaderName?: string;\n\tcookieName?: string;\n\ttokenPrefix?: string;\n}\n\nexport function isJwksConfig(config: JwtConfig): config is JwtJwksConfig {\n\treturn 'jwksUri' in config;\n}\n\n/**\n * JWT Verifier with JWKS caching\n */\nexport class JwtVerifier<TClaims extends JwtClaims = JwtClaims> {\n\tprivate jwks: jose.JWTVerifyGetKey | null = null;\n\tprivate readonly verifyOptions: jose.JWTVerifyOptions;\n\n\tconstructor(private readonly config: JwtConfig) {\n\t\tthis.verifyOptions = {\n\t\t\tissuer: config.issuer,\n\t\t\taudience: config.audience,\n\t\t\talgorithms:\n\t\t\t\tconfig.algorithms ?? (isJwksConfig(config) ? undefined : ['HS256']),\n\t\t};\n\t}\n\n\tasync verify(token: string): Promise<TClaims> {\n\t\tif (isJwksConfig(this.config)) {\n\t\t\tif (!this.jwks) {\n\t\t\t\tthis.jwks = jose.createRemoteJWKSet(new URL(this.config.jwksUri));\n\t\t\t}\n\t\t\tconst { payload } = await jose.jwtVerify(\n\t\t\t\ttoken,\n\t\t\t\tthis.jwks,\n\t\t\t\tthis.verifyOptions,\n\t\t\t);\n\t\t\treturn payload as unknown as TClaims;\n\t\t}\n\n\t\tconst secret = new TextEncoder().encode(this.config.secret);\n\t\tconst { payload } = await jose.jwtVerify(token, secret, this.verifyOptions);\n\t\treturn payload as unknown as TClaims;\n\t}\n\n\tasync verifyOrNull(token: string): Promise<TClaims | null> {\n\t\ttry {\n\t\t\treturn await this.verify(token);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tclearCache(): void {\n\t\tthis.jwks = null;\n\t}\n}\n\n/**\n * Decode a JWT without verification\n * WARNING: This does NOT verify the token signature!\n */\nexport function decodeJwt<TClaims extends JwtClaims = JwtClaims>(\n\ttoken: string,\n): TClaims {\n\treturn jose.decodeJwt(token) as unknown as TClaims;\n}\n"],"mappings":";;;;;AA8CA,SAAgB,aAAa,QAA4C;CACxE,OAAO,aAAa;AACrB;;;;AAKA,IAAa,cAAb,MAAgE;CAIlC;CAH7B,OAA4C;CAC5C;CAEA,YAAY,QAAoC;EAAnB,KAAA,SAAA;EAC5B,KAAK,gBAAgB;GACpB,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YACC,OAAO,eAAe,aAAa,MAAM,IAAI,KAAA,IAAY,CAAC,OAAO;EACnE;CACD;CAEA,MAAM,OAAO,OAAiC;EAC7C,IAAI,aAAa,KAAK,MAAM,GAAG;GAC9B,IAAI,CAAC,KAAK,MACT,KAAK,OAAO,KAAK,mBAAmB,IAAI,IAAI,KAAK,OAAO,OAAO,CAAC;GAEjE,MAAM,EAAE,YAAY,MAAM,KAAK,UAC9B,OACA,KAAK,MACL,KAAK,aACN;GACA,OAAO;EACR;EAEA,MAAM,SAAS,IAAI,YAAY,CAAC,CAAC,OAAO,KAAK,OAAO,MAAM;EAC1D,MAAM,EAAE,YAAY,MAAM,KAAK,UAAU,OAAO,QAAQ,KAAK,aAAa;EAC1E,OAAO;CACR;CAEA,MAAM,aAAa,OAAwC;EAC1D,IAAI;GACH,OAAO,MAAM,KAAK,OAAO,KAAK;EAC/B,QAAQ;GACP,OAAO;EACR;CACD;CAEA,aAAmB;EAClB,KAAK,OAAO;CACb;AACD;;;;;AAMA,SAAgB,UACf,OACU;CACV,OAAO,KAAK,UAAU,KAAK;AAC5B"}
package/dist/jwt.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { JwtClaims, JwtConfig, JwtJwksConfig, JwtSecretConfig, JwtVerifier, TokenExtractionOptions, decodeJwt, isJwksConfig } from "./jwt-3eIuY2dg.cjs";
1
+ import { a as JwtVerifier, c as isJwksConfig, i as JwtSecretConfig, n as JwtConfig, o as TokenExtractionOptions, r as JwtJwksConfig, s as decodeJwt, t as JwtClaims } from "./jwt-CoKrpeMB.cjs";
2
2
  export { JwtClaims, JwtConfig, JwtJwksConfig, JwtSecretConfig, JwtVerifier, TokenExtractionOptions, decodeJwt, isJwksConfig };
package/dist/jwt.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { JwtClaims, JwtConfig, JwtJwksConfig, JwtSecretConfig, JwtVerifier, TokenExtractionOptions, decodeJwt, isJwksConfig } from "./jwt-kejix7rd.mjs";
1
+ import { a as JwtVerifier, c as isJwksConfig, i as JwtSecretConfig, n as JwtConfig, o as TokenExtractionOptions, r as JwtJwksConfig, s as decodeJwt, t as JwtClaims } from "./jwt-CoKrpeMB.mjs";
2
2
  export { JwtClaims, JwtConfig, JwtJwksConfig, JwtSecretConfig, JwtVerifier, TokenExtractionOptions, decodeJwt, isJwksConfig };
package/dist/jwt.mjs CHANGED
@@ -1,3 +1,52 @@
1
- import { JwtVerifier, decodeJwt, isJwksConfig } from "./jwt-bZR2_t8F.mjs";
1
+ import * as jose from "jose";
2
+ //#region src/jwt.ts
3
+ function isJwksConfig(config) {
4
+ return "jwksUri" in config;
5
+ }
6
+ /**
7
+ * JWT Verifier with JWKS caching
8
+ */
9
+ var JwtVerifier = class {
10
+ config;
11
+ jwks = null;
12
+ verifyOptions;
13
+ constructor(config) {
14
+ this.config = config;
15
+ this.verifyOptions = {
16
+ issuer: config.issuer,
17
+ audience: config.audience,
18
+ algorithms: config.algorithms ?? (isJwksConfig(config) ? void 0 : ["HS256"])
19
+ };
20
+ }
21
+ async verify(token) {
22
+ if (isJwksConfig(this.config)) {
23
+ if (!this.jwks) this.jwks = jose.createRemoteJWKSet(new URL(this.config.jwksUri));
24
+ const { payload } = await jose.jwtVerify(token, this.jwks, this.verifyOptions);
25
+ return payload;
26
+ }
27
+ const secret = new TextEncoder().encode(this.config.secret);
28
+ const { payload } = await jose.jwtVerify(token, secret, this.verifyOptions);
29
+ return payload;
30
+ }
31
+ async verifyOrNull(token) {
32
+ try {
33
+ return await this.verify(token);
34
+ } catch {
35
+ return null;
36
+ }
37
+ }
38
+ clearCache() {
39
+ this.jwks = null;
40
+ }
41
+ };
42
+ /**
43
+ * Decode a JWT without verification
44
+ * WARNING: This does NOT verify the token signature!
45
+ */
46
+ function decodeJwt(token) {
47
+ return jose.decodeJwt(token);
48
+ }
49
+ //#endregion
50
+ export { JwtVerifier, decodeJwt, isJwksConfig };
2
51
 
3
- export { JwtVerifier, decodeJwt, isJwksConfig };
52
+ //# sourceMappingURL=jwt.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.mjs","names":[],"sources":["../src/jwt.ts"],"sourcesContent":["import * as jose from 'jose';\n\n/**\n * Standard JWT claims\n */\nexport interface JwtClaims {\n\tsub?: string;\n\tiss?: string;\n\taud?: string | string[];\n\texp?: number;\n\tiat?: number;\n\tnbf?: number;\n\tjti?: string;\n}\n\n/**\n * Configuration for JWT verification with a symmetric secret\n */\nexport interface JwtSecretConfig {\n\tsecret: string;\n\tissuer?: string;\n\taudience?: string | string[];\n\talgorithms?: string[];\n}\n\n/**\n * Configuration for JWT verification with JWKS\n */\nexport interface JwtJwksConfig {\n\tjwksUri: string;\n\tissuer?: string;\n\taudience?: string | string[];\n\talgorithms?: string[];\n}\n\nexport type JwtConfig = JwtSecretConfig | JwtJwksConfig;\n\n/**\n * Options for token extraction from requests\n */\nexport interface TokenExtractionOptions {\n\theaderName?: string;\n\tcookieName?: string;\n\ttokenPrefix?: string;\n}\n\nexport function isJwksConfig(config: JwtConfig): config is JwtJwksConfig {\n\treturn 'jwksUri' in config;\n}\n\n/**\n * JWT Verifier with JWKS caching\n */\nexport class JwtVerifier<TClaims extends JwtClaims = JwtClaims> {\n\tprivate jwks: jose.JWTVerifyGetKey | null = null;\n\tprivate readonly verifyOptions: jose.JWTVerifyOptions;\n\n\tconstructor(private readonly config: JwtConfig) {\n\t\tthis.verifyOptions = {\n\t\t\tissuer: config.issuer,\n\t\t\taudience: config.audience,\n\t\t\talgorithms:\n\t\t\t\tconfig.algorithms ?? (isJwksConfig(config) ? undefined : ['HS256']),\n\t\t};\n\t}\n\n\tasync verify(token: string): Promise<TClaims> {\n\t\tif (isJwksConfig(this.config)) {\n\t\t\tif (!this.jwks) {\n\t\t\t\tthis.jwks = jose.createRemoteJWKSet(new URL(this.config.jwksUri));\n\t\t\t}\n\t\t\tconst { payload } = await jose.jwtVerify(\n\t\t\t\ttoken,\n\t\t\t\tthis.jwks,\n\t\t\t\tthis.verifyOptions,\n\t\t\t);\n\t\t\treturn payload as unknown as TClaims;\n\t\t}\n\n\t\tconst secret = new TextEncoder().encode(this.config.secret);\n\t\tconst { payload } = await jose.jwtVerify(token, secret, this.verifyOptions);\n\t\treturn payload as unknown as TClaims;\n\t}\n\n\tasync verifyOrNull(token: string): Promise<TClaims | null> {\n\t\ttry {\n\t\t\treturn await this.verify(token);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tclearCache(): void {\n\t\tthis.jwks = null;\n\t}\n}\n\n/**\n * Decode a JWT without verification\n * WARNING: This does NOT verify the token signature!\n */\nexport function decodeJwt<TClaims extends JwtClaims = JwtClaims>(\n\ttoken: string,\n): TClaims {\n\treturn jose.decodeJwt(token) as unknown as TClaims;\n}\n"],"mappings":";;AA8CA,SAAgB,aAAa,QAA4C;CACxE,OAAO,aAAa;AACrB;;;;AAKA,IAAa,cAAb,MAAgE;CAIlC;CAH7B,OAA4C;CAC5C;CAEA,YAAY,QAAoC;EAAnB,KAAA,SAAA;EAC5B,KAAK,gBAAgB;GACpB,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YACC,OAAO,eAAe,aAAa,MAAM,IAAI,KAAA,IAAY,CAAC,OAAO;EACnE;CACD;CAEA,MAAM,OAAO,OAAiC;EAC7C,IAAI,aAAa,KAAK,MAAM,GAAG;GAC9B,IAAI,CAAC,KAAK,MACT,KAAK,OAAO,KAAK,mBAAmB,IAAI,IAAI,KAAK,OAAO,OAAO,CAAC;GAEjE,MAAM,EAAE,YAAY,MAAM,KAAK,UAC9B,OACA,KAAK,MACL,KAAK,aACN;GACA,OAAO;EACR;EAEA,MAAM,SAAS,IAAI,YAAY,CAAC,CAAC,OAAO,KAAK,OAAO,MAAM;EAC1D,MAAM,EAAE,YAAY,MAAM,KAAK,UAAU,OAAO,QAAQ,KAAK,aAAa;EAC1E,OAAO;CACR;CAEA,MAAM,aAAa,OAAwC;EAC1D,IAAI;GACH,OAAO,MAAM,KAAK,OAAO,KAAK;EAC/B,QAAQ;GACP,OAAO;EACR;CACD;CAEA,aAAmB;EAClB,KAAK,OAAO;CACb;AACD;;;;;AAMA,SAAgB,UACf,OACU;CACV,OAAO,KAAK,UAAU,KAAK;AAC5B"}