@yielded/auth-persistence-drizzle 0.1.0-beta.1 → 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 (222) hide show
  1. package/dist/D1.d.mts +27 -22
  2. package/dist/D1.mjs +10 -4
  3. package/dist/D1.mjs.map +1 -1
  4. package/dist/Libsql.d.mts +66 -61
  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 +43 -32
  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 +58 -53
  17. package/dist/SqliteBun.mjs +20 -14
  18. package/dist/SqliteBun.mjs.map +1 -1
  19. package/dist/SqliteDo.d.mts +66 -60
  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 +66 -61
  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 +14 -13
  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 +5 -2
  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-target.d.mts +6 -7
  91. package/dist/drizzle/oauth-connected-target.mjs +4 -5
  92. package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
  93. package/dist/drizzle/oauth-drivers.mjs +8 -6
  94. package/dist/drizzle/oauth-drivers.mjs.map +1 -1
  95. package/dist/drizzle/oauth-target.d.mts +12 -11
  96. package/dist/drizzle/oauth-target.mjs +13 -12
  97. package/dist/drizzle/oauth-target.mjs.map +1 -1
  98. package/dist/drizzle/passkey-drivers.mjs +8 -6
  99. package/dist/drizzle/passkey-drivers.mjs.map +1 -1
  100. package/dist/drizzle/passkey-write-drivers.mjs +5 -3
  101. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
  102. package/dist/drizzle/passkey-write-target.d.mts +1 -1
  103. package/dist/drizzle/password-prepared-sql.mjs +2 -1
  104. package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
  105. package/dist/drizzle/password-prepared-target.d.mts +3 -2
  106. package/dist/drizzle/password-prepared-target.mjs +4 -3
  107. package/dist/drizzle/password-prepared-target.mjs.map +1 -1
  108. package/dist/drizzle/password-registration.mjs +2 -1
  109. package/dist/drizzle/password-registration.mjs.map +1 -1
  110. package/dist/drizzle/password-target.d.mts +5 -4
  111. package/dist/drizzle/password-target.mjs +8 -8
  112. package/dist/drizzle/password-target.mjs.map +1 -1
  113. package/dist/drizzle/pg-database.d.mts +9 -0
  114. package/dist/drizzle/pg-database.mjs +8 -0
  115. package/dist/drizzle/pg-database.mjs.map +1 -0
  116. package/dist/drizzle/pg-emails.d.mts +7 -6
  117. package/dist/drizzle/pg-emails.mjs +12 -8
  118. package/dist/drizzle/pg-emails.mjs.map +1 -1
  119. package/dist/drizzle/pg-identity.mjs +12 -9
  120. package/dist/drizzle/pg-identity.mjs.map +1 -1
  121. package/dist/drizzle/pg-password-prepared.d.mts +3 -2
  122. package/dist/drizzle/pg-password-prepared.mjs +6 -2
  123. package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
  124. package/dist/drizzle/pg-passwords.d.mts +6 -4
  125. package/dist/drizzle/pg-passwords.mjs +11 -7
  126. package/dist/drizzle/pg-passwords.mjs.map +1 -1
  127. package/dist/drizzle/pg-proofs.d.mts +3 -2
  128. package/dist/drizzle/pg-proofs.mjs +8 -4
  129. package/dist/drizzle/pg-proofs.mjs.map +1 -1
  130. package/dist/drizzle/pg-sessions.d.mts +11 -10
  131. package/dist/drizzle/pg-sessions.mjs +16 -12
  132. package/dist/drizzle/pg-sessions.mjs.map +1 -1
  133. package/dist/drizzle/phone-target.d.mts +4 -3
  134. package/dist/drizzle/phone-target.mjs +12 -11
  135. package/dist/drizzle/phone-target.mjs.map +1 -1
  136. package/dist/drizzle/proof-target.d.mts +3 -2
  137. package/dist/drizzle/proof-target.mjs +5 -5
  138. package/dist/drizzle/proof-target.mjs.map +1 -1
  139. package/dist/drizzle/session-sql.d.mts +1 -0
  140. package/dist/drizzle/session-target.d.mts +10 -8
  141. package/dist/drizzle/session-target.mjs +11 -11
  142. package/dist/drizzle/session-target.mjs.map +1 -1
  143. package/dist/drizzle/sqlite-emails.mjs +9 -5
  144. package/dist/drizzle/sqlite-emails.mjs.map +1 -1
  145. package/dist/drizzle/sqlite-identity.mjs +14 -11
  146. package/dist/drizzle/sqlite-identity.mjs.map +1 -1
  147. package/dist/drizzle/sqlite-password-prepared.mjs +7 -3
  148. package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
  149. package/dist/drizzle/sqlite-passwords.mjs +10 -6
  150. package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
  151. package/dist/drizzle/sqlite-proofs.mjs +7 -3
  152. package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
  153. package/dist/drizzle/sqlite-sessions.mjs +16 -12
  154. package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
  155. package/dist/drizzle/standalone-guard.d.mts +2 -0
  156. package/dist/drizzle/standalone-guard.mjs +8 -4
  157. package/dist/drizzle/standalone-guard.mjs.map +1 -1
  158. package/dist/drizzle/totp-target.d.mts +4 -3
  159. package/dist/drizzle/totp-target.mjs +31 -28
  160. package/dist/drizzle/totp-target.mjs.map +1 -1
  161. package/package.json +1 -1
  162. package/src/D1.ts +37 -10
  163. package/src/Libsql.ts +45 -17
  164. package/src/Mysql2.ts +39 -13
  165. package/src/Pglite.ts +47 -13
  166. package/src/Postgres.ts +47 -13
  167. package/src/SqliteBun.ts +58 -30
  168. package/src/SqliteDo.ts +61 -19
  169. package/src/SqliteNode.ts +55 -28
  170. package/src/SqliteWasm.ts +55 -28
  171. package/src/drizzle/d1-database.ts +10 -0
  172. package/src/drizzle/d1-emails.ts +84 -84
  173. package/src/drizzle/d1-identity.ts +17 -20
  174. package/src/drizzle/d1-oauth.ts +19 -8
  175. package/src/drizzle/d1-passkey.ts +5 -1
  176. package/src/drizzle/d1-password-prepared.ts +38 -37
  177. package/src/drizzle/d1-passwords.ts +74 -76
  178. package/src/drizzle/d1-phone.ts +5 -1
  179. package/src/drizzle/d1-proofs.ts +29 -30
  180. package/src/drizzle/d1-sessions.ts +51 -38
  181. package/src/drizzle/d1-totp.ts +5 -1
  182. package/src/drizzle/email-registration.ts +6 -2
  183. package/src/drizzle/email-target.ts +17 -19
  184. package/src/drizzle/mysql-database.ts +8 -0
  185. package/src/drizzle/mysql-emails.ts +28 -16
  186. package/src/drizzle/mysql-identity.ts +18 -21
  187. package/src/drizzle/mysql-password-prepared.ts +10 -8
  188. package/src/drizzle/mysql-passwords.ts +21 -9
  189. package/src/drizzle/mysql-proofs.ts +16 -5
  190. package/src/drizzle/mysql-sessions.ts +40 -17
  191. package/src/drizzle/native-database.ts +22 -0
  192. package/src/drizzle/oauth-connected-drivers.ts +18 -6
  193. package/src/drizzle/oauth-connected-target.ts +16 -17
  194. package/src/drizzle/oauth-drivers.ts +26 -10
  195. package/src/drizzle/oauth-target.ts +30 -42
  196. package/src/drizzle/passkey-drivers.ts +21 -13
  197. package/src/drizzle/passkey-write-drivers.ts +11 -6
  198. package/src/drizzle/password-prepared-sql.ts +2 -4
  199. package/src/drizzle/password-prepared-target.ts +9 -6
  200. package/src/drizzle/password-registration.ts +7 -8
  201. package/src/drizzle/password-target.ts +19 -18
  202. package/src/drizzle/pg-database.ts +10 -0
  203. package/src/drizzle/pg-emails.ts +28 -16
  204. package/src/drizzle/pg-identity.ts +18 -22
  205. package/src/drizzle/pg-password-prepared.ts +10 -8
  206. package/src/drizzle/pg-passwords.ts +21 -9
  207. package/src/drizzle/pg-proofs.ts +16 -5
  208. package/src/drizzle/pg-sessions.ts +40 -17
  209. package/src/drizzle/phone-target.ts +22 -17
  210. package/src/drizzle/proof-target.ts +9 -12
  211. package/src/drizzle/session-target.ts +32 -50
  212. package/src/drizzle/sqlite-emails.ts +30 -13
  213. package/src/drizzle/sqlite-identity.ts +22 -42
  214. package/src/drizzle/sqlite-password-prepared.ts +23 -9
  215. package/src/drizzle/sqlite-passwords.ts +29 -15
  216. package/src/drizzle/sqlite-proofs.ts +28 -5
  217. package/src/drizzle/sqlite-sessions.ts +49 -23
  218. package/src/drizzle/standalone-guard.ts +18 -6
  219. package/src/drizzle/totp-target.ts +61 -60
  220. package/dist/drizzle/d1-identity.d.mts +0 -30
  221. package/dist/drizzle/mysql-identity.d.mts +0 -21
  222. package/dist/drizzle/pg-identity.d.mts +0 -22
package/src/Libsql.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { requireStandalone as standalone } from "@yielded/auth-persistence/Adapter";
1
+ import { NativeDatabase, requireStandalone as standalone } from "@yielded/auth-persistence/Adapter";
2
2
  import { EmailUnavailable } from "@yielded/auth/Email";
3
3
  import { PasswordUnavailable } from "@yielded/auth/Password";
4
4
  import { ProofUnavailable } from "@yielded/auth/Proofs";
@@ -6,7 +6,17 @@ import { SessionUnavailable } from "@yielded/auth/Sessions";
6
6
  import type { AnyRelations } from "drizzle-orm";
7
7
  import { type EffectLibsqlDatabase, makeWithDefaults } from "drizzle-orm/effect-libsql";
8
8
  import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
9
- import { Effect } from "effect";
9
+ import { Context, Effect, Layer } from "effect";
10
+
11
+ import { nativeDatabase } from "./drizzle/native-database";
12
+
13
+ /** The application-owned Drizzle database used to construct persistence services. */
14
+ export class Database extends Context.Service<Database, EffectLibsqlDatabase<AnyRelations>>()(
15
+ "effect-auth/persistence-drizzle/Libsql/Database",
16
+ ) {}
17
+
18
+ /** Construct Drizzle from the driver's SQL-client Layer. */
19
+ export const databaseLayer = Layer.effect(Database, makeWithDefaults({}));
10
20
 
11
21
  import type {
12
22
  ExternalIdentityTables,
@@ -28,19 +38,23 @@ const requireStandaloneProof = standalone(() => ProofUnavailable.make({}));
28
38
  const requireStandalonePassword = standalone(() => PasswordUnavailable.make({}));
29
39
  const requireStandaloneEmail = standalone(() => EmailUnavailable.make({}));
30
40
 
31
- const sessionTarget = makeSqliteSessionTarget<EffectLibsqlDatabase<AnyRelations>>(
41
+ const sessionTarget = makeSqliteSessionTarget<Database, EffectLibsqlDatabase<AnyRelations>>(
42
+ Database,
32
43
  sqliteSessionConfiguration("interactive", requireStandaloneSession),
33
44
  );
34
45
 
35
- const proofTarget = makeSqliteProofTarget<EffectLibsqlDatabase<AnyRelations>>(
46
+ const proofTarget = makeSqliteProofTarget<Database, EffectLibsqlDatabase<AnyRelations>>(
47
+ Database,
36
48
  sqliteProofConfiguration("interactive", requireStandaloneProof),
37
49
  );
38
50
 
39
- const passwordTarget = makeSqlitePasswordTarget<EffectLibsqlDatabase<AnyRelations>>(
51
+ const passwordTarget = makeSqlitePasswordTarget<Database, EffectLibsqlDatabase<AnyRelations>>(
52
+ Database,
40
53
  sqlitePasswordConfiguration("interactive", requireStandalonePassword, requireStandaloneProof),
41
54
  );
42
55
 
43
- const emailTarget = makeSqliteEmailTarget<EffectLibsqlDatabase<AnyRelations>>(
56
+ const emailTarget = makeSqliteEmailTarget<Database, EffectLibsqlDatabase<AnyRelations>>(
57
+ Database,
44
58
  sqliteEmailConfiguration("interactive", requireStandaloneEmail, requireStandaloneProof),
45
59
  );
46
60
 
@@ -83,9 +97,11 @@ export const makeIdentityServices = <
83
97
  Request extends AnySQLiteTable,
84
98
  NativeId,
85
99
  >(
86
- database: EffectLibsqlDatabase<AnyRelations>,
87
100
  mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
88
- ) => makeSqliteIdentityServices(database, mapping, "interactive");
101
+ ) =>
102
+ makeSqliteIdentityServices(mapping, "interactive").pipe(
103
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
104
+ );
89
105
 
90
106
  export const makeSubjectProvisioningServices = <
91
107
  Subject extends AnySQLiteTable,
@@ -93,22 +109,30 @@ export const makeSubjectProvisioningServices = <
93
109
  Request extends AnySQLiteTable,
94
110
  NativeId,
95
111
  >(
96
- database: EffectLibsqlDatabase<AnyRelations>,
97
112
  mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
98
- ) => makeSqliteSubjectProvisioningServices(database, mapping, "interactive");
113
+ ) =>
114
+ makeSqliteSubjectProvisioningServices(mapping, "interactive").pipe(
115
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
116
+ );
99
117
 
100
118
  export const makeExternalIdentityServices = <
101
119
  Subject extends AnySQLiteTable,
102
120
  External extends AnySQLiteTable,
103
121
  NativeId,
104
122
  >(
105
- database: EffectLibsqlDatabase<AnyRelations>,
106
123
  mapping: ExternalIdentityTables<Subject, External, NativeId>,
107
- ) => makeSqliteExternalIdentityServices(database, mapping);
124
+ ) =>
125
+ makeSqliteExternalIdentityServices(mapping).pipe(
126
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
127
+ );
108
128
 
109
129
  import { makeSqlitePasswordPreparedTarget } from "./drizzle/sqlite-password-prepared";
110
130
 
111
- const passwordPreparedTarget = makeSqlitePasswordPreparedTarget<EffectLibsqlDatabase<AnyRelations>>(
131
+ const passwordPreparedTarget = makeSqlitePasswordPreparedTarget<
132
+ Database,
133
+ EffectLibsqlDatabase<AnyRelations>
134
+ >(
135
+ Database,
112
136
  sqlitePasswordConfiguration("interactive", requireStandalonePassword, requireStandaloneProof),
113
137
  );
114
138
 
@@ -121,9 +145,10 @@ import { makeOAuthTarget } from "./drizzle/oauth-drivers";
121
145
  import { sqlClientOAuthStandaloneGuard } from "./drizzle/oauth-target";
122
146
 
123
147
  const oauthTarget = makeOAuthTarget<
148
+ Database,
124
149
  EffectLibsqlDatabase<AnyRelations>,
125
150
  AnySQLiteTable<{ dialect: "sqlite" }>
126
- >({
151
+ >(Database, {
127
152
  mode: "interactive",
128
153
  dialect: "sqlite",
129
154
  locking: false,
@@ -149,9 +174,10 @@ import { makePasskeyTarget } from "./drizzle/passkey-drivers";
149
174
  import { sqlClientPasskeyStandaloneGuard } from "./drizzle/passkey-target";
150
175
 
151
176
  const passkeyTarget = makePasskeyTarget<
177
+ Database,
152
178
  EffectLibsqlDatabase<AnyRelations>,
153
179
  AnySQLiteTable<{ dialect: "sqlite" }>
154
- >({
180
+ >(Database, {
155
181
  mode: "interactive",
156
182
  dialect: "sqlite",
157
183
  locking: false,
@@ -174,9 +200,10 @@ export const {
174
200
  import { makeTotpTarget, sqlClientTotpStandaloneGuard } from "./drizzle/totp-target";
175
201
 
176
202
  const totpTarget = makeTotpTarget<
203
+ Database,
177
204
  EffectLibsqlDatabase<AnyRelations>,
178
205
  AnySQLiteTable<{ dialect: "sqlite" }>
179
- >({
206
+ >(Database, {
180
207
  mode: "interactive",
181
208
  dialect: "sqlite",
182
209
  locking: false,
@@ -188,9 +215,10 @@ export const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTa
188
215
  import { makePhoneTarget, sqlClientPhoneStandaloneGuard } from "./drizzle/phone-target";
189
216
 
190
217
  const phoneTarget = makePhoneTarget<
218
+ Database,
191
219
  EffectLibsqlDatabase<AnyRelations>,
192
220
  AnySQLiteTable<{ dialect: "sqlite" }>
193
- >({
221
+ >(Database, {
194
222
  mode: "interactive",
195
223
  dialect: "sqlite",
196
224
  locking: false,
package/src/Mysql2.ts CHANGED
@@ -1,14 +1,22 @@
1
1
  import type { AnyRelations } from "drizzle-orm";
2
- import type { EffectMysql2Database } from "drizzle-orm/effect-mysql2";
2
+ import { type EffectMysql2Database, makeWithDefaults } from "drizzle-orm/effect-mysql2";
3
3
  import type { AnyMySqlTable } from "drizzle-orm/mysql-core";
4
-
5
- import type { IdentityTables } from "./drizzle/model";
4
+ import { Layer } from "effect";
5
+
6
+ import type {
7
+ IdentityTables,
8
+ SubjectProvisioningTables,
9
+ ExternalIdentityTables,
10
+ } from "./drizzle/model";
11
+ import { Database } from "./drizzle/mysql-database";
6
12
  import {
7
13
  makeMysqlExternalIdentityServices,
8
14
  makeMysqlIdentityServices,
9
15
  makeMysqlSubjectProvisioningServices,
10
16
  } from "./drizzle/mysql-identity";
11
17
 
18
+ export { Database } from "./drizzle/mysql-database";
19
+
12
20
  export {
13
21
  coordinateMysqlAuthenticationAuthority as coordinateAuthenticationAuthority,
14
22
  coordinateMysqlPendingAuthentication as coordinatePendingAuthentication,
@@ -40,10 +48,22 @@ export {
40
48
  makeMysqlEmailSignInServices as makeEmailSignInServices,
41
49
  } from "./drizzle/mysql-emails";
42
50
 
43
- export {
44
- makeMysqlExternalIdentityServices as makeExternalIdentityServices,
45
- makeMysqlSubjectProvisioningServices as makeSubjectProvisioningServices,
46
- };
51
+ export const makeSubjectProvisioningServices = <
52
+ Subject extends AnyMySqlTable,
53
+ Identifier extends AnyMySqlTable,
54
+ Request extends AnyMySqlTable,
55
+ NativeId,
56
+ >(
57
+ mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
58
+ ) => makeMysqlSubjectProvisioningServices(mapping);
59
+
60
+ export const makeExternalIdentityServices = <
61
+ Subject extends AnyMySqlTable,
62
+ External extends AnyMySqlTable,
63
+ NativeId,
64
+ >(
65
+ mapping: ExternalIdentityTables<Subject, External, NativeId>,
66
+ ) => makeMysqlExternalIdentityServices(mapping);
47
67
 
48
68
  export const commitMode = "interactive" as const;
49
69
 
@@ -54,9 +74,8 @@ export const makeIdentityServices = <
54
74
  Request extends AnyMySqlTable,
55
75
  NativeId,
56
76
  >(
57
- database: EffectMysql2Database<AnyRelations>,
58
77
  mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
59
- ) => makeMysqlIdentityServices(database, mapping);
78
+ ) => makeMysqlIdentityServices(mapping);
60
79
 
61
80
  export {
62
81
  makeMysqlSessionStepUpServices as makeSessionStepUpServices,
@@ -75,9 +94,10 @@ import { mysqlOAuthTransaction } from "./drizzle/oauth-mysql";
75
94
  import { sqlClientOAuthStandaloneGuard } from "./drizzle/oauth-target";
76
95
 
77
96
  const oauthTarget = makeOAuthTarget<
97
+ Database,
78
98
  EffectMysql2Database<AnyRelations>,
79
99
  AnyMySqlTable<{ dialect: "mysql" }>
80
- >({
100
+ >(Database, {
81
101
  mode: "interactive",
82
102
  dialect: "mysql",
83
103
  locking: true,
@@ -106,9 +126,10 @@ import { sqlClientPasskeyStandaloneGuard } from "./drizzle/passkey-target";
106
126
  import { mysqlTransaction } from "./drizzle/transaction-mysql";
107
127
 
108
128
  const passkeyTarget = makePasskeyTarget<
129
+ Database,
109
130
  EffectMysql2Database<AnyRelations>,
110
131
  AnyMySqlTable<{ dialect: "mysql" }>
111
- >({
132
+ >(Database, {
112
133
  mode: "interactive",
113
134
  dialect: "mysql",
114
135
  locking: true,
@@ -133,9 +154,10 @@ import { unavailable as totpUnavailable } from "./drizzle/totp-state";
133
154
  import { makeTotpTarget, sqlClientTotpStandaloneGuard } from "./drizzle/totp-target";
134
155
 
135
156
  const totpTarget = makeTotpTarget<
157
+ Database,
136
158
  EffectMysql2Database<AnyRelations>,
137
159
  AnyMySqlTable<{ dialect: "mysql" }>
138
- >({
160
+ >(Database, {
139
161
  mode: "interactive",
140
162
  dialect: "mysql",
141
163
  locking: true,
@@ -149,9 +171,10 @@ import { unavailable as phoneUnavailable } from "./drizzle/phone-state";
149
171
  import { makePhoneTarget, sqlClientPhoneStandaloneGuard } from "./drizzle/phone-target";
150
172
 
151
173
  const phoneTarget = makePhoneTarget<
174
+ Database,
152
175
  EffectMysql2Database<AnyRelations>,
153
176
  AnyMySqlTable<{ dialect: "mysql" }>
154
- >({
177
+ >(Database, {
155
178
  mode: "interactive",
156
179
  dialect: "mysql",
157
180
  locking: true,
@@ -160,3 +183,6 @@ const phoneTarget = makePhoneTarget<
160
183
  });
161
184
 
162
185
  export const { makePhonePersistenceServices, coordinatePhonePersistence } = phoneTarget;
186
+
187
+ /** Construct Drizzle from the driver's SQL-client Layer. */
188
+ export const databaseLayer = Layer.effect(Database, makeWithDefaults({}));
package/src/Pglite.ts CHANGED
@@ -1,15 +1,22 @@
1
1
  import type { AnyRelations } from "drizzle-orm";
2
2
  import { type EffectPgDatabase, makeWithDefaults } from "drizzle-orm/effect-pglite";
3
3
  import type { AnyPgTable } from "drizzle-orm/pg-core";
4
- import { Effect } from "effect";
5
-
6
- import type { IdentityTables } from "./drizzle/model";
4
+ import { Effect, Layer } from "effect";
5
+
6
+ import type {
7
+ IdentityTables,
8
+ SubjectProvisioningTables,
9
+ ExternalIdentityTables,
10
+ } from "./drizzle/model";
11
+ import { Database } from "./drizzle/pg-database";
7
12
  import {
8
13
  makePgExternalIdentityServices,
9
14
  makePgIdentityServices,
10
15
  makePgSubjectProvisioningServices,
11
16
  } from "./drizzle/pg-identity";
12
17
 
18
+ export { Database } from "./drizzle/pg-database";
19
+
13
20
  export {
14
21
  coordinatePgAuthenticationAuthority as coordinateAuthenticationAuthority,
15
22
  coordinatePgPendingAuthentication as coordinatePendingAuthentication,
@@ -41,10 +48,22 @@ export {
41
48
  makePgEmailSignInServices as makeEmailSignInServices,
42
49
  } from "./drizzle/pg-emails";
43
50
 
44
- export {
45
- makePgExternalIdentityServices as makeExternalIdentityServices,
46
- makePgSubjectProvisioningServices as makeSubjectProvisioningServices,
47
- };
51
+ export const makeSubjectProvisioningServices = <
52
+ Subject extends AnyPgTable,
53
+ Identifier extends AnyPgTable,
54
+ Request extends AnyPgTable,
55
+ NativeId,
56
+ >(
57
+ mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
58
+ ) => makePgSubjectProvisioningServices(mapping);
59
+
60
+ export const makeExternalIdentityServices = <
61
+ Subject extends AnyPgTable,
62
+ External extends AnyPgTable,
63
+ NativeId,
64
+ >(
65
+ mapping: ExternalIdentityTables<Subject, External, NativeId>,
66
+ ) => makePgExternalIdentityServices(mapping);
48
67
 
49
68
  export const commitMode = "interactive" as const;
50
69
 
@@ -55,9 +74,8 @@ export const makeIdentityServices = <
55
74
  Request extends AnyPgTable,
56
75
  NativeId,
57
76
  >(
58
- database: EffectPgDatabase<AnyRelations>,
59
77
  mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
60
- ) => makePgIdentityServices(database, mapping);
78
+ ) => makePgIdentityServices(mapping);
61
79
 
62
80
  export {
63
81
  makePgSessionStepUpServices as makeSessionStepUpServices,
@@ -74,7 +92,11 @@ export { passwordPreparedPersistenceLayer } from "./drizzle/password-prepared-ta
74
92
  import { makeOAuthTarget } from "./drizzle/oauth-drivers";
75
93
  import { sqlClientOAuthStandaloneGuard } from "./drizzle/oauth-target";
76
94
 
77
- const oauthTarget = makeOAuthTarget<EffectPgDatabase<AnyRelations>, AnyPgTable<{ dialect: "pg" }>>({
95
+ const oauthTarget = makeOAuthTarget<
96
+ Database,
97
+ EffectPgDatabase<AnyRelations>,
98
+ AnyPgTable<{ dialect: "pg" }>
99
+ >(Database, {
78
100
  mode: "interactive",
79
101
  dialect: "pg",
80
102
  locking: true,
@@ -100,9 +122,10 @@ import { makePasskeyTarget } from "./drizzle/passkey-drivers";
100
122
  import { sqlClientPasskeyStandaloneGuard } from "./drizzle/passkey-target";
101
123
 
102
124
  const passkeyTarget = makePasskeyTarget<
125
+ Database,
103
126
  EffectPgDatabase<AnyRelations>,
104
127
  AnyPgTable<{ dialect: "pg" }>
105
- >({
128
+ >(Database, {
106
129
  mode: "interactive",
107
130
  dialect: "pg",
108
131
  locking: true,
@@ -124,7 +147,11 @@ export const {
124
147
 
125
148
  import { makeTotpTarget, sqlClientTotpStandaloneGuard } from "./drizzle/totp-target";
126
149
 
127
- const totpTarget = makeTotpTarget<EffectPgDatabase<AnyRelations>, AnyPgTable<{ dialect: "pg" }>>({
150
+ const totpTarget = makeTotpTarget<
151
+ Database,
152
+ EffectPgDatabase<AnyRelations>,
153
+ AnyPgTable<{ dialect: "pg" }>
154
+ >(Database, {
128
155
  mode: "interactive",
129
156
  dialect: "pg",
130
157
  locking: true,
@@ -135,7 +162,11 @@ export const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTa
135
162
 
136
163
  import { makePhoneTarget, sqlClientPhoneStandaloneGuard } from "./drizzle/phone-target";
137
164
 
138
- const phoneTarget = makePhoneTarget<EffectPgDatabase<AnyRelations>, AnyPgTable<{ dialect: "pg" }>>({
165
+ const phoneTarget = makePhoneTarget<
166
+ Database,
167
+ EffectPgDatabase<AnyRelations>,
168
+ AnyPgTable<{ dialect: "pg" }>
169
+ >(Database, {
139
170
  mode: "interactive",
140
171
  dialect: "pg",
141
172
  locking: true,
@@ -156,3 +187,6 @@ export const AuthPersistence = {
156
187
  ),
157
188
  ),
158
189
  };
190
+
191
+ /** Construct Drizzle from the driver's SQL-client Layer. */
192
+ export const databaseLayer = Layer.effect(Database, makeWithDefaults({}));
package/src/Postgres.ts CHANGED
@@ -1,15 +1,22 @@
1
1
  import type { AnyRelations } from "drizzle-orm";
2
2
  import { type EffectPgDatabase, makeWithDefaults } from "drizzle-orm/effect-postgres";
3
3
  import type { AnyPgTable } from "drizzle-orm/pg-core";
4
- import { Effect } from "effect";
5
-
6
- import type { IdentityTables } from "./drizzle/model";
4
+ import { Effect, Layer } from "effect";
5
+
6
+ import type {
7
+ IdentityTables,
8
+ SubjectProvisioningTables,
9
+ ExternalIdentityTables,
10
+ } from "./drizzle/model";
11
+ import { Database } from "./drizzle/pg-database";
7
12
  import {
8
13
  makePgExternalIdentityServices,
9
14
  makePgIdentityServices,
10
15
  makePgSubjectProvisioningServices,
11
16
  } from "./drizzle/pg-identity";
12
17
 
18
+ export { Database } from "./drizzle/pg-database";
19
+
13
20
  export {
14
21
  coordinatePgAuthenticationAuthority as coordinateAuthenticationAuthority,
15
22
  coordinatePgPendingAuthentication as coordinatePendingAuthentication,
@@ -41,10 +48,22 @@ export {
41
48
  makePgEmailSignInServices as makeEmailSignInServices,
42
49
  } from "./drizzle/pg-emails";
43
50
 
44
- export {
45
- makePgExternalIdentityServices as makeExternalIdentityServices,
46
- makePgSubjectProvisioningServices as makeSubjectProvisioningServices,
47
- };
51
+ export const makeSubjectProvisioningServices = <
52
+ Subject extends AnyPgTable,
53
+ Identifier extends AnyPgTable,
54
+ Request extends AnyPgTable,
55
+ NativeId,
56
+ >(
57
+ mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
58
+ ) => makePgSubjectProvisioningServices(mapping);
59
+
60
+ export const makeExternalIdentityServices = <
61
+ Subject extends AnyPgTable,
62
+ External extends AnyPgTable,
63
+ NativeId,
64
+ >(
65
+ mapping: ExternalIdentityTables<Subject, External, NativeId>,
66
+ ) => makePgExternalIdentityServices(mapping);
48
67
 
49
68
  export const commitMode = "interactive" as const;
50
69
 
@@ -55,9 +74,8 @@ export const makeIdentityServices = <
55
74
  Request extends AnyPgTable,
56
75
  NativeId,
57
76
  >(
58
- database: EffectPgDatabase<AnyRelations>,
59
77
  mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
60
- ) => makePgIdentityServices(database, mapping);
78
+ ) => makePgIdentityServices(mapping);
61
79
 
62
80
  export {
63
81
  makePgSessionStepUpServices as makeSessionStepUpServices,
@@ -74,7 +92,11 @@ export { passwordPreparedPersistenceLayer } from "./drizzle/password-prepared-ta
74
92
  import { makeOAuthTarget } from "./drizzle/oauth-drivers";
75
93
  import { sqlClientOAuthStandaloneGuard } from "./drizzle/oauth-target";
76
94
 
77
- const oauthTarget = makeOAuthTarget<EffectPgDatabase<AnyRelations>, AnyPgTable<{ dialect: "pg" }>>({
95
+ const oauthTarget = makeOAuthTarget<
96
+ Database,
97
+ EffectPgDatabase<AnyRelations>,
98
+ AnyPgTable<{ dialect: "pg" }>
99
+ >(Database, {
78
100
  mode: "interactive",
79
101
  dialect: "pg",
80
102
  locking: true,
@@ -100,9 +122,10 @@ import { makePasskeyTarget } from "./drizzle/passkey-drivers";
100
122
  import { sqlClientPasskeyStandaloneGuard } from "./drizzle/passkey-target";
101
123
 
102
124
  const passkeyTarget = makePasskeyTarget<
125
+ Database,
103
126
  EffectPgDatabase<AnyRelations>,
104
127
  AnyPgTable<{ dialect: "pg" }>
105
- >({
128
+ >(Database, {
106
129
  mode: "interactive",
107
130
  dialect: "pg",
108
131
  locking: true,
@@ -124,7 +147,11 @@ export const {
124
147
 
125
148
  import { makeTotpTarget, sqlClientTotpStandaloneGuard } from "./drizzle/totp-target";
126
149
 
127
- const totpTarget = makeTotpTarget<EffectPgDatabase<AnyRelations>, AnyPgTable<{ dialect: "pg" }>>({
150
+ const totpTarget = makeTotpTarget<
151
+ Database,
152
+ EffectPgDatabase<AnyRelations>,
153
+ AnyPgTable<{ dialect: "pg" }>
154
+ >(Database, {
128
155
  mode: "interactive",
129
156
  dialect: "pg",
130
157
  locking: true,
@@ -135,7 +162,11 @@ export const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTa
135
162
 
136
163
  import { makePhoneTarget, sqlClientPhoneStandaloneGuard } from "./drizzle/phone-target";
137
164
 
138
- const phoneTarget = makePhoneTarget<EffectPgDatabase<AnyRelations>, AnyPgTable<{ dialect: "pg" }>>({
165
+ const phoneTarget = makePhoneTarget<
166
+ Database,
167
+ EffectPgDatabase<AnyRelations>,
168
+ AnyPgTable<{ dialect: "pg" }>
169
+ >(Database, {
139
170
  mode: "interactive",
140
171
  dialect: "pg",
141
172
  locking: true,
@@ -156,3 +187,6 @@ export const AuthPersistence = {
156
187
  ),
157
188
  ),
158
189
  };
190
+
191
+ /** Construct Drizzle from the driver's SQL-client Layer. */
192
+ export const databaseLayer = Layer.effect(Database, makeWithDefaults({}));
package/src/SqliteBun.ts CHANGED
@@ -1,7 +1,18 @@
1
+ import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
1
2
  import type { AnyRelations } from "drizzle-orm";
2
3
  import { type EffectSQLiteBunDatabase, makeWithDefaults } from "drizzle-orm/effect-sqlite-bun";
3
4
  import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
4
- import { Effect } from "effect";
5
+ import { Context, Effect, Layer } from "effect";
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, EffectSQLiteBunDatabase<AnyRelations>>()(
11
+ "effect-auth/persistence-drizzle/SqliteBun/Database",
12
+ ) {}
13
+
14
+ /** Construct Drizzle from the driver's SQL-client Layer. */
15
+ export const databaseLayer = Layer.effect(Database, makeWithDefaults({}));
5
16
 
6
17
  import { sqlClientEmailStandaloneGuard } from "./drizzle/email-target";
7
18
  import type {
@@ -22,28 +33,34 @@ import { makeSqlitePasswordTarget, sqlitePasswordConfiguration } from "./drizzle
22
33
  import { makeSqliteProofTarget, sqliteProofConfiguration } from "./drizzle/sqlite-proofs";
23
34
  import { makeSqliteSessionTarget, sqliteSessionConfiguration } from "./drizzle/sqlite-sessions";
24
35
 
25
- const sessionTarget = makeSqliteSessionTarget<EffectSQLiteBunDatabase<AnyRelations>>((database) =>
26
- sqliteSessionConfiguration("interactive", sqlClientSessionStandaloneGuard(database)),
36
+ const sessionTarget = makeSqliteSessionTarget<Database, EffectSQLiteBunDatabase<AnyRelations>>(
37
+ Database,
38
+ (service) => sqliteSessionConfiguration("interactive", sqlClientSessionStandaloneGuard(service)),
27
39
  );
28
40
 
29
- const proofTarget = makeSqliteProofTarget<EffectSQLiteBunDatabase<AnyRelations>>((database) =>
30
- sqliteProofConfiguration("interactive", sqlClientProofStandaloneGuard(database)),
41
+ const proofTarget = makeSqliteProofTarget<Database, EffectSQLiteBunDatabase<AnyRelations>>(
42
+ Database,
43
+ (service) => sqliteProofConfiguration("interactive", sqlClientProofStandaloneGuard(service)),
31
44
  );
32
45
 
33
- const passwordTarget = makeSqlitePasswordTarget<EffectSQLiteBunDatabase<AnyRelations>>((database) =>
34
- sqlitePasswordConfiguration(
35
- "interactive",
36
- sqlClientPasswordStandaloneGuard(database),
37
- sqlClientProofStandaloneGuard(database),
38
- ),
46
+ const passwordTarget = makeSqlitePasswordTarget<Database, EffectSQLiteBunDatabase<AnyRelations>>(
47
+ Database,
48
+ (service) =>
49
+ sqlitePasswordConfiguration(
50
+ "interactive",
51
+ sqlClientPasswordStandaloneGuard(service),
52
+ sqlClientProofStandaloneGuard(service),
53
+ ),
39
54
  );
40
55
 
41
- const emailTarget = makeSqliteEmailTarget<EffectSQLiteBunDatabase<AnyRelations>>((database) =>
42
- sqliteEmailConfiguration(
43
- "interactive",
44
- sqlClientEmailStandaloneGuard(database),
45
- sqlClientProofStandaloneGuard(database),
46
- ),
56
+ const emailTarget = makeSqliteEmailTarget<Database, EffectSQLiteBunDatabase<AnyRelations>>(
57
+ Database,
58
+ (service) =>
59
+ sqliteEmailConfiguration(
60
+ "interactive",
61
+ sqlClientEmailStandaloneGuard(service),
62
+ sqlClientProofStandaloneGuard(service),
63
+ ),
47
64
  );
48
65
 
49
66
  export const {
@@ -85,9 +102,11 @@ export const makeIdentityServices = <
85
102
  Request extends AnySQLiteTable,
86
103
  NativeId,
87
104
  >(
88
- database: EffectSQLiteBunDatabase<AnyRelations>,
89
105
  mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
90
- ) => makeSqliteIdentityServices(database, mapping, "interactive");
106
+ ) =>
107
+ makeSqliteIdentityServices(mapping, "interactive").pipe(
108
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
109
+ );
91
110
 
92
111
  export const makeSubjectProvisioningServices = <
93
112
  Subject extends AnySQLiteTable,
@@ -95,28 +114,33 @@ export const makeSubjectProvisioningServices = <
95
114
  Request extends AnySQLiteTable,
96
115
  NativeId,
97
116
  >(
98
- database: EffectSQLiteBunDatabase<AnyRelations>,
99
117
  mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
100
- ) => makeSqliteSubjectProvisioningServices(database, mapping, "interactive");
118
+ ) =>
119
+ makeSqliteSubjectProvisioningServices(mapping, "interactive").pipe(
120
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
121
+ );
101
122
 
102
123
  export const makeExternalIdentityServices = <
103
124
  Subject extends AnySQLiteTable,
104
125
  External extends AnySQLiteTable,
105
126
  NativeId,
106
127
  >(
107
- database: EffectSQLiteBunDatabase<AnyRelations>,
108
128
  mapping: ExternalIdentityTables<Subject, External, NativeId>,
109
- ) => makeSqliteExternalIdentityServices(database, mapping);
129
+ ) =>
130
+ makeSqliteExternalIdentityServices(mapping).pipe(
131
+ Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)),
132
+ );
110
133
 
111
134
  import { makeSqlitePasswordPreparedTarget } from "./drizzle/sqlite-password-prepared";
112
135
 
113
136
  const passwordPreparedTarget = makeSqlitePasswordPreparedTarget<
137
+ Database,
114
138
  EffectSQLiteBunDatabase<AnyRelations>
115
- >((database) =>
139
+ >(Database, (service) =>
116
140
  sqlitePasswordConfiguration(
117
141
  "interactive",
118
- sqlClientPasswordStandaloneGuard(database),
119
- sqlClientProofStandaloneGuard(database),
142
+ sqlClientPasswordStandaloneGuard(service),
143
+ sqlClientProofStandaloneGuard(service),
120
144
  ),
121
145
  );
122
146
 
@@ -129,9 +153,10 @@ import { makeOAuthTarget } from "./drizzle/oauth-drivers";
129
153
  import { sqlClientOAuthStandaloneGuard } from "./drizzle/oauth-target";
130
154
 
131
155
  const oauthTarget = makeOAuthTarget<
156
+ Database,
132
157
  EffectSQLiteBunDatabase<AnyRelations>,
133
158
  AnySQLiteTable<{ dialect: "sqlite" }>
134
- >({
159
+ >(Database, {
135
160
  mode: "interactive",
136
161
  dialect: "sqlite",
137
162
  locking: false,
@@ -157,9 +182,10 @@ import { makePasskeyTarget } from "./drizzle/passkey-drivers";
157
182
  import { sqlClientPasskeyStandaloneGuard } from "./drizzle/passkey-target";
158
183
 
159
184
  const passkeyTarget = makePasskeyTarget<
185
+ Database,
160
186
  EffectSQLiteBunDatabase<AnyRelations>,
161
187
  AnySQLiteTable<{ dialect: "sqlite" }>
162
- >({
188
+ >(Database, {
163
189
  mode: "interactive",
164
190
  dialect: "sqlite",
165
191
  locking: false,
@@ -182,9 +208,10 @@ export const {
182
208
  import { makeTotpTarget, sqlClientTotpStandaloneGuard } from "./drizzle/totp-target";
183
209
 
184
210
  const totpTarget = makeTotpTarget<
211
+ Database,
185
212
  EffectSQLiteBunDatabase<AnyRelations>,
186
213
  AnySQLiteTable<{ dialect: "sqlite" }>
187
- >({
214
+ >(Database, {
188
215
  mode: "interactive",
189
216
  dialect: "sqlite",
190
217
  locking: false,
@@ -196,9 +223,10 @@ export const { makeTotpPersistenceServices, coordinateTotpPersistence } = totpTa
196
223
  import { makePhoneTarget, sqlClientPhoneStandaloneGuard } from "./drizzle/phone-target";
197
224
 
198
225
  const phoneTarget = makePhoneTarget<
226
+ Database,
199
227
  EffectSQLiteBunDatabase<AnyRelations>,
200
228
  AnySQLiteTable<{ dialect: "sqlite" }>
201
- >({
229
+ >(Database, {
202
230
  mode: "interactive",
203
231
  dialect: "sqlite",
204
232
  locking: false,