@_mustachio/openauth 0.9.2 → 0.11.0

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 (756) hide show
  1. package/dist/esm/adapters/d1/audit-log.js +15 -0
  2. package/dist/esm/adapters/d1/config-store.js +45 -0
  3. package/dist/esm/adapters/d1/index.js +12 -0
  4. package/dist/esm/adapters/d1/key-store.js +116 -0
  5. package/dist/esm/adapters/d1/method-store.js +52 -0
  6. package/dist/esm/adapters/d1/migrations.js +77 -0
  7. package/dist/esm/adapters/d1/session-store.js +134 -0
  8. package/dist/esm/adapters/d1/session.js +18 -0
  9. package/dist/esm/adapters/d1/token-store.js +140 -0
  10. package/dist/esm/adapters/durable-object/index.js +3 -0
  11. package/dist/esm/adapters/durable-object/session-store.js +139 -0
  12. package/dist/esm/adapters/durable-object/types.js +0 -0
  13. package/dist/esm/adapters/dynamo/audit-log.js +23 -0
  14. package/dist/esm/adapters/dynamo/client.js +0 -0
  15. package/dist/esm/adapters/dynamo/config-store.js +57 -0
  16. package/dist/esm/adapters/dynamo/index.js +10 -0
  17. package/dist/esm/adapters/dynamo/key-store.js +188 -0
  18. package/dist/esm/adapters/dynamo/method-store.js +72 -0
  19. package/dist/esm/adapters/dynamo/passkey-credential-store.js +83 -0
  20. package/dist/esm/adapters/dynamo/sdk.js +128 -0
  21. package/dist/esm/adapters/dynamo/session-store.js +173 -0
  22. package/dist/esm/adapters/dynamo/token-store.js +178 -0
  23. package/dist/esm/adapters/kms/in-memory-backing.js +28 -0
  24. package/dist/esm/adapters/kms/index.js +5 -0
  25. package/dist/esm/adapters/kms/key-store.js +129 -0
  26. package/dist/esm/adapters/kms/sdk.js +23 -0
  27. package/dist/esm/adapters/kms/types.js +0 -0
  28. package/dist/esm/adapters/kv/audit-log.js +21 -0
  29. package/dist/esm/adapters/kv/config-store.js +43 -0
  30. package/dist/esm/adapters/kv/index.js +5 -0
  31. package/dist/esm/adapters/kv/method-store.js +63 -0
  32. package/dist/esm/adapters/kv/types.js +0 -0
  33. package/dist/esm/adapters/memory/audit-log.js +16 -0
  34. package/dist/esm/adapters/memory/clock.js +5 -0
  35. package/dist/esm/adapters/memory/config-store.js +31 -0
  36. package/dist/esm/adapters/memory/index.js +10 -0
  37. package/dist/esm/adapters/memory/key-store.js +78 -0
  38. package/dist/esm/adapters/memory/method-store.js +43 -0
  39. package/dist/esm/adapters/memory/passkey-credential-store.js +53 -0
  40. package/dist/esm/adapters/memory/session-store.js +104 -0
  41. package/dist/esm/adapters/memory/token-store.js +104 -0
  42. package/dist/esm/adapters/postgres/audit-log.js +16 -0
  43. package/dist/esm/adapters/postgres/config-store.js +48 -0
  44. package/dist/esm/adapters/postgres/executor.js +21 -0
  45. package/dist/esm/adapters/postgres/index.js +13 -0
  46. package/dist/esm/adapters/postgres/key-store.js +191 -0
  47. package/dist/esm/adapters/postgres/method-store.js +61 -0
  48. package/dist/esm/adapters/postgres/migrations.js +111 -0
  49. package/dist/esm/adapters/postgres/passkey-credential-store.js +80 -0
  50. package/dist/esm/adapters/postgres/session-store.js +135 -0
  51. package/dist/esm/adapters/postgres/token-store.js +151 -0
  52. package/dist/esm/client.js +35 -12
  53. package/dist/esm/domain/audit.js +13 -0
  54. package/dist/esm/domain/authorize.js +217 -0
  55. package/dist/esm/domain/callback.js +176 -0
  56. package/dist/esm/domain/client-auth.js +61 -0
  57. package/dist/esm/domain/client-credentials.js +91 -0
  58. package/dist/esm/domain/crypto.js +97 -0
  59. package/dist/esm/domain/discovery.js +83 -0
  60. package/dist/esm/domain/dpop.js +122 -0
  61. package/dist/esm/domain/id-token.js +94 -0
  62. package/dist/esm/domain/introspect.js +55 -0
  63. package/dist/esm/domain/jwt.js +71 -0
  64. package/dist/esm/domain/logout.js +75 -0
  65. package/dist/esm/domain/method-cache.js +136 -0
  66. package/dist/esm/domain/method-dispatch.js +36 -0
  67. package/dist/esm/domain/method-route.js +111 -0
  68. package/dist/esm/domain/par.js +51 -0
  69. package/dist/esm/domain/pkce.js +16 -0
  70. package/dist/esm/domain/refresh.js +102 -0
  71. package/dist/esm/domain/register.js +74 -0
  72. package/dist/esm/domain/revoke.js +81 -0
  73. package/dist/esm/domain/state-envelope.js +80 -0
  74. package/dist/esm/domain/token-exchange.js +102 -0
  75. package/dist/esm/domain/token.js +246 -0
  76. package/dist/esm/domain/userinfo.js +62 -0
  77. package/dist/esm/http/context.js +7 -0
  78. package/dist/esm/http/cookies.js +98 -0
  79. package/dist/esm/http/errors.js +71 -0
  80. package/dist/esm/http/handlers/authorize.js +250 -0
  81. package/dist/esm/http/handlers/callback.js +53 -0
  82. package/dist/esm/http/handlers/end-session.js +64 -0
  83. package/dist/esm/http/handlers/metadata.js +37 -0
  84. package/dist/esm/http/handlers/method-route.js +87 -0
  85. package/dist/esm/http/handlers/par.js +53 -0
  86. package/dist/esm/http/handlers/register.js +46 -0
  87. package/dist/esm/http/handlers/revocation.js +98 -0
  88. package/dist/esm/http/handlers/token.js +197 -0
  89. package/dist/esm/http/handlers/userinfo.js +60 -0
  90. package/dist/esm/http/middleware/error.js +15 -0
  91. package/dist/esm/http/middleware/tenant.js +102 -0
  92. package/dist/esm/http/resolver.js +15 -0
  93. package/dist/esm/http/router.js +45 -0
  94. package/dist/esm/http/schemas/authorize.js +30 -0
  95. package/dist/esm/http/schemas/end-session.js +13 -0
  96. package/dist/esm/http/schemas/par.js +9 -0
  97. package/dist/esm/http/schemas/register.js +16 -0
  98. package/dist/esm/http/schemas/revocation.js +18 -0
  99. package/dist/esm/http/schemas/token.js +57 -0
  100. package/dist/esm/index.js +126 -9
  101. package/dist/esm/methods/code.js +221 -0
  102. package/dist/esm/methods/m2m.js +41 -0
  103. package/dist/esm/methods/oauth2-factory.js +84 -0
  104. package/dist/esm/methods/oauth2-generic.js +196 -0
  105. package/dist/esm/methods/oidc-generic.js +53 -0
  106. package/dist/esm/methods/passkey.js +275 -0
  107. package/dist/esm/methods/password-hash.js +79 -0
  108. package/dist/esm/methods/password.js +166 -0
  109. package/dist/esm/methods/providers/apple.js +29 -0
  110. package/dist/esm/methods/providers/cognito.js +37 -0
  111. package/dist/esm/methods/providers/discord.js +28 -0
  112. package/dist/esm/methods/providers/facebook.js +42 -0
  113. package/dist/esm/methods/providers/github.js +29 -0
  114. package/dist/esm/methods/providers/google.js +29 -0
  115. package/dist/esm/methods/providers/index.js +17 -0
  116. package/dist/esm/methods/providers/jumpcloud.js +27 -0
  117. package/dist/esm/methods/providers/keycloak.js +32 -0
  118. package/dist/esm/methods/providers/linkedin.js +28 -0
  119. package/dist/esm/methods/providers/microsoft.js +28 -0
  120. package/dist/esm/methods/providers/slack.js +30 -0
  121. package/dist/esm/methods/providers/spotify.js +28 -0
  122. package/dist/esm/methods/providers/twitch.js +28 -0
  123. package/dist/esm/methods/providers/x.js +28 -0
  124. package/dist/esm/methods/providers/yahoo.js +27 -0
  125. package/dist/esm/pkce.js +4 -16
  126. package/dist/esm/ports/audit-log.js +0 -0
  127. package/dist/esm/ports/config-store.js +0 -0
  128. package/dist/esm/ports/key-store.js +0 -0
  129. package/dist/esm/ports/method-store.js +0 -0
  130. package/dist/esm/ports/session-store.js +0 -0
  131. package/dist/esm/ports/token-store.js +0 -0
  132. package/dist/esm/types/authorization.js +0 -0
  133. package/dist/esm/types/error.js +70 -0
  134. package/dist/esm/types/flow.js +0 -0
  135. package/dist/esm/types/idp.js +0 -0
  136. package/dist/esm/types/method.js +0 -0
  137. package/dist/esm/types/picker.js +0 -0
  138. package/dist/esm/types/result.js +11 -0
  139. package/dist/esm/types/subject.js +0 -0
  140. package/dist/esm/types/tenant.js +5 -0
  141. package/dist/esm/types/token.js +0 -0
  142. package/dist/esm/ui/forms.js +253 -0
  143. package/dist/esm/ui/index.js +8 -0
  144. package/dist/esm/ui/picker.js +49 -0
  145. package/dist/types/adapters/d1/audit-log.d.ts +19 -0
  146. package/dist/types/adapters/d1/audit-log.d.ts.map +1 -0
  147. package/dist/types/adapters/d1/config-store.d.ts +20 -0
  148. package/dist/types/adapters/d1/config-store.d.ts.map +1 -0
  149. package/dist/types/adapters/d1/index.d.ts +35 -0
  150. package/dist/types/adapters/d1/index.d.ts.map +1 -0
  151. package/dist/types/adapters/d1/key-store.d.ts +17 -0
  152. package/dist/types/adapters/d1/key-store.d.ts.map +1 -0
  153. package/dist/types/adapters/d1/method-store.d.ts +21 -0
  154. package/dist/types/adapters/d1/method-store.d.ts.map +1 -0
  155. package/dist/types/adapters/d1/migrations.d.ts +18 -0
  156. package/dist/types/adapters/d1/migrations.d.ts.map +1 -0
  157. package/dist/types/adapters/d1/session-store.d.ts +20 -0
  158. package/dist/types/adapters/d1/session-store.d.ts.map +1 -0
  159. package/dist/types/adapters/d1/session.d.ts +18 -0
  160. package/dist/types/adapters/d1/session.d.ts.map +1 -0
  161. package/dist/types/adapters/d1/token-store.d.ts +29 -0
  162. package/dist/types/adapters/d1/token-store.d.ts.map +1 -0
  163. package/dist/types/adapters/d1/types.d.ts +43 -0
  164. package/dist/types/adapters/d1/types.d.ts.map +1 -0
  165. package/dist/types/adapters/durable-object/index.d.ts +17 -0
  166. package/dist/types/adapters/durable-object/index.d.ts.map +1 -0
  167. package/dist/types/adapters/durable-object/session-store.d.ts +21 -0
  168. package/dist/types/adapters/durable-object/session-store.d.ts.map +1 -0
  169. package/dist/types/adapters/durable-object/types.d.ts +23 -0
  170. package/dist/types/adapters/durable-object/types.d.ts.map +1 -0
  171. package/dist/types/adapters/dynamo/audit-log.d.ts +19 -0
  172. package/dist/types/adapters/dynamo/audit-log.d.ts.map +1 -0
  173. package/dist/types/adapters/dynamo/client.d.ts +111 -0
  174. package/dist/types/adapters/dynamo/client.d.ts.map +1 -0
  175. package/dist/types/adapters/dynamo/config-store.d.ts +21 -0
  176. package/dist/types/adapters/dynamo/config-store.d.ts.map +1 -0
  177. package/dist/types/adapters/dynamo/index.d.ts +60 -0
  178. package/dist/types/adapters/dynamo/index.d.ts.map +1 -0
  179. package/dist/types/adapters/dynamo/key-store.d.ts +23 -0
  180. package/dist/types/adapters/dynamo/key-store.d.ts.map +1 -0
  181. package/dist/types/adapters/dynamo/method-store.d.ts +20 -0
  182. package/dist/types/adapters/dynamo/method-store.d.ts.map +1 -0
  183. package/dist/types/adapters/dynamo/passkey-credential-store.d.ts +47 -0
  184. package/dist/types/adapters/dynamo/passkey-credential-store.d.ts.map +1 -0
  185. package/dist/types/adapters/dynamo/sdk.d.ts +23 -0
  186. package/dist/types/adapters/dynamo/sdk.d.ts.map +1 -0
  187. package/dist/types/adapters/dynamo/session-store.d.ts +20 -0
  188. package/dist/types/adapters/dynamo/session-store.d.ts.map +1 -0
  189. package/dist/types/adapters/dynamo/token-store.d.ts +29 -0
  190. package/dist/types/adapters/dynamo/token-store.d.ts.map +1 -0
  191. package/dist/types/adapters/kms/in-memory-backing.d.ts +9 -0
  192. package/dist/types/adapters/kms/in-memory-backing.d.ts.map +1 -0
  193. package/dist/types/adapters/kms/index.d.ts +35 -0
  194. package/dist/types/adapters/kms/index.d.ts.map +1 -0
  195. package/dist/types/adapters/kms/key-store.d.ts +20 -0
  196. package/dist/types/adapters/kms/key-store.d.ts.map +1 -0
  197. package/dist/types/adapters/kms/sdk.d.ts +16 -0
  198. package/dist/types/adapters/kms/sdk.d.ts.map +1 -0
  199. package/dist/types/adapters/kms/types.d.ts +58 -0
  200. package/dist/types/adapters/kms/types.d.ts.map +1 -0
  201. package/dist/types/adapters/kv/audit-log.d.ts +22 -0
  202. package/dist/types/adapters/kv/audit-log.d.ts.map +1 -0
  203. package/dist/types/adapters/kv/config-store.d.ts +25 -0
  204. package/dist/types/adapters/kv/config-store.d.ts.map +1 -0
  205. package/dist/types/adapters/kv/index.d.ts +21 -0
  206. package/dist/types/adapters/kv/index.d.ts.map +1 -0
  207. package/dist/types/adapters/kv/method-store.d.ts +23 -0
  208. package/dist/types/adapters/kv/method-store.d.ts.map +1 -0
  209. package/dist/types/adapters/kv/types.d.ts +28 -0
  210. package/dist/types/adapters/kv/types.d.ts.map +1 -0
  211. package/dist/types/adapters/memory/audit-log.d.ts +18 -0
  212. package/dist/types/adapters/memory/audit-log.d.ts.map +1 -0
  213. package/dist/types/adapters/memory/clock.d.ts +7 -0
  214. package/dist/types/adapters/memory/clock.d.ts.map +1 -0
  215. package/dist/types/adapters/memory/config-store.d.ts +19 -0
  216. package/dist/types/adapters/memory/config-store.d.ts.map +1 -0
  217. package/dist/types/adapters/memory/index.d.ts +15 -0
  218. package/dist/types/adapters/memory/index.d.ts.map +1 -0
  219. package/dist/types/adapters/memory/key-store.d.ts +17 -0
  220. package/dist/types/adapters/memory/key-store.d.ts.map +1 -0
  221. package/dist/types/adapters/memory/method-store.d.ts +26 -0
  222. package/dist/types/adapters/memory/method-store.d.ts.map +1 -0
  223. package/dist/types/adapters/memory/passkey-credential-store.d.ts +43 -0
  224. package/dist/types/adapters/memory/passkey-credential-store.d.ts.map +1 -0
  225. package/dist/types/adapters/memory/session-store.d.ts +21 -0
  226. package/dist/types/adapters/memory/session-store.d.ts.map +1 -0
  227. package/dist/types/adapters/memory/token-store.d.ts +29 -0
  228. package/dist/types/adapters/memory/token-store.d.ts.map +1 -0
  229. package/dist/types/adapters/postgres/audit-log.d.ts +18 -0
  230. package/dist/types/adapters/postgres/audit-log.d.ts.map +1 -0
  231. package/dist/types/adapters/postgres/config-store.d.ts +21 -0
  232. package/dist/types/adapters/postgres/config-store.d.ts.map +1 -0
  233. package/dist/types/adapters/postgres/executor.d.ts +48 -0
  234. package/dist/types/adapters/postgres/executor.d.ts.map +1 -0
  235. package/dist/types/adapters/postgres/index.d.ts +39 -0
  236. package/dist/types/adapters/postgres/index.d.ts.map +1 -0
  237. package/dist/types/adapters/postgres/key-store.d.ts +23 -0
  238. package/dist/types/adapters/postgres/key-store.d.ts.map +1 -0
  239. package/dist/types/adapters/postgres/method-store.d.ts +21 -0
  240. package/dist/types/adapters/postgres/method-store.d.ts.map +1 -0
  241. package/dist/types/adapters/postgres/migrations.d.ts +22 -0
  242. package/dist/types/adapters/postgres/migrations.d.ts.map +1 -0
  243. package/dist/types/adapters/postgres/passkey-credential-store.d.ts +48 -0
  244. package/dist/types/adapters/postgres/passkey-credential-store.d.ts.map +1 -0
  245. package/dist/types/adapters/postgres/session-store.d.ts +20 -0
  246. package/dist/types/adapters/postgres/session-store.d.ts.map +1 -0
  247. package/dist/types/adapters/postgres/token-store.d.ts +30 -0
  248. package/dist/types/adapters/postgres/token-store.d.ts.map +1 -0
  249. package/dist/types/client.d.ts +20 -1
  250. package/dist/types/client.d.ts.map +1 -1
  251. package/dist/types/domain/audit.d.ts +17 -0
  252. package/dist/types/domain/audit.d.ts.map +1 -0
  253. package/dist/types/domain/authorize.d.ts +125 -0
  254. package/dist/types/domain/authorize.d.ts.map +1 -0
  255. package/dist/types/domain/callback.d.ts +70 -0
  256. package/dist/types/domain/callback.d.ts.map +1 -0
  257. package/dist/types/domain/client-auth.d.ts +57 -0
  258. package/dist/types/domain/client-auth.d.ts.map +1 -0
  259. package/dist/types/domain/client-credentials.d.ts +54 -0
  260. package/dist/types/domain/client-credentials.d.ts.map +1 -0
  261. package/dist/types/domain/crypto.d.ts +53 -0
  262. package/dist/types/domain/crypto.d.ts.map +1 -0
  263. package/dist/types/domain/discovery.d.ts +81 -0
  264. package/dist/types/domain/discovery.d.ts.map +1 -0
  265. package/dist/types/domain/dpop.d.ts +61 -0
  266. package/dist/types/domain/dpop.d.ts.map +1 -0
  267. package/dist/types/domain/id-token.d.ts +83 -0
  268. package/dist/types/domain/id-token.d.ts.map +1 -0
  269. package/dist/types/domain/introspect.d.ts +79 -0
  270. package/dist/types/domain/introspect.d.ts.map +1 -0
  271. package/dist/types/domain/jwt.d.ts +74 -0
  272. package/dist/types/domain/jwt.d.ts.map +1 -0
  273. package/dist/types/domain/logout.d.ts +69 -0
  274. package/dist/types/domain/logout.d.ts.map +1 -0
  275. package/dist/types/domain/method-cache.d.ts +42 -0
  276. package/dist/types/domain/method-cache.d.ts.map +1 -0
  277. package/dist/types/domain/method-dispatch.d.ts +37 -0
  278. package/dist/types/domain/method-dispatch.d.ts.map +1 -0
  279. package/dist/types/domain/method-route.d.ts +77 -0
  280. package/dist/types/domain/method-route.d.ts.map +1 -0
  281. package/dist/types/domain/par.d.ts +62 -0
  282. package/dist/types/domain/par.d.ts.map +1 -0
  283. package/dist/types/domain/pkce.d.ts +15 -0
  284. package/dist/types/domain/pkce.d.ts.map +1 -0
  285. package/dist/types/domain/refresh.d.ts +52 -0
  286. package/dist/types/domain/refresh.d.ts.map +1 -0
  287. package/dist/types/domain/register.d.ts +33 -0
  288. package/dist/types/domain/register.d.ts.map +1 -0
  289. package/dist/types/domain/revoke.d.ts +61 -0
  290. package/dist/types/domain/revoke.d.ts.map +1 -0
  291. package/dist/types/domain/state-envelope.d.ts +30 -0
  292. package/dist/types/domain/state-envelope.d.ts.map +1 -0
  293. package/dist/types/domain/token-exchange.d.ts +69 -0
  294. package/dist/types/domain/token-exchange.d.ts.map +1 -0
  295. package/dist/types/domain/token.d.ts +140 -0
  296. package/dist/types/domain/token.d.ts.map +1 -0
  297. package/dist/types/domain/userinfo.d.ts +61 -0
  298. package/dist/types/domain/userinfo.d.ts.map +1 -0
  299. package/dist/types/http/context.d.ts +66 -0
  300. package/dist/types/http/context.d.ts.map +1 -0
  301. package/dist/types/http/cookies.d.ts +45 -0
  302. package/dist/types/http/cookies.d.ts.map +1 -0
  303. package/dist/types/http/errors.d.ts +36 -0
  304. package/dist/types/http/errors.d.ts.map +1 -0
  305. package/dist/types/http/handlers/authorize.d.ts +3 -0
  306. package/dist/types/http/handlers/authorize.d.ts.map +1 -0
  307. package/dist/types/http/handlers/callback.d.ts +3 -0
  308. package/dist/types/http/handlers/callback.d.ts.map +1 -0
  309. package/dist/types/http/handlers/end-session.d.ts +3 -0
  310. package/dist/types/http/handlers/end-session.d.ts.map +1 -0
  311. package/dist/types/http/handlers/metadata.d.ts +4 -0
  312. package/dist/types/http/handlers/metadata.d.ts.map +1 -0
  313. package/dist/types/http/handlers/method-route.d.ts +3 -0
  314. package/dist/types/http/handlers/method-route.d.ts.map +1 -0
  315. package/dist/types/http/handlers/par.d.ts +3 -0
  316. package/dist/types/http/handlers/par.d.ts.map +1 -0
  317. package/dist/types/http/handlers/register.d.ts +3 -0
  318. package/dist/types/http/handlers/register.d.ts.map +1 -0
  319. package/dist/types/http/handlers/revocation.d.ts +4 -0
  320. package/dist/types/http/handlers/revocation.d.ts.map +1 -0
  321. package/dist/types/http/handlers/token.d.ts +3 -0
  322. package/dist/types/http/handlers/token.d.ts.map +1 -0
  323. package/dist/types/http/handlers/userinfo.d.ts +3 -0
  324. package/dist/types/http/handlers/userinfo.d.ts.map +1 -0
  325. package/dist/types/http/middleware/error.d.ts +9 -0
  326. package/dist/types/http/middleware/error.d.ts.map +1 -0
  327. package/dist/types/http/middleware/tenant.d.ts +30 -0
  328. package/dist/types/http/middleware/tenant.d.ts.map +1 -0
  329. package/dist/types/http/resolver.d.ts +22 -0
  330. package/dist/types/http/resolver.d.ts.map +1 -0
  331. package/dist/types/http/router.d.ts +21 -0
  332. package/dist/types/http/router.d.ts.map +1 -0
  333. package/dist/types/http/schemas/authorize.d.ts +92 -0
  334. package/dist/types/http/schemas/authorize.d.ts.map +1 -0
  335. package/dist/types/http/schemas/end-session.d.ts +31 -0
  336. package/dist/types/http/schemas/end-session.d.ts.map +1 -0
  337. package/dist/types/http/schemas/par.d.ts +20 -0
  338. package/dist/types/http/schemas/par.d.ts.map +1 -0
  339. package/dist/types/http/schemas/register.d.ts +42 -0
  340. package/dist/types/http/schemas/register.d.ts.map +1 -0
  341. package/dist/types/http/schemas/revocation.d.ts +41 -0
  342. package/dist/types/http/schemas/revocation.d.ts.map +1 -0
  343. package/dist/types/http/schemas/token.d.ts +227 -0
  344. package/dist/types/http/schemas/token.d.ts.map +1 -0
  345. package/dist/types/index.d.ts +63 -13
  346. package/dist/types/index.d.ts.map +1 -1
  347. package/dist/types/methods/code.d.ts +96 -0
  348. package/dist/types/methods/code.d.ts.map +1 -0
  349. package/dist/types/methods/m2m.d.ts +41 -0
  350. package/dist/types/methods/m2m.d.ts.map +1 -0
  351. package/dist/types/methods/oauth2-factory.d.ts +133 -0
  352. package/dist/types/methods/oauth2-factory.d.ts.map +1 -0
  353. package/dist/types/methods/oauth2-generic.d.ts +75 -0
  354. package/dist/types/methods/oauth2-generic.d.ts.map +1 -0
  355. package/dist/types/methods/oidc-generic.d.ts +26 -0
  356. package/dist/types/methods/oidc-generic.d.ts.map +1 -0
  357. package/dist/types/methods/passkey.d.ts +106 -0
  358. package/dist/types/methods/passkey.d.ts.map +1 -0
  359. package/dist/types/methods/password-hash.d.ts +25 -0
  360. package/dist/types/methods/password-hash.d.ts.map +1 -0
  361. package/dist/types/methods/password.d.ts +70 -0
  362. package/dist/types/methods/password.d.ts.map +1 -0
  363. package/dist/types/methods/providers/apple.d.ts +29 -0
  364. package/dist/types/methods/providers/apple.d.ts.map +1 -0
  365. package/dist/types/methods/providers/cognito.d.ts +36 -0
  366. package/dist/types/methods/providers/cognito.d.ts.map +1 -0
  367. package/dist/types/methods/providers/discord.d.ts +22 -0
  368. package/dist/types/methods/providers/discord.d.ts.map +1 -0
  369. package/dist/types/methods/providers/facebook.d.ts +29 -0
  370. package/dist/types/methods/providers/facebook.d.ts.map +1 -0
  371. package/dist/types/methods/providers/github.d.ts +25 -0
  372. package/dist/types/methods/providers/github.d.ts.map +1 -0
  373. package/dist/types/methods/providers/google.d.ts +28 -0
  374. package/dist/types/methods/providers/google.d.ts.map +1 -0
  375. package/dist/types/methods/providers/index.d.ts +24 -0
  376. package/dist/types/methods/providers/index.d.ts.map +1 -0
  377. package/dist/types/methods/providers/jumpcloud.d.ts +22 -0
  378. package/dist/types/methods/providers/jumpcloud.d.ts.map +1 -0
  379. package/dist/types/methods/providers/keycloak.d.ts +30 -0
  380. package/dist/types/methods/providers/keycloak.d.ts.map +1 -0
  381. package/dist/types/methods/providers/linkedin.d.ts +22 -0
  382. package/dist/types/methods/providers/linkedin.d.ts.map +1 -0
  383. package/dist/types/methods/providers/microsoft.d.ts +30 -0
  384. package/dist/types/methods/providers/microsoft.d.ts.map +1 -0
  385. package/dist/types/methods/providers/slack.d.ts +25 -0
  386. package/dist/types/methods/providers/slack.d.ts.map +1 -0
  387. package/dist/types/methods/providers/spotify.d.ts +22 -0
  388. package/dist/types/methods/providers/spotify.d.ts.map +1 -0
  389. package/dist/types/methods/providers/twitch.d.ts +23 -0
  390. package/dist/types/methods/providers/twitch.d.ts.map +1 -0
  391. package/dist/types/methods/providers/x.d.ts +25 -0
  392. package/dist/types/methods/providers/x.d.ts.map +1 -0
  393. package/dist/types/methods/providers/yahoo.d.ts +22 -0
  394. package/dist/types/methods/providers/yahoo.d.ts.map +1 -0
  395. package/dist/types/pkce.d.ts +1 -2
  396. package/dist/types/pkce.d.ts.map +1 -1
  397. package/dist/types/ports/audit-log.d.ts +166 -0
  398. package/dist/types/ports/audit-log.d.ts.map +1 -0
  399. package/dist/types/ports/config-store.d.ts +32 -0
  400. package/dist/types/ports/config-store.d.ts.map +1 -0
  401. package/dist/types/ports/key-store.d.ts +98 -0
  402. package/dist/types/ports/key-store.d.ts.map +1 -0
  403. package/dist/types/ports/method-store.d.ts +29 -0
  404. package/dist/types/ports/method-store.d.ts.map +1 -0
  405. package/dist/types/ports/session-store.d.ts +109 -0
  406. package/dist/types/ports/session-store.d.ts.map +1 -0
  407. package/dist/types/ports/token-store.d.ts +105 -0
  408. package/dist/types/ports/token-store.d.ts.map +1 -0
  409. package/dist/types/types/authorization.d.ts +75 -0
  410. package/dist/types/types/authorization.d.ts.map +1 -0
  411. package/dist/types/types/error.d.ts +101 -0
  412. package/dist/types/types/error.d.ts.map +1 -0
  413. package/dist/types/types/flow.d.ts +97 -0
  414. package/dist/types/types/flow.d.ts.map +1 -0
  415. package/dist/types/types/idp.d.ts +324 -0
  416. package/dist/types/types/idp.d.ts.map +1 -0
  417. package/dist/types/types/method.d.ts +256 -0
  418. package/dist/types/types/method.d.ts.map +1 -0
  419. package/dist/types/types/picker.d.ts +31 -0
  420. package/dist/types/types/picker.d.ts.map +1 -0
  421. package/dist/types/types/result.d.ts +29 -0
  422. package/dist/types/types/result.d.ts.map +1 -0
  423. package/dist/types/types/subject.d.ts +47 -0
  424. package/dist/types/types/subject.d.ts.map +1 -0
  425. package/dist/types/types/tenant.d.ts +276 -0
  426. package/dist/types/types/tenant.d.ts.map +1 -0
  427. package/dist/types/types/token.d.ts +231 -0
  428. package/dist/types/types/token.d.ts.map +1 -0
  429. package/dist/types/ui/forms.d.ts +35 -0
  430. package/dist/types/ui/forms.d.ts.map +1 -0
  431. package/dist/types/ui/index.d.ts +14 -0
  432. package/dist/types/ui/index.d.ts.map +1 -0
  433. package/dist/types/ui/picker.d.ts +18 -0
  434. package/dist/types/ui/picker.d.ts.map +1 -0
  435. package/package.json +41 -6
  436. package/src/adapters/d1/audit-log.ts +32 -0
  437. package/src/adapters/d1/config-store.ts +67 -0
  438. package/src/adapters/d1/index.ts +41 -0
  439. package/src/adapters/d1/key-store.ts +218 -0
  440. package/src/adapters/d1/method-store.ts +103 -0
  441. package/src/adapters/d1/migrations.ts +89 -0
  442. package/src/adapters/d1/session-store.ts +230 -0
  443. package/src/adapters/d1/session.ts +38 -0
  444. package/src/adapters/d1/token-store.ts +251 -0
  445. package/src/adapters/d1/types.ts +53 -0
  446. package/src/adapters/durable-object/index.ts +23 -0
  447. package/src/adapters/durable-object/session-store.ts +227 -0
  448. package/src/adapters/durable-object/types.ts +25 -0
  449. package/src/adapters/dynamo/audit-log.ts +35 -0
  450. package/src/adapters/dynamo/client.ts +118 -0
  451. package/src/adapters/dynamo/config-store.ts +72 -0
  452. package/src/adapters/dynamo/index.ts +81 -0
  453. package/src/adapters/dynamo/key-store.ts +267 -0
  454. package/src/adapters/dynamo/method-store.ts +105 -0
  455. package/src/adapters/dynamo/passkey-credential-store.ts +132 -0
  456. package/src/adapters/dynamo/sdk.ts +189 -0
  457. package/src/adapters/dynamo/session-store.ts +229 -0
  458. package/src/adapters/dynamo/token-store.ts +248 -0
  459. package/src/adapters/kms/in-memory-backing.ts +36 -0
  460. package/src/adapters/kms/index.ts +39 -0
  461. package/src/adapters/kms/key-store.ts +176 -0
  462. package/src/adapters/kms/sdk.ts +39 -0
  463. package/src/adapters/kms/types.ts +61 -0
  464. package/src/adapters/kv/audit-log.ts +40 -0
  465. package/src/adapters/kv/config-store.ts +63 -0
  466. package/src/adapters/kv/index.ts +20 -0
  467. package/src/adapters/kv/method-store.ts +98 -0
  468. package/src/adapters/kv/types.ts +26 -0
  469. package/src/adapters/memory/audit-log.ts +28 -0
  470. package/src/adapters/memory/clock.ts +7 -0
  471. package/src/adapters/memory/config-store.ts +41 -0
  472. package/src/adapters/memory/index.ts +26 -0
  473. package/src/adapters/memory/key-store.ts +102 -0
  474. package/src/adapters/memory/method-store.ts +75 -0
  475. package/src/adapters/memory/passkey-credential-store.ts +97 -0
  476. package/src/adapters/memory/session-store.ts +171 -0
  477. package/src/adapters/memory/token-store.ts +181 -0
  478. package/src/adapters/postgres/audit-log.ts +34 -0
  479. package/src/adapters/postgres/config-store.ts +72 -0
  480. package/src/adapters/postgres/executor.ts +76 -0
  481. package/src/adapters/postgres/index.ts +60 -0
  482. package/src/adapters/postgres/key-store.ts +334 -0
  483. package/src/adapters/postgres/method-store.ts +104 -0
  484. package/src/adapters/postgres/migrations.ts +131 -0
  485. package/src/adapters/postgres/passkey-credential-store.ts +150 -0
  486. package/src/adapters/postgres/session-store.ts +216 -0
  487. package/src/adapters/postgres/token-store.ts +263 -0
  488. package/src/client.ts +82 -16
  489. package/src/domain/audit.ts +28 -0
  490. package/src/domain/authorize.ts +414 -0
  491. package/src/domain/callback.ts +268 -0
  492. package/src/domain/client-auth.ts +116 -0
  493. package/src/domain/client-credentials.ts +180 -0
  494. package/src/domain/crypto.ts +168 -0
  495. package/src/domain/discovery.ts +161 -0
  496. package/src/domain/dpop.ts +293 -0
  497. package/src/domain/id-token.ts +213 -0
  498. package/src/domain/introspect.ts +155 -0
  499. package/src/domain/jwt.ts +185 -0
  500. package/src/domain/logout.ts +180 -0
  501. package/src/domain/method-cache.ts +220 -0
  502. package/src/domain/method-dispatch.ts +95 -0
  503. package/src/domain/method-route.ts +213 -0
  504. package/src/domain/par.ts +141 -0
  505. package/src/domain/pkce.ts +37 -0
  506. package/src/domain/refresh.ts +210 -0
  507. package/src/domain/register.ts +168 -0
  508. package/src/domain/revoke.ts +161 -0
  509. package/src/domain/state-envelope.ts +142 -0
  510. package/src/domain/token-exchange.ts +243 -0
  511. package/src/domain/token.ts +483 -0
  512. package/src/domain/userinfo.ts +171 -0
  513. package/src/http/context.ts +90 -0
  514. package/src/http/cookies.ts +167 -0
  515. package/src/http/errors.ts +98 -0
  516. package/src/http/handlers/authorize.ts +362 -0
  517. package/src/http/handlers/callback.ts +77 -0
  518. package/src/http/handlers/end-session.ts +106 -0
  519. package/src/http/handlers/metadata.ts +49 -0
  520. package/src/http/handlers/method-route.ts +115 -0
  521. package/src/http/handlers/par.ts +84 -0
  522. package/src/http/handlers/register.ts +70 -0
  523. package/src/http/handlers/revocation.ts +151 -0
  524. package/src/http/handlers/token.ts +300 -0
  525. package/src/http/handlers/userinfo.ts +90 -0
  526. package/src/http/middleware/error.ts +26 -0
  527. package/src/http/middleware/tenant.ts +165 -0
  528. package/src/http/resolver.ts +34 -0
  529. package/src/http/router.ts +85 -0
  530. package/src/http/schemas/authorize.ts +85 -0
  531. package/src/http/schemas/end-session.ts +23 -0
  532. package/src/http/schemas/par.ts +23 -0
  533. package/src/http/schemas/register.ts +29 -0
  534. package/src/http/schemas/revocation.ts +23 -0
  535. package/src/http/schemas/token.ts +85 -0
  536. package/src/index.ts +283 -20
  537. package/src/methods/code.ts +359 -0
  538. package/src/methods/m2m.ts +82 -0
  539. package/src/methods/oauth2-factory.ts +151 -0
  540. package/src/methods/oauth2-generic.ts +360 -0
  541. package/src/methods/oidc-generic.ts +109 -0
  542. package/src/methods/passkey.ts +419 -0
  543. package/src/methods/password-hash.ts +134 -0
  544. package/src/methods/password.ts +298 -0
  545. package/src/methods/providers/apple.ts +42 -0
  546. package/src/methods/providers/cognito.ts +55 -0
  547. package/src/methods/providers/discord.ts +37 -0
  548. package/src/methods/providers/facebook.ts +54 -0
  549. package/src/methods/providers/github.ts +42 -0
  550. package/src/methods/providers/google.ts +43 -0
  551. package/src/methods/providers/index.ts +23 -0
  552. package/src/methods/providers/jumpcloud.ts +36 -0
  553. package/src/methods/providers/keycloak.ts +42 -0
  554. package/src/methods/providers/linkedin.ts +37 -0
  555. package/src/methods/providers/microsoft.ts +42 -0
  556. package/src/methods/providers/slack.ts +42 -0
  557. package/src/methods/providers/spotify.ts +37 -0
  558. package/src/methods/providers/twitch.ts +38 -0
  559. package/src/methods/providers/x.ts +40 -0
  560. package/src/methods/providers/yahoo.ts +36 -0
  561. package/src/pkce.ts +20 -21
  562. package/src/ports/CONSISTENCY.md +119 -0
  563. package/src/ports/audit-log.ts +177 -0
  564. package/src/ports/config-store.ts +34 -0
  565. package/src/ports/key-store.ts +106 -0
  566. package/src/ports/method-store.ts +41 -0
  567. package/src/ports/session-store.ts +131 -0
  568. package/src/ports/token-store.ts +116 -0
  569. package/src/types/authorization.ts +78 -0
  570. package/src/types/error.ts +146 -0
  571. package/src/types/flow.ts +99 -0
  572. package/src/types/idp.ts +365 -0
  573. package/src/types/method.ts +270 -0
  574. package/src/types/picker.ts +32 -0
  575. package/src/types/result.ts +23 -0
  576. package/src/types/subject.ts +50 -0
  577. package/src/types/tenant.ts +285 -0
  578. package/src/types/token.ts +236 -0
  579. package/src/ui/forms.ts +289 -0
  580. package/src/ui/index.ts +14 -0
  581. package/src/ui/picker.ts +63 -0
  582. package/dist/esm/issuer.js +0 -691
  583. package/dist/esm/jwt.js +0 -16
  584. package/dist/esm/keys.js +0 -113
  585. package/dist/esm/provider/apple.js +0 -28
  586. package/dist/esm/provider/arctic.js +0 -43
  587. package/dist/esm/provider/code.js +0 -58
  588. package/dist/esm/provider/cognito.js +0 -16
  589. package/dist/esm/provider/discord.js +0 -15
  590. package/dist/esm/provider/facebook.js +0 -24
  591. package/dist/esm/provider/github.js +0 -15
  592. package/dist/esm/provider/google.js +0 -25
  593. package/dist/esm/provider/index.js +0 -3
  594. package/dist/esm/provider/jumpcloud.js +0 -15
  595. package/dist/esm/provider/keycloak.js +0 -15
  596. package/dist/esm/provider/linkedin.js +0 -15
  597. package/dist/esm/provider/m2m.js +0 -16
  598. package/dist/esm/provider/microsoft.js +0 -24
  599. package/dist/esm/provider/oauth2.js +0 -119
  600. package/dist/esm/provider/oidc.js +0 -69
  601. package/dist/esm/provider/passkey.js +0 -315
  602. package/dist/esm/provider/password.js +0 -306
  603. package/dist/esm/provider/provider.js +0 -10
  604. package/dist/esm/provider/slack.js +0 -15
  605. package/dist/esm/provider/spotify.js +0 -15
  606. package/dist/esm/provider/twitch.js +0 -15
  607. package/dist/esm/provider/x.js +0 -16
  608. package/dist/esm/provider/yahoo.js +0 -15
  609. package/dist/esm/random.js +0 -27
  610. package/dist/esm/storage/aws.js +0 -39
  611. package/dist/esm/storage/cloudflare.js +0 -42
  612. package/dist/esm/storage/dynamo.js +0 -116
  613. package/dist/esm/storage/memory.js +0 -88
  614. package/dist/esm/storage/storage.js +0 -36
  615. package/dist/esm/subject.js +0 -7
  616. package/dist/esm/ui/base.js +0 -407
  617. package/dist/esm/ui/code.js +0 -151
  618. package/dist/esm/ui/form.js +0 -43
  619. package/dist/esm/ui/icon.js +0 -92
  620. package/dist/esm/ui/passkey.js +0 -329
  621. package/dist/esm/ui/password.js +0 -338
  622. package/dist/esm/ui/select.js +0 -187
  623. package/dist/esm/ui/theme.js +0 -115
  624. package/dist/esm/util.js +0 -54
  625. package/dist/types/issuer.d.ts +0 -607
  626. package/dist/types/issuer.d.ts.map +0 -1
  627. package/dist/types/jwt.d.ts +0 -6
  628. package/dist/types/jwt.d.ts.map +0 -1
  629. package/dist/types/keys.d.ts +0 -18
  630. package/dist/types/keys.d.ts.map +0 -1
  631. package/dist/types/provider/apple.d.ts +0 -108
  632. package/dist/types/provider/apple.d.ts.map +0 -1
  633. package/dist/types/provider/arctic.d.ts +0 -16
  634. package/dist/types/provider/arctic.d.ts.map +0 -1
  635. package/dist/types/provider/code.d.ts +0 -74
  636. package/dist/types/provider/code.d.ts.map +0 -1
  637. package/dist/types/provider/cognito.d.ts +0 -64
  638. package/dist/types/provider/cognito.d.ts.map +0 -1
  639. package/dist/types/provider/discord.d.ts +0 -38
  640. package/dist/types/provider/discord.d.ts.map +0 -1
  641. package/dist/types/provider/facebook.d.ts +0 -74
  642. package/dist/types/provider/facebook.d.ts.map +0 -1
  643. package/dist/types/provider/github.d.ts +0 -38
  644. package/dist/types/provider/github.d.ts.map +0 -1
  645. package/dist/types/provider/google.d.ts +0 -74
  646. package/dist/types/provider/google.d.ts.map +0 -1
  647. package/dist/types/provider/index.d.ts +0 -4
  648. package/dist/types/provider/index.d.ts.map +0 -1
  649. package/dist/types/provider/jumpcloud.d.ts +0 -38
  650. package/dist/types/provider/jumpcloud.d.ts.map +0 -1
  651. package/dist/types/provider/keycloak.d.ts +0 -67
  652. package/dist/types/provider/keycloak.d.ts.map +0 -1
  653. package/dist/types/provider/linkedin.d.ts +0 -6
  654. package/dist/types/provider/linkedin.d.ts.map +0 -1
  655. package/dist/types/provider/m2m.d.ts +0 -34
  656. package/dist/types/provider/m2m.d.ts.map +0 -1
  657. package/dist/types/provider/microsoft.d.ts +0 -89
  658. package/dist/types/provider/microsoft.d.ts.map +0 -1
  659. package/dist/types/provider/oauth2.d.ts +0 -133
  660. package/dist/types/provider/oauth2.d.ts.map +0 -1
  661. package/dist/types/provider/oidc.d.ts +0 -91
  662. package/dist/types/provider/oidc.d.ts.map +0 -1
  663. package/dist/types/provider/passkey.d.ts +0 -143
  664. package/dist/types/provider/passkey.d.ts.map +0 -1
  665. package/dist/types/provider/password.d.ts +0 -210
  666. package/dist/types/provider/password.d.ts.map +0 -1
  667. package/dist/types/provider/provider.d.ts +0 -29
  668. package/dist/types/provider/provider.d.ts.map +0 -1
  669. package/dist/types/provider/slack.d.ts +0 -59
  670. package/dist/types/provider/slack.d.ts.map +0 -1
  671. package/dist/types/provider/spotify.d.ts +0 -38
  672. package/dist/types/provider/spotify.d.ts.map +0 -1
  673. package/dist/types/provider/twitch.d.ts +0 -38
  674. package/dist/types/provider/twitch.d.ts.map +0 -1
  675. package/dist/types/provider/x.d.ts +0 -38
  676. package/dist/types/provider/x.d.ts.map +0 -1
  677. package/dist/types/provider/yahoo.d.ts +0 -38
  678. package/dist/types/provider/yahoo.d.ts.map +0 -1
  679. package/dist/types/random.d.ts +0 -3
  680. package/dist/types/random.d.ts.map +0 -1
  681. package/dist/types/storage/aws.d.ts +0 -4
  682. package/dist/types/storage/aws.d.ts.map +0 -1
  683. package/dist/types/storage/cloudflare.d.ts +0 -34
  684. package/dist/types/storage/cloudflare.d.ts.map +0 -1
  685. package/dist/types/storage/dynamo.d.ts +0 -65
  686. package/dist/types/storage/dynamo.d.ts.map +0 -1
  687. package/dist/types/storage/memory.d.ts +0 -49
  688. package/dist/types/storage/memory.d.ts.map +0 -1
  689. package/dist/types/storage/storage.d.ts +0 -15
  690. package/dist/types/storage/storage.d.ts.map +0 -1
  691. package/dist/types/subject.d.ts +0 -122
  692. package/dist/types/subject.d.ts.map +0 -1
  693. package/dist/types/ui/base.d.ts +0 -5
  694. package/dist/types/ui/base.d.ts.map +0 -1
  695. package/dist/types/ui/code.d.ts +0 -104
  696. package/dist/types/ui/code.d.ts.map +0 -1
  697. package/dist/types/ui/form.d.ts +0 -6
  698. package/dist/types/ui/form.d.ts.map +0 -1
  699. package/dist/types/ui/icon.d.ts +0 -6
  700. package/dist/types/ui/icon.d.ts.map +0 -1
  701. package/dist/types/ui/passkey.d.ts +0 -5
  702. package/dist/types/ui/passkey.d.ts.map +0 -1
  703. package/dist/types/ui/password.d.ts +0 -139
  704. package/dist/types/ui/password.d.ts.map +0 -1
  705. package/dist/types/ui/select.d.ts +0 -55
  706. package/dist/types/ui/select.d.ts.map +0 -1
  707. package/dist/types/ui/theme.d.ts +0 -207
  708. package/dist/types/ui/theme.d.ts.map +0 -1
  709. package/dist/types/util.d.ts +0 -8
  710. package/dist/types/util.d.ts.map +0 -1
  711. package/src/css.d.ts +0 -4
  712. package/src/issuer.ts +0 -1628
  713. package/src/jwt.ts +0 -17
  714. package/src/keys.ts +0 -139
  715. package/src/provider/apple.ts +0 -127
  716. package/src/provider/arctic.ts +0 -66
  717. package/src/provider/code.ts +0 -227
  718. package/src/provider/cognito.ts +0 -74
  719. package/src/provider/discord.ts +0 -45
  720. package/src/provider/facebook.ts +0 -84
  721. package/src/provider/github.ts +0 -45
  722. package/src/provider/google.ts +0 -85
  723. package/src/provider/index.ts +0 -3
  724. package/src/provider/jumpcloud.ts +0 -45
  725. package/src/provider/keycloak.ts +0 -75
  726. package/src/provider/linkedin.ts +0 -12
  727. package/src/provider/m2m.ts +0 -56
  728. package/src/provider/microsoft.ts +0 -100
  729. package/src/provider/oauth2.ts +0 -297
  730. package/src/provider/oidc.ts +0 -179
  731. package/src/provider/passkey.ts +0 -655
  732. package/src/provider/password.ts +0 -672
  733. package/src/provider/provider.ts +0 -33
  734. package/src/provider/slack.ts +0 -67
  735. package/src/provider/spotify.ts +0 -45
  736. package/src/provider/twitch.ts +0 -45
  737. package/src/provider/x.ts +0 -46
  738. package/src/provider/yahoo.ts +0 -45
  739. package/src/random.ts +0 -24
  740. package/src/storage/aws.ts +0 -59
  741. package/src/storage/cloudflare.ts +0 -77
  742. package/src/storage/dynamo.ts +0 -193
  743. package/src/storage/memory.ts +0 -135
  744. package/src/storage/storage.ts +0 -46
  745. package/src/subject.ts +0 -130
  746. package/src/ui/base.tsx +0 -118
  747. package/src/ui/code.tsx +0 -215
  748. package/src/ui/form.tsx +0 -40
  749. package/src/ui/icon.tsx +0 -95
  750. package/src/ui/passkey.tsx +0 -321
  751. package/src/ui/password.tsx +0 -405
  752. package/src/ui/select.tsx +0 -221
  753. package/src/ui/theme.ts +0 -319
  754. package/src/ui/ui.css +0 -252
  755. package/src/util.ts +0 -58
  756. /package/dist/esm/{css.d.js → adapters/d1/types.js} +0 -0
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Subject — the typed principal the IdP issues at the end of an auth flow.
3
+ *
4
+ * Per AD4 / plan §"Subject", Zod is the canonical schema library. The
5
+ * subject schema type is library-agnostic at the boundary (any schema that
6
+ * implements the [Standard Schema v1] spec — including Zod 3.24+, Valibot,
7
+ * and Arktype) so existing consumers can migrate from Valibot/Arktype
8
+ * without rewriting subject definitions.
9
+ *
10
+ * [Standard Schema v1]: https://github.com/standard-schema/standard-schema
11
+ */
12
+ import type { v1 } from "@standard-schema/spec";
13
+ /**
14
+ * Map of subject-type id → schema for that subject's `properties`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { z } from "zod"
19
+ *
20
+ * const subjects: SubjectSchema = {
21
+ * user: z.object({ userId: z.string(), email: z.string().email() }),
22
+ * admin: z.object({ adminId: z.string(), roles: z.array(z.string()) }),
23
+ * }
24
+ * ```
25
+ */
26
+ export type SubjectSchema = Record<string, v1.StandardSchema>;
27
+ /**
28
+ * Helper that infers the discriminated-union `{ type, properties }` shape
29
+ * from a `SubjectSchema`. Used to type the IdP's `success` callback return
30
+ * and the access-token `claim` payload.
31
+ */
32
+ export type SubjectPayload<T extends SubjectSchema> = {
33
+ [type in keyof T & string]: {
34
+ type: type;
35
+ properties: v1.InferOutput<T[type]>;
36
+ };
37
+ }[keyof T & string];
38
+ /**
39
+ * Generic typed-subject claim — what the user's `IdPOptions.success`
40
+ * callback returns and what is inlined as `claim` on the access token.
41
+ *
42
+ * Domain / port signatures keep the generic open (`SubjectClaim`) so the
43
+ * framework doesn't need to know each consumer's subject schema. Concrete
44
+ * call sites narrow `T extends SubjectSchema` for type safety.
45
+ */
46
+ export type SubjectClaim<T extends SubjectSchema = SubjectSchema> = SubjectPayload<T>;
47
+ //# sourceMappingURL=subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../../src/types/subject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAA;AAE/C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAA;AAE7D;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,aAAa,IAAI;KACnD,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG;QAC1B,IAAI,EAAE,IAAI,CAAA;QACV,UAAU,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;KACpC;CACF,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;AAEnB;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAC9D,cAAc,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Tenant model + tenant-resolution / callback-recovery types.
3
+ *
4
+ * Per AD1, tenancy is **not** a URL concept. A tenant is whatever the
5
+ * user-supplied `resolveTenant(req)` says it is for an incoming request, plus
6
+ * a deterministic callback-recovery chain (MAC-bound state, partitioned host,
7
+ * or `flowId`-in-URI) for the post-redirect leg where the original tenant
8
+ * signal may no longer be available.
9
+ *
10
+ * The minimal state envelope MACed and round-tripped through upstream
11
+ * providers carries only `{ tenantId, flowId, nonce, kid }`. Everything else
12
+ * lives in the server-side `FlowRecord` (see `./flow.ts`).
13
+ */
14
+ /**
15
+ * Branded tenant id — **opaque to the framework**.
16
+ *
17
+ * The framework treats `TenantId` as a comparable string and nothing more.
18
+ * It never parses it, never assumes a hierarchy or naming convention, never
19
+ * imposes uniqueness rules, never knows the lifecycle of a tenant. The
20
+ * embedding application decides what a tenant *is* (an organization, a
21
+ * workspace, an App-Tenant tuple, a customer, …) and supplies a
22
+ * `resolveTenant(req)` that maps incoming requests to the right key.
23
+ *
24
+ * Common embedding pattern when the host application has two levels of
25
+ * scoping (e.g. `App` ⇒ `App-Tenant`): encode the tuple into the key.
26
+ *
27
+ * ```ts
28
+ * // Inside the host application's resolveTenant:
29
+ * return ok(`${app.id}:${appTenant?.id ?? "__default__"}` as TenantId)
30
+ *
31
+ * // Inside the host application's ConfigStore.getTenantConfig:
32
+ * const [appId, subId] = (id as string).split(":")
33
+ * // merge App defaults + App-Tenant overrides from your own DB ...
34
+ * ```
35
+ *
36
+ * The brand exists to keep arbitrary `string` values from being passed
37
+ * where a `TenantId` is expected; the *meaning* of the string is the host
38
+ * application's concern.
39
+ */
40
+ export type TenantId = string & {
41
+ readonly __brand: "TenantId";
42
+ };
43
+ /**
44
+ * Cast helper for code that mints `TenantId` from a validated string. The
45
+ * framework imposes no validation on the value — callers ensure their key
46
+ * is non-empty and stable per partition.
47
+ */
48
+ export declare const asTenantId: (value: string) => TenantId;
49
+ /** OAuth 2.1 grant types in scope for this IdP. Implicit is intentionally absent. */
50
+ export type GrantType = "authorization_code" | "refresh_token" | "client_credentials";
51
+ /**
52
+ * `MethodType` is the canonical discriminator for an `AuthMethod`. It mirrors
53
+ * the existing provider taxonomy. The UI uses it to decide which selection /
54
+ * form to render; the framework uses it as a routing / dispatch hint.
55
+ */
56
+ export type MethodType = "oauth2" | "oidc" | "password" | "code" | "m2m" | "passkey" | "custom";
57
+ /**
58
+ * Per-tenant configuration for a single auth method **instance**.
59
+ *
60
+ * `id` is the **tenant-local instance id** — the value that ends up in URLs
61
+ * (`/<id>/*`) and that the framework dispatches by.
62
+ *
63
+ * `kind` is the **factory id** — the value that selects which
64
+ * `AuthMethodFactory` builds this instance. A tenant may register multiple
65
+ * instances of the same factory (e.g. one Google Workspace SSO and one
66
+ * consumer Google Sign-In) by giving each instance a unique `id` while
67
+ * sharing a `kind`.
68
+ *
69
+ * `type` is the `MethodType` discriminator the UI uses. The framework
70
+ * verifies it agrees with the factory's declared type at load time.
71
+ *
72
+ * `config` is the tenant-supplied configuration blob. The framework validates
73
+ * it against the factory's Zod `configSchema` before any handler runs.
74
+ */
75
+ export type MethodConfig = {
76
+ id: string;
77
+ kind: string;
78
+ type: MethodType;
79
+ enabled: boolean;
80
+ config: Record<string, unknown>;
81
+ };
82
+ /** Optional theme metadata. Schema expanded in later phases. */
83
+ export type ThemeConfig = {
84
+ primary?: string;
85
+ logo?: string;
86
+ favicon?: string;
87
+ background?: string;
88
+ font?: string;
89
+ };
90
+ /**
91
+ * Registered OAuth client of this IdP (an app, SPA, mobile, M2M).
92
+ *
93
+ * Phase 8: split into a discriminated union so misconfiguration is a type
94
+ * error, not a runtime check. The runtime in `domain/authorize.ts` still
95
+ * enforces PKCE for public clients defensively, but hosts will see the
96
+ * problem at compile time.
97
+ *
98
+ * - **Public clients** (SPAs, mobile apps, native apps): no client secret;
99
+ * `pkceRequired` is the literal `true`. PKCE is non-negotiable per
100
+ * OAuth 2.1 BCP §2.1.1.
101
+ * - **Confidential clients** (server-side apps, M2M): `secretHash` is
102
+ * required (this used to be optional, in practice always set). PKCE
103
+ * recommended but may be disabled by the host.
104
+ */
105
+ export type ClientConfig = PublicClientConfig | ConfidentialClientConfig;
106
+ export type PublicClientConfig = {
107
+ id: string;
108
+ name: string;
109
+ type: "public";
110
+ redirectUris: string[];
111
+ grantTypes: GrantType[];
112
+ scopes: string[];
113
+ /** Must be `true` for public clients per OAuth 2.1 §2.1.1. */
114
+ pkceRequired: true;
115
+ /**
116
+ * Registered URIs to which `/end_session` may redirect after RP-initiated
117
+ * logout (OIDC RP-Initiated Logout 1.0 §2). Exact-match. If absent, the
118
+ * `/end_session` endpoint refuses any `post_logout_redirect_uri`.
119
+ */
120
+ postLogoutRedirectUris?: string[];
121
+ /**
122
+ * RFC 9126 §2: when `true`, the client MUST use Pushed Authorization
123
+ * Requests; a direct `GET /authorize` call without `request_uri` is
124
+ * rejected with `invalid_request`.
125
+ */
126
+ requirePushedAuthorizationRequests?: boolean;
127
+ /**
128
+ * OIDC Core §8.1 — when set, the subject identifier (`sub`) is derived
129
+ * as a pairwise pseudonym keyed by this string. Two clients sharing
130
+ * the same `sectorIdentifier` will see the same `sub`; different
131
+ * values yield different `sub`s for the same end user. Absent =
132
+ * public subject (sub is identical across all RPs).
133
+ */
134
+ sectorIdentifier?: string;
135
+ /** Phase 8. */
136
+ dpopRequired?: boolean;
137
+ };
138
+ export type ConfidentialClientConfig = {
139
+ id: string;
140
+ name: string;
141
+ type: "confidential";
142
+ /** Hash of the client secret. Required for confidential clients. */
143
+ secretHash: string;
144
+ redirectUris: string[];
145
+ grantTypes: GrantType[];
146
+ scopes: string[];
147
+ /**
148
+ * Default true. Disabling it is permitted for confidential clients but
149
+ * strongly discouraged; OAuth 2.1 §2.1.1 recommends PKCE for every client.
150
+ */
151
+ pkceRequired: boolean;
152
+ /**
153
+ * Registered URIs to which `/end_session` may redirect after RP-initiated
154
+ * logout (OIDC RP-Initiated Logout 1.0 §2). Exact-match.
155
+ */
156
+ postLogoutRedirectUris?: string[];
157
+ /**
158
+ * RFC 9126 §2: when `true`, the client MUST use Pushed Authorization
159
+ * Requests; a direct `GET /authorize` call without `request_uri` is
160
+ * rejected with `invalid_request`.
161
+ */
162
+ requirePushedAuthorizationRequests?: boolean;
163
+ /**
164
+ * OIDC Core §8.1 — see `PublicClientConfig.sectorIdentifier` for
165
+ * semantics. Same field; duplicated on each branch because the
166
+ * `ClientConfig` discriminated union doesn't share optional fields.
167
+ */
168
+ sectorIdentifier?: string;
169
+ /** Phase 8. */
170
+ dpopRequired?: boolean;
171
+ };
172
+ export type TenantConfig = {
173
+ id: TenantId;
174
+ displayName: string;
175
+ clients: ClientConfig[];
176
+ methods: MethodConfig[];
177
+ theme?: ThemeConfig;
178
+ /** Set when the tenant needs cross-subdomain SSO. */
179
+ cookieDomain?: string;
180
+ /** Override default refresh-token TTL (seconds). */
181
+ refreshTtl?: number;
182
+ /** Override default access-token TTL (seconds). */
183
+ accessTtl?: number;
184
+ };
185
+ /**
186
+ * Per-request tenant context handed to methods and the user-supplied
187
+ * `success` callback. `request.raw` is the Web Fetch `Request` the framework
188
+ * received; `request.custom` is whatever the host returned from the
189
+ * `IdPOptions.buildCustomContext` hook (request id, decoded JWT claims, mTLS
190
+ * cert info, geo hints — anything per-request that methods or `success`
191
+ * should see). Without the hook the blob is `{}`. The same blob is also
192
+ * persisted on the `FlowRecord` at `/authorize` time so it survives the
193
+ * upstream redirect and re-presents on the callback side.
194
+ */
195
+ export type TenantContext = {
196
+ id: TenantId;
197
+ config: TenantConfig;
198
+ request: {
199
+ raw: Request;
200
+ custom: Record<string, unknown>;
201
+ };
202
+ };
203
+ /**
204
+ * Outcome of the framework's tenant-recovery chain, evaluated **before**
205
+ * `resolveTenant` runs on the incoming request. Each non-`fresh-request`
206
+ * variant carries a `flowId`; the framework consumes the matching
207
+ * `FlowRecord` and dispatches without consulting `resolveTenant`.
208
+ *
209
+ * Order of evaluation (see plan §"Tenant Recovery Across Redirects"):
210
+ * 1. If `callbackHostFor` configured AND host matches a known tenant:
211
+ * a. `state` MAC-verifies → host-plus-mac
212
+ * b. `flowId` in URI → host-plus-uri
213
+ * c. otherwise → invalid_request, audit unrecoverable_flow
214
+ * 2. Else if `state` MAC-verifies → mac-state
215
+ * 3. Else if `flowId` in registered URI path/query → flow-id-in-uri
216
+ * 4. Else → fresh-request → call user's `resolveTenant(req)`
217
+ */
218
+ export type TenantRecovery = {
219
+ kind: "mac-state";
220
+ tenantId: TenantId;
221
+ flowId: string;
222
+ } | {
223
+ kind: "host-plus-uri";
224
+ tenantId: TenantId;
225
+ flowId: string;
226
+ } | {
227
+ kind: "host-plus-mac";
228
+ tenantId: TenantId;
229
+ flowId: string;
230
+ } | {
231
+ kind: "flow-id-in-uri";
232
+ tenantId: TenantId;
233
+ flowId: string;
234
+ } | {
235
+ kind: "fresh-request";
236
+ };
237
+ /**
238
+ * Minimal envelope MACed into the `state` query parameter. Intentionally
239
+ * tiny — under 256 base64url bytes — so it stays clear of provider URL
240
+ * limits. **No sensitive data must ever be added here.** Everything else
241
+ * lives in the server-side `FlowRecord`.
242
+ */
243
+ export type StateEnvelope = {
244
+ tenantId: TenantId;
245
+ flowId: string;
246
+ /** Per-flow nonce. Distinct from the relying party's `state` param. */
247
+ nonce: string;
248
+ /** Key id of the HMAC key used to mint this envelope (`StateKeyRing` lookup). */
249
+ kid: string;
250
+ };
251
+ /**
252
+ * HMAC-SHA-256 key entry used to mint / verify the `state` envelope MAC.
253
+ * The 32-byte key is global (shared across IdP instances) — recovery has to
254
+ * work before tenant config is loaded, so per-tenant keys would create a
255
+ * bootstrap problem.
256
+ */
257
+ export type StateKey = {
258
+ kid: string;
259
+ /** 32 raw bytes. */
260
+ key: Uint8Array;
261
+ };
262
+ /**
263
+ * State-MAC key ring with overlap-based rotation. `active` mints new state;
264
+ * any key in `verify` accepts existing state during its overlap window.
265
+ *
266
+ * Rotation cadence: monthly. The overlap window must be at least as long as
267
+ * the flow-record TTL (default 10 minutes); a 1-hour overlap is the
268
+ * recommended default. New keys are added to `verify` first, promoted to
269
+ * `active` on the next rotation, then dropped from `verify` after overlap.
270
+ */
271
+ export type StateKeyRing = {
272
+ active: StateKey;
273
+ /** Includes `active` plus any previous keys still inside their overlap window. */
274
+ verify: ReadonlyArray<StateKey>;
275
+ };
276
+ //# sourceMappingURL=tenant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../../src/types/tenant.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Token-domain shapes — auth code payload (snapshot of `FlowRecord` at
3
+ * handoff), access-token claims, refresh-token payload, and the small
4
+ * envelopes the `TokenStore` persists.
5
+ *
6
+ * Per AD9, access tokens are JWTs (ES256 by default, Ed25519 optional per
7
+ * AD11) and refresh tokens are opaque server-side records.
8
+ */
9
+ import type { ClaimsRequest } from "./authorization";
10
+ import type { SubjectClaim } from "./subject";
11
+ import type { TenantId } from "./tenant";
12
+ /**
13
+ * Payload stored under an auth code. Built at callback time from the consumed
14
+ * `FlowRecord` plus the method's `success` result. Encrypted at rest by
15
+ * `TokenStore.saveCode` (see `ports/CONSISTENCY.md`).
16
+ *
17
+ * `methodState` is intentionally **not** snapshotted: it served its
18
+ * upstream-callback purpose and is dropped with the flow record.
19
+ */
20
+ export type CodePayload = {
21
+ tenantId: TenantId;
22
+ clientId: string;
23
+ appRedirectUri: string;
24
+ /** Relying party's `state` param, echoed back at success. */
25
+ appState: string | null;
26
+ scopes: string[];
27
+ audience?: string;
28
+ /** Relying-party → IdP PKCE; verified at `/token` against the RP's verifier. */
29
+ clientPkce?: {
30
+ challenge: string;
31
+ method: "S256";
32
+ };
33
+ /** Tenant-local method instance id (`MethodConfig.id`). */
34
+ methodId: string;
35
+ /** Factory kind (`MethodConfig.kind`). */
36
+ methodKind: string;
37
+ /** User's `requestContext` snapshot, if any. */
38
+ context?: Record<string, unknown> | null;
39
+ /** Upstream system's stable identifier (from `MethodResult.success`). */
40
+ providerSubject: string;
41
+ /** Typed-per-method properties from `MethodResult.success`. */
42
+ properties: unknown;
43
+ /**
44
+ * Relying party's OIDC `nonce` (OIDC Core §3.1.2.1). Snapshotted from
45
+ * `FlowRecord.appNonce`. Echoed into the issued `id_token` when present.
46
+ */
47
+ appNonce?: string;
48
+ /**
49
+ * Seconds-since-epoch when end-user authentication completed
50
+ * (OIDC Core §2 `auth_time`). Stamped at the moment the method's
51
+ * `MethodResult.success` fires. Carried into the `id_token` and forward
52
+ * across refresh-token rotations.
53
+ */
54
+ authTime: number;
55
+ /** OIDC Core §5.5 — RP-requested claims; honored at id_token + /userinfo. */
56
+ claimsRequest?: ClaimsRequest;
57
+ /** Auth-code TTL is 60 s — framework refuses anything longer. */
58
+ expiresAt: number;
59
+ };
60
+ /**
61
+ * OIDC Core §5.1 `address` claim. Structured object value rather than a
62
+ * scalar — distinct from the rest of the profile fields.
63
+ */
64
+ export type AddressClaim = {
65
+ formatted?: string;
66
+ street_address?: string;
67
+ locality?: string;
68
+ region?: string;
69
+ postal_code?: string;
70
+ country?: string;
71
+ };
72
+ /**
73
+ * OIDC Core §5.1 profile / email / phone / address claims, gated by the
74
+ * `profile` / `email` / `phone` / `address` scopes via §5.4. Reused by
75
+ * `IdTokenClaims` and the `/userinfo` response so the two surfaces share
76
+ * exactly one source of truth for scope→claim mapping.
77
+ *
78
+ * Every field is optional: presence depends on (a) which scopes were
79
+ * granted and (b) whether the host populated the matching key in
80
+ * `SubjectClaim.properties`.
81
+ */
82
+ export type ScopedProfileClaims = {
83
+ name?: string;
84
+ given_name?: string;
85
+ family_name?: string;
86
+ middle_name?: string;
87
+ nickname?: string;
88
+ preferred_username?: string;
89
+ profile?: string;
90
+ picture?: string;
91
+ website?: string;
92
+ gender?: string;
93
+ birthdate?: string;
94
+ zoneinfo?: string;
95
+ locale?: string;
96
+ updated_at?: number;
97
+ email?: string;
98
+ email_verified?: boolean;
99
+ phone_number?: string;
100
+ phone_number_verified?: boolean;
101
+ address?: AddressClaim;
102
+ };
103
+ /**
104
+ * OIDC `id_token` JWT claims this IdP issues at `/token` when `openid`
105
+ * scope is granted (OIDC Core §2). Distinct from access-token claims:
106
+ *
107
+ * - `aud` is the relying-party `client_id` (not the API audience).
108
+ * - `nonce` echoes the RP's `/authorize` `nonce` parameter when present.
109
+ * - `auth_time` is stable across refresh-token rotations (OIDC Core §12).
110
+ * - `at_hash` is recommended whenever an id_token and access_token are
111
+ * returned in the same response (§3.1.3.6).
112
+ *
113
+ * Standard OIDC claim names use snake_case on the wire; TypeScript field
114
+ * names match to keep the marshalling 1:1.
115
+ */
116
+ export type IdTokenClaims = ScopedProfileClaims & {
117
+ iss: string;
118
+ sub: string;
119
+ aud: string;
120
+ exp: number;
121
+ iat: number;
122
+ /** Seconds-since-epoch when end-user auth completed. */
123
+ auth_time?: number;
124
+ /** RP-supplied OIDC nonce, when present. MUST equal the `/authorize` value. */
125
+ nonce?: string;
126
+ /** Authentication Methods References (RFC 8176). */
127
+ amr?: string[];
128
+ /** Authentication Context Class Reference. */
129
+ acr?: string;
130
+ /** Authorized party — the client_id of the party the id_token is for. */
131
+ azp?: string;
132
+ /** Access-token hash (OIDC Core §3.1.3.6). */
133
+ at_hash?: string;
134
+ };
135
+ /** Access-token JWT claims this IdP issues. */
136
+ export type AccessTokenClaims = {
137
+ iss: string;
138
+ sub: string;
139
+ aud: string;
140
+ exp: number;
141
+ iat: number;
142
+ /** Tenant id. */
143
+ tid: TenantId;
144
+ /** Tenant-local method instance id that originated this token. */
145
+ mid?: string;
146
+ /** Factory kind that originated this token. */
147
+ mkind?: string;
148
+ scope?: string;
149
+ /**
150
+ * Seconds-since-epoch when the end-user originally authenticated
151
+ * (OIDC Core §2). Stable across refresh-token rotation and across
152
+ * RFC 8693 token-exchange (§12 — exchanging an audience does NOT
153
+ * re-authenticate the user). Absent on `client_credentials` grants
154
+ * where there is no end-user.
155
+ *
156
+ * Carried on the access token so RFC 8693 `subject_token` consumers
157
+ * can propagate it without needing the original id_token. Resource
158
+ * servers typically ignore it; it's there for the IdP's own
159
+ * downstream issuance.
160
+ */
161
+ auth_time?: number;
162
+ /** DPoP confirmation claim (Phase 8). */
163
+ cnf?: {
164
+ jkt: string;
165
+ };
166
+ /**
167
+ * OIDC Core §5.5 — list of claim names the RP requested for the
168
+ * `/userinfo` response via the `claims` parameter. The resource server
169
+ * surface uses this to bypass scope-gating per §5.5; it is empty /
170
+ * absent when the RP did not use the `claims` parameter.
171
+ */
172
+ uic?: string[];
173
+ /** The structured subject (matches `SubjectClaim`). Inlined for resource servers. */
174
+ claim: SubjectClaim;
175
+ };
176
+ /**
177
+ * Opaque refresh-token payload — persisted in `TokenStore` with strong CAS
178
+ * semantics (see `ports/CONSISTENCY.md`). The token itself is a random
179
+ * string; the payload is what the store returns on consume.
180
+ */
181
+ export type RefreshTokenPayload = {
182
+ tenantId: TenantId;
183
+ clientId: string;
184
+ /** Stable subject id derived from the issued `SubjectClaim`. */
185
+ subjectId: string;
186
+ claim: SubjectClaim;
187
+ scopes: string[];
188
+ audience?: string;
189
+ /** Reuse-detection chain id. Rotation issues a new token with the same family. */
190
+ family: string;
191
+ /**
192
+ * Tenant-local method instance id (`MethodConfig.id`) that originated the
193
+ * chain. Preserved across `refresh_token` rotations so descendant access
194
+ * tokens carry the original `mid` / `mkind` claims instead of the
195
+ * grant-type literal "refresh".
196
+ */
197
+ methodId: string;
198
+ /** Factory kind (`MethodConfig.kind`) that originated the chain. */
199
+ methodKind: string;
200
+ /**
201
+ * Seconds-since-epoch when end-user authentication originally completed
202
+ * (OIDC Core §2 `auth_time`). Stable across refresh-token rotations —
203
+ * `auth_time` does **not** advance on refresh, only on re-authentication.
204
+ */
205
+ authTime: number;
206
+ /**
207
+ * RFC 7638 JWK thumbprint of the client's DPoP key (RFC 9449 §6.1).
208
+ * Present when the original token grant was DPoP-bound. Refresh-grant
209
+ * rotation REQUIRES a fresh DPoP proof whose thumbprint matches; absent
210
+ * = the token is plain Bearer and Bearer is acceptable on refresh.
211
+ */
212
+ dpopJkt?: string;
213
+ /**
214
+ * OIDC Core §12 — the original RP-requested claims, preserved so
215
+ * refresh-grant id_token + /userinfo responses keep returning them.
216
+ */
217
+ claimsRequest?: ClaimsRequest;
218
+ /** Wall-clock issuance and absolute-expiry timestamps. */
219
+ issuedAt: number;
220
+ expiresAt: number;
221
+ };
222
+ /** Response body of `/token` (RFC 6749 §5.1). */
223
+ export type TokenResponse = {
224
+ access_token: string;
225
+ token_type: "Bearer" | "DPoP";
226
+ expires_in: number;
227
+ refresh_token?: string;
228
+ scope?: string;
229
+ id_token?: string;
230
+ };
231
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/types/token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Server-rendered HTML helpers for the bundled credential methods and the
3
+ * default authorization picker.
4
+ *
5
+ * Intentionally minimal — zero JS, no client framework. Hosts that want a
6
+ * richer UI override `IdPOptions.renderPicker` (for method selection) or
7
+ * supply their own `success-response` from method handlers (for credential
8
+ * forms). The helpers escape user-provided strings so callers can drop
9
+ * arbitrary labels or error messages without thinking about XSS.
10
+ */
11
+ export declare function escapeHtml(s: string): string;
12
+ export declare const BASE_STYLES = "\n:root {\n color-scheme: light dark;\n\n --bg-page: #eef0f4;\n --bg-card: #ffffff;\n --bg-input: #ffffff;\n --bg-row: #f5f6f8;\n --bg-row-hover: #eaecf1;\n --fg-high: #0e1116;\n --fg-mid: #4a5160;\n --fg-low: #8b93a3;\n --border: #d8dce3;\n --border-strong: #9aa3b2;\n --primary: #2f3137;\n --primary-fg: #ffffff;\n --primary-hover: #1b1d22;\n --focus-ring: rgba(47, 49, 55, 0.18);\n --error-bg: #fdecec;\n --error-fg: #8a1a1a;\n --radius: 8px;\n --shadow-card: 0 1px 2px rgba(15, 18, 25, 0.04), 0 12px 28px rgba(15, 18, 25, 0.08);\n}\n\n@media (prefers-color-scheme: dark) {\n :root {\n --bg-page: #0e0f12;\n --bg-card: #16181d;\n --bg-input: #1c1f25;\n --bg-row: #20242c;\n --bg-row-hover: #2a2f38;\n --fg-high: #f3f4f6;\n --fg-mid: #b6bcc7;\n --fg-low: #7a8190;\n --border: #2a2e36;\n --border-strong: #3a4049;\n --primary: #f3f4f6;\n --primary-fg: #0e1116;\n --primary-hover: #ffffff;\n --focus-ring: rgba(243, 244, 246, 0.22);\n --error-bg: #2a1414;\n --error-fg: #f5b4b4;\n --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.5), 0 18px 40px rgba(0, 0, 0, 0.5);\n }\n}\n\n* { box-sizing: border-box; }\n\nhtml, body { margin: 0; padding: 0; }\n\nbody {\n min-height: 100vh;\n background: var(--bg-page);\n color: var(--fg-high);\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", \"Inter\", \"Helvetica Neue\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n font-size: 15px;\n line-height: 1.45;\n display: grid;\n place-items: center;\n padding: 1.5rem;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nmain {\n max-width: 380px;\n width: 100%;\n padding: 2rem 1.75rem;\n background: var(--bg-card);\n border-radius: var(--radius);\n box-shadow: var(--shadow-card);\n}\n\nh1 {\n font-size: 1.125rem;\n font-weight: 600;\n letter-spacing: -0.01em;\n margin: 0 0 1.25rem;\n color: var(--fg-high);\n}\n\nform {\n display: grid;\n gap: 0.85rem;\n margin: 0;\n}\n\nlabel {\n display: grid;\n gap: 0.4rem;\n font-size: 0.78rem;\n font-weight: 500;\n color: var(--fg-mid);\n text-transform: none;\n}\n\ninput {\n width: 100%;\n height: 2.5rem;\n padding: 0 0.85rem;\n background: var(--bg-input);\n color: var(--fg-high);\n border: 1px solid var(--border);\n border-radius: calc(var(--radius) - 2px);\n font-size: 0.95rem;\n font-family: inherit;\n outline: none;\n transition: border-color 120ms ease, box-shadow 120ms ease;\n}\ninput::placeholder { color: var(--fg-low); }\ninput:hover { border-color: var(--border-strong); }\ninput:focus {\n border-color: var(--primary);\n box-shadow: 0 0 0 3px var(--focus-ring);\n}\ninput:user-invalid:not(:focus) {\n border-color: var(--error-fg);\n}\n\nbutton {\n height: 2.5rem;\n padding: 0 1rem;\n border: 0;\n border-radius: calc(var(--radius) - 2px);\n background: var(--primary);\n color: var(--primary-fg);\n font-family: inherit;\n font-size: 0.9rem;\n font-weight: 600;\n letter-spacing: 0.01em;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n transition: background 120ms ease, transform 80ms ease;\n}\nbutton:hover { background: var(--primary-hover); }\nbutton:active { transform: translateY(1px); }\nbutton:focus-visible { box-shadow: 0 0 0 3px var(--focus-ring); outline: none; }\n\n.error {\n display: flex;\n align-items: center;\n min-height: 2.25rem;\n padding: 0.5rem 0.85rem;\n margin: 0 0 0.25rem;\n background: var(--error-bg);\n color: var(--error-fg);\n font-size: 0.82rem;\n border-radius: calc(var(--radius) - 2px);\n}\n\n.methods {\n list-style: none;\n padding: 0;\n margin: 0;\n display: grid;\n gap: 0.5rem;\n}\n.methods a {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 2.75rem;\n padding: 0 1rem;\n background: var(--bg-row);\n border: 1px solid var(--border);\n border-radius: calc(var(--radius) - 2px);\n color: var(--fg-high);\n font-size: 0.92rem;\n font-weight: 500;\n text-decoration: none;\n transition: background 120ms ease, border-color 120ms ease, transform 80ms ease;\n}\n.methods a::after {\n content: \"\u203A\";\n color: var(--fg-mid);\n font-size: 1.15rem;\n font-weight: 500;\n line-height: 1;\n}\n.methods a:hover {\n background: var(--bg-row-hover);\n border-color: var(--border-strong);\n color: var(--fg-high);\n}\n.methods a:hover::after {\n color: var(--fg-high);\n}\n.methods a:active { transform: translateY(1px); }\n.methods a:focus-visible {\n outline: none;\n border-color: var(--primary);\n box-shadow: 0 0 0 3px var(--focus-ring);\n}\n";
13
+ export declare function htmlPage(opts: {
14
+ title: string;
15
+ body: string;
16
+ }): string;
17
+ export type FormField = {
18
+ name: string;
19
+ label: string;
20
+ type?: "text" | "password" | "email" | "tel";
21
+ value?: string;
22
+ required?: boolean;
23
+ autocomplete?: string;
24
+ inputmode?: string;
25
+ };
26
+ /** Build a `<form>` POSTing to `action`. */
27
+ export declare function renderForm(opts: {
28
+ title: string;
29
+ action: string;
30
+ fields: FormField[];
31
+ submit: string;
32
+ error?: string;
33
+ hidden?: Record<string, string>;
34
+ }): string;
35
+ //# sourceMappingURL=forms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/ui/forms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAiB5C;AAED,eAAO,MAAM,WAAW,+jJAoMvB,CAAA;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAatE;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAA;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,EAAE,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC,GAAG,MAAM,CA2BT"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Public surface for the built-in server-rendered UI helpers.
3
+ *
4
+ * Hosts who want their own UI typically don't import from here at all —
5
+ * they intercept at the host application layer. Hosts that want to keep
6
+ * the defaults but tweak around the edges (e.g. supply a custom picker
7
+ * while keeping the default credential forms) can pull renderForm /
8
+ * renderPicker from here.
9
+ */
10
+ export { renderForm, escapeHtml, htmlPage, BASE_STYLES } from "./forms";
11
+ export type { FormField } from "./forms";
12
+ export { renderPicker, buildMethodLink } from "./picker";
13
+ export type { PickerMethod, PickerContext } from "./picker";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AACxD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Default provider picker — rendered when an `/authorize` request matches
3
+ * more than one enabled method and no `method_id` was specified.
4
+ *
5
+ * Hosts that want a fully custom UI override `IdPOptions.renderPicker`.
6
+ * Both the default and any override return a `Response`; the framework
7
+ * applies caching headers afterward.
8
+ */
9
+ import type { PickerContext, PickerMethod } from "../types/picker";
10
+ export type { PickerContext, PickerMethod };
11
+ /**
12
+ * Build an `/authorize` URL that pre-selects a specific `method_id` while
13
+ * carrying every other OAuth param through unchanged.
14
+ */
15
+ export declare function buildMethodLink(methodId: string, ctx: PickerContext): string;
16
+ /** Default styled HTML picker. */
17
+ export declare function renderPicker(methods: PickerMethod[], ctx: PickerContext): Response;
18
+ //# sourceMappingURL=picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/ui/picker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGlE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA;AAE3C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CAgB5E;AAED,kCAAkC;AAClC,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,GAAG,EAAE,aAAa,GACjB,QAAQ,CAeV"}