@_mustachio/openauth 0.9.2 → 0.10.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 (712) 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 +82 -0
  41. package/dist/esm/adapters/memory/token-store.js +91 -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 +26 -10
  53. package/dist/esm/domain/audit.js +13 -0
  54. package/dist/esm/domain/authorize.js +212 -0
  55. package/dist/esm/domain/callback.js +173 -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 +41 -0
  60. package/dist/esm/domain/introspect.js +51 -0
  61. package/dist/esm/domain/jwt.js +43 -0
  62. package/dist/esm/domain/method-cache.js +136 -0
  63. package/dist/esm/domain/method-dispatch.js +36 -0
  64. package/dist/esm/domain/method-route.js +108 -0
  65. package/dist/esm/domain/pkce.js +16 -0
  66. package/dist/esm/domain/refresh.js +91 -0
  67. package/dist/esm/domain/revoke.js +81 -0
  68. package/dist/esm/domain/state-envelope.js +80 -0
  69. package/dist/esm/domain/token-exchange.js +101 -0
  70. package/dist/esm/domain/token.js +205 -0
  71. package/dist/esm/domain/userinfo.js +27 -0
  72. package/dist/esm/http/context.js +7 -0
  73. package/dist/esm/http/cookies.js +98 -0
  74. package/dist/esm/http/errors.js +71 -0
  75. package/dist/esm/http/handlers/authorize.js +163 -0
  76. package/dist/esm/http/handlers/callback.js +53 -0
  77. package/dist/esm/http/handlers/metadata.js +34 -0
  78. package/dist/esm/http/handlers/method-route.js +87 -0
  79. package/dist/esm/http/handlers/revocation.js +98 -0
  80. package/dist/esm/http/handlers/token.js +167 -0
  81. package/dist/esm/http/handlers/userinfo.js +54 -0
  82. package/dist/esm/http/middleware/error.js +15 -0
  83. package/dist/esm/http/middleware/tenant.js +102 -0
  84. package/dist/esm/http/resolver.js +15 -0
  85. package/dist/esm/http/router.js +35 -0
  86. package/dist/esm/http/schemas/authorize.js +24 -0
  87. package/dist/esm/http/schemas/revocation.js +18 -0
  88. package/dist/esm/http/schemas/token.js +57 -0
  89. package/dist/esm/index.js +121 -9
  90. package/dist/esm/methods/code.js +221 -0
  91. package/dist/esm/methods/m2m.js +41 -0
  92. package/dist/esm/methods/oauth2-factory.js +84 -0
  93. package/dist/esm/methods/oauth2-generic.js +196 -0
  94. package/dist/esm/methods/oidc-generic.js +53 -0
  95. package/dist/esm/methods/passkey.js +275 -0
  96. package/dist/esm/methods/password-hash.js +79 -0
  97. package/dist/esm/methods/password.js +166 -0
  98. package/dist/esm/methods/providers/apple.js +29 -0
  99. package/dist/esm/methods/providers/cognito.js +37 -0
  100. package/dist/esm/methods/providers/discord.js +28 -0
  101. package/dist/esm/methods/providers/facebook.js +42 -0
  102. package/dist/esm/methods/providers/github.js +29 -0
  103. package/dist/esm/methods/providers/google.js +29 -0
  104. package/dist/esm/methods/providers/index.js +17 -0
  105. package/dist/esm/methods/providers/jumpcloud.js +27 -0
  106. package/dist/esm/methods/providers/keycloak.js +32 -0
  107. package/dist/esm/methods/providers/linkedin.js +28 -0
  108. package/dist/esm/methods/providers/microsoft.js +28 -0
  109. package/dist/esm/methods/providers/slack.js +30 -0
  110. package/dist/esm/methods/providers/spotify.js +28 -0
  111. package/dist/esm/methods/providers/twitch.js +28 -0
  112. package/dist/esm/methods/providers/x.js +28 -0
  113. package/dist/esm/methods/providers/yahoo.js +27 -0
  114. package/dist/esm/pkce.js +4 -16
  115. package/dist/esm/ports/audit-log.js +0 -0
  116. package/dist/esm/ports/config-store.js +0 -0
  117. package/dist/esm/ports/key-store.js +0 -0
  118. package/dist/esm/ports/method-store.js +0 -0
  119. package/dist/esm/ports/session-store.js +0 -0
  120. package/dist/esm/ports/token-store.js +0 -0
  121. package/dist/esm/types/authorization.js +0 -0
  122. package/dist/esm/types/error.js +65 -0
  123. package/dist/esm/types/flow.js +0 -0
  124. package/dist/esm/types/idp.js +0 -0
  125. package/dist/esm/types/method.js +0 -0
  126. package/dist/esm/types/picker.js +0 -0
  127. package/dist/esm/types/result.js +11 -0
  128. package/dist/esm/types/subject.js +0 -0
  129. package/dist/esm/types/tenant.js +5 -0
  130. package/dist/esm/types/token.js +0 -0
  131. package/dist/esm/ui/forms.js +253 -0
  132. package/dist/esm/ui/index.js +8 -0
  133. package/dist/esm/ui/picker.js +49 -0
  134. package/dist/types/adapters/d1/audit-log.d.ts +19 -0
  135. package/dist/types/adapters/d1/audit-log.d.ts.map +1 -0
  136. package/dist/types/adapters/d1/config-store.d.ts +20 -0
  137. package/dist/types/adapters/d1/config-store.d.ts.map +1 -0
  138. package/dist/types/adapters/d1/index.d.ts +35 -0
  139. package/dist/types/adapters/d1/index.d.ts.map +1 -0
  140. package/dist/types/adapters/d1/key-store.d.ts +17 -0
  141. package/dist/types/adapters/d1/key-store.d.ts.map +1 -0
  142. package/dist/types/adapters/d1/method-store.d.ts +21 -0
  143. package/dist/types/adapters/d1/method-store.d.ts.map +1 -0
  144. package/dist/types/adapters/d1/migrations.d.ts +18 -0
  145. package/dist/types/adapters/d1/migrations.d.ts.map +1 -0
  146. package/dist/types/adapters/d1/session-store.d.ts +20 -0
  147. package/dist/types/adapters/d1/session-store.d.ts.map +1 -0
  148. package/dist/types/adapters/d1/session.d.ts +18 -0
  149. package/dist/types/adapters/d1/session.d.ts.map +1 -0
  150. package/dist/types/adapters/d1/token-store.d.ts +29 -0
  151. package/dist/types/adapters/d1/token-store.d.ts.map +1 -0
  152. package/dist/types/adapters/d1/types.d.ts +43 -0
  153. package/dist/types/adapters/d1/types.d.ts.map +1 -0
  154. package/dist/types/adapters/durable-object/index.d.ts +17 -0
  155. package/dist/types/adapters/durable-object/index.d.ts.map +1 -0
  156. package/dist/types/adapters/durable-object/session-store.d.ts +21 -0
  157. package/dist/types/adapters/durable-object/session-store.d.ts.map +1 -0
  158. package/dist/types/adapters/durable-object/types.d.ts +23 -0
  159. package/dist/types/adapters/durable-object/types.d.ts.map +1 -0
  160. package/dist/types/adapters/dynamo/audit-log.d.ts +19 -0
  161. package/dist/types/adapters/dynamo/audit-log.d.ts.map +1 -0
  162. package/dist/types/adapters/dynamo/client.d.ts +111 -0
  163. package/dist/types/adapters/dynamo/client.d.ts.map +1 -0
  164. package/dist/types/adapters/dynamo/config-store.d.ts +21 -0
  165. package/dist/types/adapters/dynamo/config-store.d.ts.map +1 -0
  166. package/dist/types/adapters/dynamo/index.d.ts +60 -0
  167. package/dist/types/adapters/dynamo/index.d.ts.map +1 -0
  168. package/dist/types/adapters/dynamo/key-store.d.ts +23 -0
  169. package/dist/types/adapters/dynamo/key-store.d.ts.map +1 -0
  170. package/dist/types/adapters/dynamo/method-store.d.ts +20 -0
  171. package/dist/types/adapters/dynamo/method-store.d.ts.map +1 -0
  172. package/dist/types/adapters/dynamo/passkey-credential-store.d.ts +47 -0
  173. package/dist/types/adapters/dynamo/passkey-credential-store.d.ts.map +1 -0
  174. package/dist/types/adapters/dynamo/sdk.d.ts +23 -0
  175. package/dist/types/adapters/dynamo/sdk.d.ts.map +1 -0
  176. package/dist/types/adapters/dynamo/session-store.d.ts +20 -0
  177. package/dist/types/adapters/dynamo/session-store.d.ts.map +1 -0
  178. package/dist/types/adapters/dynamo/token-store.d.ts +29 -0
  179. package/dist/types/adapters/dynamo/token-store.d.ts.map +1 -0
  180. package/dist/types/adapters/kms/in-memory-backing.d.ts +9 -0
  181. package/dist/types/adapters/kms/in-memory-backing.d.ts.map +1 -0
  182. package/dist/types/adapters/kms/index.d.ts +35 -0
  183. package/dist/types/adapters/kms/index.d.ts.map +1 -0
  184. package/dist/types/adapters/kms/key-store.d.ts +20 -0
  185. package/dist/types/adapters/kms/key-store.d.ts.map +1 -0
  186. package/dist/types/adapters/kms/sdk.d.ts +16 -0
  187. package/dist/types/adapters/kms/sdk.d.ts.map +1 -0
  188. package/dist/types/adapters/kms/types.d.ts +58 -0
  189. package/dist/types/adapters/kms/types.d.ts.map +1 -0
  190. package/dist/types/adapters/kv/audit-log.d.ts +22 -0
  191. package/dist/types/adapters/kv/audit-log.d.ts.map +1 -0
  192. package/dist/types/adapters/kv/config-store.d.ts +25 -0
  193. package/dist/types/adapters/kv/config-store.d.ts.map +1 -0
  194. package/dist/types/adapters/kv/index.d.ts +21 -0
  195. package/dist/types/adapters/kv/index.d.ts.map +1 -0
  196. package/dist/types/adapters/kv/method-store.d.ts +23 -0
  197. package/dist/types/adapters/kv/method-store.d.ts.map +1 -0
  198. package/dist/types/adapters/kv/types.d.ts +28 -0
  199. package/dist/types/adapters/kv/types.d.ts.map +1 -0
  200. package/dist/types/adapters/memory/audit-log.d.ts +18 -0
  201. package/dist/types/adapters/memory/audit-log.d.ts.map +1 -0
  202. package/dist/types/adapters/memory/clock.d.ts +7 -0
  203. package/dist/types/adapters/memory/clock.d.ts.map +1 -0
  204. package/dist/types/adapters/memory/config-store.d.ts +19 -0
  205. package/dist/types/adapters/memory/config-store.d.ts.map +1 -0
  206. package/dist/types/adapters/memory/index.d.ts +15 -0
  207. package/dist/types/adapters/memory/index.d.ts.map +1 -0
  208. package/dist/types/adapters/memory/key-store.d.ts +17 -0
  209. package/dist/types/adapters/memory/key-store.d.ts.map +1 -0
  210. package/dist/types/adapters/memory/method-store.d.ts +26 -0
  211. package/dist/types/adapters/memory/method-store.d.ts.map +1 -0
  212. package/dist/types/adapters/memory/passkey-credential-store.d.ts +43 -0
  213. package/dist/types/adapters/memory/passkey-credential-store.d.ts.map +1 -0
  214. package/dist/types/adapters/memory/session-store.d.ts +19 -0
  215. package/dist/types/adapters/memory/session-store.d.ts.map +1 -0
  216. package/dist/types/adapters/memory/token-store.d.ts +28 -0
  217. package/dist/types/adapters/memory/token-store.d.ts.map +1 -0
  218. package/dist/types/adapters/postgres/audit-log.d.ts +18 -0
  219. package/dist/types/adapters/postgres/audit-log.d.ts.map +1 -0
  220. package/dist/types/adapters/postgres/config-store.d.ts +21 -0
  221. package/dist/types/adapters/postgres/config-store.d.ts.map +1 -0
  222. package/dist/types/adapters/postgres/executor.d.ts +48 -0
  223. package/dist/types/adapters/postgres/executor.d.ts.map +1 -0
  224. package/dist/types/adapters/postgres/index.d.ts +39 -0
  225. package/dist/types/adapters/postgres/index.d.ts.map +1 -0
  226. package/dist/types/adapters/postgres/key-store.d.ts +23 -0
  227. package/dist/types/adapters/postgres/key-store.d.ts.map +1 -0
  228. package/dist/types/adapters/postgres/method-store.d.ts +21 -0
  229. package/dist/types/adapters/postgres/method-store.d.ts.map +1 -0
  230. package/dist/types/adapters/postgres/migrations.d.ts +22 -0
  231. package/dist/types/adapters/postgres/migrations.d.ts.map +1 -0
  232. package/dist/types/adapters/postgres/passkey-credential-store.d.ts +48 -0
  233. package/dist/types/adapters/postgres/passkey-credential-store.d.ts.map +1 -0
  234. package/dist/types/adapters/postgres/session-store.d.ts +20 -0
  235. package/dist/types/adapters/postgres/session-store.d.ts.map +1 -0
  236. package/dist/types/adapters/postgres/token-store.d.ts +30 -0
  237. package/dist/types/adapters/postgres/token-store.d.ts.map +1 -0
  238. package/dist/types/client.d.ts +1 -1
  239. package/dist/types/client.d.ts.map +1 -1
  240. package/dist/types/domain/audit.d.ts +17 -0
  241. package/dist/types/domain/audit.d.ts.map +1 -0
  242. package/dist/types/domain/authorize.d.ts +125 -0
  243. package/dist/types/domain/authorize.d.ts.map +1 -0
  244. package/dist/types/domain/callback.d.ts +70 -0
  245. package/dist/types/domain/callback.d.ts.map +1 -0
  246. package/dist/types/domain/client-auth.d.ts +57 -0
  247. package/dist/types/domain/client-auth.d.ts.map +1 -0
  248. package/dist/types/domain/client-credentials.d.ts +52 -0
  249. package/dist/types/domain/client-credentials.d.ts.map +1 -0
  250. package/dist/types/domain/crypto.d.ts +53 -0
  251. package/dist/types/domain/crypto.d.ts.map +1 -0
  252. package/dist/types/domain/discovery.d.ts +44 -0
  253. package/dist/types/domain/discovery.d.ts.map +1 -0
  254. package/dist/types/domain/introspect.d.ts +71 -0
  255. package/dist/types/domain/introspect.d.ts.map +1 -0
  256. package/dist/types/domain/jwt.d.ts +48 -0
  257. package/dist/types/domain/jwt.d.ts.map +1 -0
  258. package/dist/types/domain/method-cache.d.ts +42 -0
  259. package/dist/types/domain/method-cache.d.ts.map +1 -0
  260. package/dist/types/domain/method-dispatch.d.ts +37 -0
  261. package/dist/types/domain/method-dispatch.d.ts.map +1 -0
  262. package/dist/types/domain/method-route.d.ts +77 -0
  263. package/dist/types/domain/method-route.d.ts.map +1 -0
  264. package/dist/types/domain/pkce.d.ts +15 -0
  265. package/dist/types/domain/pkce.d.ts.map +1 -0
  266. package/dist/types/domain/refresh.d.ts +43 -0
  267. package/dist/types/domain/refresh.d.ts.map +1 -0
  268. package/dist/types/domain/revoke.d.ts +61 -0
  269. package/dist/types/domain/revoke.d.ts.map +1 -0
  270. package/dist/types/domain/state-envelope.d.ts +30 -0
  271. package/dist/types/domain/state-envelope.d.ts.map +1 -0
  272. package/dist/types/domain/token-exchange.d.ts +67 -0
  273. package/dist/types/domain/token-exchange.d.ts.map +1 -0
  274. package/dist/types/domain/token.d.ts +100 -0
  275. package/dist/types/domain/token.d.ts.map +1 -0
  276. package/dist/types/domain/userinfo.d.ts +22 -0
  277. package/dist/types/domain/userinfo.d.ts.map +1 -0
  278. package/dist/types/http/context.d.ts +63 -0
  279. package/dist/types/http/context.d.ts.map +1 -0
  280. package/dist/types/http/cookies.d.ts +45 -0
  281. package/dist/types/http/cookies.d.ts.map +1 -0
  282. package/dist/types/http/errors.d.ts +36 -0
  283. package/dist/types/http/errors.d.ts.map +1 -0
  284. package/dist/types/http/handlers/authorize.d.ts +3 -0
  285. package/dist/types/http/handlers/authorize.d.ts.map +1 -0
  286. package/dist/types/http/handlers/callback.d.ts +3 -0
  287. package/dist/types/http/handlers/callback.d.ts.map +1 -0
  288. package/dist/types/http/handlers/metadata.d.ts +4 -0
  289. package/dist/types/http/handlers/metadata.d.ts.map +1 -0
  290. package/dist/types/http/handlers/method-route.d.ts +3 -0
  291. package/dist/types/http/handlers/method-route.d.ts.map +1 -0
  292. package/dist/types/http/handlers/revocation.d.ts +4 -0
  293. package/dist/types/http/handlers/revocation.d.ts.map +1 -0
  294. package/dist/types/http/handlers/token.d.ts +3 -0
  295. package/dist/types/http/handlers/token.d.ts.map +1 -0
  296. package/dist/types/http/handlers/userinfo.d.ts +3 -0
  297. package/dist/types/http/handlers/userinfo.d.ts.map +1 -0
  298. package/dist/types/http/middleware/error.d.ts +9 -0
  299. package/dist/types/http/middleware/error.d.ts.map +1 -0
  300. package/dist/types/http/middleware/tenant.d.ts +30 -0
  301. package/dist/types/http/middleware/tenant.d.ts.map +1 -0
  302. package/dist/types/http/resolver.d.ts +22 -0
  303. package/dist/types/http/resolver.d.ts.map +1 -0
  304. package/dist/types/http/router.d.ts +21 -0
  305. package/dist/types/http/router.d.ts.map +1 -0
  306. package/dist/types/http/schemas/authorize.d.ts +52 -0
  307. package/dist/types/http/schemas/authorize.d.ts.map +1 -0
  308. package/dist/types/http/schemas/revocation.d.ts +41 -0
  309. package/dist/types/http/schemas/revocation.d.ts.map +1 -0
  310. package/dist/types/http/schemas/token.d.ts +227 -0
  311. package/dist/types/http/schemas/token.d.ts.map +1 -0
  312. package/dist/types/index.d.ts +63 -13
  313. package/dist/types/index.d.ts.map +1 -1
  314. package/dist/types/methods/code.d.ts +96 -0
  315. package/dist/types/methods/code.d.ts.map +1 -0
  316. package/dist/types/methods/m2m.d.ts +41 -0
  317. package/dist/types/methods/m2m.d.ts.map +1 -0
  318. package/dist/types/methods/oauth2-factory.d.ts +133 -0
  319. package/dist/types/methods/oauth2-factory.d.ts.map +1 -0
  320. package/dist/types/methods/oauth2-generic.d.ts +75 -0
  321. package/dist/types/methods/oauth2-generic.d.ts.map +1 -0
  322. package/dist/types/methods/oidc-generic.d.ts +26 -0
  323. package/dist/types/methods/oidc-generic.d.ts.map +1 -0
  324. package/dist/types/methods/passkey.d.ts +106 -0
  325. package/dist/types/methods/passkey.d.ts.map +1 -0
  326. package/dist/types/methods/password-hash.d.ts +25 -0
  327. package/dist/types/methods/password-hash.d.ts.map +1 -0
  328. package/dist/types/methods/password.d.ts +70 -0
  329. package/dist/types/methods/password.d.ts.map +1 -0
  330. package/dist/types/methods/providers/apple.d.ts +29 -0
  331. package/dist/types/methods/providers/apple.d.ts.map +1 -0
  332. package/dist/types/methods/providers/cognito.d.ts +36 -0
  333. package/dist/types/methods/providers/cognito.d.ts.map +1 -0
  334. package/dist/types/methods/providers/discord.d.ts +22 -0
  335. package/dist/types/methods/providers/discord.d.ts.map +1 -0
  336. package/dist/types/methods/providers/facebook.d.ts +29 -0
  337. package/dist/types/methods/providers/facebook.d.ts.map +1 -0
  338. package/dist/types/methods/providers/github.d.ts +25 -0
  339. package/dist/types/methods/providers/github.d.ts.map +1 -0
  340. package/dist/types/methods/providers/google.d.ts +28 -0
  341. package/dist/types/methods/providers/google.d.ts.map +1 -0
  342. package/dist/types/methods/providers/index.d.ts +24 -0
  343. package/dist/types/methods/providers/index.d.ts.map +1 -0
  344. package/dist/types/methods/providers/jumpcloud.d.ts +22 -0
  345. package/dist/types/methods/providers/jumpcloud.d.ts.map +1 -0
  346. package/dist/types/methods/providers/keycloak.d.ts +30 -0
  347. package/dist/types/methods/providers/keycloak.d.ts.map +1 -0
  348. package/dist/types/methods/providers/linkedin.d.ts +22 -0
  349. package/dist/types/methods/providers/linkedin.d.ts.map +1 -0
  350. package/dist/types/methods/providers/microsoft.d.ts +30 -0
  351. package/dist/types/methods/providers/microsoft.d.ts.map +1 -0
  352. package/dist/types/methods/providers/slack.d.ts +25 -0
  353. package/dist/types/methods/providers/slack.d.ts.map +1 -0
  354. package/dist/types/methods/providers/spotify.d.ts +22 -0
  355. package/dist/types/methods/providers/spotify.d.ts.map +1 -0
  356. package/dist/types/methods/providers/twitch.d.ts +23 -0
  357. package/dist/types/methods/providers/twitch.d.ts.map +1 -0
  358. package/dist/types/methods/providers/x.d.ts +25 -0
  359. package/dist/types/methods/providers/x.d.ts.map +1 -0
  360. package/dist/types/methods/providers/yahoo.d.ts +22 -0
  361. package/dist/types/methods/providers/yahoo.d.ts.map +1 -0
  362. package/dist/types/pkce.d.ts +1 -2
  363. package/dist/types/pkce.d.ts.map +1 -1
  364. package/dist/types/ports/audit-log.d.ts +139 -0
  365. package/dist/types/ports/audit-log.d.ts.map +1 -0
  366. package/dist/types/ports/config-store.d.ts +32 -0
  367. package/dist/types/ports/config-store.d.ts.map +1 -0
  368. package/dist/types/ports/key-store.d.ts +98 -0
  369. package/dist/types/ports/key-store.d.ts.map +1 -0
  370. package/dist/types/ports/method-store.d.ts +29 -0
  371. package/dist/types/ports/method-store.d.ts.map +1 -0
  372. package/dist/types/ports/session-store.d.ts +82 -0
  373. package/dist/types/ports/session-store.d.ts.map +1 -0
  374. package/dist/types/ports/token-store.d.ts +93 -0
  375. package/dist/types/ports/token-store.d.ts.map +1 -0
  376. package/dist/types/types/authorization.d.ts +52 -0
  377. package/dist/types/types/authorization.d.ts.map +1 -0
  378. package/dist/types/types/error.d.ts +92 -0
  379. package/dist/types/types/error.d.ts.map +1 -0
  380. package/dist/types/types/flow.d.ts +87 -0
  381. package/dist/types/types/flow.d.ts.map +1 -0
  382. package/dist/types/types/idp.d.ts +234 -0
  383. package/dist/types/types/idp.d.ts.map +1 -0
  384. package/dist/types/types/method.d.ts +256 -0
  385. package/dist/types/types/method.d.ts.map +1 -0
  386. package/dist/types/types/picker.d.ts +31 -0
  387. package/dist/types/types/picker.d.ts.map +1 -0
  388. package/dist/types/types/result.d.ts +29 -0
  389. package/dist/types/types/result.d.ts.map +1 -0
  390. package/dist/types/types/subject.d.ts +47 -0
  391. package/dist/types/types/subject.d.ts.map +1 -0
  392. package/dist/types/types/tenant.d.ts +239 -0
  393. package/dist/types/types/tenant.d.ts.map +1 -0
  394. package/dist/types/types/token.d.ts +103 -0
  395. package/dist/types/types/token.d.ts.map +1 -0
  396. package/dist/types/ui/forms.d.ts +35 -0
  397. package/dist/types/ui/forms.d.ts.map +1 -0
  398. package/dist/types/ui/index.d.ts +14 -0
  399. package/dist/types/ui/index.d.ts.map +1 -0
  400. package/dist/types/ui/picker.d.ts +18 -0
  401. package/dist/types/ui/picker.d.ts.map +1 -0
  402. package/package.json +41 -6
  403. package/src/adapters/d1/audit-log.ts +32 -0
  404. package/src/adapters/d1/config-store.ts +67 -0
  405. package/src/adapters/d1/index.ts +41 -0
  406. package/src/adapters/d1/key-store.ts +218 -0
  407. package/src/adapters/d1/method-store.ts +103 -0
  408. package/src/adapters/d1/migrations.ts +89 -0
  409. package/src/adapters/d1/session-store.ts +230 -0
  410. package/src/adapters/d1/session.ts +38 -0
  411. package/src/adapters/d1/token-store.ts +251 -0
  412. package/src/adapters/d1/types.ts +53 -0
  413. package/src/adapters/durable-object/index.ts +23 -0
  414. package/src/adapters/durable-object/session-store.ts +227 -0
  415. package/src/adapters/durable-object/types.ts +25 -0
  416. package/src/adapters/dynamo/audit-log.ts +35 -0
  417. package/src/adapters/dynamo/client.ts +118 -0
  418. package/src/adapters/dynamo/config-store.ts +72 -0
  419. package/src/adapters/dynamo/index.ts +81 -0
  420. package/src/adapters/dynamo/key-store.ts +267 -0
  421. package/src/adapters/dynamo/method-store.ts +105 -0
  422. package/src/adapters/dynamo/passkey-credential-store.ts +132 -0
  423. package/src/adapters/dynamo/sdk.ts +189 -0
  424. package/src/adapters/dynamo/session-store.ts +229 -0
  425. package/src/adapters/dynamo/token-store.ts +248 -0
  426. package/src/adapters/kms/in-memory-backing.ts +36 -0
  427. package/src/adapters/kms/index.ts +39 -0
  428. package/src/adapters/kms/key-store.ts +176 -0
  429. package/src/adapters/kms/sdk.ts +39 -0
  430. package/src/adapters/kms/types.ts +61 -0
  431. package/src/adapters/kv/audit-log.ts +40 -0
  432. package/src/adapters/kv/config-store.ts +63 -0
  433. package/src/adapters/kv/index.ts +20 -0
  434. package/src/adapters/kv/method-store.ts +98 -0
  435. package/src/adapters/kv/types.ts +26 -0
  436. package/src/adapters/memory/audit-log.ts +28 -0
  437. package/src/adapters/memory/clock.ts +7 -0
  438. package/src/adapters/memory/config-store.ts +41 -0
  439. package/src/adapters/memory/index.ts +26 -0
  440. package/src/adapters/memory/key-store.ts +102 -0
  441. package/src/adapters/memory/method-store.ts +75 -0
  442. package/src/adapters/memory/passkey-credential-store.ts +97 -0
  443. package/src/adapters/memory/session-store.ts +128 -0
  444. package/src/adapters/memory/token-store.ts +165 -0
  445. package/src/adapters/postgres/audit-log.ts +34 -0
  446. package/src/adapters/postgres/config-store.ts +72 -0
  447. package/src/adapters/postgres/executor.ts +76 -0
  448. package/src/adapters/postgres/index.ts +60 -0
  449. package/src/adapters/postgres/key-store.ts +334 -0
  450. package/src/adapters/postgres/method-store.ts +104 -0
  451. package/src/adapters/postgres/migrations.ts +131 -0
  452. package/src/adapters/postgres/passkey-credential-store.ts +150 -0
  453. package/src/adapters/postgres/session-store.ts +216 -0
  454. package/src/adapters/postgres/token-store.ts +263 -0
  455. package/src/client.ts +50 -16
  456. package/src/domain/audit.ts +28 -0
  457. package/src/domain/authorize.ts +405 -0
  458. package/src/domain/callback.ts +263 -0
  459. package/src/domain/client-auth.ts +116 -0
  460. package/src/domain/client-credentials.ts +178 -0
  461. package/src/domain/crypto.ts +168 -0
  462. package/src/domain/discovery.ts +83 -0
  463. package/src/domain/introspect.ts +145 -0
  464. package/src/domain/jwt.ts +106 -0
  465. package/src/domain/method-cache.ts +220 -0
  466. package/src/domain/method-dispatch.ts +95 -0
  467. package/src/domain/method-route.ts +208 -0
  468. package/src/domain/pkce.ts +37 -0
  469. package/src/domain/refresh.ts +169 -0
  470. package/src/domain/revoke.ts +161 -0
  471. package/src/domain/state-envelope.ts +142 -0
  472. package/src/domain/token-exchange.ts +232 -0
  473. package/src/domain/token.ts +357 -0
  474. package/src/domain/userinfo.ts +56 -0
  475. package/src/http/context.ts +86 -0
  476. package/src/http/cookies.ts +167 -0
  477. package/src/http/errors.ts +98 -0
  478. package/src/http/handlers/authorize.ts +221 -0
  479. package/src/http/handlers/callback.ts +77 -0
  480. package/src/http/handlers/metadata.ts +44 -0
  481. package/src/http/handlers/method-route.ts +115 -0
  482. package/src/http/handlers/revocation.ts +151 -0
  483. package/src/http/handlers/token.ts +244 -0
  484. package/src/http/handlers/userinfo.ts +66 -0
  485. package/src/http/middleware/error.ts +26 -0
  486. package/src/http/middleware/tenant.ts +165 -0
  487. package/src/http/resolver.ts +34 -0
  488. package/src/http/router.ts +66 -0
  489. package/src/http/schemas/authorize.ts +58 -0
  490. package/src/http/schemas/revocation.ts +23 -0
  491. package/src/http/schemas/token.ts +85 -0
  492. package/src/index.ts +266 -20
  493. package/src/methods/code.ts +359 -0
  494. package/src/methods/m2m.ts +82 -0
  495. package/src/methods/oauth2-factory.ts +151 -0
  496. package/src/methods/oauth2-generic.ts +360 -0
  497. package/src/methods/oidc-generic.ts +109 -0
  498. package/src/methods/passkey.ts +419 -0
  499. package/src/methods/password-hash.ts +134 -0
  500. package/src/methods/password.ts +298 -0
  501. package/src/methods/providers/apple.ts +42 -0
  502. package/src/methods/providers/cognito.ts +55 -0
  503. package/src/methods/providers/discord.ts +37 -0
  504. package/src/methods/providers/facebook.ts +54 -0
  505. package/src/methods/providers/github.ts +42 -0
  506. package/src/methods/providers/google.ts +43 -0
  507. package/src/methods/providers/index.ts +23 -0
  508. package/src/methods/providers/jumpcloud.ts +36 -0
  509. package/src/methods/providers/keycloak.ts +42 -0
  510. package/src/methods/providers/linkedin.ts +37 -0
  511. package/src/methods/providers/microsoft.ts +42 -0
  512. package/src/methods/providers/slack.ts +42 -0
  513. package/src/methods/providers/spotify.ts +37 -0
  514. package/src/methods/providers/twitch.ts +38 -0
  515. package/src/methods/providers/x.ts +40 -0
  516. package/src/methods/providers/yahoo.ts +36 -0
  517. package/src/pkce.ts +20 -21
  518. package/src/ports/CONSISTENCY.md +88 -0
  519. package/src/ports/audit-log.ts +148 -0
  520. package/src/ports/config-store.ts +34 -0
  521. package/src/ports/key-store.ts +106 -0
  522. package/src/ports/method-store.ts +41 -0
  523. package/src/ports/session-store.ts +98 -0
  524. package/src/ports/token-store.ts +103 -0
  525. package/src/types/authorization.ts +53 -0
  526. package/src/types/error.ts +123 -0
  527. package/src/types/flow.ts +89 -0
  528. package/src/types/idp.ts +269 -0
  529. package/src/types/method.ts +270 -0
  530. package/src/types/picker.ts +32 -0
  531. package/src/types/result.ts +23 -0
  532. package/src/types/subject.ts +50 -0
  533. package/src/types/tenant.ts +248 -0
  534. package/src/types/token.ts +101 -0
  535. package/src/ui/forms.ts +289 -0
  536. package/src/ui/index.ts +14 -0
  537. package/src/ui/picker.ts +63 -0
  538. package/dist/esm/issuer.js +0 -691
  539. package/dist/esm/jwt.js +0 -16
  540. package/dist/esm/keys.js +0 -113
  541. package/dist/esm/provider/apple.js +0 -28
  542. package/dist/esm/provider/arctic.js +0 -43
  543. package/dist/esm/provider/code.js +0 -58
  544. package/dist/esm/provider/cognito.js +0 -16
  545. package/dist/esm/provider/discord.js +0 -15
  546. package/dist/esm/provider/facebook.js +0 -24
  547. package/dist/esm/provider/github.js +0 -15
  548. package/dist/esm/provider/google.js +0 -25
  549. package/dist/esm/provider/index.js +0 -3
  550. package/dist/esm/provider/jumpcloud.js +0 -15
  551. package/dist/esm/provider/keycloak.js +0 -15
  552. package/dist/esm/provider/linkedin.js +0 -15
  553. package/dist/esm/provider/m2m.js +0 -16
  554. package/dist/esm/provider/microsoft.js +0 -24
  555. package/dist/esm/provider/oauth2.js +0 -119
  556. package/dist/esm/provider/oidc.js +0 -69
  557. package/dist/esm/provider/passkey.js +0 -315
  558. package/dist/esm/provider/password.js +0 -306
  559. package/dist/esm/provider/provider.js +0 -10
  560. package/dist/esm/provider/slack.js +0 -15
  561. package/dist/esm/provider/spotify.js +0 -15
  562. package/dist/esm/provider/twitch.js +0 -15
  563. package/dist/esm/provider/x.js +0 -16
  564. package/dist/esm/provider/yahoo.js +0 -15
  565. package/dist/esm/random.js +0 -27
  566. package/dist/esm/storage/aws.js +0 -39
  567. package/dist/esm/storage/cloudflare.js +0 -42
  568. package/dist/esm/storage/dynamo.js +0 -116
  569. package/dist/esm/storage/memory.js +0 -88
  570. package/dist/esm/storage/storage.js +0 -36
  571. package/dist/esm/subject.js +0 -7
  572. package/dist/esm/ui/base.js +0 -407
  573. package/dist/esm/ui/code.js +0 -151
  574. package/dist/esm/ui/form.js +0 -43
  575. package/dist/esm/ui/icon.js +0 -92
  576. package/dist/esm/ui/passkey.js +0 -329
  577. package/dist/esm/ui/password.js +0 -338
  578. package/dist/esm/ui/select.js +0 -187
  579. package/dist/esm/ui/theme.js +0 -115
  580. package/dist/esm/util.js +0 -54
  581. package/dist/types/issuer.d.ts +0 -607
  582. package/dist/types/issuer.d.ts.map +0 -1
  583. package/dist/types/jwt.d.ts +0 -6
  584. package/dist/types/jwt.d.ts.map +0 -1
  585. package/dist/types/keys.d.ts +0 -18
  586. package/dist/types/keys.d.ts.map +0 -1
  587. package/dist/types/provider/apple.d.ts +0 -108
  588. package/dist/types/provider/apple.d.ts.map +0 -1
  589. package/dist/types/provider/arctic.d.ts +0 -16
  590. package/dist/types/provider/arctic.d.ts.map +0 -1
  591. package/dist/types/provider/code.d.ts +0 -74
  592. package/dist/types/provider/code.d.ts.map +0 -1
  593. package/dist/types/provider/cognito.d.ts +0 -64
  594. package/dist/types/provider/cognito.d.ts.map +0 -1
  595. package/dist/types/provider/discord.d.ts +0 -38
  596. package/dist/types/provider/discord.d.ts.map +0 -1
  597. package/dist/types/provider/facebook.d.ts +0 -74
  598. package/dist/types/provider/facebook.d.ts.map +0 -1
  599. package/dist/types/provider/github.d.ts +0 -38
  600. package/dist/types/provider/github.d.ts.map +0 -1
  601. package/dist/types/provider/google.d.ts +0 -74
  602. package/dist/types/provider/google.d.ts.map +0 -1
  603. package/dist/types/provider/index.d.ts +0 -4
  604. package/dist/types/provider/index.d.ts.map +0 -1
  605. package/dist/types/provider/jumpcloud.d.ts +0 -38
  606. package/dist/types/provider/jumpcloud.d.ts.map +0 -1
  607. package/dist/types/provider/keycloak.d.ts +0 -67
  608. package/dist/types/provider/keycloak.d.ts.map +0 -1
  609. package/dist/types/provider/linkedin.d.ts +0 -6
  610. package/dist/types/provider/linkedin.d.ts.map +0 -1
  611. package/dist/types/provider/m2m.d.ts +0 -34
  612. package/dist/types/provider/m2m.d.ts.map +0 -1
  613. package/dist/types/provider/microsoft.d.ts +0 -89
  614. package/dist/types/provider/microsoft.d.ts.map +0 -1
  615. package/dist/types/provider/oauth2.d.ts +0 -133
  616. package/dist/types/provider/oauth2.d.ts.map +0 -1
  617. package/dist/types/provider/oidc.d.ts +0 -91
  618. package/dist/types/provider/oidc.d.ts.map +0 -1
  619. package/dist/types/provider/passkey.d.ts +0 -143
  620. package/dist/types/provider/passkey.d.ts.map +0 -1
  621. package/dist/types/provider/password.d.ts +0 -210
  622. package/dist/types/provider/password.d.ts.map +0 -1
  623. package/dist/types/provider/provider.d.ts +0 -29
  624. package/dist/types/provider/provider.d.ts.map +0 -1
  625. package/dist/types/provider/slack.d.ts +0 -59
  626. package/dist/types/provider/slack.d.ts.map +0 -1
  627. package/dist/types/provider/spotify.d.ts +0 -38
  628. package/dist/types/provider/spotify.d.ts.map +0 -1
  629. package/dist/types/provider/twitch.d.ts +0 -38
  630. package/dist/types/provider/twitch.d.ts.map +0 -1
  631. package/dist/types/provider/x.d.ts +0 -38
  632. package/dist/types/provider/x.d.ts.map +0 -1
  633. package/dist/types/provider/yahoo.d.ts +0 -38
  634. package/dist/types/provider/yahoo.d.ts.map +0 -1
  635. package/dist/types/random.d.ts +0 -3
  636. package/dist/types/random.d.ts.map +0 -1
  637. package/dist/types/storage/aws.d.ts +0 -4
  638. package/dist/types/storage/aws.d.ts.map +0 -1
  639. package/dist/types/storage/cloudflare.d.ts +0 -34
  640. package/dist/types/storage/cloudflare.d.ts.map +0 -1
  641. package/dist/types/storage/dynamo.d.ts +0 -65
  642. package/dist/types/storage/dynamo.d.ts.map +0 -1
  643. package/dist/types/storage/memory.d.ts +0 -49
  644. package/dist/types/storage/memory.d.ts.map +0 -1
  645. package/dist/types/storage/storage.d.ts +0 -15
  646. package/dist/types/storage/storage.d.ts.map +0 -1
  647. package/dist/types/subject.d.ts +0 -122
  648. package/dist/types/subject.d.ts.map +0 -1
  649. package/dist/types/ui/base.d.ts +0 -5
  650. package/dist/types/ui/base.d.ts.map +0 -1
  651. package/dist/types/ui/code.d.ts +0 -104
  652. package/dist/types/ui/code.d.ts.map +0 -1
  653. package/dist/types/ui/form.d.ts +0 -6
  654. package/dist/types/ui/form.d.ts.map +0 -1
  655. package/dist/types/ui/icon.d.ts +0 -6
  656. package/dist/types/ui/icon.d.ts.map +0 -1
  657. package/dist/types/ui/passkey.d.ts +0 -5
  658. package/dist/types/ui/passkey.d.ts.map +0 -1
  659. package/dist/types/ui/password.d.ts +0 -139
  660. package/dist/types/ui/password.d.ts.map +0 -1
  661. package/dist/types/ui/select.d.ts +0 -55
  662. package/dist/types/ui/select.d.ts.map +0 -1
  663. package/dist/types/ui/theme.d.ts +0 -207
  664. package/dist/types/ui/theme.d.ts.map +0 -1
  665. package/dist/types/util.d.ts +0 -8
  666. package/dist/types/util.d.ts.map +0 -1
  667. package/src/css.d.ts +0 -4
  668. package/src/issuer.ts +0 -1628
  669. package/src/jwt.ts +0 -17
  670. package/src/keys.ts +0 -139
  671. package/src/provider/apple.ts +0 -127
  672. package/src/provider/arctic.ts +0 -66
  673. package/src/provider/code.ts +0 -227
  674. package/src/provider/cognito.ts +0 -74
  675. package/src/provider/discord.ts +0 -45
  676. package/src/provider/facebook.ts +0 -84
  677. package/src/provider/github.ts +0 -45
  678. package/src/provider/google.ts +0 -85
  679. package/src/provider/index.ts +0 -3
  680. package/src/provider/jumpcloud.ts +0 -45
  681. package/src/provider/keycloak.ts +0 -75
  682. package/src/provider/linkedin.ts +0 -12
  683. package/src/provider/m2m.ts +0 -56
  684. package/src/provider/microsoft.ts +0 -100
  685. package/src/provider/oauth2.ts +0 -297
  686. package/src/provider/oidc.ts +0 -179
  687. package/src/provider/passkey.ts +0 -655
  688. package/src/provider/password.ts +0 -672
  689. package/src/provider/provider.ts +0 -33
  690. package/src/provider/slack.ts +0 -67
  691. package/src/provider/spotify.ts +0 -45
  692. package/src/provider/twitch.ts +0 -45
  693. package/src/provider/x.ts +0 -46
  694. package/src/provider/yahoo.ts +0 -45
  695. package/src/random.ts +0 -24
  696. package/src/storage/aws.ts +0 -59
  697. package/src/storage/cloudflare.ts +0 -77
  698. package/src/storage/dynamo.ts +0 -193
  699. package/src/storage/memory.ts +0 -135
  700. package/src/storage/storage.ts +0 -46
  701. package/src/subject.ts +0 -130
  702. package/src/ui/base.tsx +0 -118
  703. package/src/ui/code.tsx +0 -215
  704. package/src/ui/form.tsx +0 -40
  705. package/src/ui/icon.tsx +0 -95
  706. package/src/ui/passkey.tsx +0 -321
  707. package/src/ui/password.tsx +0 -405
  708. package/src/ui/select.tsx +0 -221
  709. package/src/ui/theme.ts +0 -319
  710. package/src/ui/ui.css +0 -252
  711. package/src/util.ts +0 -58
  712. /package/dist/esm/{css.d.js → adapters/d1/types.js} +0 -0
@@ -0,0 +1,133 @@
1
+ /**
2
+ * `oauth2Factory` and `oidcFactory` — generic multi-tenant factories.
3
+ *
4
+ * Use these when each tenant brings its own OAuth 2.0 / OIDC issuer,
5
+ * client credentials, scopes, and endpoint URLs. The factory's
6
+ * `configSchema` accepts a per-tenant blob and `build()` delegates to
7
+ * `buildOauth2Method` / `buildOidcMethod` to produce the actual
8
+ * `AuthMethod`.
9
+ *
10
+ * For built-in vendor wrappers (Google, GitHub, Apple, etc.) see
11
+ * `./providers/*` — those bake in the issuer URL and provider quirks.
12
+ *
13
+ * For single-tenant deployments where the issuer / endpoints are
14
+ * compile-time constants, you can still call `buildOauth2Method` /
15
+ * `buildOidcMethod` directly inside your own `AuthMethodFactory` —
16
+ * those entry points are the underlying "build a static AuthMethod"
17
+ * primitives; this file just wraps them in the multi-tenant factory
18
+ * shape.
19
+ */
20
+ import { z } from "zod";
21
+ import type { Oauth2Properties, Oauth2State } from "./oauth2-generic";
22
+ import type { AuthMethodFactory } from "../types/method";
23
+ declare const oauth2ConfigSchema: z.ZodObject<{
24
+ clientId: z.ZodString;
25
+ clientSecret: z.ZodOptional<z.ZodString>;
26
+ scopes: z.ZodArray<z.ZodString, "many">;
27
+ authorizationUrl: z.ZodString;
28
+ tokenUrl: z.ZodString;
29
+ jwksUri: z.ZodOptional<z.ZodString>;
30
+ expectedIssuer: z.ZodOptional<z.ZodString>;
31
+ extraAuthorizeParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
32
+ pkce: z.ZodOptional<z.ZodEnum<["S256", "none"]>>;
33
+ responseMode: z.ZodOptional<z.ZodEnum<["query", "form_post"]>>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ clientId: string;
36
+ scopes: string[];
37
+ authorizationUrl: string;
38
+ tokenUrl: string;
39
+ clientSecret?: string | undefined;
40
+ jwksUri?: string | undefined;
41
+ expectedIssuer?: string | undefined;
42
+ extraAuthorizeParams?: Record<string, string> | undefined;
43
+ pkce?: "S256" | "none" | undefined;
44
+ responseMode?: "query" | "form_post" | undefined;
45
+ }, {
46
+ clientId: string;
47
+ scopes: string[];
48
+ authorizationUrl: string;
49
+ tokenUrl: string;
50
+ clientSecret?: string | undefined;
51
+ jwksUri?: string | undefined;
52
+ expectedIssuer?: string | undefined;
53
+ extraAuthorizeParams?: Record<string, string> | undefined;
54
+ pkce?: "S256" | "none" | undefined;
55
+ responseMode?: "query" | "form_post" | undefined;
56
+ }>;
57
+ export type Oauth2FactoryConfig = z.infer<typeof oauth2ConfigSchema>;
58
+ /**
59
+ * Generic OAuth 2.0 factory.
60
+ *
61
+ * `kind: "oauth2"`. Use a different `MethodConfig.id` per instance to
62
+ * register multiple OAuth 2.0 upstreams against a single tenant.
63
+ */
64
+ export declare const oauth2Factory: AuthMethodFactory<Oauth2Properties, Oauth2State, Oauth2FactoryConfig>;
65
+ declare const oidcConfigSchema: z.ZodObject<{
66
+ issuer: z.ZodString;
67
+ clientId: z.ZodString;
68
+ clientSecret: z.ZodOptional<z.ZodString>;
69
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
70
+ extraAuthorizeParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
71
+ pkce: z.ZodOptional<z.ZodEnum<["S256", "none"]>>;
72
+ responseMode: z.ZodOptional<z.ZodEnum<["query", "form_post"]>>;
73
+ /**
74
+ * Skip discovery and use these endpoints directly. Useful for
75
+ * providers with non-standard or fragmented discovery
76
+ * (Microsoft tenant-templated, legacy stacks).
77
+ */
78
+ endpoints: z.ZodOptional<z.ZodObject<{
79
+ authorization_endpoint: z.ZodString;
80
+ token_endpoint: z.ZodString;
81
+ jwks_uri: z.ZodString;
82
+ issuer: z.ZodString;
83
+ }, "strip", z.ZodTypeAny, {
84
+ issuer: string;
85
+ authorization_endpoint: string;
86
+ token_endpoint: string;
87
+ jwks_uri: string;
88
+ }, {
89
+ issuer: string;
90
+ authorization_endpoint: string;
91
+ token_endpoint: string;
92
+ jwks_uri: string;
93
+ }>>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ issuer: string;
96
+ clientId: string;
97
+ scopes?: string[] | undefined;
98
+ clientSecret?: string | undefined;
99
+ extraAuthorizeParams?: Record<string, string> | undefined;
100
+ pkce?: "S256" | "none" | undefined;
101
+ responseMode?: "query" | "form_post" | undefined;
102
+ endpoints?: {
103
+ issuer: string;
104
+ authorization_endpoint: string;
105
+ token_endpoint: string;
106
+ jwks_uri: string;
107
+ } | undefined;
108
+ }, {
109
+ issuer: string;
110
+ clientId: string;
111
+ scopes?: string[] | undefined;
112
+ clientSecret?: string | undefined;
113
+ extraAuthorizeParams?: Record<string, string> | undefined;
114
+ pkce?: "S256" | "none" | undefined;
115
+ responseMode?: "query" | "form_post" | undefined;
116
+ endpoints?: {
117
+ issuer: string;
118
+ authorization_endpoint: string;
119
+ token_endpoint: string;
120
+ jwks_uri: string;
121
+ } | undefined;
122
+ }>;
123
+ export type OidcFactoryConfig = z.infer<typeof oidcConfigSchema>;
124
+ /**
125
+ * Generic OIDC factory. Auto-discovers `<issuer>/.well-known/openid-
126
+ * configuration` unless `endpoints` is supplied.
127
+ *
128
+ * `kind: "oidc"`. Use a different `MethodConfig.id` per instance to
129
+ * register multiple OIDC upstreams against a single tenant.
130
+ */
131
+ export declare const oidcFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, OidcFactoryConfig>;
132
+ export {};
133
+ //# sourceMappingURL=oauth2-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-factory.d.ts","sourceRoot":"","sources":["../../../src/methods/oauth2-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEpE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWtB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,iBAAiB,CAC3C,gBAAgB,EAChB,WAAW,EACX,mBAAmB,CA6BpB,CAAA;AAED,QAAA,MAAM,gBAAgB;;;;;;;;IAQpB;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASH,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,iBAAiB,CACzC,gBAAgB,EAChB,WAAW,EACX,iBAAiB,CAkClB,CAAA"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Decoded id_token claims surfaced through the public API. Structurally
3
+ * identical to `jose`'s `JWTPayload`, declared locally so consumers
4
+ * never depend on this package's specific `jose` version. All claim
5
+ * names are optional and weakly typed — runtime code should narrow with
6
+ * `typeof claims.sub === "string"` style checks before use.
7
+ */
8
+ type IdTokenClaims = Record<string, unknown>;
9
+ import type { AuthMethod } from "../types/method";
10
+ import type { MethodType } from "../types/tenant";
11
+ /** The payload every OAuth/OIDC method emits to the framework's `success` callback. */
12
+ export type Oauth2Properties = {
13
+ tokens: {
14
+ access: string;
15
+ refresh?: string;
16
+ expiresIn?: number;
17
+ /** Present when the upstream returned an id_token (OIDC providers, some OAuth ones). */
18
+ idToken?: string;
19
+ };
20
+ /** Claims decoded from the id_token if one was returned. */
21
+ idTokenClaims?: IdTokenClaims;
22
+ /** Raw token-endpoint response. Surfaced for callers that need provider-specific fields. */
23
+ raw: Record<string, unknown>;
24
+ };
25
+ /** Method-private state carried on the FlowRecord through the round trip. */
26
+ export type Oauth2State = {
27
+ /** PKCE verifier sent at /authorize; checked into the token-exchange body. */
28
+ pkceVerifier?: string;
29
+ };
30
+ export type Oauth2MethodInput = {
31
+ /** From `AuthMethodFactory.build({ id })`. */
32
+ id: string;
33
+ /** From `AuthMethodFactory.build({ kind })`. */
34
+ kind: string;
35
+ /** `MethodType` advertised in `MethodConfig.type`. Defaults to `"oauth2"`. */
36
+ type?: MethodType;
37
+ /** Upstream OAuth client id (per-tenant). */
38
+ clientId: string;
39
+ /** Upstream OAuth client secret (per-tenant). Public clients omit. */
40
+ clientSecret?: string;
41
+ /** Scopes to request. */
42
+ scopes: string[];
43
+ /** Upstream URLs. */
44
+ authorizationUrl: string;
45
+ tokenUrl: string;
46
+ /** JWKS URI for id_token verification. OIDC providers set this. */
47
+ jwksUri?: string;
48
+ /** Expected id_token issuer (used when `jwksUri` is set). */
49
+ expectedIssuer?: string;
50
+ /** Provider-specific query parameters appended to `/authorize`. */
51
+ extraAuthorizeParams?: Record<string, string>;
52
+ /**
53
+ * PKCE mode. `"S256"` is the OAuth 2.1 default; `"none"` skips PKCE for
54
+ * legacy upstreams that don't accept `code_challenge`.
55
+ */
56
+ pkce?: "S256" | "none";
57
+ /**
58
+ * `response_mode`. Apple requires `form_post` when requesting `name` /
59
+ * `email` scopes; most providers leave this unset.
60
+ */
61
+ responseMode?: "query" | "form_post";
62
+ /**
63
+ * Hook to map the token response + id_token claims into a stable
64
+ * provider subject id. Default: prefer `idTokenClaims.sub`, else
65
+ * `raw.user_id` / `raw.id`. Providers that compute the id differently
66
+ * (e.g. Discord stamps `id` on the userinfo) override here.
67
+ */
68
+ deriveSubject?: (input: {
69
+ raw: Record<string, unknown>;
70
+ idTokenClaims?: IdTokenClaims;
71
+ }) => string;
72
+ };
73
+ export declare function buildOauth2Method(opts: Oauth2MethodInput): Promise<AuthMethod<Oauth2Properties, Oauth2State>>;
74
+ export {};
75
+ //# sourceMappingURL=oauth2-generic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-generic.d.ts","sourceRoot":"","sources":["../../../src/methods/oauth2-generic.ts"],"names":[],"mappings":"AA8BA;;;;;;GAMG;AACH,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAG5C,OAAO,KAAK,EAAE,UAAU,EAA+B,MAAM,iBAAiB,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,wFAAwF;QACxF,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,4DAA4D;IAC5D,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,4FAA4F;IAC5F,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG;IACxB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,UAAU,CAAA;IAEjB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAEhB,qBAAqB;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAA;KAC9B,KAAK,MAAM,CAAA;CACb,CAAA;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,CA6BpD"}
@@ -0,0 +1,26 @@
1
+ import type { Oauth2MethodInput, Oauth2Properties, Oauth2State } from "./oauth2-generic";
2
+ import type { AuthMethod } from "../types/method";
3
+ type Endpoints = {
4
+ authorization_endpoint: string;
5
+ token_endpoint: string;
6
+ jwks_uri: string;
7
+ issuer: string;
8
+ };
9
+ export type OidcMethodInput = Omit<Oauth2MethodInput, "authorizationUrl" | "tokenUrl" | "jwksUri" | "expectedIssuer" | "type"> & {
10
+ /** Issuer URL — the framework appends `/.well-known/openid-configuration`. */
11
+ issuer: string;
12
+ /**
13
+ * Skip discovery and use these endpoints directly. Useful for providers
14
+ * with non-standard or fragmented discovery (Microsoft tenant-templated,
15
+ * legacy stacks).
16
+ */
17
+ endpoints?: Endpoints;
18
+ };
19
+ /**
20
+ * Async — the factory's `build()` awaits discovery if `endpoints` is not
21
+ * provided. Result is cached inside `MethodCache` until the tenant config
22
+ * is invalidated.
23
+ */
24
+ export declare function buildOidcMethod(opts: OidcMethodInput): Promise<AuthMethod<Oauth2Properties, Oauth2State>>;
25
+ export {};
26
+ //# sourceMappingURL=oidc-generic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidc-generic.d.ts","sourceRoot":"","sources":["../../../src/methods/oidc-generic.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACZ,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,KAAK,SAAS,GAAG;IACf,sBAAsB,EAAE,MAAM,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,iBAAiB,EACjB,kBAAkB,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,MAAM,CACxE,GAAG;IACF,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,CAAA;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAcpD"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * `passkeyMethod` — WebAuthn factory using `@simplewebauthn/server`.
3
+ *
4
+ * Routes:
5
+ * GET /authorize → render the username form.
6
+ * POST /authenticate-options → mint challenge, return PublicKeyCredentialRequestOptionsJSON.
7
+ * POST /authenticate-verify → verify assertion, return success.
8
+ * POST /register-options → mint registration challenge, return options.
9
+ * POST /register-verify → verify attestation, persist credential.
10
+ *
11
+ * The framework knows nothing about credentials; the tenant supplies a
12
+ * `credentials` store. The method calls into it for lookups + writes. The
13
+ * RP id and origin are configured per factory at build time; multi-domain
14
+ * tenants instantiate multiple factories with distinct ids.
15
+ *
16
+ * Phase 4 ships the authentication ceremony end-to-end and exposes the
17
+ * registration helpers so the management console (Phase 7) can wire them
18
+ * up. Full registration UI / passkey enrollment flow polishes lands with
19
+ * the console.
20
+ */
21
+ import { z } from "zod";
22
+ import type { AuthMethodFactory } from "../types/method";
23
+ export type PasskeyProperties = {
24
+ userId: string;
25
+ credentialId: string;
26
+ };
27
+ export type StoredCredential = {
28
+ /** Base64url credential id. */
29
+ credentialId: string;
30
+ /** Base64url public key. */
31
+ publicKey: string;
32
+ /** WebAuthn signature counter for replay protection. */
33
+ counter: number;
34
+ /** Optional transports hint stored at registration. */
35
+ transports?: string[];
36
+ userId: string;
37
+ };
38
+ export type PasskeyCredentialStore = {
39
+ findByUsername(username: string, tenantId: string): Promise<{
40
+ userId: string;
41
+ credentials: StoredCredential[];
42
+ } | null>;
43
+ findById(credentialId: string, tenantId: string): Promise<StoredCredential | null>;
44
+ /** Update the signature counter after a successful verification. */
45
+ updateCounter(input: {
46
+ credentialId: string;
47
+ counter: number;
48
+ tenantId: string;
49
+ }): Promise<void>;
50
+ /** Persist a newly-registered credential. */
51
+ create?(input: {
52
+ userId: string;
53
+ credential: StoredCredential;
54
+ tenantId: string;
55
+ }): Promise<void>;
56
+ };
57
+ export type PasskeyMethodOptions = {
58
+ /**
59
+ * Tenant-supplied credential store. The framework calls into it for
60
+ * lookups + writes; it knows nothing about how credentials are stored.
61
+ */
62
+ credentials: PasskeyCredentialStore;
63
+ };
64
+ export type PasskeyState = {
65
+ phase: "auth";
66
+ challenge: string;
67
+ username: string;
68
+ } | {
69
+ phase: "register";
70
+ challenge: string;
71
+ userId: string;
72
+ username: string;
73
+ };
74
+ /**
75
+ * Per-tenant config. `rpID` is the WebAuthn Relying Party ID (the
76
+ * registrable domain — e.g. `"acme.example"`); each tenant typically
77
+ * runs on its own domain so this is per-tenant, not per-factory.
78
+ *
79
+ * `origins` is the list of accepted browser origins (HTTPS URLs).
80
+ * Multi-origin support is useful for tenants with both an app subdomain
81
+ * and a marketing domain that both terminate at the IdP.
82
+ */
83
+ declare const configSchema: z.ZodObject<{
84
+ /** Display name shown by the authenticator UI. */
85
+ rpName: z.ZodString;
86
+ /** Relying Party ID — the registrable domain. */
87
+ rpID: z.ZodString;
88
+ /** Accepted origin(s). Either a single URL or an array of URLs. */
89
+ origins: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
90
+ /** Form title override. */
91
+ title: z.ZodOptional<z.ZodString>;
92
+ }, "strip", z.ZodTypeAny, {
93
+ rpName: string;
94
+ rpID: string;
95
+ origins: string | string[];
96
+ title?: string | undefined;
97
+ }, {
98
+ rpName: string;
99
+ rpID: string;
100
+ origins: string | string[];
101
+ title?: string | undefined;
102
+ }>;
103
+ type PasskeyConfig = z.infer<typeof configSchema>;
104
+ export declare function passkeyMethod(opts: PasskeyMethodOptions): AuthMethodFactory<PasskeyProperties, PasskeyState, PasskeyConfig>;
105
+ export {};
106
+ //# sourceMappingURL=passkey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../../src/methods/passkey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,iBAAiB,CAAA;AAGxB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,gBAAgB,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IACtE,QAAQ,CACN,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACnC,oEAAoE;IACpE,aAAa,CAAC,KAAK,EAAE;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,6CAA6C;IAC7C,MAAM,CAAC,CAAC,KAAK,EAAE;QACb,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,gBAAgB,CAAA;QAC5B,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,WAAW,EAAE,sBAAsB,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9E;;;;;;;;GAQG;AACH,QAAA,MAAM,YAAY;IAChB,kDAAkD;;IAElD,iDAAiD;;IAEjD,mEAAmE;;IAEnE,2BAA2B;;;;;;;;;;;;EAE3B,CAAA;AACF,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAkBjD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,oBAAoB,GACzB,iBAAiB,CAAC,iBAAiB,EAAE,YAAY,EAAE,aAAa,CAAC,CAiDnE"}
@@ -0,0 +1,25 @@
1
+ export type PasswordHasher = {
2
+ /** Hash the password; output includes salt + parameters. */
3
+ hash(plain: string): Promise<string>;
4
+ /** Verify a plain password against a previously stored hash. */
5
+ verify(plain: string, stored: string): Promise<boolean>;
6
+ };
7
+ export type Argon2idParams = {
8
+ /** Time cost. RFC 9106 §4 recommends `t=3` for the 64 MiB profile. */
9
+ t: number;
10
+ /** Memory cost in KiB. RFC 9106 §4 recommends `65536` (64 MiB). */
11
+ m: number;
12
+ /** Parallelism. RFC 9106 §4 recommends `4`. */
13
+ p: number;
14
+ /** Output length in bytes. 32 is standard. */
15
+ dkLen: number;
16
+ /** Salt length in bytes. 16 is the RFC 9106 minimum. */
17
+ saltLen: number;
18
+ };
19
+ export declare const DEFAULT_ARGON2ID_PARAMS: Argon2idParams;
20
+ /**
21
+ * Build an argon2id `PasswordHasher`. Stored hashes use the canonical PHC
22
+ * string format so they're interoperable with any RFC 9106 implementation.
23
+ */
24
+ export declare function argon2idHasher(params?: Partial<Argon2idParams>): PasswordHasher;
25
+ //# sourceMappingURL=password-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-hash.d.ts","sourceRoot":"","sources":["../../../src/methods/password-hash.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,cAAc,GAAG;IAC3B,4DAA4D;IAC5D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpC,gEAAgE;IAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,sEAAsE;IACtE,CAAC,EAAE,MAAM,CAAA;IACT,mEAAmE;IACnE,CAAC,EAAE,MAAM,CAAA;IACT,+CAA+C;IAC/C,CAAC,EAAE,MAAM,CAAA;IACT,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,cAMrC,CAAA;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,cAAc,CAiChB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * `passwordMethod` — username + password credential factory.
3
+ *
4
+ * Routes:
5
+ * GET /authorize → render login form
6
+ * POST /login → verify credentials
7
+ * POST /register → create user + sign in
8
+ *
9
+ * Forgot / reset flows land in Phase 5 alongside email-sender infra (they
10
+ * share the same `sendEmail`-style hook the magic-code method uses).
11
+ *
12
+ * Storage: the framework does NOT own the user record. Users supply a
13
+ * `users` interface (lookup / create / setPassword); the method calls into
14
+ * it. Hashes are stored via the supplied `users.setPassword` hook so apps
15
+ * can keep them in the same row as the rest of their user data.
16
+ *
17
+ * Hashing: argon2id by default (`@noble/hashes/argon2`). Pluggable via
18
+ * `passwordMethod({ hasher: customHasher })` for migrations.
19
+ */
20
+ import { z } from "zod";
21
+ import { type PasswordHasher } from "./password-hash";
22
+ import type { AuthMethodFactory } from "../types/method";
23
+ export type PasswordProperties = {
24
+ /** The user's lookup key (typically their email). */
25
+ email: string;
26
+ /** Optional extra claims the user store returned alongside the record. */
27
+ claims?: Record<string, unknown>;
28
+ };
29
+ export type PasswordState = {
30
+ /** Most-recent error message to surface on re-render. */
31
+ error?: string;
32
+ };
33
+ export type PasswordUser = {
34
+ /** Stable internal id (provider subject). */
35
+ id: string;
36
+ /** Argon2id-format hash. Compared via the configured hasher. */
37
+ passwordHash: string;
38
+ /** Optional extra claims that ride along to the IdP's success callback. */
39
+ claims?: Record<string, unknown>;
40
+ };
41
+ export type PasswordUserStore = {
42
+ /** Look up a user by email; `null` if unknown. */
43
+ findByEmail(email: string, tenantId: string): Promise<PasswordUser | null>;
44
+ /**
45
+ * Optional — only required if `enableRegistration: true`. Should create
46
+ * the row and return the persisted user. Implementations decide how to
47
+ * race with concurrent registrations.
48
+ */
49
+ create?(input: {
50
+ email: string;
51
+ passwordHash: string;
52
+ tenantId: string;
53
+ }): Promise<PasswordUser>;
54
+ };
55
+ export type PasswordMethodOptions = {
56
+ /** The tenant-supplied user store. */
57
+ users: PasswordUserStore;
58
+ /** Override the default argon2id hasher. */
59
+ hasher?: PasswordHasher;
60
+ /** Allow `POST /register` to create new users. Default: false. */
61
+ enableRegistration?: boolean;
62
+ /** Display title for the form. */
63
+ title?: string;
64
+ };
65
+ /** Tenant-supplied config is empty for password — users + hasher live on the factory closure. */
66
+ declare const configSchema: z.ZodObject<{}, "strict", z.ZodTypeAny, {}, {}>;
67
+ type PasswordConfig = z.infer<typeof configSchema>;
68
+ export declare function passwordMethod(opts: PasswordMethodOptions): AuthMethodFactory<PasswordProperties, PasswordState, PasswordConfig>;
69
+ export {};
70
+ //# sourceMappingURL=password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../src/methods/password.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,iBAAiB,CAAA;AAGxB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kDAAkD;IAClD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;IAC1E;;;;OAIG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,KAAK,EAAE,iBAAiB,CAAA;IACxB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,iGAAiG;AACjG,QAAA,MAAM,YAAY,iDAAwB,CAAA;AAC1C,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAYlD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,qBAAqB,GAC1B,iBAAiB,CAAC,kBAAkB,EAAE,aAAa,EAAE,cAAc,CAAC,CAwCtE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Apple — OIDC. Auto-discovers from `https://appleid.apple.com`.
3
+ *
4
+ * Apple requires `response_mode=form_post` when `name` / `email` scopes
5
+ * are requested. Pass `responseMode: "form_post"` when those scopes are
6
+ * in play; default is `query`.
7
+ */
8
+ import { z } from "zod";
9
+ import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
10
+ import type { AuthMethodFactory } from "../../types/method";
11
+ declare const schema: z.ZodObject<{
12
+ clientId: z.ZodString;
13
+ clientSecret: z.ZodString;
14
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
15
+ responseMode: z.ZodOptional<z.ZodEnum<["query", "form_post"]>>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ clientId: string;
18
+ clientSecret: string;
19
+ scopes?: string[] | undefined;
20
+ responseMode?: "query" | "form_post" | undefined;
21
+ }, {
22
+ clientId: string;
23
+ clientSecret: string;
24
+ scopes?: string[] | undefined;
25
+ responseMode?: "query" | "form_post" | undefined;
26
+ }>;
27
+ export declare const appleFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
28
+ export {};
29
+ //# sourceMappingURL=apple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/apple.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;EAKV,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAC1C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAkBvB,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * AWS Cognito — OIDC. The `domain` is the Cognito user-pool domain
3
+ * (without protocol), e.g. `"my-pool.auth.us-east-1.amazoncognito.com"`.
4
+ *
5
+ * Cognito's OIDC discovery is at
6
+ * `https://cognito-idp.<region>.amazonaws.com/<userPoolId>/.well-known/openid-configuration`
7
+ * (NOT the user-pool domain). Callers supply the user-pool domain for the
8
+ * OAuth endpoints AND the issuer URL for discovery / id_token validation.
9
+ */
10
+ import { z } from "zod";
11
+ import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
12
+ import type { AuthMethodFactory } from "../../types/method";
13
+ declare const schema: z.ZodObject<{
14
+ clientId: z.ZodString;
15
+ clientSecret: z.ZodOptional<z.ZodString>;
16
+ /** Cognito user-pool hosted UI domain (no protocol). */
17
+ domain: z.ZodString;
18
+ /** Issuer URL, e.g. `https://cognito-idp.us-east-1.amazonaws.com/us-east-1_xyz`. */
19
+ issuer: z.ZodString;
20
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ issuer: string;
23
+ clientId: string;
24
+ domain: string;
25
+ scopes?: string[] | undefined;
26
+ clientSecret?: string | undefined;
27
+ }, {
28
+ issuer: string;
29
+ clientId: string;
30
+ domain: string;
31
+ scopes?: string[] | undefined;
32
+ clientSecret?: string | undefined;
33
+ }>;
34
+ export declare const cognitoFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
35
+ export {};
36
+ //# sourceMappingURL=cognito.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cognito.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/cognito.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;IAGV,wDAAwD;;IAExD,oFAAoF;;;;;;;;;;;;;;;EAGpF,CAAA;AAEF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAC5C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CA0BvB,CAAA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Discord — OAuth 2.0. Default scopes: `identify email`.
3
+ */
4
+ import { z } from "zod";
5
+ import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
6
+ import type { AuthMethodFactory } from "../../types/method";
7
+ declare const schema: z.ZodObject<{
8
+ clientId: z.ZodString;
9
+ clientSecret: z.ZodString;
10
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ clientId: string;
13
+ clientSecret: string;
14
+ scopes?: string[] | undefined;
15
+ }, {
16
+ clientId: string;
17
+ clientSecret: string;
18
+ scopes?: string[] | undefined;
19
+ }>;
20
+ export declare const discordFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
21
+ export {};
22
+ //# sourceMappingURL=discord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/discord.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;EAIV,CAAA;AAEF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAC5C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAkBvB,CAAA"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Facebook — OAuth 2.0. Default scopes: `email public_profile`.
3
+ *
4
+ * Facebook also exposes an OIDC discovery doc at
5
+ * `https://graph.facebook.com`, but the canonical app integration uses
6
+ * the OAuth 2.0 endpoints below. Pass `useOidc: true` to switch to OIDC.
7
+ */
8
+ import { z } from "zod";
9
+ import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
10
+ import type { AuthMethodFactory } from "../../types/method";
11
+ declare const schema: z.ZodObject<{
12
+ clientId: z.ZodString;
13
+ clientSecret: z.ZodString;
14
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
15
+ useOidc: z.ZodOptional<z.ZodBoolean>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ clientId: string;
18
+ clientSecret: string;
19
+ scopes?: string[] | undefined;
20
+ useOidc?: boolean | undefined;
21
+ }, {
22
+ clientId: string;
23
+ clientSecret: string;
24
+ scopes?: string[] | undefined;
25
+ useOidc?: boolean | undefined;
26
+ }>;
27
+ export declare const facebookFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
28
+ export {};
29
+ //# sourceMappingURL=facebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facebook.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/facebook.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;EAKV,CAAA;AAEF,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAC7C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CA6BvB,CAAA"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * GitHub — OAuth 2.0. No id_token; user info via the REST API in the
3
+ * `success` callback if needed.
4
+ *
5
+ * Default scopes: `read:user user:email`.
6
+ */
7
+ import { z } from "zod";
8
+ import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
9
+ import type { AuthMethodFactory } from "../../types/method";
10
+ declare const schema: z.ZodObject<{
11
+ clientId: z.ZodString;
12
+ clientSecret: z.ZodString;
13
+ scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ clientId: string;
16
+ clientSecret: string;
17
+ scopes?: string[] | undefined;
18
+ }, {
19
+ clientId: string;
20
+ clientSecret: string;
21
+ scopes?: string[] | undefined;
22
+ }>;
23
+ export declare const githubFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
24
+ export {};
25
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/github.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;EAIV,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,iBAAiB,CAC3C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAoBvB,CAAA"}