@passlock/server 2.1.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/effect.d.ts +8 -0
- package/dist/effect.d.ts.map +1 -1
- package/dist/effect.js +8 -0
- package/dist/effect.js.map +1 -1
- package/dist/errors.d.ts +65 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +36 -5
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +63 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +60 -18
- package/dist/index.js.map +1 -1
- package/dist/network.d.ts +3 -3
- package/dist/passkey/passkey.d.ts +267 -10
- package/dist/passkey/passkey.d.ts.map +1 -1
- package/dist/passkey/passkey.js +161 -5
- package/dist/passkey/passkey.js.map +1 -1
- package/dist/principal/principal.d.ts +45 -1
- package/dist/principal/principal.d.ts.map +1 -1
- package/dist/principal/principal.js +27 -0
- package/dist/principal/principal.js.map +1 -1
- package/dist/safe-result.d.ts +33 -0
- package/dist/safe-result.d.ts.map +1 -0
- package/dist/safe-result.js +35 -0
- package/dist/safe-result.js.map +1 -0
- package/dist/safe.d.ts +87 -30
- package/dist/safe.d.ts.map +1 -1
- package/dist/safe.js +90 -30
- package/dist/safe.js.map +1 -1
- package/dist/schemas/passkey.d.ts +160 -0
- package/dist/schemas/passkey.d.ts.map +1 -1
- package/dist/schemas/passkey.js +90 -12
- package/dist/schemas/passkey.js.map +1 -1
- package/dist/schemas/principal.d.ts +50 -0
- package/dist/schemas/principal.d.ts.map +1 -1
- package/dist/schemas/principal.js +30 -0
- package/dist/schemas/principal.js.map +1 -1
- package/dist/schemas/signup.d.ts +20 -0
- package/dist/schemas/signup.d.ts.map +1 -1
- package/dist/schemas/signup.js +10 -0
- package/dist/schemas/signup.js.map +1 -1
- package/dist/shared.d.ts +18 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,9 +1,62 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* Valid user verification requirements for WebAuthn operations.
|
|
4
|
+
*
|
|
5
|
+
* @category Passkeys
|
|
6
|
+
*/
|
|
2
7
|
export declare const UserVerification: Schema.Literal<["required", "preferred", "discouraged"]>;
|
|
8
|
+
/**
|
|
9
|
+
* Possible device types reported for a passkey credential.
|
|
10
|
+
*
|
|
11
|
+
* @category Passkeys
|
|
12
|
+
*/
|
|
3
13
|
export declare const CredentialDeviceType: readonly ["singleDevice", "multiDevice"];
|
|
14
|
+
/**
|
|
15
|
+
* Union of device types reported for a passkey credential.
|
|
16
|
+
*
|
|
17
|
+
* @category Passkeys
|
|
18
|
+
*/
|
|
4
19
|
export type CredentialDeviceType = (typeof CredentialDeviceType)[number];
|
|
20
|
+
/**
|
|
21
|
+
* Possible authenticator transport hints exposed by Passlock.
|
|
22
|
+
*
|
|
23
|
+
* @category Passkeys
|
|
24
|
+
*/
|
|
5
25
|
export declare const Transports: readonly ["ble", "hybrid", "internal", "nfc", "usb", "cable", "smart-card"];
|
|
26
|
+
/**
|
|
27
|
+
* Union of authenticator transport hints exposed by Passlock.
|
|
28
|
+
*
|
|
29
|
+
* @category Passkeys
|
|
30
|
+
*/
|
|
6
31
|
export type Transports = (typeof Transports)[number];
|
|
32
|
+
/**
|
|
33
|
+
* Schema for the WebAuthn credential portion of a passkey.
|
|
34
|
+
*
|
|
35
|
+
* @category Passkeys
|
|
36
|
+
*/
|
|
37
|
+
export declare const PasskeyCredential: Schema.Struct<{
|
|
38
|
+
id: typeof Schema.String;
|
|
39
|
+
userId: typeof Schema.String;
|
|
40
|
+
username: typeof Schema.String;
|
|
41
|
+
aaguid: typeof Schema.String;
|
|
42
|
+
backedUp: typeof Schema.Boolean;
|
|
43
|
+
counter: typeof Schema.Number;
|
|
44
|
+
deviceType: Schema.Literal<["singleDevice", "multiDevice"]>;
|
|
45
|
+
transports: Schema.Array$<Schema.Literal<["ble", "hybrid", "internal", "nfc", "usb", "cable", "smart-card"]>>;
|
|
46
|
+
publicKey: Schema.Schema<Uint8Array<ArrayBufferLike>, string, never>;
|
|
47
|
+
rpId: typeof Schema.String;
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* Type produced by {@link PasskeyCredential}.
|
|
51
|
+
*
|
|
52
|
+
* @category Passkeys
|
|
53
|
+
*/
|
|
54
|
+
export type PasskeyCredential = typeof PasskeyCredential.Type;
|
|
55
|
+
/**
|
|
56
|
+
* Schema for a passkey stored in the Passlock vault.
|
|
57
|
+
*
|
|
58
|
+
* @category Passkeys
|
|
59
|
+
*/
|
|
7
60
|
export declare const Passkey: Schema.TaggedStruct<"Passkey", {
|
|
8
61
|
id: typeof Schema.String;
|
|
9
62
|
userId: Schema.optional<typeof Schema.String>;
|
|
@@ -28,8 +81,26 @@ export declare const Passkey: Schema.TaggedStruct<"Passkey", {
|
|
|
28
81
|
createdAt: typeof Schema.Number;
|
|
29
82
|
updatedAt: typeof Schema.Number;
|
|
30
83
|
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Type produced by {@link Passkey}.
|
|
86
|
+
*
|
|
87
|
+
* @category Passkeys
|
|
88
|
+
*/
|
|
31
89
|
export type Passkey = typeof Passkey.Type;
|
|
90
|
+
/**
|
|
91
|
+
* Encoded transport shape for {@link Passkey}.
|
|
92
|
+
*
|
|
93
|
+
* Binary fields such as `publicKey` are represented using schema-friendly
|
|
94
|
+
* encoded values.
|
|
95
|
+
*
|
|
96
|
+
* @category Passkeys
|
|
97
|
+
*/
|
|
32
98
|
export type PasskeyEncoded = typeof Passkey.Encoded;
|
|
99
|
+
/**
|
|
100
|
+
* Schema for the compact passkey payload returned by listing operations.
|
|
101
|
+
*
|
|
102
|
+
* @category Passkeys
|
|
103
|
+
*/
|
|
33
104
|
export declare const PasskeySummary: Schema.TaggedStruct<"PasskeySummary", {
|
|
34
105
|
id: typeof Schema.String;
|
|
35
106
|
userId: typeof Schema.String;
|
|
@@ -41,7 +112,17 @@ export declare const PasskeySummary: Schema.TaggedStruct<"PasskeySummary", {
|
|
|
41
112
|
createdAt: typeof Schema.Number;
|
|
42
113
|
lastUsed: Schema.optional<typeof Schema.Number>;
|
|
43
114
|
}>;
|
|
115
|
+
/**
|
|
116
|
+
* Type produced by {@link PasskeySummary}.
|
|
117
|
+
*
|
|
118
|
+
* @category Passkeys
|
|
119
|
+
*/
|
|
44
120
|
export type PasskeySummary = typeof PasskeySummary.Type;
|
|
121
|
+
/**
|
|
122
|
+
* Schema for one page of passkey summaries.
|
|
123
|
+
*
|
|
124
|
+
* @category Passkeys
|
|
125
|
+
*/
|
|
45
126
|
export declare const FindAllPasskeys: Schema.TaggedStruct<"FindAllPasskeys", {
|
|
46
127
|
cursor: Schema.NullOr<typeof Schema.String>;
|
|
47
128
|
records: Schema.Array$<Schema.TaggedStruct<"PasskeySummary", {
|
|
@@ -56,6 +137,11 @@ export declare const FindAllPasskeys: Schema.TaggedStruct<"FindAllPasskeys", {
|
|
|
56
137
|
lastUsed: Schema.optional<typeof Schema.Number>;
|
|
57
138
|
}>>;
|
|
58
139
|
}>;
|
|
140
|
+
/**
|
|
141
|
+
* Schema for a bulk passkey update response.
|
|
142
|
+
*
|
|
143
|
+
* @category Passkeys
|
|
144
|
+
*/
|
|
59
145
|
export declare const UpdatedPasskeys: Schema.TaggedStruct<"UpdatedPasskeys", {
|
|
60
146
|
updated: Schema.Array$<Schema.TaggedStruct<"Passkey", {
|
|
61
147
|
id: typeof Schema.String;
|
|
@@ -82,4 +168,78 @@ export declare const UpdatedPasskeys: Schema.TaggedStruct<"UpdatedPasskeys", {
|
|
|
82
168
|
updatedAt: typeof Schema.Number;
|
|
83
169
|
}>>;
|
|
84
170
|
}>;
|
|
171
|
+
/**
|
|
172
|
+
* Schema for the credential identifiers returned after deleting passkeys.
|
|
173
|
+
*
|
|
174
|
+
* @category Passkeys
|
|
175
|
+
*/
|
|
176
|
+
export declare const Credential: Schema.Struct<{
|
|
177
|
+
credentialId: typeof Schema.String;
|
|
178
|
+
userId: typeof Schema.String;
|
|
179
|
+
rpId: typeof Schema.String;
|
|
180
|
+
}>;
|
|
181
|
+
/**
|
|
182
|
+
* Type produced by {@link Credential}.
|
|
183
|
+
*
|
|
184
|
+
* @category Passkeys
|
|
185
|
+
*/
|
|
186
|
+
export type Credential = typeof Credential.Type;
|
|
187
|
+
/**
|
|
188
|
+
* Raw REST API schema returned when passkeys are deleted.
|
|
189
|
+
*
|
|
190
|
+
* The package maps this into {@link DeletedPasskeys} before exposing it from
|
|
191
|
+
* the higher-level APIs.
|
|
192
|
+
*
|
|
193
|
+
* @category Passkeys
|
|
194
|
+
*/
|
|
195
|
+
export declare const DeletedPasskeysResponse: Schema.TaggedStruct<"DeletedPasskeys", {
|
|
196
|
+
deleted: Schema.Array$<Schema.TaggedStruct<"Passkey", {
|
|
197
|
+
id: typeof Schema.String;
|
|
198
|
+
userId: Schema.optional<typeof Schema.String>;
|
|
199
|
+
enabled: typeof Schema.Boolean;
|
|
200
|
+
credential: Schema.Struct<{
|
|
201
|
+
id: typeof Schema.String;
|
|
202
|
+
userId: typeof Schema.String;
|
|
203
|
+
username: typeof Schema.String;
|
|
204
|
+
aaguid: typeof Schema.String;
|
|
205
|
+
backedUp: typeof Schema.Boolean;
|
|
206
|
+
counter: typeof Schema.Number;
|
|
207
|
+
deviceType: Schema.Literal<["singleDevice", "multiDevice"]>;
|
|
208
|
+
transports: Schema.Array$<Schema.Literal<["ble", "hybrid", "internal", "nfc", "usb", "cable", "smart-card"]>>;
|
|
209
|
+
publicKey: Schema.Schema<Uint8Array<ArrayBufferLike>, string, never>;
|
|
210
|
+
rpId: typeof Schema.String;
|
|
211
|
+
}>;
|
|
212
|
+
platform: Schema.optional<Schema.Struct<{
|
|
213
|
+
icon: Schema.optional<typeof Schema.String>;
|
|
214
|
+
name: Schema.optional<typeof Schema.String>;
|
|
215
|
+
}>>;
|
|
216
|
+
lastUsed: Schema.optional<typeof Schema.Number>;
|
|
217
|
+
createdAt: typeof Schema.Number;
|
|
218
|
+
updatedAt: typeof Schema.Number;
|
|
219
|
+
}>>;
|
|
220
|
+
}>;
|
|
221
|
+
/**
|
|
222
|
+
* Public schema returned when passkeys are deleted by user ID.
|
|
223
|
+
*
|
|
224
|
+
* @category Passkeys
|
|
225
|
+
*/
|
|
226
|
+
export declare const DeletedPasskeys: Schema.TaggedStruct<"DeletedPasskeys", {
|
|
227
|
+
deleted: Schema.Array$<Schema.Struct<{
|
|
228
|
+
credentialId: typeof Schema.String;
|
|
229
|
+
userId: typeof Schema.String;
|
|
230
|
+
rpId: typeof Schema.String;
|
|
231
|
+
}>>;
|
|
232
|
+
}>;
|
|
233
|
+
/**
|
|
234
|
+
* Public schema returned when a single passkey is deleted.
|
|
235
|
+
*
|
|
236
|
+
* @category Passkeys
|
|
237
|
+
*/
|
|
238
|
+
export declare const DeletedPasskey: Schema.TaggedStruct<"DeletedPasskey", {
|
|
239
|
+
deleted: Schema.Struct<{
|
|
240
|
+
credentialId: typeof Schema.String;
|
|
241
|
+
userId: typeof Schema.String;
|
|
242
|
+
rpId: typeof Schema.String;
|
|
243
|
+
}>;
|
|
244
|
+
}>;
|
|
85
245
|
//# sourceMappingURL=passkey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../src/schemas/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAW/B,eAAO,MAAM,gBAAgB,0DAI5B,CAAA;AAID,eAAO,MAAM,oBAAoB,0CAA2C,CAAA;
|
|
1
|
+
{"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../src/schemas/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAW/B;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,0DAI5B,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0CAA2C,CAAA;AAE5E;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAExE;;;;GAIG;AACH,eAAO,MAAM,UAAU,6EAQb,CAAA;AAEV;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAIpD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;EAW5B,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE7D;;;;GAIG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;EAclB,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAEzC;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,OAAO,CAAC,OAAO,CAAA;AAEnD;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;EAUzB,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;EAG1B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;EAE1B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;EAIrB,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;EAElC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;EAEzB,CAAA"}
|
package/dist/schemas/passkey.js
CHANGED
|
@@ -6,9 +6,24 @@ import { Schema } from "effect";
|
|
|
6
6
|
* kind of a type level satisfies
|
|
7
7
|
*/
|
|
8
8
|
/* Registration Options */
|
|
9
|
+
/**
|
|
10
|
+
* Valid user verification requirements for WebAuthn operations.
|
|
11
|
+
*
|
|
12
|
+
* @category Passkeys
|
|
13
|
+
*/
|
|
9
14
|
export const UserVerification = Schema.Literal("required", "preferred", "discouraged");
|
|
10
15
|
/* Passkey */
|
|
16
|
+
/**
|
|
17
|
+
* Possible device types reported for a passkey credential.
|
|
18
|
+
*
|
|
19
|
+
* @category Passkeys
|
|
20
|
+
*/
|
|
11
21
|
export const CredentialDeviceType = ["singleDevice", "multiDevice"];
|
|
22
|
+
/**
|
|
23
|
+
* Possible authenticator transport hints exposed by Passlock.
|
|
24
|
+
*
|
|
25
|
+
* @category Passkeys
|
|
26
|
+
*/
|
|
12
27
|
export const Transports = [
|
|
13
28
|
"ble",
|
|
14
29
|
"hybrid",
|
|
@@ -19,22 +34,33 @@ export const Transports = [
|
|
|
19
34
|
"smart-card",
|
|
20
35
|
];
|
|
21
36
|
/* Passkey */
|
|
37
|
+
/**
|
|
38
|
+
* Schema for the WebAuthn credential portion of a passkey.
|
|
39
|
+
*
|
|
40
|
+
* @category Passkeys
|
|
41
|
+
*/
|
|
42
|
+
export const PasskeyCredential = Schema.Struct({
|
|
43
|
+
id: Schema.String, // webAuthnId (Base64Url)
|
|
44
|
+
userId: Schema.String, // webAuthnUserId (Base64Url)
|
|
45
|
+
username: Schema.String,
|
|
46
|
+
aaguid: Schema.String,
|
|
47
|
+
backedUp: Schema.Boolean,
|
|
48
|
+
counter: Schema.Number,
|
|
49
|
+
deviceType: Schema.Literal(...CredentialDeviceType),
|
|
50
|
+
transports: Schema.Array(Schema.Literal(...Transports)),
|
|
51
|
+
publicKey: Schema.Uint8ArrayFromBase64Url,
|
|
52
|
+
rpId: Schema.String,
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Schema for a passkey stored in the Passlock vault.
|
|
56
|
+
*
|
|
57
|
+
* @category Passkeys
|
|
58
|
+
*/
|
|
22
59
|
export const Passkey = Schema.TaggedStruct("Passkey", {
|
|
23
60
|
id: Schema.String,
|
|
24
61
|
userId: Schema.optional(Schema.String),
|
|
25
62
|
enabled: Schema.Boolean,
|
|
26
|
-
credential:
|
|
27
|
-
id: Schema.String, // webAuthnId (Base64Url)
|
|
28
|
-
userId: Schema.String, // webAuthnUserId (Base64Url)
|
|
29
|
-
username: Schema.String,
|
|
30
|
-
aaguid: Schema.String,
|
|
31
|
-
backedUp: Schema.Boolean,
|
|
32
|
-
counter: Schema.Number,
|
|
33
|
-
deviceType: Schema.Literal(...CredentialDeviceType),
|
|
34
|
-
transports: Schema.Array(Schema.Literal(...Transports)),
|
|
35
|
-
publicKey: Schema.Uint8ArrayFromBase64Url,
|
|
36
|
-
rpId: Schema.String,
|
|
37
|
-
}),
|
|
63
|
+
credential: PasskeyCredential,
|
|
38
64
|
platform: Schema.optional(Schema.Struct({
|
|
39
65
|
icon: Schema.optional(Schema.String),
|
|
40
66
|
name: Schema.optional(Schema.String),
|
|
@@ -43,6 +69,11 @@ export const Passkey = Schema.TaggedStruct("Passkey", {
|
|
|
43
69
|
createdAt: Schema.Number,
|
|
44
70
|
updatedAt: Schema.Number,
|
|
45
71
|
});
|
|
72
|
+
/**
|
|
73
|
+
* Schema for the compact passkey payload returned by listing operations.
|
|
74
|
+
*
|
|
75
|
+
* @category Passkeys
|
|
76
|
+
*/
|
|
46
77
|
export const PasskeySummary = Schema.TaggedStruct("PasskeySummary", {
|
|
47
78
|
id: Schema.String,
|
|
48
79
|
userId: Schema.String,
|
|
@@ -54,11 +85,58 @@ export const PasskeySummary = Schema.TaggedStruct("PasskeySummary", {
|
|
|
54
85
|
createdAt: Schema.Number,
|
|
55
86
|
lastUsed: Schema.optional(Schema.Number),
|
|
56
87
|
});
|
|
88
|
+
/**
|
|
89
|
+
* Schema for one page of passkey summaries.
|
|
90
|
+
*
|
|
91
|
+
* @category Passkeys
|
|
92
|
+
*/
|
|
57
93
|
export const FindAllPasskeys = Schema.TaggedStruct("FindAllPasskeys", {
|
|
58
94
|
cursor: Schema.NullOr(Schema.String),
|
|
59
95
|
records: Schema.Array(PasskeySummary),
|
|
60
96
|
});
|
|
97
|
+
/**
|
|
98
|
+
* Schema for a bulk passkey update response.
|
|
99
|
+
*
|
|
100
|
+
* @category Passkeys
|
|
101
|
+
*/
|
|
61
102
|
export const UpdatedPasskeys = Schema.TaggedStruct("UpdatedPasskeys", {
|
|
62
103
|
updated: Schema.Array(Passkey),
|
|
63
104
|
});
|
|
105
|
+
/**
|
|
106
|
+
* Schema for the credential identifiers returned after deleting passkeys.
|
|
107
|
+
*
|
|
108
|
+
* @category Passkeys
|
|
109
|
+
*/
|
|
110
|
+
export const Credential = Schema.Struct({
|
|
111
|
+
credentialId: Schema.String,
|
|
112
|
+
userId: Schema.String,
|
|
113
|
+
rpId: Schema.String,
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* Raw REST API schema returned when passkeys are deleted.
|
|
117
|
+
*
|
|
118
|
+
* The package maps this into {@link DeletedPasskeys} before exposing it from
|
|
119
|
+
* the higher-level APIs.
|
|
120
|
+
*
|
|
121
|
+
* @category Passkeys
|
|
122
|
+
*/
|
|
123
|
+
export const DeletedPasskeysResponse = Schema.TaggedStruct("DeletedPasskeys", {
|
|
124
|
+
deleted: Schema.Array(Passkey),
|
|
125
|
+
});
|
|
126
|
+
/**
|
|
127
|
+
* Public schema returned when passkeys are deleted by user ID.
|
|
128
|
+
*
|
|
129
|
+
* @category Passkeys
|
|
130
|
+
*/
|
|
131
|
+
export const DeletedPasskeys = Schema.TaggedStruct("DeletedPasskeys", {
|
|
132
|
+
deleted: Schema.Array(Credential),
|
|
133
|
+
});
|
|
134
|
+
/**
|
|
135
|
+
* Public schema returned when a single passkey is deleted.
|
|
136
|
+
*
|
|
137
|
+
* @category Passkeys
|
|
138
|
+
*/
|
|
139
|
+
export const DeletedPasskey = Schema.TaggedStruct("DeletedPasskey", {
|
|
140
|
+
deleted: Credential,
|
|
141
|
+
});
|
|
64
142
|
//# sourceMappingURL=passkey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../../src/schemas/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;GAKG;AAEH,0BAA0B;AAE1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAC5C,UAAU,EACV,WAAW,EACX,aAAa,CACd,CAAA;AAED,aAAa;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,cAAc,EAAE,aAAa,CAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../../src/schemas/passkey.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\"\n\n/*\n * Important. We don't use `type X = typeof X.Type` because it won't generate\n * the Typedoc docs, so instead we mirror the types and use a dummy\n * `type _x = satisfy<typeof X.Type, X>`\n * kind of a type level satisfies\n */\n\n/* Registration Options */\n\n/**\n * Valid user verification requirements for WebAuthn operations.\n *\n * @category Passkeys\n */\nexport const UserVerification = Schema.Literal(\n \"required\",\n \"preferred\",\n \"discouraged\"\n)\n\n/* Passkey */\n\n/**\n * Possible device types reported for a passkey credential.\n *\n * @category Passkeys\n */\nexport const CredentialDeviceType = [\"singleDevice\", \"multiDevice\"] as const\n\n/**\n * Union of device types reported for a passkey credential.\n *\n * @category Passkeys\n */\nexport type CredentialDeviceType = (typeof CredentialDeviceType)[number]\n\n/**\n * Possible authenticator transport hints exposed by Passlock.\n *\n * @category Passkeys\n */\nexport const Transports = [\n \"ble\",\n \"hybrid\",\n \"internal\",\n \"nfc\",\n \"usb\",\n \"cable\",\n \"smart-card\",\n] as const\n\n/**\n * Union of authenticator transport hints exposed by Passlock.\n *\n * @category Passkeys\n */\nexport type Transports = (typeof Transports)[number]\n\n/* Passkey */\n\n/**\n * Schema for the WebAuthn credential portion of a passkey.\n *\n * @category Passkeys\n */\nexport const PasskeyCredential = Schema.Struct({\n id: Schema.String, // webAuthnId (Base64Url)\n userId: Schema.String, // webAuthnUserId (Base64Url)\n username: Schema.String,\n aaguid: Schema.String,\n backedUp: Schema.Boolean,\n counter: Schema.Number,\n deviceType: Schema.Literal(...CredentialDeviceType),\n transports: Schema.Array(Schema.Literal(...Transports)),\n publicKey: Schema.Uint8ArrayFromBase64Url,\n rpId: Schema.String,\n})\n\n/**\n * Type produced by {@link PasskeyCredential}.\n *\n * @category Passkeys\n */\nexport type PasskeyCredential = typeof PasskeyCredential.Type\n\n/**\n * Schema for a passkey stored in the Passlock vault.\n *\n * @category Passkeys\n */\nexport const Passkey = Schema.TaggedStruct(\"Passkey\", {\n id: Schema.String,\n userId: Schema.optional(Schema.String),\n enabled: Schema.Boolean,\n credential: PasskeyCredential,\n platform: Schema.optional(\n Schema.Struct({\n icon: Schema.optional(Schema.String),\n name: Schema.optional(Schema.String),\n })\n ),\n lastUsed: Schema.optional(Schema.Number),\n createdAt: Schema.Number,\n updatedAt: Schema.Number,\n})\n\n/**\n * Type produced by {@link Passkey}.\n *\n * @category Passkeys\n */\nexport type Passkey = typeof Passkey.Type\n\n/**\n * Encoded transport shape for {@link Passkey}.\n *\n * Binary fields such as `publicKey` are represented using schema-friendly\n * encoded values.\n *\n * @category Passkeys\n */\nexport type PasskeyEncoded = typeof Passkey.Encoded\n\n/**\n * Schema for the compact passkey payload returned by listing operations.\n *\n * @category Passkeys\n */\nexport const PasskeySummary = Schema.TaggedStruct(\"PasskeySummary\", {\n id: Schema.String,\n userId: Schema.String,\n credential: Schema.Struct({\n id: Schema.String,\n userId: Schema.String,\n }),\n enabled: Schema.Boolean,\n createdAt: Schema.Number,\n lastUsed: Schema.optional(Schema.Number),\n})\n\n/**\n * Type produced by {@link PasskeySummary}.\n *\n * @category Passkeys\n */\nexport type PasskeySummary = typeof PasskeySummary.Type\n\n/**\n * Schema for one page of passkey summaries.\n *\n * @category Passkeys\n */\nexport const FindAllPasskeys = Schema.TaggedStruct(\"FindAllPasskeys\", {\n cursor: Schema.NullOr(Schema.String),\n records: Schema.Array(PasskeySummary),\n})\n\n/**\n * Schema for a bulk passkey update response.\n *\n * @category Passkeys\n */\nexport const UpdatedPasskeys = Schema.TaggedStruct(\"UpdatedPasskeys\", {\n updated: Schema.Array(Passkey),\n})\n\n/**\n * Schema for the credential identifiers returned after deleting passkeys.\n *\n * @category Passkeys\n */\nexport const Credential = Schema.Struct({\n credentialId: Schema.String,\n userId: Schema.String,\n rpId: Schema.String,\n})\n\n/**\n * Type produced by {@link Credential}.\n *\n * @category Passkeys\n */\nexport type Credential = typeof Credential.Type\n\n/**\n * Raw REST API schema returned when passkeys are deleted.\n *\n * The package maps this into {@link DeletedPasskeys} before exposing it from\n * the higher-level APIs.\n *\n * @category Passkeys\n */\nexport const DeletedPasskeysResponse = Schema.TaggedStruct(\"DeletedPasskeys\", {\n deleted: Schema.Array(Passkey),\n})\n\n/**\n * Public schema returned when passkeys are deleted by user ID.\n *\n * @category Passkeys\n */\nexport const DeletedPasskeys = Schema.TaggedStruct(\"DeletedPasskeys\", {\n deleted: Schema.Array(Credential),\n})\n\n/**\n * Public schema returned when a single passkey is deleted.\n *\n * @category Passkeys\n */\nexport const DeletedPasskey = Schema.TaggedStruct(\"DeletedPasskey\", {\n deleted: Credential,\n})\n"]}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* Schema for the principal payload produced after verifying an `id_token`.
|
|
4
|
+
*
|
|
5
|
+
* @category Principal
|
|
6
|
+
*/
|
|
2
7
|
export declare const PrincipalSchema: Schema.TaggedStruct<"Principal", {
|
|
3
8
|
id: typeof Schema.String;
|
|
4
9
|
authenticatorId: typeof Schema.String;
|
|
@@ -11,6 +16,12 @@ export declare const PrincipalSchema: Schema.TaggedStruct<"Principal", {
|
|
|
11
16
|
}>>;
|
|
12
17
|
userId: typeof Schema.String;
|
|
13
18
|
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Principal payload describing a completed authentication or registration
|
|
21
|
+
* operation.
|
|
22
|
+
*
|
|
23
|
+
* @category Principal
|
|
24
|
+
*/
|
|
14
25
|
export type Principal = {
|
|
15
26
|
readonly _tag: "Principal";
|
|
16
27
|
readonly id: string;
|
|
@@ -24,7 +35,17 @@ export type Principal = {
|
|
|
24
35
|
} | undefined;
|
|
25
36
|
readonly expiresAt: number;
|
|
26
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* Type guard for {@link Principal}.
|
|
40
|
+
*
|
|
41
|
+
* @category Principal
|
|
42
|
+
*/
|
|
27
43
|
export declare const isPrincipal: (payload: unknown) => payload is Principal;
|
|
44
|
+
/**
|
|
45
|
+
* Schema for the richer principal payload returned by `exchangeCode`.
|
|
46
|
+
*
|
|
47
|
+
* @category Principal
|
|
48
|
+
*/
|
|
28
49
|
export declare const ExtendedPrincipalSchema: Schema.TaggedStruct<"ExtendedPrincipal", {
|
|
29
50
|
id: typeof Schema.String;
|
|
30
51
|
authenticatorId: typeof Schema.String;
|
|
@@ -42,6 +63,14 @@ export declare const ExtendedPrincipalSchema: Schema.TaggedStruct<"ExtendedPrinc
|
|
|
42
63
|
userAgent: Schema.optional<typeof Schema.String>;
|
|
43
64
|
}>;
|
|
44
65
|
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Extended principal payload returned by `exchangeCode`.
|
|
68
|
+
*
|
|
69
|
+
* In addition to the base principal fields it includes request metadata such as
|
|
70
|
+
* IP address and user agent when available.
|
|
71
|
+
*
|
|
72
|
+
* @category Principal
|
|
73
|
+
*/
|
|
45
74
|
export type ExtendedPrincipal = {
|
|
46
75
|
readonly _tag: "ExtendedPrincipal";
|
|
47
76
|
readonly id: string;
|
|
@@ -60,7 +89,17 @@ export type ExtendedPrincipal = {
|
|
|
60
89
|
readonly userAgent?: string | undefined;
|
|
61
90
|
};
|
|
62
91
|
};
|
|
92
|
+
/**
|
|
93
|
+
* Type guard for {@link ExtendedPrincipal}.
|
|
94
|
+
*
|
|
95
|
+
* @category Principal
|
|
96
|
+
*/
|
|
63
97
|
export declare const isExtendedPrincipal: (payload: unknown) => payload is ExtendedPrincipal;
|
|
98
|
+
/**
|
|
99
|
+
* Schema for the Passlock JWT claims used by {@link PrincipalSchema}.
|
|
100
|
+
*
|
|
101
|
+
* @category Principal
|
|
102
|
+
*/
|
|
64
103
|
export declare const IdTokenSchema: Schema.TaggedStruct<"IdToken", {
|
|
65
104
|
"a:id": typeof Schema.String;
|
|
66
105
|
"a:typ": typeof Schema.String;
|
|
@@ -72,6 +111,12 @@ export declare const IdTokenSchema: Schema.TaggedStruct<"IdToken", {
|
|
|
72
111
|
"pk:uv": typeof Schema.Boolean;
|
|
73
112
|
sub: typeof Schema.String;
|
|
74
113
|
}>;
|
|
114
|
+
/**
|
|
115
|
+
* Decoded Passlock JWT claims used internally when verifying `id_token`
|
|
116
|
+
* payloads.
|
|
117
|
+
*
|
|
118
|
+
* @category Principal
|
|
119
|
+
*/
|
|
75
120
|
export type IdToken = {
|
|
76
121
|
readonly "a:id": string;
|
|
77
122
|
readonly "a:typ": string;
|
|
@@ -84,5 +129,10 @@ export type IdToken = {
|
|
|
84
129
|
readonly sub: string;
|
|
85
130
|
readonly _tag: "IdToken";
|
|
86
131
|
};
|
|
132
|
+
/**
|
|
133
|
+
* Type guard for {@link IdToken}.
|
|
134
|
+
*
|
|
135
|
+
* @category Principal
|
|
136
|
+
*/
|
|
87
137
|
export declare const isIdToken: (payload: unknown) => payload is IdToken;
|
|
88
138
|
//# sourceMappingURL=principal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../src/schemas/principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/B,eAAO,MAAM,eAAe;;;;;;;;;;;EAa1B,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EACb;QACE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;QAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;KAC3B,GACD,SAAS,CAAA;IACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,SACrB,CAAA;AAIrC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;EAqBnC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EACb;QACE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;QAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;QAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3C,GACD,SAAS,CAAA;IACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KACxC,CAAA;CACF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,SAAS,OAAO,KACf,OAAO,IAAI,iBAAgE,CAAA;AAO9E,eAAO,MAAM,aAAa;;;;;;;;;;EAUxB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,OACrB,CAAA"}
|
|
1
|
+
{"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../src/schemas/principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/B;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;EAa1B,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EACb;QACE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;QAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;KAC3B,GACD,SAAS,CAAA;IACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,SACrB,CAAA;AAIrC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;EAqBnC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EACb;QACE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;QAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;QAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3C,GACD,SAAS,CAAA;IACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KACxC,CAAA;CACF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,OAAO,KACf,OAAO,IAAI,iBAAgE,CAAA;AAO9E;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;EAUxB,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,OACrB,CAAA"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
2
|
/* Principal */
|
|
3
|
+
/**
|
|
4
|
+
* Schema for the principal payload produced after verifying an `id_token`.
|
|
5
|
+
*
|
|
6
|
+
* @category Principal
|
|
7
|
+
*/
|
|
3
8
|
export const PrincipalSchema = Schema.TaggedStruct("Principal", {
|
|
4
9
|
id: Schema.String,
|
|
5
10
|
authenticatorId: Schema.String,
|
|
@@ -12,7 +17,17 @@ export const PrincipalSchema = Schema.TaggedStruct("Principal", {
|
|
|
12
17
|
})),
|
|
13
18
|
userId: Schema.String,
|
|
14
19
|
});
|
|
20
|
+
/**
|
|
21
|
+
* Type guard for {@link Principal}.
|
|
22
|
+
*
|
|
23
|
+
* @category Principal
|
|
24
|
+
*/
|
|
15
25
|
export const isPrincipal = (payload) => Schema.is(PrincipalSchema)(payload);
|
|
26
|
+
/**
|
|
27
|
+
* Schema for the richer principal payload returned by `exchangeCode`.
|
|
28
|
+
*
|
|
29
|
+
* @category Principal
|
|
30
|
+
*/
|
|
16
31
|
export const ExtendedPrincipalSchema = Schema.TaggedStruct("ExtendedPrincipal", {
|
|
17
32
|
id: Schema.String,
|
|
18
33
|
authenticatorId: Schema.String,
|
|
@@ -30,7 +45,17 @@ export const ExtendedPrincipalSchema = Schema.TaggedStruct("ExtendedPrincipal",
|
|
|
30
45
|
userAgent: Schema.optional(Schema.String),
|
|
31
46
|
}),
|
|
32
47
|
});
|
|
48
|
+
/**
|
|
49
|
+
* Type guard for {@link ExtendedPrincipal}.
|
|
50
|
+
*
|
|
51
|
+
* @category Principal
|
|
52
|
+
*/
|
|
33
53
|
export const isExtendedPrincipal = (payload) => Schema.is(ExtendedPrincipalSchema)(payload);
|
|
54
|
+
/**
|
|
55
|
+
* Schema for the Passlock JWT claims used by {@link PrincipalSchema}.
|
|
56
|
+
*
|
|
57
|
+
* @category Principal
|
|
58
|
+
*/
|
|
34
59
|
export const IdTokenSchema = Schema.TaggedStruct("IdToken", {
|
|
35
60
|
"a:id": Schema.String,
|
|
36
61
|
"a:typ": Schema.String,
|
|
@@ -42,5 +67,10 @@ export const IdTokenSchema = Schema.TaggedStruct("IdToken", {
|
|
|
42
67
|
"pk:uv": Schema.Boolean,
|
|
43
68
|
sub: Schema.String,
|
|
44
69
|
});
|
|
70
|
+
/**
|
|
71
|
+
* Type guard for {@link IdToken}.
|
|
72
|
+
*
|
|
73
|
+
* @category Principal
|
|
74
|
+
*/
|
|
45
75
|
export const isIdToken = (payload) => Schema.is(IdTokenSchema)(payload);
|
|
46
76
|
//# sourceMappingURL=principal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"principal.js","sourceRoot":"","sources":["../../src/schemas/principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,eAAe;AAEf,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;IAC9D,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,QAAQ,CACtB,MAAM,CAAC,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC,OAAO;QAC5B,QAAQ,EAAE,MAAM,CAAC,OAAO;KACzB,CAAC,CACH;IACD,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"principal.js","sourceRoot":"","sources":["../../src/schemas/principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,eAAe;AAEf;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;IAC9D,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,QAAQ,CACtB,MAAM,CAAC,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC,OAAO;QAC5B,QAAQ,EAAE,MAAM,CAAC,OAAO;KACzB,CAAC,CACH;IACD,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC,CAAA;AAwBF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAwB,EAAE,CACpE,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAA;AAIrC;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,YAAY,CACxD,mBAAmB,EACnB;IACE,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,QAAQ,CACtB,MAAM,CAAC,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,YAAY,EAAE,MAAM,CAAC,OAAO;QAC5B,QAAQ,EAAE,MAAM,CAAC,OAAO;KACzB,CAAC,CACH;IACD,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KAC1C,CAAC;CACH,CACF,CAAA;AA+BD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAgB,EACc,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAA;AAO9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE;IAC1D,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM;CACnB,CAAC,CAAA;AAqBF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAsB,EAAE,CAChE,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAA","sourcesContent":["import { Schema } from \"effect\"\nimport type { satisfy } from \"./satisfy.js\"\n\n/* Principal */\n\n/**\n * Schema for the principal payload produced after verifying an `id_token`.\n *\n * @category Principal\n */\nexport const PrincipalSchema = Schema.TaggedStruct(\"Principal\", {\n id: Schema.String,\n authenticatorId: Schema.String,\n authenticatorType: Schema.Literal(\"passkey\"),\n createdAt: Schema.Number,\n expiresAt: Schema.Number,\n passkey: Schema.optional(\n Schema.Struct({\n userVerified: Schema.Boolean,\n verified: Schema.Boolean,\n })\n ),\n userId: Schema.String,\n})\n\n/**\n * Principal payload describing a completed authentication or registration\n * operation.\n *\n * @category Principal\n */\nexport type Principal = {\n readonly _tag: \"Principal\"\n readonly id: string\n readonly userId: string\n readonly createdAt: number\n readonly authenticatorId: string\n readonly authenticatorType: \"passkey\"\n readonly passkey?:\n | {\n readonly userVerified: boolean\n readonly verified: boolean\n }\n | undefined\n readonly expiresAt: number\n}\n\n/**\n * Type guard for {@link Principal}.\n *\n * @category Principal\n */\nexport const isPrincipal = (payload: unknown): payload is Principal =>\n Schema.is(PrincipalSchema)(payload)\n\ntype _Principal = satisfy<typeof PrincipalSchema.Type, Principal>\n\n/**\n * Schema for the richer principal payload returned by `exchangeCode`.\n *\n * @category Principal\n */\nexport const ExtendedPrincipalSchema = Schema.TaggedStruct(\n \"ExtendedPrincipal\",\n {\n id: Schema.String,\n authenticatorId: Schema.String,\n authenticatorType: Schema.Literal(\"passkey\"),\n createdAt: Schema.Number,\n expiresAt: Schema.Number,\n passkey: Schema.optional(\n Schema.Struct({\n platformName: Schema.optional(Schema.String),\n userVerified: Schema.Boolean,\n verified: Schema.Boolean,\n })\n ),\n userId: Schema.String,\n metadata: Schema.Struct({\n ipAddress: Schema.optional(Schema.String),\n userAgent: Schema.optional(Schema.String),\n }),\n }\n)\n\n/**\n * Extended principal payload returned by `exchangeCode`.\n *\n * In addition to the base principal fields it includes request metadata such as\n * IP address and user agent when available.\n *\n * @category Principal\n */\nexport type ExtendedPrincipal = {\n readonly _tag: \"ExtendedPrincipal\"\n readonly id: string\n readonly authenticatorId: string\n readonly authenticatorType: \"passkey\"\n readonly passkey?:\n | {\n readonly userVerified: boolean\n readonly verified: boolean\n readonly platformName?: string | undefined\n }\n | undefined\n readonly createdAt: number\n readonly expiresAt: number\n readonly userId: string\n readonly metadata: {\n readonly ipAddress?: string | undefined\n readonly userAgent?: string | undefined\n }\n}\n\n/**\n * Type guard for {@link ExtendedPrincipal}.\n *\n * @category Principal\n */\nexport const isExtendedPrincipal = (\n payload: unknown\n): payload is ExtendedPrincipal => Schema.is(ExtendedPrincipalSchema)(payload)\n\ntype _ExtendedPrincipal = satisfy<\n typeof ExtendedPrincipalSchema.Type,\n ExtendedPrincipal\n>\n\n/**\n * Schema for the Passlock JWT claims used by {@link PrincipalSchema}.\n *\n * @category Principal\n */\nexport const IdTokenSchema = Schema.TaggedStruct(\"IdToken\", {\n \"a:id\": Schema.String,\n \"a:typ\": Schema.String,\n aud: Schema.String,\n exp: Schema.Number,\n iat: Schema.Number,\n iss: Schema.Literal(\"passlock.dev\"),\n jti: Schema.String,\n \"pk:uv\": Schema.Boolean,\n sub: Schema.String,\n})\n\n/**\n * Decoded Passlock JWT claims used internally when verifying `id_token`\n * payloads.\n *\n * @category Principal\n */\nexport type IdToken = {\n readonly \"a:id\": string\n readonly \"a:typ\": string\n readonly aud: string\n readonly exp: number\n readonly iat: number\n readonly iss: \"passlock.dev\"\n readonly jti: string\n readonly \"pk:uv\": boolean\n readonly sub: string\n readonly _tag: \"IdToken\"\n}\n\n/**\n * Type guard for {@link IdToken}.\n *\n * @category Principal\n */\nexport const isIdToken = (payload: unknown): payload is IdToken =>\n Schema.is(IdTokenSchema)(payload)\n\ntype _IdToken = satisfy<typeof IdTokenSchema.Type, IdToken>\n"]}
|
package/dist/schemas/signup.d.ts
CHANGED
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* Schema for the signup payload accepted by Passlock signup flows.
|
|
4
|
+
*
|
|
5
|
+
* @category Signup
|
|
6
|
+
*/
|
|
2
7
|
export declare const SignupPayload: Schema.Struct<{
|
|
3
8
|
email: typeof Schema.String;
|
|
4
9
|
firstName: typeof Schema.String;
|
|
5
10
|
lastName: typeof Schema.String;
|
|
6
11
|
}>;
|
|
12
|
+
/**
|
|
13
|
+
* Type produced by {@link SignupPayload}.
|
|
14
|
+
*
|
|
15
|
+
* @category Signup
|
|
16
|
+
*/
|
|
7
17
|
export type SignupPayload = typeof SignupPayload.Type;
|
|
18
|
+
/**
|
|
19
|
+
* Schema for tenancy credentials returned after signup.
|
|
20
|
+
*
|
|
21
|
+
* @category Signup
|
|
22
|
+
*/
|
|
8
23
|
export declare const TenancyData: Schema.TaggedStruct<"TenancyData", {
|
|
9
24
|
apiKey: Schema.Redacted<typeof Schema.String>;
|
|
10
25
|
tenancyId: typeof Schema.String;
|
|
11
26
|
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Type produced by {@link TenancyData}.
|
|
29
|
+
*
|
|
30
|
+
* @category Signup
|
|
31
|
+
*/
|
|
12
32
|
export type TenancyData = typeof TenancyData.Type;
|
|
13
33
|
//# sourceMappingURL=signup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../src/schemas/signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,eAAO,MAAM,aAAa;;;;EAIxB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,WAAW;;;EAGtB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA"}
|
|
1
|
+
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../src/schemas/signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;EAIxB,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;EAGtB,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA"}
|
package/dist/schemas/signup.js
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* Schema for the signup payload accepted by Passlock signup flows.
|
|
4
|
+
*
|
|
5
|
+
* @category Signup
|
|
6
|
+
*/
|
|
2
7
|
export const SignupPayload = Schema.Struct({
|
|
3
8
|
email: Schema.String,
|
|
4
9
|
firstName: Schema.String,
|
|
5
10
|
lastName: Schema.String,
|
|
6
11
|
});
|
|
12
|
+
/**
|
|
13
|
+
* Schema for tenancy credentials returned after signup.
|
|
14
|
+
*
|
|
15
|
+
* @category Signup
|
|
16
|
+
*/
|
|
7
17
|
export const TenancyData = Schema.TaggedStruct("TenancyData", {
|
|
8
18
|
apiKey: Schema.Redacted(Schema.String),
|
|
9
19
|
tenancyId: Schema.String,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../src/schemas/signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM;CACxB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../src/schemas/signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM;CACxB,CAAC,CAAA;AASF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE;IAC5D,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CAAA","sourcesContent":["import { Schema } from \"effect\"\n\n/**\n * Schema for the signup payload accepted by Passlock signup flows.\n *\n * @category Signup\n */\nexport const SignupPayload = Schema.Struct({\n email: Schema.String,\n firstName: Schema.String,\n lastName: Schema.String,\n})\n\n/**\n * Type produced by {@link SignupPayload}.\n *\n * @category Signup\n */\nexport type SignupPayload = typeof SignupPayload.Type\n\n/**\n * Schema for tenancy credentials returned after signup.\n *\n * @category Signup\n */\nexport const TenancyData = Schema.TaggedStruct(\"TenancyData\", {\n apiKey: Schema.Redacted(Schema.String),\n tenancyId: Schema.String,\n})\n\n/**\n * Type produced by {@link TenancyData}.\n *\n * @category Signup\n */\nexport type TenancyData = typeof TenancyData.Type\n"]}
|