@yielded/auth-persistence-drizzle 0.1.0-beta.14 → 0.1.0-beta.16
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 +123 -9
- package/dist/Libsql.d.mts +141 -27
- package/dist/Mysql2.d.mts +124 -10
- package/dist/Pglite.d.mts +124 -10
- package/dist/Postgres.d.mts +129 -15
- package/dist/SqliteBun.d.mts +135 -21
- package/dist/SqliteDo.d.mts +135 -21
- package/dist/SqliteNode.d.mts +135 -21
- package/dist/SqliteWasm.d.mts +135 -21
- package/dist/drizzle/d1-emails.d.mts +3 -3
- package/dist/drizzle/d1-emails.mjs +56 -11
- package/dist/drizzle/d1-emails.mjs.map +1 -1
- package/dist/drizzle/d1-identity.mjs +9 -2
- package/dist/drizzle/d1-identity.mjs.map +1 -1
- package/dist/drizzle/d1-oauth.d.mts +6 -6
- package/dist/drizzle/d1-oauth.mjs +8 -8
- package/dist/drizzle/d1-oauth.mjs.map +1 -1
- package/dist/drizzle/d1-passkey.d.mts +2 -1
- package/dist/drizzle/d1-passkey.mjs +10 -8
- package/dist/drizzle/d1-passkey.mjs.map +1 -1
- package/dist/drizzle/d1-password-prepared.d.mts +1 -1
- package/dist/drizzle/d1-password-prepared.mjs +16 -5
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
- package/dist/drizzle/d1-passwords.d.mts +2 -2
- package/dist/drizzle/d1-passwords.mjs +19 -6
- package/dist/drizzle/d1-passwords.mjs.map +1 -1
- package/dist/drizzle/d1-phone.d.mts +2 -1
- package/dist/drizzle/d1-phone.mjs +4 -2
- package/dist/drizzle/d1-phone.mjs.map +1 -1
- package/dist/drizzle/d1-proofs.d.mts +1 -1
- package/dist/drizzle/d1-proofs.mjs +18 -7
- package/dist/drizzle/d1-proofs.mjs.map +1 -1
- package/dist/drizzle/d1-sessions.d.mts +6 -5
- package/dist/drizzle/d1-sessions.mjs +29 -19
- package/dist/drizzle/d1-sessions.mjs.map +1 -1
- package/dist/drizzle/d1-totp.d.mts +2 -1
- package/dist/drizzle/d1-totp.mjs +4 -2
- package/dist/drizzle/d1-totp.mjs.map +1 -1
- package/dist/drizzle/email-registration.d.mts +5 -1
- package/dist/drizzle/email-registration.mjs +48 -4
- package/dist/drizzle/email-registration.mjs.map +1 -1
- package/dist/drizzle/email-target.d.mts +1 -0
- package/dist/drizzle/email-target.mjs +9 -0
- package/dist/drizzle/email-target.mjs.map +1 -1
- package/dist/drizzle/mysql-emails.d.mts +4 -4
- package/dist/drizzle/mysql-emails.mjs +8 -7
- package/dist/drizzle/mysql-emails.mjs.map +1 -1
- package/dist/drizzle/mysql-identity.mjs +11 -4
- package/dist/drizzle/mysql-identity.mjs.map +1 -1
- package/dist/drizzle/mysql-password-prepared.d.mts +2 -2
- package/dist/drizzle/mysql-password-prepared.mjs +4 -3
- package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
- package/dist/drizzle/mysql-passwords.d.mts +3 -3
- package/dist/drizzle/mysql-passwords.mjs +7 -6
- package/dist/drizzle/mysql-passwords.mjs.map +1 -1
- package/dist/drizzle/mysql-proofs.d.mts +2 -2
- package/dist/drizzle/mysql-proofs.mjs +4 -3
- package/dist/drizzle/mysql-proofs.mjs.map +1 -1
- package/dist/drizzle/mysql-sessions.d.mts +6 -6
- package/dist/drizzle/mysql-sessions.mjs +16 -15
- package/dist/drizzle/mysql-sessions.mjs.map +1 -1
- package/dist/drizzle/native-database.mjs +1 -1
- package/dist/drizzle/native-database.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-drivers.mjs +10 -8
- package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-flow.mjs +62 -13
- package/dist/drizzle/oauth-connected-flow.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-input.mjs +6 -0
- package/dist/drizzle/oauth-connected-input.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-maintenance.mjs +3 -3
- package/dist/drizzle/oauth-connected-maintenance.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-target.d.mts +116 -2
- package/dist/drizzle/oauth-connected-target.mjs +5 -3
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
- package/dist/drizzle/oauth-drivers.mjs +8 -8
- package/dist/drizzle/oauth-drivers.mjs.map +1 -1
- package/dist/drizzle/oauth-target.d.mts +3 -3
- package/dist/drizzle/oauth-target.mjs +8 -6
- package/dist/drizzle/oauth-target.mjs.map +1 -1
- package/dist/drizzle/passkey-drivers.mjs +4 -4
- package/dist/drizzle/passkey-drivers.mjs.map +1 -1
- package/dist/drizzle/passkey-write-drivers.mjs +4 -4
- 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 +5 -0
- package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
- package/dist/drizzle/password-prepared-target.d.mts +2 -1
- package/dist/drizzle/password-prepared-target.mjs +5 -0
- package/dist/drizzle/password-prepared-target.mjs.map +1 -1
- package/dist/drizzle/password-registration.d.mts +1 -1
- package/dist/drizzle/password-registration.mjs +2 -0
- package/dist/drizzle/password-registration.mjs.map +1 -1
- package/dist/drizzle/password-target.d.mts +1 -0
- package/dist/drizzle/password-target.mjs +6 -0
- package/dist/drizzle/password-target.mjs.map +1 -1
- package/dist/drizzle/pg-emails.d.mts +4 -4
- package/dist/drizzle/pg-emails.mjs +8 -7
- package/dist/drizzle/pg-emails.mjs.map +1 -1
- package/dist/drizzle/pg-identity.mjs +12 -5
- package/dist/drizzle/pg-identity.mjs.map +1 -1
- package/dist/drizzle/pg-password-prepared.d.mts +2 -2
- package/dist/drizzle/pg-password-prepared.mjs +4 -3
- package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
- package/dist/drizzle/pg-passwords.d.mts +3 -3
- package/dist/drizzle/pg-passwords.mjs +7 -6
- package/dist/drizzle/pg-passwords.mjs.map +1 -1
- package/dist/drizzle/pg-proofs.d.mts +2 -2
- package/dist/drizzle/pg-proofs.mjs +4 -3
- package/dist/drizzle/pg-proofs.mjs.map +1 -1
- package/dist/drizzle/pg-sessions.d.mts +6 -6
- package/dist/drizzle/pg-sessions.mjs +16 -15
- package/dist/drizzle/pg-sessions.mjs.map +1 -1
- package/dist/drizzle/phone-target.mjs +11 -2
- package/dist/drizzle/phone-target.mjs.map +1 -1
- package/dist/drizzle/proof-target.d.mts +1 -0
- package/dist/drizzle/proof-target.mjs +2 -0
- package/dist/drizzle/proof-target.mjs.map +1 -1
- package/dist/drizzle/query-operations.mjs +2 -0
- package/dist/drizzle/query-operations.mjs.map +1 -1
- package/dist/drizzle/session-target.d.mts +1 -0
- package/dist/drizzle/session-target.mjs +9 -6
- package/dist/drizzle/session-target.mjs.map +1 -1
- package/dist/drizzle/sqlite-emails.mjs +8 -7
- package/dist/drizzle/sqlite-emails.mjs.map +1 -1
- package/dist/drizzle/sqlite-identity.mjs +7 -2
- package/dist/drizzle/sqlite-identity.mjs.map +1 -1
- package/dist/drizzle/sqlite-password-prepared.mjs +4 -3
- package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
- package/dist/drizzle/sqlite-passwords.mjs +7 -6
- package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
- package/dist/drizzle/sqlite-proofs.mjs +4 -3
- package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
- package/dist/drizzle/sqlite-sessions.mjs +16 -15
- package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
- package/dist/drizzle/storage-validation.mjs +234 -0
- package/dist/drizzle/storage-validation.mjs.map +1 -0
- package/dist/drizzle/totp-target.mjs +5 -2
- package/dist/drizzle/totp-target.mjs.map +1 -1
- package/dist/drizzle/transaction-mysql.mjs +1 -1
- package/package.json +1 -1
- package/src/drizzle/d1-emails.ts +158 -40
- package/src/drizzle/d1-identity.ts +13 -0
- package/src/drizzle/d1-oauth.ts +8 -8
- package/src/drizzle/d1-passkey.ts +10 -8
- package/src/drizzle/d1-password-prepared.ts +14 -2
- package/src/drizzle/d1-passwords.ts +22 -4
- package/src/drizzle/d1-phone.ts +4 -2
- package/src/drizzle/d1-proofs.ts +55 -3
- package/src/drizzle/d1-sessions.ts +67 -18
- package/src/drizzle/d1-totp.ts +4 -2
- package/src/drizzle/email-registration.ts +160 -12
- package/src/drizzle/email-target.ts +22 -4
- package/src/drizzle/mysql-emails.ts +17 -7
- package/src/drizzle/mysql-identity.ts +13 -0
- package/src/drizzle/mysql-password-prepared.ts +7 -3
- package/src/drizzle/mysql-passwords.ts +13 -6
- package/src/drizzle/mysql-proofs.ts +7 -3
- package/src/drizzle/mysql-sessions.ts +31 -15
- package/src/drizzle/native-database.ts +5 -4
- package/src/drizzle/oauth-connected-drivers.ts +10 -8
- package/src/drizzle/oauth-connected-flow.ts +98 -10
- package/src/drizzle/oauth-connected-input.ts +7 -0
- package/src/drizzle/oauth-connected-maintenance.ts +3 -2
- package/src/drizzle/oauth-connected-target.ts +4 -2
- package/src/drizzle/oauth-drivers.ts +8 -8
- package/src/drizzle/oauth-target.ts +13 -7
- package/src/drizzle/passkey-drivers.ts +4 -4
- package/src/drizzle/passkey-write-drivers.ts +8 -5
- package/src/drizzle/password-prepared-sql.ts +13 -1
- package/src/drizzle/password-prepared-target.ts +7 -1
- package/src/drizzle/password-registration.ts +10 -3
- package/src/drizzle/password-target.ts +22 -4
- package/src/drizzle/pg-emails.ts +17 -7
- package/src/drizzle/pg-identity.ts +13 -0
- package/src/drizzle/pg-password-prepared.ts +7 -3
- package/src/drizzle/pg-passwords.ts +13 -6
- package/src/drizzle/pg-proofs.ts +7 -3
- package/src/drizzle/pg-sessions.ts +31 -15
- package/src/drizzle/phone-target.ts +30 -5
- package/src/drizzle/proof-target.ts +10 -2
- package/src/drizzle/query-operations.ts +2 -0
- package/src/drizzle/session-target.ts +20 -3
- package/src/drizzle/sqlite-emails.ts +17 -7
- package/src/drizzle/sqlite-identity.ts +5 -0
- package/src/drizzle/sqlite-password-prepared.ts +7 -3
- package/src/drizzle/sqlite-passwords.ts +13 -6
- package/src/drizzle/sqlite-proofs.ts +7 -3
- package/src/drizzle/sqlite-sessions.ts +31 -15
- package/src/drizzle/storage-validation.ts +285 -0
- package/src/drizzle/totp-target.ts +16 -4
|
@@ -5,6 +5,7 @@ import { Database as Database$1 } from "./d1-database.mjs";
|
|
|
5
5
|
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
6
6
|
import { SuppliedService } from "./SuppliedService.mjs";
|
|
7
7
|
import { D1PlanningDatabase } from "./d1-planning.mjs";
|
|
8
|
+
import { NativeDatabase } from "@yielded/auth-persistence/Adapter";
|
|
8
9
|
import { Context, DateTime, Effect, Schema } from "effect";
|
|
9
10
|
import { HookConfigurationError, LifecycleHooks, PreparedCommit } from "@yielded/auth/Hooks";
|
|
10
11
|
import { AuthenticationAuthority, AuthenticationEvidence, AuthenticationRequirement, AuthenticationRevision, PendingAuthentication, PendingAuthenticationInvalid, PendingConsumption, PrepareSessionCommit, SessionConflict, SessionInvalid, SessionRepository, SessionStepUpInvalid, SessionStepUpPersistence, SessionUnavailable, SignedSessionValidity, StaleAuthentication, StatefulSessionPersistence } from "@yielded/auth/Sessions";
|
|
@@ -29,17 +30,17 @@ export declare const makeD1AuthenticationAuthorityServices: <Claims, Subject ext
|
|
|
29
30
|
readonly pending?: PendingConsumption;
|
|
30
31
|
}, prepare: PrepareSessionCommit<void, A>) => Effect.Effect<PreparedCommit<A>, StaleAuthentication | PendingAuthenticationInvalid | SessionUnavailable>;
|
|
31
32
|
};
|
|
32
|
-
},
|
|
33
|
+
}, SessionUnavailable, Database$1 | LifecycleHooks>;
|
|
33
34
|
export declare const makeD1PendingAuthenticationServices: <Claims, Subject extends AnySQLiteTable, Credential extends AnySQLiteTable, Pending extends AnySQLiteTable, Flow extends AnySQLiteTable, NativeSubjectId>(mapping: D1PendingAuthenticationMapping<Claims, Subject, Credential, Pending, Flow, NativeSubjectId>) => Effect.Effect<{
|
|
34
35
|
pendingAuthentication: PendingAuthentication<Claims>;
|
|
35
|
-
},
|
|
36
|
+
}, SessionUnavailable, Database$1 | LifecycleHooks>;
|
|
36
37
|
export declare const makeD1StatefulSessionServices: <Claims, Subject extends AnySQLiteTable, Credential extends AnySQLiteTable, Session extends AnySQLiteTable, Flow extends AnySQLiteTable, Pending extends AnySQLiteTable, NativeSubjectId, NativeSessionId>(mapping: D1StatefulSessionMapping<Claims, Subject, Credential, Session, Flow, Pending, NativeSubjectId, NativeSessionId>) => Effect.Effect<{
|
|
37
38
|
statefulSessionPersistence: StatefulSessionPersistence<Claims>;
|
|
38
39
|
sessionRepository: SessionRepository;
|
|
39
|
-
},
|
|
40
|
+
}, SessionUnavailable, Database$1 | LifecycleHooks>;
|
|
40
41
|
export declare const makeD1SignedSessionValidityServices: <Subject extends AnySQLiteTable, Tombstone extends AnySQLiteTable, NativeSubjectId, NativeSessionId>(mapping: D1SignedSessionValidityMapping<Subject, Tombstone, NativeSubjectId, NativeSessionId>) => Effect.Effect<{
|
|
41
42
|
signedSessionValidity: SignedSessionValidity;
|
|
42
|
-
},
|
|
43
|
+
}, SessionUnavailable, Database$1 | LifecycleHooks>;
|
|
43
44
|
export declare function coordinateD1AuthenticationAuthority<Claims, Subject extends AnySQLiteTable, Credential extends AnySQLiteTable, Flow extends AnySQLiteTable, Pending extends AnySQLiteTable, NativeSubjectId, A, E, R, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>, options: {
|
|
44
45
|
readonly mapping: D1AuthenticationAuthorityMapping<Claims, Subject, Credential, Flow, Pending, NativeSubjectId>;
|
|
45
46
|
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, D1CoordinatorError<E> | DatabaseError, Exclude<R, AuthenticationAuthority | D1BatchStatements> | LifecycleHooks | DatabaseRequirements>;
|
|
@@ -58,7 +59,7 @@ export declare function coordinateD1SignedSessionValidity<TargetId, Subject exte
|
|
|
58
59
|
}, body: Effect.Effect<A, E, R>): Effect.Effect<A, D1CoordinatorError<E> | DatabaseError, Exclude<R, TargetId | D1BatchStatements> | LifecycleHooks | DatabaseRequirements>;
|
|
59
60
|
export declare const makeD1SessionStepUpServices: <Claims, Id, S extends AnySQLiteTable, C extends AnySQLiteTable, I extends AnySQLiteTable, Session extends AnySQLiteTable, T extends AnySQLiteTable, NativeId, NativeSessionId>(mapping: D1SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>, target: Context.Service<Id, SessionStepUpPersistence<Claims>>) => Effect.Effect<{
|
|
60
61
|
sessionStepUpPersistence: SessionStepUpPersistence<Claims>;
|
|
61
|
-
},
|
|
62
|
+
}, SessionUnavailable, Database$1 | LifecycleHooks>;
|
|
62
63
|
export declare function coordinateD1SessionStepUp<Claims, Id, S extends AnySQLiteTable, C extends AnySQLiteTable, I extends AnySQLiteTable, Session extends AnySQLiteTable, T extends AnySQLiteTable, NativeId, NativeSessionId, A, E, R, DatabaseError, DatabaseRequirements>(acquire: Effect.Effect<Database, DatabaseError, DatabaseRequirements>, options: {
|
|
63
64
|
readonly mapping: D1SessionStepUpMapping<NoInfer<Claims>, S, C, I, Session, T, NativeId, NativeSessionId>;
|
|
64
65
|
readonly target: SuppliedService<Id, SessionStepUpPersistence<Claims>>;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { PersistenceMappingError as PersistenceMappingError$1, column, isMappedConstraintConflict, updateValues } from "./model.mjs";
|
|
2
2
|
import { compactD1GeneratedStatement } from "./d1-generated-statement.mjs";
|
|
3
|
+
import { validateDrizzleStorage } from "./storage-validation.mjs";
|
|
3
4
|
import { Database } from "./d1-database.mjs";
|
|
4
5
|
import { D1BatchStatements } from "./D1BatchStatements.mjs";
|
|
5
6
|
import { CurrentD1PlanningDatabase, makeD1Owner } from "./d1-planning.mjs";
|
|
6
|
-
import {
|
|
7
|
+
import { nativeDatabase } from "./native-database.mjs";
|
|
8
|
+
import { NativeDatabase, decodeStepUpIntent, encodeStepUpIntent, stepUpIntentLive, validateStepUpPlan } from "@yielded/auth-persistence/Adapter";
|
|
7
9
|
import { and, eq, getTableColumns, gt, inArray, not, or, sql } from "drizzle-orm";
|
|
8
10
|
import { Cause, Context, Data, DateTime, Effect, Schema } from "effect";
|
|
9
11
|
import { CurrentCommitJournal, LifecycleHooks, coordinateCommit, hasCommitScope } from "@yielded/auth/Hooks";
|
|
@@ -381,6 +383,7 @@ const makeD1StatefulSessions = (mapping) => {
|
|
|
381
383
|
if (input.pending === void 0 && (yield* hasActiveFlow(mapping, input.evidence.flowId))) return yield* SessionConflict.make({});
|
|
382
384
|
const nativeSessionId = yield* allocate(mapping.session.allocateId, mapping.session.allocateIdSync);
|
|
383
385
|
const sessionId = yield* mapping.sessionId.toSession(nativeSessionId);
|
|
386
|
+
if (sessionId === input.handoffSourceSessionId) return yield* SessionConflict.make({});
|
|
384
387
|
const version = yield* allocate(mapping.session.allocateVersion, mapping.session.allocateVersionSync);
|
|
385
388
|
const record = {
|
|
386
389
|
...input.session,
|
|
@@ -388,11 +391,12 @@ const makeD1StatefulSessions = (mapping) => {
|
|
|
388
391
|
version,
|
|
389
392
|
subjectId: input.evidence.revision.subjectId,
|
|
390
393
|
securityRevision: input.evidence.revision.securityRevision,
|
|
391
|
-
assurance: assessed.assurance,
|
|
394
|
+
assurance: input.handoffSourceSessionId === void 0 ? assessed.assurance : input.session.assurance,
|
|
392
395
|
provenance: yield* snapshotSessionAuthenticationProvenance({ evidence: input.evidence }),
|
|
393
396
|
issuedAt: DateTime.makeUnsafe(DateTime.toEpochMillis(input.session.issuedAt))
|
|
394
397
|
};
|
|
395
|
-
|
|
398
|
+
const commitCondition = and(authorityCondition(mapping, nativeSubjectId, input.evidence), freshnessCondition(mapping, input.evidence, policy, true), sql`${DateTime.toEpochMillis(record.issuedAt)} <= ${mapping.d1.engineNowMillis}`, sql`${mapping.d1.engineNowMillis} < ${DateTime.toEpochMillis(record.expiresAt)}`, sql`${DateTime.toEpochMillis(record.expiresAt)} <= ${DateTime.toEpochMillis(record.absoluteExpiresAt)}`);
|
|
399
|
+
let condition = commitCondition;
|
|
396
400
|
const statements = [];
|
|
397
401
|
if (input.pending === void 0) {
|
|
398
402
|
const f = flowColumns(mapping);
|
|
@@ -413,7 +417,7 @@ const makeD1StatefulSessions = (mapping) => {
|
|
|
413
417
|
statements.push(yield* statement(database.insert(mapping.session.table).values(mapping.session.encodeInsert(record, {
|
|
414
418
|
subjectId: nativeSubjectId,
|
|
415
419
|
sessionId: nativeSessionId
|
|
416
|
-
}))));
|
|
420
|
+
}))), yield* assertion(commitCondition));
|
|
417
421
|
return {
|
|
418
422
|
receipt: prepare(record, journal),
|
|
419
423
|
statements: [yield* assertion(condition), ...statements]
|
|
@@ -559,6 +563,7 @@ const makeD1SignedValidity = (mapping) => {
|
|
|
559
563
|
const makeD1SessionServiceEffects = {
|
|
560
564
|
authority: (mapping) => Effect.gen(function* () {
|
|
561
565
|
const database = yield* CurrentD1PlanningDatabase;
|
|
566
|
+
yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(unavailable));
|
|
562
567
|
const hooks = yield* LifecycleHooks;
|
|
563
568
|
const raw = makeD1AuthenticationAuthority(mapping);
|
|
564
569
|
const run = (effect) => Effect.gen(function* () {
|
|
@@ -573,6 +578,7 @@ const makeD1SessionServiceEffects = {
|
|
|
573
578
|
}),
|
|
574
579
|
pending: (mapping) => Effect.gen(function* () {
|
|
575
580
|
const database = yield* CurrentD1PlanningDatabase;
|
|
581
|
+
yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(unavailable));
|
|
576
582
|
const hooks = yield* LifecycleHooks;
|
|
577
583
|
const raw = makeD1PendingAuthentication(mapping);
|
|
578
584
|
const run = (effect) => Effect.gen(function* () {
|
|
@@ -588,6 +594,7 @@ const makeD1SessionServiceEffects = {
|
|
|
588
594
|
}),
|
|
589
595
|
stateful: (mapping) => Effect.gen(function* () {
|
|
590
596
|
const database = yield* CurrentD1PlanningDatabase;
|
|
597
|
+
yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(unavailable));
|
|
591
598
|
const hooks = yield* LifecycleHooks;
|
|
592
599
|
const raw = makeD1StatefulSessions(mapping);
|
|
593
600
|
const run = (effect) => Effect.gen(function* () {
|
|
@@ -608,6 +615,7 @@ const makeD1SessionServiceEffects = {
|
|
|
608
615
|
}),
|
|
609
616
|
validity: (mapping) => Effect.gen(function* () {
|
|
610
617
|
const database = yield* CurrentD1PlanningDatabase;
|
|
618
|
+
yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(unavailable));
|
|
611
619
|
const hooks = yield* LifecycleHooks;
|
|
612
620
|
const raw = makeD1SignedValidity(mapping);
|
|
613
621
|
const run = (effect) => Effect.gen(function* () {
|
|
@@ -631,8 +639,9 @@ const makeD1SessionServiceEffects = {
|
|
|
631
639
|
* Caller failures remain in the error channel. D1 batch/transport failures that
|
|
632
640
|
* cannot be tied to this adapter's reserved guard become `SessionUnavailable`.
|
|
633
641
|
*/
|
|
634
|
-
const coordinateD1SessionBatch = (database, make, owner) => Effect.gen(function* () {
|
|
642
|
+
const coordinateD1SessionBatch = (database, mapping, make, owner) => Effect.gen(function* () {
|
|
635
643
|
if (yield* hasCommitScope) return yield* unavailable();
|
|
644
|
+
yield* validateDrizzleStorage(mapping).pipe(Effect.mapError(unavailable));
|
|
636
645
|
return (yield* coordinateCommit(() => Effect.gen(function* () {
|
|
637
646
|
const statements = [];
|
|
638
647
|
let mutation;
|
|
@@ -662,12 +671,12 @@ const coordinateD1SessionBatch = (database, make, owner) => Effect.gen(function*
|
|
|
662
671
|
return value;
|
|
663
672
|
}), { mode: "batch" }).pipe(Effect.catchCause(recoverCoordinatedD1BatchCause), Effect.provideService(CurrentD1PlanningDatabase, database))).value;
|
|
664
673
|
});
|
|
665
|
-
const makeD1AuthenticationAuthorityServices = (mapping) => makeD1SessionServiceEffects.authority(mapping).pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, Database));
|
|
666
|
-
const makeD1PendingAuthenticationServices = (mapping) => makeD1SessionServiceEffects.pending(mapping).pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, Database));
|
|
667
|
-
const makeD1StatefulSessionServices = (mapping) => makeD1SessionServiceEffects.stateful(mapping).pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, Database));
|
|
668
|
-
const makeD1SignedSessionValidityServices = (mapping) => makeD1SessionServiceEffects.validity(mapping).pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, Database));
|
|
674
|
+
const makeD1AuthenticationAuthorityServices = (mapping) => makeD1SessionServiceEffects.authority(mapping).pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, Database), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)));
|
|
675
|
+
const makeD1PendingAuthenticationServices = (mapping) => makeD1SessionServiceEffects.pending(mapping).pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, Database), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)));
|
|
676
|
+
const makeD1StatefulSessionServices = (mapping) => makeD1SessionServiceEffects.stateful(mapping).pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, Database), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)));
|
|
677
|
+
const makeD1SignedSessionValidityServices = (mapping) => makeD1SessionServiceEffects.validity(mapping).pipe(Effect.provideServiceEffect(CurrentD1PlanningDatabase, Database), Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)));
|
|
669
678
|
function coordinateD1AuthenticationAuthority(acquire, options, body) {
|
|
670
|
-
return Effect.flatMap(acquire, (database) => coordinateD1SessionBatch(database, (batch) => Effect.gen(function* () {
|
|
679
|
+
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateD1SessionBatch(database, options.mapping, (batch) => Effect.gen(function* () {
|
|
671
680
|
const hooks = yield* LifecycleHooks;
|
|
672
681
|
const raw = makeD1AuthenticationAuthority(options.mapping);
|
|
673
682
|
const run = (effect) => batch.owner.run(effect.pipe(Effect.provideService(CurrentD1PlanningDatabase, database), Effect.provideService(LifecycleHooks, hooks), Effect.provideService(CurrentD1SessionBatch, batch)));
|
|
@@ -679,10 +688,10 @@ function coordinateD1AuthenticationAuthority(acquire, options, body) {
|
|
|
679
688
|
}), (ownedServices, batch) => {
|
|
680
689
|
const provided = Context.make(AuthenticationAuthority, ownedServices.authenticationAuthority).pipe(Context.add(D1BatchStatements, batch.owner.collector));
|
|
681
690
|
return Effect.provideContext(body, provided);
|
|
682
|
-
}));
|
|
691
|
+
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
683
692
|
}
|
|
684
693
|
function coordinateD1PendingAuthentication(acquire, options, body) {
|
|
685
|
-
return Effect.flatMap(acquire, (database) => coordinateD1SessionBatch(database, (batch) => Effect.gen(function* () {
|
|
694
|
+
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateD1SessionBatch(database, options.mapping, (batch) => Effect.gen(function* () {
|
|
686
695
|
const hooks = yield* LifecycleHooks;
|
|
687
696
|
const raw = makeD1PendingAuthentication(options.mapping);
|
|
688
697
|
const run = (effect) => batch.owner.run(effect.pipe(Effect.provideService(CurrentD1PlanningDatabase, database), Effect.provideService(LifecycleHooks, hooks), Effect.provideService(CurrentD1SessionBatch, batch)));
|
|
@@ -695,10 +704,10 @@ function coordinateD1PendingAuthentication(acquire, options, body) {
|
|
|
695
704
|
}), (ownedServices, batch) => {
|
|
696
705
|
const provided = Context.make(options.target, ownedServices.pendingAuthentication).pipe(Context.add(D1BatchStatements, batch.owner.collector));
|
|
697
706
|
return Effect.provideContext(body, provided);
|
|
698
|
-
}));
|
|
707
|
+
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
699
708
|
}
|
|
700
709
|
function coordinateD1StatefulSessions(acquire, options, body) {
|
|
701
|
-
return Effect.flatMap(acquire, (database) => coordinateD1SessionBatch(database, (batch) => Effect.gen(function* () {
|
|
710
|
+
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateD1SessionBatch(database, options.mapping, (batch) => Effect.gen(function* () {
|
|
702
711
|
const hooks = yield* LifecycleHooks;
|
|
703
712
|
const raw = makeD1StatefulSessions(options.mapping);
|
|
704
713
|
const run = (effect) => batch.owner.run(effect.pipe(Effect.provideService(CurrentD1PlanningDatabase, database), Effect.provideService(LifecycleHooks, hooks), Effect.provideService(CurrentD1SessionBatch, batch)));
|
|
@@ -716,10 +725,10 @@ function coordinateD1StatefulSessions(acquire, options, body) {
|
|
|
716
725
|
}), (ownedServices, batch) => {
|
|
717
726
|
const provided = Context.make(options.persistence, ownedServices.statefulSessionPersistence).pipe(Context.add(options.repository, ownedServices.sessionRepository), Context.add(D1BatchStatements, batch.owner.collector));
|
|
718
727
|
return Effect.provideContext(body, provided);
|
|
719
|
-
}));
|
|
728
|
+
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
720
729
|
}
|
|
721
730
|
function coordinateD1SignedSessionValidity(acquire, options, body) {
|
|
722
|
-
return Effect.flatMap(acquire, (database) => coordinateD1SessionBatch(database, (batch) => Effect.gen(function* () {
|
|
731
|
+
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateD1SessionBatch(database, options.mapping, (batch) => Effect.gen(function* () {
|
|
723
732
|
const hooks = yield* LifecycleHooks;
|
|
724
733
|
const raw = makeD1SignedValidity(options.mapping);
|
|
725
734
|
const run = (effect) => batch.owner.run(effect.pipe(Effect.provideService(CurrentD1PlanningDatabase, database), Effect.provideService(LifecycleHooks, hooks), Effect.provideService(CurrentD1SessionBatch, batch)));
|
|
@@ -731,7 +740,7 @@ function coordinateD1SignedSessionValidity(acquire, options, body) {
|
|
|
731
740
|
}), (ownedServices, batch) => {
|
|
732
741
|
const provided = Context.make(options.target, ownedServices.signedSessionValidity).pipe(Context.add(D1BatchStatements, batch.owner.collector));
|
|
733
742
|
return Effect.provideContext(body, provided);
|
|
734
|
-
}));
|
|
743
|
+
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
735
744
|
}
|
|
736
745
|
const stepUpColumns = (mapping) => Object.fromEntries([
|
|
737
746
|
"digest",
|
|
@@ -934,6 +943,7 @@ const makeD1SessionStepUp = (mapping) => {
|
|
|
934
943
|
};
|
|
935
944
|
const makeD1SessionStepUpServices = Effect.fnUntraced(function* (mapping, target) {
|
|
936
945
|
const database = yield* Database;
|
|
946
|
+
yield* validateDrizzleStorage(mapping).pipe(Effect.provideServiceEffect(NativeDatabase, nativeDatabase(Database)), Effect.mapError(unavailable));
|
|
937
947
|
const hooks = yield* LifecycleHooks;
|
|
938
948
|
const raw = makeD1SessionStepUp(mapping);
|
|
939
949
|
const run = (effect) => Effect.gen(function* () {
|
|
@@ -949,7 +959,7 @@ const makeD1SessionStepUpServices = Effect.fnUntraced(function* (mapping, target
|
|
|
949
959
|
}) };
|
|
950
960
|
});
|
|
951
961
|
function coordinateD1SessionStepUp(acquire, options, body) {
|
|
952
|
-
return Effect.flatMap(acquire, (database) => coordinateD1SessionBatch(database, (batch) => Effect.gen(function* () {
|
|
962
|
+
return Effect.flatMap(nativeDatabase(acquire), (database) => coordinateD1SessionBatch(database, options.mapping, (batch) => Effect.gen(function* () {
|
|
953
963
|
const hooks = yield* LifecycleHooks;
|
|
954
964
|
const raw = makeD1SessionStepUp(options.mapping);
|
|
955
965
|
const run = (effect) => batch.owner.run(effect.pipe(Effect.provideService(CurrentD1PlanningDatabase, database), Effect.provideService(LifecycleHooks, hooks), Effect.provideService(CurrentD1SessionBatch, batch)));
|
|
@@ -963,7 +973,7 @@ function coordinateD1SessionStepUp(acquire, options, body) {
|
|
|
963
973
|
}), (ownedServices, batch) => {
|
|
964
974
|
const provided = Context.make(options.target, ownedServices.sessionStepUpPersistence).pipe(Context.add(D1BatchStatements, batch.owner.collector));
|
|
965
975
|
return Effect.provideContext(body, provided);
|
|
966
|
-
}));
|
|
976
|
+
}).pipe(Effect.provideService(NativeDatabase, database)));
|
|
967
977
|
}
|
|
968
978
|
//#endregion
|
|
969
979
|
export { coordinateD1AuthenticationAuthority, coordinateD1PendingAuthentication, coordinateD1SessionBatch, coordinateD1SessionStepUp, coordinateD1SignedSessionValidity, coordinateD1StatefulSessions, makeD1AuthenticationAuthority, makeD1AuthenticationAuthorityServices, makeD1PendingAuthentication, makeD1PendingAuthenticationServices, makeD1SessionServiceEffects, makeD1SessionStepUp, makeD1SessionStepUpServices, makeD1SignedSessionValidityServices, makeD1SignedValidity, makeD1StatefulSessionServices, makeD1StatefulSessions };
|