@yielded/auth-persistence-drizzle 0.1.0-beta.0 → 0.1.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/dist/D1.d.mts +155 -40
- package/dist/D1.mjs +10 -6
- package/dist/D1.mjs.map +1 -1
- package/dist/Libsql.d.mts +251 -129
- package/dist/Libsql.mjs +20 -21
- package/dist/Libsql.mjs.map +1 -1
- package/dist/Mysql2.d.mts +208 -56
- package/dist/Mysql2.mjs +13 -8
- package/dist/Mysql2.mjs.map +1 -1
- package/dist/Pglite.d.mts +209 -57
- package/dist/Pglite.mjs +13 -9
- package/dist/Pglite.mjs.map +1 -1
- package/dist/Postgres.d.mts +207 -55
- package/dist/Postgres.mjs +13 -9
- package/dist/Postgres.mjs.map +1 -1
- package/dist/SqliteBun.d.mts +249 -126
- package/dist/SqliteBun.mjs +20 -18
- package/dist/SqliteBun.mjs.map +1 -1
- package/dist/SqliteDo.d.mts +248 -158
- package/dist/SqliteDo.mjs +26 -44
- package/dist/SqliteDo.mjs.map +1 -1
- package/dist/SqliteNode.d.mts +247 -124
- package/dist/SqliteNode.mjs +20 -18
- package/dist/SqliteNode.mjs.map +1 -1
- package/dist/SqliteWasm.d.mts +251 -128
- package/dist/SqliteWasm.mjs +20 -18
- package/dist/SqliteWasm.mjs.map +1 -1
- package/dist/drizzle/D1BatchStatements.d.mts +1 -1
- package/dist/drizzle/D1BatchStatements.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-generated-statement.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 +41 -10
- package/dist/drizzle/d1-oauth.mjs +8 -5
- 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 +7 -6
- 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 +5 -4
- package/dist/drizzle/d1-proofs.mjs +3 -1
- package/dist/drizzle/d1-proofs.mjs.map +1 -1
- package/dist/drizzle/d1-sessions.d.mts +14 -13
- 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.d.mts +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 +8 -7
- package/dist/drizzle/email-target.mjs +10 -10
- package/dist/drizzle/email-target.mjs.map +1 -1
- package/dist/drizzle/model.d.mts +2 -126
- package/dist/drizzle/model.mjs +2 -21
- package/dist/drizzle/model.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 +8 -7
- 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 +4 -3
- 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 +7 -5
- package/dist/drizzle/mysql-passwords.mjs +11 -7
- package/dist/drizzle/mysql-passwords.mjs.map +1 -1
- package/dist/drizzle/mysql-proofs.d.mts +4 -3
- package/dist/drizzle/mysql-proofs.mjs +8 -4
- package/dist/drizzle/mysql-proofs.mjs.map +1 -1
- package/dist/drizzle/mysql-sessions.d.mts +12 -11
- 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-accounts.mjs +1 -1
- package/dist/drizzle/oauth-connected-access.mjs +14 -12
- package/dist/drizzle/oauth-connected-access.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-custody.mjs +2 -2
- package/dist/drizzle/oauth-connected-drivers.mjs +11 -6
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-flow.mjs +2 -2
- package/dist/drizzle/oauth-connected-input.mjs +14 -1
- package/dist/drizzle/oauth-connected-input.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-maintenance.mjs +1 -1
- package/dist/drizzle/oauth-connected-management.mjs +2 -2
- package/dist/drizzle/oauth-connected-model.d.mts +17 -3
- package/dist/drizzle/oauth-connected-model.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-settlement.mjs +51 -41
- package/dist/drizzle/oauth-connected-settlement.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-sign-in.mjs +263 -0
- package/dist/drizzle/oauth-connected-sign-in.mjs.map +1 -0
- package/dist/drizzle/oauth-connected-state.d.mts +110 -2
- package/dist/drizzle/oauth-connected-state.mjs +9 -4
- package/dist/drizzle/oauth-connected-state.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-target.d.mts +142 -15
- package/dist/drizzle/oauth-connected-target.mjs +9 -6
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
- package/dist/drizzle/oauth-drivers.mjs +9 -7
- package/dist/drizzle/oauth-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-flow.d.mts +1 -1
- package/dist/drizzle/oauth-flow.mjs +1 -1
- package/dist/drizzle/oauth-input.mjs +1 -1
- package/dist/drizzle/oauth-model.d.mts +1 -1
- package/dist/drizzle/oauth-owner.d.mts +1 -1
- package/dist/drizzle/oauth-registration.d.mts +2 -2
- package/dist/drizzle/oauth-registration.mjs +1 -1
- package/dist/drizzle/oauth-state.mjs +5 -4
- package/dist/drizzle/oauth-state.mjs.map +1 -1
- package/dist/drizzle/oauth-target.d.mts +14 -13
- package/dist/drizzle/oauth-target.mjs +14 -13
- 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-state.mjs +1 -1
- package/dist/drizzle/password-prepared-target.d.mts +4 -3
- 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 +6 -5
- 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 +8 -7
- package/dist/drizzle/pg-emails.mjs +12 -8
- package/dist/drizzle/pg-emails.mjs.map +1 -1
- package/dist/drizzle/pg-identity.mjs +92 -0
- package/dist/drizzle/pg-identity.mjs.map +1 -0
- package/dist/drizzle/pg-password-prepared.d.mts +4 -3
- 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 +7 -5
- package/dist/drizzle/pg-passwords.mjs +11 -7
- package/dist/drizzle/pg-passwords.mjs.map +1 -1
- package/dist/drizzle/pg-proofs.d.mts +4 -3
- package/dist/drizzle/pg-proofs.mjs +8 -4
- package/dist/drizzle/pg-proofs.mjs.map +1 -1
- package/dist/drizzle/pg-sessions.d.mts +12 -11
- package/dist/drizzle/pg-sessions.mjs +16 -12
- package/dist/drizzle/pg-sessions.mjs.map +1 -1
- package/dist/drizzle/phone-model.d.mts +1 -1
- package/dist/drizzle/phone-target.d.mts +5 -4
- package/dist/drizzle/phone-target.mjs +12 -11
- package/dist/drizzle/phone-target.mjs.map +1 -1
- package/dist/drizzle/proof-target.d.mts +4 -3
- 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 +11 -9
- 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-model.d.mts +1 -1
- package/dist/drizzle/totp-target.d.mts +5 -4
- package/dist/drizzle/totp-target.mjs +31 -28
- package/dist/drizzle/totp-target.mjs.map +1 -1
- package/dist/drizzle/transaction-mysql.mjs +1 -1
- package/dist/drizzle/transaction-mysql.mjs.map +1 -1
- package/dist/index.d.mts +2 -4
- package/dist/index.mjs +2 -4
- package/dist/internal/drizzle-postgres.mjs.map +1 -1
- package/dist/internal/drizzle-sqlite.mjs.map +1 -1
- package/package.json +1 -1
- package/src/D1.ts +37 -26
- package/src/Libsql.ts +45 -61
- package/src/Mysql2.ts +39 -35
- package/src/Pglite.ts +48 -30
- package/src/Postgres.ts +48 -30
- package/src/SqliteBun.ts +59 -68
- package/src/SqliteDo.ts +61 -274
- package/src/SqliteNode.ts +56 -66
- package/src/SqliteWasm.ts +56 -66
- package/src/drizzle/D1BatchStatements.ts +1 -1
- package/src/drizzle/d1-database.ts +10 -0
- package/src/drizzle/d1-emails.ts +86 -88
- package/src/drizzle/d1-generated-statement.ts +1 -1
- 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 +40 -42
- package/src/drizzle/d1-passwords.ts +76 -80
- package/src/drizzle/d1-phone.ts +5 -1
- package/src/drizzle/d1-proofs.ts +31 -34
- package/src/drizzle/d1-sessions.ts +53 -40
- package/src/drizzle/d1-totp.ts +5 -1
- package/src/drizzle/email-registration.ts +6 -2
- package/src/drizzle/email-target.ts +18 -20
- package/src/drizzle/model.ts +1 -208
- package/src/drizzle/mysql-database.ts +8 -0
- package/src/drizzle/mysql-emails.ts +29 -17
- package/src/drizzle/mysql-identity.ts +18 -21
- package/src/drizzle/mysql-password-prepared.ts +11 -9
- package/src/drizzle/mysql-passwords.ts +22 -10
- package/src/drizzle/mysql-proofs.ts +17 -6
- package/src/drizzle/mysql-sessions.ts +41 -18
- package/src/drizzle/native-database.ts +22 -0
- package/src/drizzle/oauth-connected-access.ts +8 -1
- package/src/drizzle/oauth-connected-drivers.ts +21 -6
- package/src/drizzle/oauth-connected-input.ts +13 -0
- package/src/drizzle/oauth-connected-model.ts +17 -0
- package/src/drizzle/oauth-connected-settlement.ts +65 -42
- package/src/drizzle/oauth-connected-sign-in.ts +438 -0
- package/src/drizzle/oauth-connected-state.ts +19 -7
- package/src/drizzle/oauth-connected-target.ts +26 -18
- package/src/drizzle/oauth-drivers.ts +26 -10
- package/src/drizzle/oauth-state.ts +5 -4
- package/src/drizzle/oauth-target.ts +31 -43
- 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 +10 -7
- package/src/drizzle/password-registration.ts +7 -8
- package/src/drizzle/password-target.ts +20 -19
- package/src/drizzle/pg-database.ts +10 -0
- package/src/drizzle/pg-emails.ts +29 -17
- package/src/drizzle/pg-identity.ts +297 -0
- package/src/drizzle/pg-password-prepared.ts +11 -9
- package/src/drizzle/pg-passwords.ts +22 -10
- package/src/drizzle/pg-proofs.ts +17 -6
- package/src/drizzle/pg-sessions.ts +41 -18
- package/src/drizzle/phone-target.ts +23 -18
- package/src/drizzle/proof-target.ts +10 -13
- package/src/drizzle/session-target.ts +33 -51
- package/src/drizzle/sqlite-emails.ts +31 -14
- package/src/drizzle/sqlite-identity.ts +22 -42
- package/src/drizzle/sqlite-password-prepared.ts +24 -10
- package/src/drizzle/sqlite-passwords.ts +30 -16
- package/src/drizzle/sqlite-proofs.ts +29 -6
- package/src/drizzle/sqlite-sessions.ts +50 -24
- package/src/drizzle/standalone-guard.ts +19 -7
- package/src/drizzle/totp-target.ts +62 -61
- package/src/drizzle/transaction-mysql.ts +1 -1
- package/src/index.ts +0 -24
- package/src/internal/drizzle-postgres.ts +1 -1
- package/src/internal/drizzle-sqlite.ts +1 -1
- package/dist/drizzle/d1-identity.d.mts +0 -30
- package/dist/drizzle/mysql-identity.d.mts +0 -21
- package/dist/drizzle/mysql.d.mts +0 -69
- package/dist/drizzle/mysql.mjs +0 -218
- package/dist/drizzle/mysql.mjs.map +0 -1
- package/dist/drizzle/pg.d.mts +0 -80
- package/dist/drizzle/pg.mjs +0 -289
- package/dist/drizzle/pg.mjs.map +0 -1
- package/dist/drizzle/sqlite.d.mts +0 -77
- package/dist/drizzle/sqlite.mjs +0 -217
- package/dist/drizzle/sqlite.mjs.map +0 -1
- package/src/drizzle/mysql.ts +0 -687
- package/src/drizzle/pg.ts +0 -984
- package/src/drizzle/sqlite.ts +0 -705
|
@@ -30,8 +30,9 @@ import { eq, is, isNotNull, lte, or, SQL, sql, type AnyRelations, type Table } f
|
|
|
30
30
|
import type { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
31
31
|
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
32
32
|
import { Cause, DateTime, Effect, Predicate, Redacted, Schema, Context } from "effect";
|
|
33
|
-
import type { Statement } from "effect/
|
|
33
|
+
import type { Statement } from "effect/sql/Statement";
|
|
34
34
|
|
|
35
|
+
import { Database as DatabaseService } from "./d1-database";
|
|
35
36
|
import { balancedD1And as and, compactD1GeneratedStatement } from "./d1-generated-statement";
|
|
36
37
|
import { passwordD1Kernel as kernel } from "./d1-passwords";
|
|
37
38
|
import { CurrentD1PlanningDatabase, makeD1Owner } from "./d1-planning";
|
|
@@ -791,10 +792,7 @@ const makePreparedPlans = (mapping: Mapping, proofMapping?: any) => {
|
|
|
791
792
|
Effect.catchCause(
|
|
792
793
|
(
|
|
793
794
|
cause,
|
|
794
|
-
): Effect.Effect<
|
|
795
|
-
never,
|
|
796
|
-
PasswordRejected | import("effect/unstable/sql/SqlError").SqlError
|
|
797
|
-
> =>
|
|
795
|
+
): Effect.Effect<never, PasswordRejected | import("effect/sql/SqlError").SqlError> =>
|
|
798
796
|
everyFailureMatches(cause, (failure) =>
|
|
799
797
|
kernel.isGuardFailure(
|
|
800
798
|
failure,
|
|
@@ -967,7 +965,7 @@ const makePreparedPlans = (mapping: Mapping, proofMapping?: any) => {
|
|
|
967
965
|
return services;
|
|
968
966
|
};
|
|
969
967
|
|
|
970
|
-
export const makeD1PasswordPreparedPersistenceServices = <
|
|
968
|
+
export const makeD1PasswordPreparedPersistenceServices = Effect.fnUntraced(function* <
|
|
971
969
|
S extends AnySQLiteTable,
|
|
972
970
|
I extends AnySQLiteTable,
|
|
973
971
|
C extends AnySQLiteTable,
|
|
@@ -987,47 +985,47 @@ export const makeD1PasswordPreparedPersistenceServices = <
|
|
|
987
985
|
PCr extends AnySQLiteTable = AnySQLiteTable,
|
|
988
986
|
PNativeId = unknown,
|
|
989
987
|
>(
|
|
990
|
-
database: Database,
|
|
991
988
|
mapping: D1PasswordPreparedPersistenceMapping<S, I, C, AC, At, RS, CE, M, T, B, NativeId>,
|
|
992
989
|
proofMapping?: D1PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>,
|
|
993
|
-
)
|
|
994
|
-
|
|
995
|
-
const hooks = yield* LifecycleHooks;
|
|
996
|
-
const plans = makePreparedPlans(mapping as unknown as Mapping, proofMapping);
|
|
990
|
+
) {
|
|
991
|
+
const database = yield* DatabaseService;
|
|
997
992
|
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
if (yield* hasCommitScope) return yield* unavailable();
|
|
993
|
+
const hooks = yield* LifecycleHooks;
|
|
994
|
+
const plans = makePreparedPlans(mapping as unknown as Mapping, proofMapping);
|
|
1001
995
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
Effect.provideService(CurrentPasswordSql, database as unknown as PasswordSqlDatabase),
|
|
1006
|
-
Effect.provideService(LifecycleHooks, hooks),
|
|
1007
|
-
);
|
|
996
|
+
const run = <Out, Err, Env>(plan: Effect.Effect<Planned<Out>, Err, Env>) =>
|
|
997
|
+
Effect.gen(function* () {
|
|
998
|
+
if (yield* hasCommitScope) return yield* unavailable();
|
|
1008
999
|
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1000
|
+
return yield* executeStandalone(plan);
|
|
1001
|
+
}).pipe(
|
|
1002
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
1003
|
+
Effect.provideService(CurrentPasswordSql, database as unknown as PasswordSqlDatabase),
|
|
1004
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
1005
|
+
);
|
|
1006
|
+
|
|
1007
|
+
const service: PasswordPreparedPersistence = {
|
|
1008
|
+
reserve: (input, prepare) => run(plans.reserve(input, prepare)).pipe(translateFailure),
|
|
1009
|
+
publishReady: (input, prepare) =>
|
|
1010
|
+
run(plans.publishReady(input, prepare)).pipe(translateFailure),
|
|
1011
|
+
context: (input) =>
|
|
1012
|
+
plans
|
|
1013
|
+
.context(input)
|
|
1014
|
+
.pipe(
|
|
1015
|
+
Effect.provideService(CurrentD1PlanningDatabase, database),
|
|
1016
|
+
Effect.provideService(CurrentPasswordSql, database as unknown as PasswordSqlDatabase),
|
|
1017
|
+
Effect.provideService(LifecycleHooks, hooks),
|
|
1018
|
+
translateContextFailure,
|
|
1019
|
+
),
|
|
1020
|
+
complete: (input, prepare) => run(plans.complete(input, prepare)).pipe(translateFailure),
|
|
1021
|
+
resetWithProof: (input, prepare) =>
|
|
1022
|
+
run(plans.resetWithProof(input, prepare)).pipe(translateFailure),
|
|
1023
|
+
cancel: (input, prepare) => run(plans.cancel(input, prepare)).pipe(translateFailure),
|
|
1024
|
+
cleanup: (input, prepare) => run(plans.cleanup(input, prepare)).pipe(translateFailure),
|
|
1025
|
+
};
|
|
1026
|
+
|
|
1027
|
+
return { passwordPreparedPersistence: service };
|
|
1028
|
+
});
|
|
1031
1029
|
|
|
1032
1030
|
export function coordinateD1PasswordPreparedPersistence<
|
|
1033
1031
|
TargetId,
|
|
@@ -54,8 +54,9 @@ import type { EffectDrizzleQueryError } from "drizzle-orm/effect-core";
|
|
|
54
54
|
import type { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
55
55
|
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
56
56
|
import { Cause, DateTime, Effect, Option, Predicate, Redacted, Schema, Context } from "effect";
|
|
57
|
-
import type { Statement } from "effect/
|
|
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,
|
|
@@ -2624,9 +2622,7 @@ const executeStandalone = <A, E, R>(
|
|
|
2624
2622
|
retries = 2,
|
|
2625
2623
|
): Effect.Effect<
|
|
2626
2624
|
A,
|
|
2627
|
-
|
|
|
2628
|
-
| import("@yielded/auth/Hooks").HookConfigurationError
|
|
2629
|
-
| import("effect/unstable/sql/SqlError").SqlError,
|
|
2625
|
+
E | import("@yielded/auth/Hooks").HookConfigurationError | import("effect/sql/SqlError").SqlError,
|
|
2630
2626
|
Exclude<R, CurrentCommitJournal> | CurrentD1PlanningDatabase | LifecycleHooks
|
|
2631
2627
|
> =>
|
|
2632
2628
|
Effect.suspend(() => {
|
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
|
@@ -45,8 +45,9 @@ import type { EffectDrizzleQueryError } from "drizzle-orm/effect-core";
|
|
|
45
45
|
import type { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
46
46
|
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
47
47
|
import { Cause, Effect, Schema, Context } from "effect";
|
|
48
|
-
import type { Statement } from "effect/
|
|
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
|
|
|
@@ -2273,9 +2272,7 @@ const executeStandalone = <A, E, R>(
|
|
|
2273
2272
|
retries = 2,
|
|
2274
2273
|
): Effect.Effect<
|
|
2275
2274
|
A,
|
|
2276
|
-
|
|
|
2277
|
-
| import("@yielded/auth/Hooks").HookConfigurationError
|
|
2278
|
-
| import("effect/unstable/sql/SqlError").SqlError,
|
|
2275
|
+
E | import("@yielded/auth/Hooks").HookConfigurationError | import("effect/sql/SqlError").SqlError,
|
|
2279
2276
|
Exclude<R, CurrentCommitJournal> | CurrentD1PlanningDatabase | LifecycleHooks
|
|
2280
2277
|
> =>
|
|
2281
2278
|
Effect.suspend(() => {
|
|
@@ -49,9 +49,10 @@ import { and, eq, getTableColumns, gt, inArray, not, or, sql, type SQL } from "d
|
|
|
49
49
|
import type { EffectDrizzleQueryError } from "drizzle-orm/effect-core";
|
|
50
50
|
import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|
51
51
|
import { Cause, Context, Data, DateTime, Effect, Schema } from "effect";
|
|
52
|
-
import type * as SqlError from "effect/
|
|
53
|
-
import type { Statement } from "effect/
|
|
52
|
+
import type * as SqlError from "effect/sql/SqlError";
|
|
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
|
|