@samebase/identity-broker 0.1.0 → 0.2.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.
@@ -35,6 +35,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
35
35
  scope: string;
36
36
  state?: string;
37
37
  status: "pending";
38
+ txnCookieHash?: string;
38
39
  } | {
39
40
  appId: string;
40
41
  clientId: string;
@@ -49,6 +50,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
49
50
  scope: string;
50
51
  state?: string;
51
52
  status: "upstream";
53
+ txnCookieHash?: string;
52
54
  upstreamCodeVerifier: string;
53
55
  upstreamNonce?: string;
54
56
  upstreamStateHash: string;
@@ -66,6 +68,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
66
68
  scope: string;
67
69
  state?: string;
68
70
  status: "claimed";
71
+ txnCookieHash?: string;
69
72
  } | {
70
73
  appId: string;
71
74
  clientId: string;
@@ -76,6 +79,8 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
76
79
  emailAttempts: number;
77
80
  emailCodeExpiresAt: number;
78
81
  emailCodeHash: string;
82
+ emailLastSentAt: number;
83
+ emailSends: number;
79
84
  expiresAt: number;
80
85
  freshLogin: boolean;
81
86
  nonce?: string;
@@ -84,6 +89,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
84
89
  scope: string;
85
90
  state?: string;
86
91
  status: "emailSent";
92
+ txnCookieHash?: string;
87
93
  } | {
88
94
  appId: string;
89
95
  authTime: number;
@@ -106,6 +112,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
106
112
  scope: string;
107
113
  state?: string;
108
114
  status: "completed";
115
+ txnCookieHash?: string;
109
116
  }, [import("convex/values").VObject<{
110
117
  appId: string;
111
118
  clientId: string;
@@ -119,6 +126,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
119
126
  scope: string;
120
127
  state?: string;
121
128
  status: "pending";
129
+ txnCookieHash?: string;
122
130
  }, {
123
131
  requestId: import("convex/values").VString<string, "required">;
124
132
  appId: import("convex/values").VString<string, "required">;
@@ -130,10 +138,15 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
130
138
  codeChallenge: import("convex/values").VString<string, "required">;
131
139
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
132
140
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
141
+ /**
142
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
143
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
144
+ */
145
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
133
146
  createdAt: import("convex/values").VFloat64<number, "required">;
134
147
  expiresAt: import("convex/values").VFloat64<number, "required">;
135
148
  status: import("convex/values").VLiteral<"pending", "required">;
136
- }, "required", "appId" | "clientId" | "codeChallenge" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status">, import("convex/values").VObject<{
149
+ }, "required", "appId" | "clientId" | "codeChallenge" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash">, import("convex/values").VObject<{
137
150
  appId: string;
138
151
  clientId: string;
139
152
  codeChallenge: string;
@@ -147,6 +160,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
147
160
  scope: string;
148
161
  state?: string;
149
162
  status: "upstream";
163
+ txnCookieHash?: string;
150
164
  upstreamCodeVerifier: string;
151
165
  upstreamNonce?: string;
152
166
  upstreamStateHash: string;
@@ -161,6 +175,11 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
161
175
  codeChallenge: import("convex/values").VString<string, "required">;
162
176
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
163
177
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
178
+ /**
179
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
180
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
181
+ */
182
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
164
183
  createdAt: import("convex/values").VFloat64<number, "required">;
165
184
  expiresAt: import("convex/values").VFloat64<number, "required">;
166
185
  status: import("convex/values").VLiteral<"upstream", "required">;
@@ -168,7 +187,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
168
187
  upstreamStateHash: import("convex/values").VString<string, "required">;
169
188
  upstreamCodeVerifier: import("convex/values").VString<string, "required">;
170
189
  upstreamNonce: import("convex/values").VString<string | undefined, "optional">;
171
- }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "upstreamCodeVerifier" | "upstreamNonce" | "upstreamStateHash">, import("convex/values").VObject<{
190
+ }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash" | "upstreamCodeVerifier" | "upstreamNonce" | "upstreamStateHash">, import("convex/values").VObject<{
172
191
  appId: string;
173
192
  clientId: string;
174
193
  codeChallenge: string;
@@ -182,6 +201,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
182
201
  scope: string;
183
202
  state?: string;
184
203
  status: "claimed";
204
+ txnCookieHash?: string;
185
205
  }, {
186
206
  requestId: import("convex/values").VString<string, "required">;
187
207
  appId: import("convex/values").VString<string, "required">;
@@ -193,11 +213,16 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
193
213
  codeChallenge: import("convex/values").VString<string, "required">;
194
214
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
195
215
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
216
+ /**
217
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
218
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
219
+ */
220
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
196
221
  createdAt: import("convex/values").VFloat64<number, "required">;
197
222
  expiresAt: import("convex/values").VFloat64<number, "required">;
198
223
  status: import("convex/values").VLiteral<"claimed", "required">;
199
224
  connector: import("convex/values").VString<string, "required">;
200
- }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status">, import("convex/values").VObject<{
225
+ }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash">, import("convex/values").VObject<{
201
226
  appId: string;
202
227
  clientId: string;
203
228
  codeChallenge: string;
@@ -207,6 +232,8 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
207
232
  emailAttempts: number;
208
233
  emailCodeExpiresAt: number;
209
234
  emailCodeHash: string;
235
+ emailLastSentAt: number;
236
+ emailSends: number;
210
237
  expiresAt: number;
211
238
  freshLogin: boolean;
212
239
  nonce?: string;
@@ -215,6 +242,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
215
242
  scope: string;
216
243
  state?: string;
217
244
  status: "emailSent";
245
+ txnCookieHash?: string;
218
246
  }, {
219
247
  requestId: import("convex/values").VString<string, "required">;
220
248
  appId: import("convex/values").VString<string, "required">;
@@ -226,6 +254,11 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
226
254
  codeChallenge: import("convex/values").VString<string, "required">;
227
255
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
228
256
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
257
+ /**
258
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
259
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
260
+ */
261
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
229
262
  createdAt: import("convex/values").VFloat64<number, "required">;
230
263
  expiresAt: import("convex/values").VFloat64<number, "required">;
231
264
  status: import("convex/values").VLiteral<"emailSent", "required">;
@@ -233,8 +266,12 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
233
266
  email: import("convex/values").VString<string, "required">;
234
267
  emailCodeHash: import("convex/values").VString<string, "required">;
235
268
  emailCodeExpiresAt: import("convex/values").VFloat64<number, "required">;
269
+ /** Wrong codes typed, across every code sent for this request. */
236
270
  emailAttempts: import("convex/values").VFloat64<number, "required">;
237
- }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "email" | "emailAttempts" | "emailCodeExpiresAt" | "emailCodeHash" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status">, import("convex/values").VObject<{
271
+ /** Codes sent for this request. */
272
+ emailSends: import("convex/values").VFloat64<number, "required">;
273
+ emailLastSentAt: import("convex/values").VFloat64<number, "required">;
274
+ }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "email" | "emailAttempts" | "emailCodeExpiresAt" | "emailCodeHash" | "emailLastSentAt" | "emailSends" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash">, import("convex/values").VObject<{
238
275
  appId: string;
239
276
  authTime: number;
240
277
  clientId: string;
@@ -256,6 +293,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
256
293
  scope: string;
257
294
  state?: string;
258
295
  status: "completed";
296
+ txnCookieHash?: string;
259
297
  }, {
260
298
  requestId: import("convex/values").VString<string, "required">;
261
299
  appId: import("convex/values").VString<string, "required">;
@@ -267,6 +305,11 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
267
305
  codeChallenge: import("convex/values").VString<string, "required">;
268
306
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
269
307
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
308
+ /**
309
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
310
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
311
+ */
312
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
270
313
  createdAt: import("convex/values").VFloat64<number, "required">;
271
314
  expiresAt: import("convex/values").VFloat64<number, "required">;
272
315
  status: import("convex/values").VLiteral<"completed", "required">;
@@ -286,7 +329,7 @@ export declare const vAuthRequest: import("convex/values").VUnion<{
286
329
  picture: import("convex/values").VString<string | undefined, "optional">;
287
330
  }, "required", "connector" | "email" | "emailVerified" | "name" | "picture" | "upstreamId">;
288
331
  authTime: import("convex/values").VFloat64<number, "required">;
289
- }, "required", "appId" | "authTime" | "clientId" | "codeChallenge" | "createdAt" | "expiresAt" | "freshLogin" | "identity" | "identity.connector" | "identity.email" | "identity.emailVerified" | "identity.name" | "identity.picture" | "identity.upstreamId" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status">], "required", "appId" | "authTime" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "email" | "emailAttempts" | "emailCodeExpiresAt" | "emailCodeHash" | "expiresAt" | "freshLogin" | "identity" | "identity.connector" | "identity.email" | "identity.emailVerified" | "identity.name" | "identity.picture" | "identity.upstreamId" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "upstreamCodeVerifier" | "upstreamNonce" | "upstreamStateHash">;
332
+ }, "required", "appId" | "authTime" | "clientId" | "codeChallenge" | "createdAt" | "expiresAt" | "freshLogin" | "identity" | "identity.connector" | "identity.email" | "identity.emailVerified" | "identity.name" | "identity.picture" | "identity.upstreamId" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash">], "required", "appId" | "authTime" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "email" | "emailAttempts" | "emailCodeExpiresAt" | "emailCodeHash" | "emailLastSentAt" | "emailSends" | "expiresAt" | "freshLogin" | "identity" | "identity.connector" | "identity.email" | "identity.emailVerified" | "identity.name" | "identity.picture" | "identity.upstreamId" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash" | "upstreamCodeVerifier" | "upstreamNonce" | "upstreamStateHash">;
290
333
  declare const _default: import("convex/server").SchemaDefinition<{
291
334
  apps: import("convex/server").TableDefinition<import("convex/values").VObject<{
292
335
  allowedCallbackHosts: string[];
@@ -316,6 +359,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
316
359
  createdAt: import("convex/values").VFloat64<number, "required">;
317
360
  }, "required", "appId" | "createdAt" | "expiresAt" | "tokenHash">, {
318
361
  by_app_id: ["appId", "_creationTime"];
362
+ by_expires_at: ["expiresAt", "_creationTime"];
319
363
  by_token_hash: ["tokenHash", "_creationTime"];
320
364
  }, {}, {}>;
321
365
  clients: import("convex/server").TableDefinition<import("convex/values").VObject<{
@@ -358,6 +402,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
358
402
  scope: string;
359
403
  state?: string;
360
404
  status: "pending";
405
+ txnCookieHash?: string;
361
406
  } | {
362
407
  appId: string;
363
408
  clientId: string;
@@ -372,6 +417,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
372
417
  scope: string;
373
418
  state?: string;
374
419
  status: "upstream";
420
+ txnCookieHash?: string;
375
421
  upstreamCodeVerifier: string;
376
422
  upstreamNonce?: string;
377
423
  upstreamStateHash: string;
@@ -389,6 +435,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
389
435
  scope: string;
390
436
  state?: string;
391
437
  status: "claimed";
438
+ txnCookieHash?: string;
392
439
  } | {
393
440
  appId: string;
394
441
  clientId: string;
@@ -399,6 +446,8 @@ declare const _default: import("convex/server").SchemaDefinition<{
399
446
  emailAttempts: number;
400
447
  emailCodeExpiresAt: number;
401
448
  emailCodeHash: string;
449
+ emailLastSentAt: number;
450
+ emailSends: number;
402
451
  expiresAt: number;
403
452
  freshLogin: boolean;
404
453
  nonce?: string;
@@ -407,6 +456,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
407
456
  scope: string;
408
457
  state?: string;
409
458
  status: "emailSent";
459
+ txnCookieHash?: string;
410
460
  } | {
411
461
  appId: string;
412
462
  authTime: number;
@@ -429,6 +479,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
429
479
  scope: string;
430
480
  state?: string;
431
481
  status: "completed";
482
+ txnCookieHash?: string;
432
483
  }, [import("convex/values").VObject<{
433
484
  appId: string;
434
485
  clientId: string;
@@ -442,6 +493,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
442
493
  scope: string;
443
494
  state?: string;
444
495
  status: "pending";
496
+ txnCookieHash?: string;
445
497
  }, {
446
498
  requestId: import("convex/values").VString<string, "required">;
447
499
  appId: import("convex/values").VString<string, "required">;
@@ -453,10 +505,15 @@ declare const _default: import("convex/server").SchemaDefinition<{
453
505
  codeChallenge: import("convex/values").VString<string, "required">;
454
506
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
455
507
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
508
+ /**
509
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
510
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
511
+ */
512
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
456
513
  createdAt: import("convex/values").VFloat64<number, "required">;
457
514
  expiresAt: import("convex/values").VFloat64<number, "required">;
458
515
  status: import("convex/values").VLiteral<"pending", "required">;
459
- }, "required", "appId" | "clientId" | "codeChallenge" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status">, import("convex/values").VObject<{
516
+ }, "required", "appId" | "clientId" | "codeChallenge" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash">, import("convex/values").VObject<{
460
517
  appId: string;
461
518
  clientId: string;
462
519
  codeChallenge: string;
@@ -470,6 +527,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
470
527
  scope: string;
471
528
  state?: string;
472
529
  status: "upstream";
530
+ txnCookieHash?: string;
473
531
  upstreamCodeVerifier: string;
474
532
  upstreamNonce?: string;
475
533
  upstreamStateHash: string;
@@ -484,6 +542,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
484
542
  codeChallenge: import("convex/values").VString<string, "required">;
485
543
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
486
544
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
545
+ /**
546
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
547
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
548
+ */
549
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
487
550
  createdAt: import("convex/values").VFloat64<number, "required">;
488
551
  expiresAt: import("convex/values").VFloat64<number, "required">;
489
552
  status: import("convex/values").VLiteral<"upstream", "required">;
@@ -491,7 +554,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
491
554
  upstreamStateHash: import("convex/values").VString<string, "required">;
492
555
  upstreamCodeVerifier: import("convex/values").VString<string, "required">;
493
556
  upstreamNonce: import("convex/values").VString<string | undefined, "optional">;
494
- }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "upstreamCodeVerifier" | "upstreamNonce" | "upstreamStateHash">, import("convex/values").VObject<{
557
+ }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash" | "upstreamCodeVerifier" | "upstreamNonce" | "upstreamStateHash">, import("convex/values").VObject<{
495
558
  appId: string;
496
559
  clientId: string;
497
560
  codeChallenge: string;
@@ -505,6 +568,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
505
568
  scope: string;
506
569
  state?: string;
507
570
  status: "claimed";
571
+ txnCookieHash?: string;
508
572
  }, {
509
573
  requestId: import("convex/values").VString<string, "required">;
510
574
  appId: import("convex/values").VString<string, "required">;
@@ -516,11 +580,16 @@ declare const _default: import("convex/server").SchemaDefinition<{
516
580
  codeChallenge: import("convex/values").VString<string, "required">;
517
581
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
518
582
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
583
+ /**
584
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
585
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
586
+ */
587
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
519
588
  createdAt: import("convex/values").VFloat64<number, "required">;
520
589
  expiresAt: import("convex/values").VFloat64<number, "required">;
521
590
  status: import("convex/values").VLiteral<"claimed", "required">;
522
591
  connector: import("convex/values").VString<string, "required">;
523
- }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status">, import("convex/values").VObject<{
592
+ }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash">, import("convex/values").VObject<{
524
593
  appId: string;
525
594
  clientId: string;
526
595
  codeChallenge: string;
@@ -530,6 +599,8 @@ declare const _default: import("convex/server").SchemaDefinition<{
530
599
  emailAttempts: number;
531
600
  emailCodeExpiresAt: number;
532
601
  emailCodeHash: string;
602
+ emailLastSentAt: number;
603
+ emailSends: number;
533
604
  expiresAt: number;
534
605
  freshLogin: boolean;
535
606
  nonce?: string;
@@ -538,6 +609,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
538
609
  scope: string;
539
610
  state?: string;
540
611
  status: "emailSent";
612
+ txnCookieHash?: string;
541
613
  }, {
542
614
  requestId: import("convex/values").VString<string, "required">;
543
615
  appId: import("convex/values").VString<string, "required">;
@@ -549,6 +621,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
549
621
  codeChallenge: import("convex/values").VString<string, "required">;
550
622
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
551
623
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
624
+ /**
625
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
626
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
627
+ */
628
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
552
629
  createdAt: import("convex/values").VFloat64<number, "required">;
553
630
  expiresAt: import("convex/values").VFloat64<number, "required">;
554
631
  status: import("convex/values").VLiteral<"emailSent", "required">;
@@ -556,8 +633,12 @@ declare const _default: import("convex/server").SchemaDefinition<{
556
633
  email: import("convex/values").VString<string, "required">;
557
634
  emailCodeHash: import("convex/values").VString<string, "required">;
558
635
  emailCodeExpiresAt: import("convex/values").VFloat64<number, "required">;
636
+ /** Wrong codes typed, across every code sent for this request. */
559
637
  emailAttempts: import("convex/values").VFloat64<number, "required">;
560
- }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "email" | "emailAttempts" | "emailCodeExpiresAt" | "emailCodeHash" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status">, import("convex/values").VObject<{
638
+ /** Codes sent for this request. */
639
+ emailSends: import("convex/values").VFloat64<number, "required">;
640
+ emailLastSentAt: import("convex/values").VFloat64<number, "required">;
641
+ }, "required", "appId" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "email" | "emailAttempts" | "emailCodeExpiresAt" | "emailCodeHash" | "emailLastSentAt" | "emailSends" | "expiresAt" | "freshLogin" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash">, import("convex/values").VObject<{
561
642
  appId: string;
562
643
  authTime: number;
563
644
  clientId: string;
@@ -579,6 +660,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
579
660
  scope: string;
580
661
  state?: string;
581
662
  status: "completed";
663
+ txnCookieHash?: string;
582
664
  }, {
583
665
  requestId: import("convex/values").VString<string, "required">;
584
666
  appId: import("convex/values").VString<string, "required">;
@@ -590,6 +672,11 @@ declare const _default: import("convex/server").SchemaDefinition<{
590
672
  codeChallenge: import("convex/values").VString<string, "required">;
591
673
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
592
674
  freshLogin: import("convex/values").VBoolean<boolean, "required">;
675
+ /**
676
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
677
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
678
+ */
679
+ txnCookieHash: import("convex/values").VString<string | undefined, "optional">;
593
680
  createdAt: import("convex/values").VFloat64<number, "required">;
594
681
  expiresAt: import("convex/values").VFloat64<number, "required">;
595
682
  status: import("convex/values").VLiteral<"completed", "required">;
@@ -609,7 +696,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
609
696
  picture: import("convex/values").VString<string | undefined, "optional">;
610
697
  }, "required", "connector" | "email" | "emailVerified" | "name" | "picture" | "upstreamId">;
611
698
  authTime: import("convex/values").VFloat64<number, "required">;
612
- }, "required", "appId" | "authTime" | "clientId" | "codeChallenge" | "createdAt" | "expiresAt" | "freshLogin" | "identity" | "identity.connector" | "identity.email" | "identity.emailVerified" | "identity.name" | "identity.picture" | "identity.upstreamId" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status">], "required", "appId" | "authTime" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "email" | "emailAttempts" | "emailCodeExpiresAt" | "emailCodeHash" | "expiresAt" | "freshLogin" | "identity" | "identity.connector" | "identity.email" | "identity.emailVerified" | "identity.name" | "identity.picture" | "identity.upstreamId" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "upstreamCodeVerifier" | "upstreamNonce" | "upstreamStateHash">, {
699
+ }, "required", "appId" | "authTime" | "clientId" | "codeChallenge" | "createdAt" | "expiresAt" | "freshLogin" | "identity" | "identity.connector" | "identity.email" | "identity.emailVerified" | "identity.name" | "identity.picture" | "identity.upstreamId" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash">], "required", "appId" | "authTime" | "clientId" | "codeChallenge" | "connector" | "createdAt" | "email" | "emailAttempts" | "emailCodeExpiresAt" | "emailCodeHash" | "emailLastSentAt" | "emailSends" | "expiresAt" | "freshLogin" | "identity" | "identity.connector" | "identity.email" | "identity.emailVerified" | "identity.name" | "identity.picture" | "identity.upstreamId" | "nonce" | "redirectUri" | "requestId" | "scope" | "state" | "status" | "txnCookieHash" | "upstreamCodeVerifier" | "upstreamNonce" | "upstreamStateHash">, {
613
700
  by_expires_at: ["expiresAt", "_creationTime"];
614
701
  by_request_id: ["requestId", "_creationTime"];
615
702
  by_upstream_state_hash: ["upstreamStateHash", "_creationTime"];
@@ -630,6 +717,18 @@ declare const _default: import("convex/server").SchemaDefinition<{
630
717
  by_code_hash: ["codeHash", "_creationTime"];
631
718
  by_expires_at: ["expiresAt", "_creationTime"];
632
719
  }, {}, {}>;
720
+ /** One row per email code sent, kept for the rolling send window; no address, only its hash. */
721
+ emailSends: import("convex/server").TableDefinition<import("convex/values").VObject<{
722
+ at: number;
723
+ emailHash: string;
724
+ }, {
725
+ /** SHA-256 hex of the canonical address. */
726
+ emailHash: import("convex/values").VString<string, "required">;
727
+ at: import("convex/values").VFloat64<number, "required">;
728
+ }, "required", "at" | "emailHash">, {
729
+ by_at: ["at", "_creationTime"];
730
+ by_email_hash_and_at: ["emailHash", "at", "_creationTime"];
731
+ }, {}, {}>;
633
732
  signIns: import("convex/server").TableDefinition<import("convex/values").VObject<{
634
733
  appId: string;
635
734
  at: number;
@@ -30,6 +30,11 @@ const authRequestFields = {
30
30
  codeChallenge: string(),
31
31
  /** `prompt=login` or `max_age` was sent: the connector must reauthenticate or refuse. */
32
32
  freshLogin: boolean(),
33
+ /**
34
+ * SHA-256 hex of the `broker_txn` cookie set with the chooser page: `/continue` needs the cookie,
35
+ * so only the browser that saw the chooser can continue. Absent when /authorize skipped the chooser.
36
+ */
37
+ txnCookieHash: optional(string()),
33
38
  createdAt: number(),
34
39
  expiresAt: number(),
35
40
  };
@@ -47,7 +52,7 @@ object({
47
52
  }),
48
53
  // The connector callback arrived and the code exchange is running; a replay finds this and stops.
49
54
  object({ status: literal("claimed"), ...authRequestFields, connector: string() }),
50
- // An email code was sent; the user types it.
55
+ // An email code was sent; the user types it. A resend replaces the code and keeps the counts.
51
56
  object({
52
57
  status: literal("emailSent"),
53
58
  ...authRequestFields,
@@ -55,7 +60,11 @@ object({
55
60
  email: string(),
56
61
  emailCodeHash: string(),
57
62
  emailCodeExpiresAt: number(),
63
+ /** Wrong codes typed, across every code sent for this request. */
58
64
  emailAttempts: number(),
65
+ /** Codes sent for this request. */
66
+ emailSends: number(),
67
+ emailLastSentAt: number(),
59
68
  }),
60
69
  // The connector attested the identity; the authorization code points here until it is exchanged.
61
70
  object({
@@ -80,7 +89,8 @@ export default defineSchema({
80
89
  createdAt: number(),
81
90
  })
82
91
  .index("by_token_hash", ["tokenHash"])
83
- .index("by_app_id", ["appId"]),
92
+ .index("by_app_id", ["appId"])
93
+ .index("by_expires_at", ["expiresAt"]),
84
94
  clients: defineTable({
85
95
  clientId: string(),
86
96
  appId: string(),
@@ -109,6 +119,14 @@ export default defineSchema({
109
119
  })
110
120
  .index("by_code_hash", ["codeHash"])
111
121
  .index("by_expires_at", ["expiresAt"]),
122
+ /** One row per email code sent, kept for the rolling send window; no address, only its hash. */
123
+ emailSends: defineTable({
124
+ /** SHA-256 hex of the canonical address. */
125
+ emailHash: string(),
126
+ at: number(),
127
+ })
128
+ .index("by_email_hash_and_at", ["emailHash", "at"])
129
+ .index("by_at", ["at"]),
112
130
  signIns: defineTable({
113
131
  appId: string(),
114
132
  clientId: string(),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samebase/identity-broker",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "An OpenID Provider for Convex that holds a team's upstream sign-in connections once and keeps no user accounts.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {