@_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,191 @@
1
+ // src/adapters/postgres/key-store.ts
2
+ import { exportJWK, generateKeyPair, importJWK } from "jose";
3
+ import {
4
+ base64url,
5
+ generateSymmetricKey,
6
+ randomId,
7
+ utf8
8
+ } from "../../domain/crypto";
9
+ import { authError } from "../../types/error";
10
+ import { err, ok } from "../../types/result";
11
+
12
+ class PostgresKeyStore {
13
+ #exec;
14
+ #clock;
15
+ #signingAlg;
16
+ #wrapper;
17
+ #privateKeyCache = new Map;
18
+ constructor(opts) {
19
+ this.#exec = opts.exec;
20
+ this.#clock = opts.clock ?? (() => Date.now());
21
+ this.#signingAlg = opts.signingAlg ?? "ES256";
22
+ this.#wrapper = opts.wrapper;
23
+ }
24
+ async currentSigningKey() {
25
+ await this.#ensureSigningKey();
26
+ const rows = await this.#selectSigningRows(`status = 'active'`);
27
+ if (rows.length === 0) {
28
+ return err(authError.internalError("no active signing key (should be unreachable)"));
29
+ }
30
+ const key = await this.#hydrateSigningKey(rows[0]);
31
+ return ok(key);
32
+ }
33
+ async signingKeys() {
34
+ await this.#ensureSigningKey();
35
+ const rows = await this.#selectSigningRows(`status IN ('active','next','retired')`);
36
+ const keys = await Promise.all(rows.map((r) => this.#hydrateSigningKey(r)));
37
+ return ok(keys);
38
+ }
39
+ async currentEncryptionKey() {
40
+ await this.#ensureEncryptionKey();
41
+ const rows = await this.#selectEncryptionRows(`status = 'active'`);
42
+ if (rows.length === 0) {
43
+ return err(authError.internalError("no active encryption key (should be unreachable)"));
44
+ }
45
+ return ok(await this.#hydrateEncryptionKey(rows[0]));
46
+ }
47
+ async getEncryptionKey(kid) {
48
+ let row;
49
+ try {
50
+ const result = await this.#exec.query(`SELECT kid, alg, key_material, key_material_wrapped, status, created_at, rotated_at
51
+ FROM openauth_encryption_keys WHERE kid = $1`, [kid]);
52
+ row = result.rows[0];
53
+ } catch (e) {
54
+ return err(authError.internalError("getEncryptionKey: query failed", e));
55
+ }
56
+ if (!row) {
57
+ return err(authError.internalError(`encryption key "${kid}" not found`));
58
+ }
59
+ return ok(await this.#hydrateEncryptionKey(row));
60
+ }
61
+ async#ensureSigningKey() {
62
+ const rows = await this.#selectSigningRows(`status = 'active'`);
63
+ if (rows.length > 0)
64
+ return;
65
+ const { publicKey, privateKey } = await generateKeyPair(this.#signingAlg, {
66
+ extractable: true
67
+ });
68
+ const publicJwk = await exportJWK(publicKey);
69
+ const privateJwk = await exportJWK(privateKey);
70
+ const kid = randomId();
71
+ const { jsonPayload, wrapped } = await this.#encodePrivateJwk(privateJwk);
72
+ await this.#exec.query(`INSERT INTO openauth_signing_keys
73
+ (kid, alg, crv, public_jwk, private_jwk, private_jwk_wrapped, status, created_at)
74
+ VALUES ($1, $2, $3, $4::jsonb, $5::jsonb, $6, 'active', $7)
75
+ ON CONFLICT (kid) DO NOTHING`, [
76
+ kid,
77
+ this.#signingAlg,
78
+ publicJwk.crv ?? null,
79
+ JSON.stringify(publicJwk),
80
+ jsonPayload,
81
+ wrapped,
82
+ this.#clock()
83
+ ]);
84
+ }
85
+ async#ensureEncryptionKey() {
86
+ const rows = await this.#selectEncryptionRows(`status = 'active'`);
87
+ if (rows.length > 0)
88
+ return;
89
+ const kid = randomId();
90
+ const raw = generateSymmetricKey();
91
+ const stored = this.#wrapper ? await this.#wrapper.wrap(raw) : raw;
92
+ await this.#exec.query(`INSERT INTO openauth_encryption_keys
93
+ (kid, alg, key_material, key_material_wrapped, status, created_at)
94
+ VALUES ($1, $2, $3, $4, 'active', $5)
95
+ ON CONFLICT (kid) DO NOTHING`, [kid, "A256GCM", stored, this.#wrapper !== undefined, this.#clock()]);
96
+ }
97
+ async#encodePrivateJwk(jwk) {
98
+ if (!this.#wrapper) {
99
+ return { jsonPayload: JSON.stringify(jwk), wrapped: false };
100
+ }
101
+ const ciphertext = await this.#wrapper.wrap(utf8.encode(JSON.stringify(jwk)));
102
+ return {
103
+ jsonPayload: JSON.stringify({ ct: base64url.encode(ciphertext) }),
104
+ wrapped: true
105
+ };
106
+ }
107
+ async#decodePrivateJwk(raw, wrapped) {
108
+ const parsed = typeof raw === "string" ? JSON.parse(raw) : raw;
109
+ if (!wrapped)
110
+ return parsed;
111
+ if (!this.#wrapper) {
112
+ throw new Error("PostgresKeyStore: signing key row is wrapped but no `wrapper` was supplied — refusing to read");
113
+ }
114
+ const ct = typeof parsed.ct === "string" ? parsed.ct : "";
115
+ if (!ct) {
116
+ throw new Error("PostgresKeyStore: wrapped signing key row missing `ct`");
117
+ }
118
+ const plaintext = await this.#wrapper.unwrap(base64url.decode(ct));
119
+ return JSON.parse(utf8.decode(plaintext));
120
+ }
121
+ async#selectSigningRows(where) {
122
+ const result = await this.#exec.query(`SELECT kid, alg, crv, public_jwk, private_jwk, private_jwk_wrapped,
123
+ status, created_at, rotated_at
124
+ FROM openauth_signing_keys WHERE ${where}`);
125
+ return result.rows;
126
+ }
127
+ async#selectEncryptionRows(where) {
128
+ const result = await this.#exec.query(`SELECT kid, alg, key_material, key_material_wrapped, status, created_at, rotated_at
129
+ FROM openauth_encryption_keys WHERE ${where}`);
130
+ return result.rows;
131
+ }
132
+ async#hydrateSigningKey(row) {
133
+ let imported = this.#privateKeyCache.get(row.kid);
134
+ if (!imported) {
135
+ const privateJwk = await this.#decodePrivateJwk(row.private_jwk, row.private_jwk_wrapped === true);
136
+ imported = await importJWK(privateJwk, row.alg);
137
+ this.#privateKeyCache.set(row.kid, imported);
138
+ }
139
+ const publicJwk = typeof row.public_jwk === "string" ? JSON.parse(row.public_jwk) : row.public_jwk;
140
+ return {
141
+ kid: row.kid,
142
+ alg: row.alg,
143
+ ...row.crv ? { crv: row.crv } : {},
144
+ publicJwk,
145
+ privateKeyRef: imported,
146
+ status: row.status,
147
+ createdAt: Number(row.created_at),
148
+ ...row.rotated_at !== null && row.rotated_at !== undefined ? { rotatedAt: Number(row.rotated_at) } : {}
149
+ };
150
+ }
151
+ async#hydrateEncryptionKey(row) {
152
+ const stored = ensureBytes(row.key_material);
153
+ let keyRef = stored;
154
+ if (row.key_material_wrapped === true) {
155
+ if (!this.#wrapper) {
156
+ throw new Error("PostgresKeyStore: encryption key row is wrapped but no `wrapper` was supplied — refusing to read");
157
+ }
158
+ keyRef = await this.#wrapper.unwrap(stored);
159
+ }
160
+ return {
161
+ kid: row.kid,
162
+ alg: row.alg,
163
+ keyRef,
164
+ status: row.status,
165
+ createdAt: Number(row.created_at),
166
+ ...row.rotated_at !== null && row.rotated_at !== undefined ? { rotatedAt: Number(row.rotated_at) } : {}
167
+ };
168
+ }
169
+ }
170
+ function ensureBytes(value) {
171
+ if (value instanceof Uint8Array)
172
+ return value;
173
+ if (typeof value === "string") {
174
+ if (/^\\x[0-9a-fA-F]+$/.test(value)) {
175
+ const hex = value.slice(2);
176
+ const out = new Uint8Array(hex.length / 2);
177
+ for (let i = 0;i < out.length; i++) {
178
+ out[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
179
+ }
180
+ return out;
181
+ }
182
+ return new TextEncoder().encode(value);
183
+ }
184
+ if (value && typeof value === "object" && "data" in value) {
185
+ return new Uint8Array(value.data);
186
+ }
187
+ throw new Error("PostgresKeyStore: unsupported bytea representation");
188
+ }
189
+ export {
190
+ PostgresKeyStore
191
+ };
@@ -0,0 +1,61 @@
1
+ // src/adapters/postgres/method-store.ts
2
+ import { authError } from "../../types/error";
3
+ import { err, ok } from "../../types/result";
4
+
5
+ class PostgresMethodStore {
6
+ #exec;
7
+ #clock;
8
+ constructor(opts) {
9
+ this.#exec = opts.exec;
10
+ this.#clock = opts.clock ?? (() => Date.now());
11
+ }
12
+ async listMethods(tenantId) {
13
+ try {
14
+ const result = await this.#exec.query(`SELECT config FROM openauth_methods WHERE tenant_id = $1 ORDER BY method_id`, [tenantId]);
15
+ const methods = result.rows.map((r) => parseConfig(r.config));
16
+ return ok(methods);
17
+ } catch (e) {
18
+ return err(authError.internalError("listMethods: query failed", e));
19
+ }
20
+ }
21
+ async getMethodConfig(tenantId, methodId) {
22
+ let row;
23
+ try {
24
+ const result = await this.#exec.query(`SELECT config FROM openauth_methods WHERE tenant_id = $1 AND method_id = $2`, [tenantId, methodId]);
25
+ row = result.rows[0];
26
+ } catch (e) {
27
+ return err(authError.internalError("getMethodConfig: query failed", e));
28
+ }
29
+ if (!row) {
30
+ return err(authError.methodNotFound(`method "${methodId}" not found for tenant "${tenantId}"`, { methodId }));
31
+ }
32
+ return ok(parseConfig(row.config));
33
+ }
34
+ async putMethodConfig(tenantId, method) {
35
+ try {
36
+ await this.#exec.query(`INSERT INTO openauth_methods (tenant_id, method_id, config, updated_at)
37
+ VALUES ($1, $2, $3::jsonb, $4)
38
+ ON CONFLICT (tenant_id, method_id) DO UPDATE
39
+ SET config = EXCLUDED.config, updated_at = EXCLUDED.updated_at`, [tenantId, method.id, JSON.stringify(method), this.#clock()]);
40
+ } catch (e) {
41
+ return err(authError.internalError("putMethodConfig: insert failed", e));
42
+ }
43
+ return ok(undefined);
44
+ }
45
+ async deleteMethodConfig(tenantId, methodId) {
46
+ try {
47
+ await this.#exec.query(`DELETE FROM openauth_methods WHERE tenant_id = $1 AND method_id = $2`, [tenantId, methodId]);
48
+ } catch (e) {
49
+ return err(authError.internalError("deleteMethodConfig: delete failed", e));
50
+ }
51
+ return ok(undefined);
52
+ }
53
+ }
54
+ function parseConfig(raw) {
55
+ if (typeof raw === "string")
56
+ return JSON.parse(raw);
57
+ return raw;
58
+ }
59
+ export {
60
+ PostgresMethodStore
61
+ };
@@ -0,0 +1,111 @@
1
+ // src/adapters/postgres/migrations.ts
2
+ var INITIAL_SCHEMA_SQL = `
3
+ CREATE TABLE IF NOT EXISTS openauth_tenants (
4
+ id text PRIMARY KEY,
5
+ config jsonb NOT NULL,
6
+ updated_at bigint NOT NULL
7
+ );
8
+
9
+ CREATE TABLE IF NOT EXISTS openauth_methods (
10
+ tenant_id text NOT NULL,
11
+ method_id text NOT NULL,
12
+ config jsonb NOT NULL,
13
+ updated_at bigint NOT NULL,
14
+ PRIMARY KEY (tenant_id, method_id)
15
+ );
16
+
17
+ CREATE TABLE IF NOT EXISTS openauth_signing_keys (
18
+ kid text PRIMARY KEY,
19
+ alg text NOT NULL,
20
+ crv text,
21
+ public_jwk jsonb NOT NULL,
22
+ private_jwk jsonb NOT NULL,
23
+ private_jwk_wrapped boolean NOT NULL DEFAULT false,
24
+ status text NOT NULL,
25
+ created_at bigint NOT NULL,
26
+ rotated_at bigint
27
+ );
28
+
29
+ ALTER TABLE openauth_signing_keys
30
+ ADD COLUMN IF NOT EXISTS private_jwk_wrapped boolean NOT NULL DEFAULT false;
31
+
32
+ CREATE TABLE IF NOT EXISTS openauth_encryption_keys (
33
+ kid text PRIMARY KEY,
34
+ alg text NOT NULL,
35
+ key_material bytea NOT NULL,
36
+ key_material_wrapped boolean NOT NULL DEFAULT false,
37
+ status text NOT NULL,
38
+ created_at bigint NOT NULL,
39
+ rotated_at bigint
40
+ );
41
+
42
+ ALTER TABLE openauth_encryption_keys
43
+ ADD COLUMN IF NOT EXISTS key_material_wrapped boolean NOT NULL DEFAULT false;
44
+
45
+ CREATE TABLE IF NOT EXISTS openauth_codes (
46
+ code text PRIMARY KEY,
47
+ ciphertext text NOT NULL,
48
+ expires_at bigint NOT NULL
49
+ );
50
+
51
+ CREATE TABLE IF NOT EXISTS openauth_refresh_tokens (
52
+ token text PRIMARY KEY,
53
+ tenant_id text NOT NULL,
54
+ client_id text NOT NULL,
55
+ subject_id text NOT NULL,
56
+ family text NOT NULL,
57
+ expires_at bigint NOT NULL,
58
+ consumed_at bigint,
59
+ payload jsonb NOT NULL
60
+ );
61
+ CREATE INDEX IF NOT EXISTS openauth_refresh_family_idx
62
+ ON openauth_refresh_tokens (family);
63
+ CREATE INDEX IF NOT EXISTS openauth_refresh_subject_idx
64
+ ON openauth_refresh_tokens (tenant_id, subject_id);
65
+
66
+ CREATE TABLE IF NOT EXISTS openauth_flows (
67
+ flow_id text PRIMARY KEY,
68
+ payload jsonb NOT NULL,
69
+ expires_at bigint NOT NULL
70
+ );
71
+
72
+ CREATE TABLE IF NOT EXISTS openauth_sessions (
73
+ session_id text PRIMARY KEY,
74
+ payload jsonb NOT NULL,
75
+ expires_at bigint NOT NULL
76
+ );
77
+
78
+ CREATE TABLE IF NOT EXISTS openauth_audit_events (
79
+ id bigserial PRIMARY KEY,
80
+ ts bigint NOT NULL,
81
+ kind text NOT NULL,
82
+ payload jsonb NOT NULL
83
+ );
84
+ CREATE INDEX IF NOT EXISTS openauth_audit_kind_idx
85
+ ON openauth_audit_events (kind);
86
+ CREATE INDEX IF NOT EXISTS openauth_audit_ts_idx
87
+ ON openauth_audit_events (ts);
88
+
89
+ CREATE TABLE IF NOT EXISTS openauth_passkey_credentials (
90
+ tenant_id text NOT NULL,
91
+ credential_id text NOT NULL,
92
+ user_id text NOT NULL,
93
+ public_key text NOT NULL,
94
+ counter bigint NOT NULL DEFAULT 0,
95
+ transports jsonb,
96
+ created_at bigint NOT NULL,
97
+ PRIMARY KEY (tenant_id, credential_id)
98
+ );
99
+ CREATE INDEX IF NOT EXISTS openauth_passkey_user_idx
100
+ ON openauth_passkey_credentials (tenant_id, user_id);
101
+ `;
102
+ async function migrate(exec) {
103
+ const statements = INITIAL_SCHEMA_SQL.split(/;\s*\n/).filter((s) => s.trim().length > 0);
104
+ for (const stmt of statements) {
105
+ await exec.query(stmt + ";");
106
+ }
107
+ }
108
+ export {
109
+ migrate,
110
+ INITIAL_SCHEMA_SQL
111
+ };
@@ -0,0 +1,80 @@
1
+ // src/adapters/postgres/passkey-credential-store.ts
2
+ class PostgresPasskeyCredentialStore {
3
+ #exec;
4
+ #clock;
5
+ constructor(opts) {
6
+ this.#exec = opts.exec;
7
+ this.#clock = opts.clock ?? (() => Date.now());
8
+ }
9
+ async findByUsername(username, tenantId) {
10
+ const result = await this.#exec.query(`SELECT credential_id, user_id, public_key, counter, transports
11
+ FROM openauth_passkey_credentials
12
+ WHERE tenant_id = $1 AND user_id = $2`, [tenantId, username]);
13
+ if (result.rows.length === 0)
14
+ return null;
15
+ return {
16
+ userId: username,
17
+ credentials: result.rows.map(rowToCredential)
18
+ };
19
+ }
20
+ async findById(credentialId, tenantId) {
21
+ const result = await this.#exec.query(`SELECT credential_id, user_id, public_key, counter, transports
22
+ FROM openauth_passkey_credentials
23
+ WHERE tenant_id = $1 AND credential_id = $2`, [tenantId, credentialId]);
24
+ const row = result.rows[0];
25
+ if (!row)
26
+ return null;
27
+ return rowToCredential(row);
28
+ }
29
+ async updateCounter(input) {
30
+ await this.#exec.query(`UPDATE openauth_passkey_credentials
31
+ SET counter = $1
32
+ WHERE tenant_id = $2 AND credential_id = $3`, [input.counter, input.tenantId, input.credentialId]);
33
+ }
34
+ async create(input) {
35
+ await this.#exec.query(`INSERT INTO openauth_passkey_credentials
36
+ (tenant_id, credential_id, user_id, public_key, counter, transports, created_at)
37
+ VALUES ($1, $2, $3, $4, $5, $6::jsonb, $7)
38
+ ON CONFLICT (tenant_id, credential_id) DO UPDATE
39
+ SET public_key = EXCLUDED.public_key,
40
+ counter = EXCLUDED.counter,
41
+ transports = EXCLUDED.transports,
42
+ user_id = EXCLUDED.user_id`, [
43
+ input.tenantId,
44
+ input.credential.credentialId,
45
+ input.userId,
46
+ input.credential.publicKey,
47
+ input.credential.counter,
48
+ input.credential.transports ? JSON.stringify(input.credential.transports) : null,
49
+ this.#clock()
50
+ ]);
51
+ }
52
+ }
53
+ function rowToCredential(row) {
54
+ const credential = {
55
+ credentialId: row.credential_id,
56
+ publicKey: row.public_key,
57
+ counter: Number(row.counter),
58
+ userId: row.user_id
59
+ };
60
+ if (row.transports != null) {
61
+ credential.transports = parseTransports(row.transports);
62
+ }
63
+ return credential;
64
+ }
65
+ function parseTransports(raw) {
66
+ if (Array.isArray(raw))
67
+ return raw.map(String);
68
+ if (typeof raw === "string") {
69
+ try {
70
+ const parsed = JSON.parse(raw);
71
+ return Array.isArray(parsed) ? parsed.map(String) : [];
72
+ } catch {
73
+ return [];
74
+ }
75
+ }
76
+ return [];
77
+ }
78
+ export {
79
+ PostgresPasskeyCredentialStore
80
+ };
@@ -0,0 +1,135 @@
1
+ // src/adapters/postgres/session-store.ts
2
+ import { authError } from "../../types/error";
3
+ import { err, ok } from "../../types/result";
4
+
5
+ class PostgresSessionStore {
6
+ #exec;
7
+ #clock;
8
+ constructor(opts) {
9
+ this.#exec = opts.exec;
10
+ this.#clock = opts.clock ?? (() => Date.now());
11
+ }
12
+ async saveFlow(flowId, payload, ttl) {
13
+ if (ttl <= 0) {
14
+ return err(authError.internalError(`saveFlow: ttl must be positive, got ${ttl}`));
15
+ }
16
+ const expiresAt = this.#clock() + ttl;
17
+ try {
18
+ await this.#exec.query(`INSERT INTO openauth_flows (flow_id, payload, expires_at)
19
+ VALUES ($1, $2::jsonb, $3)`, [flowId, JSON.stringify(payload), expiresAt]);
20
+ } catch (e) {
21
+ return err(authError.internalError("saveFlow: insert failed", e));
22
+ }
23
+ return ok(undefined);
24
+ }
25
+ async updateFlowMethodState(flowId, methodState) {
26
+ const now = this.#clock();
27
+ let row;
28
+ try {
29
+ const result = await this.#exec.query(`UPDATE openauth_flows
30
+ SET payload = jsonb_set(payload, '{methodState}', $1::jsonb, true)
31
+ WHERE flow_id = $2 AND expires_at > $3
32
+ RETURNING true AS exists`, [JSON.stringify(methodState), flowId, now]);
33
+ row = result.rows[0];
34
+ } catch (e) {
35
+ return err(authError.internalError("updateFlowMethodState: update failed", e));
36
+ }
37
+ if (!row) {
38
+ return err(authError.unknownState(`flow "${flowId}" unknown or expired`));
39
+ }
40
+ return ok(undefined);
41
+ }
42
+ async readFlow(flowId) {
43
+ let row;
44
+ try {
45
+ const result = await this.#exec.query(`SELECT payload, expires_at FROM openauth_flows WHERE flow_id = $1`, [
46
+ flowId
47
+ ]);
48
+ row = result.rows[0];
49
+ } catch (e) {
50
+ return err(authError.internalError("readFlow: query failed", e));
51
+ }
52
+ if (!row) {
53
+ return err(authError.unknownState(`flow "${flowId}" unknown`));
54
+ }
55
+ if (this.#clock() >= Number(row.expires_at)) {
56
+ try {
57
+ await this.#exec.query(`DELETE FROM openauth_flows WHERE flow_id = $1`, [flowId]);
58
+ } catch {}
59
+ return err(authError.unknownState(`flow "${flowId}" expired`));
60
+ }
61
+ return ok(parseFlowRecord(row.payload));
62
+ }
63
+ async consumeFlow(flowId) {
64
+ let row;
65
+ try {
66
+ const result = await this.#exec.query(`DELETE FROM openauth_flows
67
+ WHERE flow_id = $1
68
+ RETURNING payload, expires_at`, [flowId]);
69
+ row = result.rows[0];
70
+ } catch (e) {
71
+ return err(authError.internalError("consumeFlow: query failed", e));
72
+ }
73
+ if (!row) {
74
+ return err(authError.unknownState(`flow "${flowId}" unknown or already consumed`));
75
+ }
76
+ if (this.#clock() >= Number(row.expires_at)) {
77
+ return err(authError.unknownState(`flow "${flowId}" expired`));
78
+ }
79
+ return ok(parseFlowRecord(row.payload));
80
+ }
81
+ async createSession(sessionId, payload, ttl) {
82
+ if (ttl <= 0) {
83
+ return err(authError.internalError(`createSession: ttl must be positive, got ${ttl}`));
84
+ }
85
+ const expiresAt = this.#clock() + ttl;
86
+ try {
87
+ await this.#exec.query(`INSERT INTO openauth_sessions (session_id, payload, expires_at)
88
+ VALUES ($1, $2::jsonb, $3)
89
+ ON CONFLICT (session_id) DO UPDATE SET payload = EXCLUDED.payload, expires_at = EXCLUDED.expires_at`, [sessionId, JSON.stringify(payload), expiresAt]);
90
+ } catch (e) {
91
+ return err(authError.internalError("createSession: insert failed", e));
92
+ }
93
+ return ok(undefined);
94
+ }
95
+ async readSession(sessionId) {
96
+ let row;
97
+ try {
98
+ const result = await this.#exec.query(`SELECT payload, expires_at FROM openauth_sessions WHERE session_id = $1`, [sessionId]);
99
+ row = result.rows[0];
100
+ } catch (e) {
101
+ return err(authError.internalError("readSession: query failed", e));
102
+ }
103
+ if (!row) {
104
+ return err(authError.invalidRequest(`session "${sessionId}" unknown`));
105
+ }
106
+ if (this.#clock() >= Number(row.expires_at)) {
107
+ try {
108
+ await this.#exec.query(`DELETE FROM openauth_sessions WHERE session_id = $1`, [sessionId]);
109
+ } catch {}
110
+ return err(authError.invalidRequest(`session "${sessionId}" expired`));
111
+ }
112
+ return ok(parseSession(row.payload));
113
+ }
114
+ async revokeSession(sessionId) {
115
+ try {
116
+ await this.#exec.query(`DELETE FROM openauth_sessions WHERE session_id = $1`, [sessionId]);
117
+ } catch (e) {
118
+ return err(authError.internalError("revokeSession: delete failed", e));
119
+ }
120
+ return ok(undefined);
121
+ }
122
+ }
123
+ function parseFlowRecord(raw) {
124
+ if (typeof raw === "string")
125
+ return JSON.parse(raw);
126
+ return raw;
127
+ }
128
+ function parseSession(raw) {
129
+ if (typeof raw === "string")
130
+ return JSON.parse(raw);
131
+ return raw;
132
+ }
133
+ export {
134
+ PostgresSessionStore
135
+ };