@_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,236 @@
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
+ /**
14
+ * Payload stored under an auth code. Built at callback time from the consumed
15
+ * `FlowRecord` plus the method's `success` result. Encrypted at rest by
16
+ * `TokenStore.saveCode` (see `ports/CONSISTENCY.md`).
17
+ *
18
+ * `methodState` is intentionally **not** snapshotted: it served its
19
+ * upstream-callback purpose and is dropped with the flow record.
20
+ */
21
+ export type CodePayload = {
22
+ tenantId: TenantId
23
+ clientId: string
24
+ appRedirectUri: string
25
+ /** Relying party's `state` param, echoed back at success. */
26
+ appState: string | null
27
+ scopes: string[]
28
+ audience?: string
29
+ /** Relying-party → IdP PKCE; verified at `/token` against the RP's verifier. */
30
+ clientPkce?: { challenge: string; method: "S256" }
31
+ /** Tenant-local method instance id (`MethodConfig.id`). */
32
+ methodId: string
33
+ /** Factory kind (`MethodConfig.kind`). */
34
+ methodKind: string
35
+ /** User's `requestContext` snapshot, if any. */
36
+ context?: Record<string, unknown> | null
37
+ /** Upstream system's stable identifier (from `MethodResult.success`). */
38
+ providerSubject: string
39
+ /** Typed-per-method properties from `MethodResult.success`. */
40
+ properties: unknown
41
+ /**
42
+ * Relying party's OIDC `nonce` (OIDC Core §3.1.2.1). Snapshotted from
43
+ * `FlowRecord.appNonce`. Echoed into the issued `id_token` when present.
44
+ */
45
+ appNonce?: string
46
+ /**
47
+ * Seconds-since-epoch when end-user authentication completed
48
+ * (OIDC Core §2 `auth_time`). Stamped at the moment the method's
49
+ * `MethodResult.success` fires. Carried into the `id_token` and forward
50
+ * across refresh-token rotations.
51
+ */
52
+ authTime: number
53
+ /** OIDC Core §5.5 — RP-requested claims; honored at id_token + /userinfo. */
54
+ claimsRequest?: ClaimsRequest
55
+ /** Auth-code TTL is 60 s — framework refuses anything longer. */
56
+ expiresAt: number
57
+ }
58
+
59
+ /**
60
+ * OIDC Core §5.1 `address` claim. Structured object value rather than a
61
+ * scalar — distinct from the rest of the profile fields.
62
+ */
63
+ export type AddressClaim = {
64
+ formatted?: string
65
+ street_address?: string
66
+ locality?: string
67
+ region?: string
68
+ postal_code?: string
69
+ country?: string
70
+ }
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
+ // `profile` scope
84
+ name?: string
85
+ given_name?: string
86
+ family_name?: string
87
+ middle_name?: string
88
+ nickname?: string
89
+ preferred_username?: string
90
+ profile?: string
91
+ picture?: string
92
+ website?: string
93
+ gender?: string
94
+ birthdate?: string
95
+ zoneinfo?: string
96
+ locale?: string
97
+ updated_at?: number
98
+ // `email` scope
99
+ email?: string
100
+ email_verified?: boolean
101
+ // `phone` scope
102
+ phone_number?: string
103
+ phone_number_verified?: boolean
104
+ // `address` scope
105
+ address?: AddressClaim
106
+ }
107
+
108
+ /**
109
+ * OIDC `id_token` JWT claims this IdP issues at `/token` when `openid`
110
+ * scope is granted (OIDC Core §2). Distinct from access-token claims:
111
+ *
112
+ * - `aud` is the relying-party `client_id` (not the API audience).
113
+ * - `nonce` echoes the RP's `/authorize` `nonce` parameter when present.
114
+ * - `auth_time` is stable across refresh-token rotations (OIDC Core §12).
115
+ * - `at_hash` is recommended whenever an id_token and access_token are
116
+ * returned in the same response (§3.1.3.6).
117
+ *
118
+ * Standard OIDC claim names use snake_case on the wire; TypeScript field
119
+ * names match to keep the marshalling 1:1.
120
+ */
121
+ export type IdTokenClaims = ScopedProfileClaims & {
122
+ iss: string
123
+ sub: string
124
+ aud: string
125
+ exp: number
126
+ iat: number
127
+ /** Seconds-since-epoch when end-user auth completed. */
128
+ auth_time?: number
129
+ /** RP-supplied OIDC nonce, when present. MUST equal the `/authorize` value. */
130
+ nonce?: string
131
+ /** Authentication Methods References (RFC 8176). */
132
+ amr?: string[]
133
+ /** Authentication Context Class Reference. */
134
+ acr?: string
135
+ /** Authorized party — the client_id of the party the id_token is for. */
136
+ azp?: string
137
+ /** Access-token hash (OIDC Core §3.1.3.6). */
138
+ at_hash?: string
139
+ }
140
+
141
+ /** Access-token JWT claims this IdP issues. */
142
+ export type AccessTokenClaims = {
143
+ iss: string
144
+ sub: string
145
+ aud: string
146
+ exp: number
147
+ iat: number
148
+ /** Tenant id. */
149
+ tid: TenantId
150
+ /** Tenant-local method instance id that originated this token. */
151
+ mid?: string
152
+ /** Factory kind that originated this token. */
153
+ mkind?: string
154
+ scope?: string
155
+ /**
156
+ * Seconds-since-epoch when the end-user originally authenticated
157
+ * (OIDC Core §2). Stable across refresh-token rotation and across
158
+ * RFC 8693 token-exchange (§12 — exchanging an audience does NOT
159
+ * re-authenticate the user). Absent on `client_credentials` grants
160
+ * where there is no end-user.
161
+ *
162
+ * Carried on the access token so RFC 8693 `subject_token` consumers
163
+ * can propagate it without needing the original id_token. Resource
164
+ * servers typically ignore it; it's there for the IdP's own
165
+ * downstream issuance.
166
+ */
167
+ auth_time?: number
168
+ /** DPoP confirmation claim (Phase 8). */
169
+ cnf?: { jkt: string }
170
+ /**
171
+ * OIDC Core §5.5 — list of claim names the RP requested for the
172
+ * `/userinfo` response via the `claims` parameter. The resource server
173
+ * surface uses this to bypass scope-gating per §5.5; it is empty /
174
+ * absent when the RP did not use the `claims` parameter.
175
+ */
176
+ uic?: string[]
177
+ /** The structured subject (matches `SubjectClaim`). Inlined for resource servers. */
178
+ claim: SubjectClaim
179
+ }
180
+
181
+ /**
182
+ * Opaque refresh-token payload — persisted in `TokenStore` with strong CAS
183
+ * semantics (see `ports/CONSISTENCY.md`). The token itself is a random
184
+ * string; the payload is what the store returns on consume.
185
+ */
186
+ export type RefreshTokenPayload = {
187
+ tenantId: TenantId
188
+ clientId: string
189
+ /** Stable subject id derived from the issued `SubjectClaim`. */
190
+ subjectId: string
191
+ claim: SubjectClaim
192
+ scopes: string[]
193
+ audience?: string
194
+ /** Reuse-detection chain id. Rotation issues a new token with the same family. */
195
+ family: string
196
+ /**
197
+ * Tenant-local method instance id (`MethodConfig.id`) that originated the
198
+ * chain. Preserved across `refresh_token` rotations so descendant access
199
+ * tokens carry the original `mid` / `mkind` claims instead of the
200
+ * grant-type literal "refresh".
201
+ */
202
+ methodId: string
203
+ /** Factory kind (`MethodConfig.kind`) that originated the chain. */
204
+ methodKind: string
205
+ /**
206
+ * Seconds-since-epoch when end-user authentication originally completed
207
+ * (OIDC Core §2 `auth_time`). Stable across refresh-token rotations —
208
+ * `auth_time` does **not** advance on refresh, only on re-authentication.
209
+ */
210
+ authTime: number
211
+ /**
212
+ * RFC 7638 JWK thumbprint of the client's DPoP key (RFC 9449 §6.1).
213
+ * Present when the original token grant was DPoP-bound. Refresh-grant
214
+ * rotation REQUIRES a fresh DPoP proof whose thumbprint matches; absent
215
+ * = the token is plain Bearer and Bearer is acceptable on refresh.
216
+ */
217
+ dpopJkt?: string
218
+ /**
219
+ * OIDC Core §12 — the original RP-requested claims, preserved so
220
+ * refresh-grant id_token + /userinfo responses keep returning them.
221
+ */
222
+ claimsRequest?: ClaimsRequest
223
+ /** Wall-clock issuance and absolute-expiry timestamps. */
224
+ issuedAt: number
225
+ expiresAt: number
226
+ }
227
+
228
+ /** Response body of `/token` (RFC 6749 §5.1). */
229
+ export type TokenResponse = {
230
+ access_token: string
231
+ token_type: "Bearer" | "DPoP"
232
+ expires_in: number
233
+ refresh_token?: string
234
+ scope?: string
235
+ id_token?: string
236
+ }
@@ -0,0 +1,289 @@
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
+
12
+ export function escapeHtml(s: string): string {
13
+ return s.replace(/[&<>"']/g, (c) => {
14
+ switch (c) {
15
+ case "&":
16
+ return "&amp;"
17
+ case "<":
18
+ return "&lt;"
19
+ case ">":
20
+ return "&gt;"
21
+ case '"':
22
+ return "&quot;"
23
+ case "'":
24
+ return "&#39;"
25
+ default:
26
+ return c
27
+ }
28
+ })
29
+ }
30
+
31
+ export const BASE_STYLES = `
32
+ :root {
33
+ color-scheme: light dark;
34
+
35
+ --bg-page: #eef0f4;
36
+ --bg-card: #ffffff;
37
+ --bg-input: #ffffff;
38
+ --bg-row: #f5f6f8;
39
+ --bg-row-hover: #eaecf1;
40
+ --fg-high: #0e1116;
41
+ --fg-mid: #4a5160;
42
+ --fg-low: #8b93a3;
43
+ --border: #d8dce3;
44
+ --border-strong: #9aa3b2;
45
+ --primary: #2f3137;
46
+ --primary-fg: #ffffff;
47
+ --primary-hover: #1b1d22;
48
+ --focus-ring: rgba(47, 49, 55, 0.18);
49
+ --error-bg: #fdecec;
50
+ --error-fg: #8a1a1a;
51
+ --radius: 8px;
52
+ --shadow-card: 0 1px 2px rgba(15, 18, 25, 0.04), 0 12px 28px rgba(15, 18, 25, 0.08);
53
+ }
54
+
55
+ @media (prefers-color-scheme: dark) {
56
+ :root {
57
+ --bg-page: #0e0f12;
58
+ --bg-card: #16181d;
59
+ --bg-input: #1c1f25;
60
+ --bg-row: #20242c;
61
+ --bg-row-hover: #2a2f38;
62
+ --fg-high: #f3f4f6;
63
+ --fg-mid: #b6bcc7;
64
+ --fg-low: #7a8190;
65
+ --border: #2a2e36;
66
+ --border-strong: #3a4049;
67
+ --primary: #f3f4f6;
68
+ --primary-fg: #0e1116;
69
+ --primary-hover: #ffffff;
70
+ --focus-ring: rgba(243, 244, 246, 0.22);
71
+ --error-bg: #2a1414;
72
+ --error-fg: #f5b4b4;
73
+ --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.5), 0 18px 40px rgba(0, 0, 0, 0.5);
74
+ }
75
+ }
76
+
77
+ * { box-sizing: border-box; }
78
+
79
+ html, body { margin: 0; padding: 0; }
80
+
81
+ body {
82
+ min-height: 100vh;
83
+ background: var(--bg-page);
84
+ color: var(--fg-high);
85
+ font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", "Inter", "Helvetica Neue", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
86
+ font-size: 15px;
87
+ line-height: 1.45;
88
+ display: grid;
89
+ place-items: center;
90
+ padding: 1.5rem;
91
+ -webkit-font-smoothing: antialiased;
92
+ -moz-osx-font-smoothing: grayscale;
93
+ }
94
+
95
+ main {
96
+ max-width: 380px;
97
+ width: 100%;
98
+ padding: 2rem 1.75rem;
99
+ background: var(--bg-card);
100
+ border-radius: var(--radius);
101
+ box-shadow: var(--shadow-card);
102
+ }
103
+
104
+ h1 {
105
+ font-size: 1.125rem;
106
+ font-weight: 600;
107
+ letter-spacing: -0.01em;
108
+ margin: 0 0 1.25rem;
109
+ color: var(--fg-high);
110
+ }
111
+
112
+ form {
113
+ display: grid;
114
+ gap: 0.85rem;
115
+ margin: 0;
116
+ }
117
+
118
+ label {
119
+ display: grid;
120
+ gap: 0.4rem;
121
+ font-size: 0.78rem;
122
+ font-weight: 500;
123
+ color: var(--fg-mid);
124
+ text-transform: none;
125
+ }
126
+
127
+ input {
128
+ width: 100%;
129
+ height: 2.5rem;
130
+ padding: 0 0.85rem;
131
+ background: var(--bg-input);
132
+ color: var(--fg-high);
133
+ border: 1px solid var(--border);
134
+ border-radius: calc(var(--radius) - 2px);
135
+ font-size: 0.95rem;
136
+ font-family: inherit;
137
+ outline: none;
138
+ transition: border-color 120ms ease, box-shadow 120ms ease;
139
+ }
140
+ input::placeholder { color: var(--fg-low); }
141
+ input:hover { border-color: var(--border-strong); }
142
+ input:focus {
143
+ border-color: var(--primary);
144
+ box-shadow: 0 0 0 3px var(--focus-ring);
145
+ }
146
+ input:user-invalid:not(:focus) {
147
+ border-color: var(--error-fg);
148
+ }
149
+
150
+ button {
151
+ height: 2.5rem;
152
+ padding: 0 1rem;
153
+ border: 0;
154
+ border-radius: calc(var(--radius) - 2px);
155
+ background: var(--primary);
156
+ color: var(--primary-fg);
157
+ font-family: inherit;
158
+ font-size: 0.9rem;
159
+ font-weight: 600;
160
+ letter-spacing: 0.01em;
161
+ cursor: pointer;
162
+ display: inline-flex;
163
+ align-items: center;
164
+ justify-content: center;
165
+ gap: 0.5rem;
166
+ transition: background 120ms ease, transform 80ms ease;
167
+ }
168
+ button:hover { background: var(--primary-hover); }
169
+ button:active { transform: translateY(1px); }
170
+ button:focus-visible { box-shadow: 0 0 0 3px var(--focus-ring); outline: none; }
171
+
172
+ .error {
173
+ display: flex;
174
+ align-items: center;
175
+ min-height: 2.25rem;
176
+ padding: 0.5rem 0.85rem;
177
+ margin: 0 0 0.25rem;
178
+ background: var(--error-bg);
179
+ color: var(--error-fg);
180
+ font-size: 0.82rem;
181
+ border-radius: calc(var(--radius) - 2px);
182
+ }
183
+
184
+ .methods {
185
+ list-style: none;
186
+ padding: 0;
187
+ margin: 0;
188
+ display: grid;
189
+ gap: 0.5rem;
190
+ }
191
+ .methods a {
192
+ display: flex;
193
+ align-items: center;
194
+ justify-content: space-between;
195
+ min-height: 2.75rem;
196
+ padding: 0 1rem;
197
+ background: var(--bg-row);
198
+ border: 1px solid var(--border);
199
+ border-radius: calc(var(--radius) - 2px);
200
+ color: var(--fg-high);
201
+ font-size: 0.92rem;
202
+ font-weight: 500;
203
+ text-decoration: none;
204
+ transition: background 120ms ease, border-color 120ms ease, transform 80ms ease;
205
+ }
206
+ .methods a::after {
207
+ content: "›";
208
+ color: var(--fg-mid);
209
+ font-size: 1.15rem;
210
+ font-weight: 500;
211
+ line-height: 1;
212
+ }
213
+ .methods a:hover {
214
+ background: var(--bg-row-hover);
215
+ border-color: var(--border-strong);
216
+ color: var(--fg-high);
217
+ }
218
+ .methods a:hover::after {
219
+ color: var(--fg-high);
220
+ }
221
+ .methods a:active { transform: translateY(1px); }
222
+ .methods a:focus-visible {
223
+ outline: none;
224
+ border-color: var(--primary);
225
+ box-shadow: 0 0 0 3px var(--focus-ring);
226
+ }
227
+ `
228
+
229
+ export function htmlPage(opts: { title: string; body: string }): string {
230
+ return `<!doctype html>
231
+ <html lang="en">
232
+ <head>
233
+ <meta charset="utf-8">
234
+ <meta name="viewport" content="width=device-width, initial-scale=1">
235
+ <title>${escapeHtml(opts.title)}</title>
236
+ <style>${BASE_STYLES}</style>
237
+ </head>
238
+ <body>
239
+ <main>${opts.body}</main>
240
+ </body>
241
+ </html>`
242
+ }
243
+
244
+ export type FormField = {
245
+ name: string
246
+ label: string
247
+ type?: "text" | "password" | "email" | "tel"
248
+ value?: string
249
+ required?: boolean
250
+ autocomplete?: string
251
+ inputmode?: string
252
+ }
253
+
254
+ /** Build a `<form>` POSTing to `action`. */
255
+ export function renderForm(opts: {
256
+ title: string
257
+ action: string
258
+ fields: FormField[]
259
+ submit: string
260
+ error?: string
261
+ hidden?: Record<string, string>
262
+ }): string {
263
+ const errorHtml = opts.error
264
+ ? `<p class="error">${escapeHtml(opts.error)}</p>`
265
+ : ""
266
+ const hidden = Object.entries(opts.hidden ?? {})
267
+ .map(
268
+ ([k, v]) =>
269
+ `<input type="hidden" name="${escapeHtml(k)}" value="${escapeHtml(v)}">`,
270
+ )
271
+ .join("")
272
+ const fields = opts.fields
273
+ .map(
274
+ (f) => `<label>${escapeHtml(f.label)}
275
+ <input
276
+ name="${escapeHtml(f.name)}"
277
+ type="${f.type ?? "text"}"
278
+ value="${escapeHtml(f.value ?? "")}"
279
+ ${f.required ? "required" : ""}
280
+ ${f.autocomplete ? `autocomplete="${escapeHtml(f.autocomplete)}"` : ""}
281
+ ${f.inputmode ? `inputmode="${escapeHtml(f.inputmode)}"` : ""}
282
+ ></label>`,
283
+ )
284
+ .join("")
285
+ return htmlPage({
286
+ title: opts.title,
287
+ body: `<h1>${escapeHtml(opts.title)}</h1>${errorHtml}<form method="POST" action="${escapeHtml(opts.action)}">${hidden}${fields}<button type="submit">${escapeHtml(opts.submit)}</button></form>`,
288
+ })
289
+ }
@@ -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
+
13
+ export { renderPicker, buildMethodLink } from "./picker"
14
+ export type { PickerMethod, PickerContext } from "./picker"
@@ -0,0 +1,63 @@
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
+ import { escapeHtml, htmlPage } from "./forms"
11
+
12
+ export type { PickerContext, PickerMethod }
13
+
14
+ /**
15
+ * Build an `/authorize` URL that pre-selects a specific `method_id` while
16
+ * carrying every other OAuth param through unchanged.
17
+ */
18
+ export function buildMethodLink(methodId: string, ctx: PickerContext): string {
19
+ const params = new URLSearchParams()
20
+ params.set("client_id", ctx.clientId)
21
+ params.set("redirect_uri", ctx.redirectUri)
22
+ params.set("response_type", "code")
23
+ params.set("method_id", methodId)
24
+ if (ctx.state) params.set("state", ctx.state)
25
+ if (ctx.scope) params.set("scope", ctx.scope)
26
+ if (ctx.nonce) params.set("nonce", ctx.nonce)
27
+ if (ctx.codeChallenge) params.set("code_challenge", ctx.codeChallenge)
28
+ if (ctx.codeChallengeMethod)
29
+ params.set("code_challenge_method", ctx.codeChallengeMethod)
30
+ if (ctx.audience) params.set("audience", ctx.audience)
31
+ if (ctx.prompt) params.set("prompt", ctx.prompt)
32
+ if (ctx.uiLocales) params.set("ui_locales", ctx.uiLocales)
33
+ return `?${params.toString()}`
34
+ }
35
+
36
+ /** Default styled HTML picker. */
37
+ export function renderPicker(
38
+ methods: PickerMethod[],
39
+ ctx: PickerContext,
40
+ ): Response {
41
+ const items = methods
42
+ .map((m) => {
43
+ const label = m.displayName ?? prettyKind(m.kind)
44
+ return `<li><a href="${escapeHtml(buildMethodLink(m.id, ctx))}">${escapeHtml(label)}</a></li>`
45
+ })
46
+ .join("")
47
+ const body = `<h1>Sign in</h1><ul class="methods">${items}</ul>`
48
+ return new Response(htmlPage({ title: "Sign in", body }), {
49
+ status: 200,
50
+ headers: {
51
+ "content-type": "text/html; charset=utf-8",
52
+ "cache-control": "no-store",
53
+ },
54
+ })
55
+ }
56
+
57
+ function prettyKind(kind: string): string {
58
+ if (!kind) return "Continue"
59
+ return kind
60
+ .split(/[-_]/)
61
+ .map((p) => (p.length === 0 ? p : p[0]!.toUpperCase() + p.slice(1)))
62
+ .join(" ")
63
+ }