@samebase/identity-broker 0.7.0 → 0.9.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/README.md +8 -8
- package/dist/client/index.d.ts +0 -24
- package/dist/client/index.js +22 -163
- package/dist/client/index.js.map +1 -1
- package/dist/client/keys.js +2 -9
- package/dist/client/keys.js.map +1 -1
- package/dist/client/protocol.d.ts +5 -20
- package/dist/client/protocol.js +14 -95
- package/dist/client/protocol.js.map +1 -1
- package/dist/client/responses.d.ts +4 -1
- package/dist/client/responses.js +9 -6
- package/dist/client/responses.js.map +1 -1
- package/dist/client/subject.js +3 -8
- package/dist/client/subject.js.map +1 -1
- package/dist/component/_generated/api.d.ts +0 -4
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +6 -45
- package/dist/component/apps.d.ts +8 -17
- package/dist/component/apps.js +24 -36
- package/dist/component/apps.js.map +1 -1
- package/dist/component/authRequests.d.ts +8 -8
- package/dist/component/authRequests.js +9 -10
- package/dist/component/authRequests.js.map +1 -1
- package/dist/component/clients.d.ts +0 -9
- package/dist/component/clients.js +1 -21
- package/dist/component/clients.js.map +1 -1
- package/dist/component/lifecycle.d.ts +5 -6
- package/dist/component/lifecycle.js +5 -14
- package/dist/component/lifecycle.js.map +1 -1
- package/dist/component/schema.d.ts +61 -79
- package/dist/component/schema.js +5 -17
- package/dist/component/schema.js.map +1 -1
- package/package.json +1 -1
- package/dist/component/crypto.d.ts +0 -2
- package/dist/component/crypto.js +0 -9
- package/dist/component/crypto.js.map +0 -1
- package/dist/component/registration.d.ts +0 -29
- package/dist/component/registration.js +0 -90
- package/dist/component/registration.js.map +0 -1
|
@@ -35,7 +35,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
35
35
|
scope: string;
|
|
36
36
|
state?: string;
|
|
37
37
|
status: "pending";
|
|
38
|
-
txnCookieHash
|
|
38
|
+
txnCookieHash: string;
|
|
39
39
|
} | {
|
|
40
40
|
appId: string;
|
|
41
41
|
clientId: string;
|
|
@@ -50,7 +50,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
50
50
|
scope: string;
|
|
51
51
|
state?: string;
|
|
52
52
|
status: "upstream";
|
|
53
|
-
txnCookieHash
|
|
53
|
+
txnCookieHash: string;
|
|
54
54
|
upstreamCodeVerifier: string;
|
|
55
55
|
upstreamNonce?: string;
|
|
56
56
|
upstreamStateHash: string;
|
|
@@ -68,7 +68,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
68
68
|
scope: string;
|
|
69
69
|
state?: string;
|
|
70
70
|
status: "claimed";
|
|
71
|
-
txnCookieHash
|
|
71
|
+
txnCookieHash: string;
|
|
72
72
|
} | {
|
|
73
73
|
appId: string;
|
|
74
74
|
clientId: string;
|
|
@@ -89,7 +89,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
89
89
|
scope: string;
|
|
90
90
|
state?: string;
|
|
91
91
|
status: "emailSent";
|
|
92
|
-
txnCookieHash
|
|
92
|
+
txnCookieHash: string;
|
|
93
93
|
} | {
|
|
94
94
|
appId: string;
|
|
95
95
|
authTime: number;
|
|
@@ -112,7 +112,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
112
112
|
scope: string;
|
|
113
113
|
state?: string;
|
|
114
114
|
status: "completed";
|
|
115
|
-
txnCookieHash
|
|
115
|
+
txnCookieHash: string;
|
|
116
116
|
}, [import("convex/values").VObject<{
|
|
117
117
|
appId: string;
|
|
118
118
|
clientId: string;
|
|
@@ -126,7 +126,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
126
126
|
scope: string;
|
|
127
127
|
state?: string;
|
|
128
128
|
status: "pending";
|
|
129
|
-
txnCookieHash
|
|
129
|
+
txnCookieHash: string;
|
|
130
130
|
}, {
|
|
131
131
|
requestId: import("convex/values").VString<string, "required">;
|
|
132
132
|
appId: import("convex/values").VString<string, "required">;
|
|
@@ -139,11 +139,11 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
139
139
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
140
140
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
141
141
|
/**
|
|
142
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
143
|
-
*
|
|
144
|
-
*
|
|
142
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
143
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
144
|
+
* move it on.
|
|
145
145
|
*/
|
|
146
|
-
txnCookieHash: import("convex/values").VString<string
|
|
146
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
147
147
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
148
148
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
149
149
|
status: import("convex/values").VLiteral<"pending", "required">;
|
|
@@ -161,7 +161,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
161
161
|
scope: string;
|
|
162
162
|
state?: string;
|
|
163
163
|
status: "upstream";
|
|
164
|
-
txnCookieHash
|
|
164
|
+
txnCookieHash: string;
|
|
165
165
|
upstreamCodeVerifier: string;
|
|
166
166
|
upstreamNonce?: string;
|
|
167
167
|
upstreamStateHash: string;
|
|
@@ -177,11 +177,11 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
177
177
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
178
178
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
179
179
|
/**
|
|
180
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
181
|
-
*
|
|
182
|
-
*
|
|
180
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
181
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
182
|
+
* move it on.
|
|
183
183
|
*/
|
|
184
|
-
txnCookieHash: import("convex/values").VString<string
|
|
184
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
185
185
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
186
186
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
187
187
|
status: import("convex/values").VLiteral<"upstream", "required">;
|
|
@@ -203,7 +203,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
203
203
|
scope: string;
|
|
204
204
|
state?: string;
|
|
205
205
|
status: "claimed";
|
|
206
|
-
txnCookieHash
|
|
206
|
+
txnCookieHash: string;
|
|
207
207
|
}, {
|
|
208
208
|
requestId: import("convex/values").VString<string, "required">;
|
|
209
209
|
appId: import("convex/values").VString<string, "required">;
|
|
@@ -216,11 +216,11 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
216
216
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
217
217
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
218
218
|
/**
|
|
219
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
220
|
-
*
|
|
221
|
-
*
|
|
219
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
220
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
221
|
+
* move it on.
|
|
222
222
|
*/
|
|
223
|
-
txnCookieHash: import("convex/values").VString<string
|
|
223
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
224
224
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
225
225
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
226
226
|
status: import("convex/values").VLiteral<"claimed", "required">;
|
|
@@ -245,7 +245,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
245
245
|
scope: string;
|
|
246
246
|
state?: string;
|
|
247
247
|
status: "emailSent";
|
|
248
|
-
txnCookieHash
|
|
248
|
+
txnCookieHash: string;
|
|
249
249
|
}, {
|
|
250
250
|
requestId: import("convex/values").VString<string, "required">;
|
|
251
251
|
appId: import("convex/values").VString<string, "required">;
|
|
@@ -258,11 +258,11 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
258
258
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
259
259
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
260
260
|
/**
|
|
261
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
262
|
-
*
|
|
263
|
-
*
|
|
261
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
262
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
263
|
+
* move it on.
|
|
264
264
|
*/
|
|
265
|
-
txnCookieHash: import("convex/values").VString<string
|
|
265
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
266
266
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
267
267
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
268
268
|
status: import("convex/values").VLiteral<"emailSent", "required">;
|
|
@@ -297,7 +297,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
297
297
|
scope: string;
|
|
298
298
|
state?: string;
|
|
299
299
|
status: "completed";
|
|
300
|
-
txnCookieHash
|
|
300
|
+
txnCookieHash: string;
|
|
301
301
|
}, {
|
|
302
302
|
requestId: import("convex/values").VString<string, "required">;
|
|
303
303
|
appId: import("convex/values").VString<string, "required">;
|
|
@@ -310,11 +310,11 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
|
|
|
310
310
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
311
311
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
312
312
|
/**
|
|
313
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
314
|
-
*
|
|
315
|
-
*
|
|
313
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
314
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
315
|
+
* move it on.
|
|
316
316
|
*/
|
|
317
|
-
txnCookieHash: import("convex/values").VString<string
|
|
317
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
318
318
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
319
319
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
320
320
|
status: import("convex/values").VLiteral<"completed", "required">;
|
|
@@ -346,30 +346,12 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
346
346
|
appId: import("convex/values").VString<string, "required">;
|
|
347
347
|
name: import("convex/values").VString<string, "required">;
|
|
348
348
|
firstParty: import("convex/values").VBoolean<boolean, "required">;
|
|
349
|
-
/**
|
|
350
|
-
* Exact hosts or `*.suffix` patterns a client callback may use through `/register`, e.g.
|
|
351
|
-
* `*.convex.site`. `registerClient` does not read it.
|
|
352
|
-
*/
|
|
349
|
+
/** No longer read. The rows of a hub from before 0.8.0 still hold it. */
|
|
353
350
|
allowedCallbackHosts: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
|
|
354
351
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
355
352
|
}, "required", "allowedCallbackHosts" | "appId" | "createdAt" | "firstParty" | "name">, {
|
|
356
353
|
by_app_id: ["appId", "_creationTime"];
|
|
357
354
|
}, {}, {}>;
|
|
358
|
-
registrationTokens: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
359
|
-
appId: string;
|
|
360
|
-
createdAt: number;
|
|
361
|
-
expiresAt: number;
|
|
362
|
-
tokenHash: string;
|
|
363
|
-
}, {
|
|
364
|
-
tokenHash: import("convex/values").VString<string, "required">;
|
|
365
|
-
appId: import("convex/values").VString<string, "required">;
|
|
366
|
-
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
367
|
-
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
368
|
-
}, "required", "appId" | "createdAt" | "expiresAt" | "tokenHash">, {
|
|
369
|
-
by_app_id: ["appId", "_creationTime"];
|
|
370
|
-
by_expires_at: ["expiresAt", "_creationTime"];
|
|
371
|
-
by_token_hash: ["tokenHash", "_creationTime"];
|
|
372
|
-
}, {}, {}>;
|
|
373
355
|
clients: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
374
356
|
appId: string;
|
|
375
357
|
clientId: string;
|
|
@@ -410,7 +392,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
410
392
|
scope: string;
|
|
411
393
|
state?: string;
|
|
412
394
|
status: "pending";
|
|
413
|
-
txnCookieHash
|
|
395
|
+
txnCookieHash: string;
|
|
414
396
|
} | {
|
|
415
397
|
appId: string;
|
|
416
398
|
clientId: string;
|
|
@@ -425,7 +407,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
425
407
|
scope: string;
|
|
426
408
|
state?: string;
|
|
427
409
|
status: "upstream";
|
|
428
|
-
txnCookieHash
|
|
410
|
+
txnCookieHash: string;
|
|
429
411
|
upstreamCodeVerifier: string;
|
|
430
412
|
upstreamNonce?: string;
|
|
431
413
|
upstreamStateHash: string;
|
|
@@ -443,7 +425,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
443
425
|
scope: string;
|
|
444
426
|
state?: string;
|
|
445
427
|
status: "claimed";
|
|
446
|
-
txnCookieHash
|
|
428
|
+
txnCookieHash: string;
|
|
447
429
|
} | {
|
|
448
430
|
appId: string;
|
|
449
431
|
clientId: string;
|
|
@@ -464,7 +446,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
464
446
|
scope: string;
|
|
465
447
|
state?: string;
|
|
466
448
|
status: "emailSent";
|
|
467
|
-
txnCookieHash
|
|
449
|
+
txnCookieHash: string;
|
|
468
450
|
} | {
|
|
469
451
|
appId: string;
|
|
470
452
|
authTime: number;
|
|
@@ -487,7 +469,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
487
469
|
scope: string;
|
|
488
470
|
state?: string;
|
|
489
471
|
status: "completed";
|
|
490
|
-
txnCookieHash
|
|
472
|
+
txnCookieHash: string;
|
|
491
473
|
}, [import("convex/values").VObject<{
|
|
492
474
|
appId: string;
|
|
493
475
|
clientId: string;
|
|
@@ -501,7 +483,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
501
483
|
scope: string;
|
|
502
484
|
state?: string;
|
|
503
485
|
status: "pending";
|
|
504
|
-
txnCookieHash
|
|
486
|
+
txnCookieHash: string;
|
|
505
487
|
}, {
|
|
506
488
|
requestId: import("convex/values").VString<string, "required">;
|
|
507
489
|
appId: import("convex/values").VString<string, "required">;
|
|
@@ -514,11 +496,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
514
496
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
515
497
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
516
498
|
/**
|
|
517
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
518
|
-
*
|
|
519
|
-
*
|
|
499
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
500
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
501
|
+
* move it on.
|
|
520
502
|
*/
|
|
521
|
-
txnCookieHash: import("convex/values").VString<string
|
|
503
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
522
504
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
523
505
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
524
506
|
status: import("convex/values").VLiteral<"pending", "required">;
|
|
@@ -536,7 +518,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
536
518
|
scope: string;
|
|
537
519
|
state?: string;
|
|
538
520
|
status: "upstream";
|
|
539
|
-
txnCookieHash
|
|
521
|
+
txnCookieHash: string;
|
|
540
522
|
upstreamCodeVerifier: string;
|
|
541
523
|
upstreamNonce?: string;
|
|
542
524
|
upstreamStateHash: string;
|
|
@@ -552,11 +534,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
552
534
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
553
535
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
554
536
|
/**
|
|
555
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
556
|
-
*
|
|
557
|
-
*
|
|
537
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
538
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
539
|
+
* move it on.
|
|
558
540
|
*/
|
|
559
|
-
txnCookieHash: import("convex/values").VString<string
|
|
541
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
560
542
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
561
543
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
562
544
|
status: import("convex/values").VLiteral<"upstream", "required">;
|
|
@@ -578,7 +560,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
578
560
|
scope: string;
|
|
579
561
|
state?: string;
|
|
580
562
|
status: "claimed";
|
|
581
|
-
txnCookieHash
|
|
563
|
+
txnCookieHash: string;
|
|
582
564
|
}, {
|
|
583
565
|
requestId: import("convex/values").VString<string, "required">;
|
|
584
566
|
appId: import("convex/values").VString<string, "required">;
|
|
@@ -591,11 +573,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
591
573
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
592
574
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
593
575
|
/**
|
|
594
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
595
|
-
*
|
|
596
|
-
*
|
|
576
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
577
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
578
|
+
* move it on.
|
|
597
579
|
*/
|
|
598
|
-
txnCookieHash: import("convex/values").VString<string
|
|
580
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
599
581
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
600
582
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
601
583
|
status: import("convex/values").VLiteral<"claimed", "required">;
|
|
@@ -620,7 +602,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
620
602
|
scope: string;
|
|
621
603
|
state?: string;
|
|
622
604
|
status: "emailSent";
|
|
623
|
-
txnCookieHash
|
|
605
|
+
txnCookieHash: string;
|
|
624
606
|
}, {
|
|
625
607
|
requestId: import("convex/values").VString<string, "required">;
|
|
626
608
|
appId: import("convex/values").VString<string, "required">;
|
|
@@ -633,11 +615,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
633
615
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
634
616
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
635
617
|
/**
|
|
636
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
637
|
-
*
|
|
638
|
-
*
|
|
618
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
619
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
620
|
+
* move it on.
|
|
639
621
|
*/
|
|
640
|
-
txnCookieHash: import("convex/values").VString<string
|
|
622
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
641
623
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
642
624
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
643
625
|
status: import("convex/values").VLiteral<"emailSent", "required">;
|
|
@@ -672,7 +654,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
672
654
|
scope: string;
|
|
673
655
|
state?: string;
|
|
674
656
|
status: "completed";
|
|
675
|
-
txnCookieHash
|
|
657
|
+
txnCookieHash: string;
|
|
676
658
|
}, {
|
|
677
659
|
requestId: import("convex/values").VString<string, "required">;
|
|
678
660
|
appId: import("convex/values").VString<string, "required">;
|
|
@@ -685,11 +667,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
685
667
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
686
668
|
freshLogin: import("convex/values").VBoolean<boolean, "required">;
|
|
687
669
|
/**
|
|
688
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
689
|
-
*
|
|
690
|
-
*
|
|
670
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
671
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
672
|
+
* move it on.
|
|
691
673
|
*/
|
|
692
|
-
txnCookieHash: import("convex/values").VString<string
|
|
674
|
+
txnCookieHash: import("convex/values").VString<string, "required">;
|
|
693
675
|
createdAt: import("convex/values").VFloat64<number, "required">;
|
|
694
676
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
695
677
|
status: import("convex/values").VLiteral<"completed", "required">;
|
package/dist/component/schema.js
CHANGED
|
@@ -31,11 +31,11 @@ const authRequestFields = {
|
|
|
31
31
|
/** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
|
|
32
32
|
freshLogin: boolean(),
|
|
33
33
|
/**
|
|
34
|
-
* SHA-256 hex of the request's transaction cookie, set
|
|
35
|
-
*
|
|
36
|
-
*
|
|
34
|
+
* SHA-256 hex of the request's transaction cookie, set by `/authorize`. `/continue`, the connector
|
|
35
|
+
* callback, and the email steps need the cookie, so only the browser that started the request can
|
|
36
|
+
* move it on.
|
|
37
37
|
*/
|
|
38
|
-
txnCookieHash:
|
|
38
|
+
txnCookieHash: string(),
|
|
39
39
|
createdAt: number(),
|
|
40
40
|
expiresAt: number(),
|
|
41
41
|
};
|
|
@@ -79,22 +79,10 @@ export default defineSchema({
|
|
|
79
79
|
appId: string(),
|
|
80
80
|
name: string(),
|
|
81
81
|
firstParty: boolean(),
|
|
82
|
-
/**
|
|
83
|
-
* Exact hosts or `*.suffix` patterns a client callback may use through `/register`, e.g.
|
|
84
|
-
* `*.convex.site`. `registerClient` does not read it.
|
|
85
|
-
*/
|
|
82
|
+
/** No longer read. The rows of a hub from before 0.8.0 still hold it. */
|
|
86
83
|
allowedCallbackHosts: optional(array(string())),
|
|
87
84
|
createdAt: number(),
|
|
88
85
|
}).index("by_app_id", ["appId"]),
|
|
89
|
-
registrationTokens: defineTable({
|
|
90
|
-
tokenHash: string(),
|
|
91
|
-
appId: string(),
|
|
92
|
-
expiresAt: number(),
|
|
93
|
-
createdAt: number(),
|
|
94
|
-
})
|
|
95
|
-
.index("by_token_hash", ["tokenHash"])
|
|
96
|
-
.index("by_app_id", ["appId"])
|
|
97
|
-
.index("by_expires_at", ["expiresAt"]),
|
|
98
86
|
clients: defineTable({
|
|
99
87
|
clientId: string(),
|
|
100
88
|
appId: string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAE/E,8FAA8F;AAC9F,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAC3C,OAAO,CAAC,oBAAoB,CAAC,EAC7B,OAAO,CAAC,qBAAqB,CAAC,CAC/B,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAClC,OAAO,CAAC,YAAY,CAAC,EACrB,OAAO,CAAC,aAAa,CAAC,EACtB,OAAO,CAAC,SAAS,CAAC,CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,EAAE;IACnB,UAAU,EAAE,MAAM,EAAE;IACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IAClC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC5B,CAAC,CAAC;AAEH,4FAA4F;AAC5F,MAAM,iBAAiB,GAAG;IACxB,SAAS,EAAE,MAAM,EAAE;IACnB,KAAK,EAAE,MAAM,EAAE;IACf,QAAQ,EAAE,MAAM,EAAE;IAClB,WAAW,EAAE,MAAM,EAAE;IACrB,KAAK,EAAE,MAAM,EAAE;IACf,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE;IACvB,yFAAyF;IACzF,UAAU,EAAE,OAAO,EAAE;IACrB;;;;OAIG;IACH,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/component/crypto.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/** SHA-256 of `input`, base64url without padding: the PKCE S256 transform of RFC 7636. */
|
|
2
|
-
export async function sha256Base64Url(input) {
|
|
3
|
-
const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(input));
|
|
4
|
-
return btoa(String.fromCharCode(...new Uint8Array(digest)))
|
|
5
|
-
.replace(/\+/g, "-")
|
|
6
|
-
.replace(/\//g, "_")
|
|
7
|
-
.replace(/=+$/, "");
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=crypto.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/component/crypto.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;SACxD,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/** Stores the hash of an initial access token (RFC 7591 section 3) that registers clients of one app. */
|
|
2
|
-
export declare const mintToken: import("convex/server").RegisteredMutation<"public", {
|
|
3
|
-
appId: string;
|
|
4
|
-
createdAt: number;
|
|
5
|
-
expiresAt: number;
|
|
6
|
-
tokenHash: string;
|
|
7
|
-
}, Promise<null>>;
|
|
8
|
-
/** The app a live registration token belongs to, or null for an unknown or expired token. */
|
|
9
|
-
export declare const readToken: import("convex/server").RegisteredQuery<"public", {
|
|
10
|
-
now: number;
|
|
11
|
-
tokenHash: string;
|
|
12
|
-
}, Promise<{
|
|
13
|
-
appId: string;
|
|
14
|
-
name: string;
|
|
15
|
-
firstParty: boolean;
|
|
16
|
-
allowedCallbackHosts: string[];
|
|
17
|
-
} | null>>;
|
|
18
|
-
/** The tokens of one app, as hashes: the plaintext is never stored. Oldest first. */
|
|
19
|
-
export declare const listTokens: import("convex/server").RegisteredQuery<"public", {
|
|
20
|
-
appId: string;
|
|
21
|
-
}, Promise<{
|
|
22
|
-
tokenHash: string;
|
|
23
|
-
expiresAt: number;
|
|
24
|
-
createdAt: number;
|
|
25
|
-
}[]>>;
|
|
26
|
-
/** Deletes a registration token before it expires. Clients it registered stay. */
|
|
27
|
-
export declare const revokeToken: import("convex/server").RegisteredMutation<"public", {
|
|
28
|
-
tokenHash: string;
|
|
29
|
-
}, Promise<null>>;
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { v } from "convex/values";
|
|
2
|
-
import { mutation, query } from "./_generated/server";
|
|
3
|
-
const { array, boolean, number, object, string } = v;
|
|
4
|
-
/** Stores the hash of an initial access token (RFC 7591 section 3) that registers clients of one app. */
|
|
5
|
-
export const mintToken = mutation({
|
|
6
|
-
args: { tokenHash: string(), appId: string(), expiresAt: number(), createdAt: number() },
|
|
7
|
-
returns: v.null(),
|
|
8
|
-
handler: async (ctx, args) => {
|
|
9
|
-
const app = await ctx.db
|
|
10
|
-
.query("apps")
|
|
11
|
-
.withIndex("by_app_id", (q) => q.eq("appId", args.appId))
|
|
12
|
-
.unique();
|
|
13
|
-
if (app === null) {
|
|
14
|
-
throw new Error(`Unknown app "${args.appId}"`);
|
|
15
|
-
}
|
|
16
|
-
await ctx.db.insert("registrationTokens", {
|
|
17
|
-
tokenHash: args.tokenHash,
|
|
18
|
-
appId: args.appId,
|
|
19
|
-
expiresAt: args.expiresAt,
|
|
20
|
-
createdAt: args.createdAt,
|
|
21
|
-
});
|
|
22
|
-
return null;
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
/** The app a live registration token belongs to, or null for an unknown or expired token. */
|
|
26
|
-
export const readToken = query({
|
|
27
|
-
args: { tokenHash: string(), now: number() },
|
|
28
|
-
returns: v.union(object({
|
|
29
|
-
appId: string(),
|
|
30
|
-
name: string(),
|
|
31
|
-
firstParty: boolean(),
|
|
32
|
-
allowedCallbackHosts: array(string()),
|
|
33
|
-
}), v.null()),
|
|
34
|
-
handler: async (ctx, args) => {
|
|
35
|
-
const token = await ctx.db
|
|
36
|
-
.query("registrationTokens")
|
|
37
|
-
.withIndex("by_token_hash", (q) => q.eq("tokenHash", args.tokenHash))
|
|
38
|
-
.unique();
|
|
39
|
-
if (token === null || token.expiresAt <= args.now) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
const app = await ctx.db
|
|
43
|
-
.query("apps")
|
|
44
|
-
.withIndex("by_app_id", (q) => q.eq("appId", token.appId))
|
|
45
|
-
.unique();
|
|
46
|
-
if (app === null) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
appId: app.appId,
|
|
51
|
-
name: app.name,
|
|
52
|
-
firstParty: app.firstParty,
|
|
53
|
-
allowedCallbackHosts: app.allowedCallbackHosts ?? [],
|
|
54
|
-
};
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
/** The tokens of one app, as hashes: the plaintext is never stored. Oldest first. */
|
|
58
|
-
export const listTokens = query({
|
|
59
|
-
args: { appId: string() },
|
|
60
|
-
returns: array(object({ tokenHash: string(), expiresAt: number(), createdAt: number() })),
|
|
61
|
-
handler: async (ctx, args) => {
|
|
62
|
-
const tokens = await ctx.db
|
|
63
|
-
.query("registrationTokens")
|
|
64
|
-
.withIndex("by_app_id", (q) => q.eq("appId", args.appId))
|
|
65
|
-
.collect();
|
|
66
|
-
return tokens
|
|
67
|
-
.map((token) => ({
|
|
68
|
-
tokenHash: token.tokenHash,
|
|
69
|
-
expiresAt: token.expiresAt,
|
|
70
|
-
createdAt: token.createdAt,
|
|
71
|
-
}))
|
|
72
|
-
.sort((a, b) => a.createdAt - b.createdAt || a.tokenHash.localeCompare(b.tokenHash));
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
/** Deletes a registration token before it expires. Clients it registered stay. */
|
|
76
|
-
export const revokeToken = mutation({
|
|
77
|
-
args: { tokenHash: string() },
|
|
78
|
-
returns: v.null(),
|
|
79
|
-
handler: async (ctx, args) => {
|
|
80
|
-
const token = await ctx.db
|
|
81
|
-
.query("registrationTokens")
|
|
82
|
-
.withIndex("by_token_hash", (q) => q.eq("tokenHash", args.tokenHash))
|
|
83
|
-
.unique();
|
|
84
|
-
if (token !== null) {
|
|
85
|
-
await ctx.db.delete("registrationTokens", token._id);
|
|
86
|
-
}
|
|
87
|
-
return null;
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
//# sourceMappingURL=registration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/component/registration.ts"],"names":[],"mappings":"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"}
|