@yielded/auth-persistence-drizzle 0.1.0-beta.0 → 0.1.0-beta.12

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 (291) hide show
  1. package/README.md +6 -1
  2. package/dist/D1.d.mts +155 -40
  3. package/dist/D1.mjs +10 -6
  4. package/dist/D1.mjs.map +1 -1
  5. package/dist/Libsql.d.mts +251 -129
  6. package/dist/Libsql.mjs +20 -21
  7. package/dist/Libsql.mjs.map +1 -1
  8. package/dist/Mysql2.d.mts +208 -56
  9. package/dist/Mysql2.mjs +13 -8
  10. package/dist/Mysql2.mjs.map +1 -1
  11. package/dist/Pglite.d.mts +209 -57
  12. package/dist/Pglite.mjs +13 -9
  13. package/dist/Pglite.mjs.map +1 -1
  14. package/dist/Postgres.d.mts +207 -55
  15. package/dist/Postgres.mjs +13 -9
  16. package/dist/Postgres.mjs.map +1 -1
  17. package/dist/SqliteBun.d.mts +249 -126
  18. package/dist/SqliteBun.mjs +20 -18
  19. package/dist/SqliteBun.mjs.map +1 -1
  20. package/dist/SqliteDo.d.mts +248 -158
  21. package/dist/SqliteDo.mjs +26 -44
  22. package/dist/SqliteDo.mjs.map +1 -1
  23. package/dist/SqliteNode.d.mts +247 -124
  24. package/dist/SqliteNode.mjs +20 -18
  25. package/dist/SqliteNode.mjs.map +1 -1
  26. package/dist/SqliteWasm.d.mts +251 -128
  27. package/dist/SqliteWasm.mjs +20 -18
  28. package/dist/SqliteWasm.mjs.map +1 -1
  29. package/dist/drizzle/D1BatchStatements.d.mts +1 -1
  30. package/dist/drizzle/D1BatchStatements.mjs.map +1 -1
  31. package/dist/drizzle/d1-database.d.mts +11 -0
  32. package/dist/drizzle/d1-database.mjs +8 -0
  33. package/dist/drizzle/d1-database.mjs.map +1 -0
  34. package/dist/drizzle/d1-emails.d.mts +8 -7
  35. package/dist/drizzle/d1-emails.mjs +7 -4
  36. package/dist/drizzle/d1-emails.mjs.map +1 -1
  37. package/dist/drizzle/d1-generated-statement.mjs.map +1 -1
  38. package/dist/drizzle/d1-identity.mjs +12 -9
  39. package/dist/drizzle/d1-identity.mjs.map +1 -1
  40. package/dist/drizzle/d1-oauth.d.mts +41 -10
  41. package/dist/drizzle/d1-oauth.mjs +8 -5
  42. package/dist/drizzle/d1-oauth.mjs.map +1 -1
  43. package/dist/drizzle/d1-passkey.d.mts +3 -14
  44. package/dist/drizzle/d1-passkey.mjs +2 -1
  45. package/dist/drizzle/d1-passkey.mjs.map +1 -1
  46. package/dist/drizzle/d1-password-prepared.d.mts +4 -3
  47. package/dist/drizzle/d1-password-prepared.mjs +3 -1
  48. package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
  49. package/dist/drizzle/d1-passwords.d.mts +7 -6
  50. package/dist/drizzle/d1-passwords.mjs +5 -2
  51. package/dist/drizzle/d1-passwords.mjs.map +1 -1
  52. package/dist/drizzle/d1-phone.d.mts +3 -4
  53. package/dist/drizzle/d1-phone.mjs +2 -1
  54. package/dist/drizzle/d1-phone.mjs.map +1 -1
  55. package/dist/drizzle/d1-planning.d.mts +1 -1
  56. package/dist/drizzle/d1-proofs.d.mts +5 -4
  57. package/dist/drizzle/d1-proofs.mjs +3 -1
  58. package/dist/drizzle/d1-proofs.mjs.map +1 -1
  59. package/dist/drizzle/d1-sessions.d.mts +14 -13
  60. package/dist/drizzle/d1-sessions.mjs +15 -9
  61. package/dist/drizzle/d1-sessions.mjs.map +1 -1
  62. package/dist/drizzle/d1-totp.d.mts +3 -4
  63. package/dist/drizzle/d1-totp.mjs +2 -1
  64. package/dist/drizzle/d1-totp.mjs.map +1 -1
  65. package/dist/drizzle/email-registration.d.mts +1 -1
  66. package/dist/drizzle/email-registration.mjs +2 -1
  67. package/dist/drizzle/email-registration.mjs.map +1 -1
  68. package/dist/drizzle/email-target.d.mts +8 -7
  69. package/dist/drizzle/email-target.mjs +10 -10
  70. package/dist/drizzle/email-target.mjs.map +1 -1
  71. package/dist/drizzle/model.d.mts +2 -126
  72. package/dist/drizzle/model.mjs +2 -21
  73. package/dist/drizzle/model.mjs.map +1 -1
  74. package/dist/drizzle/mysql-database.d.mts +8 -0
  75. package/dist/drizzle/mysql-database.mjs +8 -0
  76. package/dist/drizzle/mysql-database.mjs.map +1 -0
  77. package/dist/drizzle/mysql-emails.d.mts +8 -7
  78. package/dist/drizzle/mysql-emails.mjs +12 -8
  79. package/dist/drizzle/mysql-emails.mjs.map +1 -1
  80. package/dist/drizzle/mysql-identity.mjs +12 -9
  81. package/dist/drizzle/mysql-identity.mjs.map +1 -1
  82. package/dist/drizzle/mysql-password-prepared.d.mts +4 -3
  83. package/dist/drizzle/mysql-password-prepared.mjs +6 -2
  84. package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
  85. package/dist/drizzle/mysql-passwords.d.mts +7 -5
  86. package/dist/drizzle/mysql-passwords.mjs +11 -7
  87. package/dist/drizzle/mysql-passwords.mjs.map +1 -1
  88. package/dist/drizzle/mysql-proofs.d.mts +4 -3
  89. package/dist/drizzle/mysql-proofs.mjs +8 -4
  90. package/dist/drizzle/mysql-proofs.mjs.map +1 -1
  91. package/dist/drizzle/mysql-sessions.d.mts +12 -11
  92. package/dist/drizzle/mysql-sessions.mjs +16 -12
  93. package/dist/drizzle/mysql-sessions.mjs.map +1 -1
  94. package/dist/drizzle/native-database.mjs +10 -0
  95. package/dist/drizzle/native-database.mjs.map +1 -0
  96. package/dist/drizzle/oauth-accounts.mjs +1 -1
  97. package/dist/drizzle/oauth-connected-access.mjs +14 -12
  98. package/dist/drizzle/oauth-connected-access.mjs.map +1 -1
  99. package/dist/drizzle/oauth-connected-custody.mjs +2 -2
  100. package/dist/drizzle/oauth-connected-drivers.mjs +11 -6
  101. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
  102. package/dist/drizzle/oauth-connected-flow.mjs +2 -2
  103. package/dist/drizzle/oauth-connected-input.mjs +14 -1
  104. package/dist/drizzle/oauth-connected-input.mjs.map +1 -1
  105. package/dist/drizzle/oauth-connected-maintenance.mjs +1 -1
  106. package/dist/drizzle/oauth-connected-management.mjs +2 -2
  107. package/dist/drizzle/oauth-connected-model.d.mts +17 -3
  108. package/dist/drizzle/oauth-connected-model.mjs.map +1 -1
  109. package/dist/drizzle/oauth-connected-settlement.mjs +51 -41
  110. package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -1
  111. package/dist/drizzle/oauth-connected-sign-in.mjs +263 -0
  112. package/dist/drizzle/oauth-connected-sign-in.mjs.map +1 -0
  113. package/dist/drizzle/oauth-connected-state.d.mts +110 -2
  114. package/dist/drizzle/oauth-connected-state.mjs +9 -4
  115. package/dist/drizzle/oauth-connected-state.mjs.map +1 -1
  116. package/dist/drizzle/oauth-connected-target.d.mts +142 -15
  117. package/dist/drizzle/oauth-connected-target.mjs +9 -6
  118. package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
  119. package/dist/drizzle/oauth-drivers.mjs +9 -7
  120. package/dist/drizzle/oauth-drivers.mjs.map +1 -1
  121. package/dist/drizzle/oauth-flow.d.mts +1 -1
  122. package/dist/drizzle/oauth-flow.mjs +1 -1
  123. package/dist/drizzle/oauth-input.mjs +1 -1
  124. package/dist/drizzle/oauth-model.d.mts +1 -1
  125. package/dist/drizzle/oauth-owner.d.mts +1 -1
  126. package/dist/drizzle/oauth-registration.d.mts +2 -2
  127. package/dist/drizzle/oauth-registration.mjs +1 -1
  128. package/dist/drizzle/oauth-state.mjs +5 -4
  129. package/dist/drizzle/oauth-state.mjs.map +1 -1
  130. package/dist/drizzle/oauth-target.d.mts +14 -13
  131. package/dist/drizzle/oauth-target.mjs +14 -13
  132. package/dist/drizzle/oauth-target.mjs.map +1 -1
  133. package/dist/drizzle/passkey-drivers.mjs +8 -6
  134. package/dist/drizzle/passkey-drivers.mjs.map +1 -1
  135. package/dist/drizzle/passkey-write-drivers.mjs +5 -3
  136. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
  137. package/dist/drizzle/passkey-write-target.d.mts +1 -1
  138. package/dist/drizzle/password-prepared-sql.mjs +2 -1
  139. package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
  140. package/dist/drizzle/password-prepared-state.mjs +1 -1
  141. package/dist/drizzle/password-prepared-target.d.mts +4 -3
  142. package/dist/drizzle/password-prepared-target.mjs +4 -3
  143. package/dist/drizzle/password-prepared-target.mjs.map +1 -1
  144. package/dist/drizzle/password-registration.mjs +2 -1
  145. package/dist/drizzle/password-registration.mjs.map +1 -1
  146. package/dist/drizzle/password-target.d.mts +6 -5
  147. package/dist/drizzle/password-target.mjs +8 -8
  148. package/dist/drizzle/password-target.mjs.map +1 -1
  149. package/dist/drizzle/pg-database.d.mts +9 -0
  150. package/dist/drizzle/pg-database.mjs +8 -0
  151. package/dist/drizzle/pg-database.mjs.map +1 -0
  152. package/dist/drizzle/pg-emails.d.mts +8 -7
  153. package/dist/drizzle/pg-emails.mjs +12 -8
  154. package/dist/drizzle/pg-emails.mjs.map +1 -1
  155. package/dist/drizzle/pg-identity.mjs +92 -0
  156. package/dist/drizzle/pg-identity.mjs.map +1 -0
  157. package/dist/drizzle/pg-password-prepared.d.mts +4 -3
  158. package/dist/drizzle/pg-password-prepared.mjs +6 -2
  159. package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
  160. package/dist/drizzle/pg-passwords.d.mts +7 -5
  161. package/dist/drizzle/pg-passwords.mjs +11 -7
  162. package/dist/drizzle/pg-passwords.mjs.map +1 -1
  163. package/dist/drizzle/pg-proofs.d.mts +4 -3
  164. package/dist/drizzle/pg-proofs.mjs +8 -4
  165. package/dist/drizzle/pg-proofs.mjs.map +1 -1
  166. package/dist/drizzle/pg-sessions.d.mts +12 -11
  167. package/dist/drizzle/pg-sessions.mjs +16 -12
  168. package/dist/drizzle/pg-sessions.mjs.map +1 -1
  169. package/dist/drizzle/phone-model.d.mts +1 -1
  170. package/dist/drizzle/phone-target.d.mts +5 -4
  171. package/dist/drizzle/phone-target.mjs +12 -11
  172. package/dist/drizzle/phone-target.mjs.map +1 -1
  173. package/dist/drizzle/proof-target.d.mts +4 -3
  174. package/dist/drizzle/proof-target.mjs +5 -5
  175. package/dist/drizzle/proof-target.mjs.map +1 -1
  176. package/dist/drizzle/session-sql.d.mts +1 -0
  177. package/dist/drizzle/session-target.d.mts +11 -9
  178. package/dist/drizzle/session-target.mjs +11 -11
  179. package/dist/drizzle/session-target.mjs.map +1 -1
  180. package/dist/drizzle/sqlite-emails.mjs +9 -5
  181. package/dist/drizzle/sqlite-emails.mjs.map +1 -1
  182. package/dist/drizzle/sqlite-identity.mjs +14 -11
  183. package/dist/drizzle/sqlite-identity.mjs.map +1 -1
  184. package/dist/drizzle/sqlite-password-prepared.mjs +7 -3
  185. package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
  186. package/dist/drizzle/sqlite-passwords.mjs +10 -6
  187. package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
  188. package/dist/drizzle/sqlite-proofs.mjs +7 -3
  189. package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
  190. package/dist/drizzle/sqlite-sessions.mjs +16 -12
  191. package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
  192. package/dist/drizzle/standalone-guard.d.mts +2 -0
  193. package/dist/drizzle/standalone-guard.mjs +8 -4
  194. package/dist/drizzle/standalone-guard.mjs.map +1 -1
  195. package/dist/drizzle/totp-model.d.mts +1 -1
  196. package/dist/drizzle/totp-target.d.mts +5 -4
  197. package/dist/drizzle/totp-target.mjs +31 -28
  198. package/dist/drizzle/totp-target.mjs.map +1 -1
  199. package/dist/drizzle/transaction-mysql.mjs +1 -1
  200. package/dist/drizzle/transaction-mysql.mjs.map +1 -1
  201. package/dist/index.d.mts +2 -4
  202. package/dist/index.mjs +2 -4
  203. package/dist/internal/drizzle-postgres.mjs.map +1 -1
  204. package/dist/internal/drizzle-sqlite.mjs.map +1 -1
  205. package/package.json +1 -1
  206. package/src/D1.ts +37 -26
  207. package/src/Libsql.ts +45 -61
  208. package/src/Mysql2.ts +39 -35
  209. package/src/Pglite.ts +48 -30
  210. package/src/Postgres.ts +48 -30
  211. package/src/SqliteBun.ts +59 -68
  212. package/src/SqliteDo.ts +61 -274
  213. package/src/SqliteNode.ts +56 -66
  214. package/src/SqliteWasm.ts +56 -66
  215. package/src/drizzle/D1BatchStatements.ts +1 -1
  216. package/src/drizzle/d1-database.ts +10 -0
  217. package/src/drizzle/d1-emails.ts +86 -88
  218. package/src/drizzle/d1-generated-statement.ts +1 -1
  219. package/src/drizzle/d1-identity.ts +17 -20
  220. package/src/drizzle/d1-oauth.ts +19 -8
  221. package/src/drizzle/d1-passkey.ts +5 -1
  222. package/src/drizzle/d1-password-prepared.ts +40 -42
  223. package/src/drizzle/d1-passwords.ts +76 -80
  224. package/src/drizzle/d1-phone.ts +5 -1
  225. package/src/drizzle/d1-proofs.ts +31 -34
  226. package/src/drizzle/d1-sessions.ts +53 -40
  227. package/src/drizzle/d1-totp.ts +5 -1
  228. package/src/drizzle/email-registration.ts +6 -2
  229. package/src/drizzle/email-target.ts +18 -20
  230. package/src/drizzle/model.ts +1 -208
  231. package/src/drizzle/mysql-database.ts +8 -0
  232. package/src/drizzle/mysql-emails.ts +29 -17
  233. package/src/drizzle/mysql-identity.ts +18 -21
  234. package/src/drizzle/mysql-password-prepared.ts +11 -9
  235. package/src/drizzle/mysql-passwords.ts +22 -10
  236. package/src/drizzle/mysql-proofs.ts +17 -6
  237. package/src/drizzle/mysql-sessions.ts +41 -18
  238. package/src/drizzle/native-database.ts +22 -0
  239. package/src/drizzle/oauth-connected-access.ts +8 -1
  240. package/src/drizzle/oauth-connected-drivers.ts +21 -6
  241. package/src/drizzle/oauth-connected-input.ts +13 -0
  242. package/src/drizzle/oauth-connected-model.ts +17 -0
  243. package/src/drizzle/oauth-connected-settlement.ts +65 -42
  244. package/src/drizzle/oauth-connected-sign-in.ts +438 -0
  245. package/src/drizzle/oauth-connected-state.ts +19 -7
  246. package/src/drizzle/oauth-connected-target.ts +26 -18
  247. package/src/drizzle/oauth-drivers.ts +26 -10
  248. package/src/drizzle/oauth-state.ts +5 -4
  249. package/src/drizzle/oauth-target.ts +31 -43
  250. package/src/drizzle/passkey-drivers.ts +21 -13
  251. package/src/drizzle/passkey-write-drivers.ts +11 -6
  252. package/src/drizzle/password-prepared-sql.ts +2 -4
  253. package/src/drizzle/password-prepared-target.ts +10 -7
  254. package/src/drizzle/password-registration.ts +7 -8
  255. package/src/drizzle/password-target.ts +20 -19
  256. package/src/drizzle/pg-database.ts +10 -0
  257. package/src/drizzle/pg-emails.ts +29 -17
  258. package/src/drizzle/pg-identity.ts +297 -0
  259. package/src/drizzle/pg-password-prepared.ts +11 -9
  260. package/src/drizzle/pg-passwords.ts +22 -10
  261. package/src/drizzle/pg-proofs.ts +17 -6
  262. package/src/drizzle/pg-sessions.ts +41 -18
  263. package/src/drizzle/phone-target.ts +23 -18
  264. package/src/drizzle/proof-target.ts +10 -13
  265. package/src/drizzle/session-target.ts +33 -51
  266. package/src/drizzle/sqlite-emails.ts +31 -14
  267. package/src/drizzle/sqlite-identity.ts +22 -42
  268. package/src/drizzle/sqlite-password-prepared.ts +24 -10
  269. package/src/drizzle/sqlite-passwords.ts +30 -16
  270. package/src/drizzle/sqlite-proofs.ts +29 -6
  271. package/src/drizzle/sqlite-sessions.ts +50 -24
  272. package/src/drizzle/standalone-guard.ts +19 -7
  273. package/src/drizzle/totp-target.ts +62 -61
  274. package/src/drizzle/transaction-mysql.ts +1 -1
  275. package/src/index.ts +0 -24
  276. package/src/internal/drizzle-postgres.ts +1 -1
  277. package/src/internal/drizzle-sqlite.ts +1 -1
  278. package/dist/drizzle/d1-identity.d.mts +0 -30
  279. package/dist/drizzle/mysql-identity.d.mts +0 -21
  280. package/dist/drizzle/mysql.d.mts +0 -69
  281. package/dist/drizzle/mysql.mjs +0 -218
  282. package/dist/drizzle/mysql.mjs.map +0 -1
  283. package/dist/drizzle/pg.d.mts +0 -80
  284. package/dist/drizzle/pg.mjs +0 -289
  285. package/dist/drizzle/pg.mjs.map +0 -1
  286. package/dist/drizzle/sqlite.d.mts +0 -77
  287. package/dist/drizzle/sqlite.mjs +0 -217
  288. package/dist/drizzle/sqlite.mjs.map +0 -1
  289. package/src/drizzle/mysql.ts +0 -687
  290. package/src/drizzle/pg.ts +0 -984
  291. package/src/drizzle/sqlite.ts +0 -705
package/src/SqliteDo.ts CHANGED
@@ -1,24 +1,39 @@
1
- import { OAuthStateDecisions } from "@yielded/auth/OAuth";
2
- import { AuthStoreDecisions } from "@yielded/auth/Persistence";
1
+ import { SqliteClient } from "@effect/sql-sqlite-do/SqliteClient";
2
+ import { NativeDatabase, PersistenceConfigurationError } from "@yielded/auth-persistence/Adapter";
3
3
  import type { AnyRelations } from "drizzle-orm";
4
- import type { EffectSQLiteDoDatabase } from "drizzle-orm/effect-sqlite-do";
4
+ import { type EffectSQLiteDoDatabase, makeWithDefaults } from "drizzle-orm/effect-sqlite-do";
5
5
  import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
6
- import { Context, Effect } from "effect";
7
- import type { SqlError } from "effect/unstable/sql/SqlError";
6
+ import { Context, Effect, Layer } from "effect";
7
+
8
+ import { nativeDatabase } from "./drizzle/native-database";
9
+
10
+ /** The application-owned Drizzle database used to construct persistence services. */
11
+ export class Database extends Context.Service<Database, EffectSQLiteDoDatabase<AnyRelations>>()(
12
+ "effect-auth/persistence-drizzle/SqliteDo/Database",
13
+ ) {}
14
+
15
+ /** The SQL-client Layer must configure storage so Drizzle owns transactionSync. */
16
+ export const databaseLayer = Layer.effect(
17
+ Database,
18
+ Effect.gen(function* () {
19
+ const client = yield* SqliteClient;
20
+ const storage = client.config.storage;
21
+
22
+ if (storage === undefined)
23
+ return yield* PersistenceConfigurationError.make({
24
+ reason:
25
+ "SqliteDo requires a SQL client configured with storage for synchronous transactions",
26
+ });
27
+
28
+ return yield* makeWithDefaults({ storage });
29
+ }),
30
+ );
8
31
 
9
32
  import type {
10
- AuthStoreTables,
11
- AuthTables,
12
33
  ExternalIdentityTables,
13
34
  IdentityTables,
14
- OAuthStateTables,
15
35
  SubjectProvisioningTables,
16
36
  } from "./drizzle/model";
17
- import {
18
- makeSqliteAuthServices,
19
- makeSqliteAuthStoreServices,
20
- makeSqliteOAuthStateServices,
21
- } from "./drizzle/sqlite";
22
37
  import { makeSqliteEmailTarget, sqliteEmailConfiguration } from "./drizzle/sqlite-emails";
23
38
  import {
24
39
  makeSqliteExternalIdentityServices,
@@ -28,21 +43,25 @@ import {
28
43
  import { makeSqlitePasswordTarget, sqlitePasswordConfiguration } from "./drizzle/sqlite-passwords";
29
44
  import { makeSqliteProofTarget, sqliteProofConfiguration } from "./drizzle/sqlite-proofs";
30
45
  import { makeSqliteSessionTarget, sqliteSessionConfiguration } from "./drizzle/sqlite-sessions";
31
- import type { SuppliedService } from "./drizzle/SuppliedService";
32
46
 
33
- const sessionTarget = makeSqliteSessionTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(
47
+ const sessionTarget = makeSqliteSessionTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(
48
+ Database,
34
49
  sqliteSessionConfiguration("synchronous", Effect.void),
35
50
  );
36
51
 
37
- const proofTarget = makeSqliteProofTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(
52
+ const proofTarget = makeSqliteProofTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(
53
+ Database,
38
54
  sqliteProofConfiguration("synchronous", Effect.void),
39
55
  );
40
56
 
41
- const passwordTarget = makeSqlitePasswordTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(
42
- sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void),
43
- );
57
+ const passwordTarget = makeSqlitePasswordTarget<
58
+ Database,
59
+ EffectSQLiteDoDatabase<AnyRelations>,
60
+ true
61
+ >(Database, sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
44
62
 
45
- const emailTarget = makeSqliteEmailTarget<EffectSQLiteDoDatabase<AnyRelations>, true>(
63
+ const emailTarget = makeSqliteEmailTarget<Database, EffectSQLiteDoDatabase<AnyRelations>, true>(
64
+ Database,
46
65
  sqliteEmailConfiguration("synchronous", Effect.void, Effect.void),
47
66
  );
48
67
 
@@ -100,249 +119,6 @@ export const {
100
119
 
101
120
  export const commitMode = "synchronous" as const;
102
121
 
103
- export const makeAuthStoreServices = <C extends AnySQLiteTable, R extends AnySQLiteTable>(
104
- database: EffectSQLiteDoDatabase<AnyRelations>,
105
- mapping: AuthStoreTables<C, R>,
106
- ) => makeSqliteAuthStoreServices(database, mapping);
107
-
108
- export const makeOAuthStateServices = <S extends AnySQLiteTable>(
109
- database: EffectSQLiteDoDatabase<AnyRelations>,
110
- mapping: OAuthStateTables<S>,
111
- ) => makeSqliteOAuthStateServices(database, mapping);
112
-
113
- export const makeAuthServices = <
114
- C extends AnySQLiteTable,
115
- R extends AnySQLiteTable,
116
- S extends AnySQLiteTable,
117
- >(
118
- database: EffectSQLiteDoDatabase<AnyRelations>,
119
- mapping: AuthTables<C, R, S>,
120
- ) => makeSqliteAuthServices(database, mapping);
121
-
122
- type TransactionOf<D extends EffectSQLiteDoDatabase<AnyRelations>> = Parameters<
123
- Parameters<D["transaction"]>[0]
124
- >[0];
125
-
126
- export function coordinateAuthStoreTransaction<
127
- D extends EffectSQLiteDoDatabase<AnyRelations>,
128
- C extends AnySQLiteTable,
129
- R extends AnySQLiteTable,
130
- A,
131
- E,
132
- DatabaseError,
133
- DatabaseRequirements,
134
- >(
135
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
136
- options: { readonly mapping: AuthStoreTables<C, R>; readonly transaction?: never },
137
- body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions>>,
138
- ): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
139
-
140
- export function coordinateAuthStoreTransaction<
141
- D extends EffectSQLiteDoDatabase<AnyRelations>,
142
- C extends AnySQLiteTable,
143
- R extends AnySQLiteTable,
144
- A,
145
- E,
146
- DatabaseError,
147
- DatabaseRequirements,
148
- TxId,
149
- TxShape,
150
- >(
151
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
152
- options: {
153
- readonly mapping: AuthStoreTables<C, R>;
154
- readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
155
- },
156
- body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | TxId>>,
157
- ): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
158
-
159
- export function coordinateAuthStoreTransaction<
160
- D extends EffectSQLiteDoDatabase<AnyRelations>,
161
- C extends AnySQLiteTable,
162
- R extends AnySQLiteTable,
163
- A,
164
- E,
165
- Requirements,
166
- DatabaseError,
167
- DatabaseRequirements,
168
- TxId,
169
- TxShape,
170
- >(
171
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
172
- options: {
173
- readonly mapping: AuthStoreTables<C, R>;
174
- readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
175
- },
176
- body: Effect.Effect<A, E, Requirements>,
177
- ) {
178
- return Effect.flatMap(acquire, (database) =>
179
- database.transaction<A, E, Exclude<Requirements, AuthStoreDecisions>>((transaction) => {
180
- const decisions = makeSqliteAuthStoreServices(transaction, options.mapping).decisions;
181
- const provided = Context.make(AuthStoreDecisions, decisions);
182
- const work = Effect.provideContext(body, provided);
183
-
184
- return options.transaction === undefined
185
- ? work
186
- : Effect.provideService(
187
- work,
188
- options.transaction,
189
- options.transaction.of(transaction as TransactionOf<D>),
190
- );
191
- }),
192
- );
193
- }
194
-
195
- export function coordinateOAuthStateTransaction<
196
- D extends EffectSQLiteDoDatabase<AnyRelations>,
197
- S extends AnySQLiteTable,
198
- A,
199
- E,
200
- DatabaseError,
201
- DatabaseRequirements,
202
- >(
203
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
204
- options: { readonly mapping: OAuthStateTables<S>; readonly transaction?: never },
205
- body: Effect.Effect<A, E, NoInfer<OAuthStateDecisions>>,
206
- ): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
207
-
208
- export function coordinateOAuthStateTransaction<
209
- D extends EffectSQLiteDoDatabase<AnyRelations>,
210
- S extends AnySQLiteTable,
211
- A,
212
- E,
213
- DatabaseError,
214
- DatabaseRequirements,
215
- TxId,
216
- TxShape,
217
- >(
218
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
219
- options: {
220
- readonly mapping: OAuthStateTables<S>;
221
- readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
222
- },
223
- body: Effect.Effect<A, E, NoInfer<OAuthStateDecisions | TxId>>,
224
- ): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
225
-
226
- export function coordinateOAuthStateTransaction<
227
- D extends EffectSQLiteDoDatabase<AnyRelations>,
228
- S extends AnySQLiteTable,
229
- A,
230
- E,
231
- Requirements,
232
- DatabaseError,
233
- DatabaseRequirements,
234
- TxId,
235
- TxShape,
236
- >(
237
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
238
- options: {
239
- readonly mapping: OAuthStateTables<S>;
240
- readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
241
- },
242
- body: Effect.Effect<A, E, Requirements>,
243
- ) {
244
- return Effect.flatMap(acquire, (database) =>
245
- database.transaction<A, E, Exclude<Requirements, OAuthStateDecisions>>((transaction) => {
246
- const decisions = makeSqliteOAuthStateServices(transaction, options.mapping).decisions;
247
- const provided = Context.make(OAuthStateDecisions, decisions);
248
- const work = Effect.provideContext(body, provided);
249
-
250
- return options.transaction === undefined
251
- ? work
252
- : Effect.provideService(
253
- work,
254
- options.transaction,
255
- options.transaction.of(transaction as TransactionOf<D>),
256
- );
257
- }),
258
- );
259
- }
260
-
261
- /**
262
- * Supported composition boundary for Durable Objects. The owner must return
263
- * decisions as values and translate rejection only after this root
264
- * transactionSync commit. Its body may contain only runSync-compatible Effects;
265
- * the installed driver rejects suspension and rolls back. Owner failure rolls
266
- * back synchronously, so no retry is performed inside this boundary.
267
- */
268
- export function coordinateAuthTransaction<
269
- D extends EffectSQLiteDoDatabase<AnyRelations>,
270
- C extends AnySQLiteTable,
271
- R extends AnySQLiteTable,
272
- S extends AnySQLiteTable,
273
- A,
274
- E,
275
- DatabaseError,
276
- DatabaseRequirements,
277
- >(
278
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
279
- options: { readonly mapping: AuthTables<C, R, S>; readonly transaction?: never },
280
- body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | OAuthStateDecisions>>,
281
- ): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
282
-
283
- export function coordinateAuthTransaction<
284
- D extends EffectSQLiteDoDatabase<AnyRelations>,
285
- C extends AnySQLiteTable,
286
- R extends AnySQLiteTable,
287
- S extends AnySQLiteTable,
288
- A,
289
- E,
290
- DatabaseError,
291
- DatabaseRequirements,
292
- TxId,
293
- TxShape,
294
- >(
295
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
296
- options: {
297
- readonly mapping: AuthTables<C, R, S>;
298
- readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
299
- },
300
- body: Effect.Effect<A, E, NoInfer<AuthStoreDecisions | OAuthStateDecisions | TxId>>,
301
- ): Effect.Effect<A, E | DatabaseError | SqlError, DatabaseRequirements>;
302
-
303
- export function coordinateAuthTransaction<
304
- D extends EffectSQLiteDoDatabase<AnyRelations>,
305
- C extends AnySQLiteTable,
306
- R extends AnySQLiteTable,
307
- S extends AnySQLiteTable,
308
- A,
309
- E,
310
- Requirements,
311
- DatabaseError,
312
- DatabaseRequirements,
313
- TxId,
314
- TxShape,
315
- >(
316
- acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
317
- options: {
318
- readonly mapping: AuthTables<C, R, S>;
319
- readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
320
- },
321
- body: Effect.Effect<A, E, Requirements>,
322
- ) {
323
- return Effect.flatMap(acquire, (database) =>
324
- database.transaction<A, E, Exclude<Requirements, AuthStoreDecisions | OAuthStateDecisions>>(
325
- (transaction) => {
326
- const decisions = makeSqliteAuthServices(transaction, options.mapping).decisions;
327
-
328
- const provided = Context.make(AuthStoreDecisions, decisions).pipe(
329
- Context.add(OAuthStateDecisions, decisions),
330
- );
331
-
332
- const work = Effect.provideContext(body, provided);
333
-
334
- return options.transaction === undefined
335
- ? work
336
- : Effect.provideService(
337
- work,
338
- options.transaction,
339
- options.transaction.of(transaction as TransactionOf<D>),
340
- );
341
- },
342
- ),
343
- );
344
- }
345
-
346
122
  export const makeIdentityServices = <
347
123
  Subject extends AnySQLiteTable,
348
124
  Identifier extends AnySQLiteTable,
@@ -350,9 +126,11 @@ export const makeIdentityServices = <
350
126
  Request extends AnySQLiteTable,
351
127
  NativeId,
352
128
  >(
353
- database: EffectSQLiteDoDatabase<AnyRelations>,
354
129
  mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
355
- ) => makeSqliteIdentityServices(database, mapping, "synchronous");
130
+ ) =>
131
+ makeSqliteIdentityServices(mapping, "synchronous").pipe(
132
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
133
+ );
356
134
 
357
135
  export const makeSubjectProvisioningServices = <
358
136
  Subject extends AnySQLiteTable,
@@ -360,25 +138,30 @@ export const makeSubjectProvisioningServices = <
360
138
  Request extends AnySQLiteTable,
361
139
  NativeId,
362
140
  >(
363
- database: EffectSQLiteDoDatabase<AnyRelations>,
364
141
  mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
365
- ) => makeSqliteSubjectProvisioningServices(database, mapping, "synchronous");
142
+ ) =>
143
+ makeSqliteSubjectProvisioningServices(mapping, "synchronous").pipe(
144
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
145
+ );
366
146
 
367
147
  export const makeExternalIdentityServices = <
368
148
  Subject extends AnySQLiteTable,
369
149
  External extends AnySQLiteTable,
370
150
  NativeId,
371
151
  >(
372
- database: EffectSQLiteDoDatabase<AnyRelations>,
373
152
  mapping: ExternalIdentityTables<Subject, External, NativeId>,
374
- ) => makeSqliteExternalIdentityServices(database, mapping);
153
+ ) =>
154
+ makeSqliteExternalIdentityServices(mapping).pipe(
155
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
156
+ );
375
157
 
376
158
  import { makeSqlitePasswordPreparedTarget } from "./drizzle/sqlite-password-prepared";
377
159
 
378
160
  const passwordPreparedTarget = makeSqlitePasswordPreparedTarget<
161
+ Database,
379
162
  EffectSQLiteDoDatabase<AnyRelations>,
380
163
  true
381
- >(sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
164
+ >(Database, sqlitePasswordConfiguration("synchronous", Effect.void, Effect.void));
382
165
 
383
166
  export const { makePasswordPreparedPersistenceServices, coordinatePasswordPreparedPersistence } =
384
167
  passwordPreparedTarget;
@@ -388,10 +171,11 @@ export { passwordPreparedPersistenceLayer } from "./drizzle/password-prepared-ta
388
171
  import { makeOAuthTarget } from "./drizzle/oauth-drivers";
389
172
 
390
173
  const oauthTarget = makeOAuthTarget<
174
+ Database,
391
175
  EffectSQLiteDoDatabase<AnyRelations>,
392
176
  AnySQLiteTable<{ dialect: "sqlite" }>,
393
177
  true
394
- >({
178
+ >(Database, {
395
179
  mode: "synchronous",
396
180
  dialect: "sqlite",
397
181
  locking: false,
@@ -416,11 +200,12 @@ export const {
416
200
  import { makePasskeyTarget } from "./drizzle/passkey-drivers";
417
201
 
418
202
  const passkeyTarget = makePasskeyTarget<
203
+ Database,
419
204
  EffectSQLiteDoDatabase<AnyRelations>,
420
205
  AnySQLiteTable<{ dialect: "sqlite" }>,
421
206
  unknown,
422
207
  true
423
- >({
208
+ >(Database, {
424
209
  mode: "synchronous",
425
210
  dialect: "sqlite",
426
211
  locking: false,
@@ -443,11 +228,12 @@ export const {
443
228
  import { makeTotpTarget } from "./drizzle/totp-target";
444
229
 
445
230
  const totpTarget = makeTotpTarget<
231
+ Database,
446
232
  EffectSQLiteDoDatabase<AnyRelations>,
447
233
  AnySQLiteTable<{ dialect: "sqlite" }>,
448
234
  unknown,
449
235
  true
450
- >({
236
+ >(Database, {
451
237
  mode: "synchronous",
452
238
  dialect: "sqlite",
453
239
  locking: false,
@@ -459,11 +245,12 @@ export const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTa
459
245
  import { makePhoneTarget } from "./drizzle/phone-target";
460
246
 
461
247
  const phoneTarget = makePhoneTarget<
248
+ Database,
462
249
  EffectSQLiteDoDatabase<AnyRelations>,
463
250
  AnySQLiteTable<{ dialect: "sqlite" }>,
464
251
  unknown,
465
252
  true
466
- >({
253
+ >(Database, {
467
254
  mode: "synchronous",
468
255
  dialect: "sqlite",
469
256
  locking: false,
package/src/SqliteNode.ts CHANGED
@@ -1,32 +1,25 @@
1
+ import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
1
2
  import type { AnyRelations } from "drizzle-orm";
2
3
  import { type EffectSQLiteNodeDatabase, makeWithDefaults } from "drizzle-orm/effect-sqlite-node";
3
4
  import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
4
- import { Effect } from "effect";
5
+ import { Context, Effect, Layer } from "effect";
5
6
 
7
+ import { nativeDatabase } from "./drizzle/native-database";
8
+
9
+ /** The application-owned Drizzle database used to construct persistence services. */
10
+ export class Database extends Context.Service<Database, EffectSQLiteNodeDatabase<AnyRelations>>()(
11
+ "effect-auth/persistence-drizzle/SqliteNode/Database",
12
+ ) {}
13
+
14
+ /** Construct Drizzle from the driver's SQL-client Layer. */
15
+ export const databaseLayer = Layer.effect(Database, makeWithDefaults({}));
16
+
17
+ import { sqlClientEmailStandaloneGuard } from "./drizzle/email-target";
6
18
  import type {
7
- AuthStoreTables,
8
- AuthTables,
9
19
  ExternalIdentityTables,
10
20
  IdentityTables,
11
- OAuthStateTables,
12
21
  SubjectProvisioningTables,
13
22
  } from "./drizzle/model";
14
- import {
15
- coordinateSqliteAuthStoreTransaction,
16
- coordinateSqliteAuthTransaction,
17
- coordinateSqliteOAuthStateTransaction,
18
- makeSqliteAuthServices,
19
- makeSqliteAuthStoreServices,
20
- makeSqliteOAuthStateServices,
21
- } from "./drizzle/sqlite";
22
-
23
- export {
24
- coordinateSqliteAuthStoreTransaction as coordinateAuthStoreTransaction,
25
- coordinateSqliteAuthTransaction as coordinateAuthTransaction,
26
- coordinateSqliteOAuthStateTransaction as coordinateOAuthStateTransaction,
27
- };
28
-
29
- import { sqlClientEmailStandaloneGuard } from "./drizzle/email-target";
30
23
  import { sqlClientPasswordStandaloneGuard } from "./drizzle/password-target";
31
24
  import { sqlClientProofStandaloneGuard } from "./drizzle/proof-target";
32
25
  import { sqlClientSessionStandaloneGuard } from "./drizzle/session-target";
@@ -40,29 +33,34 @@ import { makeSqlitePasswordTarget, sqlitePasswordConfiguration } from "./drizzle
40
33
  import { makeSqliteProofTarget, sqliteProofConfiguration } from "./drizzle/sqlite-proofs";
41
34
  import { makeSqliteSessionTarget, sqliteSessionConfiguration } from "./drizzle/sqlite-sessions";
42
35
 
43
- const sessionTarget = makeSqliteSessionTarget<EffectSQLiteNodeDatabase<AnyRelations>>((database) =>
44
- sqliteSessionConfiguration("interactive", sqlClientSessionStandaloneGuard(database)),
36
+ const sessionTarget = makeSqliteSessionTarget<Database, EffectSQLiteNodeDatabase<AnyRelations>>(
37
+ Database,
38
+ (service) => sqliteSessionConfiguration("interactive", sqlClientSessionStandaloneGuard(service)),
45
39
  );
46
40
 
47
- const proofTarget = makeSqliteProofTarget<EffectSQLiteNodeDatabase<AnyRelations>>((database) =>
48
- sqliteProofConfiguration("interactive", sqlClientProofStandaloneGuard(database)),
41
+ const proofTarget = makeSqliteProofTarget<Database, EffectSQLiteNodeDatabase<AnyRelations>>(
42
+ Database,
43
+ (service) => sqliteProofConfiguration("interactive", sqlClientProofStandaloneGuard(service)),
49
44
  );
50
45
 
51
- const passwordTarget = makeSqlitePasswordTarget<EffectSQLiteNodeDatabase<AnyRelations>>(
52
- (database) =>
46
+ const passwordTarget = makeSqlitePasswordTarget<Database, EffectSQLiteNodeDatabase<AnyRelations>>(
47
+ Database,
48
+ (service) =>
53
49
  sqlitePasswordConfiguration(
54
50
  "interactive",
55
- sqlClientPasswordStandaloneGuard(database),
56
- sqlClientProofStandaloneGuard(database),
51
+ sqlClientPasswordStandaloneGuard(service),
52
+ sqlClientProofStandaloneGuard(service),
57
53
  ),
58
54
  );
59
55
 
60
- const emailTarget = makeSqliteEmailTarget<EffectSQLiteNodeDatabase<AnyRelations>>((database) =>
61
- sqliteEmailConfiguration(
62
- "interactive",
63
- sqlClientEmailStandaloneGuard(database),
64
- sqlClientProofStandaloneGuard(database),
65
- ),
56
+ const emailTarget = makeSqliteEmailTarget<Database, EffectSQLiteNodeDatabase<AnyRelations>>(
57
+ Database,
58
+ (service) =>
59
+ sqliteEmailConfiguration(
60
+ "interactive",
61
+ sqlClientEmailStandaloneGuard(service),
62
+ sqlClientProofStandaloneGuard(service),
63
+ ),
66
64
  );
67
65
 
68
66
  export const {
@@ -97,25 +95,6 @@ export const {
97
95
 
98
96
  export const commitMode = "interactive" as const;
99
97
 
100
- export const makeAuthStoreServices = <C extends AnySQLiteTable, R extends AnySQLiteTable>(
101
- database: EffectSQLiteNodeDatabase<AnyRelations>,
102
- mapping: AuthStoreTables<C, R>,
103
- ) => makeSqliteAuthStoreServices(database, mapping);
104
-
105
- export const makeOAuthStateServices = <S extends AnySQLiteTable>(
106
- database: EffectSQLiteNodeDatabase<AnyRelations>,
107
- mapping: OAuthStateTables<S>,
108
- ) => makeSqliteOAuthStateServices(database, mapping);
109
-
110
- export const makeAuthServices = <
111
- C extends AnySQLiteTable,
112
- R extends AnySQLiteTable,
113
- S extends AnySQLiteTable,
114
- >(
115
- database: EffectSQLiteNodeDatabase<AnyRelations>,
116
- mapping: AuthTables<C, R, S>,
117
- ) => makeSqliteAuthServices(database, mapping);
118
-
119
98
  export const makeIdentityServices = <
120
99
  Subject extends AnySQLiteTable,
121
100
  Identifier extends AnySQLiteTable,
@@ -123,9 +102,11 @@ export const makeIdentityServices = <
123
102
  Request extends AnySQLiteTable,
124
103
  NativeId,
125
104
  >(
126
- database: EffectSQLiteNodeDatabase<AnyRelations>,
127
105
  mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
128
- ) => makeSqliteIdentityServices(database, mapping, "interactive");
106
+ ) =>
107
+ makeSqliteIdentityServices(mapping, "interactive").pipe(
108
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
109
+ );
129
110
 
130
111
  export const makeSubjectProvisioningServices = <
131
112
  Subject extends AnySQLiteTable,
@@ -133,28 +114,33 @@ export const makeSubjectProvisioningServices = <
133
114
  Request extends AnySQLiteTable,
134
115
  NativeId,
135
116
  >(
136
- database: EffectSQLiteNodeDatabase<AnyRelations>,
137
117
  mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
138
- ) => makeSqliteSubjectProvisioningServices(database, mapping, "interactive");
118
+ ) =>
119
+ makeSqliteSubjectProvisioningServices(mapping, "interactive").pipe(
120
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
121
+ );
139
122
 
140
123
  export const makeExternalIdentityServices = <
141
124
  Subject extends AnySQLiteTable,
142
125
  External extends AnySQLiteTable,
143
126
  NativeId,
144
127
  >(
145
- database: EffectSQLiteNodeDatabase<AnyRelations>,
146
128
  mapping: ExternalIdentityTables<Subject, External, NativeId>,
147
- ) => makeSqliteExternalIdentityServices(database, mapping);
129
+ ) =>
130
+ makeSqliteExternalIdentityServices(mapping).pipe(
131
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
132
+ );
148
133
 
149
134
  import { makeSqlitePasswordPreparedTarget } from "./drizzle/sqlite-password-prepared";
150
135
 
151
136
  const passwordPreparedTarget = makeSqlitePasswordPreparedTarget<
137
+ Database,
152
138
  EffectSQLiteNodeDatabase<AnyRelations>
153
- >((database) =>
139
+ >(Database, (service) =>
154
140
  sqlitePasswordConfiguration(
155
141
  "interactive",
156
- sqlClientPasswordStandaloneGuard(database),
157
- sqlClientProofStandaloneGuard(database),
142
+ sqlClientPasswordStandaloneGuard(service),
143
+ sqlClientProofStandaloneGuard(service),
158
144
  ),
159
145
  );
160
146
 
@@ -167,9 +153,10 @@ import { makeOAuthTarget } from "./drizzle/oauth-drivers";
167
153
  import { sqlClientOAuthStandaloneGuard } from "./drizzle/oauth-target";
168
154
 
169
155
  const oauthTarget = makeOAuthTarget<
156
+ Database,
170
157
  EffectSQLiteNodeDatabase<AnyRelations>,
171
158
  AnySQLiteTable<{ dialect: "sqlite" }>
172
- >({
159
+ >(Database, {
173
160
  mode: "interactive",
174
161
  dialect: "sqlite",
175
162
  locking: false,
@@ -195,9 +182,10 @@ import { makePasskeyTarget } from "./drizzle/passkey-drivers";
195
182
  import { sqlClientPasskeyStandaloneGuard } from "./drizzle/passkey-target";
196
183
 
197
184
  const passkeyTarget = makePasskeyTarget<
185
+ Database,
198
186
  EffectSQLiteNodeDatabase<AnyRelations>,
199
187
  AnySQLiteTable<{ dialect: "sqlite" }>
200
- >({
188
+ >(Database, {
201
189
  mode: "interactive",
202
190
  dialect: "sqlite",
203
191
  locking: false,
@@ -220,9 +208,10 @@ export const {
220
208
  import { makeTotpTarget, sqlClientTotpStandaloneGuard } from "./drizzle/totp-target";
221
209
 
222
210
  const totpTarget = makeTotpTarget<
211
+ Database,
223
212
  EffectSQLiteNodeDatabase<AnyRelations>,
224
213
  AnySQLiteTable<{ dialect: "sqlite" }>
225
- >({
214
+ >(Database, {
226
215
  mode: "interactive",
227
216
  dialect: "sqlite",
228
217
  locking: false,
@@ -234,9 +223,10 @@ export const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTa
234
223
  import { makePhoneTarget, sqlClientPhoneStandaloneGuard } from "./drizzle/phone-target";
235
224
 
236
225
  const phoneTarget = makePhoneTarget<
226
+ Database,
237
227
  EffectSQLiteNodeDatabase<AnyRelations>,
238
228
  AnySQLiteTable<{ dialect: "sqlite" }>
239
- >({
229
+ >(Database, {
240
230
  mode: "interactive",
241
231
  dialect: "sqlite",
242
232
  locking: false,