@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.
- package/dist/D1.d.mts +23 -18
- package/dist/D1.mjs +10 -4
- package/dist/D1.mjs.map +1 -1
- package/dist/Libsql.d.mts +58 -53
- package/dist/Libsql.mjs +20 -15
- package/dist/Libsql.mjs.map +1 -1
- package/dist/Mysql2.d.mts +58 -46
- package/dist/Mysql2.mjs +13 -6
- package/dist/Mysql2.mjs.map +1 -1
- package/dist/Pglite.d.mts +52 -41
- package/dist/Pglite.mjs +12 -7
- package/dist/Pglite.mjs.map +1 -1
- package/dist/Postgres.d.mts +59 -48
- package/dist/Postgres.mjs +12 -7
- package/dist/Postgres.mjs.map +1 -1
- package/dist/SqliteBun.d.mts +67 -62
- package/dist/SqliteBun.mjs +20 -14
- package/dist/SqliteBun.mjs.map +1 -1
- package/dist/SqliteDo.d.mts +58 -52
- package/dist/SqliteDo.mjs +26 -14
- package/dist/SqliteDo.mjs.map +1 -1
- package/dist/SqliteNode.d.mts +58 -53
- package/dist/SqliteNode.mjs +20 -14
- package/dist/SqliteNode.mjs.map +1 -1
- package/dist/SqliteWasm.d.mts +58 -53
- package/dist/SqliteWasm.mjs +20 -14
- package/dist/SqliteWasm.mjs.map +1 -1
- package/dist/drizzle/d1-database.d.mts +11 -0
- package/dist/drizzle/d1-database.mjs +8 -0
- package/dist/drizzle/d1-database.mjs.map +1 -0
- package/dist/drizzle/d1-emails.d.mts +8 -7
- package/dist/drizzle/d1-emails.mjs +7 -4
- package/dist/drizzle/d1-emails.mjs.map +1 -1
- package/dist/drizzle/d1-identity.mjs +12 -9
- package/dist/drizzle/d1-identity.mjs.map +1 -1
- package/dist/drizzle/d1-oauth.d.mts +10 -9
- package/dist/drizzle/d1-oauth.mjs +7 -4
- package/dist/drizzle/d1-oauth.mjs.map +1 -1
- package/dist/drizzle/d1-passkey.d.mts +3 -14
- package/dist/drizzle/d1-passkey.mjs +2 -1
- package/dist/drizzle/d1-passkey.mjs.map +1 -1
- package/dist/drizzle/d1-password-prepared.d.mts +4 -3
- package/dist/drizzle/d1-password-prepared.mjs +3 -1
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
- package/dist/drizzle/d1-passwords.d.mts +6 -5
- package/dist/drizzle/d1-passwords.mjs +11 -7
- package/dist/drizzle/d1-passwords.mjs.map +1 -1
- package/dist/drizzle/d1-phone.d.mts +3 -4
- package/dist/drizzle/d1-phone.mjs +2 -1
- package/dist/drizzle/d1-phone.mjs.map +1 -1
- package/dist/drizzle/d1-planning.d.mts +1 -1
- package/dist/drizzle/d1-proofs.d.mts +4 -3
- package/dist/drizzle/d1-proofs.mjs +3 -1
- package/dist/drizzle/d1-proofs.mjs.map +1 -1
- package/dist/drizzle/d1-sessions.d.mts +11 -10
- package/dist/drizzle/d1-sessions.mjs +15 -9
- package/dist/drizzle/d1-sessions.mjs.map +1 -1
- package/dist/drizzle/d1-totp.d.mts +3 -4
- package/dist/drizzle/d1-totp.mjs +2 -1
- package/dist/drizzle/d1-totp.mjs.map +1 -1
- package/dist/drizzle/email-registration.mjs +2 -1
- package/dist/drizzle/email-registration.mjs.map +1 -1
- package/dist/drizzle/email-target.d.mts +7 -6
- package/dist/drizzle/email-target.mjs +10 -10
- package/dist/drizzle/email-target.mjs.map +1 -1
- package/dist/drizzle/mysql-database.d.mts +8 -0
- package/dist/drizzle/mysql-database.mjs +8 -0
- package/dist/drizzle/mysql-database.mjs.map +1 -0
- package/dist/drizzle/mysql-emails.d.mts +7 -6
- package/dist/drizzle/mysql-emails.mjs +12 -8
- package/dist/drizzle/mysql-emails.mjs.map +1 -1
- package/dist/drizzle/mysql-identity.mjs +12 -9
- package/dist/drizzle/mysql-identity.mjs.map +1 -1
- package/dist/drizzle/mysql-password-prepared.d.mts +3 -2
- package/dist/drizzle/mysql-password-prepared.mjs +6 -2
- package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
- package/dist/drizzle/mysql-passwords.d.mts +6 -4
- package/dist/drizzle/mysql-passwords.mjs +11 -7
- package/dist/drizzle/mysql-passwords.mjs.map +1 -1
- package/dist/drizzle/mysql-proofs.d.mts +3 -2
- package/dist/drizzle/mysql-proofs.mjs +8 -4
- package/dist/drizzle/mysql-proofs.mjs.map +1 -1
- package/dist/drizzle/mysql-sessions.d.mts +11 -10
- package/dist/drizzle/mysql-sessions.mjs +16 -12
- package/dist/drizzle/mysql-sessions.mjs.map +1 -1
- package/dist/drizzle/native-database.mjs +10 -0
- package/dist/drizzle/native-database.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-drivers.mjs +7 -5
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-settlement.mjs +3 -2
- package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-sign-in.mjs +4 -3
- package/dist/drizzle/oauth-connected-sign-in.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-target.d.mts +6 -7
- package/dist/drizzle/oauth-connected-target.mjs +4 -5
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
- package/dist/drizzle/oauth-drivers.mjs +8 -6
- package/dist/drizzle/oauth-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-target.d.mts +12 -11
- package/dist/drizzle/oauth-target.mjs +13 -12
- package/dist/drizzle/oauth-target.mjs.map +1 -1
- package/dist/drizzle/passkey-drivers.mjs +8 -6
- package/dist/drizzle/passkey-drivers.mjs.map +1 -1
- package/dist/drizzle/passkey-write-drivers.mjs +5 -3
- package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
- package/dist/drizzle/passkey-write-target.d.mts +1 -1
- package/dist/drizzle/password-prepared-sql.mjs +2 -1
- package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
- package/dist/drizzle/password-prepared-target.d.mts +3 -2
- package/dist/drizzle/password-prepared-target.mjs +4 -3
- package/dist/drizzle/password-prepared-target.mjs.map +1 -1
- package/dist/drizzle/password-registration.mjs +2 -1
- package/dist/drizzle/password-registration.mjs.map +1 -1
- package/dist/drizzle/password-target.d.mts +5 -4
- package/dist/drizzle/password-target.mjs +8 -8
- package/dist/drizzle/password-target.mjs.map +1 -1
- package/dist/drizzle/pg-database.d.mts +9 -0
- package/dist/drizzle/pg-database.mjs +8 -0
- package/dist/drizzle/pg-database.mjs.map +1 -0
- package/dist/drizzle/pg-emails.d.mts +7 -6
- package/dist/drizzle/pg-emails.mjs +12 -8
- package/dist/drizzle/pg-emails.mjs.map +1 -1
- package/dist/drizzle/pg-identity.mjs +12 -9
- package/dist/drizzle/pg-identity.mjs.map +1 -1
- package/dist/drizzle/pg-password-prepared.d.mts +3 -2
- package/dist/drizzle/pg-password-prepared.mjs +6 -2
- package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
- package/dist/drizzle/pg-passwords.d.mts +6 -4
- package/dist/drizzle/pg-passwords.mjs +11 -7
- package/dist/drizzle/pg-passwords.mjs.map +1 -1
- package/dist/drizzle/pg-proofs.d.mts +3 -2
- package/dist/drizzle/pg-proofs.mjs +8 -4
- package/dist/drizzle/pg-proofs.mjs.map +1 -1
- package/dist/drizzle/pg-sessions.d.mts +11 -10
- package/dist/drizzle/pg-sessions.mjs +16 -12
- package/dist/drizzle/pg-sessions.mjs.map +1 -1
- package/dist/drizzle/phone-target.d.mts +4 -3
- package/dist/drizzle/phone-target.mjs +12 -11
- package/dist/drizzle/phone-target.mjs.map +1 -1
- package/dist/drizzle/proof-target.d.mts +3 -2
- package/dist/drizzle/proof-target.mjs +5 -5
- package/dist/drizzle/proof-target.mjs.map +1 -1
- package/dist/drizzle/session-sql.d.mts +1 -0
- package/dist/drizzle/session-target.d.mts +10 -8
- package/dist/drizzle/session-target.mjs +11 -11
- package/dist/drizzle/session-target.mjs.map +1 -1
- package/dist/drizzle/sqlite-emails.mjs +9 -5
- package/dist/drizzle/sqlite-emails.mjs.map +1 -1
- package/dist/drizzle/sqlite-identity.mjs +14 -11
- package/dist/drizzle/sqlite-identity.mjs.map +1 -1
- package/dist/drizzle/sqlite-password-prepared.mjs +7 -3
- package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
- package/dist/drizzle/sqlite-passwords.mjs +10 -6
- package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
- package/dist/drizzle/sqlite-proofs.mjs +7 -3
- package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
- package/dist/drizzle/sqlite-sessions.mjs +16 -12
- package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
- package/dist/drizzle/standalone-guard.d.mts +2 -0
- package/dist/drizzle/standalone-guard.mjs +8 -4
- package/dist/drizzle/standalone-guard.mjs.map +1 -1
- package/dist/drizzle/totp-target.d.mts +4 -3
- package/dist/drizzle/totp-target.mjs +31 -28
- package/dist/drizzle/totp-target.mjs.map +1 -1
- package/package.json +1 -1
- package/src/D1.ts +37 -10
- package/src/Libsql.ts +45 -17
- package/src/Mysql2.ts +39 -13
- package/src/Pglite.ts +47 -13
- package/src/Postgres.ts +47 -13
- package/src/SqliteBun.ts +58 -30
- package/src/SqliteDo.ts +61 -19
- package/src/SqliteNode.ts +55 -28
- package/src/SqliteWasm.ts +55 -28
- package/src/drizzle/d1-database.ts +10 -0
- package/src/drizzle/d1-emails.ts +84 -84
- package/src/drizzle/d1-identity.ts +17 -20
- package/src/drizzle/d1-oauth.ts +19 -8
- package/src/drizzle/d1-passkey.ts +5 -1
- package/src/drizzle/d1-password-prepared.ts +38 -37
- package/src/drizzle/d1-passwords.ts +118 -108
- package/src/drizzle/d1-phone.ts +5 -1
- package/src/drizzle/d1-proofs.ts +29 -30
- package/src/drizzle/d1-sessions.ts +51 -38
- package/src/drizzle/d1-totp.ts +5 -1
- package/src/drizzle/email-registration.ts +6 -2
- package/src/drizzle/email-target.ts +17 -19
- package/src/drizzle/mysql-database.ts +8 -0
- package/src/drizzle/mysql-emails.ts +28 -16
- package/src/drizzle/mysql-identity.ts +18 -21
- package/src/drizzle/mysql-password-prepared.ts +10 -8
- package/src/drizzle/mysql-passwords.ts +21 -9
- package/src/drizzle/mysql-proofs.ts +16 -5
- package/src/drizzle/mysql-sessions.ts +40 -17
- package/src/drizzle/native-database.ts +22 -0
- package/src/drizzle/oauth-connected-drivers.ts +18 -6
- package/src/drizzle/oauth-connected-settlement.ts +5 -3
- package/src/drizzle/oauth-connected-sign-in.ts +7 -3
- package/src/drizzle/oauth-connected-target.ts +16 -17
- package/src/drizzle/oauth-drivers.ts +26 -10
- package/src/drizzle/oauth-target.ts +30 -42
- package/src/drizzle/passkey-drivers.ts +21 -13
- package/src/drizzle/passkey-write-drivers.ts +11 -6
- package/src/drizzle/password-prepared-sql.ts +2 -4
- package/src/drizzle/password-prepared-target.ts +9 -6
- package/src/drizzle/password-registration.ts +7 -8
- package/src/drizzle/password-target.ts +19 -18
- package/src/drizzle/pg-database.ts +10 -0
- package/src/drizzle/pg-emails.ts +28 -16
- package/src/drizzle/pg-identity.ts +18 -22
- package/src/drizzle/pg-password-prepared.ts +10 -8
- package/src/drizzle/pg-passwords.ts +21 -9
- package/src/drizzle/pg-proofs.ts +16 -5
- package/src/drizzle/pg-sessions.ts +40 -17
- package/src/drizzle/phone-target.ts +22 -17
- package/src/drizzle/proof-target.ts +9 -12
- package/src/drizzle/session-target.ts +32 -50
- package/src/drizzle/sqlite-emails.ts +30 -13
- package/src/drizzle/sqlite-identity.ts +22 -42
- package/src/drizzle/sqlite-password-prepared.ts +23 -9
- package/src/drizzle/sqlite-passwords.ts +29 -15
- package/src/drizzle/sqlite-proofs.ts +28 -5
- package/src/drizzle/sqlite-sessions.ts +49 -23
- package/src/drizzle/standalone-guard.ts +18 -6
- package/src/drizzle/totp-target.ts +61 -60
- package/dist/drizzle/d1-identity.d.mts +0 -30
- package/dist/drizzle/mysql-identity.d.mts +0 -21
- package/dist/drizzle/pg-identity.d.mts +0 -22
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
type SessionSqlDatabase,
|
|
28
28
|
type SessionSqlOptions,
|
|
29
29
|
} from "./session-sql";
|
|
30
|
-
import { sqlClientStandaloneGuard } from "./standalone-guard";
|
|
30
|
+
import { sqlClientStandaloneGuard, type TransactionService } from "./standalone-guard";
|
|
31
31
|
|
|
32
32
|
export interface SessionTargetConfiguration {
|
|
33
33
|
readonly mode: "interactive" | "synchronous";
|
|
@@ -45,9 +45,9 @@ interface TransactionOwner<Transaction> {
|
|
|
45
45
|
type CoordinatorError<E> = E | SessionUnavailable | HookConfigurationError | SqlError.SqlError;
|
|
46
46
|
|
|
47
47
|
export const sqlClientSessionStandaloneGuard = (
|
|
48
|
-
|
|
48
|
+
service: TransactionService | undefined,
|
|
49
49
|
): Effect.Effect<void, SessionUnavailable> =>
|
|
50
|
-
sqlClientStandaloneGuard(
|
|
50
|
+
sqlClientStandaloneGuard(service, () => SessionUnavailable.make({}));
|
|
51
51
|
|
|
52
52
|
const options = (
|
|
53
53
|
configuration: SessionTargetConfiguration,
|
|
@@ -59,42 +59,35 @@ const options = (
|
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
export const makeTargetAuthenticationAuthorityServices = <Claims>(
|
|
62
|
-
database: any,
|
|
63
62
|
mapping: any,
|
|
64
63
|
configuration: SessionTargetConfiguration,
|
|
65
64
|
) =>
|
|
66
65
|
Effect.map(
|
|
67
|
-
makeSqlAuthenticationAuthority<Claims>(
|
|
66
|
+
makeSqlAuthenticationAuthority<Claims>(mapping, options(configuration)),
|
|
68
67
|
(authenticationAuthority) => ({ authenticationAuthority }),
|
|
69
68
|
);
|
|
70
69
|
|
|
71
70
|
export const makeTargetPendingAuthenticationServices = <Claims>(
|
|
72
|
-
database: any,
|
|
73
71
|
mapping: any,
|
|
74
72
|
configuration: SessionTargetConfiguration,
|
|
75
73
|
) =>
|
|
76
74
|
Effect.map(
|
|
77
|
-
makeSqlPendingAuthentication<Claims>(
|
|
75
|
+
makeSqlPendingAuthentication<Claims>(mapping, options(configuration)),
|
|
78
76
|
(pendingAuthentication) => ({ pendingAuthentication }),
|
|
79
77
|
);
|
|
80
78
|
|
|
81
79
|
export const makeTargetStatefulSessionServices = <Claims>(
|
|
82
|
-
database: any,
|
|
83
80
|
mapping: any,
|
|
84
81
|
configuration: SessionTargetConfiguration,
|
|
85
|
-
) => makeSqlStatefulSessions<Claims>(
|
|
82
|
+
) => makeSqlStatefulSessions<Claims>(mapping, options(configuration));
|
|
86
83
|
|
|
87
84
|
export const makeTargetSignedSessionValidityServices = (
|
|
88
|
-
database: any,
|
|
89
85
|
mapping: any,
|
|
90
86
|
configuration: SessionTargetConfiguration,
|
|
91
87
|
) =>
|
|
92
|
-
Effect.map(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
signedSessionValidity,
|
|
96
|
-
}),
|
|
97
|
-
);
|
|
88
|
+
Effect.map(makeSqlSignedValidity(mapping, options(configuration)), (signedSessionValidity) => ({
|
|
89
|
+
signedSessionValidity,
|
|
90
|
+
}));
|
|
98
91
|
|
|
99
92
|
/**
|
|
100
93
|
* The native transaction is the root commit owner. Interruption or owner
|
|
@@ -146,10 +139,8 @@ export const coordinateTargetAuthenticationAuthority = <Claims, Transaction, A,
|
|
|
146
139
|
configuration,
|
|
147
140
|
(transaction) =>
|
|
148
141
|
Effect.map(
|
|
149
|
-
makeSqlAuthenticationAuthority<Claims>(
|
|
150
|
-
transaction as unknown as SessionSqlDatabase,
|
|
151
|
-
mapping,
|
|
152
|
-
options(configuration, true),
|
|
142
|
+
makeSqlAuthenticationAuthority<Claims>(mapping, options(configuration, true)).pipe(
|
|
143
|
+
Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),
|
|
153
144
|
),
|
|
154
145
|
(authenticationAuthority) => ({ authenticationAuthority }),
|
|
155
146
|
),
|
|
@@ -170,10 +161,8 @@ export const coordinateTargetPendingAuthentication = <Claims, Transaction, A, E,
|
|
|
170
161
|
configuration,
|
|
171
162
|
(transaction) =>
|
|
172
163
|
Effect.map(
|
|
173
|
-
makeSqlPendingAuthentication<Claims>(
|
|
174
|
-
transaction as unknown as SessionSqlDatabase,
|
|
175
|
-
mapping,
|
|
176
|
-
options(configuration, true),
|
|
164
|
+
makeSqlPendingAuthentication<Claims>(mapping, options(configuration, true)).pipe(
|
|
165
|
+
Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),
|
|
177
166
|
),
|
|
178
167
|
(pendingAuthentication) => ({ pendingAuthentication }),
|
|
179
168
|
),
|
|
@@ -196,10 +185,8 @@ export const coordinateTargetStatefulSessions = <Claims, Transaction, A, E, R>(
|
|
|
196
185
|
database,
|
|
197
186
|
configuration,
|
|
198
187
|
(transaction) =>
|
|
199
|
-
makeSqlStatefulSessions<Claims>(
|
|
200
|
-
transaction as unknown as SessionSqlDatabase,
|
|
201
|
-
mapping,
|
|
202
|
-
options(configuration, true),
|
|
188
|
+
makeSqlStatefulSessions<Claims>(mapping, options(configuration, true)).pipe(
|
|
189
|
+
Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),
|
|
203
190
|
),
|
|
204
191
|
owner,
|
|
205
192
|
);
|
|
@@ -218,23 +205,21 @@ export const coordinateTargetSignedSessionValidity = <Transaction, A, E, R>(
|
|
|
218
205
|
configuration,
|
|
219
206
|
(transaction) =>
|
|
220
207
|
Effect.map(
|
|
221
|
-
makeSqlSignedValidity(
|
|
222
|
-
transaction as unknown as SessionSqlDatabase,
|
|
223
|
-
mapping,
|
|
224
|
-
options(configuration, true),
|
|
208
|
+
makeSqlSignedValidity(mapping, options(configuration, true)).pipe(
|
|
209
|
+
Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),
|
|
225
210
|
),
|
|
226
211
|
(signedSessionValidity) => ({ signedSessionValidity }),
|
|
227
212
|
),
|
|
228
213
|
owner,
|
|
229
214
|
);
|
|
230
215
|
|
|
231
|
-
export const authenticationAuthorityLayer = (
|
|
216
|
+
export const authenticationAuthorityLayer = <E, R>(
|
|
232
217
|
services: Effect.Effect<
|
|
233
218
|
{
|
|
234
219
|
readonly authenticationAuthority: AuthenticationAuthority["Service"];
|
|
235
220
|
},
|
|
236
|
-
|
|
237
|
-
|
|
221
|
+
E,
|
|
222
|
+
R
|
|
238
223
|
>,
|
|
239
224
|
) =>
|
|
240
225
|
Layer.effect(
|
|
@@ -242,7 +227,7 @@ export const authenticationAuthorityLayer = (
|
|
|
242
227
|
Effect.map(services, (value) => value.authenticationAuthority),
|
|
243
228
|
);
|
|
244
229
|
|
|
245
|
-
export const statefulSessionLayers = <Claims>(
|
|
230
|
+
export const statefulSessionLayers = <Claims, E, R>(
|
|
246
231
|
module: {
|
|
247
232
|
readonly StatefulSessionPersistence: any;
|
|
248
233
|
readonly SessionRepository: any;
|
|
@@ -252,8 +237,8 @@ export const statefulSessionLayers = <Claims>(
|
|
|
252
237
|
readonly statefulSessionPersistence: StatefulSessionPersistence<Claims>;
|
|
253
238
|
readonly sessionRepository: SessionRepository;
|
|
254
239
|
},
|
|
255
|
-
|
|
256
|
-
|
|
240
|
+
E,
|
|
241
|
+
R
|
|
257
242
|
>,
|
|
258
243
|
) =>
|
|
259
244
|
Layer.merge(
|
|
@@ -267,14 +252,14 @@ export const statefulSessionLayers = <Claims>(
|
|
|
267
252
|
),
|
|
268
253
|
);
|
|
269
254
|
|
|
270
|
-
export const pendingAuthenticationLayer = <Claims>(
|
|
255
|
+
export const pendingAuthenticationLayer = <Claims, E, R>(
|
|
271
256
|
module: { readonly PendingAuthentication: any },
|
|
272
257
|
services: Effect.Effect<
|
|
273
258
|
{
|
|
274
259
|
readonly pendingAuthentication: PendingAuthentication<Claims>;
|
|
275
260
|
},
|
|
276
|
-
|
|
277
|
-
|
|
261
|
+
E,
|
|
262
|
+
R
|
|
278
263
|
>,
|
|
279
264
|
) =>
|
|
280
265
|
Layer.effect(
|
|
@@ -282,14 +267,14 @@ export const pendingAuthenticationLayer = <Claims>(
|
|
|
282
267
|
Effect.map(services, (value) => value.pendingAuthentication),
|
|
283
268
|
);
|
|
284
269
|
|
|
285
|
-
export const signedSessionValidityLayer = (
|
|
270
|
+
export const signedSessionValidityLayer = <E, R>(
|
|
286
271
|
module: { readonly SignedSessionValidity: any },
|
|
287
272
|
services: Effect.Effect<
|
|
288
273
|
{
|
|
289
274
|
readonly signedSessionValidity: SignedSessionValidity;
|
|
290
275
|
},
|
|
291
|
-
|
|
292
|
-
|
|
276
|
+
E,
|
|
277
|
+
R
|
|
293
278
|
>,
|
|
294
279
|
) =>
|
|
295
280
|
Layer.effect(
|
|
@@ -298,13 +283,12 @@ export const signedSessionValidityLayer = (
|
|
|
298
283
|
);
|
|
299
284
|
|
|
300
285
|
export const makeTargetSessionStepUpServices = <Claims, Id>(
|
|
301
|
-
database: any,
|
|
302
286
|
mapping: any,
|
|
303
287
|
target: Context.Service<Id, SessionStepUpPersistence<Claims>>,
|
|
304
288
|
configuration: SessionTargetConfiguration,
|
|
305
289
|
) =>
|
|
306
290
|
Effect.map(
|
|
307
|
-
makeSqlSessionStepUp<Claims>(
|
|
291
|
+
makeSqlSessionStepUp<Claims>(mapping, options(configuration)),
|
|
308
292
|
(sessionStepUpPersistence) => ({
|
|
309
293
|
sessionStepUpPersistence: target.of(sessionStepUpPersistence),
|
|
310
294
|
}),
|
|
@@ -325,10 +309,8 @@ export const coordinateTargetSessionStepUp = <Claims, Id, Transaction, A, E, R>(
|
|
|
325
309
|
configuration,
|
|
326
310
|
(transaction) =>
|
|
327
311
|
Effect.map(
|
|
328
|
-
makeSqlSessionStepUp<Claims>(
|
|
329
|
-
transaction as unknown as SessionSqlDatabase,
|
|
330
|
-
mapping,
|
|
331
|
-
options(configuration, true),
|
|
312
|
+
makeSqlSessionStepUp<Claims>(mapping, options(configuration, true)).pipe(
|
|
313
|
+
Effect.provideService(CurrentSessionSql, transaction as unknown as SessionSqlDatabase),
|
|
332
314
|
),
|
|
333
315
|
(sessionStepUpPersistence) => ({
|
|
334
316
|
sessionStepUpPersistence: target.of(sessionStepUpPersistence),
|
|
@@ -17,6 +17,7 @@ import type {
|
|
|
17
17
|
EmailSignInMapping,
|
|
18
18
|
} from "./email-model";
|
|
19
19
|
import type { EmailRegistrationAuthority } from "./email-registration";
|
|
20
|
+
import { CurrentEmailSql } from "./email-sql";
|
|
20
21
|
import type { EmailSqlQuery } from "./email-sql";
|
|
21
22
|
import {
|
|
22
23
|
coordinateTargetEmailAddress,
|
|
@@ -26,8 +27,14 @@ import {
|
|
|
26
27
|
makeTargetEmailSignInServices,
|
|
27
28
|
type EmailTargetConfiguration,
|
|
28
29
|
} from "./email-target";
|
|
30
|
+
import { nativeDatabase } from "./native-database";
|
|
29
31
|
import type { ProofPersistenceMapping } from "./proof-model";
|
|
30
32
|
import type { ProofSqlQuery } from "./proof-sql";
|
|
33
|
+
import {
|
|
34
|
+
type TransactionService,
|
|
35
|
+
acquireTransactionService,
|
|
36
|
+
transactionService,
|
|
37
|
+
} from "./standalone-guard";
|
|
31
38
|
import type { SuppliedService } from "./SuppliedService";
|
|
32
39
|
|
|
33
40
|
export type SqliteEmailDatabase =
|
|
@@ -73,13 +80,24 @@ export const sqliteEmailConfiguration = (
|
|
|
73
80
|
});
|
|
74
81
|
|
|
75
82
|
export const makeSqliteEmailTarget = <
|
|
83
|
+
DatabaseId,
|
|
76
84
|
D extends SqliteEmailDatabase,
|
|
77
85
|
Synchronous extends boolean = false,
|
|
78
86
|
>(
|
|
79
|
-
|
|
87
|
+
databaseService: Context.Service<DatabaseId, D>,
|
|
88
|
+
configuration:
|
|
89
|
+
| EmailTargetConfiguration
|
|
90
|
+
| ((service: TransactionService | undefined) => EmailTargetConfiguration),
|
|
80
91
|
) => {
|
|
81
92
|
const configurationFor = (database: D) =>
|
|
82
|
-
typeof configuration === "function"
|
|
93
|
+
typeof configuration === "function"
|
|
94
|
+
? configuration(transactionService(database))
|
|
95
|
+
: configuration;
|
|
96
|
+
|
|
97
|
+
const standaloneConfiguration =
|
|
98
|
+
typeof configuration === "function"
|
|
99
|
+
? Effect.map(acquireTransactionService(databaseService), configuration)
|
|
100
|
+
: Effect.succeed(configuration);
|
|
83
101
|
|
|
84
102
|
function coordinateEmailAddress<
|
|
85
103
|
Database extends D,
|
|
@@ -325,9 +343,11 @@ export const makeSqliteEmailTarget = <
|
|
|
325
343
|
C extends AnySQLiteTable,
|
|
326
344
|
NativeId,
|
|
327
345
|
>(
|
|
328
|
-
database: D,
|
|
329
346
|
mapping: EmailSignInMapping<S, I, C, NativeId>,
|
|
330
|
-
) =>
|
|
347
|
+
) =>
|
|
348
|
+
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
349
|
+
makeTargetEmailSignInServices(mapping, configuration),
|
|
350
|
+
).pipe(Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService))),
|
|
331
351
|
makeEmailAddressServices: <
|
|
332
352
|
S extends AnySQLiteTable,
|
|
333
353
|
I extends AnySQLiteTable,
|
|
@@ -336,11 +356,12 @@ export const makeSqliteEmailTarget = <
|
|
|
336
356
|
M extends AnySQLiteTable,
|
|
337
357
|
NativeId,
|
|
338
358
|
>(
|
|
339
|
-
database: D,
|
|
340
359
|
mapping: EmailAddressMapping<S, I, C, AC, M, NativeId>,
|
|
341
360
|
proofMapping: ProofMapping,
|
|
342
361
|
) =>
|
|
343
|
-
|
|
362
|
+
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
363
|
+
makeTargetEmailAddressServices(mapping, proofMapping, configuration),
|
|
364
|
+
).pipe(Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService))),
|
|
344
365
|
coordinateEmailAddress,
|
|
345
366
|
makeEmailRegistrationServices: <
|
|
346
367
|
Registration,
|
|
@@ -351,16 +372,12 @@ export const makeSqliteEmailTarget = <
|
|
|
351
372
|
Rq extends AnySQLiteTable,
|
|
352
373
|
NativeId,
|
|
353
374
|
>(
|
|
354
|
-
database: D,
|
|
355
375
|
mapping: EmailRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
|
|
356
376
|
proofMapping: ProofMapping,
|
|
357
377
|
) =>
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
proofMapping,
|
|
362
|
-
configurationFor(database),
|
|
363
|
-
),
|
|
378
|
+
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
379
|
+
makeTargetEmailRegistrationServices<Registration>(mapping, proofMapping, configuration),
|
|
380
|
+
).pipe(Effect.provideServiceEffect(CurrentEmailSql, nativeDatabase(databaseService))),
|
|
364
381
|
coordinateEmailRegistration,
|
|
365
382
|
};
|
|
366
383
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
1
2
|
import {
|
|
2
3
|
ExternalIdentityMutation,
|
|
3
4
|
type ExternalIdentity,
|
|
@@ -10,7 +11,7 @@ import {
|
|
|
10
11
|
import { reportPersistenceFailure } from "@yielded/auth/Persistence";
|
|
11
12
|
import type { SubjectId } from "@yielded/auth/Schema";
|
|
12
13
|
/* oxlint-disable no-explicit-any -- Drizzle generic query types are narrowed at this technology boundary. */
|
|
13
|
-
import { and, eq
|
|
14
|
+
import { and, eq } from "drizzle-orm";
|
|
14
15
|
import type { QueryEffectHKTBase } from "drizzle-orm/effect-core";
|
|
15
16
|
import type { AnySQLiteTable, SQLiteColumn } from "drizzle-orm/sqlite-core";
|
|
16
17
|
import type { SQLiteEffectDatabase } from "drizzle-orm/sqlite-core/effect/db";
|
|
@@ -27,16 +28,7 @@ import {
|
|
|
27
28
|
} from "./model";
|
|
28
29
|
|
|
29
30
|
type ClosedQueryEffectHKT = QueryEffectHKTBase & { readonly context: never };
|
|
30
|
-
type
|
|
31
|
-
HKT,
|
|
32
|
-
RunResult,
|
|
33
|
-
AnyRelations
|
|
34
|
-
>;
|
|
35
|
-
type RuntimeDatabase<HKT extends ClosedQueryEffectHKT, RunResult> = SQLiteEffectDatabase<
|
|
36
|
-
HKT,
|
|
37
|
-
RunResult,
|
|
38
|
-
any
|
|
39
|
-
>;
|
|
31
|
+
type RuntimeDatabase = SQLiteEffectDatabase<ClosedQueryEffectHKT, unknown, any>;
|
|
40
32
|
const unavailable = () => IdentityUnavailable.make();
|
|
41
33
|
const isIdentityFailure = Schema.is(Schema.Union([IdentityConflict, IdentityUnavailable]));
|
|
42
34
|
|
|
@@ -49,19 +41,18 @@ const mapUnavailable = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
|
49
41
|
),
|
|
50
42
|
);
|
|
51
43
|
|
|
52
|
-
export const makeSqliteSubjectProvisioningServices = <
|
|
44
|
+
export const makeSqliteSubjectProvisioningServices = Effect.fnUntraced(function* <
|
|
53
45
|
Subject extends AnySQLiteTable,
|
|
54
46
|
Identifier extends AnySQLiteTable,
|
|
55
47
|
Request extends AnySQLiteTable,
|
|
56
48
|
NativeId,
|
|
57
|
-
HKT extends ClosedQueryEffectHKT = ClosedQueryEffectHKT,
|
|
58
|
-
RunResult = unknown,
|
|
59
49
|
>(
|
|
60
|
-
database: Database<HKT, RunResult>,
|
|
61
50
|
mapping: SubjectProvisioningTables<Subject, Identifier, Request, NativeId>,
|
|
62
51
|
mode: "interactive" | "synchronous",
|
|
63
|
-
)
|
|
64
|
-
const
|
|
52
|
+
) {
|
|
53
|
+
const database = yield* NativeDatabase;
|
|
54
|
+
|
|
55
|
+
const db = database as unknown as RuntimeDatabase;
|
|
65
56
|
const requestTable = mapping.provisioningRequest.table;
|
|
66
57
|
|
|
67
58
|
const requestIdColumn = column(
|
|
@@ -158,14 +149,7 @@ export const makeSqliteSubjectProvisioningServices = <
|
|
|
158
149
|
|
|
159
150
|
const nativeId = yield* attempt.pipe(
|
|
160
151
|
Effect.catchCause(
|
|
161
|
-
(
|
|
162
|
-
cause,
|
|
163
|
-
): Effect.Effect<
|
|
164
|
-
NativeId,
|
|
165
|
-
| Effect.Error<typeof attempt>
|
|
166
|
-
| Effect.Error<ReturnType<typeof findReceipt>>
|
|
167
|
-
| IdentityConflict
|
|
168
|
-
> => {
|
|
152
|
+
(cause): Effect.Effect<NativeId, Effect.Error<typeof attempt> | IdentityConflict> => {
|
|
169
153
|
if (
|
|
170
154
|
cause.reasons.length === 0 ||
|
|
171
155
|
!cause.reasons.every(
|
|
@@ -207,19 +191,16 @@ export const makeSqliteSubjectProvisioningServices = <
|
|
|
207
191
|
}, mapUnavailable);
|
|
208
192
|
|
|
209
193
|
return { subjectProvisioner: SubjectProvisioner.of({ provision }) } as const;
|
|
210
|
-
};
|
|
194
|
+
});
|
|
211
195
|
|
|
212
|
-
export const makeSqliteExternalIdentityServices = <
|
|
196
|
+
export const makeSqliteExternalIdentityServices = Effect.fnUntraced(function* <
|
|
213
197
|
Subject extends AnySQLiteTable,
|
|
214
198
|
External extends AnySQLiteTable,
|
|
215
199
|
NativeId,
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
database
|
|
220
|
-
mapping: ExternalIdentityTables<Subject, External, NativeId>,
|
|
221
|
-
) => {
|
|
222
|
-
const db = database as RuntimeDatabase<HKT, RunResult>;
|
|
200
|
+
>(mapping: ExternalIdentityTables<Subject, External, NativeId>) {
|
|
201
|
+
const database = yield* NativeDatabase;
|
|
202
|
+
|
|
203
|
+
const db = database as unknown as RuntimeDatabase;
|
|
223
204
|
const externalTable = mapping.externalIdentity.table;
|
|
224
205
|
|
|
225
206
|
const externalProviderColumn = column(
|
|
@@ -324,21 +305,20 @@ export const makeSqliteExternalIdentityServices = <
|
|
|
324
305
|
}, mapUnavailable);
|
|
325
306
|
|
|
326
307
|
return { externalIdentityMutation: ExternalIdentityMutation.of({ bind }) } as const;
|
|
327
|
-
};
|
|
308
|
+
});
|
|
328
309
|
|
|
329
|
-
export const makeSqliteIdentityServices = <
|
|
310
|
+
export const makeSqliteIdentityServices = Effect.fnUntraced(function* <
|
|
330
311
|
Subject extends AnySQLiteTable,
|
|
331
312
|
Identifier extends AnySQLiteTable,
|
|
332
313
|
External extends AnySQLiteTable,
|
|
333
314
|
Request extends AnySQLiteTable,
|
|
334
315
|
NativeId,
|
|
335
|
-
HKT extends ClosedQueryEffectHKT = ClosedQueryEffectHKT,
|
|
336
|
-
RunResult = unknown,
|
|
337
316
|
>(
|
|
338
|
-
database: Database<HKT, RunResult>,
|
|
339
317
|
mapping: IdentityTables<Subject, Identifier, External, Request, NativeId>,
|
|
340
318
|
mode: "interactive" | "synchronous",
|
|
341
|
-
)
|
|
342
|
-
|
|
343
|
-
|
|
319
|
+
) {
|
|
320
|
+
return {
|
|
321
|
+
...(yield* makeSqliteSubjectProvisioningServices(mapping, mode)),
|
|
322
|
+
...(yield* makeSqliteExternalIdentityServices(mapping)),
|
|
323
|
+
};
|
|
344
324
|
});
|
|
@@ -4,6 +4,7 @@ import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
|
4
4
|
import { Effect, Context } from "effect";
|
|
5
5
|
import type { SqlError } from "effect/sql/SqlError";
|
|
6
6
|
|
|
7
|
+
import { nativeDatabase } from "./native-database";
|
|
7
8
|
import type {
|
|
8
9
|
PasswordPreparedPersistenceMapping,
|
|
9
10
|
PasswordPreparedProofMapping,
|
|
@@ -12,21 +13,38 @@ import {
|
|
|
12
13
|
makeTargetPasswordPreparedPersistenceServices,
|
|
13
14
|
coordinateTargetPasswordPreparedPersistence,
|
|
14
15
|
} from "./password-prepared-target";
|
|
16
|
+
import { CurrentPasswordSql } from "./password-sql";
|
|
15
17
|
import type { PasswordTargetConfiguration } from "./password-target";
|
|
16
18
|
import type { SqlitePasswordDatabase } from "./sqlite-passwords";
|
|
19
|
+
import {
|
|
20
|
+
type TransactionService,
|
|
21
|
+
acquireTransactionService,
|
|
22
|
+
transactionService,
|
|
23
|
+
} from "./standalone-guard";
|
|
17
24
|
import type { SuppliedService } from "./SuppliedService";
|
|
18
25
|
type TransactionOf<D extends SqlitePasswordDatabase> = Parameters<
|
|
19
26
|
Parameters<D["transaction"]>[0]
|
|
20
27
|
>[0];
|
|
21
28
|
|
|
22
29
|
export const makeSqlitePasswordPreparedTarget = <
|
|
30
|
+
DatabaseId,
|
|
23
31
|
D extends SqlitePasswordDatabase,
|
|
24
32
|
Synchronous extends boolean = false,
|
|
25
33
|
>(
|
|
26
|
-
|
|
34
|
+
databaseService: Context.Service<DatabaseId, D>,
|
|
35
|
+
configuration:
|
|
36
|
+
| PasswordTargetConfiguration
|
|
37
|
+
| ((service: TransactionService | undefined) => PasswordTargetConfiguration),
|
|
27
38
|
) => {
|
|
28
39
|
const configurationFor = (database: D) =>
|
|
29
|
-
typeof configuration === "function"
|
|
40
|
+
typeof configuration === "function"
|
|
41
|
+
? configuration(transactionService(database))
|
|
42
|
+
: configuration;
|
|
43
|
+
|
|
44
|
+
const standaloneConfiguration =
|
|
45
|
+
typeof configuration === "function"
|
|
46
|
+
? Effect.map(acquireTransactionService(databaseService), configuration)
|
|
47
|
+
: Effect.succeed(configuration);
|
|
30
48
|
|
|
31
49
|
function coordinatePasswordPreparedPersistence<
|
|
32
50
|
Database extends D,
|
|
@@ -245,16 +263,12 @@ export const makeSqlitePasswordPreparedTarget = <
|
|
|
245
263
|
PCr extends AnySQLiteTable = AnySQLiteTable,
|
|
246
264
|
PNativeId = unknown,
|
|
247
265
|
>(
|
|
248
|
-
database: D,
|
|
249
266
|
mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, RS, CE, M, T, B, NativeId>,
|
|
250
267
|
proofMapping?: PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>,
|
|
251
268
|
) =>
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
configurationFor(database),
|
|
256
|
-
proofMapping,
|
|
257
|
-
),
|
|
269
|
+
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
270
|
+
makeTargetPasswordPreparedPersistenceServices(mapping, configuration, proofMapping),
|
|
271
|
+
).pipe(Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService))),
|
|
258
272
|
coordinatePasswordPreparedPersistence,
|
|
259
273
|
};
|
|
260
274
|
};
|
|
@@ -11,8 +11,10 @@ import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
|
11
11
|
import { Effect, Context } from "effect";
|
|
12
12
|
import type { SqlError } from "effect/sql/SqlError";
|
|
13
13
|
|
|
14
|
+
import { nativeDatabase } from "./native-database";
|
|
14
15
|
import type { PasswordPersistenceMapping, PasswordRegistrationMapping } from "./password-model";
|
|
15
16
|
import type { PasswordRegistrationAuthority } from "./password-registration";
|
|
17
|
+
import { CurrentPasswordSql } from "./password-sql";
|
|
16
18
|
import type { PasswordSqlQuery } from "./password-sql";
|
|
17
19
|
import {
|
|
18
20
|
coordinateTargetPasswordPersistence,
|
|
@@ -23,6 +25,11 @@ import {
|
|
|
23
25
|
} from "./password-target";
|
|
24
26
|
import type { ProofPersistenceMapping } from "./proof-model";
|
|
25
27
|
import type { ProofSqlQuery } from "./proof-sql";
|
|
28
|
+
import {
|
|
29
|
+
type TransactionService,
|
|
30
|
+
acquireTransactionService,
|
|
31
|
+
transactionService,
|
|
32
|
+
} from "./standalone-guard";
|
|
26
33
|
import type { SuppliedService } from "./SuppliedService";
|
|
27
34
|
|
|
28
35
|
export type SqlitePasswordDatabase =
|
|
@@ -79,7 +86,6 @@ export const makeSqlitePasswordPersistenceServices = <
|
|
|
79
86
|
M extends AnySQLiteTable,
|
|
80
87
|
NativeId,
|
|
81
88
|
>(
|
|
82
|
-
database: SqlitePasswordDatabase,
|
|
83
89
|
mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>,
|
|
84
90
|
configuration: PasswordTargetConfiguration,
|
|
85
91
|
proofMapping?: ProofPersistenceMapping<
|
|
@@ -96,7 +102,7 @@ export const makeSqlitePasswordPersistenceServices = <
|
|
|
96
102
|
any,
|
|
97
103
|
any
|
|
98
104
|
>,
|
|
99
|
-
) => makeTargetPasswordPersistenceServices(
|
|
105
|
+
) => makeTargetPasswordPersistenceServices(mapping, configuration, proofMapping);
|
|
100
106
|
|
|
101
107
|
export const coordinateSqlitePasswordPersistence = <
|
|
102
108
|
D extends SqlitePasswordDatabase,
|
|
@@ -142,10 +148,9 @@ export const makeSqlitePasswordRegistrationServices = <
|
|
|
142
148
|
Rq extends AnySQLiteTable,
|
|
143
149
|
NativeId,
|
|
144
150
|
>(
|
|
145
|
-
database: SqlitePasswordDatabase,
|
|
146
151
|
mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
|
|
147
152
|
configuration: PasswordTargetConfiguration,
|
|
148
|
-
) => makeTargetPasswordRegistrationServices<Registration>(
|
|
153
|
+
) => makeTargetPasswordRegistrationServices<Registration>(mapping, configuration);
|
|
149
154
|
|
|
150
155
|
export const coordinateSqlitePasswordRegistration = <
|
|
151
156
|
Registration,
|
|
@@ -176,13 +181,24 @@ export const coordinateSqlitePasswordRegistration = <
|
|
|
176
181
|
);
|
|
177
182
|
|
|
178
183
|
export const makeSqlitePasswordTarget = <
|
|
184
|
+
DatabaseId,
|
|
179
185
|
D extends SqlitePasswordDatabase,
|
|
180
186
|
Synchronous extends boolean = false,
|
|
181
187
|
>(
|
|
182
|
-
|
|
188
|
+
databaseService: Context.Service<DatabaseId, D>,
|
|
189
|
+
configuration:
|
|
190
|
+
| PasswordTargetConfiguration
|
|
191
|
+
| ((service: TransactionService | undefined) => PasswordTargetConfiguration),
|
|
183
192
|
) => {
|
|
184
193
|
const configurationFor = (database: D) =>
|
|
185
|
-
typeof configuration === "function"
|
|
194
|
+
typeof configuration === "function"
|
|
195
|
+
? configuration(transactionService(database))
|
|
196
|
+
: configuration;
|
|
197
|
+
|
|
198
|
+
const standaloneConfiguration =
|
|
199
|
+
typeof configuration === "function"
|
|
200
|
+
? Effect.map(acquireTransactionService(databaseService), configuration)
|
|
201
|
+
: Effect.succeed(configuration);
|
|
186
202
|
|
|
187
203
|
function coordinatePasswordPersistence<
|
|
188
204
|
Database extends D,
|
|
@@ -456,7 +472,6 @@ export const makeSqlitePasswordTarget = <
|
|
|
456
472
|
M extends AnySQLiteTable,
|
|
457
473
|
NativeId,
|
|
458
474
|
>(
|
|
459
|
-
database: D,
|
|
460
475
|
mapping: Mapping<S, I, C, AC, A, RS, CE, M, NativeId>,
|
|
461
476
|
proofMapping?: ProofPersistenceMapping<
|
|
462
477
|
any,
|
|
@@ -473,12 +488,9 @@ export const makeSqlitePasswordTarget = <
|
|
|
473
488
|
any
|
|
474
489
|
>,
|
|
475
490
|
) =>
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
configurationFor(database),
|
|
480
|
-
proofMapping,
|
|
481
|
-
),
|
|
491
|
+
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
492
|
+
makeSqlitePasswordPersistenceServices(mapping, configuration, proofMapping),
|
|
493
|
+
).pipe(Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService))),
|
|
482
494
|
coordinatePasswordPersistence,
|
|
483
495
|
makePasswordRegistrationServices: <
|
|
484
496
|
Registration,
|
|
@@ -489,9 +501,11 @@ export const makeSqlitePasswordTarget = <
|
|
|
489
501
|
Rq extends AnySQLiteTable,
|
|
490
502
|
NativeId,
|
|
491
503
|
>(
|
|
492
|
-
database: D,
|
|
493
504
|
mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
|
|
494
|
-
) =>
|
|
505
|
+
) =>
|
|
506
|
+
Effect.flatMap(standaloneConfiguration, (configuration) =>
|
|
507
|
+
makeSqlitePasswordRegistrationServices(mapping, configuration),
|
|
508
|
+
).pipe(Effect.provideServiceEffect(CurrentPasswordSql, nativeDatabase(databaseService))),
|
|
495
509
|
coordinatePasswordRegistration,
|
|
496
510
|
};
|
|
497
511
|
};
|