@yielded/auth-persistence 0.1.0-beta.7 → 0.1.0-beta.9
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 +9 -0
- package/dist/DrizzleD1.d.mts +9 -9
- package/dist/DrizzleLibsql.d.mts +25 -25
- package/dist/DrizzleLibsql.mjs +7 -22
- package/dist/DrizzleLibsql.mjs.map +1 -1
- package/dist/DrizzleMysql2.d.mts +15 -15
- package/dist/DrizzlePglite.d.mts +9 -9
- package/dist/DrizzlePostgres.d.mts +15 -15
- package/dist/DrizzleSqliteBun.d.mts +18 -18
- package/dist/DrizzleSqliteDo.d.mts +29 -29
- package/dist/DrizzleSqliteNode.d.mts +24 -24
- package/dist/DrizzleSqliteWasm.d.mts +24 -24
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/drizzle/D1BatchStatements.d.mts +1 -2
- package/dist/drizzle/SuppliedService.d.mts +1 -2
- package/dist/drizzle/d1-emails.d.mts +5 -6
- package/dist/drizzle/d1-identity.d.mts +2 -3
- package/dist/drizzle/d1-oauth.d.mts +10 -11
- package/dist/drizzle/d1-passkey.d.mts +5 -6
- package/dist/drizzle/d1-password-prepared.d.mts +2 -3
- package/dist/drizzle/d1-passwords.d.mts +4 -5
- package/dist/drizzle/d1-phone.d.mts +2 -3
- package/dist/drizzle/d1-planning.d.mts +1 -2
- package/dist/drizzle/d1-proofs.d.mts +2 -3
- package/dist/drizzle/d1-sessions.d.mts +10 -11
- package/dist/drizzle/d1-totp.d.mts +2 -3
- package/dist/drizzle/email-model.d.mts +30 -31
- package/dist/drizzle/email-registration.d.mts +1 -2
- package/dist/drizzle/email-target.d.mts +3 -4
- package/dist/drizzle/model.d.mts +42 -42
- package/dist/drizzle/model.mjs +4 -6
- package/dist/drizzle/model.mjs.map +1 -1
- package/dist/drizzle/mysql-emails.d.mts +7 -8
- package/dist/drizzle/mysql-identity.d.mts +2 -3
- package/dist/drizzle/mysql-password-prepared.d.mts +3 -4
- package/dist/drizzle/mysql-passwords.d.mts +6 -7
- package/dist/drizzle/mysql-proofs.d.mts +3 -4
- package/dist/drizzle/mysql-sessions.d.mts +15 -16
- package/dist/drizzle/mysql.d.mts +9 -10
- package/dist/drizzle/mysql.mjs +1 -1
- package/dist/drizzle/oauth-connected-model.d.mts +21 -22
- package/dist/drizzle/oauth-connected-reference.d.mts +1 -2
- package/dist/drizzle/oauth-connected-state.d.mts +1950 -7
- package/dist/drizzle/oauth-connected-target.d.mts +9 -10
- package/dist/drizzle/oauth-flow.d.mts +22 -2
- package/dist/drizzle/oauth-model.d.mts +45 -46
- package/dist/drizzle/oauth-owner.d.mts +10 -2
- package/dist/drizzle/oauth-target.d.mts +9 -10
- package/dist/drizzle/passkey-model.d.mts +34 -35
- package/dist/drizzle/passkey-registration-ceremony-model.d.mts +5 -6
- package/dist/drizzle/passkey-write-model.d.mts +13 -14
- package/dist/drizzle/password-model.d.mts +29 -30
- package/dist/drizzle/password-prepared-model.d.mts +10 -11
- package/dist/drizzle/password-prepared-target.d.mts +1 -2
- package/dist/drizzle/password-registration.d.mts +1 -2
- package/dist/drizzle/password-target.d.mts +2 -3
- package/dist/drizzle/pg-emails.d.mts +7 -8
- package/dist/drizzle/pg-password-prepared.d.mts +3 -4
- package/dist/drizzle/pg-passwords.d.mts +6 -7
- package/dist/drizzle/pg-proofs.d.mts +3 -4
- package/dist/drizzle/pg-sessions.d.mts +15 -16
- package/dist/drizzle/pg.d.mts +11 -12
- package/dist/drizzle/pg.mjs +1 -1
- package/dist/drizzle/phone-model.d.mts +9 -10
- package/dist/drizzle/phone-target.d.mts +1 -2
- package/dist/drizzle/proof-model.d.mts +25 -26
- package/dist/drizzle/proof-target.d.mts +1 -2
- package/dist/drizzle/session-model.d.mts +25 -26
- package/dist/drizzle/session-target.d.mts +4 -5
- package/dist/drizzle/sqlite.d.mts +9 -10
- package/dist/drizzle/sqlite.mjs +1 -1
- package/dist/drizzle/standalone-guard.mjs +3 -5
- package/dist/drizzle/standalone-guard.mjs.map +1 -1
- package/dist/drizzle/step-up-model.d.mts +6 -7
- package/dist/drizzle/totp-model.d.mts +7 -8
- package/dist/drizzle/totp-state.d.mts +2 -3
- package/dist/drizzle/totp-target.d.mts +1 -2
- package/dist/drizzle/transaction-mysql.mjs +1 -0
- package/dist/drizzle/transaction-mysql.mjs.map +1 -1
- package/dist/drizzle/transaction-owner.d.mts +3 -2
- package/dist/index.d.mts +3 -1
- package/dist/index.mjs +3 -1
- package/dist/internal/configuration.d.mts +19 -19
- package/dist/internal/mapping-error.d.mts +2 -3
- package/dist/internal/oauth-app.d.mts +11 -0
- package/dist/internal/oauth-app.mjs +57 -0
- package/dist/internal/oauth-app.mjs.map +1 -0
- package/dist/internal/oauth-server.d.mts +10 -0
- package/dist/internal/oauth-server.mjs +66 -0
- package/dist/internal/oauth-server.mjs.map +1 -0
- package/dist/internal/passkey/target.d.mts +2 -3
- package/dist/internal/passkeys.mjs +2 -1
- package/dist/internal/passkeys.mjs.map +1 -1
- package/dist/internal/persistence.mjs +3 -2
- package/dist/internal/persistence.mjs.map +1 -1
- package/dist/internal/sql-persistence.d.mts +1 -2
- package/dist/internal/sql-table.d.mts +6 -7
- package/dist/internal/sql-table.mjs +12 -2
- package/dist/internal/sql-table.mjs.map +1 -1
- package/dist/internal/standalone.mjs +13 -0
- package/dist/internal/standalone.mjs.map +1 -0
- package/dist/internal/storage-tables.d.mts +5 -6
- package/dist/internal/transaction-execution-kernel.d.mts +2 -3
- package/dist/internal/transaction-execution-kernel.mjs +3 -5
- package/dist/internal/transaction-execution-kernel.mjs.map +1 -1
- package/dist/internal/transaction-kernel.d.mts +49 -2
- package/package.json +1 -1
- package/src/DrizzleLibsql.ts +10 -54
- package/src/drizzle/model.ts +8 -10
- package/src/drizzle/standalone-guard.ts +4 -9
- package/src/drizzle/transaction-mysql.ts +2 -0
- package/src/index.ts +2 -0
- package/src/internal/oauth-app.ts +82 -0
- package/src/internal/oauth-server.ts +89 -0
- package/src/internal/passkeys.ts +2 -6
- package/src/internal/persistence.ts +3 -5
- package/src/internal/sql-table.ts +17 -2
- package/src/internal/standalone.ts +30 -0
- package/src/internal/transaction-execution-kernel.ts +3 -7
|
@@ -5,35 +5,35 @@ import { PasskeyCeremony, PasskeyCredential, PasskeyCredentials, PasskeyEnrollme
|
|
|
5
5
|
import { SubjectId } from "@yielded/auth/Schema";
|
|
6
6
|
import { InferInsertModel, InferSelectModel, SQL, Table } from "drizzle-orm";
|
|
7
7
|
//#region src/drizzle/passkey-model.d.ts
|
|
8
|
-
type PasskeyColumn<T extends Table> = Extract<keyof T["_"]["columns"], string>;
|
|
9
|
-
type PasskeyMappingSource<M, RSetup = never> = M | Effect.Effect<M, PersistenceMappingError, RSetup>;
|
|
10
|
-
interface PasskeyCredentialServices {
|
|
8
|
+
export type PasskeyColumn<T extends Table> = Extract<keyof T["_"]["columns"], string>;
|
|
9
|
+
export type PasskeyMappingSource<M, RSetup = never> = M | Effect.Effect<M, PersistenceMappingError, RSetup>;
|
|
10
|
+
export interface PasskeyCredentialServices {
|
|
11
11
|
readonly passkeyCredentials: PasskeyCredentials["Service"];
|
|
12
12
|
}
|
|
13
|
-
interface PasskeyPersistenceServices {
|
|
13
|
+
export interface PasskeyPersistenceServices {
|
|
14
14
|
readonly passkeyPersistence: PasskeyPersistence["Service"];
|
|
15
15
|
}
|
|
16
|
-
interface PasskeyEnrollmentContextServices {
|
|
16
|
+
export interface PasskeyEnrollmentContextServices {
|
|
17
17
|
readonly passkeyEnrollmentContext: PasskeyEnrollmentContext["Service"];
|
|
18
18
|
}
|
|
19
|
-
declare const passkeyCredentialsLayer: <E, R>(services: Effect.Effect<PasskeyCredentialServices, E, R>) => Layer.Layer<PasskeyCredentials, E, R>;
|
|
20
|
-
declare const passkeyPersistenceLayer: <E, R>(services: Effect.Effect<PasskeyPersistenceServices, E, R>) => Layer.Layer<PasskeyPersistence, E, R>;
|
|
21
|
-
declare const passkeyEnrollmentContextLayer: <E, R>(services: Effect.Effect<PasskeyEnrollmentContextServices, E, R>) => Layer.Layer<PasskeyEnrollmentContext, E, R>;
|
|
19
|
+
export declare const passkeyCredentialsLayer: <E, R>(services: Effect.Effect<PasskeyCredentialServices, E, R>) => Layer.Layer<PasskeyCredentials, E, R>;
|
|
20
|
+
export declare const passkeyPersistenceLayer: <E, R>(services: Effect.Effect<PasskeyPersistenceServices, E, R>) => Layer.Layer<PasskeyPersistence, E, R>;
|
|
21
|
+
export declare const passkeyEnrollmentContextLayer: <E, R>(services: Effect.Effect<PasskeyEnrollmentContextServices, E, R>) => Layer.Layer<PasskeyEnrollmentContext, E, R>;
|
|
22
22
|
/** Native IDs roundtrip exactly; protocol IDs and authentication references are
|
|
23
23
|
* different identities. These callbacks never suspend inside an owner. */
|
|
24
|
-
interface PasskeySubjectIdCodec<N> {
|
|
24
|
+
export interface PasskeySubjectIdCodec<N> {
|
|
25
25
|
readonly toNative: (id: SubjectId) => N;
|
|
26
26
|
readonly toSubject: (id: N) => SubjectId;
|
|
27
27
|
readonly equals: (left: N, right: N) => boolean;
|
|
28
28
|
}
|
|
29
|
-
interface PasskeyClock {
|
|
29
|
+
export interface PasskeyClock {
|
|
30
30
|
readonly encodeInstant: (millis: number) => unknown;
|
|
31
31
|
readonly decodeInstant: (value: unknown) => number;
|
|
32
32
|
readonly engineNowMillis: SQL;
|
|
33
33
|
readonly toMillis: (expression: SQL) => SQL;
|
|
34
34
|
readonly fromMillis: (expression: SQL) => SQL;
|
|
35
35
|
}
|
|
36
|
-
interface PasskeySubjectReadTable<T extends Table, N> {
|
|
36
|
+
export interface PasskeySubjectReadTable<T extends Table, N> {
|
|
37
37
|
readonly table: T;
|
|
38
38
|
readonly id: PasskeyColumn<T>;
|
|
39
39
|
readonly status: PasskeyColumn<T>;
|
|
@@ -42,7 +42,7 @@ interface PasskeySubjectReadTable<T extends Table, N> {
|
|
|
42
42
|
readonly isActiveStatus: (value: unknown) => boolean;
|
|
43
43
|
readonly activeCondition: SQL;
|
|
44
44
|
}
|
|
45
|
-
interface PasskeyFactorReadTable<T extends Table> {
|
|
45
|
+
export interface PasskeyFactorReadTable<T extends Table> {
|
|
46
46
|
readonly table: T;
|
|
47
47
|
readonly subjectId: PasskeyColumn<T>;
|
|
48
48
|
readonly credentialId: PasskeyColumn<T>;
|
|
@@ -53,7 +53,7 @@ interface PasskeyFactorReadTable<T extends Table> {
|
|
|
53
53
|
}
|
|
54
54
|
/** decode uses only these declared columns. Counter columns are native integral
|
|
55
55
|
* numbers; BS may use a consumer enum. Name/creation metadata is not required. */
|
|
56
|
-
interface PasskeyCredentialReadTable<T extends Table, N> {
|
|
56
|
+
export interface PasskeyCredentialReadTable<T extends Table, N> {
|
|
57
57
|
readonly table: T;
|
|
58
58
|
readonly credentialId: PasskeyColumn<T>;
|
|
59
59
|
readonly subjectId: PasskeyColumn<T>;
|
|
@@ -78,7 +78,7 @@ interface PasskeyCredentialReadTable<T extends Table, N> {
|
|
|
78
78
|
readonly isActiveStatus: (value: unknown) => boolean;
|
|
79
79
|
readonly activeCondition: SQL;
|
|
80
80
|
}
|
|
81
|
-
interface PasskeyCredentialOwnershipTable<T extends Table, N> {
|
|
81
|
+
export interface PasskeyCredentialOwnershipTable<T extends Table, N> {
|
|
82
82
|
readonly table: T;
|
|
83
83
|
readonly credentialKey: PasskeyColumn<T>;
|
|
84
84
|
readonly rpId: PasskeyColumn<T>;
|
|
@@ -93,7 +93,7 @@ interface PasskeyCredentialOwnershipTable<T extends Table, N> {
|
|
|
93
93
|
readonly decodeSubjectId: (row: Readonly<Partial<InferSelectModel<T>>>) => N;
|
|
94
94
|
}
|
|
95
95
|
/** Reservations do not manufacture a subject; bound handles are RP-global. */
|
|
96
|
-
interface PasskeyHandleReadTable<T extends Table> {
|
|
96
|
+
export interface PasskeyHandleReadTable<T extends Table> {
|
|
97
97
|
readonly table: T;
|
|
98
98
|
readonly handleKey: PasskeyColumn<T>;
|
|
99
99
|
readonly rpId: PasskeyColumn<T>;
|
|
@@ -102,24 +102,24 @@ interface PasskeyHandleReadTable<T extends Table> {
|
|
|
102
102
|
readonly version: PasskeyColumn<T>;
|
|
103
103
|
readonly reservationId: PasskeyColumn<T>;
|
|
104
104
|
}
|
|
105
|
-
interface PasskeyHandleReservationTable<T extends Table> extends PasskeyHandleReadTable<T> {
|
|
105
|
+
export interface PasskeyHandleReservationTable<T extends Table> extends PasskeyHandleReadTable<T> {
|
|
106
106
|
readonly reservedCondition: SQL;
|
|
107
107
|
readonly isReservedState: (value: unknown) => boolean;
|
|
108
108
|
}
|
|
109
|
-
interface PasskeyHandleOwnershipTable<T extends Table, N> extends PasskeyHandleReadTable<T> {
|
|
109
|
+
export interface PasskeyHandleOwnershipTable<T extends Table, N> extends PasskeyHandleReadTable<T> {
|
|
110
110
|
readonly subjectId: PasskeyColumn<T>;
|
|
111
111
|
readonly ownedCondition: SQL;
|
|
112
112
|
readonly isOwnedState: (value: unknown) => boolean;
|
|
113
113
|
readonly decodeSubjectId: (row: Readonly<Partial<InferSelectModel<T>>>) => N;
|
|
114
114
|
}
|
|
115
|
-
declare const requiredPasskeyCredentialConstraints: {
|
|
115
|
+
export declare const requiredPasskeyCredentialConstraints: {
|
|
116
116
|
readonly credentialId: readonly ["credentialId"];
|
|
117
117
|
readonly factor: readonly ["subjectId", "credentialId"];
|
|
118
118
|
readonly credentialOwnership: readonly ["credentialKey"];
|
|
119
119
|
readonly handleOwnership: readonly ["handleKey"];
|
|
120
120
|
readonly boundSubjectHandle: readonly ["rpId", "subjectId"];
|
|
121
121
|
};
|
|
122
|
-
interface PasskeyCredentialMapping<S extends Table, C extends Table, F extends Table, Ownership extends Table, Handle extends Table, N> {
|
|
122
|
+
export interface PasskeyCredentialMapping<S extends Table, C extends Table, F extends Table, Ownership extends Table, Handle extends Table, N> {
|
|
123
123
|
readonly subject: PasskeySubjectReadTable<S, N>;
|
|
124
124
|
readonly credential: PasskeyCredentialReadTable<C, N>;
|
|
125
125
|
readonly authority: PasskeyFactorReadTable<F>;
|
|
@@ -131,7 +131,7 @@ interface PasskeyCredentialMapping<S extends Table, C extends Table, F extends T
|
|
|
131
131
|
/** A stable additional policy row, acquired before RP/credential locks. The
|
|
132
132
|
* factory checks column names without erasing the consumer table at its input. */
|
|
133
133
|
declare const PasskeyPolicyGuardTypeId: unique symbol;
|
|
134
|
-
interface PasskeyPolicyGuard {
|
|
134
|
+
export interface PasskeyPolicyGuard {
|
|
135
135
|
readonly [PasskeyPolicyGuardTypeId]: true;
|
|
136
136
|
readonly scope: string;
|
|
137
137
|
readonly table: Table;
|
|
@@ -139,14 +139,14 @@ interface PasskeyPolicyGuard {
|
|
|
139
139
|
readonly where: (moduleId: string) => SQL;
|
|
140
140
|
readonly condition: (moduleId: string) => SQL;
|
|
141
141
|
}
|
|
142
|
-
declare const passkeyPolicyGuard: <T extends Table>(input: {
|
|
142
|
+
export declare const passkeyPolicyGuard: <T extends Table>(input: {
|
|
143
143
|
readonly scope: string;
|
|
144
144
|
readonly table: T;
|
|
145
145
|
readonly columns: ReadonlyArray<PasskeyColumn<T>>;
|
|
146
146
|
readonly where: (moduleId: string) => SQL;
|
|
147
147
|
readonly condition: (moduleId: string) => SQL;
|
|
148
148
|
}) => PasskeyPolicyGuard;
|
|
149
|
-
interface PasskeyModuleTable<T extends Table> {
|
|
149
|
+
export interface PasskeyModuleTable<T extends Table> {
|
|
150
150
|
readonly table: T;
|
|
151
151
|
readonly moduleId: PasskeyColumn<T>;
|
|
152
152
|
readonly status: PasskeyColumn<T>;
|
|
@@ -158,13 +158,13 @@ interface PasskeyModuleTable<T extends Table> {
|
|
|
158
158
|
readonly decodeMethodPolicy: (row: Readonly<Partial<InferSelectModel<T>>>) => PasskeyMethodPolicy;
|
|
159
159
|
readonly guards?: ReadonlyArray<PasskeyPolicyGuard>;
|
|
160
160
|
}
|
|
161
|
-
type PasskeyFlowState = "Pending" | "Claimed" | "Verified" | "Rejected" | "Ambiguous" | "RegistrationAccepted" | "ProvisioningPending";
|
|
162
|
-
interface PasskeyFlowInsert {
|
|
161
|
+
export type PasskeyFlowState = "Pending" | "Claimed" | "Verified" | "Rejected" | "Ambiguous" | "RegistrationAccepted" | "ProvisioningPending";
|
|
162
|
+
export interface PasskeyFlowInsert {
|
|
163
163
|
readonly ceremony: PasskeyCeremony;
|
|
164
164
|
readonly policy: PasskeyMethodPolicy;
|
|
165
165
|
readonly marker: string;
|
|
166
166
|
}
|
|
167
|
-
interface PasskeyFlowTable<T extends Table> {
|
|
167
|
+
export interface PasskeyFlowTable<T extends Table> {
|
|
168
168
|
readonly table: T;
|
|
169
169
|
readonly moduleId: PasskeyColumn<T>;
|
|
170
170
|
readonly flowId: PasskeyColumn<T>;
|
|
@@ -190,7 +190,7 @@ interface PasskeyFlowTable<T extends Table> {
|
|
|
190
190
|
readonly states: Readonly<Record<PasskeyFlowState, unknown>>;
|
|
191
191
|
readonly encodeInsert: (input: PasskeyFlowInsert) => InferInsertModel<T>;
|
|
192
192
|
}
|
|
193
|
-
interface PasskeyAdmissionTable<T extends Table> {
|
|
193
|
+
export interface PasskeyAdmissionTable<T extends Table> {
|
|
194
194
|
readonly table: T;
|
|
195
195
|
readonly authorityScope: PasskeyColumn<T>;
|
|
196
196
|
readonly moduleId: PasskeyColumn<T>;
|
|
@@ -199,8 +199,8 @@ interface PasskeyAdmissionTable<T extends Table> {
|
|
|
199
199
|
/** One physical clock sample, reused by every charge of this decision. */
|
|
200
200
|
readonly admittedAt: PasskeyColumn<T>;
|
|
201
201
|
}
|
|
202
|
-
type PasskeyChargeKind = "global" | "subject" | "target";
|
|
203
|
-
interface PasskeyChargeInsert {
|
|
202
|
+
export type PasskeyChargeKind = "global" | "subject" | "target";
|
|
203
|
+
export interface PasskeyChargeInsert {
|
|
204
204
|
readonly moduleId: string;
|
|
205
205
|
readonly flowId: string;
|
|
206
206
|
readonly purpose: PasskeyCeremony["purpose"];
|
|
@@ -211,7 +211,7 @@ interface PasskeyChargeInsert {
|
|
|
211
211
|
}
|
|
212
212
|
/** Charge scope is canonical core identity text; this subject-free descriptor
|
|
213
213
|
* can count all purposes without decoding any unrelated native subject. */
|
|
214
|
-
interface PasskeyChargeTable<T extends Table> {
|
|
214
|
+
export interface PasskeyChargeTable<T extends Table> {
|
|
215
215
|
readonly table: T;
|
|
216
216
|
readonly moduleId: PasskeyColumn<T>;
|
|
217
217
|
readonly flowId: PasskeyColumn<T>;
|
|
@@ -225,13 +225,13 @@ interface PasskeyChargeTable<T extends Table> {
|
|
|
225
225
|
readonly ownerMarker: PasskeyColumn<T>;
|
|
226
226
|
readonly encodeInsert: (input: PasskeyChargeInsert) => InferInsertModel<T>;
|
|
227
227
|
}
|
|
228
|
-
declare const requiredPasskeyPersistenceConstraints: {
|
|
228
|
+
export declare const requiredPasskeyPersistenceConstraints: {
|
|
229
229
|
readonly flow: readonly ["moduleId", "flowId"];
|
|
230
230
|
readonly command: readonly ["moduleId", "commandId"];
|
|
231
231
|
readonly admission: readonly ["authorityScope", "moduleId"];
|
|
232
232
|
readonly charge: readonly ["moduleId", "flowId", "kind"];
|
|
233
233
|
};
|
|
234
|
-
interface PasskeyCeremonyMapping<Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table> {
|
|
234
|
+
export interface PasskeyCeremonyMapping<Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table> {
|
|
235
235
|
readonly moduleId: string;
|
|
236
236
|
readonly authorityScope: string;
|
|
237
237
|
readonly module: PasskeyModuleTable<Module>;
|
|
@@ -246,7 +246,7 @@ type CredentialTable<Read> = Read extends {
|
|
|
246
246
|
readonly table: infer T extends Table;
|
|
247
247
|
};
|
|
248
248
|
} ? T : never;
|
|
249
|
-
interface PasskeyPersistenceMapping<Read, Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table, N> extends PasskeyCeremonyMapping<Module, Flow, Admission, Charge> {
|
|
249
|
+
export interface PasskeyPersistenceMapping<Read, Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table, N> extends PasskeyCeremonyMapping<Module, Flow, Admission, Charge> {
|
|
250
250
|
readonly read: Read & {
|
|
251
251
|
readonly subjectIds: PasskeySubjectIdCodec<N>;
|
|
252
252
|
};
|
|
@@ -255,18 +255,17 @@ interface PasskeyPersistenceMapping<Read, Module extends Table, Flow extends Tab
|
|
|
255
255
|
readonly encodeBackupState: (value: boolean) => unknown;
|
|
256
256
|
};
|
|
257
257
|
}
|
|
258
|
-
interface PasskeyEnrollmentContextMapping<Read, Module extends Table, N> {
|
|
258
|
+
export interface PasskeyEnrollmentContextMapping<Read, Module extends Table, N> {
|
|
259
259
|
readonly moduleId: string;
|
|
260
260
|
readonly read: Read & {
|
|
261
261
|
readonly subjectIds: PasskeySubjectIdCodec<N>;
|
|
262
262
|
};
|
|
263
263
|
readonly module: PasskeyModuleTable<Module>;
|
|
264
264
|
}
|
|
265
|
-
interface D1PasskeyMapping {
|
|
265
|
+
export interface D1PasskeyMapping {
|
|
266
266
|
readonly d1: {
|
|
267
267
|
readonly primary: true;
|
|
268
268
|
};
|
|
269
269
|
}
|
|
270
270
|
//#endregion
|
|
271
|
-
export { D1PasskeyMapping, PasskeyAdmissionTable, PasskeyCeremonyMapping, PasskeyChargeInsert, PasskeyChargeKind, PasskeyChargeTable, PasskeyClock, PasskeyColumn, PasskeyCredentialMapping, PasskeyCredentialOwnershipTable, PasskeyCredentialReadTable, PasskeyCredentialServices, PasskeyEnrollmentContextMapping, PasskeyEnrollmentContextServices, PasskeyFactorReadTable, PasskeyFlowInsert, PasskeyFlowState, PasskeyFlowTable, PasskeyHandleOwnershipTable, PasskeyHandleReadTable, PasskeyHandleReservationTable, PasskeyMappingSource, PasskeyModuleTable, PasskeyPersistenceMapping, PasskeyPersistenceServices, PasskeyPolicyGuard, PasskeySubjectIdCodec, PasskeySubjectReadTable, passkeyCredentialsLayer, passkeyEnrollmentContextLayer, passkeyPersistenceLayer, passkeyPolicyGuard, requiredPasskeyCredentialConstraints, requiredPasskeyPersistenceConstraints };
|
|
272
271
|
//# sourceMappingURL=passkey-model.d.mts.map
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { PasskeyCeremonyMapping, PasskeyChargeTable, PasskeyColumn, PasskeyFlowTable, PasskeyHandleReservationTable, PasskeyPersistenceServices } from "./passkey-model.mjs";
|
|
2
2
|
import { SQL, Table } from "drizzle-orm";
|
|
3
3
|
//#region src/drizzle/passkey-registration-ceremony-model.d.ts
|
|
4
|
-
interface PasskeyRegistrationCeremonyCapabilities {
|
|
4
|
+
export interface PasskeyRegistrationCeremonyCapabilities {
|
|
5
5
|
readonly purposes: readonly ["registration"];
|
|
6
6
|
readonly issue: "registration-authority";
|
|
7
7
|
readonly assertionSettlement: false;
|
|
8
8
|
}
|
|
9
|
-
interface PasskeyRegistrationCeremonyServices extends PasskeyPersistenceServices {
|
|
9
|
+
export interface PasskeyRegistrationCeremonyServices extends PasskeyPersistenceServices {
|
|
10
10
|
readonly capabilities: PasskeyRegistrationCeremonyCapabilities;
|
|
11
11
|
}
|
|
12
12
|
/** Read-only custody supplied by a separate registration issuance authority.
|
|
13
13
|
* No application payload codec, subject codec or provisioning callback runs here. */
|
|
14
|
-
interface PasskeyRegistrationIntentReadTable<T extends Table> {
|
|
14
|
+
export interface PasskeyRegistrationIntentReadTable<T extends Table> {
|
|
15
15
|
readonly table: T;
|
|
16
16
|
readonly moduleId: PasskeyColumn<T>;
|
|
17
17
|
readonly flowId: PasskeyColumn<T>;
|
|
@@ -29,7 +29,7 @@ interface PasskeyRegistrationIntentReadTable<T extends Table> {
|
|
|
29
29
|
/** Any unresolved initial intent or provisioning job; cleanup never releases it. */
|
|
30
30
|
readonly custodyCondition: SQL;
|
|
31
31
|
}
|
|
32
|
-
declare const requiredPasskeyRegistrationCeremonyConstraints: {
|
|
32
|
+
export declare const requiredPasskeyRegistrationCeremonyConstraints: {
|
|
33
33
|
readonly flow: readonly ["moduleId", "flowId"];
|
|
34
34
|
readonly command: readonly ["moduleId", "commandId"];
|
|
35
35
|
readonly admission: readonly ["authorityScope", "moduleId"];
|
|
@@ -38,7 +38,7 @@ declare const requiredPasskeyRegistrationCeremonyConstraints: {
|
|
|
38
38
|
readonly intentCommand: readonly ["moduleId", "commandId"];
|
|
39
39
|
readonly handle: readonly ["handleKey"];
|
|
40
40
|
};
|
|
41
|
-
interface PasskeyRegistrationCeremonyMapping<Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table, Intent extends Table, Handle extends Table> extends Omit<PasskeyCeremonyMapping<Module, Flow, Admission, Charge>, "constraints" | "flow" | "charge"> {
|
|
41
|
+
export interface PasskeyRegistrationCeremonyMapping<Module extends Table, Flow extends Table, Admission extends Table, Charge extends Table, Intent extends Table, Handle extends Table> extends Omit<PasskeyCeremonyMapping<Module, Flow, Admission, Charge>, "constraints" | "flow" | "charge"> {
|
|
42
42
|
readonly flow: Omit<PasskeyFlowTable<Flow>, "encodeInsert">;
|
|
43
43
|
readonly charge: Omit<PasskeyChargeTable<Charge>, "encodeInsert">;
|
|
44
44
|
readonly intent: PasskeyRegistrationIntentReadTable<Intent>;
|
|
@@ -46,5 +46,4 @@ interface PasskeyRegistrationCeremonyMapping<Module extends Table, Flow extends
|
|
|
46
46
|
readonly constraints: typeof requiredPasskeyRegistrationCeremonyConstraints;
|
|
47
47
|
}
|
|
48
48
|
//#endregion
|
|
49
|
-
export { PasskeyRegistrationCeremonyCapabilities, PasskeyRegistrationCeremonyMapping, PasskeyRegistrationCeremonyServices, PasskeyRegistrationIntentReadTable, requiredPasskeyRegistrationCeremonyConstraints };
|
|
50
49
|
//# sourceMappingURL=passkey-registration-ceremony-model.d.mts.map
|
|
@@ -9,13 +9,13 @@ import { PreparedCommit } from "@yielded/auth/Hooks";
|
|
|
9
9
|
import { SessionInvalidationWindow } from "@yielded/auth/Sessions";
|
|
10
10
|
import { InferInsertModel, InferSelectModel, SQL, Table } from "drizzle-orm";
|
|
11
11
|
//#region src/drizzle/passkey-write-model.d.ts
|
|
12
|
-
interface PasskeyCredentialInsert<N> {
|
|
12
|
+
export interface PasskeyCredentialInsert<N> {
|
|
13
13
|
readonly subjectId: N;
|
|
14
14
|
readonly credential: PasskeyCredential;
|
|
15
15
|
readonly summary: PasskeyCredentialSummary;
|
|
16
16
|
readonly marker: string;
|
|
17
17
|
}
|
|
18
|
-
interface PasskeyWriteTables<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, N> {
|
|
18
|
+
export interface PasskeyWriteTables<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, N> {
|
|
19
19
|
readonly credential: {
|
|
20
20
|
readonly name: PasskeyColumn<C>;
|
|
21
21
|
readonly createdAt: PasskeyColumn<C>;
|
|
@@ -56,26 +56,26 @@ interface PasskeyWriteTables<S extends Table, C extends Table, F extends Table,
|
|
|
56
56
|
readonly remainingSignIn: (subjectId: N, removedCredentialId: string, row: Readonly<Partial<InferSelectModel<S>>>) => Effect.Effect<SQL, PersistenceMappingError>;
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
|
-
interface PasskeyInvalidationInput<N> {
|
|
59
|
+
export interface PasskeyInvalidationInput<N> {
|
|
60
60
|
readonly subjectId: N;
|
|
61
61
|
readonly previousRevision: typeof PasskeyRevision.Type.securityRevision;
|
|
62
62
|
readonly securityRevision: typeof PasskeyRevision.Type.securityRevision;
|
|
63
63
|
readonly invalidation: SessionInvalidationWindow;
|
|
64
64
|
}
|
|
65
|
-
interface PasskeyInvalidationMutation<N> {
|
|
65
|
+
export interface PasskeyInvalidationMutation<N> {
|
|
66
66
|
readonly table: Table;
|
|
67
67
|
readonly where: (input: PasskeyInvalidationInput<N>) => SQL;
|
|
68
68
|
readonly values: (input: PasskeyInvalidationInput<N>) => Readonly<Record<string, unknown>>;
|
|
69
69
|
readonly postcondition: (input: PasskeyInvalidationInput<N>) => SQL;
|
|
70
70
|
}
|
|
71
71
|
/** Same-owner updates for consumer session/pending tables. No external effects or callbacks after commit. */
|
|
72
|
-
declare const passkeyInvalidationMutation: <T extends Table, N>(input: {
|
|
72
|
+
export declare const passkeyInvalidationMutation: <T extends Table, N>(input: {
|
|
73
73
|
readonly table: T;
|
|
74
74
|
readonly where: (input: PasskeyInvalidationInput<N>) => SQL;
|
|
75
75
|
readonly values: (input: PasskeyInvalidationInput<N>) => Partial<InferInsertModel<T>>;
|
|
76
76
|
readonly postcondition: (input: PasskeyInvalidationInput<N>) => SQL;
|
|
77
77
|
}) => PasskeyInvalidationMutation<N>;
|
|
78
|
-
interface PasskeyCommandTable<T extends Table, N> {
|
|
78
|
+
export interface PasskeyCommandTable<T extends Table, N> {
|
|
79
79
|
readonly table: T;
|
|
80
80
|
readonly moduleId: PasskeyColumn<T>;
|
|
81
81
|
readonly commandId: PasskeyColumn<T>;
|
|
@@ -92,7 +92,7 @@ interface PasskeyCommandTable<T extends Table, N> {
|
|
|
92
92
|
readonly credentialId: string;
|
|
93
93
|
}) => InferInsertModel<T>;
|
|
94
94
|
}
|
|
95
|
-
interface PasskeyManagementMapping<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, M extends Table, Flow extends Table, A extends Table, Charge extends Table, Command extends Table, N> extends PasskeyPersistenceMapping<PasskeyCredentialMapping<S, C, F, O, H, N>, M, Flow, A, Charge, N> {
|
|
95
|
+
export interface PasskeyManagementMapping<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, M extends Table, Flow extends Table, A extends Table, Charge extends Table, Command extends Table, N> extends PasskeyPersistenceMapping<PasskeyCredentialMapping<S, C, F, O, H, N>, M, Flow, A, Charge, N> {
|
|
96
96
|
readonly write: PasskeyWriteTables<S, C, F, O, H, N>;
|
|
97
97
|
readonly command: PasskeyCommandTable<Command, N>;
|
|
98
98
|
readonly managementConstraints: typeof requiredPasskeyManagementConstraints;
|
|
@@ -103,13 +103,13 @@ interface PasskeyManagementMapping<S extends Table, C extends Table, F extends T
|
|
|
103
103
|
readonly postcondition: (input: PasskeyInvalidationInput<N>) => SQL;
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
|
-
declare const requiredPasskeyManagementConstraints: {
|
|
106
|
+
export declare const requiredPasskeyManagementConstraints: {
|
|
107
107
|
readonly command: readonly ["moduleId", "commandId"];
|
|
108
108
|
};
|
|
109
|
-
interface PasskeyManagementServices extends PasskeyPersistenceServices {
|
|
109
|
+
export interface PasskeyManagementServices extends PasskeyPersistenceServices {
|
|
110
110
|
readonly passkeyManagementPersistence: PasskeyManagementPersistence["Service"];
|
|
111
111
|
}
|
|
112
|
-
interface PasskeyRegistrationWriter<R> {
|
|
112
|
+
export interface PasskeyRegistrationWriter<R> {
|
|
113
113
|
readonly inspect: (registration: R) => Effect.Effect<{
|
|
114
114
|
readonly fingerprint: TokenDigest;
|
|
115
115
|
readonly eligible: boolean;
|
|
@@ -129,10 +129,10 @@ interface PasskeyRegistrationWriter<R> {
|
|
|
129
129
|
readonly _tag: "Rejected";
|
|
130
130
|
}, A>) => Effect.Effect<PreparedCommit<A>, PasskeyUnavailable>;
|
|
131
131
|
}
|
|
132
|
-
interface PasskeyRegistrationServices<R> extends PasskeyPersistenceServices {
|
|
132
|
+
export interface PasskeyRegistrationServices<R> extends PasskeyPersistenceServices {
|
|
133
133
|
readonly passkeyRegistrationAuthority: PasskeyRegistrationWriter<R>;
|
|
134
134
|
}
|
|
135
|
-
interface PasskeyRegistrationMapping<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, M extends Table, Flow extends Table, A extends Table, Charge extends Table, Intent extends Table, N, R> extends PasskeyPersistenceMapping<PasskeyCredentialMapping<S, C, F, O, H, N>, M, Flow, A, Charge, N> {
|
|
135
|
+
export interface PasskeyRegistrationMapping<S extends Table, C extends Table, F extends Table, O extends Table, H extends Table, M extends Table, Flow extends Table, A extends Table, Charge extends Table, Intent extends Table, N, R> extends PasskeyPersistenceMapping<PasskeyCredentialMapping<S, C, F, O, H, N>, M, Flow, A, Charge, N> {
|
|
136
136
|
readonly write: PasskeyWriteTables<S, C, F, O, H, N>;
|
|
137
137
|
readonly flow: PasskeyFlowTable<Flow>;
|
|
138
138
|
readonly handle: PasskeyHandleReservationTable<H> & {
|
|
@@ -180,11 +180,10 @@ interface PasskeyRegistrationMapping<S extends Table, C extends Table, F extends
|
|
|
180
180
|
};
|
|
181
181
|
readonly registrationConstraints: typeof requiredPasskeyRegistrationWriteConstraints;
|
|
182
182
|
}
|
|
183
|
-
declare const requiredPasskeyRegistrationWriteConstraints: {
|
|
183
|
+
export declare const requiredPasskeyRegistrationWriteConstraints: {
|
|
184
184
|
readonly intentFlow: readonly ["moduleId", "flowId"];
|
|
185
185
|
readonly intentCommand: readonly ["moduleId", "commandId"];
|
|
186
186
|
readonly handle: readonly ["handleKey"];
|
|
187
187
|
};
|
|
188
188
|
//#endregion
|
|
189
|
-
export { PasskeyCommandTable, PasskeyCredentialInsert, PasskeyInvalidationInput, PasskeyInvalidationMutation, PasskeyManagementMapping, PasskeyManagementServices, PasskeyRegistrationMapping, PasskeyRegistrationServices, PasskeyRegistrationWriter, PasskeyWriteTables, passkeyInvalidationMutation, requiredPasskeyManagementConstraints, requiredPasskeyRegistrationWriteConstraints };
|
|
190
189
|
//# sourceMappingURL=passkey-write-model.d.mts.map
|
|
@@ -7,15 +7,15 @@ import { LoginIdentifier, RecoveryReference } from "@yielded/auth/Identity";
|
|
|
7
7
|
import { InferInsertModel, InferSelectModel, SQL, Table } from "drizzle-orm";
|
|
8
8
|
//#region src/drizzle/password-model.d.ts
|
|
9
9
|
type ColumnKey<T extends Table> = Extract<keyof T["_"]["columns"], string>;
|
|
10
|
-
type PasswordAttemptAction = "sign-in" | "change";
|
|
11
|
-
type PasswordAttemptState = "pending" | "verified" | "rejected";
|
|
12
|
-
type PasswordRateScopeKind = "action" | "identifier" | "subject";
|
|
13
|
-
interface PasswordScopeKeys {
|
|
10
|
+
export type PasswordAttemptAction = "sign-in" | "change";
|
|
11
|
+
export type PasswordAttemptState = "pending" | "verified" | "rejected";
|
|
12
|
+
export type PasswordRateScopeKind = "action" | "identifier" | "subject";
|
|
13
|
+
export interface PasswordScopeKeys {
|
|
14
14
|
readonly action: string;
|
|
15
15
|
readonly identifier: string;
|
|
16
16
|
readonly subject?: string;
|
|
17
17
|
}
|
|
18
|
-
interface PasswordSubjectTable<Subject extends Table, _NativeSubjectId> {
|
|
18
|
+
export interface PasswordSubjectTable<Subject extends Table, _NativeSubjectId> {
|
|
19
19
|
readonly table: Subject;
|
|
20
20
|
readonly id: ColumnKey<Subject>;
|
|
21
21
|
readonly status: ColumnKey<Subject>;
|
|
@@ -29,7 +29,7 @@ interface PasswordSubjectTable<Subject extends Table, _NativeSubjectId> {
|
|
|
29
29
|
/** Required only by D1 conditional statements. */
|
|
30
30
|
readonly d1ActiveStatusValue?: unknown;
|
|
31
31
|
}
|
|
32
|
-
interface PasswordIdentifierTable<Identifier extends Table, NativeSubjectId> {
|
|
32
|
+
export interface PasswordIdentifierTable<Identifier extends Table, NativeSubjectId> {
|
|
33
33
|
readonly table: Identifier;
|
|
34
34
|
readonly namespace: ColumnKey<Identifier>;
|
|
35
35
|
readonly value: ColumnKey<Identifier>;
|
|
@@ -45,7 +45,7 @@ interface PasswordIdentifierTable<Identifier extends Table, NativeSubjectId> {
|
|
|
45
45
|
}) => SQL;
|
|
46
46
|
readonly encodeInitialInsert: (identifier: LoginIdentifier, subjectId: NativeSubjectId, bindingRevision: SecurityRevision) => InferInsertModel<Identifier>;
|
|
47
47
|
}
|
|
48
|
-
interface PasswordAuthorityCredentialTable<Credential extends Table, NativeSubjectId> {
|
|
48
|
+
export interface PasswordAuthorityCredentialTable<Credential extends Table, NativeSubjectId> {
|
|
49
49
|
readonly table: Credential;
|
|
50
50
|
readonly subjectId: ColumnKey<Credential>;
|
|
51
51
|
readonly credentialId: ColumnKey<Credential>;
|
|
@@ -60,7 +60,7 @@ interface PasswordAuthorityCredentialTable<Credential extends Table, NativeSubje
|
|
|
60
60
|
}) => InferInsertModel<Credential>;
|
|
61
61
|
readonly encodeRevision: (revision: SecurityRevision) => Partial<InferInsertModel<Credential>>;
|
|
62
62
|
}
|
|
63
|
-
interface PasswordCredentialTable<Subject extends Table, Identifier extends Table, Credential extends Table, NativeSubjectId> {
|
|
63
|
+
export interface PasswordCredentialTable<Subject extends Table, Identifier extends Table, Credential extends Table, NativeSubjectId> {
|
|
64
64
|
readonly table: Credential;
|
|
65
65
|
readonly moduleId: ColumnKey<Credential>;
|
|
66
66
|
readonly subjectId: ColumnKey<Credential>;
|
|
@@ -90,7 +90,7 @@ interface PasswordCredentialTable<Subject extends Table, Identifier extends Tabl
|
|
|
90
90
|
readonly credential: InferSelectModel<Credential>;
|
|
91
91
|
}) => Effect.Effect<PasswordCredentialSnapshot, PersistenceMappingError>;
|
|
92
92
|
}
|
|
93
|
-
interface PasswordAttemptRecord {
|
|
93
|
+
export interface PasswordAttemptRecord {
|
|
94
94
|
readonly moduleId: string;
|
|
95
95
|
readonly action: PasswordAttemptAction;
|
|
96
96
|
readonly attemptId: PasswordAttemptId;
|
|
@@ -105,7 +105,7 @@ interface PasswordAttemptRecord {
|
|
|
105
105
|
readonly deadlineMillis: number;
|
|
106
106
|
readonly retentionUntilMillis: number;
|
|
107
107
|
}
|
|
108
|
-
interface PasswordAttemptTable<Attempt extends Table, NativeSubjectId> {
|
|
108
|
+
export interface PasswordAttemptTable<Attempt extends Table, NativeSubjectId> {
|
|
109
109
|
readonly table: Attempt;
|
|
110
110
|
readonly moduleId: ColumnKey<Attempt>;
|
|
111
111
|
readonly action: ColumnKey<Attempt>;
|
|
@@ -127,7 +127,7 @@ interface PasswordAttemptTable<Attempt extends Table, NativeSubjectId> {
|
|
|
127
127
|
readonly state: "pending";
|
|
128
128
|
}) => InferInsertModel<Attempt>;
|
|
129
129
|
}
|
|
130
|
-
interface PasswordRateScopeTable<RateScope extends Table> {
|
|
130
|
+
export interface PasswordRateScopeTable<RateScope extends Table> {
|
|
131
131
|
readonly table: RateScope;
|
|
132
132
|
readonly moduleId: ColumnKey<RateScope>;
|
|
133
133
|
readonly action: ColumnKey<RateScope>;
|
|
@@ -140,7 +140,7 @@ interface PasswordRateScopeTable<RateScope extends Table> {
|
|
|
140
140
|
readonly scopeKey: string;
|
|
141
141
|
}) => InferInsertModel<RateScope>;
|
|
142
142
|
}
|
|
143
|
-
interface PasswordChargeTable<Charge extends Table> {
|
|
143
|
+
export interface PasswordChargeTable<Charge extends Table> {
|
|
144
144
|
readonly table: Charge;
|
|
145
145
|
readonly moduleId: ColumnKey<Charge>;
|
|
146
146
|
readonly action: ColumnKey<Charge>;
|
|
@@ -159,7 +159,7 @@ interface PasswordChargeTable<Charge extends Table> {
|
|
|
159
159
|
readonly retentionUntilMillis: number;
|
|
160
160
|
}) => InferInsertModel<Charge>;
|
|
161
161
|
}
|
|
162
|
-
interface PasswordCommandTable<Command extends Table> {
|
|
162
|
+
export interface PasswordCommandTable<Command extends Table> {
|
|
163
163
|
readonly table: Command;
|
|
164
164
|
readonly moduleId: ColumnKey<Command>;
|
|
165
165
|
readonly commandId: ColumnKey<Command>;
|
|
@@ -176,7 +176,7 @@ interface PasswordCommandTable<Command extends Table> {
|
|
|
176
176
|
readonly retentionUntilMillis: number;
|
|
177
177
|
}) => InferInsertModel<Command>;
|
|
178
178
|
}
|
|
179
|
-
interface RequiredPasswordConstraints {
|
|
179
|
+
export interface RequiredPasswordConstraints {
|
|
180
180
|
readonly identifier: "unique(identifier.namespace,identifier.value)";
|
|
181
181
|
readonly authorityCredential: "unique(authorityCredential.subjectId,authorityCredential.credentialId)";
|
|
182
182
|
readonly credentialSubject: "unique(credential.moduleId,credential.subjectId)";
|
|
@@ -186,20 +186,20 @@ interface RequiredPasswordConstraints {
|
|
|
186
186
|
readonly charge: "unique(charge.moduleId,charge.action,charge.scopeKind,charge.scopeKey,charge.attemptId)";
|
|
187
187
|
readonly command: "unique(command.moduleId,command.commandId)";
|
|
188
188
|
}
|
|
189
|
-
declare const requiredPasswordConstraints: RequiredPasswordConstraints;
|
|
190
|
-
interface PasswordConstraintClassifier {
|
|
189
|
+
export declare const requiredPasswordConstraints: RequiredPasswordConstraints;
|
|
190
|
+
export interface PasswordConstraintClassifier {
|
|
191
191
|
/** Match only the mapped command uniqueness constraint. */
|
|
192
192
|
readonly isCommandConflict: (cause: unknown) => boolean;
|
|
193
193
|
/** Match only the mapped rate-scope uniqueness constraint. */
|
|
194
194
|
readonly isRateScopeConflict: (cause: unknown) => boolean;
|
|
195
195
|
}
|
|
196
|
-
interface PasswordD1Clock {
|
|
196
|
+
export interface PasswordD1Clock {
|
|
197
197
|
readonly engineNow: SQL;
|
|
198
198
|
readonly engineNowMillis: SQL;
|
|
199
199
|
readonly engineInstantMinus: (millis: number) => SQL;
|
|
200
200
|
readonly engineInstantPlus: (millis: number) => SQL;
|
|
201
201
|
}
|
|
202
|
-
interface PasswordPersistenceMapping<Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Attempt extends Table, RateScope extends Table, Charge extends Table, Command extends Table, NativeSubjectId> extends PasswordConstraintClassifier {
|
|
202
|
+
export interface PasswordPersistenceMapping<Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Attempt extends Table, RateScope extends Table, Charge extends Table, Command extends Table, NativeSubjectId> extends PasswordConstraintClassifier {
|
|
203
203
|
readonly subject: PasswordSubjectTable<Subject, NativeSubjectId>;
|
|
204
204
|
readonly identifier: PasswordIdentifierTable<Identifier, NativeSubjectId>;
|
|
205
205
|
readonly credential: PasswordCredentialTable<Subject, Identifier, Credential, NativeSubjectId>;
|
|
@@ -230,7 +230,7 @@ interface PasswordPersistenceMapping<Subject extends Table, Identifier extends T
|
|
|
230
230
|
readonly sessionInvalidation: "same-authority-immediate" | "original-absolute-expiry";
|
|
231
231
|
readonly d1?: PasswordD1Clock;
|
|
232
232
|
}
|
|
233
|
-
type D1PasswordPersistenceMapping<Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Attempt extends Table, RateScope extends Table, Charge extends Table, Command extends Table, NativeSubjectId> = PasswordPersistenceMapping<Subject, Identifier, Credential, AuthorityCredential, Attempt, RateScope, Charge, Command, NativeSubjectId> & {
|
|
233
|
+
export type D1PasswordPersistenceMapping<Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Attempt extends Table, RateScope extends Table, Charge extends Table, Command extends Table, NativeSubjectId> = PasswordPersistenceMapping<Subject, Identifier, Credential, AuthorityCredential, Attempt, RateScope, Charge, Command, NativeSubjectId> & {
|
|
234
234
|
readonly d1: PasswordD1Clock;
|
|
235
235
|
readonly subject: PasswordSubjectTable<Subject, NativeSubjectId> & {
|
|
236
236
|
readonly d1ActiveStatusValue: unknown;
|
|
@@ -245,15 +245,15 @@ type D1PasswordPersistenceMapping<Subject extends Table, Identifier extends Tabl
|
|
|
245
245
|
readonly d1ActiveStatusValue: unknown;
|
|
246
246
|
};
|
|
247
247
|
};
|
|
248
|
-
type PasswordRegistrationState = "pending" | "created";
|
|
249
|
-
interface PasswordRegistrationIntent<Registration> {
|
|
248
|
+
export type PasswordRegistrationState = "pending" | "created";
|
|
249
|
+
export interface PasswordRegistrationIntent<Registration> {
|
|
250
250
|
readonly moduleId: string;
|
|
251
251
|
readonly requestId: string;
|
|
252
252
|
readonly identifier: LoginIdentifier;
|
|
253
253
|
readonly registration: Registration;
|
|
254
254
|
readonly replacement: PasswordReplacement;
|
|
255
255
|
}
|
|
256
|
-
interface PasswordRegistrationTable<Registration, Request extends Table, NativeSubjectId> {
|
|
256
|
+
export interface PasswordRegistrationTable<Registration, Request extends Table, NativeSubjectId> {
|
|
257
257
|
readonly table: Request;
|
|
258
258
|
readonly moduleId: ColumnKey<Request>;
|
|
259
259
|
readonly requestId: ColumnKey<Request>;
|
|
@@ -270,7 +270,7 @@ interface PasswordRegistrationTable<Registration, Request extends Table, NativeS
|
|
|
270
270
|
readonly _tag: "Created";
|
|
271
271
|
}>, PersistenceMappingError>;
|
|
272
272
|
}
|
|
273
|
-
interface PasswordRegistrationProvisioning<Registration, Subject extends Table, NativeSubjectId> {
|
|
273
|
+
export interface PasswordRegistrationProvisioning<Registration, Subject extends Table, NativeSubjectId> {
|
|
274
274
|
readonly encodeSubjectInsert: (input: PasswordRegistrationIntent<Registration>, values: {
|
|
275
275
|
readonly nativeSubjectId: NativeSubjectId | undefined;
|
|
276
276
|
readonly securityRevision: SecurityRevision;
|
|
@@ -280,20 +280,20 @@ interface PasswordRegistrationProvisioning<Registration, Subject extends Table,
|
|
|
280
280
|
/** Interactive targets use this for database-generated/autoincrement keys. */
|
|
281
281
|
readonly decodeGeneratedId?: (rows: ReadonlyArray<unknown>) => Effect.Effect<NativeSubjectId, PersistenceMappingError>;
|
|
282
282
|
}
|
|
283
|
-
interface RequiredPasswordRegistrationConstraints {
|
|
283
|
+
export interface RequiredPasswordRegistrationConstraints {
|
|
284
284
|
readonly request: "unique(registration.moduleId,registration.requestId)";
|
|
285
285
|
readonly recoveryReference: "unique(registration.recoveryReference)";
|
|
286
286
|
readonly identifier: "unique(identifier.namespace,identifier.value)";
|
|
287
287
|
readonly credentialSubject: "unique(credential.moduleId,credential.subjectId)";
|
|
288
288
|
readonly authorityCredential: "unique(authorityCredential.subjectId,authorityCredential.credentialId)";
|
|
289
289
|
}
|
|
290
|
-
declare const requiredPasswordRegistrationConstraints: RequiredPasswordRegistrationConstraints;
|
|
291
|
-
interface PasswordRegistrationConstraintClassifier {
|
|
290
|
+
export declare const requiredPasswordRegistrationConstraints: RequiredPasswordRegistrationConstraints;
|
|
291
|
+
export interface PasswordRegistrationConstraintClassifier {
|
|
292
292
|
readonly isRequestConflict: (cause: unknown) => boolean;
|
|
293
293
|
readonly isIdentifierConflict: (cause: unknown) => boolean;
|
|
294
294
|
readonly isCredentialConflict: (cause: unknown) => boolean;
|
|
295
295
|
}
|
|
296
|
-
type PasswordRegistrationMapping<Registration, Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Request extends Table, NativeSubjectId> = PasswordRegistrationConstraintClassifier & {
|
|
296
|
+
export type PasswordRegistrationMapping<Registration, Subject extends Table, Identifier extends Table, Credential extends Table, AuthorityCredential extends Table, Request extends Table, NativeSubjectId> = PasswordRegistrationConstraintClassifier & {
|
|
297
297
|
readonly subject: PasswordSubjectTable<Subject, NativeSubjectId>;
|
|
298
298
|
readonly identifier: PasswordIdentifierTable<Identifier, NativeSubjectId>;
|
|
299
299
|
readonly credential: PasswordCredentialTable<Subject, Identifier, Credential, NativeSubjectId>;
|
|
@@ -322,8 +322,7 @@ type PasswordRegistrationMapping<Registration, Subject extends Table, Identifier
|
|
|
322
322
|
readonly allocateRecoveryReference?: Effect.Effect<typeof RecoveryReference.Type, PersistenceMappingError>;
|
|
323
323
|
readonly allocateRecoveryReferenceSync?: () => typeof RecoveryReference.Type;
|
|
324
324
|
});
|
|
325
|
-
type AnyPasswordPersistenceMapping = PasswordPersistenceMapping<Table, Table, Table, Table, Table, Table, Table, Table, unknown>;
|
|
326
|
-
type AnyPasswordRegistrationMapping<Registration = unknown> = PasswordRegistrationMapping<Registration, Table, Table, Table, Table, Table, unknown>;
|
|
325
|
+
export type AnyPasswordPersistenceMapping = PasswordPersistenceMapping<Table, Table, Table, Table, Table, Table, Table, Table, unknown>;
|
|
326
|
+
export type AnyPasswordRegistrationMapping<Registration = unknown> = PasswordRegistrationMapping<Registration, Table, Table, Table, Table, Table, unknown>;
|
|
327
327
|
//#endregion
|
|
328
|
-
export { AnyPasswordPersistenceMapping, AnyPasswordRegistrationMapping, D1PasswordPersistenceMapping, PasswordAttemptAction, PasswordAttemptRecord, PasswordAttemptState, PasswordAttemptTable, PasswordAuthorityCredentialTable, PasswordChargeTable, PasswordCommandTable, PasswordConstraintClassifier, PasswordCredentialTable, PasswordD1Clock, PasswordIdentifierTable, PasswordPersistenceMapping, PasswordRateScopeKind, PasswordRateScopeTable, PasswordRegistrationConstraintClassifier, PasswordRegistrationIntent, PasswordRegistrationMapping, PasswordRegistrationProvisioning, PasswordRegistrationState, PasswordRegistrationTable, PasswordScopeKeys, PasswordSubjectTable, RequiredPasswordConstraints, RequiredPasswordRegistrationConstraints, requiredPasswordConstraints, requiredPasswordRegistrationConstraints };
|
|
329
328
|
//# sourceMappingURL=password-model.d.mts.map
|