@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.
- package/dist/D1.d.mts +27 -22
- package/dist/D1.mjs +10 -4
- package/dist/D1.mjs.map +1 -1
- package/dist/Libsql.d.mts +66 -61
- 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 +43 -32
- 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 +58 -53
- package/dist/SqliteBun.mjs +20 -14
- package/dist/SqliteBun.mjs.map +1 -1
- package/dist/SqliteDo.d.mts +66 -60
- 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 +66 -61
- 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 +14 -13
- 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 +5 -2
- 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-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 +74 -76
- 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-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
|
@@ -56,6 +56,7 @@ import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
|
56
56
|
import { Cause, DateTime, Effect, Option, Predicate, Redacted, Schema, Context } from "effect";
|
|
57
57
|
import type { Statement } from "effect/sql/Statement";
|
|
58
58
|
|
|
59
|
+
import { Database as DatabaseService } from "./d1-database";
|
|
59
60
|
import { balancedD1And } from "./d1-generated-statement";
|
|
60
61
|
import { CurrentD1PlanningDatabase, makeD1Owner } from "./d1-planning";
|
|
61
62
|
import { compileD1ProofCompletionPlan, type D1ProtectedProofMutation } from "./d1-proofs";
|
|
@@ -1980,7 +1981,7 @@ const cleanupPlan = Effect.fn("Drizzle.cleanupPlan")(function* <A>(
|
|
|
1980
1981
|
};
|
|
1981
1982
|
});
|
|
1982
1983
|
|
|
1983
|
-
export const makeD1PasswordPersistenceServices = <
|
|
1984
|
+
export const makeD1PasswordPersistenceServices = Effect.fnUntraced(function* <
|
|
1984
1985
|
S extends AnySQLiteTable,
|
|
1985
1986
|
I extends AnySQLiteTable,
|
|
1986
1987
|
C extends AnySQLiteTable,
|
|
@@ -1991,7 +1992,6 @@ export const makeD1PasswordPersistenceServices = <
|
|
|
1991
1992
|
M extends AnySQLiteTable,
|
|
1992
1993
|
NativeId,
|
|
1993
1994
|
>(
|
|
1994
|
-
database: Database,
|
|
1995
1995
|
mapping: D1PasswordPersistenceMapping<S, I, C, AC, A, RS, CE, M, NativeId>,
|
|
1996
1996
|
proofMapping?: D1ProofPersistenceMapping<
|
|
1997
1997
|
any,
|
|
@@ -2007,62 +2007,62 @@ export const makeD1PasswordPersistenceServices = <
|
|
|
2007
2007
|
any,
|
|
2008
2008
|
any
|
|
2009
2009
|
>,
|
|
2010
|
-
)
|
|
2011
|
-
|
|
2012
|
-
const hooks = yield* LifecycleHooks;
|
|
2013
|
-
const plans = makePasswordPlans(mapping as unknown as Mapping, proofMapping);
|
|
2010
|
+
) {
|
|
2011
|
+
const database = yield* DatabaseService;
|
|
2014
2012
|
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
if (yield* hasCommitScope) return yield* unavailable();
|
|
2013
|
+
const hooks = yield* LifecycleHooks;
|
|
2014
|
+
const plans = makePasswordPlans(mapping as unknown as Mapping, proofMapping);
|
|
2018
2015
|
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
Effect.provideService(LifecycleHooks, hooks),
|
|
2023
|
-
);
|
|
2024
|
-
|
|
2025
|
-
const service: PasswordPersistence["Service"] = {
|
|
2026
|
-
admitAttempt: (input, prepare) =>
|
|
2027
|
-
run(plans.admitAttempt(input, prepare)).pipe(translateFailure),
|
|
2028
|
-
settleAttempt: (input, prepare) =>
|
|
2029
|
-
run(plans.settleAttempt(input, prepare)).pipe(translateFailure),
|
|
2030
|
-
readForSubject: (input) =>
|
|
2031
|
-
plans
|
|
2032
|
-
.readForSubject(input)
|
|
2033
|
-
.pipe(
|
|
2034
|
-
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2035
|
-
Effect.provideService(LifecycleHooks, hooks),
|
|
2036
|
-
translateFailure,
|
|
2037
|
-
),
|
|
2038
|
-
recoveryTarget: (input) =>
|
|
2039
|
-
plans
|
|
2040
|
-
.recoveryTarget(input)
|
|
2041
|
-
.pipe(
|
|
2042
|
-
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2043
|
-
Effect.provideService(LifecycleHooks, hooks),
|
|
2044
|
-
translateFailure,
|
|
2045
|
-
),
|
|
2046
|
-
addIfAbsent: (input, prepare) =>
|
|
2047
|
-
run(plans.addIfAbsent(input, prepare)).pipe(translateFailure),
|
|
2048
|
-
replaceIfCurrent: (input, prepare) =>
|
|
2049
|
-
run(plans.replaceIfCurrent(input, prepare)).pipe(translateFailure),
|
|
2050
|
-
checkReset: (input) =>
|
|
2051
|
-
plans
|
|
2052
|
-
.checkReset(input)
|
|
2053
|
-
.pipe(
|
|
2054
|
-
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2055
|
-
Effect.provideService(LifecycleHooks, hooks),
|
|
2056
|
-
translateFailure,
|
|
2057
|
-
),
|
|
2058
|
-
resetWithProof: (input, prepare) =>
|
|
2059
|
-
run(plans.resetWithProof(input, prepare)).pipe(translateFailure),
|
|
2060
|
-
cleanupAttempts: (input, prepare) =>
|
|
2061
|
-
run(plans.cleanupAttempts(input, prepare)).pipe(translateFailure),
|
|
2062
|
-
};
|
|
2016
|
+
const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>
|
|
2017
|
+
Effect.gen(function* () {
|
|
2018
|
+
if (yield* hasCommitScope) return yield* unavailable();
|
|
2063
2019
|
|
|
2064
|
-
|
|
2065
|
-
|
|
2020
|
+
return yield* executeStandalone(plan, 2);
|
|
2021
|
+
}).pipe(
|
|
2022
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2023
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
2024
|
+
);
|
|
2025
|
+
|
|
2026
|
+
const service: PasswordPersistence["Service"] = {
|
|
2027
|
+
admitAttempt: (input, prepare) =>
|
|
2028
|
+
run(plans.admitAttempt(input, prepare)).pipe(translateFailure),
|
|
2029
|
+
settleAttempt: (input, prepare) =>
|
|
2030
|
+
run(plans.settleAttempt(input, prepare)).pipe(translateFailure),
|
|
2031
|
+
readForSubject: (input) =>
|
|
2032
|
+
plans
|
|
2033
|
+
.readForSubject(input)
|
|
2034
|
+
.pipe(
|
|
2035
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2036
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
2037
|
+
translateFailure,
|
|
2038
|
+
),
|
|
2039
|
+
recoveryTarget: (input) =>
|
|
2040
|
+
plans
|
|
2041
|
+
.recoveryTarget(input)
|
|
2042
|
+
.pipe(
|
|
2043
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2044
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
2045
|
+
translateFailure,
|
|
2046
|
+
),
|
|
2047
|
+
addIfAbsent: (input, prepare) => run(plans.addIfAbsent(input, prepare)).pipe(translateFailure),
|
|
2048
|
+
replaceIfCurrent: (input, prepare) =>
|
|
2049
|
+
run(plans.replaceIfCurrent(input, prepare)).pipe(translateFailure),
|
|
2050
|
+
checkReset: (input) =>
|
|
2051
|
+
plans
|
|
2052
|
+
.checkReset(input)
|
|
2053
|
+
.pipe(
|
|
2054
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2055
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
2056
|
+
translateFailure,
|
|
2057
|
+
),
|
|
2058
|
+
resetWithProof: (input, prepare) =>
|
|
2059
|
+
run(plans.resetWithProof(input, prepare)).pipe(translateFailure),
|
|
2060
|
+
cleanupAttempts: (input, prepare) =>
|
|
2061
|
+
run(plans.cleanupAttempts(input, prepare)).pipe(translateFailure),
|
|
2062
|
+
};
|
|
2063
|
+
|
|
2064
|
+
return { passwordPersistence: service };
|
|
2065
|
+
});
|
|
2066
2066
|
|
|
2067
2067
|
type CoordinatorError<E> = E | PasswordUnavailable | HookConfigurationError;
|
|
2068
2068
|
|
|
@@ -2443,7 +2443,7 @@ const makeRegistrationPlans = <Registration>(mapping: RegistrationMapping<Regist
|
|
|
2443
2443
|
}),
|
|
2444
2444
|
});
|
|
2445
2445
|
|
|
2446
|
-
export const makeD1PasswordRegistrationServices = <
|
|
2446
|
+
export const makeD1PasswordRegistrationServices = Effect.fnUntraced(function* <
|
|
2447
2447
|
Registration,
|
|
2448
2448
|
S extends AnySQLiteTable,
|
|
2449
2449
|
I extends AnySQLiteTable,
|
|
@@ -2451,30 +2451,28 @@ export const makeD1PasswordRegistrationServices = <
|
|
|
2451
2451
|
AC extends AnySQLiteTable,
|
|
2452
2452
|
Rq extends AnySQLiteTable,
|
|
2453
2453
|
NativeId,
|
|
2454
|
-
>(
|
|
2455
|
-
database
|
|
2456
|
-
mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>,
|
|
2457
|
-
) =>
|
|
2458
|
-
Effect.gen(function* () {
|
|
2459
|
-
const hooks = yield* LifecycleHooks;
|
|
2460
|
-
const plans = makeRegistrationPlans(mapping as unknown as RegistrationMapping<Registration>);
|
|
2454
|
+
>(mapping: PasswordRegistrationMapping<Registration, S, I, C, AC, Rq, NativeId>) {
|
|
2455
|
+
const database = yield* DatabaseService;
|
|
2461
2456
|
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
if (yield* hasCommitScope) return yield* unavailable();
|
|
2457
|
+
const hooks = yield* LifecycleHooks;
|
|
2458
|
+
const plans = makeRegistrationPlans(mapping as unknown as RegistrationMapping<Registration>);
|
|
2465
2459
|
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
Effect.provideService(LifecycleHooks, hooks),
|
|
2470
|
-
);
|
|
2460
|
+
const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>
|
|
2461
|
+
Effect.gen(function* () {
|
|
2462
|
+
if (yield* hasCommitScope) return yield* unavailable();
|
|
2471
2463
|
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2464
|
+
return yield* executeStandalone(plan, 2);
|
|
2465
|
+
}).pipe(
|
|
2466
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2467
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
2468
|
+
);
|
|
2475
2469
|
|
|
2476
|
-
|
|
2477
|
-
|
|
2470
|
+
const service: PasswordRegistrationAuthority<Registration> = {
|
|
2471
|
+
register: (input, prepare) => run(plans.register(input, prepare)).pipe(translateFailure),
|
|
2472
|
+
};
|
|
2473
|
+
|
|
2474
|
+
return { registrationAuthority: service };
|
|
2475
|
+
});
|
|
2478
2476
|
|
|
2479
2477
|
export function coordinateD1PasswordRegistration<
|
|
2480
2478
|
TargetId,
|
package/src/drizzle/d1-phone.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
|
11
11
|
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
12
12
|
import { Context, Effect } from "effect";
|
|
13
13
|
|
|
14
|
+
import { Database as DatabaseService } from "./d1-database";
|
|
14
15
|
import { makeD1Owner } from "./d1-planning";
|
|
15
16
|
import { D1BatchStatements } from "./D1BatchStatements";
|
|
16
17
|
import type { D1PhoneMapping, PhoneMapping, PhoneMappingSource } from "./phone-model";
|
|
@@ -26,7 +27,10 @@ const configuration = {
|
|
|
26
27
|
};
|
|
27
28
|
|
|
28
29
|
/** Reads use a primary D1 session; observations and expiry are asserted in the same batch. */
|
|
29
|
-
const target = makePhoneTarget<Database, Table, D1PhoneMapping>(
|
|
30
|
+
const target = makePhoneTarget<DatabaseService, Database, Table, D1PhoneMapping>(
|
|
31
|
+
DatabaseService,
|
|
32
|
+
configuration,
|
|
33
|
+
);
|
|
30
34
|
|
|
31
35
|
export const { makePhonePersistenceServices } = target;
|
|
32
36
|
|
package/src/drizzle/d1-proofs.ts
CHANGED
|
@@ -47,6 +47,7 @@ import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
|
47
47
|
import { Cause, Effect, Schema, Context } from "effect";
|
|
48
48
|
import type { Statement } from "effect/sql/Statement";
|
|
49
49
|
|
|
50
|
+
import { Database as DatabaseService } from "./d1-database";
|
|
50
51
|
import { balancedD1And } from "./d1-generated-statement";
|
|
51
52
|
import { CurrentD1PlanningDatabase, makeD1Owner } from "./d1-planning";
|
|
52
53
|
import { D1BatchStatements } from "./D1BatchStatements";
|
|
@@ -1985,7 +1986,7 @@ const makeProofPlans = (mapping: Mapping) => {
|
|
|
1985
1986
|
};
|
|
1986
1987
|
};
|
|
1987
1988
|
|
|
1988
|
-
export const makeD1ProofPersistenceServices = <
|
|
1989
|
+
export const makeD1ProofPersistenceServices = Effect.fnUntraced(function* <
|
|
1989
1990
|
Rq extends AnySQLiteTable,
|
|
1990
1991
|
S extends AnySQLiteTable,
|
|
1991
1992
|
G extends AnySQLiteTable,
|
|
@@ -1998,38 +1999,36 @@ export const makeD1ProofPersistenceServices = <
|
|
|
1998
1999
|
I extends AnySQLiteTable,
|
|
1999
2000
|
Cr extends AnySQLiteTable,
|
|
2000
2001
|
NativeId,
|
|
2001
|
-
>(
|
|
2002
|
-
database
|
|
2003
|
-
mapping: D1ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>,
|
|
2004
|
-
) =>
|
|
2005
|
-
Effect.gen(function* () {
|
|
2006
|
-
const hooks = yield* LifecycleHooks;
|
|
2007
|
-
const plans = makeProofPlans(mapping as unknown as Mapping);
|
|
2008
|
-
|
|
2009
|
-
const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>
|
|
2010
|
-
Effect.gen(function* () {
|
|
2011
|
-
if (yield* hasCommitScope) return yield* unavailable();
|
|
2002
|
+
>(mapping: D1ProofPersistenceMapping<Rq, S, G, Cn, Rs, A, F, C, Sub, I, Cr, NativeId>) {
|
|
2003
|
+
const database = yield* DatabaseService;
|
|
2012
2004
|
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2016
|
-
Effect.provideService(LifecycleHooks, hooks),
|
|
2017
|
-
);
|
|
2005
|
+
const hooks = yield* LifecycleHooks;
|
|
2006
|
+
const plans = makeProofPlans(mapping as unknown as Mapping);
|
|
2018
2007
|
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
complete: (input, prepare) => run(plans.complete(input, prepare)).pipe(translateFailure),
|
|
2023
|
-
claimDelivery: (input, prepare) =>
|
|
2024
|
-
run(plans.claimDelivery(input, prepare)).pipe(translateFailure),
|
|
2025
|
-
settleDelivery: (input, prepare) =>
|
|
2026
|
-
run(plans.settleDelivery(input, prepare)).pipe(translateFailure),
|
|
2027
|
-
cancel: (input, prepare) => run(plans.cancel(input, prepare)).pipe(translateFailure),
|
|
2028
|
-
cleanup: (input, prepare) => run(plans.cleanup(input, prepare)).pipe(translateFailure),
|
|
2029
|
-
};
|
|
2008
|
+
const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>
|
|
2009
|
+
Effect.gen(function* () {
|
|
2010
|
+
if (yield* hasCommitScope) return yield* unavailable();
|
|
2030
2011
|
|
|
2031
|
-
|
|
2032
|
-
|
|
2012
|
+
return yield* executeStandalone(plan, 2);
|
|
2013
|
+
}).pipe(
|
|
2014
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2015
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
2016
|
+
);
|
|
2017
|
+
|
|
2018
|
+
const service: ProofPersistence["Service"] = {
|
|
2019
|
+
issue: (input, prepare) => run(plans.issue(input, prepare)).pipe(translateIssueFailure),
|
|
2020
|
+
attempt: (input, prepare) => run(plans.attempt(input, prepare)).pipe(translateFailure),
|
|
2021
|
+
complete: (input, prepare) => run(plans.complete(input, prepare)).pipe(translateFailure),
|
|
2022
|
+
claimDelivery: (input, prepare) =>
|
|
2023
|
+
run(plans.claimDelivery(input, prepare)).pipe(translateFailure),
|
|
2024
|
+
settleDelivery: (input, prepare) =>
|
|
2025
|
+
run(plans.settleDelivery(input, prepare)).pipe(translateFailure),
|
|
2026
|
+
cancel: (input, prepare) => run(plans.cancel(input, prepare)).pipe(translateFailure),
|
|
2027
|
+
cleanup: (input, prepare) => run(plans.cleanup(input, prepare)).pipe(translateFailure),
|
|
2028
|
+
};
|
|
2029
|
+
|
|
2030
|
+
return { proofPersistence: service };
|
|
2031
|
+
});
|
|
2033
2032
|
|
|
2034
2033
|
type CoordinatorError<E> = E | ProofUnavailable | HookConfigurationError;
|
|
2035
2034
|
|
|
@@ -52,6 +52,7 @@ import { Cause, Context, Data, DateTime, Effect, Schema } from "effect";
|
|
|
52
52
|
import type * as SqlError from "effect/sql/SqlError";
|
|
53
53
|
import type { Statement } from "effect/sql/Statement";
|
|
54
54
|
|
|
55
|
+
import { Database as DatabaseService } from "./d1-database";
|
|
55
56
|
import { compactD1GeneratedStatement } from "./d1-generated-statement";
|
|
56
57
|
import {
|
|
57
58
|
CurrentD1PlanningDatabase,
|
|
@@ -1622,8 +1623,9 @@ export const makeD1SignedValidity = (
|
|
|
1622
1623
|
};
|
|
1623
1624
|
|
|
1624
1625
|
export const makeD1SessionServiceEffects = {
|
|
1625
|
-
authority: <Claims>(
|
|
1626
|
+
authority: <Claims>(mapping: any) =>
|
|
1626
1627
|
Effect.gen(function* () {
|
|
1628
|
+
const database = yield* CurrentD1PlanningDatabase;
|
|
1627
1629
|
const hooks = yield* LifecycleHooks;
|
|
1628
1630
|
const raw = makeD1AuthenticationAuthority<Claims>(mapping);
|
|
1629
1631
|
|
|
@@ -1649,8 +1651,9 @@ export const makeD1SessionServiceEffects = {
|
|
|
1649
1651
|
|
|
1650
1652
|
return { authenticationAuthority };
|
|
1651
1653
|
}),
|
|
1652
|
-
pending: <Claims>(
|
|
1654
|
+
pending: <Claims>(mapping: any) =>
|
|
1653
1655
|
Effect.gen(function* () {
|
|
1656
|
+
const database = yield* CurrentD1PlanningDatabase;
|
|
1654
1657
|
const hooks = yield* LifecycleHooks;
|
|
1655
1658
|
const raw = makeD1PendingAuthentication<Claims>(mapping);
|
|
1656
1659
|
|
|
@@ -1677,8 +1680,9 @@ export const makeD1SessionServiceEffects = {
|
|
|
1677
1680
|
|
|
1678
1681
|
return { pendingAuthentication };
|
|
1679
1682
|
}),
|
|
1680
|
-
stateful: <Claims>(
|
|
1683
|
+
stateful: <Claims>(mapping: any) =>
|
|
1681
1684
|
Effect.gen(function* () {
|
|
1685
|
+
const database = yield* CurrentD1PlanningDatabase;
|
|
1682
1686
|
const hooks = yield* LifecycleHooks;
|
|
1683
1687
|
const raw = makeD1StatefulSessions<Claims>(mapping);
|
|
1684
1688
|
|
|
@@ -1711,8 +1715,9 @@ export const makeD1SessionServiceEffects = {
|
|
|
1711
1715
|
|
|
1712
1716
|
return { statefulSessionPersistence, sessionRepository };
|
|
1713
1717
|
}),
|
|
1714
|
-
validity: (
|
|
1718
|
+
validity: (mapping: any) =>
|
|
1715
1719
|
Effect.gen(function* () {
|
|
1720
|
+
const database = yield* CurrentD1PlanningDatabase;
|
|
1716
1721
|
const hooks = yield* LifecycleHooks;
|
|
1717
1722
|
const raw = makeD1SignedValidity(mapping);
|
|
1718
1723
|
|
|
@@ -1832,7 +1837,6 @@ export const makeD1AuthenticationAuthorityServices = <
|
|
|
1832
1837
|
Pending extends AnySQLiteTable,
|
|
1833
1838
|
NativeSubjectId,
|
|
1834
1839
|
>(
|
|
1835
|
-
database: Database,
|
|
1836
1840
|
mapping: D1AuthenticationAuthorityMapping<
|
|
1837
1841
|
Claims,
|
|
1838
1842
|
Subject,
|
|
@@ -1841,7 +1845,10 @@ export const makeD1AuthenticationAuthorityServices = <
|
|
|
1841
1845
|
Pending,
|
|
1842
1846
|
NativeSubjectId
|
|
1843
1847
|
>,
|
|
1844
|
-
) =>
|
|
1848
|
+
) =>
|
|
1849
|
+
makeD1SessionServiceEffects
|
|
1850
|
+
.authority<Claims>(mapping as any)
|
|
1851
|
+
.pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, DatabaseService));
|
|
1845
1852
|
|
|
1846
1853
|
export const makeD1PendingAuthenticationServices = <
|
|
1847
1854
|
Claims,
|
|
@@ -1851,7 +1858,6 @@ export const makeD1PendingAuthenticationServices = <
|
|
|
1851
1858
|
Flow extends AnySQLiteTable,
|
|
1852
1859
|
NativeSubjectId,
|
|
1853
1860
|
>(
|
|
1854
|
-
database: Database,
|
|
1855
1861
|
mapping: D1PendingAuthenticationMapping<
|
|
1856
1862
|
Claims,
|
|
1857
1863
|
Subject,
|
|
@@ -1860,7 +1866,10 @@ export const makeD1PendingAuthenticationServices = <
|
|
|
1860
1866
|
Flow,
|
|
1861
1867
|
NativeSubjectId
|
|
1862
1868
|
>,
|
|
1863
|
-
) =>
|
|
1869
|
+
) =>
|
|
1870
|
+
makeD1SessionServiceEffects
|
|
1871
|
+
.pending<Claims>(mapping as any)
|
|
1872
|
+
.pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, DatabaseService));
|
|
1864
1873
|
|
|
1865
1874
|
export const makeD1StatefulSessionServices = <
|
|
1866
1875
|
Claims,
|
|
@@ -1872,7 +1881,6 @@ export const makeD1StatefulSessionServices = <
|
|
|
1872
1881
|
NativeSubjectId,
|
|
1873
1882
|
NativeSessionId,
|
|
1874
1883
|
>(
|
|
1875
|
-
database: Database,
|
|
1876
1884
|
mapping: D1StatefulSessionMapping<
|
|
1877
1885
|
Claims,
|
|
1878
1886
|
Subject,
|
|
@@ -1883,7 +1891,10 @@ export const makeD1StatefulSessionServices = <
|
|
|
1883
1891
|
NativeSubjectId,
|
|
1884
1892
|
NativeSessionId
|
|
1885
1893
|
>,
|
|
1886
|
-
) =>
|
|
1894
|
+
) =>
|
|
1895
|
+
makeD1SessionServiceEffects
|
|
1896
|
+
.stateful<Claims>(mapping as any)
|
|
1897
|
+
.pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, DatabaseService));
|
|
1887
1898
|
|
|
1888
1899
|
export const makeD1SignedSessionValidityServices = <
|
|
1889
1900
|
Subject extends AnySQLiteTable,
|
|
@@ -1891,9 +1902,11 @@ export const makeD1SignedSessionValidityServices = <
|
|
|
1891
1902
|
NativeSubjectId,
|
|
1892
1903
|
NativeSessionId,
|
|
1893
1904
|
>(
|
|
1894
|
-
database: Database,
|
|
1895
1905
|
mapping: D1SignedSessionValidityMapping<Subject, Tombstone, NativeSubjectId, NativeSessionId>,
|
|
1896
|
-
) =>
|
|
1906
|
+
) =>
|
|
1907
|
+
makeD1SessionServiceEffects
|
|
1908
|
+
.validity(mapping as any)
|
|
1909
|
+
.pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, DatabaseService));
|
|
1897
1910
|
|
|
1898
1911
|
export function coordinateD1AuthenticationAuthority<
|
|
1899
1912
|
Claims,
|
|
@@ -2733,7 +2746,7 @@ export const makeD1SessionStepUp = <Claims>(
|
|
|
2733
2746
|
};
|
|
2734
2747
|
};
|
|
2735
2748
|
|
|
2736
|
-
export const makeD1SessionStepUpServices = <
|
|
2749
|
+
export const makeD1SessionStepUpServices = Effect.fnUntraced(function* <
|
|
2737
2750
|
Claims,
|
|
2738
2751
|
Id,
|
|
2739
2752
|
S extends AnySQLiteTable,
|
|
@@ -2744,39 +2757,39 @@ export const makeD1SessionStepUpServices = <
|
|
|
2744
2757
|
NativeId,
|
|
2745
2758
|
NativeSessionId,
|
|
2746
2759
|
>(
|
|
2747
|
-
database: Database,
|
|
2748
2760
|
mapping: D1SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>,
|
|
2749
2761
|
target: Context.Service<Id, SessionStepUpPersistence<Claims>>,
|
|
2750
|
-
)
|
|
2751
|
-
|
|
2752
|
-
const hooks = yield* LifecycleHooks;
|
|
2753
|
-
const raw = makeD1SessionStepUp<Claims>(mapping as any);
|
|
2762
|
+
) {
|
|
2763
|
+
const database = yield* DatabaseService;
|
|
2754
2764
|
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
if (
|
|
2758
|
-
(yield* Effect.serviceOption(CurrentD1SessionBatch))._tag === "Some" ||
|
|
2759
|
-
(yield* hasCommitScope)
|
|
2760
|
-
)
|
|
2761
|
-
return yield* unavailable();
|
|
2765
|
+
const hooks = yield* LifecycleHooks;
|
|
2766
|
+
const raw = makeD1SessionStepUp<Claims>(mapping as any);
|
|
2762
2767
|
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
)
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2768
|
+
const run = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
2769
|
+
Effect.gen(function* () {
|
|
2770
|
+
if (
|
|
2771
|
+
(yield* Effect.serviceOption(CurrentD1SessionBatch))._tag === "Some" ||
|
|
2772
|
+
(yield* hasCommitScope)
|
|
2773
|
+
)
|
|
2774
|
+
return yield* unavailable();
|
|
2775
|
+
|
|
2776
|
+
return yield* effect.pipe(
|
|
2777
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
2778
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
2779
|
+
);
|
|
2775
2780
|
});
|
|
2776
2781
|
|
|
2777
|
-
|
|
2782
|
+
const sessionStepUpPersistence = target.of({
|
|
2783
|
+
create: (input, now, prepare) => run(raw.create(input, now, prepare)),
|
|
2784
|
+
context: (input) => run(raw.context(input)),
|
|
2785
|
+
read: (input) => run(raw.read(input)),
|
|
2786
|
+
reject: (input, prepare) => run(raw.reject(input, prepare)),
|
|
2787
|
+
complete: (plan, prepare) => run(raw.complete(plan, prepare)),
|
|
2778
2788
|
});
|
|
2779
2789
|
|
|
2790
|
+
return { sessionStepUpPersistence };
|
|
2791
|
+
});
|
|
2792
|
+
|
|
2780
2793
|
export function coordinateD1SessionStepUp<
|
|
2781
2794
|
Claims,
|
|
2782
2795
|
Id,
|
package/src/drizzle/d1-totp.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
|
6
6
|
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
7
7
|
import { Context, Effect } from "effect";
|
|
8
8
|
|
|
9
|
+
import { Database as DatabaseService } from "./d1-database";
|
|
9
10
|
import { makeD1Owner } from "./d1-planning";
|
|
10
11
|
import { D1BatchStatements } from "./D1BatchStatements";
|
|
11
12
|
import type { D1TotpMapping, TotpMapping, TotpMappingSource } from "./totp-model";
|
|
@@ -21,7 +22,10 @@ const configuration = {
|
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
/** Reads use a primary D1 session; observations and expiry are asserted in the same batch. */
|
|
24
|
-
const target = makeTotpTarget<Database, Table, D1TotpMapping>(
|
|
25
|
+
const target = makeTotpTarget<DatabaseService, Database, Table, D1TotpMapping>(
|
|
26
|
+
DatabaseService,
|
|
27
|
+
configuration,
|
|
28
|
+
);
|
|
25
29
|
|
|
26
30
|
export const { makeTotpPersistenceServices } = target;
|
|
27
31
|
|
|
@@ -540,10 +540,14 @@ const prepareConflict = Effect.fn("Drizzle.prepareConflict")(function* <Registra
|
|
|
540
540
|
|
|
541
541
|
export const makeSqlEmailRegistrationAuthority = Effect.fn("makeSqlEmailRegistrationAuthority")(
|
|
542
542
|
function* <Registration>(
|
|
543
|
-
database: EmailSqlDatabase,
|
|
544
543
|
mapping: Mapping<Registration>,
|
|
545
544
|
configuration: EmailRegistrationConfiguration,
|
|
546
|
-
): Effect.fn.Return<
|
|
545
|
+
): Effect.fn.Return<
|
|
546
|
+
EmailRegistrationAuthority<Registration>,
|
|
547
|
+
never,
|
|
548
|
+
LifecycleHooks | CurrentEmailSql
|
|
549
|
+
> {
|
|
550
|
+
const database = yield* CurrentEmailSql;
|
|
547
551
|
const hooks = yield* LifecycleHooks;
|
|
548
552
|
|
|
549
553
|
return {
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
type EmailRegistrationConfiguration,
|
|
16
16
|
} from "./email-registration";
|
|
17
17
|
import {
|
|
18
|
+
CurrentEmailSql,
|
|
18
19
|
makeSqlEmailAddressPersistence,
|
|
19
20
|
makeSqlEmailSignInTargets,
|
|
20
21
|
type EmailSqlConfiguration,
|
|
@@ -22,7 +23,7 @@ import {
|
|
|
22
23
|
type EmailSqlQuery,
|
|
23
24
|
} from "./email-sql";
|
|
24
25
|
import type { ProofTargetConfiguration } from "./proof-target";
|
|
25
|
-
import { sqlClientStandaloneGuard } from "./standalone-guard";
|
|
26
|
+
import { sqlClientStandaloneGuard, type TransactionService } from "./standalone-guard";
|
|
26
27
|
|
|
27
28
|
export interface EmailTargetConfiguration {
|
|
28
29
|
readonly mode: "interactive" | "synchronous";
|
|
@@ -46,9 +47,9 @@ export type EmailCoordinatorError<E> =
|
|
|
46
47
|
| SqlError.SqlError;
|
|
47
48
|
|
|
48
49
|
export const sqlClientEmailStandaloneGuard = (
|
|
49
|
-
|
|
50
|
+
service: TransactionService | undefined,
|
|
50
51
|
): Effect.Effect<void, EmailUnavailable> =>
|
|
51
|
-
sqlClientStandaloneGuard(
|
|
52
|
+
sqlClientStandaloneGuard(service, () => EmailUnavailable.make({}));
|
|
52
53
|
|
|
53
54
|
const proofConfiguration = (configuration: EmailTargetConfiguration, coordinated = false) => ({
|
|
54
55
|
mode: configuration.proof.mode,
|
|
@@ -93,13 +94,12 @@ const registrationOptions = (
|
|
|
93
94
|
});
|
|
94
95
|
|
|
95
96
|
export const makeTargetEmailSignInServices = (
|
|
96
|
-
database: any,
|
|
97
97
|
mapping: any,
|
|
98
98
|
configuration: EmailTargetConfiguration,
|
|
99
99
|
) =>
|
|
100
100
|
Effect.gen(function* () {
|
|
101
101
|
return {
|
|
102
|
-
emailSignInTargets: yield* makeSqlEmailSignInTargets(
|
|
102
|
+
emailSignInTargets: yield* makeSqlEmailSignInTargets(mapping, {
|
|
103
103
|
mode: configuration.mode,
|
|
104
104
|
locking: false,
|
|
105
105
|
standaloneGuard: configuration.standaloneGuard,
|
|
@@ -108,7 +108,6 @@ export const makeTargetEmailSignInServices = (
|
|
|
108
108
|
});
|
|
109
109
|
|
|
110
110
|
export const makeTargetEmailAddressServices = (
|
|
111
|
-
database: any,
|
|
112
111
|
mapping: any,
|
|
113
112
|
proofMapping: any,
|
|
114
113
|
configuration: EmailTargetConfiguration,
|
|
@@ -116,7 +115,6 @@ export const makeTargetEmailAddressServices = (
|
|
|
116
115
|
Effect.gen(function* () {
|
|
117
116
|
return {
|
|
118
117
|
emailAddressPersistence: yield* makeSqlEmailAddressPersistence(
|
|
119
|
-
database,
|
|
120
118
|
mapping,
|
|
121
119
|
addressOptions(configuration, proofMapping),
|
|
122
120
|
),
|
|
@@ -124,7 +122,6 @@ export const makeTargetEmailAddressServices = (
|
|
|
124
122
|
});
|
|
125
123
|
|
|
126
124
|
export const makeTargetEmailRegistrationServices = <Registration>(
|
|
127
|
-
database: any,
|
|
128
125
|
mapping: any,
|
|
129
126
|
proofMapping: any,
|
|
130
127
|
configuration: EmailTargetConfiguration,
|
|
@@ -132,7 +129,6 @@ export const makeTargetEmailRegistrationServices = <Registration>(
|
|
|
132
129
|
Effect.gen(function* () {
|
|
133
130
|
return {
|
|
134
131
|
registrationAuthority: yield* makeSqlEmailRegistrationAuthority<Registration>(
|
|
135
|
-
database,
|
|
136
132
|
mapping,
|
|
137
133
|
registrationOptions(configuration, proofMapping),
|
|
138
134
|
),
|
|
@@ -161,9 +157,10 @@ export const coordinateTargetEmailAddress = <Transaction, A, E, R>(
|
|
|
161
157
|
Effect.gen(function* () {
|
|
162
158
|
return yield* owner(transaction, {
|
|
163
159
|
emailAddressPersistence: yield* makeSqlEmailAddressPersistence(
|
|
164
|
-
transaction as unknown as EmailSqlDatabase,
|
|
165
160
|
mapping,
|
|
166
161
|
addressOptions(configuration, proofMapping, true),
|
|
162
|
+
).pipe(
|
|
163
|
+
Effect.provideService(CurrentEmailSql, transaction as unknown as EmailSqlDatabase),
|
|
167
164
|
),
|
|
168
165
|
});
|
|
169
166
|
}),
|
|
@@ -196,9 +193,10 @@ export const coordinateTargetEmailRegistration = <Registration, Transaction, A,
|
|
|
196
193
|
Effect.gen(function* () {
|
|
197
194
|
return yield* owner(transaction, {
|
|
198
195
|
registrationAuthority: yield* makeSqlEmailRegistrationAuthority<Registration>(
|
|
199
|
-
transaction as unknown as EmailSqlDatabase,
|
|
200
196
|
mapping,
|
|
201
197
|
registrationOptions(configuration, proofMapping, true),
|
|
198
|
+
).pipe(
|
|
199
|
+
Effect.provideService(CurrentEmailSql, transaction as unknown as EmailSqlDatabase),
|
|
202
200
|
),
|
|
203
201
|
});
|
|
204
202
|
}),
|
|
@@ -209,19 +207,19 @@ export const coordinateTargetEmailRegistration = <Registration, Transaction, A,
|
|
|
209
207
|
return result.value;
|
|
210
208
|
});
|
|
211
209
|
|
|
212
|
-
export const emailSignInTargetsLayer = (
|
|
213
|
-
services: Effect.Effect<{ readonly emailSignInTargets: EmailSignInTargets["Service"] }>,
|
|
210
|
+
export const emailSignInTargetsLayer = <E, R>(
|
|
211
|
+
services: Effect.Effect<{ readonly emailSignInTargets: EmailSignInTargets["Service"] }, E, R>,
|
|
214
212
|
) =>
|
|
215
213
|
Layer.effect(
|
|
216
214
|
EmailSignInTargets,
|
|
217
215
|
Effect.map(services, (value) => value.emailSignInTargets),
|
|
218
216
|
);
|
|
219
217
|
|
|
220
|
-
export const emailAddressPersistenceLayer = (
|
|
218
|
+
export const emailAddressPersistenceLayer = <E, R>(
|
|
221
219
|
services: Effect.Effect<
|
|
222
220
|
{ readonly emailAddressPersistence: EmailAddressPersistence["Service"] },
|
|
223
|
-
|
|
224
|
-
|
|
221
|
+
E,
|
|
222
|
+
R
|
|
225
223
|
>,
|
|
226
224
|
) =>
|
|
227
225
|
Layer.effect(
|
|
@@ -229,12 +227,12 @@ export const emailAddressPersistenceLayer = (
|
|
|
229
227
|
Effect.map(services, (value) => value.emailAddressPersistence),
|
|
230
228
|
);
|
|
231
229
|
|
|
232
|
-
export const emailRegistrationLayer = <Id, Registration>(
|
|
230
|
+
export const emailRegistrationLayer = <Id, Registration, E, R>(
|
|
233
231
|
tag: Context.Key<Id, EmailRegistrationAuthority<Registration>>,
|
|
234
232
|
services: Effect.Effect<
|
|
235
233
|
{ readonly registrationAuthority: EmailRegistrationAuthority<Registration> },
|
|
236
|
-
|
|
237
|
-
|
|
234
|
+
E,
|
|
235
|
+
R
|
|
238
236
|
>,
|
|
239
237
|
) =>
|
|
240
238
|
Layer.effect(
|