@spine-event-engine/auth 2.0.0-snapshot.26 → 2.0.0-snapshot.28

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.
Files changed (65) hide show
  1. package/README.md +102 -11
  2. package/REFERENCE.md +125 -3
  3. package/dist/index.d.ts +15 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +4 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/oidc/contracts.d.ts +18 -4
  8. package/dist/oidc/contracts.d.ts.map +1 -1
  9. package/dist/oidc/flow-store.d.ts +143 -0
  10. package/dist/oidc/flow-store.d.ts.map +1 -0
  11. package/dist/oidc/flow-store.js +184 -0
  12. package/dist/oidc/flow-store.js.map +1 -0
  13. package/dist/oidc/index.d.ts +29 -9
  14. package/dist/oidc/index.d.ts.map +1 -1
  15. package/dist/oidc/index.js +611 -152
  16. package/dist/oidc/index.js.map +1 -1
  17. package/dist/oidc/persistent-flow-store.d.ts +117 -0
  18. package/dist/oidc/persistent-flow-store.d.ts.map +1 -0
  19. package/dist/oidc/persistent-flow-store.js +413 -0
  20. package/dist/oidc/persistent-flow-store.js.map +1 -0
  21. package/dist/oidc/records.d.ts +15 -0
  22. package/dist/oidc/records.d.ts.map +1 -0
  23. package/dist/oidc/records.js +91 -0
  24. package/dist/oidc/records.js.map +1 -0
  25. package/dist/providers/index.d.ts +10 -5
  26. package/dist/providers/index.d.ts.map +1 -1
  27. package/dist/providers/index.js +103 -30
  28. package/dist/providers/index.js.map +1 -1
  29. package/dist/sessions/cookies.d.ts +46 -8
  30. package/dist/sessions/cookies.d.ts.map +1 -1
  31. package/dist/sessions/cookies.js +269 -47
  32. package/dist/sessions/cookies.js.map +1 -1
  33. package/dist/sessions/opaque-session-store.d.ts +143 -0
  34. package/dist/sessions/opaque-session-store.d.ts.map +1 -0
  35. package/dist/sessions/opaque-session-store.js +185 -0
  36. package/dist/sessions/opaque-session-store.js.map +1 -0
  37. package/dist/sessions/opaque.d.ts +93 -106
  38. package/dist/sessions/opaque.d.ts.map +1 -1
  39. package/dist/sessions/opaque.js +501 -232
  40. package/dist/sessions/opaque.js.map +1 -1
  41. package/dist/sessions/persistent-opaque-session-store.d.ts +105 -0
  42. package/dist/sessions/persistent-opaque-session-store.d.ts.map +1 -0
  43. package/dist/sessions/persistent-opaque-session-store.js +333 -0
  44. package/dist/sessions/persistent-opaque-session-store.js.map +1 -0
  45. package/dist/sessions/persistent-token-revocations.d.ts +90 -0
  46. package/dist/sessions/persistent-token-revocations.d.ts.map +1 -0
  47. package/dist/sessions/persistent-token-revocations.js +422 -0
  48. package/dist/sessions/persistent-token-revocations.js.map +1 -0
  49. package/dist/sessions/session-lifetime.d.ts +67 -0
  50. package/dist/sessions/session-lifetime.d.ts.map +1 -0
  51. package/dist/sessions/session-lifetime.js +165 -0
  52. package/dist/sessions/session-lifetime.js.map +1 -0
  53. package/dist/sessions/session-record.d.ts +15 -0
  54. package/dist/sessions/session-record.d.ts.map +1 -0
  55. package/dist/sessions/session-record.js +109 -0
  56. package/dist/sessions/session-record.js.map +1 -0
  57. package/dist/sessions/signed.d.ts +5 -4
  58. package/dist/sessions/signed.d.ts.map +1 -1
  59. package/dist/sessions/signed.js +212 -74
  60. package/dist/sessions/signed.js.map +1 -1
  61. package/dist/subscriptions/index.d.ts.map +1 -1
  62. package/dist/subscriptions/index.js +260 -26
  63. package/dist/subscriptions/index.js.map +1 -1
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +20 -6
@@ -12,10 +12,16 @@
12
12
  * the License.
13
13
  */
14
14
  import { createHmac, timingSafeEqual } from "node:crypto";
15
+ import { parseCookie, stringifySetCookie } from "cookie";
16
+ import { SessionRecords } from "./session-record.js";
15
17
  /**
16
18
  * Strict, framework-neutral helper whose `close()` zeroes the copied CSRF secret.
17
19
  */
18
20
  export class OpaqueSessionCookies {
21
+ /**
22
+ * Immutable header and cookie names used by the browser host's raw admission.
23
+ */
24
+ admission;
19
25
  secret;
20
26
  origins;
21
27
  sessionName;
@@ -23,6 +29,8 @@ export class OpaqueSessionCookies {
23
29
  maxHeaderValues;
24
30
  maxHeaderCharacters;
25
31
  maxCookiePairs;
32
+ sameSite;
33
+ persistent;
26
34
  closed = false;
27
35
  /**
28
36
  * Creates strict cookie extraction with copied CSRF key material.
@@ -39,32 +47,55 @@ export class OpaqueSessionCookies {
39
47
  this.csrfName = CookieValues.validCookieName(options.csrfCookieName ?? "__Host-spine-csrf", "csrfCookieName");
40
48
  if (this.sessionName === this.csrfName)
41
49
  throw new Error("sessionCookieName and csrfCookieName must be distinct");
50
+ this.admission = CookieValues.admission(this.sessionName, this.csrfName);
42
51
  this.maxHeaderValues = CookieValues.positiveSafeInteger(options.maxHeaderValues ?? 32, "maxHeaderValues");
43
52
  this.maxHeaderCharacters = CookieValues.positiveSafeInteger(options.maxHeaderCharacters ?? 16_384, "maxHeaderCharacters");
44
53
  this.maxCookiePairs = CookieValues.positiveSafeInteger(options.maxCookiePairs ?? 64, "maxCookiePairs");
54
+ this.sameSite = options.sameSite ?? "lax";
55
+ if (!["lax", "strict", "none"].includes(this.sameSite))
56
+ throw new Error("sameSite must be lax, strict, or none");
57
+ this.persistent = options.persistent ?? false;
58
+ if (typeof this.persistent !== "boolean")
59
+ throw new Error("persistent must be a boolean");
45
60
  }
46
61
  /**
47
- * Creates the fixed-length unpadded base64url CSRF value for one session ID.
48
- * @param sessionId The session identifier protected by the CSRF value.
62
+ * Creates the CSRF value bound to the entire issued opaque credential.
63
+ * @param credential The complete sealed credential protected by the CSRF value.
49
64
  * @returns The derived CSRF value.
50
65
  */
51
- csrf(sessionId) {
66
+ csrf(credential) {
52
67
  this.open();
53
- if (!CookieValues.validSessionId(sessionId)) {
54
- throw new Error("sessionId must be a 43-character unpadded base64url session ID");
55
- }
56
- return createHmac("sha256", this.secret).update(sessionId, "utf8").digest("base64url");
68
+ if (!CookieValues.validCredential(credential))
69
+ throw new Error("credential must be a nonempty sealed value without control characters");
70
+ return createHmac("sha256", this.secret).update(credential, "utf8").digest("base64url");
57
71
  }
58
72
  /**
59
- * Creates the immutable pair of host-only cookies for a newly issued session.
60
- * @param sessionId The issued opaque session identifier.
73
+ * Creates the immutable pair of host-only cookies for an issued or rotated session.
74
+ * @param credential The complete issued opaque credential.
75
+ * @param expiresAt The actual authoritative session deadline.
61
76
  * @returns The session and CSRF Set-Cookie values.
62
77
  */
63
- issue(sessionId) {
64
- const csrf = this.csrf(sessionId);
78
+ issue(credential, expiresAt) {
79
+ const csrf = this.csrf(credential);
80
+ const expires = this.persistent ? CookieValues.expiryDate(expiresAt) : undefined;
65
81
  return Object.freeze([
66
- `${this.sessionName}=${sessionId}; Path=/; Secure; HttpOnly; SameSite=Lax`,
67
- `${this.csrfName}=${csrf}; Path=/; Secure; SameSite=Lax`,
82
+ stringifySetCookie({
83
+ name: this.sessionName,
84
+ value: credential,
85
+ path: "/",
86
+ secure: true,
87
+ httpOnly: true,
88
+ sameSite: this.sameSite,
89
+ ...(expires === undefined ? {} : { expires }),
90
+ }),
91
+ stringifySetCookie({
92
+ name: this.csrfName,
93
+ value: csrf,
94
+ path: "/",
95
+ secure: true,
96
+ sameSite: this.sameSite,
97
+ ...(expires === undefined ? {} : { expires }),
98
+ }),
68
99
  ]);
69
100
  }
70
101
  /**
@@ -74,12 +105,27 @@ export class OpaqueSessionCookies {
74
105
  clear() {
75
106
  this.open();
76
107
  return Object.freeze([
77
- `${this.sessionName}=; Path=/; Secure; HttpOnly; SameSite=Lax; Max-Age=0`,
78
- `${this.csrfName}=; Path=/; Secure; SameSite=Lax; Max-Age=0`,
108
+ stringifySetCookie({
109
+ name: this.sessionName,
110
+ value: "",
111
+ path: "/",
112
+ secure: true,
113
+ httpOnly: true,
114
+ sameSite: this.sameSite,
115
+ maxAge: 0,
116
+ }),
117
+ stringifySetCookie({
118
+ name: this.csrfName,
119
+ value: "",
120
+ path: "/",
121
+ secure: true,
122
+ sameSite: this.sameSite,
123
+ maxAge: 0,
124
+ }),
79
125
  ]);
80
126
  }
81
127
  /**
82
- * Reads bearer credentials first, otherwise a fully checked cookie credential.
128
+ * Rejects simultaneous primary credentials, then reads a bearer or checked cookie credential.
83
129
  * @param headers The request headers to inspect.
84
130
  * @returns The admitted credential or its rejection reason.
85
131
  */
@@ -92,10 +138,22 @@ export class OpaqueSessionCookies {
92
138
  const authorization = values.get("authorization") ?? [];
93
139
  if (authorization.length > 1)
94
140
  return CookieValues.rejection("duplicate-authorization");
141
+ if (authorization.length === 1 &&
142
+ CookieValues.primaryPresent(values.get("cookie") ?? [], this.sessionName))
143
+ return CookieValues.rejection("simultaneous-credential");
95
144
  if (authorization.length === 1)
96
145
  return CookieValues.bearer(CookieValues.only(authorization));
97
146
  return this.cookieCredential(values);
98
147
  }
148
+ /**
149
+ * Reads a browser credential while representing no primary credential as absence.
150
+ * @param request Immutable raw headers with method and request-local parsed URL.
151
+ * @returns A credential, terminal rejection, or undefined absence.
152
+ */
153
+ read(request) {
154
+ const result = this.extract(request.headers);
155
+ return Promise.resolve(result.kind === "rejected" && result.reason === "missing-credential" ? undefined : result);
156
+ }
99
157
  /**
100
158
  * Closes the extractor, zeroes its HMAC secret, and rejects later operations.
101
159
  * @returns Completes after the secret is cleared.
@@ -107,6 +165,11 @@ export class OpaqueSessionCookies {
107
165
  this.secret.fill(0);
108
166
  return Promise.resolve();
109
167
  }
168
+ /**
169
+ * Validates origin and CSRF after the selected cookie pair has been parsed.
170
+ * @param values Duplicate-preserving normalized request headers.
171
+ * @returns Admitted cookie credential or a terminal rejection.
172
+ */
110
173
  cookieCredential(values) {
111
174
  const cookies = values.get("cookie") ?? [];
112
175
  const parsed = CookieValues.parseCookies(cookies, this.sessionName, this.csrfName, this.maxCookiePairs);
@@ -128,6 +191,9 @@ export class OpaqueSessionCookies {
128
191
  }
129
192
  return Object.freeze({ kind: "cookie", value: parsed.session });
130
193
  }
194
+ /**
195
+ * Rejects methods that require the copied CSRF key after closure.
196
+ */
131
197
  open() {
132
198
  if (this.closed)
133
199
  throw new Error("OpaqueSessionCookies is closed");
@@ -137,6 +203,36 @@ export class OpaqueSessionCookies {
137
203
  * Parses and validates cookie values used by {@link OpaqueSessionCookies}.
138
204
  */
139
205
  const CookieValues = Object.freeze({
206
+ /**
207
+ * Captures the validated standard browser admission names as immutable data.
208
+ * @param sessionName Configured primary cookie name.
209
+ * @param csrfName Configured supporting CSRF cookie name.
210
+ * @returns Frozen data declaration for the host's raw admission.
211
+ */
212
+ admission(sessionName, csrfName) {
213
+ return Object.freeze({
214
+ csrfHeaderNames: Object.freeze(["x-spine-csrf"]),
215
+ credentialCookieNames: Object.freeze([sessionName]),
216
+ stateCookieNames: Object.freeze([csrfName]),
217
+ });
218
+ },
219
+ /**
220
+ * Checks whether any Cookie field contains the selected primary credential.
221
+ * @param headers Raw Cookie fields that may be legally split.
222
+ * @param sessionName Configured authentication cookie name.
223
+ * @returns Whether a primary cookie is present, including an empty value.
224
+ */
225
+ primaryPresent(headers, sessionName) {
226
+ return headers.some((header) => Object.hasOwn(parseCookie(header), sessionName));
227
+ },
228
+ /**
229
+ * Collects own request header fields without losing duplicate values.
230
+ *
231
+ * @param headers Original header object.
232
+ * @param maxValues Existing field and value count limit.
233
+ * @param maxCharacters Existing total character limit.
234
+ * @returns Normalized duplicate-preserving values, or undefined when a limit is exceeded.
235
+ */
140
236
  headerValues(headers, maxValues, maxCharacters) {
141
237
  const result = new Map();
142
238
  let count = 0;
@@ -175,50 +271,90 @@ const CookieValues = Object.freeze({
175
271
  }
176
272
  return result;
177
273
  },
274
+ /**
275
+ * Reads one Bearer authorization field without accepting malformed syntax.
276
+ *
277
+ * @param value One Authorization field value.
278
+ * @returns Bearer credential or terminal malformed-authorization rejection.
279
+ */
178
280
  bearer(value) {
179
281
  const match = /^bearer ([\x21-\x7e]+)$/i.exec(value);
180
282
  return match === null
181
283
  ? CookieValues.rejection("malformed-authorization")
182
284
  : Object.freeze({ kind: "bearer", value: CookieValues.only(match.slice(1)) });
183
285
  },
286
+ /**
287
+ * Reads an unambiguous credential and CSRF pair across Cookie fields.
288
+ * @param headers Raw Cookie field values in arrival order.
289
+ * @param sessionName Selected authentication cookie name.
290
+ * @param csrfName Selected CSRF cookie name.
291
+ * @param maxPairs Existing total cookie-pair limit.
292
+ * @returns Decoded pair or a terminal parsing rejection.
293
+ */
184
294
  parseCookies(headers, sessionName, csrfName, maxPairs) {
185
295
  const found = new Map();
186
296
  let count = 0;
187
297
  for (const header of headers) {
188
- if (CookieValues.hasForbiddenCookieCharacter(header))
189
- return { reason: "malformed-cookie" };
190
- for (const pair of header.split(";")) {
191
- count += 1;
192
- if (count > maxPairs)
193
- return { reason: "request-too-large" };
194
- const index = pair.indexOf("=");
195
- if (index <= 0)
196
- return { reason: "malformed-cookie" };
197
- const name = pair.slice(0, index).trim();
198
- const value = pair.slice(index + 1).trim();
199
- if (!CookieValues.validCookiePair(name, value))
200
- return { reason: "malformed-cookie" };
201
- if (name === sessionName || name === csrfName) {
202
- if (found.has(name))
203
- return { reason: "ambiguous-cookie" };
204
- found.set(name, [value]);
205
- }
206
- }
298
+ const result = CookieValues.readCookieHeader(header, found, sessionName, csrfName, maxPairs - count);
299
+ if ("reason" in result)
300
+ return result;
301
+ count += result.count;
207
302
  }
208
- const session = found.get(sessionName) ?? [];
209
- const csrf = found.get(csrfName) ?? [];
210
- if (session.length === 0 && csrf.length === 0)
303
+ const session = found.get(sessionName);
304
+ const csrf = found.get(csrfName);
305
+ if (session === undefined && csrf === undefined)
211
306
  return { reason: "missing-credential" };
212
- if (session.length > 1 || csrf.length > 1)
213
- return { reason: "ambiguous-cookie" };
214
- if (session.length !== 1 ||
215
- csrf.length !== 1 ||
216
- !CookieValues.validSessionId(CookieValues.only(session)) ||
217
- !CookieValues.validCsrf(CookieValues.only(csrf))) {
307
+ if (session === undefined ||
308
+ csrf === undefined ||
309
+ !CookieValues.validCredential(session) ||
310
+ !CookieValues.validCsrf(csrf)) {
218
311
  return { reason: "malformed-cookie" };
219
312
  }
220
- return { session: CookieValues.only(session), csrf: CookieValues.only(csrf) };
313
+ return { session, csrf };
221
314
  },
315
+ /**
316
+ * Validates one raw Cookie field before using cookie v2 decoded values.
317
+ * @param header One original Cookie field.
318
+ * @param found Selected names already seen in this request.
319
+ * @param sessionName Selected authentication cookie name.
320
+ * @param csrfName Selected CSRF cookie name.
321
+ * @param remaining Remaining count under the existing pair limit.
322
+ * @returns Count accepted from the field or a terminal rejection.
323
+ */
324
+ readCookieHeader(header, found, sessionName, csrfName, remaining) {
325
+ if (CookieValues.hasForbiddenCookieCharacter(header))
326
+ return { reason: "malformed-cookie" };
327
+ const decoded = parseCookie(header);
328
+ let count = 0;
329
+ for (const pair of header.split(";")) {
330
+ count += 1;
331
+ if (count > remaining)
332
+ return { reason: "request-too-large" };
333
+ const index = pair.indexOf("=");
334
+ if (index <= 0)
335
+ return { reason: "malformed-cookie" };
336
+ const name = pair.slice(0, index).trim();
337
+ const value = pair.slice(index + 1).trim();
338
+ if (!CookieValues.validCookiePair(name, value))
339
+ return { reason: "malformed-cookie" };
340
+ if (name === sessionName || name === csrfName) {
341
+ if (found.has(name))
342
+ return { reason: "ambiguous-cookie" };
343
+ found.set(name, decoded[name] ?? "");
344
+ }
345
+ }
346
+ return { count };
347
+ },
348
+ /**
349
+ * Reads exactly one value for a required request header.
350
+ *
351
+ * @typeParam T Specific rejection reason.
352
+ * @param values Normalized duplicate-preserving fields.
353
+ * @param name Lowercase header name.
354
+ * @param missing Rejection when the header is absent.
355
+ * @param duplicate Rejection when the header repeats.
356
+ * @returns Selected value or the configured rejection.
357
+ */
222
358
  one(values, name, missing, duplicate) {
223
359
  const entries = values.get(name) ?? [];
224
360
  if (entries.length === 0)
@@ -227,12 +363,24 @@ const CookieValues = Object.freeze({
227
363
  return { reason: duplicate };
228
364
  return { value: CookieValues.only(entries) };
229
365
  },
366
+ /**
367
+ * Gets the required first value from a validated singleton field.
368
+ *
369
+ * @param values Values already known to contain one entry.
370
+ * @returns The single field value.
371
+ */
230
372
  only(values) {
231
373
  const value = values[0];
232
374
  if (value === undefined)
233
375
  throw new Error("expected one header value");
234
376
  return value;
235
377
  },
378
+ /**
379
+ * Checks raw Cookie fields for controls and commas.
380
+ *
381
+ * @param value Raw Cookie field.
382
+ * @returns Whether the field has forbidden characters.
383
+ */
236
384
  hasForbiddenCookieCharacter(value) {
237
385
  for (const character of value) {
238
386
  const code = character.charCodeAt(0);
@@ -241,6 +389,12 @@ const CookieValues = Object.freeze({
241
389
  }
242
390
  return false;
243
391
  },
392
+ /**
393
+ * Validates an exact canonical request Origin.
394
+ *
395
+ * @param origin Candidate Origin.
396
+ * @returns The canonical Origin or an error for malformed input.
397
+ */
244
398
  validOrigin(origin) {
245
399
  try {
246
400
  const url = new URL(origin);
@@ -259,35 +413,103 @@ const CookieValues = Object.freeze({
259
413
  throw new Error("origins must contain only canonical Origins");
260
414
  }
261
415
  },
416
+ /**
417
+ * Validates a secure host-prefixed cookie name.
418
+ *
419
+ * @param value Candidate name.
420
+ * @param name Option name for errors.
421
+ * @returns The validated host cookie name.
422
+ */
262
423
  validCookieName(value, name) {
263
424
  if (!value.startsWith("__Host-") || !/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(value)) {
264
425
  throw new Error(`${name} must be a valid __Host- cookie name`);
265
426
  }
266
427
  return value;
267
428
  },
429
+ /**
430
+ * Validates an existing finite request limit.
431
+ *
432
+ * @param value Candidate limit.
433
+ * @param name Option name for errors.
434
+ * @returns The positive safe integer.
435
+ */
268
436
  positiveSafeInteger(value, name) {
269
437
  if (!Number.isSafeInteger(value) || value <= 0) {
270
438
  throw new Error(`${name} must be a positive safe integer`);
271
439
  }
272
440
  return value;
273
441
  },
442
+ /**
443
+ * Checks one raw Cookie name and value for safe field syntax.
444
+ *
445
+ * @param name Raw cookie name.
446
+ * @param value Raw cookie value.
447
+ * @returns Whether both components contain allowed field characters.
448
+ */
274
449
  validCookiePair(name, value) {
275
450
  return /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(name) && /^[\x21-\x7e]+$/.test(value);
276
451
  },
452
+ /**
453
+ * Checks the unpadded base64url alphabet for CSRF tokens.
454
+ *
455
+ * @param value Candidate CSRF encoding.
456
+ * @returns Whether the characters and length can represent unpadded base64url.
457
+ */
277
458
  base64url(value) {
278
459
  return /^[A-Za-z0-9_-]+$/.test(value) && value.length % 4 !== 1;
279
460
  },
461
+ /**
462
+ * Checks the fixed SHA-256 CSRF encoding.
463
+ *
464
+ * @param value Candidate CSRF value.
465
+ * @returns Whether it is a 43-character unpadded base64url digest.
466
+ */
280
467
  validCsrf(value) {
281
468
  return value.length === 43 && CookieValues.base64url(value);
282
469
  },
283
- validSessionId(value) {
284
- return value.length === 43 && CookieValues.base64url(value);
470
+ /**
471
+ * Checks an opaque credential without assuming a fixed sealed length.
472
+ *
473
+ * @param value Candidate complete credential.
474
+ * @returns Whether it is nonempty and free of control characters.
475
+ */
476
+ validCredential(value) {
477
+ if (value.length === 0)
478
+ return false;
479
+ for (const character of value) {
480
+ const code = character.charCodeAt(0);
481
+ if (code <= 31 || code === 127)
482
+ return false;
483
+ }
484
+ return true;
485
+ },
486
+ /**
487
+ * Converts the authoritative exact deadline to cookie date precision.
488
+ * @param expiresAt Issued session deadline.
489
+ * @returns Browser cookie expiry derived from that deadline.
490
+ */
491
+ expiryDate(expiresAt) {
492
+ const deadline = SessionRecords.deadline(expiresAt);
493
+ return new Date(Number(deadline.seconds) * 1_000 + Math.floor(deadline.nanos / 1_000_000));
285
494
  },
495
+ /**
496
+ * Compares equal-length CSRF values in constant time.
497
+ *
498
+ * @param expected Derived CSRF digest.
499
+ * @param supplied Browser-supplied CSRF digest.
500
+ * @returns Whether the values match.
501
+ */
286
502
  sameCsrf(expected, supplied) {
287
503
  if (expected.length !== supplied.length)
288
504
  return false;
289
505
  return timingSafeEqual(Buffer.from(expected), Buffer.from(supplied));
290
506
  },
507
+ /**
508
+ * Creates a frozen terminal credential rejection.
509
+ *
510
+ * @param reason Specific rejection reason.
511
+ * @returns The rejected extraction outcome.
512
+ */
291
513
  rejection(reason) {
292
514
  return Object.freeze({ kind: "rejected", reason });
293
515
  },
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../src/sessions/cookies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../src/sessions/cookies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { type Timestamp } from "@bufbuild/protobuf/wkt";
2
+ import { type OpaqueSessionRecord } from "@spine-event-engine/proto/auth";
3
+ /**
4
+ * Atomic domain transitions for stable opaque-session references.
5
+ */
6
+ export interface OpaqueSessionStore {
7
+ /**
8
+ * Creates one session only when its stable reference is absent.
9
+ *
10
+ * `true` confirms this record was inserted, even if cancellation arrives after
11
+ * the physical commit. `false` confirms no mutation: an existing reference
12
+ * or a process-local capacity refusal can prevent insertion. A thrown result
13
+ * is unconfirmed; callers cannot safely infer insertion and
14
+ * must not delete another session after an ID collision. Custom stores must
15
+ * retain this distinction so a cancelled confirmed insert can be removed
16
+ * conditionally against this complete record.
17
+ *
18
+ * @param record Complete new session.
19
+ * @param signal Optional operation cancellation.
20
+ * @returns Whether insertion won.
21
+ */
22
+ insert(record: OpaqueSessionRecord, signal?: AbortSignal): Promise<boolean>;
23
+ /**
24
+ * Reads one authoritative session by stable reference.
25
+ *
26
+ * @param id Stable reference.
27
+ * @param signal Optional operation cancellation.
28
+ * @returns Detached current record, if present.
29
+ */
30
+ read(id: string, signal?: AbortSignal): Promise<OpaqueSessionRecord | undefined>;
31
+ /**
32
+ * Replaces exactly the expected generation and deadline.
33
+ *
34
+ * A committed replacement returns `true` even if cancellation arrives just
35
+ * after commit; the caller can conditionally remove that new generation.
36
+ * A `false` result confirms that no replacement occurred.
37
+ *
38
+ * @param expected Complete expected record.
39
+ * @param next Complete replacement with the same stable reference.
40
+ * @param signal Optional operation cancellation.
41
+ * @returns Whether the replacement won.
42
+ */
43
+ replace(expected: OpaqueSessionRecord, next: OpaqueSessionRecord, signal?: AbortSignal): Promise<boolean>;
44
+ /**
45
+ * Removes the current generation behind a stable reference.
46
+ *
47
+ * @param id Stable reference.
48
+ * @param signal Optional operation cancellation.
49
+ * @returns Whether a record was removed.
50
+ */
51
+ revoke(id: string, signal?: AbortSignal): Promise<boolean>;
52
+ /**
53
+ * Deletes only one complete expected record.
54
+ *
55
+ * @param expected Record that may be removed.
56
+ * @param signal Optional operation cancellation.
57
+ * @returns Whether the expected record was removed.
58
+ */
59
+ remove(expected: OpaqueSessionRecord, signal?: AbortSignal): Promise<boolean>;
60
+ /**
61
+ * Removes eligible exact deadlines through the selected cutoff.
62
+ *
63
+ * @param cutoff Trusted current-or-earlier deadline.
64
+ * @param signal Optional maintenance cancellation.
65
+ * @returns Number of records conditionally removed.
66
+ */
67
+ purgeExpired(cutoff: Timestamp, signal?: AbortSignal): Promise<number>;
68
+ }
69
+ /**
70
+ * Process-local implementation of the same atomic session transitions.
71
+ */
72
+ export declare class MemoryOpaqueSessionStore implements OpaqueSessionStore {
73
+ #private;
74
+ /**
75
+ * Creates a process-local store with a trusted maintenance clock.
76
+ *
77
+ * @param clock Supplies the latest allowed purge cutoff.
78
+ * @param maxSessions Process-local retained record bound; defaults to 10,000.
79
+ */
80
+ constructor(clock?: () => Timestamp, maxSessions?: number);
81
+ /**
82
+ * Returns whether the process-local retained record bound is reached.
83
+ *
84
+ * @returns Whether another insert requires explicit expiry maintenance.
85
+ */
86
+ atCapacity(): boolean;
87
+ /**
88
+ * Creates a complete session only when its stable reference is absent.
89
+ *
90
+ * @param record Complete session to insert.
91
+ * @param signal Optional cancellation.
92
+ * @returns Whether insertion won.
93
+ */
94
+ insert(record: OpaqueSessionRecord, signal?: AbortSignal): Promise<boolean>;
95
+ /**
96
+ * Reads one authoritative session by stable reference.
97
+ *
98
+ * @param id Stable session reference.
99
+ * @param signal Optional cancellation.
100
+ * @returns Detached current record, if present.
101
+ */
102
+ read(id: string, signal?: AbortSignal): Promise<OpaqueSessionRecord | undefined>;
103
+ /**
104
+ * Replaces exactly one expected session record.
105
+ *
106
+ * @param expected Complete record that must still be current.
107
+ * @param next Replacement with the same stable reference.
108
+ * @param signal Optional cancellation.
109
+ * @returns Whether replacement won.
110
+ */
111
+ replace(expected: OpaqueSessionRecord, next: OpaqueSessionRecord, signal?: AbortSignal): Promise<boolean>;
112
+ /**
113
+ * Deletes the current generation behind a stable reference.
114
+ *
115
+ * @param id Stable session reference.
116
+ * @param signal Optional cancellation.
117
+ * @returns Whether a record was removed.
118
+ */
119
+ revoke(id: string, signal?: AbortSignal): Promise<boolean>;
120
+ /**
121
+ * Deletes only one complete expected record.
122
+ *
123
+ * @param expected Complete record that may be removed.
124
+ * @param signal Optional cancellation.
125
+ * @returns Whether the expected record was removed.
126
+ */
127
+ remove(expected: OpaqueSessionRecord, signal?: AbortSignal): Promise<boolean>;
128
+ /**
129
+ * Removes exact deadlines at or before the trusted cutoff.
130
+ *
131
+ * @param cutoff Current-or-earlier exact deadline.
132
+ * @param signal Optional maintenance cancellation.
133
+ * @returns Number of conditionally removed records.
134
+ */
135
+ purgeExpired(cutoff: Timestamp, signal?: AbortSignal): Promise<number>;
136
+ /**
137
+ * Closes and drops the process-local record references.
138
+ *
139
+ * @returns Completion after local records are dropped.
140
+ */
141
+ close(): Promise<void>;
142
+ }
143
+ //# sourceMappingURL=opaque-session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opaque-session-store.d.ts","sourceRoot":"","sources":["../../src/sessions/opaque-session-store.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,gCAAgC,CAAC;AAIxC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5E;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAEjF;;;;;;;;;;;OAWG;IACH,OAAO,CACL,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,mBAAmB,EACzB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9E;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,qBAAa,wBAAyB,YAAW,kBAAkB;;IASjE;;;;;OAKG;gBACS,KAAK,GAAE,MAAM,SAA4B,EAAE,WAAW,SAAS;IAO3E;;;;OAIG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAW3E;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAQhF;;;;;;;OAOG;IACH,OAAO,CACL,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,mBAAmB,EACzB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAanB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1D;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAU7E;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBtE;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BvB"}