@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.
- package/README.md +3 -0
- package/dist/D1.d.mts +9 -9
- package/dist/D1.mjs +2 -1
- package/dist/D1.mjs.map +1 -1
- package/dist/Libsql.d.mts +46 -62
- package/dist/Libsql.mjs +2 -1
- package/dist/Libsql.mjs.map +1 -1
- package/dist/Mysql2.d.mts +24 -25
- package/dist/Pglite.d.mts +26 -26
- package/dist/Pglite.mjs +2 -1
- package/dist/Pglite.mjs.map +1 -1
- package/dist/Postgres.d.mts +27 -27
- package/dist/Postgres.mjs +2 -1
- package/dist/Postgres.mjs.map +1 -1
- package/dist/SqliteBun.d.mts +47 -63
- package/dist/SqliteBun.mjs +2 -1
- package/dist/SqliteBun.mjs.map +1 -1
- package/dist/SqliteDo.d.mts +45 -61
- package/dist/SqliteDo.mjs +2 -1
- package/dist/SqliteDo.mjs.map +1 -1
- package/dist/SqliteNode.d.mts +49 -65
- package/dist/SqliteNode.mjs +2 -1
- package/dist/SqliteNode.mjs.map +1 -1
- package/dist/SqliteWasm.d.mts +45 -61
- package/dist/SqliteWasm.mjs +2 -1
- package/dist/SqliteWasm.mjs.map +1 -1
- package/dist/drizzle/crypto.mjs +1 -1
- package/dist/drizzle/d1-emails.d.mts +1 -1
- package/dist/drizzle/d1-oauth.d.mts +13 -13
- package/dist/drizzle/d1-passkey.d.mts +1 -1
- package/dist/drizzle/d1-password-prepared.d.mts +4 -4
- package/dist/drizzle/d1-password-prepared.mjs.map +1 -1
- package/dist/drizzle/d1-passwords.d.mts +17 -33
- package/dist/drizzle/d1-passwords.mjs +56 -198
- package/dist/drizzle/d1-passwords.mjs.map +1 -1
- package/dist/drizzle/d1-phone.d.mts +1 -1
- package/dist/drizzle/d1-proofs.d.mts +1 -1
- package/dist/drizzle/d1-sessions.d.mts +2 -2
- package/dist/drizzle/d1-sessions.mjs +11 -6
- package/dist/drizzle/d1-sessions.mjs.map +1 -1
- package/dist/drizzle/d1-totp.d.mts +1 -1
- package/dist/drizzle/mysql-password-prepared.d.mts +5 -5
- package/dist/drizzle/mysql-password-prepared.mjs.map +1 -1
- package/dist/drizzle/mysql-passwords.d.mts +16 -32
- package/dist/drizzle/mysql-passwords.mjs.map +1 -1
- package/dist/drizzle/mysql-sessions.d.mts +1 -1
- package/dist/drizzle/native-sql-table.mjs +26 -1
- package/dist/drizzle/native-sql-table.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-model.d.mts +20 -281
- package/dist/drizzle/oauth-connected-model.mjs +3 -17
- package/dist/drizzle/oauth-connected-model.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-reference.d.mts +1 -3
- package/dist/drizzle/oauth-connected-reference.mjs +4 -53
- package/dist/drizzle/oauth-connected-reference.mjs.map +1 -1
- package/dist/drizzle/oauth-connected-target.d.mts +3 -990
- package/dist/drizzle/oauth-connected-target.mjs +8 -92
- package/dist/drizzle/oauth-connected-target.mjs.map +1 -1
- package/dist/drizzle/oauth-kernel.mjs +11 -0
- package/dist/drizzle/oauth-kernel.mjs.map +1 -0
- package/dist/drizzle/oauth-model.d.mts +35 -438
- package/dist/drizzle/oauth-model.mjs +6 -44
- package/dist/drizzle/oauth-model.mjs.map +1 -1
- package/dist/drizzle/oauth-mysql.mjs +2 -2
- package/dist/drizzle/oauth-mysql.mjs.map +1 -1
- package/dist/drizzle/oauth-proxy.d.mts +10 -0
- package/dist/drizzle/oauth-proxy.mjs +54 -0
- package/dist/drizzle/oauth-proxy.mjs.map +1 -0
- package/dist/drizzle/oauth-target.d.mts +6 -107
- package/dist/drizzle/oauth-target.mjs +15 -245
- package/dist/drizzle/oauth-target.mjs.map +1 -1
- package/dist/drizzle/password-model.d.mts +5 -6
- package/dist/drizzle/password-prepared-model.d.mts +5 -5
- package/dist/drizzle/password-prepared-model.mjs.map +1 -1
- package/dist/drizzle/password-prepared-state.mjs +1 -1
- package/dist/drizzle/pg-password-prepared.d.mts +5 -5
- package/dist/drizzle/pg-password-prepared.mjs.map +1 -1
- package/dist/drizzle/pg-passwords.d.mts +16 -32
- package/dist/drizzle/pg-passwords.mjs.map +1 -1
- package/dist/drizzle/pg-sessions.d.mts +1 -1
- package/dist/drizzle/phone-target.d.mts +1 -1
- package/dist/drizzle/phone-target.mjs +1 -1
- package/dist/drizzle/query-operations.mjs +3 -1
- package/dist/drizzle/query-operations.mjs.map +1 -1
- package/dist/drizzle/sqlite-password-prepared.mjs.map +1 -1
- package/dist/drizzle/sqlite-passwords.mjs.map +1 -1
- package/dist/drizzle/storage-validation.mjs +10 -185
- package/dist/drizzle/storage-validation.mjs.map +1 -1
- package/dist/drizzle/totp-target.d.mts +2 -2
- package/dist/drizzle/totp-target.mjs +2 -2
- package/dist/drizzle/transaction-execution.d.mts +2 -2
- package/dist/drizzle/transaction-owner.d.mts +1 -2
- package/dist/index.d.mts +3 -2
- package/dist/internal/drizzle-postgres-oauth-proxy.d.mts +138 -0
- package/dist/internal/drizzle-postgres-oauth-proxy.mjs +29 -0
- package/dist/internal/drizzle-postgres-oauth-proxy.mjs.map +1 -0
- package/dist/internal/drizzle-sqlite-oauth-proxy.d.mts +146 -0
- package/dist/internal/drizzle-sqlite-oauth-proxy.mjs +29 -0
- package/dist/internal/drizzle-sqlite-oauth-proxy.mjs.map +1 -0
- package/package.json +1 -1
- package/src/D1.ts +2 -0
- package/src/Libsql.ts +2 -0
- package/src/Pglite.ts +2 -0
- package/src/Postgres.ts +2 -0
- package/src/SqliteBun.ts +2 -0
- package/src/SqliteDo.ts +2 -0
- package/src/SqliteNode.ts +2 -0
- package/src/SqliteWasm.ts +2 -0
- package/src/drizzle/d1-password-prepared.ts +2 -5
- package/src/drizzle/d1-passwords.ts +123 -458
- package/src/drizzle/d1-sessions.ts +21 -6
- package/src/drizzle/mysql-password-prepared.ts +4 -8
- package/src/drizzle/mysql-passwords.ts +5 -10
- package/src/drizzle/native-sql-table.ts +30 -0
- package/src/drizzle/oauth-connected-model.ts +97 -315
- package/src/drizzle/oauth-connected-reference.ts +13 -93
- package/src/drizzle/oauth-connected-target.ts +14 -271
- package/src/drizzle/oauth-kernel.ts +10 -0
- package/src/drizzle/oauth-model.ts +188 -541
- package/src/drizzle/oauth-mysql.ts +2 -2
- package/src/drizzle/oauth-proxy.ts +101 -0
- package/src/drizzle/oauth-target.ts +33 -737
- package/src/drizzle/password-model.ts +0 -13
- package/src/drizzle/password-prepared-model.ts +0 -6
- package/src/drizzle/pg-password-prepared.ts +4 -8
- package/src/drizzle/pg-passwords.ts +5 -10
- package/src/drizzle/query-operations.ts +4 -0
- package/src/drizzle/sqlite-password-prepared.ts +4 -8
- package/src/drizzle/sqlite-passwords.ts +7 -14
- package/src/drizzle/storage-validation.ts +13 -214
- package/src/index.ts +2 -4
- package/src/internal/drizzle-postgres-oauth-proxy.ts +37 -0
- package/src/internal/drizzle-sqlite-oauth-proxy.ts +44 -0
- package/dist/_virtual/_rolldown/runtime.mjs +0 -13
- package/dist/drizzle/oauth-accounts.mjs +0 -359
- package/dist/drizzle/oauth-accounts.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-access.mjs +0 -212
- package/dist/drizzle/oauth-connected-access.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-collection.mjs +0 -202
- package/dist/drizzle/oauth-connected-collection.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-custody.mjs +0 -147
- package/dist/drizzle/oauth-connected-custody.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-flow.mjs +0 -297
- package/dist/drizzle/oauth-connected-flow.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-input.mjs +0 -122
- package/dist/drizzle/oauth-connected-input.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-maintenance.mjs +0 -214
- package/dist/drizzle/oauth-connected-maintenance.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-management.mjs +0 -229
- package/dist/drizzle/oauth-connected-management.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-settlement.mjs +0 -128
- package/dist/drizzle/oauth-connected-settlement.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-sign-in.mjs +0 -265
- package/dist/drizzle/oauth-connected-sign-in.mjs.map +0 -1
- package/dist/drizzle/oauth-connected-state.d.mts +0 -2062
- package/dist/drizzle/oauth-connected-state.mjs +0 -430
- package/dist/drizzle/oauth-connected-state.mjs.map +0 -1
- package/dist/drizzle/oauth-flow.d.mts +0 -22
- package/dist/drizzle/oauth-flow.mjs +0 -253
- package/dist/drizzle/oauth-flow.mjs.map +0 -1
- package/dist/drizzle/oauth-input.mjs +0 -127
- package/dist/drizzle/oauth-input.mjs.map +0 -1
- package/dist/drizzle/oauth-owner.d.mts +0 -10
- package/dist/drizzle/oauth-owner.mjs +0 -10
- package/dist/drizzle/oauth-owner.mjs.map +0 -1
- package/dist/drizzle/oauth-registration.d.mts +0 -5
- package/dist/drizzle/oauth-registration.mjs +0 -374
- package/dist/drizzle/oauth-registration.mjs.map +0 -1
- package/dist/drizzle/oauth-state.mjs +0 -107
- package/dist/drizzle/oauth-state.mjs.map +0 -1
- package/src/drizzle/oauth-accounts.ts +0 -805
- package/src/drizzle/oauth-connected-access.ts +0 -361
- package/src/drizzle/oauth-connected-collection.ts +0 -324
- package/src/drizzle/oauth-connected-custody.ts +0 -279
- package/src/drizzle/oauth-connected-flow.ts +0 -529
- package/src/drizzle/oauth-connected-input.ts +0 -147
- package/src/drizzle/oauth-connected-maintenance.ts +0 -346
- package/src/drizzle/oauth-connected-management.ts +0 -365
- package/src/drizzle/oauth-connected-settlement.ts +0 -251
- package/src/drizzle/oauth-connected-sign-in.ts +0 -443
- package/src/drizzle/oauth-connected-state.ts +0 -872
- package/src/drizzle/oauth-flow.ts +0 -462
- package/src/drizzle/oauth-input.ts +0 -201
- package/src/drizzle/oauth-owner.ts +0 -29
- package/src/drizzle/oauth-registration.ts +0 -640
- 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
|
-
|
|
561
|
+
AuthenticationCapture,
|
|
561
562
|
StaleAuthentication | D1AdapterFailure,
|
|
562
563
|
CurrentD1PlanningDatabase
|
|
563
564
|
> {
|
|
564
565
|
const details = yield* captureDetails(mapping, subjectId, credentialIds);
|
|
565
566
|
|
|
566
|
-
|
|
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 (
|
|
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 (
|
|
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
|
-
?
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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(
|