@yielded/auth-persistence-drizzle 0.1.0-beta.23 → 0.1.0-beta.24

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 (185) hide show
  1. package/README.md +3 -0
  2. package/dist/D1.d.mts +9 -9
  3. package/dist/D1.mjs +2 -1
  4. package/dist/D1.mjs.map +1 -1
  5. package/dist/Libsql.d.mts +46 -62
  6. package/dist/Libsql.mjs +2 -1
  7. package/dist/Libsql.mjs.map +1 -1
  8. package/dist/Mysql2.d.mts +24 -25
  9. package/dist/Pglite.d.mts +26 -26
  10. package/dist/Pglite.mjs +2 -1
  11. package/dist/Pglite.mjs.map +1 -1
  12. package/dist/Postgres.d.mts +27 -27
  13. package/dist/Postgres.mjs +2 -1
  14. package/dist/Postgres.mjs.map +1 -1
  15. package/dist/SqliteBun.d.mts +47 -63
  16. package/dist/SqliteBun.mjs +2 -1
  17. package/dist/SqliteBun.mjs.map +1 -1
  18. package/dist/SqliteDo.d.mts +45 -61
  19. package/dist/SqliteDo.mjs +2 -1
  20. package/dist/SqliteDo.mjs.map +1 -1
  21. package/dist/SqliteNode.d.mts +49 -65
  22. package/dist/SqliteNode.mjs +2 -1
  23. package/dist/SqliteNode.mjs.map +1 -1
  24. package/dist/SqliteWasm.d.mts +45 -61
  25. package/dist/SqliteWasm.mjs +2 -1
  26. package/dist/SqliteWasm.mjs.map +1 -1
  27. package/dist/drizzle/crypto.mjs +1 -1
  28. package/dist/drizzle/d1-emails.d.mts +1 -1
  29. package/dist/drizzle/d1-oauth.d.mts +13 -13
  30. package/dist/drizzle/d1-passkey.d.mts +1 -1
  31. package/dist/drizzle/d1-password-prepared.d.mts +4 -4
  32. package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
  33. package/dist/drizzle/d1-passwords.d.mts +17 -33
  34. package/dist/drizzle/d1-passwords.mjs +56 -198
  35. package/dist/drizzle/d1-passwords.mjs.map +1 -1
  36. package/dist/drizzle/d1-phone.d.mts +1 -1
  37. package/dist/drizzle/d1-proofs.d.mts +1 -1
  38. package/dist/drizzle/d1-sessions.d.mts +2 -2
  39. package/dist/drizzle/d1-sessions.mjs +11 -6
  40. package/dist/drizzle/d1-sessions.mjs.map +1 -1
  41. package/dist/drizzle/d1-totp.d.mts +1 -1
  42. package/dist/drizzle/mysql-password-prepared.d.mts +5 -5
  43. package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
  44. package/dist/drizzle/mysql-passwords.d.mts +16 -32
  45. package/dist/drizzle/mysql-passwords.mjs.map +1 -1
  46. package/dist/drizzle/mysql-sessions.d.mts +1 -1
  47. package/dist/drizzle/native-sql-table.mjs +26 -1
  48. package/dist/drizzle/native-sql-table.mjs.map +1 -1
  49. package/dist/drizzle/oauth-connected-model.d.mts +20 -281
  50. package/dist/drizzle/oauth-connected-model.mjs +3 -17
  51. package/dist/drizzle/oauth-connected-model.mjs.map +1 -1
  52. package/dist/drizzle/oauth-connected-reference.d.mts +1 -3
  53. package/dist/drizzle/oauth-connected-reference.mjs +4 -53
  54. package/dist/drizzle/oauth-connected-reference.mjs.map +1 -1
  55. package/dist/drizzle/oauth-connected-target.d.mts +3 -990
  56. package/dist/drizzle/oauth-connected-target.mjs +8 -92
  57. package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
  58. package/dist/drizzle/oauth-kernel.mjs +11 -0
  59. package/dist/drizzle/oauth-kernel.mjs.map +1 -0
  60. package/dist/drizzle/oauth-model.d.mts +35 -438
  61. package/dist/drizzle/oauth-model.mjs +6 -44
  62. package/dist/drizzle/oauth-model.mjs.map +1 -1
  63. package/dist/drizzle/oauth-mysql.mjs +2 -2
  64. package/dist/drizzle/oauth-mysql.mjs.map +1 -1
  65. package/dist/drizzle/oauth-proxy.d.mts +10 -0
  66. package/dist/drizzle/oauth-proxy.mjs +54 -0
  67. package/dist/drizzle/oauth-proxy.mjs.map +1 -0
  68. package/dist/drizzle/oauth-target.d.mts +6 -107
  69. package/dist/drizzle/oauth-target.mjs +15 -245
  70. package/dist/drizzle/oauth-target.mjs.map +1 -1
  71. package/dist/drizzle/password-model.d.mts +5 -6
  72. package/dist/drizzle/password-prepared-model.d.mts +5 -5
  73. package/dist/drizzle/password-prepared-model.mjs.map +1 -1
  74. package/dist/drizzle/password-prepared-state.mjs +1 -1
  75. package/dist/drizzle/pg-password-prepared.d.mts +5 -5
  76. package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
  77. package/dist/drizzle/pg-passwords.d.mts +16 -32
  78. package/dist/drizzle/pg-passwords.mjs.map +1 -1
  79. package/dist/drizzle/pg-sessions.d.mts +1 -1
  80. package/dist/drizzle/phone-target.d.mts +1 -1
  81. package/dist/drizzle/phone-target.mjs +1 -1
  82. package/dist/drizzle/query-operations.mjs +3 -1
  83. package/dist/drizzle/query-operations.mjs.map +1 -1
  84. package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
  85. package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
  86. package/dist/drizzle/storage-validation.mjs +10 -185
  87. package/dist/drizzle/storage-validation.mjs.map +1 -1
  88. package/dist/drizzle/totp-target.d.mts +2 -2
  89. package/dist/drizzle/totp-target.mjs +2 -2
  90. package/dist/drizzle/transaction-execution.d.mts +2 -2
  91. package/dist/drizzle/transaction-owner.d.mts +1 -2
  92. package/dist/index.d.mts +3 -2
  93. package/dist/internal/drizzle-postgres-oauth-proxy.d.mts +138 -0
  94. package/dist/internal/drizzle-postgres-oauth-proxy.mjs +29 -0
  95. package/dist/internal/drizzle-postgres-oauth-proxy.mjs.map +1 -0
  96. package/dist/internal/drizzle-sqlite-oauth-proxy.d.mts +146 -0
  97. package/dist/internal/drizzle-sqlite-oauth-proxy.mjs +29 -0
  98. package/dist/internal/drizzle-sqlite-oauth-proxy.mjs.map +1 -0
  99. package/package.json +1 -1
  100. package/src/D1.ts +2 -0
  101. package/src/Libsql.ts +2 -0
  102. package/src/Pglite.ts +2 -0
  103. package/src/Postgres.ts +2 -0
  104. package/src/SqliteBun.ts +2 -0
  105. package/src/SqliteDo.ts +2 -0
  106. package/src/SqliteNode.ts +2 -0
  107. package/src/SqliteWasm.ts +2 -0
  108. package/src/drizzle/d1-password-prepared.ts +2 -5
  109. package/src/drizzle/d1-passwords.ts +123 -458
  110. package/src/drizzle/d1-sessions.ts +21 -6
  111. package/src/drizzle/mysql-password-prepared.ts +4 -8
  112. package/src/drizzle/mysql-passwords.ts +5 -10
  113. package/src/drizzle/native-sql-table.ts +30 -0
  114. package/src/drizzle/oauth-connected-model.ts +97 -315
  115. package/src/drizzle/oauth-connected-reference.ts +13 -93
  116. package/src/drizzle/oauth-connected-target.ts +14 -271
  117. package/src/drizzle/oauth-kernel.ts +10 -0
  118. package/src/drizzle/oauth-model.ts +188 -541
  119. package/src/drizzle/oauth-mysql.ts +2 -2
  120. package/src/drizzle/oauth-proxy.ts +101 -0
  121. package/src/drizzle/oauth-target.ts +33 -737
  122. package/src/drizzle/password-model.ts +0 -13
  123. package/src/drizzle/password-prepared-model.ts +0 -6
  124. package/src/drizzle/pg-password-prepared.ts +4 -8
  125. package/src/drizzle/pg-passwords.ts +5 -10
  126. package/src/drizzle/query-operations.ts +4 -0
  127. package/src/drizzle/sqlite-password-prepared.ts +4 -8
  128. package/src/drizzle/sqlite-passwords.ts +7 -14
  129. package/src/drizzle/storage-validation.ts +13 -214
  130. package/src/index.ts +2 -4
  131. package/src/internal/drizzle-postgres-oauth-proxy.ts +37 -0
  132. package/src/internal/drizzle-sqlite-oauth-proxy.ts +44 -0
  133. package/dist/_virtual/_rolldown/runtime.mjs +0 -13
  134. package/dist/drizzle/oauth-accounts.mjs +0 -359
  135. package/dist/drizzle/oauth-accounts.mjs.map +0 -1
  136. package/dist/drizzle/oauth-connected-access.mjs +0 -212
  137. package/dist/drizzle/oauth-connected-access.mjs.map +0 -1
  138. package/dist/drizzle/oauth-connected-collection.mjs +0 -202
  139. package/dist/drizzle/oauth-connected-collection.mjs.map +0 -1
  140. package/dist/drizzle/oauth-connected-custody.mjs +0 -147
  141. package/dist/drizzle/oauth-connected-custody.mjs.map +0 -1
  142. package/dist/drizzle/oauth-connected-flow.mjs +0 -297
  143. package/dist/drizzle/oauth-connected-flow.mjs.map +0 -1
  144. package/dist/drizzle/oauth-connected-input.mjs +0 -122
  145. package/dist/drizzle/oauth-connected-input.mjs.map +0 -1
  146. package/dist/drizzle/oauth-connected-maintenance.mjs +0 -214
  147. package/dist/drizzle/oauth-connected-maintenance.mjs.map +0 -1
  148. package/dist/drizzle/oauth-connected-management.mjs +0 -229
  149. package/dist/drizzle/oauth-connected-management.mjs.map +0 -1
  150. package/dist/drizzle/oauth-connected-settlement.mjs +0 -128
  151. package/dist/drizzle/oauth-connected-settlement.mjs.map +0 -1
  152. package/dist/drizzle/oauth-connected-sign-in.mjs +0 -265
  153. package/dist/drizzle/oauth-connected-sign-in.mjs.map +0 -1
  154. package/dist/drizzle/oauth-connected-state.d.mts +0 -2062
  155. package/dist/drizzle/oauth-connected-state.mjs +0 -430
  156. package/dist/drizzle/oauth-connected-state.mjs.map +0 -1
  157. package/dist/drizzle/oauth-flow.d.mts +0 -22
  158. package/dist/drizzle/oauth-flow.mjs +0 -253
  159. package/dist/drizzle/oauth-flow.mjs.map +0 -1
  160. package/dist/drizzle/oauth-input.mjs +0 -127
  161. package/dist/drizzle/oauth-input.mjs.map +0 -1
  162. package/dist/drizzle/oauth-owner.d.mts +0 -10
  163. package/dist/drizzle/oauth-owner.mjs +0 -10
  164. package/dist/drizzle/oauth-owner.mjs.map +0 -1
  165. package/dist/drizzle/oauth-registration.d.mts +0 -5
  166. package/dist/drizzle/oauth-registration.mjs +0 -374
  167. package/dist/drizzle/oauth-registration.mjs.map +0 -1
  168. package/dist/drizzle/oauth-state.mjs +0 -107
  169. package/dist/drizzle/oauth-state.mjs.map +0 -1
  170. package/src/drizzle/oauth-accounts.ts +0 -805
  171. package/src/drizzle/oauth-connected-access.ts +0 -361
  172. package/src/drizzle/oauth-connected-collection.ts +0 -324
  173. package/src/drizzle/oauth-connected-custody.ts +0 -279
  174. package/src/drizzle/oauth-connected-flow.ts +0 -529
  175. package/src/drizzle/oauth-connected-input.ts +0 -147
  176. package/src/drizzle/oauth-connected-maintenance.ts +0 -346
  177. package/src/drizzle/oauth-connected-management.ts +0 -365
  178. package/src/drizzle/oauth-connected-settlement.ts +0 -251
  179. package/src/drizzle/oauth-connected-sign-in.ts +0 -443
  180. package/src/drizzle/oauth-connected-state.ts +0 -872
  181. package/src/drizzle/oauth-flow.ts +0 -462
  182. package/src/drizzle/oauth-input.ts +0 -201
  183. package/src/drizzle/oauth-owner.ts +0 -29
  184. package/src/drizzle/oauth-registration.ts +0 -640
  185. package/src/drizzle/oauth-state.ts +0 -218
@@ -17,6 +17,7 @@ import { reportPersistenceFailure } from "@yielded/auth/Persistence";
17
17
  import type { SubjectId, TokenDigest } from "@yielded/auth/Schema";
18
18
  import {
19
19
  assessAuthentication,
20
+ AuthenticationCapture,
20
21
  snapshotSessionAuthenticationProvenance,
21
22
  AuthenticationAuthority,
22
23
  PendingAuthenticationInvalid,
@@ -557,13 +558,18 @@ const capture = Effect.fn("DrizzleD1Session.capture")(function* (
557
558
  subjectId: SubjectId,
558
559
  credentialIds: ReadonlyArray<string>,
559
560
  ): Effect.fn.Return<
560
- AuthenticationRevision,
561
+ AuthenticationCapture,
561
562
  StaleAuthentication | D1AdapterFailure,
562
563
  CurrentD1PlanningDatabase
563
564
  > {
564
565
  const details = yield* captureDetails(mapping, subjectId, credentialIds);
565
566
 
566
- return details.revision;
567
+ const requirement = yield* mapping.subject.decodeRequirement(details.subject);
568
+
569
+ return yield* Schema.decodeEffect(AuthenticationCapture)({
570
+ revision: details.revision,
571
+ requirement,
572
+ });
567
573
  });
568
574
 
569
575
  const requirement = Effect.fn("DrizzleD1Session.requirement")(function* (
@@ -1122,7 +1128,11 @@ export const makeD1StatefulSessions = <Claims>(
1122
1128
  input.evidence.revision.subjectId,
1123
1129
  );
1124
1130
 
1125
- if (input.pending === undefined && (yield* hasActiveFlow(mapping, input.evidence.flowId)))
1131
+ if (
1132
+ input.pending === undefined &&
1133
+ (input.fresh !== true || input.handoffSourceSessionId !== undefined) &&
1134
+ (yield* hasActiveFlow(mapping, input.evidence.flowId))
1135
+ )
1126
1136
  return yield* SessionConflict.make({});
1127
1137
 
1128
1138
  const nativeSessionId = yield* allocate(
@@ -1169,7 +1179,10 @@ export const makeD1StatefulSessions = <Claims>(
1169
1179
  let condition = commitCondition;
1170
1180
  const statements: Statement<any>[] = [];
1171
1181
 
1172
- if (input.pending === undefined) {
1182
+ if (
1183
+ input.pending === undefined &&
1184
+ (input.fresh !== true || input.handoffSourceSessionId !== undefined)
1185
+ ) {
1173
1186
  const f = flowColumns(mapping);
1174
1187
 
1175
1188
  condition = and(
@@ -1205,7 +1218,7 @@ export const makeD1StatefulSessions = <Claims>(
1205
1218
  ),
1206
1219
  ),
1207
1220
  );
1208
- } else {
1221
+ } else if (input.pending !== undefined) {
1209
1222
  if (mapping.pending === undefined) return yield* invalidPending();
1210
1223
  const stored = yield* readPending(mapping, input.pending.digest);
1211
1224
 
@@ -1244,7 +1257,9 @@ export const makeD1StatefulSessions = <Claims>(
1244
1257
  CurrentD1PlanningDatabase
1245
1258
  >(() =>
1246
1259
  input.pending === undefined
1247
- ? recoverFlowOrStale(mapping, input.evidence.flowId)
1260
+ ? input.fresh === true && input.handoffSourceSessionId === undefined
1261
+ ? Effect.fail(stale())
1262
+ : recoverFlowOrStale(mapping, input.evidence.flowId)
1248
1263
  : recoverPendingOrStale(mapping, input.pending, input.evidence.revision.subjectId),
1249
1264
  ),
1250
1265
  ),
@@ -29,7 +29,6 @@ export const makeMySqlPasswordPreparedPersistenceServices = <
29
29
  I extends AnyMySqlTable,
30
30
  C extends AnyMySqlTable,
31
31
  AC extends AnyMySqlTable,
32
- A extends AnyMySqlTable,
33
32
  M extends AnyMySqlTable,
34
33
  T extends AnyMySqlTable,
35
34
  B extends AnyMySqlTable,
@@ -42,7 +41,7 @@ export const makeMySqlPasswordPreparedPersistenceServices = <
42
41
  PCr extends AnyMySqlTable = AnyMySqlTable,
43
42
  PNativeId = unknown,
44
43
  >(
45
- mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, M, T, B, NativeId>,
44
+ mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>,
46
45
  proofMapping?: PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>,
47
46
  ) =>
48
47
  Effect.flatMap(
@@ -61,7 +60,6 @@ export function coordinateMySqlPasswordPreparedPersistence<
61
60
  I extends AnyMySqlTable,
62
61
  C extends AnyMySqlTable,
63
62
  AC extends AnyMySqlTable,
64
- A extends AnyMySqlTable,
65
63
  M extends AnyMySqlTable,
66
64
  T extends AnyMySqlTable,
67
65
  B extends AnyMySqlTable,
@@ -81,7 +79,7 @@ export function coordinateMySqlPasswordPreparedPersistence<
81
79
  >(
82
80
  acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
83
81
  options: {
84
- readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, M, T, B, NativeId>;
82
+ readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;
85
83
  readonly proofMapping?:
86
84
  | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
87
85
  | undefined;
@@ -102,7 +100,6 @@ export function coordinateMySqlPasswordPreparedPersistence<
102
100
  I extends AnyMySqlTable,
103
101
  C extends AnyMySqlTable,
104
102
  AC extends AnyMySqlTable,
105
- A extends AnyMySqlTable,
106
103
  M extends AnyMySqlTable,
107
104
  T extends AnyMySqlTable,
108
105
  B extends AnyMySqlTable,
@@ -124,7 +121,7 @@ export function coordinateMySqlPasswordPreparedPersistence<
124
121
  >(
125
122
  acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
126
123
  options: {
127
- readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, M, T, B, NativeId>;
124
+ readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;
128
125
  readonly proofMapping?:
129
126
  | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
130
127
  | undefined;
@@ -145,7 +142,6 @@ export function coordinateMySqlPasswordPreparedPersistence<
145
142
  I extends AnyMySqlTable,
146
143
  C extends AnyMySqlTable,
147
144
  AC extends AnyMySqlTable,
148
- A extends AnyMySqlTable,
149
145
  M extends AnyMySqlTable,
150
146
  T extends AnyMySqlTable,
151
147
  B extends AnyMySqlTable,
@@ -167,7 +163,7 @@ export function coordinateMySqlPasswordPreparedPersistence<
167
163
  >(
168
164
  acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
169
165
  options: {
170
- readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, A, M, T, B, NativeId>;
166
+ readonly mapping: PasswordPreparedPersistenceMapping<S, I, C, AC, M, T, B, NativeId>;
171
167
  readonly proofMapping?:
172
168
  | PasswordPreparedProofMapping<PS, PC, PM, PSub, PI, PCr, PNativeId>
173
169
  | undefined;
@@ -55,21 +55,19 @@ type Mapping<
55
55
  I extends AnyMySqlTable,
56
56
  C extends AnyMySqlTable,
57
57
  AC extends AnyMySqlTable,
58
- A extends AnyMySqlTable,
59
58
  M extends AnyMySqlTable,
60
59
  NativeId,
61
- > = PasswordPersistenceMapping<S, I, C, AC, A, M, NativeId>;
60
+ > = PasswordPersistenceMapping<S, I, C, AC, M, NativeId>;
62
61
 
63
62
  export const makeMysqlPasswordPersistenceServices = <
64
63
  S extends AnyMySqlTable,
65
64
  I extends AnyMySqlTable,
66
65
  C extends AnyMySqlTable,
67
66
  AC extends AnyMySqlTable,
68
- A extends AnyMySqlTable,
69
67
  M extends AnyMySqlTable,
70
68
  NativeId,
71
69
  >(
72
- mapping: Mapping<S, I, C, AC, A, M, NativeId>,
70
+ mapping: Mapping<S, I, C, AC, M, NativeId>,
73
71
  proofMapping?: ProofPersistenceMapping<
74
72
  any,
75
73
  any,
@@ -99,7 +97,6 @@ export function coordinateMysqlPasswordPersistence<
99
97
  I extends AnyMySqlTable,
100
98
  C extends AnyMySqlTable,
101
99
  AC extends AnyMySqlTable,
102
- A extends AnyMySqlTable,
103
100
  M extends AnyMySqlTable,
104
101
  NativeId,
105
102
  PM extends
@@ -113,7 +110,7 @@ export function coordinateMysqlPasswordPersistence<
113
110
  >(
114
111
  acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
115
112
  options: {
116
- readonly mapping: Mapping<S, I, C, AC, A, M, NativeId>;
113
+ readonly mapping: Mapping<S, I, C, AC, M, NativeId>;
117
114
  readonly proofMapping?: PM;
118
115
  readonly transaction?: never;
119
116
  },
@@ -130,7 +127,6 @@ export function coordinateMysqlPasswordPersistence<
130
127
  I extends AnyMySqlTable,
131
128
  C extends AnyMySqlTable,
132
129
  AC extends AnyMySqlTable,
133
- A extends AnyMySqlTable,
134
130
  M extends AnyMySqlTable,
135
131
  NativeId,
136
132
  PM extends
@@ -146,7 +142,7 @@ export function coordinateMysqlPasswordPersistence<
146
142
  >(
147
143
  acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
148
144
  options: {
149
- readonly mapping: Mapping<S, I, C, AC, A, M, NativeId>;
145
+ readonly mapping: Mapping<S, I, C, AC, M, NativeId>;
150
146
  readonly proofMapping?: PM;
151
147
  readonly transaction: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
152
148
  },
@@ -163,7 +159,6 @@ export function coordinateMysqlPasswordPersistence<
163
159
  I extends AnyMySqlTable,
164
160
  C extends AnyMySqlTable,
165
161
  AC extends AnyMySqlTable,
166
- A extends AnyMySqlTable,
167
162
  M extends AnyMySqlTable,
168
163
  NativeId,
169
164
  PM extends
@@ -179,7 +174,7 @@ export function coordinateMysqlPasswordPersistence<
179
174
  >(
180
175
  acquire: Effect.Effect<D, DatabaseError, DatabaseRequirements>,
181
176
  options: {
182
- readonly mapping: Mapping<S, I, C, AC, A, M, NativeId>;
177
+ readonly mapping: Mapping<S, I, C, AC, M, NativeId>;
183
178
  readonly proofMapping?: PM;
184
179
  readonly transaction?: SuppliedService<TxId, NoInfer<TransactionOf<D>>, TxShape>;
185
180
  },
@@ -7,6 +7,7 @@ import {
7
7
  } from "@yielded/auth-persistence/Adapter";
8
8
  import {
9
9
  getTableColumns,
10
+ getTableName,
10
11
  is,
11
12
  Param,
12
13
  Placeholder,
@@ -16,6 +17,8 @@ import {
16
17
  type BuildQueryConfig,
17
18
  type SQLWrapper,
18
19
  } from "drizzle-orm";
20
+ import { getTableConfig as getMysqlTableConfig, MySqlTable } from "drizzle-orm/mysql-core";
21
+ import { getTableConfig as getPgTableConfig, PgTable } from "drizzle-orm/pg-core";
19
22
  import { Predicate } from "effect";
20
23
  import type { SqlClient } from "effect/sql/SqlClient";
21
24
  import * as Statement from "effect/sql/Statement";
@@ -157,6 +160,14 @@ export const makeDrizzleSqlTables = (
157
160
  const columns = getTableColumns(physical);
158
161
  const entries = Object.entries(columns);
159
162
 
163
+ const schema = is(physical, PgTable)
164
+ ? getPgTableConfig(physical).schema
165
+ : is(physical, MySqlTable)
166
+ ? getMysqlTableConfig(physical).schema
167
+ : undefined;
168
+
169
+ const table = { name: getTableName(physical), ...(schema === undefined ? {} : { schema }) };
170
+
160
171
  const getColumn = (key: string) => {
161
172
  const column = Object.hasOwn(columns, key) ? columns[key] : undefined;
162
173
 
@@ -180,6 +191,25 @@ export const makeDrizzleSqlTables = (
180
191
  ),
181
192
  as: bind,
182
193
  column: (key) => compile(reference(key)),
194
+ unencodedTextColumn: (key) => {
195
+ const column = getColumn(key);
196
+
197
+ return ["PgText", "PgVarchar", "SQLiteText", "MySqlText", "MySqlVarChar"].includes(
198
+ column.columnType,
199
+ ) &&
200
+ Predicate.hasProperty(column.mapToDriverValue, "isNoop") &&
201
+ column.mapToDriverValue.isNoop === true &&
202
+ Predicate.hasProperty(column.mapFromDriverValue, "isNoop") &&
203
+ column.mapFromDriverValue.isNoop === true &&
204
+ (dialect.codecs === undefined ||
205
+ (Predicate.hasProperty(dialect.codecs, "get") &&
206
+ typeof dialect.codecs.get === "function" &&
207
+ (["cast", "normalize", "castParam", "normalizeParam"] as const).every(
208
+ (kind) => dialect.codecs?.get(column, kind) === undefined,
209
+ )))
210
+ ? { table, name: column.name }
211
+ : undefined;
212
+ },
183
213
  fields: (prefix) =>
184
214
  compile(
185
215
  sql.join(