@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.
Files changed (190) hide show
  1. package/dist/D1.d.mts +123 -9
  2. package/dist/Libsql.d.mts +141 -27
  3. package/dist/Mysql2.d.mts +124 -10
  4. package/dist/Pglite.d.mts +124 -10
  5. package/dist/Postgres.d.mts +129 -15
  6. package/dist/SqliteBun.d.mts +135 -21
  7. package/dist/SqliteDo.d.mts +135 -21
  8. package/dist/SqliteNode.d.mts +135 -21
  9. package/dist/SqliteWasm.d.mts +135 -21
  10. package/dist/drizzle/d1-emails.d.mts +3 -3
  11. package/dist/drizzle/d1-emails.mjs +56 -11
  12. package/dist/drizzle/d1-emails.mjs.map +1 -1
  13. package/dist/drizzle/d1-identity.mjs +9 -2
  14. package/dist/drizzle/d1-identity.mjs.map +1 -1
  15. package/dist/drizzle/d1-oauth.d.mts +6 -6
  16. package/dist/drizzle/d1-oauth.mjs +8 -8
  17. package/dist/drizzle/d1-oauth.mjs.map +1 -1
  18. package/dist/drizzle/d1-passkey.d.mts +2 -1
  19. package/dist/drizzle/d1-passkey.mjs +10 -8
  20. package/dist/drizzle/d1-passkey.mjs.map +1 -1
  21. package/dist/drizzle/d1-password-prepared.d.mts +1 -1
  22. package/dist/drizzle/d1-password-prepared.mjs +16 -5
  23. package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
  24. package/dist/drizzle/d1-passwords.d.mts +2 -2
  25. package/dist/drizzle/d1-passwords.mjs +19 -6
  26. package/dist/drizzle/d1-passwords.mjs.map +1 -1
  27. package/dist/drizzle/d1-phone.d.mts +2 -1
  28. package/dist/drizzle/d1-phone.mjs +4 -2
  29. package/dist/drizzle/d1-phone.mjs.map +1 -1
  30. package/dist/drizzle/d1-proofs.d.mts +1 -1
  31. package/dist/drizzle/d1-proofs.mjs +18 -7
  32. package/dist/drizzle/d1-proofs.mjs.map +1 -1
  33. package/dist/drizzle/d1-sessions.d.mts +6 -5
  34. package/dist/drizzle/d1-sessions.mjs +29 -19
  35. package/dist/drizzle/d1-sessions.mjs.map +1 -1
  36. package/dist/drizzle/d1-totp.d.mts +2 -1
  37. package/dist/drizzle/d1-totp.mjs +4 -2
  38. package/dist/drizzle/d1-totp.mjs.map +1 -1
  39. package/dist/drizzle/email-registration.d.mts +5 -1
  40. package/dist/drizzle/email-registration.mjs +48 -4
  41. package/dist/drizzle/email-registration.mjs.map +1 -1
  42. package/dist/drizzle/email-target.d.mts +1 -0
  43. package/dist/drizzle/email-target.mjs +9 -0
  44. package/dist/drizzle/email-target.mjs.map +1 -1
  45. package/dist/drizzle/mysql-emails.d.mts +4 -4
  46. package/dist/drizzle/mysql-emails.mjs +8 -7
  47. package/dist/drizzle/mysql-emails.mjs.map +1 -1
  48. package/dist/drizzle/mysql-identity.mjs +11 -4
  49. package/dist/drizzle/mysql-identity.mjs.map +1 -1
  50. package/dist/drizzle/mysql-password-prepared.d.mts +2 -2
  51. package/dist/drizzle/mysql-password-prepared.mjs +4 -3
  52. package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
  53. package/dist/drizzle/mysql-passwords.d.mts +3 -3
  54. package/dist/drizzle/mysql-passwords.mjs +7 -6
  55. package/dist/drizzle/mysql-passwords.mjs.map +1 -1
  56. package/dist/drizzle/mysql-proofs.d.mts +2 -2
  57. package/dist/drizzle/mysql-proofs.mjs +4 -3
  58. package/dist/drizzle/mysql-proofs.mjs.map +1 -1
  59. package/dist/drizzle/mysql-sessions.d.mts +6 -6
  60. package/dist/drizzle/mysql-sessions.mjs +16 -15
  61. package/dist/drizzle/mysql-sessions.mjs.map +1 -1
  62. package/dist/drizzle/native-database.mjs +1 -1
  63. package/dist/drizzle/native-database.mjs.map +1 -1
  64. package/dist/drizzle/oauth-connected-drivers.mjs +10 -8
  65. package/dist/drizzle/oauth-connected-drivers.mjs.map +1 -1
  66. package/dist/drizzle/oauth-connected-flow.mjs +62 -13
  67. package/dist/drizzle/oauth-connected-flow.mjs.map +1 -1
  68. package/dist/drizzle/oauth-connected-input.mjs +6 -0
  69. package/dist/drizzle/oauth-connected-input.mjs.map +1 -1
  70. package/dist/drizzle/oauth-connected-maintenance.mjs +3 -3
  71. package/dist/drizzle/oauth-connected-maintenance.mjs.map +1 -1
  72. package/dist/drizzle/oauth-connected-target.d.mts +116 -2
  73. package/dist/drizzle/oauth-connected-target.mjs +5 -3
  74. package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
  75. package/dist/drizzle/oauth-drivers.mjs +8 -8
  76. package/dist/drizzle/oauth-drivers.mjs.map +1 -1
  77. package/dist/drizzle/oauth-target.d.mts +3 -3
  78. package/dist/drizzle/oauth-target.mjs +8 -6
  79. package/dist/drizzle/oauth-target.mjs.map +1 -1
  80. package/dist/drizzle/passkey-drivers.mjs +4 -4
  81. package/dist/drizzle/passkey-drivers.mjs.map +1 -1
  82. package/dist/drizzle/passkey-write-drivers.mjs +4 -4
  83. package/dist/drizzle/passkey-write-drivers.mjs.map +1 -1
  84. package/dist/drizzle/passkey-write-target.d.mts +1 -1
  85. package/dist/drizzle/password-prepared-sql.mjs +5 -0
  86. package/dist/drizzle/password-prepared-sql.mjs.map +1 -1
  87. package/dist/drizzle/password-prepared-target.d.mts +2 -1
  88. package/dist/drizzle/password-prepared-target.mjs +5 -0
  89. package/dist/drizzle/password-prepared-target.mjs.map +1 -1
  90. package/dist/drizzle/password-registration.d.mts +1 -1
  91. package/dist/drizzle/password-registration.mjs +2 -0
  92. package/dist/drizzle/password-registration.mjs.map +1 -1
  93. package/dist/drizzle/password-target.d.mts +1 -0
  94. package/dist/drizzle/password-target.mjs +6 -0
  95. package/dist/drizzle/password-target.mjs.map +1 -1
  96. package/dist/drizzle/pg-emails.d.mts +4 -4
  97. package/dist/drizzle/pg-emails.mjs +8 -7
  98. package/dist/drizzle/pg-emails.mjs.map +1 -1
  99. package/dist/drizzle/pg-identity.mjs +12 -5
  100. package/dist/drizzle/pg-identity.mjs.map +1 -1
  101. package/dist/drizzle/pg-password-prepared.d.mts +2 -2
  102. package/dist/drizzle/pg-password-prepared.mjs +4 -3
  103. package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
  104. package/dist/drizzle/pg-passwords.d.mts +3 -3
  105. package/dist/drizzle/pg-passwords.mjs +7 -6
  106. package/dist/drizzle/pg-passwords.mjs.map +1 -1
  107. package/dist/drizzle/pg-proofs.d.mts +2 -2
  108. package/dist/drizzle/pg-proofs.mjs +4 -3
  109. package/dist/drizzle/pg-proofs.mjs.map +1 -1
  110. package/dist/drizzle/pg-sessions.d.mts +6 -6
  111. package/dist/drizzle/pg-sessions.mjs +16 -15
  112. package/dist/drizzle/pg-sessions.mjs.map +1 -1
  113. package/dist/drizzle/phone-target.mjs +11 -2
  114. package/dist/drizzle/phone-target.mjs.map +1 -1
  115. package/dist/drizzle/proof-target.d.mts +1 -0
  116. package/dist/drizzle/proof-target.mjs +2 -0
  117. package/dist/drizzle/proof-target.mjs.map +1 -1
  118. package/dist/drizzle/query-operations.mjs +2 -0
  119. package/dist/drizzle/query-operations.mjs.map +1 -1
  120. package/dist/drizzle/session-target.d.mts +1 -0
  121. package/dist/drizzle/session-target.mjs +9 -6
  122. package/dist/drizzle/session-target.mjs.map +1 -1
  123. package/dist/drizzle/sqlite-emails.mjs +8 -7
  124. package/dist/drizzle/sqlite-emails.mjs.map +1 -1
  125. package/dist/drizzle/sqlite-identity.mjs +7 -2
  126. package/dist/drizzle/sqlite-identity.mjs.map +1 -1
  127. package/dist/drizzle/sqlite-password-prepared.mjs +4 -3
  128. package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
  129. package/dist/drizzle/sqlite-passwords.mjs +7 -6
  130. package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
  131. package/dist/drizzle/sqlite-proofs.mjs +4 -3
  132. package/dist/drizzle/sqlite-proofs.mjs.map +1 -1
  133. package/dist/drizzle/sqlite-sessions.mjs +16 -15
  134. package/dist/drizzle/sqlite-sessions.mjs.map +1 -1
  135. package/dist/drizzle/storage-validation.mjs +234 -0
  136. package/dist/drizzle/storage-validation.mjs.map +1 -0
  137. package/dist/drizzle/totp-target.mjs +5 -2
  138. package/dist/drizzle/totp-target.mjs.map +1 -1
  139. package/dist/drizzle/transaction-mysql.mjs +1 -1
  140. package/package.json +1 -1
  141. package/src/drizzle/d1-emails.ts +158 -40
  142. package/src/drizzle/d1-identity.ts +13 -0
  143. package/src/drizzle/d1-oauth.ts +8 -8
  144. package/src/drizzle/d1-passkey.ts +10 -8
  145. package/src/drizzle/d1-password-prepared.ts +14 -2
  146. package/src/drizzle/d1-passwords.ts +22 -4
  147. package/src/drizzle/d1-phone.ts +4 -2
  148. package/src/drizzle/d1-proofs.ts +55 -3
  149. package/src/drizzle/d1-sessions.ts +67 -18
  150. package/src/drizzle/d1-totp.ts +4 -2
  151. package/src/drizzle/email-registration.ts +160 -12
  152. package/src/drizzle/email-target.ts +22 -4
  153. package/src/drizzle/mysql-emails.ts +17 -7
  154. package/src/drizzle/mysql-identity.ts +13 -0
  155. package/src/drizzle/mysql-password-prepared.ts +7 -3
  156. package/src/drizzle/mysql-passwords.ts +13 -6
  157. package/src/drizzle/mysql-proofs.ts +7 -3
  158. package/src/drizzle/mysql-sessions.ts +31 -15
  159. package/src/drizzle/native-database.ts +5 -4
  160. package/src/drizzle/oauth-connected-drivers.ts +10 -8
  161. package/src/drizzle/oauth-connected-flow.ts +98 -10
  162. package/src/drizzle/oauth-connected-input.ts +7 -0
  163. package/src/drizzle/oauth-connected-maintenance.ts +3 -2
  164. package/src/drizzle/oauth-connected-target.ts +4 -2
  165. package/src/drizzle/oauth-drivers.ts +8 -8
  166. package/src/drizzle/oauth-target.ts +13 -7
  167. package/src/drizzle/passkey-drivers.ts +4 -4
  168. package/src/drizzle/passkey-write-drivers.ts +8 -5
  169. package/src/drizzle/password-prepared-sql.ts +13 -1
  170. package/src/drizzle/password-prepared-target.ts +7 -1
  171. package/src/drizzle/password-registration.ts +10 -3
  172. package/src/drizzle/password-target.ts +22 -4
  173. package/src/drizzle/pg-emails.ts +17 -7
  174. package/src/drizzle/pg-identity.ts +13 -0
  175. package/src/drizzle/pg-password-prepared.ts +7 -3
  176. package/src/drizzle/pg-passwords.ts +13 -6
  177. package/src/drizzle/pg-proofs.ts +7 -3
  178. package/src/drizzle/pg-sessions.ts +31 -15
  179. package/src/drizzle/phone-target.ts +30 -5
  180. package/src/drizzle/proof-target.ts +10 -2
  181. package/src/drizzle/query-operations.ts +2 -0
  182. package/src/drizzle/session-target.ts +20 -3
  183. package/src/drizzle/sqlite-emails.ts +17 -7
  184. package/src/drizzle/sqlite-identity.ts +5 -0
  185. package/src/drizzle/sqlite-password-prepared.ts +7 -3
  186. package/src/drizzle/sqlite-passwords.ts +13 -6
  187. package/src/drizzle/sqlite-proofs.ts +7 -3
  188. package/src/drizzle/sqlite-sessions.ts +31 -15
  189. package/src/drizzle/storage-validation.ts +285 -0
  190. 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
- }, never, Database$1 | LifecycleHooks>;
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
- }, never, Database$1 | LifecycleHooks>;
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
- }, never, Database$1 | LifecycleHooks>;
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
- }, never, Database$1 | LifecycleHooks>;
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
- }, never, Database$1 | LifecycleHooks>;
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 { decodeStepUpIntent, encodeStepUpIntent, stepUpIntentLive, validateStepUpPlan } from "@yielded/auth-persistence/Adapter";
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
- let condition = 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)}`);
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 };