@rxferrix/client 0.8.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/dist/auth.d.ts CHANGED
@@ -166,6 +166,8 @@ export declare class RxFerrixAuth {
166
166
  private readonly loaded;
167
167
  private refreshing;
168
168
  private removeStorageListener;
169
+ /** Bumped whenever who is signed in may change (sign-in, sign-out, another tab): see `doRefresh`. */
170
+ private epoch;
169
171
  constructor(client: RxFerrixClient, options?: RxFerrixAuthOptions);
170
172
  /** The current state; referentially stable until it changes. */
171
173
  state(): AuthState;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/auth.js CHANGED
@@ -47,6 +47,8 @@ export const systemApi = {
47
47
  };
48
48
  /** Refresh access tokens that expire within this window instead of using them. */
49
49
  const EXPIRY_LEEWAY_MS = 10_000;
50
+ /** A refresh request that hasn't answered by then is given up (a black-holed connection after a network switch). */
51
+ const REFRESH_TIMEOUT_MS = 10_000;
50
52
  function defaultStorage() {
51
53
  try {
52
54
  const ls = globalThis.localStorage;
@@ -117,6 +119,8 @@ export class RxFerrixAuth {
117
119
  loaded;
118
120
  refreshing = null;
119
121
  removeStorageListener = () => { };
122
+ /** Bumped whenever who is signed in may change (sign-in, sign-out, another tab): see `doRefresh`. */
123
+ epoch = 0;
120
124
  constructor(client, options = {}) {
121
125
  this.client = client;
122
126
  this.storage = options.storage ?? defaultStorage();
@@ -133,6 +137,7 @@ export class RxFerrixAuth {
133
137
  this.client.setAuth(this.fetchToken, this.onServerAuthChange);
134
138
  if (options.syncTabs !== false)
135
139
  this.listenToOtherTabs();
140
+ client.onClose(() => this.dispose());
136
141
  }
137
142
  // ---------------------------------------------------------------------------------------------------------------
138
143
  // State
@@ -213,6 +218,7 @@ export class RxFerrixAuth {
213
218
  /** Store fresh tokens and authenticate the socket with them. */
214
219
  async signedIn(tokens) {
215
220
  await this.loaded;
221
+ this.epoch++;
216
222
  const t = toStored(tokens);
217
223
  await this.saveTokens(t);
218
224
  this.setState(this.pendingState(t));
@@ -262,6 +268,9 @@ export class RxFerrixAuth {
262
268
  return null;
263
269
  }
264
270
  async doRefresh() {
271
+ // A sign-in, sign-out or another tab's change while the request is out makes its answer someone else's session:
272
+ // it must not be stored over theirs.
273
+ const epoch = this.epoch;
265
274
  const before = this.tokens;
266
275
  if (!before)
267
276
  return null;
@@ -273,10 +282,12 @@ export class RxFerrixAuth {
273
282
  return null;
274
283
  let res;
275
284
  try {
285
+ const timeout = AbortSignal.timeout?.(REFRESH_TIMEOUT_MS);
276
286
  res = await this.fetchImpl(`${this.baseUrl}/api/auth/refresh`, {
277
287
  method: "POST",
278
288
  headers: { "Content-Type": "application/json" },
279
289
  body: JSON.stringify({ refreshToken: t.refreshToken }),
290
+ ...(timeout ? { signal: timeout } : {}),
280
291
  });
281
292
  }
282
293
  catch (e) {
@@ -284,6 +295,8 @@ export class RxFerrixAuth {
284
295
  throw new RxFerrixError("Could not reach the server to refresh the session", { code: "network_error", cause: e });
285
296
  }
286
297
  const body = (await res.json().catch(() => null));
298
+ if (epoch !== this.epoch || this.tokens !== t)
299
+ return this.tokens?.accessToken ?? null;
287
300
  if (res.ok) {
288
301
  const next = toStored(body);
289
302
  await this.saveTokens(next);
@@ -313,6 +326,7 @@ export class RxFerrixAuth {
313
326
  this.removeStorageListener = () => g.removeEventListener?.("storage", handler);
314
327
  }
315
328
  onOtherTabChange(next) {
329
+ this.epoch++;
316
330
  const had = this.tokens;
317
331
  this.tokens = next;
318
332
  if (!next) {
@@ -474,6 +488,7 @@ export class RxFerrixAuth {
474
488
  /** End the session on the server and forget the tokens (also in other tabs). */
475
489
  async signOut() {
476
490
  await this.loaded;
491
+ this.epoch++;
477
492
  const t = this.tokens;
478
493
  await this.saveTokens(null);
479
494
  this.client.clearAuth();
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -98,6 +98,10 @@ export declare class RxFerrixClient {
98
98
  private tokenFetchFailures;
99
99
  /** Rejecters of `query()` calls still waiting for their first result (settled on `close()`). */
100
100
  private readonly oneShotQueries;
101
+ /** Run on `close()` (`onClose`). */
102
+ private readonly closeHooks;
103
+ /** A token fetch failed while the token in hand is expired: sends wait for a token (or `clearAuth`). */
104
+ private awaitingToken;
101
105
  private readonly removeUnloadListener;
102
106
  constructor(url: string, options?: RxFerrixClientOptions);
103
107
  /**
@@ -167,6 +171,8 @@ export declare class RxFerrixClient {
167
171
  subscribeToConnectionState(callback: (state: ConnectionState) => void): () => void;
168
172
  private computeConnectionState;
169
173
  private notifyConnectionState;
174
+ /** Calls `hook` when the client is closed (e.g. so that the `RxFerrixAuth` of `getAuth` stops listening to other tabs). */
175
+ onClose(hook: () => void): void;
170
176
  /** Closes the socket for good. Pending mutations and actions are rejected. */
171
177
  close(): void;
172
178
  private installUnloadListener;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -43,6 +43,27 @@ function randomSessionId() {
43
43
  return (ch === "x" ? r : (r & 0x3) | 0x8).toString(16);
44
44
  });
45
45
  }
46
+ /** Who a token speaks for, as far as the server's mutation dedup goes: its issuer and `sub` (`null` for no token). A
47
+ * refreshed token keeps it; another user's doesn't. */
48
+ function tokenIdentity(token) {
49
+ if (token === null)
50
+ return null;
51
+ const parts = token.split(".");
52
+ try {
53
+ const b64 = (parts[1] ?? "").replace(/-/g, "+").replace(/_/g, "/");
54
+ const padded = b64 + "=".repeat((4 - (b64.length % 4)) % 4);
55
+ const payload = JSON.parse(typeof atob === "function" ? atob(padded) : "");
56
+ return `${String(payload.iss ?? "")}|${String(payload.sub ?? "")}`;
57
+ }
58
+ catch {
59
+ return token;
60
+ }
61
+ }
62
+ /** Whether a JWT's `exp` has passed (a token without one never expires here). */
63
+ function isExpired(token) {
64
+ const exp = jwtExpiry(token);
65
+ return exp !== null && exp * 1000 <= Date.now();
66
+ }
46
67
  /** Seconds-since-epoch `exp` claim of a JWT, if the token is a decodable JWT. */
47
68
  function jwtExpiry(token) {
48
69
  const parts = token.split(".");
@@ -129,6 +150,10 @@ export class RxFerrixClient {
129
150
  tokenFetchFailures = 0;
130
151
  /** Rejecters of `query()` calls still waiting for their first result (settled on `close()`). */
131
152
  oneShotQueries = new Set();
153
+ /** Run on `close()` (`onClose`). */
154
+ closeHooks = [];
155
+ /** A token fetch failed while the token in hand is expired: sends wait for a token (or `clearAuth`). */
156
+ awaitingToken = false;
132
157
  removeUnloadListener;
133
158
  constructor(url, options = {}) {
134
159
  if (typeof url !== "string")
@@ -202,7 +227,14 @@ export class RxFerrixClient {
202
227
  finish(() => (state.status === "success" ? resolve(state.value) : reject(state.error)));
203
228
  };
204
229
  this.oneShotQueries.add(closed);
205
- unsubscribe = watch.onUpdate(check);
230
+ try {
231
+ unsubscribe = watch.onUpdate(check);
232
+ }
233
+ catch (e) {
234
+ // E.g. `too_many_queries`: nothing will settle it later.
235
+ this.oneShotQueries.delete(closed);
236
+ throw e;
237
+ }
206
238
  check();
207
239
  });
208
240
  }
@@ -318,10 +350,15 @@ export class RxFerrixClient {
318
350
  sendUnsentRequests() {
319
351
  if (!this.ws.canSend())
320
352
  return;
353
+ // Who the server takes these requests from: the identity of the token sent last (Authenticate goes out first).
354
+ const identity = tokenIdentity(this.serverToken);
355
+ const expired = this.requests.expireUnsafeResends(identity);
356
+ if (expired.length > 0)
357
+ this.finishMutations(expired);
321
358
  for (const message of this.requests.unsent()) {
322
359
  if (!this.ws.send(message))
323
360
  break;
324
- this.requests.markSent(message.requestId);
361
+ this.requests.markSent(message.requestId, identity);
325
362
  }
326
363
  }
327
364
  // ---------------------------------------------------------------------------------------------------------------
@@ -345,6 +382,7 @@ export class RxFerrixClient {
345
382
  this.auth = null;
346
383
  this.authGeneration++;
347
384
  this.clearAuthRefreshTimer();
385
+ this.awaitingToken = false;
348
386
  this.applyToken(null);
349
387
  if (this.ws.isPaused)
350
388
  this.ws.resume();
@@ -370,6 +408,14 @@ export class RxFerrixClient {
370
408
  // have returned may well be valid, so the token in hand (if any) is kept and the fetch is retried with
371
409
  // backoff instead of treating the user as signed out.
372
410
  this.tokenFetchFailures++;
411
+ // An expired token in hand would only be rejected (and that AuthError would count as the server refusing the
412
+ // session, signing the user out): sends wait for a fresh one instead. (With no token yet, they go out
413
+ // anonymously meanwhile, so an app offline at page load isn't frozen.)
414
+ if (this.authToken !== null && isExpired(this.authToken)) {
415
+ this.awaitingToken = true;
416
+ if (!this.ws.isPaused)
417
+ this.ws.pause();
418
+ }
373
419
  const delay = Math.min(TOKEN_FETCH_RETRY_MAX_MS, TOKEN_FETCH_RETRY_BASE_MS * 2 ** Math.min(this.tokenFetchFailures - 1, 10));
374
420
  this.logger.warn(`fetchToken failed; retrying in ${delay}ms`, e);
375
421
  this.scheduleTokenFetch(delay, forceRefresh);
@@ -378,6 +424,7 @@ export class RxFerrixClient {
378
424
  if (generation !== this.authGeneration || this.auth !== auth || this.closed)
379
425
  return;
380
426
  this.tokenFetchFailures = 0;
427
+ this.awaitingToken = false;
381
428
  this.applyToken(token);
382
429
  if (token === null)
383
430
  this.setAuthenticated(false, auth.onChange);
@@ -387,7 +434,7 @@ export class RxFerrixClient {
387
434
  this.tokenFetchesInFlight--;
388
435
  // Whichever fetch finishes last lets sends through again: a superseded fetch (a newer `setAuth` or
389
436
  // `clearAuth`) must not leave the socket paused for good.
390
- if (this.tokenFetchesInFlight === 0 && this.ws.isPaused && !this.closed)
437
+ if (this.tokenFetchesInFlight === 0 && this.ws.isPaused && !this.closed && !this.awaitingToken)
391
438
  this.ws.resume();
392
439
  }
393
440
  }
@@ -464,6 +511,10 @@ export class RxFerrixClient {
464
511
  // Socket lifecycle
465
512
  /** A new socket is open and `Connect` was sent: rebuild the server's state from scratch. */
466
513
  onSocketOpen() {
514
+ // An access token that expired meanwhile (a laptop waking up) would be rejected: get a fresh one first.
515
+ if (this.auth && this.authToken !== null && isExpired(this.authToken) && this.tokenFetchesInFlight === 0) {
516
+ void this.fetchAndApplyToken(true, true);
517
+ }
467
518
  this.remoteQueries.resetVersion();
468
519
  this.localQueries.resetForNewSocket();
469
520
  this.identityVersion = 0;
@@ -660,11 +711,26 @@ export class RxFerrixClient {
660
711
  }
661
712
  }
662
713
  // ---------------------------------------------------------------------------------------------------------------
714
+ /** Calls `hook` when the client is closed (e.g. so that the `RxFerrixAuth` of `getAuth` stops listening to other tabs). */
715
+ onClose(hook) {
716
+ if (this.closed)
717
+ hook();
718
+ else
719
+ this.closeHooks.push(hook);
720
+ }
663
721
  /** Closes the socket for good. Pending mutations and actions are rejected. */
664
722
  close() {
665
723
  if (this.closed)
666
724
  return;
667
725
  this.closed = true;
726
+ for (const hook of this.closeHooks.splice(0)) {
727
+ try {
728
+ hook();
729
+ }
730
+ catch (e) {
731
+ this.logger.error("onClose hook threw", e);
732
+ }
733
+ }
668
734
  this.authGeneration++;
669
735
  this.clearAuthRefreshTimer();
670
736
  this.ws.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -21,4 +21,6 @@ export declare class RxFerrixError extends Error {
21
21
  /** Code used for client-side failures (lost connection, client closed). */
22
22
  export declare const CONNECTION_LOST = "ConnectionLost";
23
23
  export declare const CLIENT_CLOSED = "ClientClosed";
24
+ /** A mutation sent before a connection was lost couldn't be sent again safely: it may or may not have run. */
25
+ export declare const OUTCOME_UNKNOWN = "OutcomeUnknown";
24
26
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAC7B,IAAI,SAAmB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAMzF,6FAA6F;IAC7F,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa;CAU5G;AAED,2EAA2E;AAC3E,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,aAAa,iBAAiB,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAC7B,IAAI,SAAmB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAMzF,6FAA6F;IAC7F,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa;CAU5G;AAED,2EAA2E;AAC3E,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C,8GAA8G;AAC9G,eAAO,MAAM,eAAe,mBAAmB,CAAC"}
package/dist/errors.js CHANGED
@@ -31,4 +31,6 @@ export class RxFerrixError extends Error {
31
31
  /** Code used for client-side failures (lost connection, client closed). */
32
32
  export const CONNECTION_LOST = "ConnectionLost";
33
33
  export const CLIENT_CLOSED = "ClientClosed";
34
+ /** A mutation sent before a connection was lost couldn't be sent again safely: it may or may not have run. */
35
+ export const OUTCOME_UNKNOWN = "OutcomeUnknown";
34
36
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,GAAG,eAAe,CAAC;IACvB,IAAI,CAAU;IACd,IAAI,CAAW;IAExB,YAAY,OAAe,EAAE,OAA4D;QACvF,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1D,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED,6FAA6F;IAC7F,MAAM,CAAC,UAAU,CAAC,YAAgC,EAAE,SAAuC;QACzF,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;QAC5G,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE;gBAChC,IAAI,EAAE,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACrE,IAAI,EAAE,SAAS,CAAC,IAAI;aACrB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,GAAG,eAAe,CAAC;IACvB,IAAI,CAAU;IACd,IAAI,CAAW;IAExB,YAAY,OAAe,EAAE,OAA4D;QACvF,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1D,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED,6FAA6F;IAC7F,MAAM,CAAC,UAAU,CAAC,YAAgC,EAAE,SAAuC;QACzF,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;QAC5G,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE;gBAChC,IAAI,EAAE,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACrE,IAAI,EAAE,SAAS,CAAC,IAAI;aACrB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAC5C,8GAA8G;AAC9G,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { makeFunctionReference, getFunctionName, type FunctionKind, type FunctionReference, type AnyQueryReference, type AnyMutationReference, type AnyActionReference, type ArgsOf, type OutputOf, type OptionalArgs, type OptionalArgsOrSkip, type ArgsAndOptions, type HasNoRequiredArgs, type Id, } from "./api.js";
2
2
  export { RxFerrixClient, type RxFerrixClientOptions, type MutationOptions, type AuthTokenFetcher, type ConnectionState, type QueryWatch, } from "./client.js";
3
- export { RxFerrixError, CONNECTION_LOST, CLIENT_CLOSED } from "./errors.js";
3
+ export { RxFerrixError, CONNECTION_LOST, CLIENT_CLOSED, OUTCOME_UNKNOWN } from "./errors.js";
4
4
  export { applyDiff, DiffMismatch } from "./diff.js";
5
5
  export { RxFerrixAuth, getAuth, systemApi, MemoryAuthStorage, type AuthStorage, type AuthState, type AuthTokens, type AuthProviders, type CodeProof, type RxFerrixAuthOptions, type RedirectResult, type SignInResult, type MfaStatus, type MfaSetup, type User, } from "./auth.js";
6
6
  export type { OptimisticLocalStore, OptimisticUpdate } from "./optimistic_updates.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,EAAE,GACR,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,IAAI,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1H,YAAY,KAAK,QAAQ,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,EAAE,GACR,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,IAAI,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1H,YAAY,KAAK,QAAQ,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { makeFunctionReference, getFunctionName, } from "./api.js";
2
2
  export { RxFerrixClient, } from "./client.js";
3
- export { RxFerrixError, CONNECTION_LOST, CLIENT_CLOSED } from "./errors.js";
3
+ export { RxFerrixError, CONNECTION_LOST, CLIENT_CLOSED, OUTCOME_UNKNOWN } from "./errors.js";
4
4
  export { applyDiff, DiffMismatch } from "./diff.js";
5
5
  export { RxFerrixAuth, getAuth, systemApi, MemoryAuthStorage, } from "./auth.js";
6
6
  export { insertAtTop, getAllPages, } from "./paginated_query.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,eAAe,GAahB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,cAAc,GAMf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,OAAO,EACP,SAAS,EACT,iBAAiB,GAYlB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,WAAW,EACX,WAAW,GAUZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAA+C,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,cAAc,EAA6E,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,eAAe,GAahB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,cAAc,GAMf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,OAAO,EACP,SAAS,EACT,iBAAiB,GAYlB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,WAAW,EACX,WAAW,GAUZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAA+C,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,cAAc,EAA6E,MAAM,eAAe,CAAC"}
@@ -6,7 +6,7 @@ export type RequestId = number;
6
6
  export type JSONValue = null | boolean | number | string | JSONValue[] | {
7
7
  [key: string]: JSONValue;
8
8
  };
9
- export declare const CLIENT_VERSION = "0.8.0";
9
+ export declare const CLIENT_VERSION = "0.9.0";
10
10
  export interface StateVersion {
11
11
  querySet: number;
12
12
  identity: number;
package/dist/protocol.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Wire types for the RxFerrix sync protocol (v1). See `docs/PROTOCOL.md` in the repository; that document is normative.
3
3
  */
4
- export const CLIENT_VERSION = "0.8.0";
4
+ export const CLIENT_VERSION = "0.9.0";
5
5
  export function versionsEqual(a, b) {
6
6
  return a.querySet === b.querySet && a.identity === b.identity && a.ts === b.ts;
7
7
  }
@@ -3,6 +3,14 @@ import type { QueryState } from "./query_state.js";
3
3
  export declare class TransitionVersionMismatch extends Error {
4
4
  constructor(expected: StateVersion, got: StateVersion);
5
5
  }
6
+ /**
7
+ * Freezes `value` and everything in it not frozen yet, and returns it. Query results are frozen: they are the base the
8
+ * server's next diff applies to, and they are shared with every caller (`useQuery`, `getQuery` in optimistic updates),
9
+ * so changing one in place (`results.sort()`, `store.getQuery(q).push(x)`) would silently corrupt every later update.
10
+ * Freezing makes that a `TypeError` instead. A diff reuses the unchanged parts of the previous result (frozen already),
11
+ * so only what it built is walked. Typed arrays (`Bytes`) can't be frozen and are left as they are.
12
+ */
13
+ export declare function deepFreeze<T>(value: T): T;
6
14
  export interface TransitionResult {
7
15
  /** Queries whose server result changed (updated, failed or removed). */
8
16
  changed: QueryId[];
@@ -1 +1 @@
1
- {"version":3,"file":"remote_query_set.d.ts","sourceRoot":"","sources":["../src/remote_query_set.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,OAAO,EAEZ,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAGtD;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CACnD;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAqD;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,IAAI,OAAO,IAAI,YAAY,CAE1B;IAED,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;IAIhD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,gBAAgB;IA+ChG,0EAA0E;IAC1E,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI9B;;;OAGG;IACH,YAAY,IAAI,IAAI;CAGrB"}
1
+ {"version":3,"file":"remote_query_set.d.ts","sourceRoot":"","sources":["../src/remote_query_set.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,OAAO,EAEZ,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAGtD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAKzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CACnD;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAqD;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,IAAI,OAAO,IAAI,YAAY,CAE1B;IAED,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;IAIhD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,gBAAgB;IA+ChG,0EAA0E;IAC1E,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI9B;;;OAGG;IACH,YAAY,IAAI,IAAI;CAGrB"}
@@ -6,6 +6,21 @@ export class TransitionVersionMismatch extends Error {
6
6
  super(`Transition startVersion ${formatVersion(got)} does not match client version ${formatVersion(expected)}`);
7
7
  }
8
8
  }
9
+ /**
10
+ * Freezes `value` and everything in it not frozen yet, and returns it. Query results are frozen: they are the base the
11
+ * server's next diff applies to, and they are shared with every caller (`useQuery`, `getQuery` in optimistic updates),
12
+ * so changing one in place (`results.sort()`, `store.getQuery(q).push(x)`) would silently corrupt every later update.
13
+ * Freezing makes that a `TypeError` instead. A diff reuses the unchanged parts of the previous result (frozen already),
14
+ * so only what it built is walked. Typed arrays (`Bytes`) can't be frozen and are left as they are.
15
+ */
16
+ export function deepFreeze(value) {
17
+ if (typeof value !== "object" || value === null || Object.isFrozen(value) || ArrayBuffer.isView(value))
18
+ return value;
19
+ Object.freeze(value);
20
+ for (const child of Object.values(value))
21
+ deepFreeze(child);
22
+ return value;
23
+ }
9
24
  /**
10
25
  * The server's view of the world for the current socket: the StateVersion and the latest result for every query.
11
26
  * Transitions are validated (`startVersion` must equal the current version) and then applied atomically.
@@ -49,7 +64,7 @@ export class RemoteQuerySet {
49
64
  case "QueryUpdated":
50
65
  this.results.set(queryId, {
51
66
  status: "success",
52
- value: "diff" in modification ? diffed.get(modification) : modification.value,
67
+ value: deepFreeze("diff" in modification ? diffed.get(modification) : modification.value),
53
68
  });
54
69
  break;
55
70
  case "QueryFailed":
@@ -1 +1 @@
1
- {"version":3,"file":"remote_query_set.js","sourceRoot":"","sources":["../src/remote_query_set.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote_query_set.js","sourceRoot":"","sources":["../src/remote_query_set.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import { RxFerrixError } from "./errors.js";
2
2
  import type { ActionMessage, ActionResponseMessage, MutationMessage, MutationResponseMessage, RequestId } from "./protocol.js";
3
+ /**
4
+ * How long after its first send a mutation may still be sent again. The server recognizes a resent mutation (and
5
+ * answers with the recorded result instead of running it again) for 10 minutes (docs/PROTOCOL.md); later, a resend
6
+ * could run it twice. Kept below that, for clock and transit slack.
7
+ */
8
+ export declare const RESEND_WINDOW_MS: number;
3
9
  export interface SettledMutation {
4
10
  requestId: RequestId;
5
11
  settle: () => void;
@@ -21,8 +27,15 @@ export declare class RequestManager {
21
27
  trackAction(message: ActionMessage): Promise<unknown>;
22
28
  /** Messages that still have to go out on the current socket, in request order. */
23
29
  unsent(): (MutationMessage | ActionMessage)[];
24
- /** The message went out on the current socket. */
25
- markSent(requestId: RequestId): void;
30
+ /** The message went out on the current socket, from `identity` (whom the socket is authenticated as). */
31
+ markSent(requestId: RequestId, identity?: string | null): void;
32
+ /**
33
+ * Mutations waiting to be sent again that can't be safely: sent more than {@link RESEND_WINDOW_MS} ago (the server
34
+ * no longer recognizes them, so they could run twice), or from another identity than now (the server never matches
35
+ * a resend across identities: it would run, or fail, as someone else). They are taken off and returned, rejected
36
+ * with {@link OUTCOME_UNKNOWN}: whether the first send ran isn't known.
37
+ */
38
+ expireUnsafeResends(identity: string | null, now?: number): SettledMutation[];
26
39
  /**
27
40
  * Handles a MutationResponse. `observedTs` is the ts of the last applied Transition, or null when the client's view
28
41
  * is not currently consistent with the server (right after a reconnect).
@@ -1 +1 @@
1
- {"version":3,"file":"request_manager.d.ts","sourceRoot":"","sources":["../src/request_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,SAAS,EACV,MAAM,eAAe,CAAC;AAuBvB,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAE1D,iBAAiB,IAAI,SAAS;IAI9B,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAczD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAarD,kFAAkF;IAClF,MAAM,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,EAAE;IAU7C,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKpC;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe,GAAG,IAAI;IAiBxG,8FAA8F;IAC9F,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;IAYtE,2GAA2G;IAC3G,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,EAAE;IAW9C;;;OAGG;IACH,cAAc,IAAI;QAAE,MAAM,EAAE,MAAM,IAAI,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,EAAE;IAkBhE,0CAA0C;IAC1C,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMrC,WAAW,IAAI,OAAO;IAItB,oBAAoB,IAAI,OAAO;IAK/B,MAAM,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAYhF,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;CAGpD"}
1
+ {"version":3,"file":"request_manager.d.ts","sourceRoot":"","sources":["../src/request_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,SAAS,EACV,MAAM,eAAe,CAAC;AAIvB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAa,CAAC;AAuB3C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAE1D,iBAAiB,IAAI,SAAS;IAI9B,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAezD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAarD,kFAAkF;IAClF,MAAM,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,EAAE;IAU7C,yGAAyG;IACzG,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI;IAOpE;;;;;OAKG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAmB,GAAG,eAAe,EAAE;IAiBzF;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe,GAAG,IAAI;IAiBxG,8FAA8F;IAC9F,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;IAYtE,2GAA2G;IAC3G,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,EAAE;IAW9C;;;OAGG;IACH,cAAc,IAAI;QAAE,MAAM,EAAE,MAAM,IAAI,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,EAAE;IAkBhE,0CAA0C;IAC1C,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMrC,WAAW,IAAI,OAAO;IAItB,oBAAoB,IAAI,OAAO;IAK/B,MAAM,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAYhF,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;CAGpD"}
@@ -1,4 +1,10 @@
1
- import { CONNECTION_LOST, RxFerrixError } from "./errors.js";
1
+ import { CONNECTION_LOST, OUTCOME_UNKNOWN, RxFerrixError } from "./errors.js";
2
+ /**
3
+ * How long after its first send a mutation may still be sent again. The server recognizes a resent mutation (and
4
+ * answers with the recorded result instead of running it again) for 10 minutes (docs/PROTOCOL.md); later, a resend
5
+ * could run it twice. Kept below that, for clock and transit slack.
6
+ */
7
+ export const RESEND_WINDOW_MS = 9 * 60_000;
2
8
  /**
3
9
  * Tracks in-flight mutations and actions.
4
10
  *
@@ -22,6 +28,7 @@ export class RequestManager {
22
28
  sent: false,
23
29
  completed: null,
24
30
  startedAt: Date.now(),
31
+ firstSent: null,
25
32
  resolve,
26
33
  reject,
27
34
  });
@@ -51,11 +58,35 @@ export class RequestManager {
51
58
  }
52
59
  return out;
53
60
  }
54
- /** The message went out on the current socket. */
55
- markSent(requestId) {
61
+ /** The message went out on the current socket, from `identity` (whom the socket is authenticated as). */
62
+ markSent(requestId, identity = null) {
56
63
  const request = this.requests.get(requestId);
57
- if (request)
58
- request.sent = true;
64
+ if (!request)
65
+ return;
66
+ request.sent = true;
67
+ if (request.kind === "mutation" && !request.firstSent)
68
+ request.firstSent = { at: Date.now(), identity };
69
+ }
70
+ /**
71
+ * Mutations waiting to be sent again that can't be safely: sent more than {@link RESEND_WINDOW_MS} ago (the server
72
+ * no longer recognizes them, so they could run twice), or from another identity than now (the server never matches
73
+ * a resend across identities: it would run, or fail, as someone else). They are taken off and returned, rejected
74
+ * with {@link OUTCOME_UNKNOWN}: whether the first send ran isn't known.
75
+ */
76
+ expireUnsafeResends(identity, now = Date.now()) {
77
+ const expired = [];
78
+ for (const [requestId, request] of this.requests) {
79
+ if (request.kind !== "mutation" || request.sent || request.completed || !request.firstSent)
80
+ continue;
81
+ const tooOld = now - request.firstSent.at > RESEND_WINDOW_MS;
82
+ if (!tooOld && request.firstSent.identity === identity)
83
+ continue;
84
+ this.requests.delete(requestId);
85
+ const why = tooOld ? "too long ago to be sent again safely" : "as another user than now";
86
+ const error = new RxFerrixError(`The connection was lost after mutation "${request.message.udfPath}" was sent, ${why}: it may or may not have run`, { code: OUTCOME_UNKNOWN });
87
+ expired.push({ requestId, settle: () => request.reject(error) });
88
+ }
89
+ return expired;
59
90
  }
60
91
  /**
61
92
  * Handles a MutationResponse. `observedTs` is the ts of the last applied Transition, or null when the client's view
@@ -1 +1 @@
1
- {"version":3,"file":"request_manager.js","sourceRoot":"","sources":["../src/request_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request_manager.js","sourceRoot":"","sources":["../src/request_manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rxferrix/client",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Framework-agnostic reactive sync client for RxFerrix",
5
5
  "license": "MIT",
6
6
  "homepage": "https://genesysflow.github.io/rxferrix/",
package/src/auth.ts CHANGED
@@ -171,6 +171,8 @@ interface StoredTokens {
171
171
 
172
172
  /** Refresh access tokens that expire within this window instead of using them. */
173
173
  const EXPIRY_LEEWAY_MS = 10_000;
174
+ /** A refresh request that hasn't answered by then is given up (a black-holed connection after a network switch). */
175
+ const REFRESH_TIMEOUT_MS = 10_000;
174
176
 
175
177
  function defaultStorage(): AuthStorage {
176
178
  try {
@@ -244,6 +246,9 @@ export class RxFerrixAuth {
244
246
  private refreshing: Promise<string | null> | null = null;
245
247
  private removeStorageListener: () => void = () => {};
246
248
 
249
+ /** Bumped whenever who is signed in may change (sign-in, sign-out, another tab): see `doRefresh`. */
250
+ private epoch = 0;
251
+
247
252
  constructor(client: RxFerrixClient, options: RxFerrixAuthOptions = {}) {
248
253
  this.client = client;
249
254
  this.storage = options.storage ?? defaultStorage();
@@ -258,6 +263,7 @@ export class RxFerrixAuth {
258
263
  // Holds the socket's subscriptions back until the stored session (if any) has been sent with Authenticate.
259
264
  this.client.setAuth(this.fetchToken, this.onServerAuthChange);
260
265
  if (options.syncTabs !== false) this.listenToOtherTabs();
266
+ client.onClose(() => this.dispose());
261
267
  }
262
268
 
263
269
  // ---------------------------------------------------------------------------------------------------------------
@@ -344,6 +350,7 @@ export class RxFerrixAuth {
344
350
  /** Store fresh tokens and authenticate the socket with them. */
345
351
  private async signedIn(tokens: AuthTokens): Promise<void> {
346
352
  await this.loaded;
353
+ this.epoch++;
347
354
  const t = toStored(tokens);
348
355
  await this.saveTokens(t);
349
356
  this.setState(this.pendingState(t));
@@ -395,6 +402,9 @@ export class RxFerrixAuth {
395
402
  }
396
403
 
397
404
  private async doRefresh(): Promise<string | null> {
405
+ // A sign-in, sign-out or another tab's change while the request is out makes its answer someone else's session:
406
+ // it must not be stored over theirs.
407
+ const epoch = this.epoch;
398
408
  const before = this.tokens;
399
409
  if (!before) return null;
400
410
  const adopted = await this.adoptNewerStoredTokens(before);
@@ -403,16 +413,19 @@ export class RxFerrixAuth {
403
413
  if (!t) return null;
404
414
  let res: Response;
405
415
  try {
416
+ const timeout = (AbortSignal as { timeout?: (ms: number) => AbortSignal }).timeout?.(REFRESH_TIMEOUT_MS);
406
417
  res = await this.fetchImpl(`${this.baseUrl}/api/auth/refresh`, {
407
418
  method: "POST",
408
419
  headers: { "Content-Type": "application/json" },
409
420
  body: JSON.stringify({ refreshToken: t.refreshToken }),
421
+ ...(timeout ? { signal: timeout } : {}),
410
422
  });
411
423
  } catch (e) {
412
424
  // Offline: keep the session; the next reconnect or AuthError tries again.
413
425
  throw new RxFerrixError("Could not reach the server to refresh the session", { code: "network_error", cause: e });
414
426
  }
415
427
  const body = (await res.json().catch(() => null)) as unknown;
428
+ if (epoch !== this.epoch || this.tokens !== t) return this.tokens?.accessToken ?? null;
416
429
  if (res.ok) {
417
430
  const next = toStored(body as AuthTokens);
418
431
  await this.saveTokens(next);
@@ -444,6 +457,7 @@ export class RxFerrixAuth {
444
457
  }
445
458
 
446
459
  private onOtherTabChange(next: StoredTokens | null): void {
460
+ this.epoch++;
447
461
  const had = this.tokens;
448
462
  this.tokens = next;
449
463
  if (!next) {
@@ -621,6 +635,7 @@ export class RxFerrixAuth {
621
635
  /** End the session on the server and forget the tokens (also in other tabs). */
622
636
  async signOut(): Promise<void> {
623
637
  await this.loaded;
638
+ this.epoch++;
624
639
  const t = this.tokens;
625
640
  await this.saveTokens(null);
626
641
  this.client.clearAuth();
package/src/client.ts CHANGED
@@ -119,6 +119,27 @@ function randomSessionId(): string {
119
119
  });
120
120
  }
121
121
 
122
+ /** Who a token speaks for, as far as the server's mutation dedup goes: its issuer and `sub` (`null` for no token). A
123
+ * refreshed token keeps it; another user's doesn't. */
124
+ function tokenIdentity(token: string | null): string | null {
125
+ if (token === null) return null;
126
+ const parts = token.split(".");
127
+ try {
128
+ const b64 = (parts[1] ?? "").replace(/-/g, "+").replace(/_/g, "/");
129
+ const padded = b64 + "=".repeat((4 - (b64.length % 4)) % 4);
130
+ const payload = JSON.parse(typeof atob === "function" ? atob(padded) : "") as { sub?: unknown; iss?: unknown };
131
+ return `${String(payload.iss ?? "")}|${String(payload.sub ?? "")}`;
132
+ } catch {
133
+ return token;
134
+ }
135
+ }
136
+
137
+ /** Whether a JWT's `exp` has passed (a token without one never expires here). */
138
+ function isExpired(token: string): boolean {
139
+ const exp = jwtExpiry(token);
140
+ return exp !== null && exp * 1000 <= Date.now();
141
+ }
142
+
122
143
  /** Seconds-since-epoch `exp` claim of a JWT, if the token is a decodable JWT. */
123
144
  function jwtExpiry(token: string): number | null {
124
145
  const parts = token.split(".");
@@ -215,6 +236,10 @@ export class RxFerrixClient {
215
236
  private tokenFetchFailures = 0;
216
237
  /** Rejecters of `query()` calls still waiting for their first result (settled on `close()`). */
217
238
  private readonly oneShotQueries = new Set<(e: RxFerrixError) => void>();
239
+ /** Run on `close()` (`onClose`). */
240
+ private readonly closeHooks: (() => void)[] = [];
241
+ /** A token fetch failed while the token in hand is expired: sends wait for a token (or `clearAuth`). */
242
+ private awaitingToken = false;
218
243
 
219
244
  private readonly removeUnloadListener: () => void;
220
245
 
@@ -293,7 +318,13 @@ export class RxFerrixClient {
293
318
  finish(() => (state.status === "success" ? resolve(state.value) : reject(state.error)));
294
319
  };
295
320
  this.oneShotQueries.add(closed);
296
- unsubscribe = watch.onUpdate(check);
321
+ try {
322
+ unsubscribe = watch.onUpdate(check);
323
+ } catch (e) {
324
+ // E.g. `too_many_queries`: nothing will settle it later.
325
+ this.oneShotQueries.delete(closed);
326
+ throw e;
327
+ }
297
328
  check();
298
329
  });
299
330
  }
@@ -418,9 +449,13 @@ export class RxFerrixClient {
418
449
 
419
450
  private sendUnsentRequests(): void {
420
451
  if (!this.ws.canSend()) return;
452
+ // Who the server takes these requests from: the identity of the token sent last (Authenticate goes out first).
453
+ const identity = tokenIdentity(this.serverToken);
454
+ const expired = this.requests.expireUnsafeResends(identity);
455
+ if (expired.length > 0) this.finishMutations(expired);
421
456
  for (const message of this.requests.unsent()) {
422
457
  if (!this.ws.send(message)) break;
423
- this.requests.markSent(message.requestId);
458
+ this.requests.markSent(message.requestId, identity);
424
459
  }
425
460
  }
426
461
 
@@ -446,6 +481,7 @@ export class RxFerrixClient {
446
481
  this.auth = null;
447
482
  this.authGeneration++;
448
483
  this.clearAuthRefreshTimer();
484
+ this.awaitingToken = false;
449
485
  this.applyToken(null);
450
486
  if (this.ws.isPaused) this.ws.resume();
451
487
  this.setAuthenticated(false, previous?.onChange);
@@ -467,6 +503,13 @@ export class RxFerrixClient {
467
503
  // have returned may well be valid, so the token in hand (if any) is kept and the fetch is retried with
468
504
  // backoff instead of treating the user as signed out.
469
505
  this.tokenFetchFailures++;
506
+ // An expired token in hand would only be rejected (and that AuthError would count as the server refusing the
507
+ // session, signing the user out): sends wait for a fresh one instead. (With no token yet, they go out
508
+ // anonymously meanwhile, so an app offline at page load isn't frozen.)
509
+ if (this.authToken !== null && isExpired(this.authToken)) {
510
+ this.awaitingToken = true;
511
+ if (!this.ws.isPaused) this.ws.pause();
512
+ }
470
513
  const delay = Math.min(
471
514
  TOKEN_FETCH_RETRY_MAX_MS,
472
515
  TOKEN_FETCH_RETRY_BASE_MS * 2 ** Math.min(this.tokenFetchFailures - 1, 10),
@@ -477,6 +520,7 @@ export class RxFerrixClient {
477
520
  }
478
521
  if (generation !== this.authGeneration || this.auth !== auth || this.closed) return;
479
522
  this.tokenFetchFailures = 0;
523
+ this.awaitingToken = false;
480
524
  this.applyToken(token);
481
525
  if (token === null) this.setAuthenticated(false, auth.onChange);
482
526
  this.scheduleTokenRefresh(token);
@@ -484,7 +528,7 @@ export class RxFerrixClient {
484
528
  this.tokenFetchesInFlight--;
485
529
  // Whichever fetch finishes last lets sends through again: a superseded fetch (a newer `setAuth` or
486
530
  // `clearAuth`) must not leave the socket paused for good.
487
- if (this.tokenFetchesInFlight === 0 && this.ws.isPaused && !this.closed) this.ws.resume();
531
+ if (this.tokenFetchesInFlight === 0 && this.ws.isPaused && !this.closed && !this.awaitingToken) this.ws.resume();
488
532
  }
489
533
  }
490
534
 
@@ -566,6 +610,10 @@ export class RxFerrixClient {
566
610
 
567
611
  /** A new socket is open and `Connect` was sent: rebuild the server's state from scratch. */
568
612
  private onSocketOpen(): void {
613
+ // An access token that expired meanwhile (a laptop waking up) would be rejected: get a fresh one first.
614
+ if (this.auth && this.authToken !== null && isExpired(this.authToken) && this.tokenFetchesInFlight === 0) {
615
+ void this.fetchAndApplyToken(true, true);
616
+ }
569
617
  this.remoteQueries.resetVersion();
570
618
  this.localQueries.resetForNewSocket();
571
619
  this.identityVersion = 0;
@@ -768,10 +816,23 @@ export class RxFerrixClient {
768
816
 
769
817
  // ---------------------------------------------------------------------------------------------------------------
770
818
 
819
+ /** Calls `hook` when the client is closed (e.g. so that the `RxFerrixAuth` of `getAuth` stops listening to other tabs). */
820
+ onClose(hook: () => void): void {
821
+ if (this.closed) hook();
822
+ else this.closeHooks.push(hook);
823
+ }
824
+
771
825
  /** Closes the socket for good. Pending mutations and actions are rejected. */
772
826
  close(): void {
773
827
  if (this.closed) return;
774
828
  this.closed = true;
829
+ for (const hook of this.closeHooks.splice(0)) {
830
+ try {
831
+ hook();
832
+ } catch (e) {
833
+ this.logger.error("onClose hook threw", e);
834
+ }
835
+ }
775
836
  this.authGeneration++;
776
837
  this.clearAuthRefreshTimer();
777
838
  this.ws.stop();
package/src/errors.ts CHANGED
@@ -34,3 +34,5 @@ export class RxFerrixError extends Error {
34
34
  /** Code used for client-side failures (lost connection, client closed). */
35
35
  export const CONNECTION_LOST = "ConnectionLost";
36
36
  export const CLIENT_CLOSED = "ClientClosed";
37
+ /** A mutation sent before a connection was lost couldn't be sent again safely: it may or may not have run. */
38
+ export const OUTCOME_UNKNOWN = "OutcomeUnknown";
package/src/index.ts CHANGED
@@ -22,7 +22,7 @@ export {
22
22
  type ConnectionState,
23
23
  type QueryWatch,
24
24
  } from "./client.js";
25
- export { RxFerrixError, CONNECTION_LOST, CLIENT_CLOSED } from "./errors.js";
25
+ export { RxFerrixError, CONNECTION_LOST, CLIENT_CLOSED, OUTCOME_UNKNOWN } from "./errors.js";
26
26
  export { applyDiff, DiffMismatch } from "./diff.js";
27
27
  export {
28
28
  RxFerrixAuth,
package/src/protocol.ts CHANGED
@@ -6,7 +6,7 @@ export type QueryId = number;
6
6
  export type RequestId = number;
7
7
  export type JSONValue = null | boolean | number | string | JSONValue[] | { [key: string]: JSONValue };
8
8
 
9
- export const CLIENT_VERSION = "0.8.0";
9
+ export const CLIENT_VERSION = "0.9.0";
10
10
 
11
11
  export interface StateVersion {
12
12
  querySet: number;
@@ -16,6 +16,20 @@ export class TransitionVersionMismatch extends Error {
16
16
  }
17
17
  }
18
18
 
19
+ /**
20
+ * Freezes `value` and everything in it not frozen yet, and returns it. Query results are frozen: they are the base the
21
+ * server's next diff applies to, and they are shared with every caller (`useQuery`, `getQuery` in optimistic updates),
22
+ * so changing one in place (`results.sort()`, `store.getQuery(q).push(x)`) would silently corrupt every later update.
23
+ * Freezing makes that a `TypeError` instead. A diff reuses the unchanged parts of the previous result (frozen already),
24
+ * so only what it built is walked. Typed arrays (`Bytes`) can't be frozen and are left as they are.
25
+ */
26
+ export function deepFreeze<T>(value: T): T {
27
+ if (typeof value !== "object" || value === null || Object.isFrozen(value) || ArrayBuffer.isView(value)) return value;
28
+ Object.freeze(value);
29
+ for (const child of Object.values(value)) deepFreeze(child);
30
+ return value;
31
+ }
32
+
19
33
  export interface TransitionResult {
20
34
  /** Queries whose server result changed (updated, failed or removed). */
21
35
  changed: QueryId[];
@@ -66,7 +80,7 @@ export class RemoteQuerySet {
66
80
  case "QueryUpdated":
67
81
  this.results.set(queryId, {
68
82
  status: "success",
69
- value: "diff" in modification ? diffed.get(modification) : modification.value,
83
+ value: deepFreeze("diff" in modification ? diffed.get(modification) : modification.value),
70
84
  });
71
85
  break;
72
86
  case "QueryFailed":
@@ -1,4 +1,4 @@
1
- import { CONNECTION_LOST, RxFerrixError } from "./errors.js";
1
+ import { CONNECTION_LOST, OUTCOME_UNKNOWN, RxFerrixError } from "./errors.js";
2
2
  import type {
3
3
  ActionMessage,
4
4
  ActionResponseMessage,
@@ -9,6 +9,13 @@ import type {
9
9
 
10
10
  type Settle = { resolve: (value: unknown) => void; reject: (error: unknown) => void };
11
11
 
12
+ /**
13
+ * How long after its first send a mutation may still be sent again. The server recognizes a resent mutation (and
14
+ * answers with the recorded result instead of running it again) for 10 minutes (docs/PROTOCOL.md); later, a resend
15
+ * could run it twice. Kept below that, for clock and transit slack.
16
+ */
17
+ export const RESEND_WINDOW_MS = 9 * 60_000;
18
+
12
19
  type MutationRequest = Settle & {
13
20
  kind: "mutation";
14
21
  message: MutationMessage;
@@ -17,6 +24,8 @@ type MutationRequest = Settle & {
17
24
  /** Set once a successful MutationResponse arrived: waiting for a Transition with ts >= this. */
18
25
  completed: { ts: number; result: unknown } | null;
19
26
  startedAt: number;
27
+ /** When it first went out, and as whom (`identity` of the client then): a resend must match both. */
28
+ firstSent: { at: number; identity: string | null } | null;
20
29
  };
21
30
 
22
31
  type ActionRequest = Settle & {
@@ -58,6 +67,7 @@ export class RequestManager {
58
67
  sent: false,
59
68
  completed: null,
60
69
  startedAt: Date.now(),
70
+ firstSent: null,
61
71
  resolve,
62
72
  reject,
63
73
  });
@@ -88,10 +98,35 @@ export class RequestManager {
88
98
  return out;
89
99
  }
90
100
 
91
- /** The message went out on the current socket. */
92
- markSent(requestId: RequestId): void {
101
+ /** The message went out on the current socket, from `identity` (whom the socket is authenticated as). */
102
+ markSent(requestId: RequestId, identity: string | null = null): void {
93
103
  const request = this.requests.get(requestId);
94
- if (request) request.sent = true;
104
+ if (!request) return;
105
+ request.sent = true;
106
+ if (request.kind === "mutation" && !request.firstSent) request.firstSent = { at: Date.now(), identity };
107
+ }
108
+
109
+ /**
110
+ * Mutations waiting to be sent again that can't be safely: sent more than {@link RESEND_WINDOW_MS} ago (the server
111
+ * no longer recognizes them, so they could run twice), or from another identity than now (the server never matches
112
+ * a resend across identities: it would run, or fail, as someone else). They are taken off and returned, rejected
113
+ * with {@link OUTCOME_UNKNOWN}: whether the first send ran isn't known.
114
+ */
115
+ expireUnsafeResends(identity: string | null, now: number = Date.now()): SettledMutation[] {
116
+ const expired: SettledMutation[] = [];
117
+ for (const [requestId, request] of this.requests) {
118
+ if (request.kind !== "mutation" || request.sent || request.completed || !request.firstSent) continue;
119
+ const tooOld = now - request.firstSent.at > RESEND_WINDOW_MS;
120
+ if (!tooOld && request.firstSent.identity === identity) continue;
121
+ this.requests.delete(requestId);
122
+ const why = tooOld ? "too long ago to be sent again safely" : "as another user than now";
123
+ const error = new RxFerrixError(
124
+ `The connection was lost after mutation "${request.message.udfPath}" was sent, ${why}: it may or may not have run`,
125
+ { code: OUTCOME_UNKNOWN },
126
+ );
127
+ expired.push({ requestId, settle: () => request.reject(error) });
128
+ }
129
+ return expired;
95
130
  }
96
131
 
97
132
  /**