@yielded/auth-persistence 0.1.0-beta.25 → 0.1.0-beta.26

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 (481) hide show
  1. package/README.md +6 -8
  2. package/dist/Adapter.d.mts +47 -33
  3. package/dist/Adapter.mjs +36 -23
  4. package/dist/OAuthPersistence.d.mts +35 -51
  5. package/dist/OAuthPersistence.mjs +60 -68
  6. package/dist/OAuthPersistence.mjs.map +1 -1
  7. package/dist/index.d.mts +2 -2
  8. package/dist/index.mjs +2 -2
  9. package/dist/internal/browser-login.d.mts +1 -1
  10. package/dist/internal/browser-login.mjs +29 -9
  11. package/dist/internal/browser-login.mjs.map +1 -1
  12. package/dist/internal/configuration.d.mts +13 -8
  13. package/dist/internal/configuration.mjs.map +1 -1
  14. package/dist/internal/crypto.d.mts +1 -0
  15. package/dist/internal/crypto.mjs +1 -1
  16. package/dist/internal/d1-planning.mjs +8 -0
  17. package/dist/internal/d1-planning.mjs.map +1 -0
  18. package/dist/internal/email-native-state.mjs +135 -0
  19. package/dist/internal/email-native-state.mjs.map +1 -0
  20. package/dist/internal/email-native.d.mts +17 -0
  21. package/dist/internal/email-native.mjs +245 -0
  22. package/dist/internal/email-native.mjs.map +1 -0
  23. package/dist/internal/email-policy.mjs +92 -0
  24. package/dist/internal/email-policy.mjs.map +1 -0
  25. package/dist/internal/email-registration-native.d.mts +38 -0
  26. package/dist/internal/email-registration-native.mjs +171 -0
  27. package/dist/internal/email-registration-native.mjs.map +1 -0
  28. package/dist/internal/models/email-model.d.mts +40 -104
  29. package/dist/internal/models/email-model.mjs +3 -5
  30. package/dist/internal/models/email-model.mjs.map +1 -1
  31. package/dist/internal/models/oauth-connected-model.d.mts +44 -213
  32. package/dist/internal/models/oauth-connected-model.mjs +6 -14
  33. package/dist/internal/models/oauth-connected-model.mjs.map +1 -1
  34. package/dist/internal/models/oauth-model.d.mts +95 -244
  35. package/dist/internal/models/oauth-model.mjs +28 -22
  36. package/dist/internal/models/oauth-model.mjs.map +1 -1
  37. package/dist/internal/models/passkey-model.d.mts +11 -147
  38. package/dist/internal/models/passkey-model.mjs +5 -24
  39. package/dist/internal/models/passkey-model.mjs.map +1 -1
  40. package/dist/internal/models/passkey-registration-ceremony-model.d.mts +5 -39
  41. package/dist/internal/models/passkey-write-model.d.mts +17 -75
  42. package/dist/internal/models/passkey-write-model.mjs +1 -7
  43. package/dist/internal/models/passkey-write-model.mjs.map +1 -1
  44. package/dist/internal/models/password-model.d.mts +14 -81
  45. package/dist/internal/models/password-model.mjs +1 -4
  46. package/dist/internal/models/password-model.mjs.map +1 -1
  47. package/dist/internal/models/phone-model.d.mts +86 -0
  48. package/dist/internal/models/phone-model.mjs +10 -0
  49. package/dist/internal/models/phone-model.mjs.map +1 -0
  50. package/dist/internal/models/proof-model.d.mts +43 -272
  51. package/dist/internal/models/proof-model.mjs +2 -10
  52. package/dist/internal/models/proof-model.mjs.map +1 -1
  53. package/dist/internal/models/session-model.d.mts +74 -93
  54. package/dist/internal/models/session-model.mjs +3 -11
  55. package/dist/internal/models/session-model.mjs.map +1 -1
  56. package/dist/internal/models/step-up-model.d.mts +12 -50
  57. package/dist/internal/models/step-up-model.mjs +2 -4
  58. package/dist/internal/models/step-up-model.mjs.map +1 -1
  59. package/dist/internal/models/totp-model.d.mts +76 -0
  60. package/dist/internal/models/totp-model.mjs +10 -0
  61. package/dist/internal/models/totp-model.mjs.map +1 -0
  62. package/dist/internal/native-sql-table.d.mts +21 -4
  63. package/dist/internal/native-sql-table.mjs +9 -5
  64. package/dist/internal/native-sql-table.mjs.map +1 -1
  65. package/dist/internal/oauth/native-accounts.d.mts +17 -0
  66. package/dist/internal/oauth/native-accounts.mjs +290 -0
  67. package/dist/internal/oauth/native-accounts.mjs.map +1 -0
  68. package/dist/internal/oauth/native-connected-state.d.mts +11 -0
  69. package/dist/internal/oauth/native-connected-state.mjs +146 -0
  70. package/dist/internal/oauth/native-connected-state.mjs.map +1 -0
  71. package/dist/internal/oauth/native-connected.d.mts +15 -0
  72. package/dist/internal/oauth/native-connected.mjs +462 -0
  73. package/dist/internal/oauth/native-connected.mjs.map +1 -0
  74. package/dist/internal/oauth/native-flow.mjs +138 -0
  75. package/dist/internal/oauth/native-flow.mjs.map +1 -0
  76. package/dist/internal/oauth/native-layers.d.mts +24 -0
  77. package/dist/internal/oauth/native-layers.mjs +13 -0
  78. package/dist/internal/oauth/native-layers.mjs.map +1 -0
  79. package/dist/internal/oauth/native-mutation.mjs +122 -0
  80. package/dist/internal/oauth/native-mutation.mjs.map +1 -0
  81. package/dist/internal/oauth/native-registration.d.mts +24 -0
  82. package/dist/internal/oauth/native-registration.mjs +328 -0
  83. package/dist/internal/oauth/native-registration.mjs.map +1 -0
  84. package/dist/internal/oauth/native-revocations.d.mts +17 -0
  85. package/dist/internal/oauth/native-revocations.mjs +106 -0
  86. package/dist/internal/oauth/native-revocations.mjs.map +1 -0
  87. package/dist/internal/oauth/native-sign-in.d.mts +17 -0
  88. package/dist/internal/oauth/native-sign-in.mjs +50 -0
  89. package/dist/internal/oauth/native-sign-in.mjs.map +1 -0
  90. package/dist/internal/oauth/native-state.d.mts +10 -0
  91. package/dist/internal/oauth/native-state.mjs +214 -0
  92. package/dist/internal/oauth/native-state.mjs.map +1 -0
  93. package/dist/internal/oauth/state.d.mts +10 -0
  94. package/dist/internal/oauth/state.mjs +3 -27
  95. package/dist/internal/oauth/state.mjs.map +1 -1
  96. package/dist/internal/passkey-actions.mjs +55 -0
  97. package/dist/internal/passkey-actions.mjs.map +1 -0
  98. package/dist/internal/passkey-inputs.mjs +73 -0
  99. package/dist/internal/passkey-inputs.mjs.map +1 -0
  100. package/dist/internal/passkey-managed.mjs +224 -0
  101. package/dist/internal/passkey-managed.mjs.map +1 -0
  102. package/dist/internal/passkey-native-ceremony.d.mts +35 -0
  103. package/dist/internal/passkey-native-ceremony.mjs +38 -0
  104. package/dist/internal/passkey-native-ceremony.mjs.map +1 -0
  105. package/dist/internal/passkey-native-flow.mjs +91 -0
  106. package/dist/internal/passkey-native-flow.mjs.map +1 -0
  107. package/dist/internal/passkey-native-registration.d.mts +10 -0
  108. package/dist/internal/passkey-native-registration.mjs +114 -0
  109. package/dist/internal/passkey-native-registration.mjs.map +1 -0
  110. package/dist/internal/passkey-native-state.d.mts +15 -0
  111. package/dist/internal/passkey-native-state.mjs +186 -0
  112. package/dist/internal/passkey-native-state.mjs.map +1 -0
  113. package/dist/internal/passkey-native-write.d.mts +82 -0
  114. package/dist/internal/passkey-native-write.mjs +330 -0
  115. package/dist/internal/passkey-native-write.mjs.map +1 -0
  116. package/dist/internal/passkey-native.d.mts +835 -0
  117. package/dist/internal/passkey-native.mjs +175 -0
  118. package/dist/internal/passkey-native.mjs.map +1 -0
  119. package/dist/internal/passkey-policy.mjs +115 -0
  120. package/dist/internal/passkey-policy.mjs.map +1 -0
  121. package/dist/internal/password-credentials.mjs +38 -9
  122. package/dist/internal/password-credentials.mjs.map +1 -1
  123. package/dist/internal/password-native.d.mts +14 -0
  124. package/dist/internal/password-native.mjs +292 -0
  125. package/dist/internal/password-native.mjs.map +1 -0
  126. package/dist/internal/password-policy.mjs +93 -0
  127. package/dist/internal/password-policy.mjs.map +1 -0
  128. package/dist/internal/password-registration-native.d.mts +22 -0
  129. package/dist/internal/password-registration-native.mjs +142 -0
  130. package/dist/internal/password-registration-native.mjs.map +1 -0
  131. package/dist/internal/persistence.d.mts +6 -19
  132. package/dist/internal/persistence.mjs +199 -166
  133. package/dist/internal/persistence.mjs.map +1 -1
  134. package/dist/internal/phone-composed.mjs +79 -0
  135. package/dist/internal/phone-composed.mjs.map +1 -0
  136. package/dist/internal/phone-native.d.mts +15 -0
  137. package/dist/internal/phone-native.mjs +354 -0
  138. package/dist/internal/phone-native.mjs.map +1 -0
  139. package/dist/internal/proof-native.d.mts +15 -0
  140. package/dist/internal/proof-native.mjs +289 -0
  141. package/dist/internal/proof-native.mjs.map +1 -0
  142. package/dist/internal/registration.mjs +50 -60
  143. package/dist/internal/registration.mjs.map +1 -1
  144. package/dist/internal/session-native-authority.d.mts +15 -0
  145. package/dist/internal/session-native-authority.mjs +91 -0
  146. package/dist/internal/session-native-authority.mjs.map +1 -0
  147. package/dist/internal/session-native-cleanup.d.mts +14 -0
  148. package/dist/internal/session-native-cleanup.mjs +48 -0
  149. package/dist/internal/session-native-cleanup.mjs.map +1 -0
  150. package/dist/internal/session-native-login.d.mts +15 -0
  151. package/dist/internal/session-native-login.mjs +87 -0
  152. package/dist/internal/session-native-login.mjs.map +1 -0
  153. package/dist/internal/session-native-pending-read.mjs +42 -0
  154. package/dist/internal/session-native-pending-read.mjs.map +1 -0
  155. package/dist/internal/session-native-pending.mjs +134 -0
  156. package/dist/internal/session-native-pending.mjs.map +1 -0
  157. package/dist/internal/session-native-record.mjs +79 -0
  158. package/dist/internal/session-native-record.mjs.map +1 -0
  159. package/dist/internal/session-native-state.mjs +130 -0
  160. package/dist/internal/session-native-state.mjs.map +1 -0
  161. package/dist/internal/session-native-stateful.d.mts +16 -0
  162. package/dist/internal/session-native-stateful.mjs +225 -0
  163. package/dist/internal/session-native-stateful.mjs.map +1 -0
  164. package/dist/internal/session-native-step-up.d.mts +15 -0
  165. package/dist/internal/session-native-step-up.mjs +212 -0
  166. package/dist/internal/session-native-step-up.mjs.map +1 -0
  167. package/dist/internal/session-native-validity.d.mts +15 -0
  168. package/dist/internal/session-native-validity.mjs +97 -0
  169. package/dist/internal/session-native-validity.mjs.map +1 -0
  170. package/dist/internal/session-policy.mjs +29 -0
  171. package/dist/internal/session-policy.mjs.map +1 -0
  172. package/dist/internal/sql-authority.d.mts +16 -0
  173. package/dist/internal/sql-authority.mjs +32 -0
  174. package/dist/internal/sql-authority.mjs.map +1 -0
  175. package/dist/internal/sql-change.mjs +21 -0
  176. package/dist/internal/sql-change.mjs.map +1 -0
  177. package/dist/internal/sql-cleanup.mjs +35 -0
  178. package/dist/internal/sql-cleanup.mjs.map +1 -0
  179. package/dist/internal/sql-commit.d.mts +72 -0
  180. package/dist/internal/sql-commit.mjs +176 -0
  181. package/dist/internal/sql-commit.mjs.map +1 -0
  182. package/dist/internal/sql-expression.d.mts +17 -0
  183. package/dist/internal/sql-expression.mjs +49 -0
  184. package/dist/internal/sql-expression.mjs.map +1 -0
  185. package/dist/internal/sql-oauth-connected-model.d.mts +7 -23
  186. package/dist/internal/sql-oauth-model.d.mts +27 -52
  187. package/dist/internal/sql-oauth-model.mjs +3 -4
  188. package/dist/internal/sql-oauth-model.mjs.map +1 -1
  189. package/dist/internal/sql-persistence.mjs +5 -9
  190. package/dist/internal/sql-persistence.mjs.map +1 -1
  191. package/dist/internal/sql-storage-validation.mjs +1 -2
  192. package/dist/internal/sql-storage-validation.mjs.map +1 -1
  193. package/dist/internal/sql-table.d.mts +3 -16
  194. package/dist/internal/sql-table.mjs +21 -42
  195. package/dist/internal/sql-table.mjs.map +1 -1
  196. package/dist/internal/standalone.mjs +2 -3
  197. package/dist/internal/standalone.mjs.map +1 -1
  198. package/dist/internal/step-up-state.mjs +5 -8
  199. package/dist/internal/step-up-state.mjs.map +1 -1
  200. package/dist/internal/storage-clock.mjs +44 -0
  201. package/dist/internal/storage-clock.mjs.map +1 -0
  202. package/dist/internal/storage-mapping.d.mts +11 -8
  203. package/dist/internal/storage-mapping.mjs +88 -302
  204. package/dist/internal/storage-mapping.mjs.map +1 -1
  205. package/dist/internal/storage-plans.mjs +15 -73
  206. package/dist/internal/storage-plans.mjs.map +1 -1
  207. package/dist/internal/storage-tables.d.mts +37 -520
  208. package/dist/internal/storage-tables.mjs +31 -211
  209. package/dist/internal/storage-tables.mjs.map +1 -1
  210. package/dist/internal/storage-validation.d.mts +1 -6
  211. package/dist/internal/storage-validation.mjs +1 -42
  212. package/dist/internal/storage-validation.mjs.map +1 -1
  213. package/dist/internal/table-model.d.mts +21 -0
  214. package/dist/internal/totp-native.d.mts +15 -0
  215. package/dist/internal/totp-native.mjs +401 -0
  216. package/dist/internal/totp-native.mjs.map +1 -0
  217. package/package.json +1 -1
  218. package/src/Adapter.ts +143 -199
  219. package/src/OAuthPersistence.ts +128 -271
  220. package/src/index.ts +1 -1
  221. package/src/internal/browser-login.ts +54 -24
  222. package/src/internal/configuration.ts +16 -31
  223. package/src/internal/d1-planning.ts +7 -0
  224. package/src/internal/email-native-state.ts +247 -0
  225. package/src/internal/email-native.ts +514 -0
  226. package/src/internal/email-policy.ts +235 -0
  227. package/src/internal/email-registration-native.ts +386 -0
  228. package/src/internal/models/email-model.ts +76 -214
  229. package/src/internal/models/oauth-connected-model.ts +50 -288
  230. package/src/internal/models/oauth-model.ts +147 -368
  231. package/src/internal/models/passkey-model.ts +11 -208
  232. package/src/internal/models/passkey-registration-ceremony-model.ts +6 -60
  233. package/src/internal/models/passkey-write-model.ts +14 -95
  234. package/src/internal/models/password-model.ts +26 -147
  235. package/src/internal/models/phone-model.ts +110 -0
  236. package/src/internal/models/proof-model.ts +48 -404
  237. package/src/internal/models/session-model.ts +102 -200
  238. package/src/internal/models/step-up-model.ts +17 -96
  239. package/src/internal/models/totp-model.ts +82 -0
  240. package/src/internal/native-sql-table.ts +32 -11
  241. package/src/internal/oauth/native-accounts.ts +576 -0
  242. package/src/internal/oauth/native-connected-state.ts +288 -0
  243. package/src/internal/oauth/native-connected.ts +888 -0
  244. package/src/internal/oauth/native-flow.ts +253 -0
  245. package/src/internal/oauth/native-layers.ts +83 -0
  246. package/src/internal/oauth/native-mutation.ts +222 -0
  247. package/src/internal/oauth/native-registration.ts +545 -0
  248. package/src/internal/oauth/native-revocations.ts +190 -0
  249. package/src/internal/oauth/native-sign-in.ts +111 -0
  250. package/src/internal/oauth/native-state.ts +346 -0
  251. package/src/internal/oauth/state.ts +2 -70
  252. package/src/internal/passkey-actions.ts +70 -0
  253. package/src/internal/passkey-inputs.ts +56 -0
  254. package/src/internal/passkey-managed.ts +360 -0
  255. package/src/internal/passkey-native-ceremony.ts +66 -0
  256. package/src/internal/passkey-native-flow.ts +140 -0
  257. package/src/internal/passkey-native-registration.ts +221 -0
  258. package/src/internal/passkey-native-state.ts +335 -0
  259. package/src/internal/passkey-native-write.ts +611 -0
  260. package/src/internal/passkey-native.ts +372 -0
  261. package/src/internal/passkey-policy.ts +246 -0
  262. package/src/internal/password-credentials.ts +52 -10
  263. package/src/internal/password-native.ts +571 -0
  264. package/src/internal/password-policy.ts +307 -0
  265. package/src/internal/password-registration-native.ts +322 -0
  266. package/src/internal/persistence.ts +336 -290
  267. package/src/internal/phone-composed.ts +86 -0
  268. package/src/internal/phone-native.ts +659 -0
  269. package/src/internal/proof-native.ts +448 -0
  270. package/src/internal/registration.ts +96 -143
  271. package/src/internal/session-native-authority.ts +247 -0
  272. package/src/internal/session-native-cleanup.ts +65 -0
  273. package/src/internal/session-native-login.ts +205 -0
  274. package/src/internal/session-native-pending-read.ts +68 -0
  275. package/src/internal/session-native-pending.ts +223 -0
  276. package/src/internal/session-native-record.ts +141 -0
  277. package/src/internal/session-native-state.ts +259 -0
  278. package/src/internal/session-native-stateful.ts +512 -0
  279. package/src/internal/session-native-step-up.ts +450 -0
  280. package/src/internal/session-native-validity.ts +208 -0
  281. package/src/internal/session-policy.ts +59 -0
  282. package/src/internal/sql-authority.ts +56 -0
  283. package/src/internal/sql-change.ts +38 -0
  284. package/src/internal/sql-cleanup.ts +56 -0
  285. package/src/internal/sql-commit.ts +435 -0
  286. package/src/internal/sql-expression.ts +94 -0
  287. package/src/internal/sql-metadata.ts +100 -0
  288. package/src/internal/sql-oauth-connected-model.ts +6 -95
  289. package/src/internal/sql-oauth-model.ts +31 -134
  290. package/src/internal/sql-persistence.ts +2 -6
  291. package/src/internal/sql-storage-validation.ts +1 -2
  292. package/src/internal/sql-table.ts +19 -52
  293. package/src/internal/standalone.ts +2 -11
  294. package/src/internal/step-up-state.ts +4 -17
  295. package/src/internal/storage-clock.ts +58 -0
  296. package/src/internal/storage-mapping.ts +125 -340
  297. package/src/internal/storage-plans.ts +14 -80
  298. package/src/internal/storage-tables.ts +28 -212
  299. package/src/internal/storage-validation.ts +0 -58
  300. package/src/internal/table-model.ts +24 -0
  301. package/src/internal/totp-native.ts +701 -0
  302. package/dist/internal/PasswordPreparedPostconditions.d.mts +0 -22
  303. package/dist/internal/PasswordPreparedPostconditions.mjs +0 -12
  304. package/dist/internal/PasswordPreparedPostconditions.mjs.map +0 -1
  305. package/dist/internal/authority-snapshot.mjs +0 -53
  306. package/dist/internal/authority-snapshot.mjs.map +0 -1
  307. package/dist/internal/email-kernel.d.mts +0 -276
  308. package/dist/internal/email-kernel.mjs +0 -497
  309. package/dist/internal/email-kernel.mjs.map +0 -1
  310. package/dist/internal/models/passkey-registration-ceremony-model.mjs +0 -18
  311. package/dist/internal/models/passkey-registration-ceremony-model.mjs.map +0 -1
  312. package/dist/internal/oauth/accounts.d.mts +0 -8
  313. package/dist/internal/oauth/accounts.mjs +0 -379
  314. package/dist/internal/oauth/accounts.mjs.map +0 -1
  315. package/dist/internal/oauth/connected-access.d.mts +0 -9
  316. package/dist/internal/oauth/connected-access.mjs +0 -229
  317. package/dist/internal/oauth/connected-access.mjs.map +0 -1
  318. package/dist/internal/oauth/connected-collection.d.mts +0 -7
  319. package/dist/internal/oauth/connected-collection.mjs +0 -214
  320. package/dist/internal/oauth/connected-collection.mjs.map +0 -1
  321. package/dist/internal/oauth/connected-custody.d.mts +0 -6
  322. package/dist/internal/oauth/connected-custody.mjs +0 -165
  323. package/dist/internal/oauth/connected-custody.mjs.map +0 -1
  324. package/dist/internal/oauth/connected-flow.d.mts +0 -7
  325. package/dist/internal/oauth/connected-flow.mjs +0 -324
  326. package/dist/internal/oauth/connected-flow.mjs.map +0 -1
  327. package/dist/internal/oauth/connected-input.mjs +0 -122
  328. package/dist/internal/oauth/connected-input.mjs.map +0 -1
  329. package/dist/internal/oauth/connected-keys.d.mts +0 -2
  330. package/dist/internal/oauth/connected-keys.mjs +0 -22
  331. package/dist/internal/oauth/connected-keys.mjs.map +0 -1
  332. package/dist/internal/oauth/connected-maintenance.d.mts +0 -9
  333. package/dist/internal/oauth/connected-maintenance.mjs +0 -226
  334. package/dist/internal/oauth/connected-maintenance.mjs.map +0 -1
  335. package/dist/internal/oauth/connected-management.d.mts +0 -9
  336. package/dist/internal/oauth/connected-management.mjs +0 -243
  337. package/dist/internal/oauth/connected-management.mjs.map +0 -1
  338. package/dist/internal/oauth/connected-reference.mjs +0 -63
  339. package/dist/internal/oauth/connected-reference.mjs.map +0 -1
  340. package/dist/internal/oauth/connected-settlement.d.mts +0 -8
  341. package/dist/internal/oauth/connected-settlement.mjs +0 -141
  342. package/dist/internal/oauth/connected-settlement.mjs.map +0 -1
  343. package/dist/internal/oauth/connected-sign-in.d.mts +0 -10
  344. package/dist/internal/oauth/connected-sign-in.mjs +0 -281
  345. package/dist/internal/oauth/connected-sign-in.mjs.map +0 -1
  346. package/dist/internal/oauth/connected-state.d.mts +0 -14
  347. package/dist/internal/oauth/connected-state.mjs +0 -469
  348. package/dist/internal/oauth/connected-state.mjs.map +0 -1
  349. package/dist/internal/oauth/connected-target.d.mts +0 -21
  350. package/dist/internal/oauth/connected-target.mjs +0 -117
  351. package/dist/internal/oauth/connected-target.mjs.map +0 -1
  352. package/dist/internal/oauth/flow.d.mts +0 -5
  353. package/dist/internal/oauth/flow.mjs +0 -279
  354. package/dist/internal/oauth/flow.mjs.map +0 -1
  355. package/dist/internal/oauth/input.mjs +0 -127
  356. package/dist/internal/oauth/input.mjs.map +0 -1
  357. package/dist/internal/oauth/owner.d.mts +0 -10
  358. package/dist/internal/oauth/owner.mjs +0 -10
  359. package/dist/internal/oauth/owner.mjs.map +0 -1
  360. package/dist/internal/oauth/query-compiler.d.mts +0 -7
  361. package/dist/internal/oauth/query-compiler.mjs +0 -9
  362. package/dist/internal/oauth/query-compiler.mjs.map +0 -1
  363. package/dist/internal/oauth/registration.d.mts +0 -7
  364. package/dist/internal/oauth/registration.mjs +0 -393
  365. package/dist/internal/oauth/registration.mjs.map +0 -1
  366. package/dist/internal/oauth/target.d.mts +0 -31
  367. package/dist/internal/oauth/target.mjs +0 -273
  368. package/dist/internal/oauth/target.mjs.map +0 -1
  369. package/dist/internal/oauth-kernel.d.mts +0 -1423
  370. package/dist/internal/oauth-kernel.mjs +0 -187
  371. package/dist/internal/oauth-kernel.mjs.map +0 -1
  372. package/dist/internal/passkey/admission.d.mts +0 -6
  373. package/dist/internal/passkey/admission.mjs +0 -220
  374. package/dist/internal/passkey/admission.mjs.map +0 -1
  375. package/dist/internal/passkey/credentials.d.mts +0 -14
  376. package/dist/internal/passkey/credentials.mjs +0 -249
  377. package/dist/internal/passkey/credentials.mjs.map +0 -1
  378. package/dist/internal/passkey/enrollment.mjs +0 -138
  379. package/dist/internal/passkey/enrollment.mjs.map +0 -1
  380. package/dist/internal/passkey/flow.d.mts +0 -21
  381. package/dist/internal/passkey/flow.mjs +0 -452
  382. package/dist/internal/passkey/flow.mjs.map +0 -1
  383. package/dist/internal/passkey/management.mjs +0 -231
  384. package/dist/internal/passkey/management.mjs.map +0 -1
  385. package/dist/internal/passkey/registration-ceremony.d.mts +0 -9
  386. package/dist/internal/passkey/registration-ceremony.mjs +0 -129
  387. package/dist/internal/passkey/registration-ceremony.mjs.map +0 -1
  388. package/dist/internal/passkey/registration-custody.d.mts +0 -2
  389. package/dist/internal/passkey/registration-custody.mjs +0 -52
  390. package/dist/internal/passkey/registration-custody.mjs.map +0 -1
  391. package/dist/internal/passkey/registration-write.mjs +0 -211
  392. package/dist/internal/passkey/registration-write.mjs.map +0 -1
  393. package/dist/internal/passkey/state.d.mts +0 -10
  394. package/dist/internal/passkey/state.mjs +0 -234
  395. package/dist/internal/passkey/state.mjs.map +0 -1
  396. package/dist/internal/passkey/target.d.mts +0 -20
  397. package/dist/internal/passkey/target.mjs +0 -200
  398. package/dist/internal/passkey/target.mjs.map +0 -1
  399. package/dist/internal/passkey/write-state.d.mts +0 -17
  400. package/dist/internal/passkey/write-state.mjs +0 -354
  401. package/dist/internal/passkey/write-state.mjs.map +0 -1
  402. package/dist/internal/passkey/write-target.mjs +0 -192
  403. package/dist/internal/passkey/write-target.mjs.map +0 -1
  404. package/dist/internal/passkey-kernel.d.mts +0 -6045
  405. package/dist/internal/passkey-kernel.mjs +0 -49
  406. package/dist/internal/passkey-kernel.mjs.map +0 -1
  407. package/dist/internal/passkeys.d.mts +0 -7
  408. package/dist/internal/passkeys.mjs +0 -387
  409. package/dist/internal/passkeys.mjs.map +0 -1
  410. package/dist/internal/password-credentials.d.mts +0 -11
  411. package/dist/internal/password-kernel.d.mts +0 -278
  412. package/dist/internal/password-kernel.mjs +0 -508
  413. package/dist/internal/password-kernel.mjs.map +0 -1
  414. package/dist/internal/phone-kernel.d.mts +0 -162
  415. package/dist/internal/phone-kernel.mjs +0 -437
  416. package/dist/internal/phone-kernel.mjs.map +0 -1
  417. package/dist/internal/proof-kernel.d.mts +0 -94
  418. package/dist/internal/proof-kernel.mjs +0 -624
  419. package/dist/internal/proof-kernel.mjs.map +0 -1
  420. package/dist/internal/query-operations.d.mts +0 -68
  421. package/dist/internal/session-kernel.d.mts +0 -62
  422. package/dist/internal/session-kernel.mjs +0 -820
  423. package/dist/internal/session-kernel.mjs.map +0 -1
  424. package/dist/internal/sql-oauth-connected-model.mjs +0 -7
  425. package/dist/internal/sql-oauth-connected-model.mjs.map +0 -1
  426. package/dist/internal/sql-query.d.mts +0 -12
  427. package/dist/internal/sql-query.mjs +0 -206
  428. package/dist/internal/sql-query.mjs.map +0 -1
  429. package/dist/internal/step-up-state.d.mts +0 -49
  430. package/dist/internal/transaction-execution-kernel.d.mts +0 -37
  431. package/dist/internal/transaction-execution-kernel.mjs +0 -120
  432. package/dist/internal/transaction-execution-kernel.mjs.map +0 -1
  433. package/dist/internal/transaction-kernel.d.mts +0 -81
  434. package/dist/internal/transaction-kernel.mjs +0 -264
  435. package/dist/internal/transaction-kernel.mjs.map +0 -1
  436. package/src/internal/PasswordPreparedPostconditions.ts +0 -30
  437. package/src/internal/authority-snapshot.ts +0 -91
  438. package/src/internal/email-kernel.ts +0 -1556
  439. package/src/internal/oauth/accounts.ts +0 -839
  440. package/src/internal/oauth/connected-access.ts +0 -388
  441. package/src/internal/oauth/connected-collection.ts +0 -345
  442. package/src/internal/oauth/connected-custody.ts +0 -308
  443. package/src/internal/oauth/connected-flow.ts +0 -562
  444. package/src/internal/oauth/connected-input.ts +0 -147
  445. package/src/internal/oauth/connected-keys.ts +0 -31
  446. package/src/internal/oauth/connected-maintenance.ts +0 -379
  447. package/src/internal/oauth/connected-management.ts +0 -391
  448. package/src/internal/oauth/connected-reference.ts +0 -135
  449. package/src/internal/oauth/connected-settlement.ts +0 -278
  450. package/src/internal/oauth/connected-sign-in.ts +0 -472
  451. package/src/internal/oauth/connected-state.ts +0 -924
  452. package/src/internal/oauth/connected-target.ts +0 -307
  453. package/src/internal/oauth/flow.ts +0 -505
  454. package/src/internal/oauth/input.ts +0 -201
  455. package/src/internal/oauth/owner.ts +0 -22
  456. package/src/internal/oauth/query-compiler.ts +0 -15
  457. package/src/internal/oauth/registration.ts +0 -676
  458. package/src/internal/oauth/target.ts +0 -803
  459. package/src/internal/oauth-kernel.ts +0 -294
  460. package/src/internal/passkey/admission.ts +0 -368
  461. package/src/internal/passkey/credentials.ts +0 -511
  462. package/src/internal/passkey/enrollment.ts +0 -326
  463. package/src/internal/passkey/flow.ts +0 -1062
  464. package/src/internal/passkey/management.ts +0 -426
  465. package/src/internal/passkey/registration-ceremony.ts +0 -283
  466. package/src/internal/passkey/registration-custody.ts +0 -91
  467. package/src/internal/passkey/registration-write.ts +0 -426
  468. package/src/internal/passkey/state.ts +0 -351
  469. package/src/internal/passkey/target.ts +0 -598
  470. package/src/internal/passkey/write-state.ts +0 -692
  471. package/src/internal/passkey/write-target.ts +0 -450
  472. package/src/internal/passkey-kernel.ts +0 -112
  473. package/src/internal/passkeys.ts +0 -652
  474. package/src/internal/password-kernel.ts +0 -1523
  475. package/src/internal/phone-kernel.ts +0 -872
  476. package/src/internal/proof-kernel.ts +0 -1992
  477. package/src/internal/query-operations.ts +0 -91
  478. package/src/internal/session-kernel.ts +0 -2406
  479. package/src/internal/sql-query.ts +0 -304
  480. package/src/internal/transaction-execution-kernel.ts +0 -335
  481. package/src/internal/transaction-kernel.ts +0 -603
@@ -0,0 +1,72 @@
1
+ import { PersistenceMappingError } from "./mapping-error.mjs";
2
+ import { Cause, Context, Effect, Schema } from "effect";
3
+ import { SqlClient } from "effect/sql";
4
+ import { Statement } from "effect/sql/Statement";
5
+ import { CommitDiscarded, CommitPending, CurrentCommitJournal, LifecycleHooks, PreparedCommit } from "@yielded/auth/Hooks";
6
+ import { SqlError } from "effect/sql/SqlError";
7
+ //#region src/internal/sql-commit.d.ts
8
+ type SqlCommitError = PersistenceMappingError | Schema.SchemaError | SqlError;
9
+ declare const SqlCommitOwnerError_base: Schema.Class<SqlCommitOwnerError, Schema.TaggedStruct<"SqlCommitOwnerError", {
10
+ readonly reason: Schema.Literals<readonly ["closed", "different-client", "poisoned", "in-flight", "invalid-receipt", "invalid-mode", "postcondition-requires-transaction", "batch-required", "empty-batch"]>;
11
+ }>, Cause.YieldableError>;
12
+ export declare class SqlCommitOwnerError extends SqlCommitOwnerError_base {}
13
+ declare const SqlBatchCommit_base: Context.ServiceClass<SqlBatchCommit, "@yielded/auth-persistence/SqlBatchCommit", {
14
+ readonly client: SqlClient.SqlClient;
15
+ readonly execute: (statements: ReadonlyArray<Statement<unknown>>) => Effect.Effect<void, SqlError>;
16
+ } | undefined>;
17
+ /** Composition selects a D1 batch owner or explicitly supplies no batch owner. */
18
+ export declare class SqlBatchCommit extends SqlBatchCommit_base {}
19
+ declare const SqlNativeCommit_base: Context.ServiceClass<SqlNativeCommit, "@yielded/auth-persistence/SqlNativeCommit", {
20
+ readonly client: SqlClient.SqlClient;
21
+ readonly withTransaction: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | SqlCommitError, R>;
22
+ }>;
23
+ /** Platform ownership for databases requiring a transaction isolation policy. */
24
+ export declare class SqlNativeCommit extends SqlNativeCommit_base {}
25
+ type SqlCommitMode = "transaction" | "statement" | "batch";
26
+ interface SqlPostcondition {
27
+ readonly name: string;
28
+ readonly check: Effect.Effect<void, SqlCommitError, SqlClient.SqlClient>;
29
+ }
30
+ export interface SqlCommitScope {
31
+ readonly client: SqlClient.SqlClient;
32
+ readonly mode: SqlCommitMode;
33
+ readonly origin: "operation" | "application";
34
+ readonly postconditions: Array<SqlPostcondition | {
35
+ readonly name: string;
36
+ readonly statement: Statement<unknown>;
37
+ }>;
38
+ readonly receipts: Array<Effect.Effect<void, CommitPending | CommitDiscarded>>;
39
+ readonly statements: Array<Statement<unknown>>;
40
+ active: boolean;
41
+ poisoned: boolean;
42
+ inFlight: number;
43
+ }
44
+ declare const CurrentSqlCommit_base: Context.ServiceClass<CurrentSqlCommit, "@yielded/auth-persistence/CurrentSqlCommit", SqlCommitScope>;
45
+ export declare class CurrentSqlCommit extends CurrentSqlCommit_base {}
46
+ type OwnedRequirements<R> = Exclude<Exclude<Exclude<Exclude<R, CurrentSqlCommit>, CurrentCommitJournal>, SqlClient.SqlClient>, LifecycleHooks>;
47
+ export interface SqlCommitExecutor<Failure> {
48
+ readonly read: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, Failure, Exclude<Exclude<R, SqlClient.SqlClient>, LifecycleHooks>>;
49
+ /** Session verification only: runs on the caller's transaction connection when
50
+ * one is ambient. Other reads reject ambient transactions before any result. */
51
+ readonly verify: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, Failure, Exclude<Exclude<R, SqlClient.SqlClient>, LifecycleHooks>>;
52
+ /** Preserve expected operation failures without admitting application suffix work. */
53
+ readonly operation: <A, E, R>(effect: Effect.Effect<A, E, R>, mode?: "transaction" | "statement") => Effect.Effect<A, E | Failure, OwnedRequirements<R>>;
54
+ readonly operationBatch: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | Failure, OwnedRequirements<R> | SqlBatchCommit>;
55
+ readonly coordinate: <A, E, R>(effect: Effect.Effect<A, E, R>, mode?: "transaction" | "statement") => Effect.Effect<A, E | Failure, OwnedRequirements<R>>;
56
+ readonly coordinateBatch: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | Failure, OwnedRequirements<R> | SqlBatchCommit>;
57
+ readonly run: <A, E, R>(effect: Effect.Effect<A, E, R>, mode?: "transaction" | "statement") => Effect.Effect<A, Failure, OwnedRequirements<R>>;
58
+ readonly batch: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, Failure, OwnedRequirements<R> | SqlBatchCommit>;
59
+ }
60
+ /** Capture an executor where its service is constructed. Bound services cannot
61
+ * escape their owner, join another client, or silently start a second commit.
62
+ * Reads are advisory and never coordinate a commit. Statement mode is reserved
63
+ * for one atomic SQL mutation; authority mutations use transaction or batch mode.
64
+ */
65
+ export declare const makeSqlCommitExecutor: <Failure>(unavailable: () => Failure) => Effect.Effect<SqlCommitExecutor<Failure>, never, LifecycleHooks | SqlClient.SqlClient>;
66
+ /** Application statements join the same fixed batch and cannot escape it. */
67
+ export interface SqlBatchCollector {
68
+ readonly append: (statement: Statement<unknown>) => Effect.Effect<void, SqlCommitOwnerError>;
69
+ }
70
+ export declare const captureSqlBatchStatements: Effect.Effect<SqlBatchCollector, never, CurrentSqlCommit>;
71
+ //#endregion
72
+ //# sourceMappingURL=sql-commit.d.mts.map
@@ -0,0 +1,176 @@
1
+ import { requireStandalone } from "./standalone.mjs";
2
+ import { Cause, Context, Data, Effect, Option, Predicate, Schema } from "effect";
3
+ import { SqlClient } from "effect/sql";
4
+ import { CurrentCommitJournal, LifecycleHooks, coordinateCommit, hasCommitScope } from "@yielded/auth/Hooks";
5
+ import { reportPersistenceFailure } from "@yielded/auth/Persistence";
6
+ //#region src/internal/sql-commit.ts
7
+ var SqlCommitOwnerError = class extends Schema.TaggedError()("SqlCommitOwnerError", { reason: Schema.Literals([
8
+ "closed",
9
+ "different-client",
10
+ "poisoned",
11
+ "in-flight",
12
+ "invalid-receipt",
13
+ "invalid-mode",
14
+ "postcondition-requires-transaction",
15
+ "batch-required",
16
+ "empty-batch"
17
+ ]) }) {};
18
+ /** Composition selects a D1 batch owner or explicitly supplies no batch owner. */
19
+ var SqlBatchCommit = class extends Context.Service()("@yielded/auth-persistence/SqlBatchCommit") {};
20
+ /** Platform ownership for databases requiring a transaction isolation policy. */
21
+ var SqlNativeCommit = class extends Context.Service()("@yielded/auth-persistence/SqlNativeCommit") {};
22
+ var CurrentSqlCommit = class extends Context.Service()("@yielded/auth-persistence/CurrentSqlCommit") {};
23
+ const closed = () => SqlCommitOwnerError.make({ reason: "closed" });
24
+ /** Explicit final checks run in the physical owner after application work.
25
+ * They resolve SqlClient there, rather than retaining a released savepoint.
26
+ */
27
+ const registerSqlPostcondition = (condition) => Effect.flatMap(CurrentSqlCommit, (scope) => {
28
+ if (!scope.active) return Effect.fail(closed());
29
+ if (scope.mode !== "transaction") return Effect.fail(SqlCommitOwnerError.make({ reason: "postcondition-requires-transaction" }));
30
+ return Effect.sync(() => {
31
+ scope.postconditions.push(condition);
32
+ });
33
+ });
34
+ /** D1 checks final semantic predicates after all application batch statements. */
35
+ const registerSqlBatchPostcondition = (condition) => Effect.flatMap(CurrentSqlCommit, (scope) => {
36
+ if (!scope.active) return Effect.fail(closed());
37
+ if (scope.mode !== "batch") return Effect.fail(SqlCommitOwnerError.make({ reason: "batch-required" }));
38
+ return Effect.sync(() => {
39
+ scope.postconditions.push(condition);
40
+ });
41
+ });
42
+ /** A caught rollback cannot leave a discarded receipt in a successful owner. A D1
43
+ * batch needs one physical statement even when the decision writes nothing. */
44
+ const registerSqlCommitReceipt = (receipt) => Effect.flatMap(CurrentSqlCommit, (scope) => {
45
+ if (!scope.active) return Effect.fail(closed());
46
+ return Effect.sync(() => {
47
+ if (scope.mode === "batch" && scope.statements.length === 0) scope.statements.push(scope.client`select 1`);
48
+ scope.receipts.push(receipt.read.pipe(Effect.asVoid));
49
+ });
50
+ });
51
+ const appendSqlBatchStatement = (statement) => Effect.flatMap(CurrentSqlCommit, (scope) => {
52
+ if (!scope.active) return Effect.fail(closed());
53
+ if (scope.mode !== "batch") return Effect.fail(SqlCommitOwnerError.make({ reason: "batch-required" }));
54
+ return Effect.sync(() => {
55
+ scope.statements.push(statement);
56
+ });
57
+ });
58
+ /** Capture an executor where its service is constructed. Bound services cannot
59
+ * escape their owner, join another client, or silently start a second commit.
60
+ * Reads are advisory and never coordinate a commit. Statement mode is reserved
61
+ * for one atomic SQL mutation; authority mutations use transaction or batch mode.
62
+ */
63
+ const makeSqlCommitExecutor = Effect.fnUntraced(function* (unavailable) {
64
+ const sql = yield* SqlClient.SqlClient;
65
+ const hooks = yield* LifecycleHooks;
66
+ const captured = yield* Effect.serviceOption(CurrentSqlCommit);
67
+ const native = yield* Effect.serviceOption(SqlNativeCommit);
68
+ const failure = unavailable();
69
+ const report = (effect) => reportPersistenceFailure(effect, (error) => Object.is(error, failure) || Schema.is(SqlCommitOwnerError)(error) || Predicate.hasProperty(failure, "_tag") && typeof failure._tag === "string" && Predicate.hasProperty(error, "_tag") && error._tag === failure._tag).pipe(Effect.mapError(() => failure), Effect.catchCause((cause) => Cause.hasInterrupts(cause) ? Effect.failCause(cause) : Effect.fail(failure)));
70
+ const admit = Effect.gen(function* () {
71
+ if (Option.isSome(captured)) {
72
+ const scope = captured.value;
73
+ const current = yield* Effect.serviceOption(CurrentSqlCommit);
74
+ if (!scope.active || Option.isNone(current) || current.value !== scope) return yield* closed();
75
+ if (scope.client.transactionService !== sql.transactionService) return yield* SqlCommitOwnerError.make({ reason: "different-client" });
76
+ } else {
77
+ if (yield* hasCommitScope) return yield* Effect.fail(failure);
78
+ yield* requireStandalone(() => failure, sql.transactionService);
79
+ }
80
+ });
81
+ const provide = (effect) => effect.pipe(Effect.provideService(SqlClient.SqlClient, sql), Effect.provideService(LifecycleHooks, hooks));
82
+ const bound = (scope, effect) => Effect.uninterruptibleMask((restore) => Effect.gen(function* () {
83
+ yield* admit;
84
+ const journal = yield* Effect.serviceOption(CurrentCommitJournal);
85
+ if (Option.isNone(journal)) return yield* closed();
86
+ scope.inFlight++;
87
+ return yield* restore(effect.pipe(Effect.provideService(CurrentSqlCommit, scope), Effect.provideService(CurrentCommitJournal, journal.value))).pipe(Effect.flatMap((value) => admit.pipe(Effect.as(value))), Effect.onExit((exit) => Effect.sync(() => {
88
+ scope.inFlight--;
89
+ if (exit._tag === "Failure") scope.poisoned = true;
90
+ })));
91
+ }));
92
+ const finish = Effect.fnUntraced(function* (scope) {
93
+ if (scope.poisoned) return yield* SqlCommitOwnerError.make({ reason: "poisoned" });
94
+ if (scope.inFlight !== 0) return yield* SqlCommitOwnerError.make({ reason: "in-flight" });
95
+ for (const condition of scope.postconditions) if ("statement" in condition) scope.statements.push(condition.statement);
96
+ else yield* condition.check;
97
+ for (const receipt of scope.receipts) {
98
+ const status = yield* Effect.result(receipt);
99
+ if (status._tag !== "Failure" || status.failure._tag !== "CommitPending") return yield* SqlCommitOwnerError.make({ reason: "invalid-receipt" });
100
+ }
101
+ });
102
+ const owned = (effect, mode, origin, batch) => {
103
+ if (Option.isSome(captured)) {
104
+ const scope = captured.value;
105
+ if (mode !== scope.mode && !(mode === "statement" && scope.mode === "transaction")) return Effect.fail(SqlCommitOwnerError.make({ reason: "invalid-mode" }));
106
+ return provide(bound(scope, effect));
107
+ }
108
+ const work = Effect.gen(function* () {
109
+ yield* admit;
110
+ return (yield* coordinateCommit(() => {
111
+ const scope = {
112
+ client: sql,
113
+ mode,
114
+ origin,
115
+ active: true,
116
+ poisoned: false,
117
+ inFlight: 0,
118
+ postconditions: [],
119
+ receipts: [],
120
+ statements: []
121
+ };
122
+ const owner = Effect.gen(function* () {
123
+ const value = yield* effect.pipe(Effect.provideService(CurrentSqlCommit, scope), Effect.ensuring(Effect.sync(() => {
124
+ scope.active = false;
125
+ })));
126
+ yield* finish(scope);
127
+ if (mode === "batch") {
128
+ if (batch === void 0) return yield* SqlCommitOwnerError.make({ reason: "batch-required" });
129
+ if (batch.client.transactionService !== sql.transactionService) return yield* SqlCommitOwnerError.make({ reason: "different-client" });
130
+ if (scope.statements.length === 0) return yield* SqlCommitOwnerError.make({ reason: "empty-batch" });
131
+ yield* batch.execute(scope.statements);
132
+ }
133
+ return value;
134
+ });
135
+ if (mode !== "transaction") return owner;
136
+ if (Option.isNone(native)) return sql.withTransaction(owner);
137
+ if (native.value.client.transactionService !== sql.transactionService) return Effect.fail(SqlCommitOwnerError.make({ reason: "different-client" }));
138
+ return native.value.withTransaction(owner);
139
+ })).value;
140
+ });
141
+ return provide(work);
142
+ };
143
+ const read = (effect) => {
144
+ if (Option.isSome(captured)) return provide(report(bound(captured.value, effect)));
145
+ return provide(report(admit.pipe(Effect.andThen(effect))));
146
+ };
147
+ const verify = (effect) => Option.isSome(captured) ? read(effect) : provide(report(effect));
148
+ const coordinate = (effect, mode, origin, batch) => {
149
+ class ApplicationFailure extends Data.TaggedError("SqlCommitApplicationFailure") {}
150
+ const wrapped = effect.pipe(Effect.mapError((error) => new ApplicationFailure({ error })));
151
+ return reportPersistenceFailure(owned(wrapped, mode, origin, batch), (error) => error instanceof ApplicationFailure || Schema.is(SqlCommitOwnerError)(error)).pipe(Effect.catchCause((cause) => Effect.failCause(Cause.fromReasons(cause.reasons.map((reason) => {
152
+ if (Cause.isInterruptReason(reason)) return reason;
153
+ if (Cause.isFailReason(reason) && reason.error instanceof ApplicationFailure) return Cause.makeFailReason(reason.error.error);
154
+ return Cause.makeFailReason(failure);
155
+ })))));
156
+ };
157
+ return {
158
+ read,
159
+ verify,
160
+ operation: (effect, mode = "transaction") => coordinate(effect, mode, "operation"),
161
+ operationBatch: (effect) => Effect.flatMap(SqlBatchCommit, (batch) => coordinate(effect, "batch", "operation", batch)),
162
+ coordinate: (effect, mode = "transaction") => coordinate(effect, mode, "application"),
163
+ coordinateBatch: (effect) => Effect.flatMap(SqlBatchCommit, (batch) => coordinate(effect, "batch", "application", batch)),
164
+ run: (effect, mode = "transaction") => report(owned(effect, mode, "operation")),
165
+ batch: (effect) => Effect.flatMap(SqlBatchCommit, (batch) => report(owned(effect, "batch", "operation", batch)))
166
+ };
167
+ });
168
+ const captureSqlBatchStatements = Effect.map(CurrentSqlCommit, (scope) => ({ append: (statement) => Effect.gen(function* () {
169
+ const current = yield* Effect.serviceOption(CurrentSqlCommit);
170
+ if (!scope.active || scope.mode !== "batch" || Option.isNone(current) || current.value !== scope) return yield* closed();
171
+ scope.statements.push(statement);
172
+ }) }));
173
+ //#endregion
174
+ export { CurrentSqlCommit, SqlBatchCommit, SqlCommitOwnerError, SqlNativeCommit, appendSqlBatchStatement, captureSqlBatchStatements, makeSqlCommitExecutor, registerSqlBatchPostcondition, registerSqlCommitReceipt, registerSqlPostcondition };
175
+
176
+ //# sourceMappingURL=sql-commit.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-commit.mjs","names":[],"sources":["../../src/internal/sql-commit.ts"],"sourcesContent":["import {\n type CommitDiscarded,\n type CommitPending,\n type PreparedCommit,\n CurrentCommitJournal,\n LifecycleHooks,\n coordinateCommit,\n hasCommitScope,\n} from \"@yielded/auth/Hooks\";\nimport { reportPersistenceFailure } from \"@yielded/auth/Persistence\";\nimport { Cause, Context, Data, Effect, Option, Predicate, Schema } from \"effect\";\nimport { SqlClient } from \"effect/sql\";\nimport type { SqlError } from \"effect/sql/SqlError\";\nimport type { Statement } from \"effect/sql/Statement\";\n\nimport type { PersistenceMappingError } from \"./mapping-error\";\nimport { requireStandalone } from \"./standalone\";\n\ntype SqlCommitError = PersistenceMappingError | Schema.SchemaError | SqlError;\n\nexport class SqlCommitOwnerError extends Schema.TaggedError<SqlCommitOwnerError>()(\n \"SqlCommitOwnerError\",\n {\n reason: Schema.Literals([\n \"closed\",\n \"different-client\",\n \"poisoned\",\n \"in-flight\",\n \"invalid-receipt\",\n \"invalid-mode\",\n \"postcondition-requires-transaction\",\n \"batch-required\",\n \"empty-batch\",\n ]),\n },\n) {}\n\n/** Composition selects a D1 batch owner or explicitly supplies no batch owner. */\nexport class SqlBatchCommit extends Context.Service<\n SqlBatchCommit,\n | undefined\n | {\n readonly client: SqlClient.SqlClient;\n readonly execute: (\n statements: ReadonlyArray<Statement<unknown>>,\n ) => Effect.Effect<void, SqlError>;\n }\n>()(\"@yielded/auth-persistence/SqlBatchCommit\") {}\n\n/** Platform ownership for databases requiring a transaction isolation policy. */\nexport class SqlNativeCommit extends Context.Service<\n SqlNativeCommit,\n {\n readonly client: SqlClient.SqlClient;\n readonly withTransaction: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, E | SqlCommitError, R>;\n }\n>()(\"@yielded/auth-persistence/SqlNativeCommit\") {}\n\ntype SqlCommitMode = \"transaction\" | \"statement\" | \"batch\";\n\ninterface SqlPostcondition {\n readonly name: string;\n readonly check: Effect.Effect<void, SqlCommitError, SqlClient.SqlClient>;\n}\n\nexport interface SqlCommitScope {\n readonly client: SqlClient.SqlClient;\n readonly mode: SqlCommitMode;\n readonly origin: \"operation\" | \"application\";\n readonly postconditions: Array<\n SqlPostcondition | { readonly name: string; readonly statement: Statement<unknown> }\n >;\n readonly receipts: Array<Effect.Effect<void, CommitPending | CommitDiscarded>>;\n readonly statements: Array<Statement<unknown>>;\n active: boolean;\n poisoned: boolean;\n inFlight: number;\n}\n\nexport class CurrentSqlCommit extends Context.Service<CurrentSqlCommit, SqlCommitScope>()(\n \"@yielded/auth-persistence/CurrentSqlCommit\",\n) {}\n\nconst closed = (): SqlCommitOwnerError => SqlCommitOwnerError.make({ reason: \"closed\" });\n\n/** Explicit final checks run in the physical owner after application work.\n * They resolve SqlClient there, rather than retaining a released savepoint.\n */\nexport const registerSqlPostcondition = (\n condition: SqlPostcondition,\n): Effect.Effect<void, SqlCommitOwnerError, CurrentSqlCommit> =>\n Effect.flatMap(CurrentSqlCommit, (scope) => {\n if (!scope.active) return Effect.fail(closed());\n if (scope.mode !== \"transaction\")\n return Effect.fail(\n SqlCommitOwnerError.make({ reason: \"postcondition-requires-transaction\" }),\n );\n\n return Effect.sync(() => {\n scope.postconditions.push(condition);\n });\n });\n\n/** D1 checks final semantic predicates after all application batch statements. */\nexport const registerSqlBatchPostcondition = (condition: {\n readonly name: string;\n readonly statement: Statement<unknown>;\n}): Effect.Effect<void, SqlCommitOwnerError, CurrentSqlCommit> =>\n Effect.flatMap(CurrentSqlCommit, (scope) => {\n if (!scope.active) return Effect.fail(closed());\n if (scope.mode !== \"batch\")\n return Effect.fail(SqlCommitOwnerError.make({ reason: \"batch-required\" }));\n\n return Effect.sync(() => {\n scope.postconditions.push(condition);\n });\n });\n\n/** A caught rollback cannot leave a discarded receipt in a successful owner. A D1\n * batch needs one physical statement even when the decision writes nothing. */\nexport const registerSqlCommitReceipt = <A>(\n receipt: PreparedCommit<A>,\n): Effect.Effect<void, SqlCommitOwnerError, CurrentSqlCommit> =>\n Effect.flatMap(CurrentSqlCommit, (scope) => {\n if (!scope.active) return Effect.fail(closed());\n\n return Effect.sync(() => {\n if (scope.mode === \"batch\" && scope.statements.length === 0)\n scope.statements.push(scope.client`select 1`);\n scope.receipts.push(receipt.read.pipe(Effect.asVoid));\n });\n });\n\nexport const appendSqlBatchStatement = (\n statement: Statement<unknown>,\n): Effect.Effect<void, SqlCommitOwnerError, CurrentSqlCommit> =>\n Effect.flatMap(CurrentSqlCommit, (scope) => {\n if (!scope.active) return Effect.fail(closed());\n if (scope.mode !== \"batch\")\n return Effect.fail(SqlCommitOwnerError.make({ reason: \"batch-required\" }));\n\n return Effect.sync(() => {\n scope.statements.push(statement);\n });\n });\n\ntype OwnedRequirements<R> = Exclude<\n Exclude<Exclude<Exclude<R, CurrentSqlCommit>, CurrentCommitJournal>, SqlClient.SqlClient>,\n LifecycleHooks\n>;\n\nexport interface SqlCommitExecutor<Failure> {\n readonly read: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, Failure, Exclude<Exclude<R, SqlClient.SqlClient>, LifecycleHooks>>;\n /** Session verification only: runs on the caller's transaction connection when\n * one is ambient. Other reads reject ambient transactions before any result. */\n readonly verify: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, Failure, Exclude<Exclude<R, SqlClient.SqlClient>, LifecycleHooks>>;\n /** Preserve expected operation failures without admitting application suffix work. */\n readonly operation: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n mode?: \"transaction\" | \"statement\",\n ) => Effect.Effect<A, E | Failure, OwnedRequirements<R>>;\n readonly operationBatch: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, E | Failure, OwnedRequirements<R> | SqlBatchCommit>;\n readonly coordinate: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n mode?: \"transaction\" | \"statement\",\n ) => Effect.Effect<A, E | Failure, OwnedRequirements<R>>;\n readonly coordinateBatch: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, E | Failure, OwnedRequirements<R> | SqlBatchCommit>;\n readonly run: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n mode?: \"transaction\" | \"statement\",\n ) => Effect.Effect<A, Failure, OwnedRequirements<R>>;\n readonly batch: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, Failure, OwnedRequirements<R> | SqlBatchCommit>;\n}\n\n/** Capture an executor where its service is constructed. Bound services cannot\n * escape their owner, join another client, or silently start a second commit.\n * Reads are advisory and never coordinate a commit. Statement mode is reserved\n * for one atomic SQL mutation; authority mutations use transaction or batch mode.\n */\nexport const makeSqlCommitExecutor = Effect.fnUntraced(function* <Failure>(\n unavailable: () => Failure,\n): Effect.fn.Return<SqlCommitExecutor<Failure>, never, SqlClient.SqlClient | LifecycleHooks> {\n const sql = yield* SqlClient.SqlClient;\n const hooks = yield* LifecycleHooks;\n const captured = yield* Effect.serviceOption(CurrentSqlCommit);\n const native = yield* Effect.serviceOption(SqlNativeCommit);\n const failure = unavailable();\n\n const report = <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n reportPersistenceFailure(\n effect,\n (error) =>\n Object.is(error, failure) ||\n Schema.is(SqlCommitOwnerError)(error) ||\n (Predicate.hasProperty(failure, \"_tag\") &&\n typeof failure._tag === \"string\" &&\n Predicate.hasProperty(error, \"_tag\") &&\n error._tag === failure._tag),\n ).pipe(\n Effect.mapError(() => failure),\n Effect.catchCause((cause) =>\n Cause.hasInterrupts(cause) ? Effect.failCause(cause) : Effect.fail(failure),\n ),\n );\n\n const admit = Effect.gen(function* () {\n if (Option.isSome(captured)) {\n const scope = captured.value;\n const current = yield* Effect.serviceOption(CurrentSqlCommit);\n\n if (!scope.active || Option.isNone(current) || current.value !== scope)\n return yield* closed();\n if (scope.client.transactionService !== sql.transactionService)\n return yield* SqlCommitOwnerError.make({ reason: \"different-client\" });\n } else {\n if (yield* hasCommitScope) return yield* Effect.fail(failure);\n yield* requireStandalone(() => failure, sql.transactionService);\n }\n });\n\n const provide = <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n effect.pipe(\n Effect.provideService(SqlClient.SqlClient, sql),\n Effect.provideService(LifecycleHooks, hooks),\n );\n\n const bound = <A, E, R>(scope: SqlCommitScope, effect: Effect.Effect<A, E, R>) =>\n Effect.uninterruptibleMask((restore) =>\n Effect.gen(function* () {\n yield* admit;\n const journal = yield* Effect.serviceOption(CurrentCommitJournal);\n\n if (Option.isNone(journal)) return yield* closed();\n scope.inFlight++;\n\n return yield* restore(\n effect.pipe(\n Effect.provideService(CurrentSqlCommit, scope),\n Effect.provideService(CurrentCommitJournal, journal.value),\n ),\n ).pipe(\n Effect.flatMap((value) => admit.pipe(Effect.as(value))),\n Effect.onExit((exit) =>\n Effect.sync(() => {\n scope.inFlight--;\n if (exit._tag === \"Failure\") scope.poisoned = true;\n }),\n ),\n );\n }),\n );\n\n const finish = Effect.fnUntraced(function* (scope: SqlCommitScope) {\n if (scope.poisoned) return yield* SqlCommitOwnerError.make({ reason: \"poisoned\" });\n if (scope.inFlight !== 0) return yield* SqlCommitOwnerError.make({ reason: \"in-flight\" });\n\n for (const condition of scope.postconditions) {\n if (\"statement\" in condition) scope.statements.push(condition.statement);\n else yield* condition.check;\n }\n for (const receipt of scope.receipts) {\n const status = yield* Effect.result(receipt);\n\n if (status._tag !== \"Failure\" || status.failure._tag !== \"CommitPending\")\n return yield* SqlCommitOwnerError.make({ reason: \"invalid-receipt\" });\n }\n });\n\n const owned = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n mode: SqlCommitMode,\n origin: SqlCommitScope[\"origin\"],\n batch?: SqlBatchCommit[\"Service\"],\n ) => {\n if (Option.isSome(captured)) {\n const scope = captured.value;\n\n if (mode !== scope.mode && !(mode === \"statement\" && scope.mode === \"transaction\"))\n return Effect.fail(SqlCommitOwnerError.make({ reason: \"invalid-mode\" }));\n\n return provide(bound(scope, effect));\n }\n\n const work = Effect.gen(function* () {\n yield* admit;\n\n const result = yield* coordinateCommit(() => {\n const scope: SqlCommitScope = {\n client: sql,\n mode,\n origin,\n active: true,\n poisoned: false,\n inFlight: 0,\n postconditions: [],\n receipts: [],\n statements: [],\n };\n\n const owner = Effect.gen(function* () {\n const value = yield* effect.pipe(\n Effect.provideService(CurrentSqlCommit, scope),\n Effect.ensuring(\n Effect.sync(() => {\n scope.active = false;\n }),\n ),\n );\n\n yield* finish(scope);\n if (mode === \"batch\") {\n if (batch === undefined)\n return yield* SqlCommitOwnerError.make({ reason: \"batch-required\" });\n if (batch.client.transactionService !== sql.transactionService)\n return yield* SqlCommitOwnerError.make({ reason: \"different-client\" });\n if (scope.statements.length === 0)\n return yield* SqlCommitOwnerError.make({ reason: \"empty-batch\" });\n\n yield* batch.execute(scope.statements);\n }\n\n return value;\n });\n\n if (mode !== \"transaction\") return owner;\n if (Option.isNone(native)) return sql.withTransaction(owner);\n if (native.value.client.transactionService !== sql.transactionService)\n return Effect.fail(SqlCommitOwnerError.make({ reason: \"different-client\" }));\n\n return native.value.withTransaction(owner);\n });\n\n return result.value;\n });\n\n return provide(work);\n };\n\n const read = <A, E, R>(effect: Effect.Effect<A, E, R>) => {\n if (Option.isSome(captured)) return provide(report(bound(captured.value, effect)));\n\n return provide(report(admit.pipe(Effect.andThen(effect))));\n };\n\n const verify = <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Option.isSome(captured) ? read(effect) : provide(report(effect));\n\n const coordinate = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n mode: SqlCommitMode,\n origin: SqlCommitScope[\"origin\"],\n batch?: SqlBatchCommit[\"Service\"],\n ) => {\n class ApplicationFailure extends Data.TaggedError(\"SqlCommitApplicationFailure\")<{\n readonly error: E;\n }> {}\n const wrapped = effect.pipe(Effect.mapError((error) => new ApplicationFailure({ error })));\n\n return reportPersistenceFailure(\n owned(wrapped, mode, origin, batch),\n (error) => error instanceof ApplicationFailure || Schema.is(SqlCommitOwnerError)(error),\n ).pipe(\n Effect.catchCause((cause) =>\n Effect.failCause(\n Cause.fromReasons(\n cause.reasons.map((reason): Cause.Reason<E | Failure> => {\n if (Cause.isInterruptReason(reason)) return reason;\n if (Cause.isFailReason(reason) && reason.error instanceof ApplicationFailure)\n return Cause.makeFailReason(reason.error.error);\n\n return Cause.makeFailReason(failure);\n }),\n ),\n ),\n ),\n );\n };\n\n return {\n read,\n verify,\n operation: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n mode: \"transaction\" | \"statement\" = \"transaction\",\n ) => coordinate(effect, mode, \"operation\"),\n operationBatch: <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Effect.flatMap(SqlBatchCommit, (batch) => coordinate(effect, \"batch\", \"operation\", batch)),\n coordinate: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n mode: \"transaction\" | \"statement\" = \"transaction\",\n ) => coordinate(effect, mode, \"application\"),\n coordinateBatch: <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Effect.flatMap(SqlBatchCommit, (batch) => coordinate(effect, \"batch\", \"application\", batch)),\n run: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n mode: \"transaction\" | \"statement\" = \"transaction\",\n ): Effect.Effect<A, Failure, OwnedRequirements<R>> => report(owned(effect, mode, \"operation\")),\n batch: <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Effect.flatMap(SqlBatchCommit, (batch) => report(owned(effect, \"batch\", \"operation\", batch))),\n };\n});\n\n/** Application statements join the same fixed batch and cannot escape it. */\nexport interface SqlBatchCollector {\n readonly append: (statement: Statement<unknown>) => Effect.Effect<void, SqlCommitOwnerError>;\n}\n\nexport const captureSqlBatchStatements: Effect.Effect<SqlBatchCollector, never, CurrentSqlCommit> =\n Effect.map(CurrentSqlCommit, (scope) => ({\n append: (statement: Statement<unknown>) =>\n Effect.gen(function* () {\n const current = yield* Effect.serviceOption(CurrentSqlCommit);\n\n if (\n !scope.active ||\n scope.mode !== \"batch\" ||\n Option.isNone(current) ||\n current.value !== scope\n )\n return yield* closed();\n scope.statements.push(statement);\n }),\n }));\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import * as Statement$1 from "effect/sql/Statement";
2
+ import { SqlClient } from "effect/sql/SqlClient";
3
+ //#region src/internal/sql-expression.d.ts
4
+ /** Pure mapped SQL. Compilation binds values through the executing client's
5
+ * dialect; expressions neither acquire a client nor execute a query. */
6
+ export declare class SqlExpression {
7
+ readonly compile: (client: SqlClient) => Statement$1.Fragment;
8
+ constructor(compile: (client: SqlClient) => Statement$1.Fragment);
9
+ }
10
+ declare const template: (parts: TemplateStringsArray, ...values: ReadonlyArray<unknown>) => SqlExpression;
11
+ export declare const sql: typeof template & {
12
+ join: (values: ReadonlyArray<unknown>, separator?: SqlExpression) => SqlExpression;
13
+ };
14
+ export declare const eq: (left: unknown, right: unknown) => SqlExpression;
15
+ export declare const and: (...expressions: ReadonlyArray<SqlExpression | undefined>) => SqlExpression | undefined;
16
+ //#endregion
17
+ //# sourceMappingURL=sql-expression.d.mts.map
@@ -0,0 +1,49 @@
1
+ import { PersistenceMappingError } from "./mapping-error.mjs";
2
+ import { Column, Table, identifier } from "./sql-table.mjs";
3
+ import * as Statement$1 from "effect/sql/Statement";
4
+ //#region src/internal/sql-expression.ts
5
+ /** Pure mapped SQL. Compilation binds values through the executing client's
6
+ * dialect; expressions neither acquire a client nor execute a query. */
7
+ var SqlExpression = class {
8
+ compile;
9
+ constructor(compile) {
10
+ this.compile = compile;
11
+ }
12
+ };
13
+ const quoted = (client, name) => {
14
+ if (name.includes("\0")) throw PersistenceMappingError.make({
15
+ operation: "mapping",
16
+ cause: "NUL in SQL identifier"
17
+ });
18
+ return client.literal(identifier(name));
19
+ };
20
+ const tableName = (client, name, schema) => schema === void 0 ? quoted(client, name) : client`${quoted(client, schema)}.${quoted(client, name)}`;
21
+ const value = (client, input) => {
22
+ if (Statement$1.isFragment(input)) return input;
23
+ if (input instanceof SqlExpression) return input.compile(client);
24
+ if (input instanceof Table) return tableName(client, input.name, input.schema);
25
+ if (input instanceof Column) return client`${tableName(client, input.tableName, input.schema)}.${quoted(client, input.options.name)}`;
26
+ return Statement$1.fragment([Statement$1.parameter(typeof input === "boolean" ? client.onDialectOrElse({
27
+ sqlite: () => Number(input),
28
+ orElse: () => input
29
+ }) : input)]);
30
+ };
31
+ /** Reject foreign expression handles at the metadata boundary. */
32
+ const compileSqlExpression = (client, expression) => {
33
+ if (!Statement$1.isFragment(expression) && !(expression instanceof SqlExpression) && !(expression instanceof Table) && !(expression instanceof Column)) throw PersistenceMappingError.make({
34
+ operation: "mapping",
35
+ cause: "Expected a SQL expression"
36
+ });
37
+ return value(client, expression);
38
+ };
39
+ const template = (parts, ...values) => new SqlExpression((client) => client.join("", false)(parts.flatMap((part, index) => index === 0 ? [client.literal(part)] : [value(client, values[index - 1]), client.literal(part)])));
40
+ const sql = Object.assign(template, { join: (values, separator = template``) => new SqlExpression((client) => client.join("", false)(values.flatMap((input, index) => index === 0 ? [value(client, input)] : [separator.compile(client), value(client, input)]))) });
41
+ const eq = (left, right) => sql`${left} = ${right}`;
42
+ const and = (...expressions) => {
43
+ const present = expressions.filter((expression) => expression !== void 0);
44
+ return present.length === 0 ? void 0 : sql`(${sql.join(present, sql` AND `)})`;
45
+ };
46
+ //#endregion
47
+ export { SqlExpression, and, compileSqlExpression, eq, sql };
48
+
49
+ //# sourceMappingURL=sql-expression.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-expression.mjs","names":["Statement"],"sources":["../../src/internal/sql-expression.ts"],"sourcesContent":["import type { SqlClient } from \"effect/sql/SqlClient\";\nimport * as Statement from \"effect/sql/Statement\";\n\nimport { PersistenceMappingError } from \"./mapping-error\";\nimport { Column, identifier, Table } from \"./sql-table\";\n\n/** Pure mapped SQL. Compilation binds values through the executing client's\n * dialect; expressions neither acquire a client nor execute a query. */\nexport class SqlExpression {\n constructor(readonly compile: (client: SqlClient) => Statement.Fragment) {}\n}\n\nconst quoted = (client: SqlClient, name: string) => {\n if (name.includes(\"\\0\"))\n throw PersistenceMappingError.make({ operation: \"mapping\", cause: \"NUL in SQL identifier\" });\n\n return client.literal(identifier(name));\n};\n\nconst tableName = (client: SqlClient, name: string, schema?: string) =>\n schema === undefined\n ? quoted(client, name)\n : client`${quoted(client, schema)}.${quoted(client, name)}`;\n\nconst value = (client: SqlClient, input: unknown): Statement.Fragment => {\n if (Statement.isFragment(input)) return input;\n if (input instanceof SqlExpression) return input.compile(client);\n if (input instanceof Table) return tableName(client, input.name, input.schema);\n if (input instanceof Column)\n return client`${tableName(client, input.tableName, input.schema)}.${quoted(client, input.options.name)}`;\n\n return Statement.fragment([\n Statement.parameter(\n typeof input === \"boolean\"\n ? client.onDialectOrElse({ sqlite: () => Number(input), orElse: () => input })\n : input,\n ),\n ]);\n};\n\n/** Reject foreign expression handles at the metadata boundary. */\nexport const compileSqlExpression = (\n client: SqlClient,\n expression: unknown,\n): Statement.Fragment => {\n if (\n !Statement.isFragment(expression) &&\n !(expression instanceof SqlExpression) &&\n !(expression instanceof Table) &&\n !(expression instanceof Column)\n )\n throw PersistenceMappingError.make({\n operation: \"mapping\",\n cause: \"Expected a SQL expression\",\n });\n\n return value(client, expression);\n};\n\nconst template = (parts: TemplateStringsArray, ...values: ReadonlyArray<unknown>) =>\n new SqlExpression((client) =>\n client.join(\n \"\",\n false,\n )(\n parts.flatMap((part, index) =>\n index === 0\n ? [client.literal(part)]\n : [value(client, values[index - 1]), client.literal(part)],\n ),\n ),\n );\n\nexport const sql = Object.assign(template, {\n join: (values: ReadonlyArray<unknown>, separator: SqlExpression = template``) =>\n new SqlExpression((client) =>\n client.join(\n \"\",\n false,\n )(\n values.flatMap((input, index) =>\n index === 0 ? [value(client, input)] : [separator.compile(client), value(client, input)],\n ),\n ),\n ),\n});\n\nexport const eq = (left: unknown, right: unknown): SqlExpression => sql`${left} = ${right}`;\n\nexport const and = (...expressions: ReadonlyArray<SqlExpression | undefined>) => {\n const present = expressions.filter((expression) => expression !== undefined);\n\n return present.length === 0 ? undefined : sql`(${sql.join(present, sql` AND `)})`;\n};\n"],"mappings":";;;;;;AAQA,IAAa,gBAAb,MAA2B;CACJ;CAArB,YAAY,SAA6D;EAApD,KAAA,UAAA;CAAqD;AAC5E;AAEA,MAAM,UAAU,QAAmB,SAAiB;CAClD,IAAI,KAAK,SAAS,IAAI,GACpB,MAAM,wBAAwB,KAAK;EAAE,WAAW;EAAW,OAAO;CAAwB,CAAC;CAE7F,OAAO,OAAO,QAAQ,WAAW,IAAI,CAAC;AACxC;AAEA,MAAM,aAAa,QAAmB,MAAc,WAClD,WAAW,KAAA,IACP,OAAO,QAAQ,IAAI,IACnB,MAAM,GAAG,OAAO,QAAQ,MAAM,EAAE,GAAG,OAAO,QAAQ,IAAI;AAE5D,MAAM,SAAS,QAAmB,UAAuC;CACvE,IAAIA,YAAU,WAAW,KAAK,GAAG,OAAO;CACxC,IAAI,iBAAiB,eAAe,OAAO,MAAM,QAAQ,MAAM;CAC/D,IAAI,iBAAiB,OAAO,OAAO,UAAU,QAAQ,MAAM,MAAM,MAAM,MAAM;CAC7E,IAAI,iBAAiB,QACnB,OAAO,MAAM,GAAG,UAAU,QAAQ,MAAM,WAAW,MAAM,MAAM,EAAE,GAAG,OAAO,QAAQ,MAAM,QAAQ,IAAI;CAEvG,OAAOA,YAAU,SAAS,CACxBA,YAAU,UACR,OAAO,UAAU,YACb,OAAO,gBAAgB;EAAE,cAAc,OAAO,KAAK;EAAG,cAAc;CAAM,CAAC,IAC3E,KACN,CACF,CAAC;AACH;;AAGA,MAAa,wBACX,QACA,eACuB;CACvB,IACE,CAACA,YAAU,WAAW,UAAU,KAChC,EAAE,sBAAsB,kBACxB,EAAE,sBAAsB,UACxB,EAAE,sBAAsB,SAExB,MAAM,wBAAwB,KAAK;EACjC,WAAW;EACX,OAAO;CACT,CAAC;CAEH,OAAO,MAAM,QAAQ,UAAU;AACjC;AAEA,MAAM,YAAY,OAA6B,GAAG,WAChD,IAAI,eAAe,WACjB,OAAO,KACL,IACA,KACF,CAAC,CACC,MAAM,SAAS,MAAM,UACnB,UAAU,IACN,CAAC,OAAO,QAAQ,IAAI,CAAC,IACrB,CAAC,MAAM,QAAQ,OAAO,QAAQ,EAAE,GAAG,OAAO,QAAQ,IAAI,CAAC,CAC7D,CACF,CACF;AAEF,MAAa,MAAM,OAAO,OAAO,UAAU,EACzC,OAAO,QAAgC,YAA2B,QAAQ,OACxE,IAAI,eAAe,WACjB,OAAO,KACL,IACA,KACF,CAAC,CACC,OAAO,SAAS,OAAO,UACrB,UAAU,IAAI,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,MAAM,GAAG,MAAM,QAAQ,KAAK,CAAC,CACzF,CACF,CACF,EACJ,CAAC;AAED,MAAa,MAAM,MAAe,UAAkC,GAAG,GAAG,KAAK,KAAK;AAEpF,MAAa,OAAO,GAAG,gBAA0D;CAC/E,MAAM,UAAU,YAAY,QAAQ,eAAe,eAAe,KAAA,CAAS;CAE3E,OAAO,QAAQ,WAAW,IAAI,KAAA,IAAY,GAAG,IAAI,IAAI,KAAK,SAAS,GAAG,OAAO,EAAE;AACjF"}
@@ -1,29 +1,13 @@
1
- import { OAuthConnectedAction, OAuthConnectedAdmissionTable as OAuthConnectedAdmissionTable$1, OAuthConnectedAuthorityMapping as OAuthConnectedAuthorityMapping$1, OAuthConnectedClientRegistrationTable as OAuthConnectedClientRegistrationTable$1, OAuthConnectedCohortTable as OAuthConnectedCohortTable$1, OAuthConnectedCommandTable as OAuthConnectedCommandTable$1, OAuthConnectedFlowTable as OAuthConnectedFlowTable$1, OAuthConnectedGrantTable as OAuthConnectedGrantTable$1, OAuthConnectedMapping as OAuthConnectedMapping$1, OAuthConnectedOrderCodec, OAuthConnectedOwnershipRead as OAuthConnectedOwnershipRead$1, OAuthConnectedPolicyGuard as OAuthConnectedPolicyGuard$1, OAuthConnectedPolicyGuardTable as OAuthConnectedPolicyGuardTable$1, OAuthConnectedPolicyInput, OAuthConnectedRevocationJobTable as OAuthConnectedRevocationJobTable$1, OAuthConnectedRevocationMapping as OAuthConnectedRevocationMapping$1, OAuthConnectedSqlPolicy as OAuthConnectedSqlPolicy$1, OAuthConnectedSubjectTable as OAuthConnectedSubjectTable$1, oauth_connected_model_d_exports, requiredOAuthConnectedConstraints, requiredOAuthConnectedRevocationConstraints } from "./models/oauth-connected-model.mjs";
2
- import { Fragment, Table } from "./sql-table.mjs";
1
+ import { SqlExpression } from "./sql-expression.mjs";
2
+ import { OAuthConnectedAction, OAuthConnectedGrantTable as OAuthConnectedGrantTable$1, OAuthConnectedMapping as OAuthConnectedMapping$1, OAuthConnectedPolicyInput, OAuthConnectedRevocationJobTable as OAuthConnectedRevocationJobTable$1, OAuthConnectedRevocationMapping as OAuthConnectedRevocationMapping$1, OAuthConnectedSqlPolicy as OAuthConnectedSqlPolicy$1, oauth_connected_model_d_exports, requiredOAuthConnectedConstraints, requiredOAuthConnectedRevocationConstraints } from "./models/oauth-connected-model.mjs";
3
+ import { Table } from "./sql-table.mjs";
3
4
  import { SqlTableModel } from "./sql-oauth-model.mjs";
4
5
  //#region src/internal/sql-oauth-connected-model.d.ts
5
- export type OAuthConnectedSubjectTable<S extends Table> = OAuthConnectedSubjectTable$1<SqlTableModel<S>, Fragment>;
6
- export type OAuthConnectedFlowTable<F extends Table, N> = OAuthConnectedFlowTable$1<SqlTableModel<F>, N>;
7
6
  export type OAuthConnectedGrantTable<G extends Table, N> = OAuthConnectedGrantTable$1<SqlTableModel<G>, N>;
8
- /** Also stores a permanent provider/issuer scope anchor. clientKey must fit 52
9
- * ASCII characters. Empty clientRegistrationId is reserved for that anchor;
10
- * actual profile registrations are nonempty. Scope counter stays zero. */
11
- export type OAuthConnectedClientRegistrationTable<C extends Table> = OAuthConnectedClientRegistrationTable$1<SqlTableModel<C>>;
12
- /** Remote authority: no local-subject column or subject-scoped key. Retain this
13
- * anchor/cutoff when a legitimately released tuple gains a different local owner. */
14
- export type OAuthConnectedCohortTable<C extends Table> = OAuthConnectedCohortTable$1<SqlTableModel<C>>;
15
- export type OAuthConnectedAdmissionTable<A extends Table, N> = OAuthConnectedAdmissionTable$1<SqlTableModel<A>, N>;
16
- export type OAuthConnectedCommandTable<C extends Table, N> = OAuthConnectedCommandTable$1<SqlTableModel<C>, N>;
17
7
  export type OAuthConnectedRevocationJobTable<J extends Table, N> = OAuthConnectedRevocationJobTable$1<SqlTableModel<J>, N>;
18
- export type OAuthConnectedPolicyGuardTable<T extends Table, N> = OAuthConnectedPolicyGuardTable$1<SqlTableModel<T>, N, Fragment>;
19
- export type OAuthConnectedPolicyGuard<N> = OAuthConnectedPolicyGuard$1<N, Fragment, Table>;
20
- export declare const oauthConnectedPolicyGuard: <T extends Table, N>(input: OAuthConnectedPolicyGuardTable<T, N>) => OAuthConnectedPolicyGuard<N>;
21
- export type OAuthConnectedSqlPolicy<N> = OAuthConnectedSqlPolicy$1<N, Fragment, Table>;
22
- /** Existing ownership only; workers never allocate or acquire a tuple. */
23
- export type OAuthConnectedOwnershipRead<T extends Table, O extends Table, N> = OAuthConnectedOwnershipRead$1<SqlTableModel<T>, SqlTableModel<O>, N, Fragment>;
24
- export type OAuthConnectedAuthorityMapping<T extends Table, O extends Table, F extends Table, G extends Table, C extends Table, H extends Table, N> = OAuthConnectedAuthorityMapping$1<SqlTableModel<T>, SqlTableModel<O>, SqlTableModel<F>, SqlTableModel<G>, SqlTableModel<C>, SqlTableModel<H>, N, Fragment>;
25
- export type OAuthConnectedMapping<S extends Table, AC extends Table, T extends Table, O extends Table, F extends Table, G extends Table, C extends Table, H extends Table, A extends Table, D extends Table, N, J extends Table = never> = OAuthConnectedMapping$1<SqlTableModel<S>, SqlTableModel<AC>, SqlTableModel<T>, SqlTableModel<O>, SqlTableModel<F>, SqlTableModel<G>, SqlTableModel<C>, SqlTableModel<H>, SqlTableModel<A>, SqlTableModel<D>, N, SqlTableModel<J>, Fragment, Table, SqlTableModel<Table>>;
26
- export type OAuthConnectedRevocationMapping<T extends Table, O extends Table, F extends Table, G extends Table, C extends Table, H extends Table, J extends Table, N> = OAuthConnectedRevocationMapping$1<SqlTableModel<T>, SqlTableModel<O>, SqlTableModel<F>, SqlTableModel<G>, SqlTableModel<C>, SqlTableModel<H>, SqlTableModel<J>, N, Fragment>;
8
+ export type OAuthConnectedSqlPolicy<N> = OAuthConnectedSqlPolicy$1<N, SqlExpression>;
9
+ export type OAuthConnectedMapping<S extends Table, AC extends Table, O extends Table, F extends Table, G extends Table, N, J extends Table = Table> = OAuthConnectedMapping$1<SqlTableModel<S>, SqlTableModel<AC>, SqlTableModel<O>, SqlTableModel<F>, SqlTableModel<G>, N, SqlTableModel<J>, SqlExpression, SqlTableModel>;
10
+ export type OAuthConnectedRevocationMapping<O extends Table, G extends Table, J extends Table, N> = OAuthConnectedRevocationMapping$1<SqlTableModel<O>, SqlTableModel<G>, SqlTableModel<J>, N, SqlExpression>;
27
11
  //#endregion
28
- export { type OAuthConnectedAction, type OAuthConnectedOrderCodec, type OAuthConnectedPolicyInput, requiredOAuthConnectedConstraints, requiredOAuthConnectedRevocationConstraints };
12
+ export { type OAuthConnectedAction, type OAuthConnectedPolicyInput, requiredOAuthConnectedConstraints, requiredOAuthConnectedRevocationConstraints };
29
13
  //# sourceMappingURL=sql-oauth-connected-model.d.mts.map
@@ -1,60 +1,35 @@
1
- import { TableModel } from "./query-operations.mjs";
2
- import { OAuthAccountsMapping as OAuthAccountsMapping$1, OAuthAction, OAuthAuthorityReadTable as OAuthAuthorityReadTable$1, OAuthAuthorityTable as OAuthAuthorityTable$1, OAuthCleanupDescriptor as OAuthCleanupDescriptor$1, OAuthCleanupTable as OAuthCleanupTable$1, OAuthClock as OAuthClock$1, OAuthCredentialReadTable as OAuthCredentialReadTable$1, OAuthCredentialTable as OAuthCredentialTable$1, OAuthD1Mapping, OAuthEligibilityDescriptor as OAuthEligibilityDescriptor$1, OAuthEligibilityFact, OAuthEligibilityTable as OAuthEligibilityTable$1, OAuthFlowState, OAuthFlowTable as OAuthFlowTable$1, OAuthMetadataPolicy as OAuthMetadataPolicy$1, OAuthOwnershipMutation as OAuthOwnershipMutation$1, OAuthOwnershipReadTable as OAuthOwnershipReadTable$1, OAuthOwnershipTable as OAuthOwnershipTable$1, OAuthReferenceGuardDescriptor as OAuthReferenceGuardDescriptor$1, OAuthReferenceGuardTable as OAuthReferenceGuardTable$1, OAuthRegistrationAuthority, OAuthRegistrationBase as OAuthRegistrationBase$1, OAuthRegistrationCommandTable as OAuthRegistrationCommandTable$1, OAuthRegistrationEligibility as OAuthRegistrationEligibility$1, OAuthRegistrationGuardDescriptor as OAuthRegistrationGuardDescriptor$1, OAuthRegistrationGuardTable as OAuthRegistrationGuardTable$1, OAuthRegistrationIntentMapping as OAuthRegistrationIntentMapping$1, OAuthRegistrationIntentTable as OAuthRegistrationIntentTable$1, OAuthRegistrationMapping as OAuthRegistrationMapping$1, OAuthRegistrationState, OAuthSignInMapping as OAuthSignInMapping$1, OAuthSubjectReadTable as OAuthSubjectReadTable$1, OAuthSubjectTable as OAuthSubjectTable$1, OAuthTupleAuthorityTable as OAuthTupleAuthorityTable$1, OAuthTupleState, OAuthUnlinkCommandTable as OAuthUnlinkCommandTable$1, oauth_model_d_exports, requiredOAuthAccountsConstraints, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints, requiredOAuthTupleConstraints } from "./models/oauth-model.mjs";
3
- import { Fragment, Table } from "./sql-table.mjs";
1
+ import { SqlExpression } from "./sql-expression.mjs";
2
+ import { TableModel } from "./table-model.mjs";
3
+ import { OAuthAccountsMapping as OAuthAccountsMapping$1, OAuthAction, OAuthAuthorityReadTable as OAuthAuthorityReadTable$1, OAuthAuthorityTable as OAuthAuthorityTable$1, OAuthCleanupDescriptor as OAuthCleanupDescriptor$1, OAuthCleanupTable as OAuthCleanupTable$1, OAuthClock as OAuthClock$1, OAuthCredentialReadTable as OAuthCredentialReadTable$1, OAuthCredentialTable as OAuthCredentialTable$1, OAuthD1Mapping, OAuthEligibilityDescriptor as OAuthEligibilityDescriptor$1, OAuthEligibilityFact, OAuthEligibilityTable as OAuthEligibilityTable$1, OAuthFlowTable as OAuthFlowTable$1, OAuthOwnershipReadTable as OAuthOwnershipReadTable$1, OAuthOwnershipTable as OAuthOwnershipTable$1, OAuthRegistrationAuthority, OAuthRegistrationGuardDescriptor as OAuthRegistrationGuardDescriptor$1, OAuthRegistrationGuardTable as OAuthRegistrationGuardTable$1, OAuthRegistrationIntentMapping as OAuthRegistrationIntentMapping$1, OAuthRegistrationIntentTable as OAuthRegistrationIntentTable$1, OAuthRegistrationMapping as OAuthRegistrationMapping$1, OAuthSignInMapping as OAuthSignInMapping$1, OAuthSubjectReadTable as OAuthSubjectReadTable$1, OAuthSubjectTable as OAuthSubjectTable$1, oauth_model_d_exports, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints } from "./models/oauth-model.mjs";
4
+ import { Table } from "./sql-table.mjs";
4
5
  //#region src/internal/sql-oauth-model.d.ts
5
6
  export interface SqlTableModel<T extends Table = Table> extends TableModel {
6
7
  readonly table: T;
7
8
  }
8
- /** The engine writes every critical column explicitly after applying the pure
9
- * consumer encoder. Native instant values must roundtrip without precision loss. */
10
- export type OAuthClock = OAuthClock$1<Fragment>;
11
- export type OAuthSubjectReadTable<S extends Table> = OAuthSubjectReadTable$1<SqlTableModel<S>, Fragment>;
12
- export type OAuthSubjectTable<S extends Table> = OAuthSubjectTable$1<SqlTableModel<S>, Fragment>;
13
- export type OAuthOwnershipReadTable<O extends Table, N> = OAuthOwnershipReadTable$1<SqlTableModel<O>, N, Fragment>;
14
- export type OAuthOwnershipTable<O extends Table, N> = OAuthOwnershipTable$1<SqlTableModel<O>, N, Fragment>;
15
- export type OAuthCredentialReadTable<C extends Table> = OAuthCredentialReadTable$1<SqlTableModel<C>, Fragment>;
16
- export type OAuthCredentialTable<C extends Table, N> = OAuthCredentialTable$1<SqlTableModel<C>, N, Fragment>;
17
- export type OAuthAuthorityReadTable<C extends Table> = OAuthAuthorityReadTable$1<SqlTableModel<C>, Fragment>;
18
- export type OAuthAuthorityTable<C extends Table, N> = OAuthAuthorityTable$1<SqlTableModel<C>, N, Fragment>;
19
- /** Both purposes may use the same physical table. Shared tables share module/flow
20
- * and module/command uniqueness. The snapshot has the exact purpose-specific core
21
- * codec; terminal writes erase it, while identity, claim and retention columns remain. */
9
+ export type OAuthClock = OAuthClock$1<SqlExpression>;
10
+ export type OAuthSubjectReadTable<S extends Table> = OAuthSubjectReadTable$1<SqlTableModel<S>, SqlExpression>;
11
+ export type OAuthSubjectTable<S extends Table> = OAuthSubjectTable$1<SqlTableModel<S>, SqlExpression>;
12
+ export type OAuthOwnershipReadTable<O extends Table, N> = OAuthOwnershipReadTable$1<SqlTableModel<O>, N>;
13
+ export type OAuthOwnershipTable<O extends Table, N> = OAuthOwnershipTable$1<SqlTableModel<O>, N>;
14
+ export type OAuthCredentialReadTable<C extends Table> = OAuthCredentialReadTable$1<SqlTableModel<C>, SqlExpression>;
15
+ export type OAuthCredentialTable<C extends Table, N> = OAuthCredentialTable$1<SqlTableModel<C>, N, SqlExpression>;
16
+ export type OAuthAuthorityReadTable<C extends Table> = OAuthAuthorityReadTable$1<SqlTableModel<C>, SqlExpression>;
17
+ export type OAuthAuthorityTable<C extends Table, N> = OAuthAuthorityTable$1<SqlTableModel<C>, N, SqlExpression>;
22
18
  export type OAuthFlowTable<F extends Table> = OAuthFlowTable$1<SqlTableModel<F>>;
23
- export type OAuthTupleAuthorityTable<T extends Table, N> = OAuthTupleAuthorityTable$1<SqlTableModel<T>, N>;
24
19
  export type OAuthRegistrationIntentTable<I extends Table> = OAuthRegistrationIntentTable$1<SqlTableModel<I>>;
25
- export type OAuthRegistrationCommandTable<R extends Table, Registration> = OAuthRegistrationCommandTable$1<SqlTableModel<R>, Registration>;
26
- export type OAuthUnlinkCommandTable<U extends Table> = OAuthUnlinkCommandTable$1<SqlTableModel<U>>;
27
- /** Each descriptor reads only its own subject-scoped method rows. The native row
28
- * projector and SQL condition must express the same installed method eligibility.
29
- * All source/identifier/policy mutations advance subject securityRevision. D1 also
30
- * guards exact selected IDs/versions and absence/count assumptions, never just a
31
- * stale boolean. An over-limit graph fails closed rather than truncating. */
32
- export type OAuthEligibilityTable<T extends Table, N> = OAuthEligibilityTable$1<SqlTableModel<T>, N, Fragment>;
33
- /** Authenticated command replay uses current subject status and this additional
34
- * nonconsuming SQL policy. It never consumes a fresh action factor. */
35
- export type OAuthMetadataPolicy<N> = OAuthMetadataPolicy$1<N, Fragment>;
36
- export type OAuthCleanupTable<T extends Table, N> = OAuthCleanupTable$1<SqlTableModel<T>, N, Fragment>;
37
- export type OAuthRegistrationEligibility<N> = OAuthRegistrationEligibility$1<N, Fragment>;
38
- export type OAuthSignInMapping<S extends Table, O extends Table, C extends Table, AC extends Table, F extends Table, N> = OAuthSignInMapping$1<SqlTableModel<S>, SqlTableModel<O>, SqlTableModel<C>, SqlTableModel<AC>, SqlTableModel<F>, N, Fragment>;
39
- export type OAuthOwnershipMutation<T extends Table, O extends Table, N> = OAuthOwnershipMutation$1<SqlTableModel<T>, SqlTableModel<O>, N, Fragment>;
40
- export type OAuthRegistrationIntentMapping<S extends Table, O extends Table, C extends Table, AC extends Table, F extends Table, T extends Table, I extends Table, N> = OAuthRegistrationIntentMapping$1<SqlTableModel<S>, SqlTableModel<O>, SqlTableModel<C>, SqlTableModel<AC>, SqlTableModel<F>, SqlTableModel<T>, SqlTableModel<I>, N, Fragment>;
41
- export type OAuthRegistrationBase<Registration, T extends Table, O extends Table, I extends Table, R extends Table, N> = OAuthRegistrationBase$1<Registration, SqlTableModel<T>, SqlTableModel<O>, SqlTableModel<I>, SqlTableModel<R>, N, Fragment, Table>;
42
- export type OAuthRegistrationGuardTable<T extends Table, Registration, N> = OAuthRegistrationGuardTable$1<SqlTableModel<T>, Registration, N, Fragment>;
43
- export type OAuthRegistrationGuardDescriptor<Registration, N> = OAuthRegistrationGuardDescriptor$1<Registration, N, Fragment, Table>;
44
- export declare const oauthRegistrationGuardTable: <T extends Table, Registration, N>(input: OAuthRegistrationGuardTable<T, Registration, N>) => OAuthRegistrationGuardDescriptor<Registration, N>;
45
- export type OAuthRegistrationMapping<Registration, S extends Table, O extends Table, C extends Table, AC extends Table, T extends Table, I extends Table, R extends Table, N> = OAuthRegistrationMapping$1<Registration, SqlTableModel<S>, SqlTableModel<O>, SqlTableModel<C>, SqlTableModel<AC>, SqlTableModel<T>, SqlTableModel<I>, SqlTableModel<R>, N, Fragment, Table>;
46
- /** Heterogeneous descriptors are made by typed factories and projected privately. */
47
- export type OAuthEligibilityDescriptor<N> = OAuthEligibilityDescriptor$1<N, Fragment, Table>;
48
- export declare const oauthEligibilityTable: <T extends Table, N>(input: OAuthEligibilityTable<T, N>) => OAuthEligibilityDescriptor<N>;
49
- export type OAuthCleanupDescriptor<N> = OAuthCleanupDescriptor$1<N, Fragment, Table>;
50
- export declare const oauthCleanupTable: <T extends Table, N>(input: OAuthCleanupTable<T, N>) => OAuthCleanupDescriptor<N>;
51
- /** A stable application/reference lock acquired before an ownership target.
52
- * Missing rows retain ownership. Conditions use detached native IDs; every
53
- * writer of the guarded reference follows the same order. */
54
- export type OAuthReferenceGuardTable<T extends Table, N> = OAuthReferenceGuardTable$1<SqlTableModel<T>, N, Fragment>;
55
- export type OAuthReferenceGuardDescriptor<N> = OAuthReferenceGuardDescriptor$1<N, Fragment, Table>;
56
- export declare const oauthReferenceGuardTable: <T extends Table, N>(input: OAuthReferenceGuardTable<T, N>) => OAuthReferenceGuardDescriptor<N>;
57
- export type OAuthAccountsMapping<S extends Table, O extends Table, C extends Table, AC extends Table, F extends Table, T extends Table, U extends Table, N> = OAuthAccountsMapping$1<SqlTableModel<S>, SqlTableModel<O>, SqlTableModel<C>, SqlTableModel<AC>, SqlTableModel<F>, SqlTableModel<T>, SqlTableModel<U>, N, Fragment, Table>;
20
+ export type OAuthEligibilityTable<T extends Table, N> = OAuthEligibilityTable$1<SqlTableModel<T>, N, SqlExpression>;
21
+ export type OAuthCleanupTable<T extends Table, N> = OAuthCleanupTable$1<SqlTableModel<T>, N, SqlExpression>;
22
+ export type OAuthRegistrationGuardTable<T extends Table, Registration, N> = OAuthRegistrationGuardTable$1<SqlTableModel<T>, Registration, N, SqlExpression>;
23
+ export type OAuthRegistrationGuardDescriptor<Registration, N> = OAuthRegistrationGuardDescriptor$1<Registration, N, SqlExpression, Table>;
24
+ export type OAuthEligibilityDescriptor<N> = OAuthEligibilityDescriptor$1<N, SqlExpression, Table>;
25
+ export type OAuthCleanupDescriptor<N> = OAuthCleanupDescriptor$1<N, SqlExpression, Table>;
26
+ export type OAuthSignInMapping<S extends Table, O extends Table, C extends Table, AC extends Table, F extends Table, N> = OAuthSignInMapping$1<SqlTableModel<S>, SqlTableModel<O>, SqlTableModel<C>, SqlTableModel<AC>, SqlTableModel<F>, N, SqlExpression>;
27
+ export type OAuthAccountsMapping<S extends Table, O extends Table, C extends Table, AC extends Table, F extends Table, N> = OAuthAccountsMapping$1<SqlTableModel<S>, SqlTableModel<O>, SqlTableModel<C>, SqlTableModel<AC>, SqlTableModel<F>, N, SqlExpression, Table>;
28
+ export type OAuthRegistrationIntentMapping<O extends Table, I extends Table, N> = OAuthRegistrationIntentMapping$1<SqlTableModel<O>, SqlTableModel<I>, N, SqlExpression>;
29
+ export type OAuthRegistrationMapping<Registration, S extends Table, O extends Table, C extends Table, AC extends Table, I extends Table, N> = OAuthRegistrationMapping$1<Registration, SqlTableModel<S>, SqlTableModel<O>, SqlTableModel<C>, SqlTableModel<AC>, SqlTableModel<I>, N, SqlExpression, Table>;
30
+ export declare const oauthEligibilityTable: <T extends Table, N>(input: OAuthEligibilityTable<T, N>) => OAuthEligibilityDescriptor$1<N, SqlExpression, T>;
31
+ export declare const oauthCleanupTable: <T extends Table, N>(input: OAuthCleanupTable<T, N>) => OAuthCleanupDescriptor$1<N, SqlExpression, T>;
32
+ export declare const oauthRegistrationGuardTable: <T extends Table, Registration, N>(input: OAuthRegistrationGuardTable<T, Registration, N>) => OAuthRegistrationGuardDescriptor$1<Registration, N, SqlExpression, T>;
58
33
  //#endregion
59
- export { type OAuthAction, type OAuthD1Mapping, type OAuthEligibilityFact, type OAuthFlowState, type OAuthRegistrationAuthority, type OAuthRegistrationState, type OAuthTupleState, requiredOAuthAccountsConstraints, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints, requiredOAuthTupleConstraints };
34
+ export { type OAuthAction, type OAuthD1Mapping, type OAuthEligibilityFact, type OAuthRegistrationAuthority, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints };
60
35
  //# sourceMappingURL=sql-oauth-model.d.mts.map
@@ -1,10 +1,9 @@
1
- import { oauthCleanupTable as oauthCleanupTable$1, oauthEligibilityTable as oauthEligibilityTable$1, oauthReferenceGuardTable as oauthReferenceGuardTable$1, oauthRegistrationGuardTable as oauthRegistrationGuardTable$1, requiredOAuthAccountsConstraints, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints, requiredOAuthTupleConstraints } from "./models/oauth-model.mjs";
1
+ import { oauthCleanupTable as oauthCleanupTable$1, oauthEligibilityTable as oauthEligibilityTable$1, oauthRegistrationGuardTable as oauthRegistrationGuardTable$1, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints } from "./models/oauth-model.mjs";
2
2
  //#region src/internal/sql-oauth-model.ts
3
- const oauthRegistrationGuardTable = (input) => oauthRegistrationGuardTable$1(input);
4
3
  const oauthEligibilityTable = (input) => oauthEligibilityTable$1(input);
5
4
  const oauthCleanupTable = (input) => oauthCleanupTable$1(input);
6
- const oauthReferenceGuardTable = (input) => oauthReferenceGuardTable$1(input);
5
+ const oauthRegistrationGuardTable = (input) => oauthRegistrationGuardTable$1(input);
7
6
  //#endregion
8
- export { oauthCleanupTable, oauthEligibilityTable, oauthReferenceGuardTable, oauthRegistrationGuardTable, requiredOAuthAccountsConstraints, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints, requiredOAuthTupleConstraints };
7
+ export { oauthCleanupTable, oauthEligibilityTable, oauthRegistrationGuardTable, requiredOAuthRegistrationConstraints, requiredOAuthSignInConstraints };
9
8
 
10
9
  //# sourceMappingURL=sql-oauth-model.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql-oauth-model.mjs","names":["Shared.oauthRegistrationGuardTable","Shared.oauthEligibilityTable","Shared.oauthCleanupTable","Shared.oauthReferenceGuardTable"],"sources":["../../src/internal/sql-oauth-model.ts"],"sourcesContent":["import * as Shared from \"./models/oauth-model\";\nimport type { TableModel } from \"./query-operations\";\nimport type { Fragment as SQL, Table } from \"./sql-table\";\n\nexport interface SqlTableModel<T extends Table = Table> extends TableModel {\n readonly table: T;\n}\n\nexport {\n type OAuthFlowState,\n type OAuthTupleState,\n type OAuthRegistrationState,\n type OAuthAction,\n type OAuthEligibilityFact,\n type OAuthD1Mapping,\n requiredOAuthSignInConstraints,\n requiredOAuthTupleConstraints,\n requiredOAuthRegistrationConstraints,\n requiredOAuthAccountsConstraints,\n type OAuthRegistrationAuthority,\n} from \"./models/oauth-model\";\n\n/** The engine writes every critical column explicitly after applying the pure\n * consumer encoder. Native instant values must roundtrip without precision loss. */\nexport type OAuthClock = Shared.OAuthClock<SQL>;\n\nexport type OAuthSubjectReadTable<S extends Table> = Shared.OAuthSubjectReadTable<\n SqlTableModel<S>,\n SQL\n>;\n\nexport type OAuthSubjectTable<S extends Table> = Shared.OAuthSubjectTable<SqlTableModel<S>, SQL>;\n\nexport type OAuthOwnershipReadTable<O extends Table, N> = Shared.OAuthOwnershipReadTable<\n SqlTableModel<O>,\n N,\n SQL\n>;\n\nexport type OAuthOwnershipTable<O extends Table, N> = Shared.OAuthOwnershipTable<\n SqlTableModel<O>,\n N,\n SQL\n>;\n\nexport type OAuthCredentialReadTable<C extends Table> = Shared.OAuthCredentialReadTable<\n SqlTableModel<C>,\n SQL\n>;\n\nexport type OAuthCredentialTable<C extends Table, N> = Shared.OAuthCredentialTable<\n SqlTableModel<C>,\n N,\n SQL\n>;\n\nexport type OAuthAuthorityReadTable<C extends Table> = Shared.OAuthAuthorityReadTable<\n SqlTableModel<C>,\n SQL\n>;\n\nexport type OAuthAuthorityTable<C extends Table, N> = Shared.OAuthAuthorityTable<\n SqlTableModel<C>,\n N,\n SQL\n>;\n\n/** Both purposes may use the same physical table. Shared tables share module/flow\n * and module/command uniqueness. The snapshot has the exact purpose-specific core\n * codec; terminal writes erase it, while identity, claim and retention columns remain. */\nexport type OAuthFlowTable<F extends Table> = Shared.OAuthFlowTable<SqlTableModel<F>>;\n\nexport type OAuthTupleAuthorityTable<T extends Table, N> = Shared.OAuthTupleAuthorityTable<\n SqlTableModel<T>,\n N\n>;\n\nexport type OAuthRegistrationIntentTable<I extends Table> = Shared.OAuthRegistrationIntentTable<\n SqlTableModel<I>\n>;\n\nexport type OAuthRegistrationCommandTable<\n R extends Table,\n Registration,\n> = Shared.OAuthRegistrationCommandTable<SqlTableModel<R>, Registration>;\n\nexport type OAuthUnlinkCommandTable<U extends Table> = Shared.OAuthUnlinkCommandTable<\n SqlTableModel<U>\n>;\n\n/** Each descriptor reads only its own subject-scoped method rows. The native row\n * projector and SQL condition must express the same installed method eligibility.\n * All source/identifier/policy mutations advance subject securityRevision. D1 also\n * guards exact selected IDs/versions and absence/count assumptions, never just a\n * stale boolean. An over-limit graph fails closed rather than truncating. */\nexport type OAuthEligibilityTable<T extends Table, N> = Shared.OAuthEligibilityTable<\n SqlTableModel<T>,\n N,\n SQL\n>;\n\n/** Authenticated command replay uses current subject status and this additional\n * nonconsuming SQL policy. It never consumes a fresh action factor. */\nexport type OAuthMetadataPolicy<N> = Shared.OAuthMetadataPolicy<N, SQL>;\n\nexport type OAuthCleanupTable<T extends Table, N> = Shared.OAuthCleanupTable<\n SqlTableModel<T>,\n N,\n SQL\n>;\n\nexport type OAuthRegistrationEligibility<N> = Shared.OAuthRegistrationEligibility<N, SQL>;\n\nexport type OAuthSignInMapping<\n S extends Table,\n O extends Table,\n C extends Table,\n AC extends Table,\n F extends Table,\n N,\n> = Shared.OAuthSignInMapping<\n SqlTableModel<S>,\n SqlTableModel<O>,\n SqlTableModel<C>,\n SqlTableModel<AC>,\n SqlTableModel<F>,\n N,\n SQL\n>;\n\nexport type OAuthOwnershipMutation<\n T extends Table,\n O extends Table,\n N,\n> = Shared.OAuthOwnershipMutation<SqlTableModel<T>, SqlTableModel<O>, N, SQL>;\n\nexport type OAuthRegistrationIntentMapping<\n S extends Table,\n O extends Table,\n C extends Table,\n AC extends Table,\n F extends Table,\n T extends Table,\n I extends Table,\n N,\n> = Shared.OAuthRegistrationIntentMapping<\n SqlTableModel<S>,\n SqlTableModel<O>,\n SqlTableModel<C>,\n SqlTableModel<AC>,\n SqlTableModel<F>,\n SqlTableModel<T>,\n SqlTableModel<I>,\n N,\n SQL\n>;\n\nexport type OAuthRegistrationBase<\n Registration,\n T extends Table,\n O extends Table,\n I extends Table,\n R extends Table,\n N,\n> = Shared.OAuthRegistrationBase<\n Registration,\n SqlTableModel<T>,\n SqlTableModel<O>,\n SqlTableModel<I>,\n SqlTableModel<R>,\n N,\n SQL,\n Table\n>;\n\nexport type OAuthRegistrationGuardTable<\n T extends Table,\n Registration,\n N,\n> = Shared.OAuthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>;\n\nexport type OAuthRegistrationGuardDescriptor<Registration, N> =\n Shared.OAuthRegistrationGuardDescriptor<Registration, N, SQL, Table>;\n\nexport const oauthRegistrationGuardTable = <T extends Table, Registration, N>(\n input: OAuthRegistrationGuardTable<T, Registration, N>,\n): OAuthRegistrationGuardDescriptor<Registration, N> =>\n Shared.oauthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>(input);\n\nexport type OAuthRegistrationMapping<\n Registration,\n S extends Table,\n O extends Table,\n C extends Table,\n AC extends Table,\n T extends Table,\n I extends Table,\n R extends Table,\n N,\n> = Shared.OAuthRegistrationMapping<\n Registration,\n SqlTableModel<S>,\n SqlTableModel<O>,\n SqlTableModel<C>,\n SqlTableModel<AC>,\n SqlTableModel<T>,\n SqlTableModel<I>,\n SqlTableModel<R>,\n N,\n SQL,\n Table\n>;\n\n/** Heterogeneous descriptors are made by typed factories and projected privately. */\nexport type OAuthEligibilityDescriptor<N> = Shared.OAuthEligibilityDescriptor<N, SQL, Table>;\n\nexport const oauthEligibilityTable = <T extends Table, N>(\n input: OAuthEligibilityTable<T, N>,\n): OAuthEligibilityDescriptor<N> => Shared.oauthEligibilityTable<SqlTableModel<T>, N, SQL>(input);\n\nexport type OAuthCleanupDescriptor<N> = Shared.OAuthCleanupDescriptor<N, SQL, Table>;\n\nexport const oauthCleanupTable = <T extends Table, N>(\n input: OAuthCleanupTable<T, N>,\n): OAuthCleanupDescriptor<N> => Shared.oauthCleanupTable<SqlTableModel<T>, N, SQL>(input);\n\n/** A stable application/reference lock acquired before an ownership target.\n * Missing rows retain ownership. Conditions use detached native IDs; every\n * writer of the guarded reference follows the same order. */\nexport type OAuthReferenceGuardTable<T extends Table, N> = Shared.OAuthReferenceGuardTable<\n SqlTableModel<T>,\n N,\n SQL\n>;\n\nexport type OAuthReferenceGuardDescriptor<N> = Shared.OAuthReferenceGuardDescriptor<N, SQL, Table>;\n\nexport const oauthReferenceGuardTable = <T extends Table, N>(\n input: OAuthReferenceGuardTable<T, N>,\n): OAuthReferenceGuardDescriptor<N> =>\n Shared.oauthReferenceGuardTable<SqlTableModel<T>, N, SQL>(input);\n\nexport type OAuthAccountsMapping<\n S extends Table,\n O extends Table,\n C extends Table,\n AC extends Table,\n F extends Table,\n T extends Table,\n U extends Table,\n N,\n> = Shared.OAuthAccountsMapping<\n SqlTableModel<S>,\n SqlTableModel<O>,\n SqlTableModel<C>,\n SqlTableModel<AC>,\n SqlTableModel<F>,\n SqlTableModel<T>,\n SqlTableModel<U>,\n N,\n SQL,\n Table\n>;\n"],"mappings":";;AAwLA,MAAa,+BACX,UAEAA,8BAA2E,KAAK;AA6BlF,MAAa,yBACX,UACkCC,wBAAuD,KAAK;AAIhG,MAAa,qBACX,UAC8BC,oBAAmD,KAAK;AAaxF,MAAa,4BACX,UAEAC,2BAA0D,KAAK"}
1
+ {"version":3,"file":"sql-oauth-model.mjs","names":["Shared.oauthEligibilityTable","Shared.oauthCleanupTable","Shared.oauthRegistrationGuardTable"],"sources":["../../src/internal/sql-oauth-model.ts"],"sourcesContent":["import * as Shared from \"./models/oauth-model\";\nimport type { SqlExpression as SQL } from \"./sql-expression\";\nimport type { Table } from \"./sql-table\";\nimport type { TableModel } from \"./table-model\";\n\nexport interface SqlTableModel<T extends Table = Table> extends TableModel {\n readonly table: T;\n}\n\nexport {\n type OAuthAction,\n type OAuthEligibilityFact,\n type OAuthD1Mapping,\n type OAuthRegistrationAuthority,\n requiredOAuthSignInConstraints,\n requiredOAuthRegistrationConstraints,\n} from \"./models/oauth-model\";\n\nexport type OAuthClock = Shared.OAuthClock<SQL>;\n\nexport type OAuthSubjectReadTable<S extends Table> = Shared.OAuthSubjectReadTable<\n SqlTableModel<S>,\n SQL\n>;\n\nexport type OAuthSubjectTable<S extends Table> = Shared.OAuthSubjectTable<SqlTableModel<S>, SQL>;\n\nexport type OAuthOwnershipReadTable<O extends Table, N> = Shared.OAuthOwnershipReadTable<\n SqlTableModel<O>,\n N\n>;\n\nexport type OAuthOwnershipTable<O extends Table, N> = Shared.OAuthOwnershipTable<\n SqlTableModel<O>,\n N\n>;\n\nexport type OAuthCredentialReadTable<C extends Table> = Shared.OAuthCredentialReadTable<\n SqlTableModel<C>,\n SQL\n>;\n\nexport type OAuthCredentialTable<C extends Table, N> = Shared.OAuthCredentialTable<\n SqlTableModel<C>,\n N,\n SQL\n>;\n\nexport type OAuthAuthorityReadTable<C extends Table> = Shared.OAuthAuthorityReadTable<\n SqlTableModel<C>,\n SQL\n>;\n\nexport type OAuthAuthorityTable<C extends Table, N> = Shared.OAuthAuthorityTable<\n SqlTableModel<C>,\n N,\n SQL\n>;\n\nexport type OAuthFlowTable<F extends Table> = Shared.OAuthFlowTable<SqlTableModel<F>>;\n\nexport type OAuthRegistrationIntentTable<I extends Table> = Shared.OAuthRegistrationIntentTable<\n SqlTableModel<I>\n>;\n\nexport type OAuthEligibilityTable<T extends Table, N> = Shared.OAuthEligibilityTable<\n SqlTableModel<T>,\n N,\n SQL\n>;\n\nexport type OAuthCleanupTable<T extends Table, N> = Shared.OAuthCleanupTable<\n SqlTableModel<T>,\n N,\n SQL\n>;\n\nexport type OAuthRegistrationGuardTable<\n T extends Table,\n Registration,\n N,\n> = Shared.OAuthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>;\n\nexport type OAuthRegistrationGuardDescriptor<Registration, N> =\n Shared.OAuthRegistrationGuardDescriptor<Registration, N, SQL, Table>;\n\nexport type OAuthEligibilityDescriptor<N> = Shared.OAuthEligibilityDescriptor<N, SQL, Table>;\n\nexport type OAuthCleanupDescriptor<N> = Shared.OAuthCleanupDescriptor<N, SQL, Table>;\n\nexport type OAuthSignInMapping<\n S extends Table,\n O extends Table,\n C extends Table,\n AC extends Table,\n F extends Table,\n N,\n> = Shared.OAuthSignInMapping<\n SqlTableModel<S>,\n SqlTableModel<O>,\n SqlTableModel<C>,\n SqlTableModel<AC>,\n SqlTableModel<F>,\n N,\n SQL\n>;\n\nexport type OAuthAccountsMapping<\n S extends Table,\n O extends Table,\n C extends Table,\n AC extends Table,\n F extends Table,\n N,\n> = Shared.OAuthAccountsMapping<\n SqlTableModel<S>,\n SqlTableModel<O>,\n SqlTableModel<C>,\n SqlTableModel<AC>,\n SqlTableModel<F>,\n N,\n SQL,\n Table\n>;\n\nexport type OAuthRegistrationIntentMapping<\n O extends Table,\n I extends Table,\n N,\n> = Shared.OAuthRegistrationIntentMapping<SqlTableModel<O>, SqlTableModel<I>, N, SQL>;\n\nexport type OAuthRegistrationMapping<\n Registration,\n S extends Table,\n O extends Table,\n C extends Table,\n AC extends Table,\n I extends Table,\n N,\n> = Shared.OAuthRegistrationMapping<\n Registration,\n SqlTableModel<S>,\n SqlTableModel<O>,\n SqlTableModel<C>,\n SqlTableModel<AC>,\n SqlTableModel<I>,\n N,\n SQL,\n Table\n>;\n\nexport const oauthEligibilityTable = <T extends Table, N>(input: OAuthEligibilityTable<T, N>) =>\n Shared.oauthEligibilityTable<SqlTableModel<T>, N, SQL>(input);\n\nexport const oauthCleanupTable = <T extends Table, N>(input: OAuthCleanupTable<T, N>) =>\n Shared.oauthCleanupTable<SqlTableModel<T>, N, SQL>(input);\n\nexport const oauthRegistrationGuardTable = <T extends Table, Registration, N>(\n input: OAuthRegistrationGuardTable<T, Registration, N>,\n) => Shared.oauthRegistrationGuardTable<SqlTableModel<T>, Registration, N, SQL>(input);\n"],"mappings":";;AAuJA,MAAa,yBAA6C,UACxDA,wBAAuD,KAAK;AAE9D,MAAa,qBAAyC,UACpDC,oBAAmD,KAAK;AAE1D,MAAa,+BACX,UACGC,8BAA2E,KAAK"}