@yielded/auth-persistence-drizzle 0.1.0-beta.1 → 0.1.0-beta.13

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 (228) hide show
  1. package/dist/D1.d.mts +23 -18
  2. package/dist/D1.mjs +10 -4
  3. package/dist/D1.mjs.map +1 -1
  4. package/dist/Libsql.d.mts +58 -53
  5. package/dist/Libsql.mjs +20 -15
  6. package/dist/Libsql.mjs.map +1 -1
  7. package/dist/Mysql2.d.mts +58 -46
  8. package/dist/Mysql2.mjs +13 -6
  9. package/dist/Mysql2.mjs.map +1 -1
  10. package/dist/Pglite.d.mts +52 -41
  11. package/dist/Pglite.mjs +12 -7
  12. package/dist/Pglite.mjs.map +1 -1
  13. package/dist/Postgres.d.mts +59 -48
  14. package/dist/Postgres.mjs +12 -7
  15. package/dist/Postgres.mjs.map +1 -1
  16. package/dist/SqliteBun.d.mts +67 -62
  17. package/dist/SqliteBun.mjs +20 -14
  18. package/dist/SqliteBun.mjs.map +1 -1
  19. package/dist/SqliteDo.d.mts +58 -52
  20. package/dist/SqliteDo.mjs +26 -14
  21. package/dist/SqliteDo.mjs.map +1 -1
  22. package/dist/SqliteNode.d.mts +58 -53
  23. package/dist/SqliteNode.mjs +20 -14
  24. package/dist/SqliteNode.mjs.map +1 -1
  25. package/dist/SqliteWasm.d.mts +58 -53
  26. package/dist/SqliteWasm.mjs +20 -14
  27. package/dist/SqliteWasm.mjs.map +1 -1
  28. package/dist/drizzle/d1-database.d.mts +11 -0
  29. package/dist/drizzle/d1-database.mjs +8 -0
  30. package/dist/drizzle/d1-database.mjs.map +1 -0
  31. package/dist/drizzle/d1-emails.d.mts +8 -7
  32. package/dist/drizzle/d1-emails.mjs +7 -4
  33. package/dist/drizzle/d1-emails.mjs.map +1 -1
  34. package/dist/drizzle/d1-identity.mjs +12 -9
  35. package/dist/drizzle/d1-identity.mjs.map +1 -1
  36. package/dist/drizzle/d1-oauth.d.mts +10 -9
  37. package/dist/drizzle/d1-oauth.mjs +7 -4
  38. package/dist/drizzle/d1-oauth.mjs.map +1 -1
  39. package/dist/drizzle/d1-passkey.d.mts +3 -14
  40. package/dist/drizzle/d1-passkey.mjs +2 -1
  41. package/dist/drizzle/d1-passkey.mjs.map +1 -1
  42. package/dist/drizzle/d1-password-prepared.d.mts +4 -3
  43. package/dist/drizzle/d1-password-prepared.mjs +3 -1
  44. package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
  45. package/dist/drizzle/d1-passwords.d.mts +6 -5
  46. package/dist/drizzle/d1-passwords.mjs +11 -7
  47. package/dist/drizzle/d1-passwords.mjs.map +1 -1
  48. package/dist/drizzle/d1-phone.d.mts +3 -4
  49. package/dist/drizzle/d1-phone.mjs +2 -1
  50. package/dist/drizzle/d1-phone.mjs.map +1 -1
  51. package/dist/drizzle/d1-planning.d.mts +1 -1
  52. package/dist/drizzle/d1-proofs.d.mts +4 -3
  53. package/dist/drizzle/d1-proofs.mjs +3 -1
  54. package/dist/drizzle/d1-proofs.mjs.map +1 -1
  55. package/dist/drizzle/d1-sessions.d.mts +11 -10
  56. package/dist/drizzle/d1-sessions.mjs +15 -9
  57. package/dist/drizzle/d1-sessions.mjs.map +1 -1
  58. package/dist/drizzle/d1-totp.d.mts +3 -4
  59. package/dist/drizzle/d1-totp.mjs +2 -1
  60. package/dist/drizzle/d1-totp.mjs.map +1 -1
  61. package/dist/drizzle/email-registration.mjs +2 -1
  62. package/dist/drizzle/email-registration.mjs.map +1 -1
  63. package/dist/drizzle/email-target.d.mts +7 -6
  64. package/dist/drizzle/email-target.mjs +10 -10
  65. package/dist/drizzle/email-target.mjs.map +1 -1
  66. package/dist/drizzle/mysql-database.d.mts +8 -0
  67. package/dist/drizzle/mysql-database.mjs +8 -0
  68. package/dist/drizzle/mysql-database.mjs.map +1 -0
  69. package/dist/drizzle/mysql-emails.d.mts +7 -6
  70. package/dist/drizzle/mysql-emails.mjs +12 -8
  71. package/dist/drizzle/mysql-emails.mjs.map +1 -1
  72. package/dist/drizzle/mysql-identity.mjs +12 -9
  73. package/dist/drizzle/mysql-identity.mjs.map +1 -1
  74. package/dist/drizzle/mysql-password-prepared.d.mts +3 -2
  75. package/dist/drizzle/mysql-password-prepared.mjs +6 -2
  76. package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
  77. package/dist/drizzle/mysql-passwords.d.mts +6 -4
  78. package/dist/drizzle/mysql-passwords.mjs +11 -7
  79. package/dist/drizzle/mysql-passwords.mjs.map +1 -1
  80. package/dist/drizzle/mysql-proofs.d.mts +3 -2
  81. package/dist/drizzle/mysql-proofs.mjs +8 -4
  82. package/dist/drizzle/mysql-proofs.mjs.map +1 -1
  83. package/dist/drizzle/mysql-sessions.d.mts +11 -10
  84. package/dist/drizzle/mysql-sessions.mjs +16 -12
  85. package/dist/drizzle/mysql-sessions.mjs.map +1 -1
  86. package/dist/drizzle/native-database.mjs +10 -0
  87. package/dist/drizzle/native-database.mjs.map +1 -0
  88. package/dist/drizzle/oauth-connected-drivers.mjs +7 -5
  89. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
  90. package/dist/drizzle/oauth-connected-settlement.mjs +3 -2
  91. package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -1
  92. package/dist/drizzle/oauth-connected-sign-in.mjs +4 -3
  93. package/dist/drizzle/oauth-connected-sign-in.mjs.map +1 -1
  94. package/dist/drizzle/oauth-connected-target.d.mts +6 -7
  95. package/dist/drizzle/oauth-connected-target.mjs +4 -5
  96. package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
  97. package/dist/drizzle/oauth-drivers.mjs +8 -6
  98. package/dist/drizzle/oauth-drivers.mjs.map +1 -1
  99. package/dist/drizzle/oauth-target.d.mts +12 -11
  100. package/dist/drizzle/oauth-target.mjs +13 -12
  101. package/dist/drizzle/oauth-target.mjs.map +1 -1
  102. package/dist/drizzle/passkey-drivers.mjs +8 -6
  103. package/dist/drizzle/passkey-drivers.mjs.map +1 -1
  104. package/dist/drizzle/passkey-write-drivers.mjs +5 -3
  105. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
  106. package/dist/drizzle/passkey-write-target.d.mts +1 -1
  107. package/dist/drizzle/password-prepared-sql.mjs +2 -1
  108. package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
  109. package/dist/drizzle/password-prepared-target.d.mts +3 -2
  110. package/dist/drizzle/password-prepared-target.mjs +4 -3
  111. package/dist/drizzle/password-prepared-target.mjs.map +1 -1
  112. package/dist/drizzle/password-registration.mjs +2 -1
  113. package/dist/drizzle/password-registration.mjs.map +1 -1
  114. package/dist/drizzle/password-target.d.mts +5 -4
  115. package/dist/drizzle/password-target.mjs +8 -8
  116. package/dist/drizzle/password-target.mjs.map +1 -1
  117. package/dist/drizzle/pg-database.d.mts +9 -0
  118. package/dist/drizzle/pg-database.mjs +8 -0
  119. package/dist/drizzle/pg-database.mjs.map +1 -0
  120. package/dist/drizzle/pg-emails.d.mts +7 -6
  121. package/dist/drizzle/pg-emails.mjs +12 -8
  122. package/dist/drizzle/pg-emails.mjs.map +1 -1
  123. package/dist/drizzle/pg-identity.mjs +12 -9
  124. package/dist/drizzle/pg-identity.mjs.map +1 -1
  125. package/dist/drizzle/pg-password-prepared.d.mts +3 -2
  126. package/dist/drizzle/pg-password-prepared.mjs +6 -2
  127. package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
  128. package/dist/drizzle/pg-passwords.d.mts +6 -4
  129. package/dist/drizzle/pg-passwords.mjs +11 -7
  130. package/dist/drizzle/pg-passwords.mjs.map +1 -1
  131. package/dist/drizzle/pg-proofs.d.mts +3 -2
  132. package/dist/drizzle/pg-proofs.mjs +8 -4
  133. package/dist/drizzle/pg-proofs.mjs.map +1 -1
  134. package/dist/drizzle/pg-sessions.d.mts +11 -10
  135. package/dist/drizzle/pg-sessions.mjs +16 -12
  136. package/dist/drizzle/pg-sessions.mjs.map +1 -1
  137. package/dist/drizzle/phone-target.d.mts +4 -3
  138. package/dist/drizzle/phone-target.mjs +12 -11
  139. package/dist/drizzle/phone-target.mjs.map +1 -1
  140. package/dist/drizzle/proof-target.d.mts +3 -2
  141. package/dist/drizzle/proof-target.mjs +5 -5
  142. package/dist/drizzle/proof-target.mjs.map +1 -1
  143. package/dist/drizzle/session-sql.d.mts +1 -0
  144. package/dist/drizzle/session-target.d.mts +10 -8
  145. package/dist/drizzle/session-target.mjs +11 -11
  146. package/dist/drizzle/session-target.mjs.map +1 -1
  147. package/dist/drizzle/sqlite-emails.mjs +9 -5
  148. package/dist/drizzle/sqlite-emails.mjs.map +1 -1
  149. package/dist/drizzle/sqlite-identity.mjs +14 -11
  150. package/dist/drizzle/sqlite-identity.mjs.map +1 -1
  151. package/dist/drizzle/sqlite-password-prepared.mjs +7 -3
  152. package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
  153. package/dist/drizzle/sqlite-passwords.mjs +10 -6
  154. package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
  155. package/dist/drizzle/sqlite-proofs.mjs +7 -3
  156. package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
  157. package/dist/drizzle/sqlite-sessions.mjs +16 -12
  158. package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
  159. package/dist/drizzle/standalone-guard.d.mts +2 -0
  160. package/dist/drizzle/standalone-guard.mjs +8 -4
  161. package/dist/drizzle/standalone-guard.mjs.map +1 -1
  162. package/dist/drizzle/totp-target.d.mts +4 -3
  163. package/dist/drizzle/totp-target.mjs +31 -28
  164. package/dist/drizzle/totp-target.mjs.map +1 -1
  165. package/package.json +1 -1
  166. package/src/D1.ts +37 -10
  167. package/src/Libsql.ts +45 -17
  168. package/src/Mysql2.ts +39 -13
  169. package/src/Pglite.ts +47 -13
  170. package/src/Postgres.ts +47 -13
  171. package/src/SqliteBun.ts +58 -30
  172. package/src/SqliteDo.ts +61 -19
  173. package/src/SqliteNode.ts +55 -28
  174. package/src/SqliteWasm.ts +55 -28
  175. package/src/drizzle/d1-database.ts +10 -0
  176. package/src/drizzle/d1-emails.ts +84 -84
  177. package/src/drizzle/d1-identity.ts +17 -20
  178. package/src/drizzle/d1-oauth.ts +19 -8
  179. package/src/drizzle/d1-passkey.ts +5 -1
  180. package/src/drizzle/d1-password-prepared.ts +38 -37
  181. package/src/drizzle/d1-passwords.ts +118 -108
  182. package/src/drizzle/d1-phone.ts +5 -1
  183. package/src/drizzle/d1-proofs.ts +29 -30
  184. package/src/drizzle/d1-sessions.ts +51 -38
  185. package/src/drizzle/d1-totp.ts +5 -1
  186. package/src/drizzle/email-registration.ts +6 -2
  187. package/src/drizzle/email-target.ts +17 -19
  188. package/src/drizzle/mysql-database.ts +8 -0
  189. package/src/drizzle/mysql-emails.ts +28 -16
  190. package/src/drizzle/mysql-identity.ts +18 -21
  191. package/src/drizzle/mysql-password-prepared.ts +10 -8
  192. package/src/drizzle/mysql-passwords.ts +21 -9
  193. package/src/drizzle/mysql-proofs.ts +16 -5
  194. package/src/drizzle/mysql-sessions.ts +40 -17
  195. package/src/drizzle/native-database.ts +22 -0
  196. package/src/drizzle/oauth-connected-drivers.ts +18 -6
  197. package/src/drizzle/oauth-connected-settlement.ts +5 -3
  198. package/src/drizzle/oauth-connected-sign-in.ts +7 -3
  199. package/src/drizzle/oauth-connected-target.ts +16 -17
  200. package/src/drizzle/oauth-drivers.ts +26 -10
  201. package/src/drizzle/oauth-target.ts +30 -42
  202. package/src/drizzle/passkey-drivers.ts +21 -13
  203. package/src/drizzle/passkey-write-drivers.ts +11 -6
  204. package/src/drizzle/password-prepared-sql.ts +2 -4
  205. package/src/drizzle/password-prepared-target.ts +9 -6
  206. package/src/drizzle/password-registration.ts +7 -8
  207. package/src/drizzle/password-target.ts +19 -18
  208. package/src/drizzle/pg-database.ts +10 -0
  209. package/src/drizzle/pg-emails.ts +28 -16
  210. package/src/drizzle/pg-identity.ts +18 -22
  211. package/src/drizzle/pg-password-prepared.ts +10 -8
  212. package/src/drizzle/pg-passwords.ts +21 -9
  213. package/src/drizzle/pg-proofs.ts +16 -5
  214. package/src/drizzle/pg-sessions.ts +40 -17
  215. package/src/drizzle/phone-target.ts +22 -17
  216. package/src/drizzle/proof-target.ts +9 -12
  217. package/src/drizzle/session-target.ts +32 -50
  218. package/src/drizzle/sqlite-emails.ts +30 -13
  219. package/src/drizzle/sqlite-identity.ts +22 -42
  220. package/src/drizzle/sqlite-password-prepared.ts +23 -9
  221. package/src/drizzle/sqlite-passwords.ts +29 -15
  222. package/src/drizzle/sqlite-proofs.ts +28 -5
  223. package/src/drizzle/sqlite-sessions.ts +49 -23
  224. package/src/drizzle/standalone-guard.ts +18 -6
  225. package/src/drizzle/totp-target.ts +61 -60
  226. package/dist/drizzle/d1-identity.d.mts +0 -30
  227. package/dist/drizzle/mysql-identity.d.mts +0 -21
  228. package/dist/drizzle/pg-identity.d.mts +0 -22
@@ -1,21 +1,20 @@
1
1
  import { D1PhoneMapping, PhoneMapping, PhoneMappingSource, PhonePersistenceServices } from "./phone-model.mjs";
2
+ import { Database as Database$1 } from "./d1-database.mjs";
2
3
  import { D1BatchStatements } from "./D1BatchStatements.mjs";
3
4
  import { PhoneCoordinatorError } from "./phone-target.mjs";
4
5
  import { AnyRelations } from "drizzle-orm";
5
6
  import { Effect } from "effect";
6
7
  import { LifecycleHooks } from "@yielded/auth/Hooks";
7
8
  import { PhoneAdmission, PhonePersistence, PhoneSignInTargets } from "@yielded/auth/PhoneOtp";
9
+ import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
8
10
  import { AnySQLiteTable } from "drizzle-orm/sqlite-core";
9
11
  import { D1Client } from "@effect/sql-d1/D1Client";
10
- import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
11
12
  //#region src/drizzle/d1-phone.d.ts
12
13
  type Database = EffectSQLiteD1Database<AnyRelations> & {
13
14
  readonly $client: D1Client;
14
15
  };
15
16
  type Table$1 = AnySQLiteTable;
16
- export declare const makePhonePersistenceServices: <Database extends EffectSQLiteD1Database<import("drizzle-orm").TablesRelationalConfig> & {
17
- readonly $client: D1Client;
18
- }, S extends Table$1, I extends Table$1, F extends Table$1, C extends Table$1, N, RSetup = never>(database: Database, mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>) => Effect.Effect<PhonePersistenceServices, import("@yielded/auth-persistence/Adapter").PersistenceMappingError | import("@yielded/auth/PhoneOtp").PhoneConfigurationError, RSetup | LifecycleHooks>;
17
+ export declare const makePhonePersistenceServices: <S extends Table$1, I extends Table$1, F extends Table$1, C extends Table$1, N, RSetup = never>(mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>) => Effect.Effect<PhonePersistenceServices, import("@yielded/auth-persistence/Adapter").PersistenceMappingError | import("@yielded/auth/PhoneOtp").PhoneConfigurationError, Database$1 | LifecycleHooks | Exclude<RSetup, import("@yielded/auth-persistence/Adapter").NativeDatabase>>;
19
18
  export declare const coordinatePhonePersistence: <D extends Database, S extends Table$1, I extends Table$1, F extends Table$1, C extends Table$1, N, A, E, R, RSetup = never, DatabaseError = never, DatabaseRequirements = never>(acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>, options: {
20
19
  readonly mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>;
21
20
  }, body: Effect.Effect<A, E, R>) => Effect.Effect<A, PhoneCoordinatorError<E> | DatabaseError, Exclude<R, PhonePersistence | PhoneAdmission | PhoneSignInTargets | D1BatchStatements> | LifecycleHooks | RSetup | DatabaseRequirements>;
@@ -1,3 +1,4 @@
1
+ import { Database } from "./d1-database.mjs";
1
2
  import { D1BatchStatements } from "./D1BatchStatements.mjs";
2
3
  import { makeD1Owner } from "./d1-planning.mjs";
3
4
  import { coordinateTargetPhone, makePhoneTarget } from "./phone-target.mjs";
@@ -10,7 +11,7 @@ const configuration = {
10
11
  locking: false,
11
12
  standaloneGuard: () => Effect.void
12
13
  };
13
- const { makePhonePersistenceServices } = makePhoneTarget(configuration);
14
+ const { makePhonePersistenceServices } = makePhoneTarget(Database, configuration);
14
15
  const coordinatePhonePersistence = (acquire, options, body) => Effect.flatMap(acquire, (database) => coordinateTargetPhone(database, options.mapping, configuration, (_transaction, services, append) => Effect.gen(function* () {
15
16
  const original = services.phonePersistence;
16
17
  const nativeCollector = D1BatchStatements.of({ append: (statement) => Effect.sync(() => append(statement)) });
@@ -1 +1 @@
1
- {"version":3,"file":"d1-phone.mjs","names":["PhoneUnavailable"],"sources":["../../src/drizzle/d1-phone.ts"],"sourcesContent":["import type { D1Client } from \"@effect/sql-d1/D1Client\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n PhoneOtpUnavailable as PhoneUnavailable,\n PhoneAdmission,\n PhonePersistence,\n PhoneSignInTargets,\n} from \"@yielded/auth/PhoneOtp\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectSQLiteD1Database } from \"drizzle-orm/effect-d1\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Context, Effect } from \"effect\";\n\nimport { makeD1Owner } from \"./d1-planning\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\nimport type { D1PhoneMapping, PhoneMapping, PhoneMappingSource } from \"./phone-model\";\nimport { coordinateTargetPhone, makePhoneTarget, type PhoneCoordinatorError } from \"./phone-target\";\ntype Database = EffectSQLiteD1Database<AnyRelations> & { readonly $client: D1Client };\ntype Table = AnySQLiteTable;\n\nconst configuration = {\n mode: \"batch\" as const,\n dialect: \"sqlite\" as const,\n locking: false,\n standaloneGuard: () => Effect.void,\n};\n\n/** Reads use a primary D1 session; observations and expiry are asserted in the same batch. */\nconst target = makePhoneTarget<Database, Table, D1PhoneMapping>(configuration);\n\nexport const { makePhonePersistenceServices } = target;\n\nexport const coordinatePhonePersistence = <\n D extends Database,\n S extends Table,\n I extends Table,\n F extends Table,\n C extends Table,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n PhoneCoordinatorError<E> | DatabaseError,\n | Exclude<R, PhonePersistence | PhoneAdmission | PhoneSignInTargets | D1BatchStatements>\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n> =>\n Effect.flatMap(acquire, (database) =>\n coordinateTargetPhone(\n database,\n options.mapping,\n configuration,\n (_transaction, services, append) =>\n Effect.gen(function* () {\n const original = services.phonePersistence;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(PhoneUnavailable.make({})).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: PhonePersistence[\"Service\"] = {\n target: (input) => owner.run(original.target(input)),\n mutate: (input, prepare) => owner.run(original.mutate(input, prepare)),\n };\n\n const provided = Context.make(PhonePersistence, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n Context.add(PhoneAdmission, {\n admit: (input) => owner.run(services.phoneAdmission.admit(input)),\n cleanup: (input) => owner.run(services.phoneAdmission.cleanup(input)),\n }),\n Context.add(PhoneSignInTargets, {\n lookup: (input) => owner.run(services.phoneSignInTargets.lookup(input)),\n }),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n"],"mappings":";;;;;;AAoBA,MAAM,gBAAgB;CACpB,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC;AAKA,MAAa,EAAE,iCAFA,gBAAiD,aAEhB;AAEhD,MAAa,8BAcX,SACA,SAGA,SASA,OAAO,QAAQ,UAAU,aACvB,sBACE,UACA,QAAQ,SACR,gBACC,cAAc,UAAU,WACvB,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,SAAS;CAE1B,MAAM,kBAAkB,kBAAkB,GAAG,EAC3C,SAAS,cAAc,OAAO,WAAW,OAAO,SAAS,CAAC,EAC5D,CAAC;CAED,MAAM,QAAQ,OAAO,YAAYA,oBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAC1D,OAAO,eAAe,mBAAmB,eAAe,CAC1D;CAOA,MAAM,WAAW,QAAQ,KAAK,kBAAkB;EAJ9C,SAAS,UAAU,MAAM,IAAI,SAAS,OAAO,KAAK,CAAC;EACnD,SAAS,OAAO,YAAY,MAAM,IAAI,SAAS,OAAO,OAAO,OAAO,CAAC;CAGjB,CAAC,CAAC,CAAC,KACvD,QAAQ,IAAI,mBAAmB,MAAM,SAAS,GAC9C,QAAQ,IAAI,gBAAgB;EAC1B,QAAQ,UAAU,MAAM,IAAI,SAAS,eAAe,MAAM,KAAK,CAAC;EAChE,UAAU,UAAU,MAAM,IAAI,SAAS,eAAe,QAAQ,KAAK,CAAC;CACtE,CAAC,GACD,QAAQ,IAAI,oBAAoB,EAC9B,SAAS,UAAU,MAAM,IAAI,SAAS,mBAAmB,OAAO,KAAK,CAAC,EACxE,CAAC,CACH;CAEA,OAAO,OAAO,MAAM,MAAM,OAAO,eAAe,MAAM,QAAQ,CAAC;AACjE,CAAC,CACL,CACF"}
1
+ {"version":3,"file":"d1-phone.mjs","names":["DatabaseService","PhoneUnavailable"],"sources":["../../src/drizzle/d1-phone.ts"],"sourcesContent":["import type { D1Client } from \"@effect/sql-d1/D1Client\";\nimport type { LifecycleHooks } from \"@yielded/auth/Hooks\";\nimport {\n PhoneOtpUnavailable as PhoneUnavailable,\n PhoneAdmission,\n PhonePersistence,\n PhoneSignInTargets,\n} from \"@yielded/auth/PhoneOtp\";\nimport type { AnyRelations } from \"drizzle-orm\";\nimport type { EffectSQLiteD1Database } from \"drizzle-orm/effect-d1\";\nimport type { AnySQLiteTable } from \"drizzle-orm/sqlite-core\";\nimport { Context, Effect } from \"effect\";\n\nimport { Database as DatabaseService } from \"./d1-database\";\nimport { makeD1Owner } from \"./d1-planning\";\nimport { D1BatchStatements } from \"./D1BatchStatements\";\nimport type { D1PhoneMapping, PhoneMapping, PhoneMappingSource } from \"./phone-model\";\nimport { coordinateTargetPhone, makePhoneTarget, type PhoneCoordinatorError } from \"./phone-target\";\ntype Database = EffectSQLiteD1Database<AnyRelations> & { readonly $client: D1Client };\ntype Table = AnySQLiteTable;\n\nconst configuration = {\n mode: \"batch\" as const,\n dialect: \"sqlite\" as const,\n locking: false,\n standaloneGuard: () => Effect.void,\n};\n\n/** Reads use a primary D1 session; observations and expiry are asserted in the same batch. */\nconst target = makePhoneTarget<DatabaseService, Database, Table, D1PhoneMapping>(\n DatabaseService,\n configuration,\n);\n\nexport const { makePhonePersistenceServices } = target;\n\nexport const coordinatePhonePersistence = <\n D extends Database,\n S extends Table,\n I extends Table,\n F extends Table,\n C extends Table,\n N,\n A,\n E,\n R,\n RSetup = never,\n DatabaseError = never,\n DatabaseRequirements = never,\n>(\n acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,\n options: {\n readonly mapping: PhoneMappingSource<PhoneMapping<S, I, C, F, N> & D1PhoneMapping, RSetup>;\n },\n body: Effect.Effect<A, E, R>,\n): Effect.Effect<\n A,\n PhoneCoordinatorError<E> | DatabaseError,\n | Exclude<R, PhonePersistence | PhoneAdmission | PhoneSignInTargets | D1BatchStatements>\n | LifecycleHooks\n | RSetup\n | DatabaseRequirements\n> =>\n Effect.flatMap(acquire, (database) =>\n coordinateTargetPhone(\n database,\n options.mapping,\n configuration,\n (_transaction, services, append) =>\n Effect.gen(function* () {\n const original = services.phonePersistence;\n\n const nativeCollector = D1BatchStatements.of({\n append: (statement) => Effect.sync(() => append(statement)),\n });\n\n const owner = yield* makeD1Owner(PhoneUnavailable.make({})).pipe(\n Effect.provideService(D1BatchStatements, nativeCollector),\n );\n\n const service: PhonePersistence[\"Service\"] = {\n target: (input) => owner.run(original.target(input)),\n mutate: (input, prepare) => owner.run(original.mutate(input, prepare)),\n };\n\n const provided = Context.make(PhonePersistence, service).pipe(\n Context.add(D1BatchStatements, owner.collector),\n Context.add(PhoneAdmission, {\n admit: (input) => owner.run(services.phoneAdmission.admit(input)),\n cleanup: (input) => owner.run(services.phoneAdmission.cleanup(input)),\n }),\n Context.add(PhoneSignInTargets, {\n lookup: (input) => owner.run(services.phoneSignInTargets.lookup(input)),\n }),\n );\n\n return yield* owner.close(Effect.provideContext(body, provided));\n }),\n ),\n );\n"],"mappings":";;;;;;;AAqBA,MAAM,gBAAgB;CACpB,MAAM;CACN,SAAS;CACT,SAAS;CACT,uBAAuB,OAAO;AAChC;AAQA,MAAa,EAAE,iCALA,gBACbA,UACA,aAG8C;AAEhD,MAAa,8BAcX,SACA,SAGA,SASA,OAAO,QAAQ,UAAU,aACvB,sBACE,UACA,QAAQ,SACR,gBACC,cAAc,UAAU,WACvB,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,SAAS;CAE1B,MAAM,kBAAkB,kBAAkB,GAAG,EAC3C,SAAS,cAAc,OAAO,WAAW,OAAO,SAAS,CAAC,EAC5D,CAAC;CAED,MAAM,QAAQ,OAAO,YAAYC,oBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAC1D,OAAO,eAAe,mBAAmB,eAAe,CAC1D;CAOA,MAAM,WAAW,QAAQ,KAAK,kBAAkB;EAJ9C,SAAS,UAAU,MAAM,IAAI,SAAS,OAAO,KAAK,CAAC;EACnD,SAAS,OAAO,YAAY,MAAM,IAAI,SAAS,OAAO,OAAO,OAAO,CAAC;CAGjB,CAAC,CAAC,CAAC,KACvD,QAAQ,IAAI,mBAAmB,MAAM,SAAS,GAC9C,QAAQ,IAAI,gBAAgB;EAC1B,QAAQ,UAAU,MAAM,IAAI,SAAS,eAAe,MAAM,KAAK,CAAC;EAChE,UAAU,UAAU,MAAM,IAAI,SAAS,eAAe,QAAQ,KAAK,CAAC;CACtE,CAAC,GACD,QAAQ,IAAI,oBAAoB,EAC9B,SAAS,UAAU,MAAM,IAAI,SAAS,mBAAmB,OAAO,KAAK,CAAC,EACxE,CAAC,CACH;CAEA,OAAO,OAAO,MAAM,MAAM,OAAO,eAAe,MAAM,QAAQ,CAAC;AACjE,CAAC,CACL,CACF"}
@@ -1,8 +1,8 @@
1
1
  import "./D1BatchStatements.mjs";
2
2
  import { AnyRelations } from "drizzle-orm";
3
3
  import { Context, Effect } from "effect";
4
- import { D1Client } from "@effect/sql-d1/D1Client";
5
4
  import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
5
+ import { D1Client } from "@effect/sql-d1/D1Client";
6
6
  //#region src/drizzle/d1-planning.d.ts
7
7
  export type D1PlanningDatabase = EffectSQLiteD1Database<AnyRelations> & {
8
8
  readonly $client: D1Client;
@@ -1,21 +1,22 @@
1
1
  import "./model.mjs";
2
2
  import { D1ProofPersistenceMapping } from "./proof-model.mjs";
3
+ import { Database as Database$1 } from "./d1-database.mjs";
3
4
  import { D1BatchStatements } from "./D1BatchStatements.mjs";
4
5
  import "./d1-planning.mjs";
5
6
  import { AnyRelations, SQL, Table } from "drizzle-orm";
6
7
  import { Effect } from "effect";
7
8
  import { CurrentCommitJournal, HookConfigurationError, LifecycleHooks, PreparedCommit } from "@yielded/auth/Hooks";
8
9
  import { PrepareProofCommit, ProofAttemptDecision, ProofBinding, ProofCleanupResult, ProofCompletionDecision, ProofCompletionPlan, ProofDeliveryClaim, ProofDeliveryOutcome, ProofPersistence, ProofPolicy, ProofRequestConflict, ProofUnavailable, ProofVersion } from "@yielded/auth/Proofs";
10
+ import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
9
11
  import { AnySQLiteTable } from "drizzle-orm/sqlite-core";
10
12
  import { Statement } from "effect/sql/Statement";
11
13
  import { D1Client } from "@effect/sql-d1/D1Client";
12
- import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
13
14
  import "drizzle-orm/effect-core";
14
15
  //#region src/drizzle/d1-proofs.d.ts
15
16
  type Database = EffectSQLiteD1Database<AnyRelations> & {
16
17
  readonly $client: D1Client;
17
18
  };
18
- export declare const makeD1ProofPersistenceServices: <Rq extends AnySQLiteTable, S extends AnySQLiteTable, G extends AnySQLiteTable, Cn extends AnySQLiteTable, Rs extends AnySQLiteTable, A extends AnySQLiteTable, F extends AnySQLiteTable, C extends AnySQLiteTable, Sub extends AnySQLiteTable, I extends AnySQLiteTable, Cr extends AnySQLiteTable, NativeId>(database: Database, mapping: D1ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>) => Effect.Effect<{
19
+ export declare const makeD1ProofPersistenceServices: <Rq extends AnySQLiteTable, S extends AnySQLiteTable, G extends AnySQLiteTable, Cn extends AnySQLiteTable, Rs extends AnySQLiteTable, A extends AnySQLiteTable, F extends AnySQLiteTable, C extends AnySQLiteTable, Sub extends AnySQLiteTable, I extends AnySQLiteTable, Cr extends AnySQLiteTable, NativeId>(mapping: D1ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>) => Effect.Effect<{
19
20
  proofPersistence: {
20
21
  readonly issue: <A_1>(input: {
21
22
  readonly record: import("@yielded/auth/Proofs").ProofRecord;
@@ -65,7 +66,7 @@ export declare const makeD1ProofPersistenceServices: <Rq extends AnySQLiteTable,
65
66
  readonly limit: number;
66
67
  }, prepare: PrepareProofCommit<ProofCleanupResult, A_1>) => Effect.Effect<PreparedCommit<A_1>, ProofUnavailable>;
67
68
  };
68
- }, never, LifecycleHooks>;
69
+ }, never, Database$1 | LifecycleHooks>;
69
70
  type CoordinatorError<E> = E | ProofUnavailable | HookConfigurationError;
70
71
  /**
71
72
  * Owns one proof transition plus application statements in one D1 batch. It
@@ -1,6 +1,7 @@
1
1
  import { requiredProofConstraints } from "./proof-model.mjs";
2
2
  import { PersistenceMappingError, column, isMappedConstraintConflict, updateValues } from "./model.mjs";
3
3
  import { balancedD1And } from "./d1-generated-statement.mjs";
4
+ import { Database } from "./d1-database.mjs";
4
5
  import { D1BatchStatements } from "./D1BatchStatements.mjs";
5
6
  import { CurrentD1PlanningDatabase, makeD1Owner } from "./d1-planning.mjs";
6
7
  import { and, count, eq, gte, inArray, isNull, lte, notExists, or, sql } from "drizzle-orm";
@@ -730,7 +731,8 @@ const makeProofPlans = (mapping) => {
730
731
  })
731
732
  };
732
733
  };
733
- const makeD1ProofPersistenceServices = (database, mapping) => Effect.gen(function* () {
734
+ const makeD1ProofPersistenceServices = Effect.fnUntraced(function* (mapping) {
735
+ const database = yield* Database;
734
736
  const hooks = yield* LifecycleHooks;
735
737
  const plans = makeProofPlans(mapping);
736
738
  const run = (plan) => Effect.gen(function* () {