on-zero 0.6.3 → 0.6.4

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 (82) hide show
  1. package/dist/cjs/createZeroClient.cjs +91 -12
  2. package/dist/cjs/createZeroClient.connection.test.cjs +163 -0
  3. package/dist/cjs/createZeroClient.connection.test.native.js +242 -0
  4. package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -0
  5. package/dist/cjs/createZeroClient.native.js +99 -12
  6. package/dist/cjs/createZeroClient.native.js.map +1 -1
  7. package/dist/cjs/createZeroClient.recovery.test.cjs +52 -0
  8. package/dist/cjs/createZeroClient.recovery.test.native.js +52 -0
  9. package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
  10. package/dist/cjs/helpers/recoverZeroClient.cjs +140 -14
  11. package/dist/cjs/helpers/recoverZeroClient.native.js +155 -22
  12. package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
  13. package/dist/cjs/helpers/recoverZeroClient.test.cjs +181 -0
  14. package/dist/cjs/helpers/recoverZeroClient.test.native.js +209 -0
  15. package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
  16. package/dist/cjs/index.cjs +1 -0
  17. package/dist/cjs/index.native.js +1 -0
  18. package/dist/cjs/index.native.js.map +1 -1
  19. package/dist/cjs/multi.cjs +13 -0
  20. package/dist/cjs/multi.native.js +35 -0
  21. package/dist/cjs/multi.native.js.map +1 -1
  22. package/dist/cjs/multiPartition.test.cjs +42 -0
  23. package/dist/cjs/multiPartition.test.native.js +51 -0
  24. package/dist/cjs/multiPartition.test.native.js.map +1 -0
  25. package/dist/esm/createZeroClient.connection.test.mjs +164 -0
  26. package/dist/esm/createZeroClient.connection.test.mjs.map +1 -0
  27. package/dist/esm/createZeroClient.connection.test.native.js +240 -0
  28. package/dist/esm/createZeroClient.connection.test.native.js.map +1 -0
  29. package/dist/esm/createZeroClient.mjs +92 -13
  30. package/dist/esm/createZeroClient.mjs.map +1 -1
  31. package/dist/esm/createZeroClient.native.js +100 -13
  32. package/dist/esm/createZeroClient.native.js.map +1 -1
  33. package/dist/esm/createZeroClient.recovery.test.mjs +52 -0
  34. package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
  35. package/dist/esm/createZeroClient.recovery.test.native.js +52 -0
  36. package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
  37. package/dist/esm/helpers/recoverZeroClient.mjs +140 -15
  38. package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
  39. package/dist/esm/helpers/recoverZeroClient.native.js +155 -23
  40. package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
  41. package/dist/esm/helpers/recoverZeroClient.test.mjs +182 -1
  42. package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
  43. package/dist/esm/helpers/recoverZeroClient.test.native.js +210 -1
  44. package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
  45. package/dist/esm/index.js +2 -2
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/index.mjs +2 -2
  48. package/dist/esm/index.mjs.map +1 -1
  49. package/dist/esm/index.native.js +2 -2
  50. package/dist/esm/index.native.js.map +1 -1
  51. package/dist/esm/multi.mjs +13 -1
  52. package/dist/esm/multi.mjs.map +1 -1
  53. package/dist/esm/multi.native.js +35 -1
  54. package/dist/esm/multi.native.js.map +1 -1
  55. package/dist/esm/multiPartition.test.mjs +43 -0
  56. package/dist/esm/multiPartition.test.mjs.map +1 -0
  57. package/dist/esm/multiPartition.test.native.js +49 -0
  58. package/dist/esm/multiPartition.test.native.js.map +1 -0
  59. package/lint/ssr-guards.js +164 -0
  60. package/package.json +2 -2
  61. package/readme.md +126 -0
  62. package/src/createZeroClient.connection.test.tsx +162 -0
  63. package/src/createZeroClient.recovery.test.tsx +68 -0
  64. package/src/createZeroClient.tsx +159 -13
  65. package/src/helpers/recoverZeroClient.test.ts +204 -1
  66. package/src/helpers/recoverZeroClient.ts +263 -42
  67. package/src/index.ts +3 -0
  68. package/src/multi.ts +33 -0
  69. package/src/multiPartition.test.ts +38 -0
  70. package/types/createZeroClient.connection.test.d.ts +5 -0
  71. package/types/createZeroClient.connection.test.d.ts.map +1 -0
  72. package/types/createZeroClient.d.ts +17 -0
  73. package/types/createZeroClient.d.ts.map +1 -1
  74. package/types/createZeroServer.d.ts +4 -4
  75. package/types/helpers/recoverZeroClient.d.ts +15 -1
  76. package/types/helpers/recoverZeroClient.d.ts.map +1 -1
  77. package/types/index.d.ts +1 -1
  78. package/types/index.d.ts.map +1 -1
  79. package/types/multi.d.ts +1 -0
  80. package/types/multi.d.ts.map +1 -1
  81. package/types/multiPartition.test.d.ts +2 -0
  82. package/types/multiPartition.test.d.ts.map +1 -0
@@ -8,7 +8,7 @@ import { ensureHttpPullTransport } from "./httpPullTransport.native.js";
8
8
  import { createUseQuery } from "./createUseQuery.native.js";
9
9
  import { registerClientInstance } from "./instanceRegistry.native.js";
10
10
  import { createMutators } from "./helpers/createMutators.native.js";
11
- import { composeRecoveryLogSink, makeZeroRecovery } from "./helpers/recoverZeroClient.native.js";
11
+ import { composeRecoveryLogSink, isRecoverableZeroStalePokeMessage, makeZeroRecovery } from "./helpers/recoverZeroClient.native.js";
12
12
  import { getAuth } from "./helpers/getAuth.native.js";
13
13
  import { getAllMutationsPermissions, getMutationsPermissions } from "./modelRegistry.native.js";
14
14
  import { registerQuery } from "./queryRegistry.native.js";
@@ -284,6 +284,14 @@ function createZeroClientInternal(param) {
284
284
  var usePermission = createUsePermission(useQuery);
285
285
  var usePermissionDirect = createUsePermission(useQueryDirect);
286
286
  var cachedZero = null;
287
+ var REMINT_GUARD_MS = 12e3;
288
+ var REMINT_MAX_ATTEMPTS = 5;
289
+ var REMINT_ATTEMPT_RESET_MS = 6e4;
290
+ var remintControl = {
291
+ bump: null
292
+ };
293
+ var lastRemintAt = 0;
294
+ var remintAttempts = 0;
287
295
  function invalidateZeroInstance(instanceToInvalidate) {
288
296
  if (!instanceToInvalidate) return;
289
297
  if ((cachedZero === null || cachedZero === void 0 ? void 0 : cachedZero.instance) === instanceToInvalidate) {
@@ -306,6 +314,27 @@ function createZeroClientInternal(param) {
306
314
  invalidateZeroInstance(instanceToDelete);
307
315
  }
308
316
  }
317
+ async function remint() {
318
+ var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
319
+ if (!remintControl.bump) return false;
320
+ var now = Date.now();
321
+ var sinceLast = now - lastRemintAt;
322
+ if (lastRemintAt > 0 && sinceLast < REMINT_GUARD_MS) return false;
323
+ if (sinceLast > REMINT_ATTEMPT_RESET_MS) remintAttempts = 0;
324
+ if (remintAttempts >= REMINT_MAX_ATTEMPTS) return false;
325
+ lastRemintAt = now;
326
+ remintAttempts += 1;
327
+ var {
328
+ dropLocalState = true
329
+ } = opts;
330
+ if (dropLocalState && latestZeroInstance) {
331
+ await deleteZeroInstance(latestZeroInstance).catch(function () {});
332
+ }
333
+ var bump = remintControl.bump;
334
+ if (!bump) return false;
335
+ bump();
336
+ return true;
337
+ }
309
338
  var DISABLED_ZERO_STUB_CONNECTION_STATE = {
310
339
  current: {
311
340
  name: "closed"
@@ -351,6 +380,11 @@ function createZeroClientInternal(param) {
351
380
  transport,
352
381
  pullIntervalMs = 3e4,
353
382
  beforeReload,
383
+ scheduleReload,
384
+ guardStorage,
385
+ benignLogFilter,
386
+ refreshAuth,
387
+ connectionDataset,
354
388
  disable,
355
389
  ...props
356
390
  } = param2;
@@ -375,6 +409,17 @@ function createZeroClientInternal(param) {
375
409
  },
376
410
  // eslint-disable-next-line react-hooks/exhaustive-deps
377
411
  []);
412
+ var [remintGeneration, setRemintGeneration] = useState(0);
413
+ useEffect(function () {
414
+ remintControl.bump = function () {
415
+ return setRemintGeneration(function (generation) {
416
+ return generation + 1;
417
+ });
418
+ };
419
+ return function () {
420
+ remintControl.bump = null;
421
+ };
422
+ }, []);
378
423
  var instanceKey = JSON.stringify([Object.entries({
379
424
  kvStore: "mem",
380
425
  ...props
@@ -385,7 +430,7 @@ function createZeroClientInternal(param) {
385
430
  var [a] = param3,
386
431
  [b] = param1;
387
432
  return a < b ? -1 : 1;
388
- }), hasAuth, transport]);
433
+ }), hasAuth, transport, remintGeneration]);
389
434
  var [instance2, setInstance] = useState();
390
435
  useEffect(function () {
391
436
  if (disable) {
@@ -415,7 +460,10 @@ function createZeroClientInternal(param) {
415
460
  return deleteZeroInstance(instanceRef.current);
416
461
  },
417
462
  zeroEvents,
418
- beforeReload
463
+ beforeReload,
464
+ scheduleReload,
465
+ guardStorage,
466
+ benignLogFilter
419
467
  };
420
468
  var recovery = makeZeroRecovery(recoveryDeps);
421
469
  var _options_logSink, _options_onUpdateNeeded, _options_onClientStateNotFound;
@@ -462,6 +510,7 @@ function createZeroClientInternal(param) {
462
510
  }
463
511
  }, [instance2, auth]);
464
512
  var liveInstance = disable ? void 0 : instance2;
513
+ var _props_cacheURL;
465
514
  return /* @__PURE__ */_jsx(AuthDataContext.Provider, {
466
515
  value: authData,
467
516
  children: /* @__PURE__ */_jsx(DisabledContext.Provider, {
@@ -469,7 +518,10 @@ function createZeroClientInternal(param) {
469
518
  children: /* @__PURE__ */_jsxs(ZeroContext.Provider, {
470
519
  value: liveInstance !== null && liveInstance !== void 0 ? liveInstance : DISABLED_ZERO_STUB,
471
520
  children: [liveInstance ? /* @__PURE__ */_jsx(SetZeroInstance, {}) : null, liveInstance ? /* @__PURE__ */_jsx(ConnectionMonitor, {
472
- zeroEvents
521
+ zeroEvents,
522
+ refreshAuth,
523
+ exposeDataset: connectionDataset,
524
+ datasetCacheUrl: connectionDataset ? (_props_cacheURL = props.cacheURL) !== null && _props_cacheURL !== void 0 ? _props_cacheURL : props.server : void 0
473
525
  }) : null, children]
474
526
  })
475
527
  })
@@ -493,23 +545,57 @@ function createZeroClientInternal(param) {
493
545
  };
494
546
  var ConnectionMonitor = /* @__PURE__ */memo(function (param2) {
495
547
  var {
496
- zeroEvents: zeroEvents2
548
+ zeroEvents: zeroEvents2,
549
+ refreshAuth,
550
+ exposeDataset,
551
+ datasetCacheUrl
497
552
  } = param2;
553
+ var zeroInstance = useZero();
498
554
  var state = useConnectionState();
499
555
  var prevState = useRef(state.name);
556
+ var staleReconnectRef = useRef(null);
557
+ var needsAuthRef = useRef(false);
500
558
  useEffect(function () {
501
- if (state.name !== prevState.current) {
502
- var reason = "reason" in state ? state.reason : "";
503
- prevState.current = state.name;
504
- if (state.name === "error" || state.name === "needs-auth") {
505
- var message = typeof reason === "string" ? reason : state.name;
559
+ var name = state.name;
560
+ var reason = "reason" in state && typeof state.reason === "string" ? state.reason : "";
561
+ if (exposeDataset && typeof document !== "undefined" && document.body) {
562
+ document.body.dataset.zeroState = name;
563
+ if (datasetCacheUrl) document.body.dataset.zeroCacheUrl = datasetCacheUrl;
564
+ if (reason) document.body.dataset.zeroReason = reason.slice(0, 200);else delete document.body.dataset.zeroReason;
565
+ if (name === "connected") document.body.dataset.zeroConnected = "true";else delete document.body.dataset.zeroConnected;
566
+ }
567
+ if (name === "error" && isRecoverableZeroStalePokeMessage(reason)) {
568
+ if (staleReconnectRef.current !== reason) {
569
+ var _zeroInstance_connection_connect, _zeroInstance_connection;
570
+ staleReconnectRef.current = reason;
571
+ void Promise.resolve((_zeroInstance_connection = zeroInstance.connection) === null || _zeroInstance_connection === void 0 ? void 0 : (_zeroInstance_connection_connect = _zeroInstance_connection.connect) === null || _zeroInstance_connection_connect === void 0 ? void 0 : _zeroInstance_connection_connect.call(_zeroInstance_connection)).catch(function () {});
572
+ }
573
+ return;
574
+ }
575
+ if (name !== "error") staleReconnectRef.current = null;
576
+ if (name === "needs-auth") {
577
+ if (refreshAuth && !needsAuthRef.current) {
578
+ needsAuthRef.current = true;
579
+ void refreshAuth().then(function (token) {
580
+ var _zeroInstance_connection_connect2, _zeroInstance_connection2;
581
+ if (token) (_zeroInstance_connection2 = zeroInstance.connection) === null || _zeroInstance_connection2 === void 0 ? void 0 : (_zeroInstance_connection_connect2 = _zeroInstance_connection2.connect) === null || _zeroInstance_connection_connect2 === void 0 ? void 0 : _zeroInstance_connection_connect2.call(_zeroInstance_connection2, {
582
+ auth: token
583
+ });
584
+ }).catch(function () {});
585
+ }
586
+ } else {
587
+ needsAuthRef.current = false;
588
+ }
589
+ if (name !== prevState.current) {
590
+ prevState.current = name;
591
+ if (name === "error" || name === "needs-auth") {
506
592
  zeroEvents2.emit({
507
593
  type: "error",
508
- message
594
+ message: reason || name
509
595
  });
510
596
  }
511
597
  }
512
- }, [state, zeroEvents2]);
598
+ }, [state, zeroEvents2, zeroInstance, refreshAuth, exposeDataset, datasetCacheUrl]);
513
599
  return null;
514
600
  });
515
601
  function preload(fnArg, paramsOrOptions, optionsArg) {
@@ -553,7 +639,8 @@ function createZeroClientInternal(param) {
553
639
  usePermissionDirect,
554
640
  zero,
555
641
  preload,
556
- getQuery
642
+ getQuery,
643
+ remint
557
644
  };
558
645
  }
559
646
  export { createZeroClient, createZeroClientInternal };
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","Zero","ZeroClient","useConnectionState","useZero","ZeroContext","createEmitter","IS_SERVER_RUNTIME","createContext","memo","useContext","useEffect","useMemo","useRef","useState","createPermissions","ensureHttpPullTransport","createUseQuery","registerClientInstance","createMutators","composeRecoveryLogSink","makeZeroRecovery","getAuth","getAllMutationsPermissions","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","getEnvironment","setAuthData","setEnvironment","setSchema","getRawWhere","setEvaluatingPermission","setRunner","zql","getZeroProxyValue","instance","key","value","Reflect","get","bound","bind","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","ownKeys","Symbol","iterator","_step","next","done","property","descriptor","Object","getOwnPropertyDescriptor","defineProperty","err","return","createUnavailableDirectUseQuery","useQueryDirect","Error","createZeroClient","options","createZeroClientInternal","param","schema","models","groupedQueries","permissionStrategy","instanceName","createDirectUseQuery","permissionsHelpers","environment","wrappedNamespaces","entries","namespace","queries","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","name","fn","_step1","param2","args","_iterator1","permissionCheckFns","createPermissionCheckFn","table","perm","base","objOrId","where","eb","cmpLit","one","rawPerm","buildPermissionQuery","e","and","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop1","_step2","_iterator2","customQueries","namespaces","keys","DisabledContext","latestZeroInstance","zero","Proxy","_","instanceToDelete","deleteZeroInstance","emitterScope","zeroEvents","zeroInstanceVersion","AuthDataContext","useQuery","getZero","zeroVersion","createUsePermission","useQueryImpl","usePermission2","enabled","arguments","length","debug","disableMode","lastRef","tableStr","checkFn","auth","_uid","id","data","status","Boolean","console","info","result","type","current","usePermission","usePermissionDirect","cachedZero","invalidateZeroInstance","instanceToInvalidate","runner","emit","close","delete","DISABLED_ZERO_STUB_CONNECTION_STATE","subscribe","DISABLED_ZERO_STUB","context","connection","state","ProvideZeroServer","children","authData","authDataIn","Provider","ProvideZeroClient","transport","pullIntervalMs","beforeReload","disable","props","hasAuth","stableAuthDataRef","_ref","mutators","can","instanceKey","JSON","stringify","kvStore","filter","param3","sort","param1","a","b","instance2","setInstance","cached","_options_cacheURL","serverURL","cacheURL","server","origin","instanceRef","recoveryDeps","deleteLocalState","recovery","_options_logSink","_options_onUpdateNeeded","_options_onClientStateNotFound","createdInstance"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","Zero","ZeroClient","useConnectionState","useZero","ZeroContext","createEmitter","IS_SERVER_RUNTIME","createContext","memo","useContext","useEffect","useMemo","useRef","useState","createPermissions","ensureHttpPullTransport","createUseQuery","registerClientInstance","createMutators","composeRecoveryLogSink","isRecoverableZeroStalePokeMessage","makeZeroRecovery","getAuth","getAllMutationsPermissions","getMutationsPermissions","registerQuery","resolveQuery","setCustomQueries","getEnvironment","setAuthData","setEnvironment","setSchema","getRawWhere","setEvaluatingPermission","setRunner","zql","getZeroProxyValue","instance","key","value","Reflect","get","bound","bind","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","ownKeys","Symbol","iterator","_step","next","done","property","descriptor","Object","getOwnPropertyDescriptor","defineProperty","err","return","createUnavailableDirectUseQuery","useQueryDirect","Error","createZeroClient","options","createZeroClientInternal","param","schema","models","groupedQueries","permissionStrategy","instanceName","createDirectUseQuery","permissionsHelpers","environment","wrappedNamespaces","entries","namespace","queries","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","name","fn","_step1","param2","args","_iterator1","permissionCheckFns","createPermissionCheckFn","table","perm","base","objOrId","where","eb","cmpLit","one","rawPerm","buildPermissionQuery","e","and","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop1","_step2","_iterator2","customQueries","namespaces","keys","DisabledContext","latestZeroInstance","zero","Proxy","_","instanceToDelete","deleteZeroInstance","emitterScope","zeroEvents","zeroInstanceVersion","AuthDataContext","useQuery","getZero","zeroVersion","createUsePermission","useQueryImpl","usePermission2","enabled","arguments","length","debug","disableMode","lastRef","tableStr","checkFn","auth","_uid","id","data","status","Boolean","console","info","result","type","current","usePermission","usePermissionDirect","cachedZero","REMINT_GUARD_MS","REMINT_MAX_ATTEMPTS","REMINT_ATTEMPT_RESET_MS","remintControl","bump","lastRemintAt","remintAttempts","invalidateZeroInstance","instanceToInvalidate","runner","emit","close","delete","remint","opts","now","Date","sinceLast","dropLocalState","catch","DISABLED_ZERO_STUB_CONNECTION_STATE","subscribe","DISABLED_ZERO_STUB","context","connection","state","ProvideZeroServer","children","authData","authDataIn","Provider","ProvideZeroClient","transport","pullIntervalMs","beforeReload","scheduleReload","guardStorage","benignLogFilter","refreshAuth","connectionDataset","disable","props","hasAuth","stableAuthDataRef","_ref","mutators","can","remintGeneration","setRemintGeneration","generation","instanceKey","JSON","stringify","kvStore","filter","param3","sort","param1","a","b","instance2","setInstance","cached","_options_cacheURL","serverURL","cacheURL","server","origin","instanceRef","recoveryDeps","deleteLocalState","recovery","_options_logSink","_options_onUpdateNeeded","_options_onClientStateNotFound","createdInstance","logSink","onUpdateNeeded","onClientStateNotFound","prevAuthRef","prevAuth","connect"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -94,4 +94,56 @@ test("zero.delete invalidates cached instance before a remount recovery", async
94
94
  expect(fakeZero.instances).toHaveLength(2);
95
95
  expect(fakeZero.instances[1]).not.toBe(first);
96
96
  });
97
+ test("remint drops local state and reconstructs a fresh instance in place", async () => {
98
+ root = createRoot(container);
99
+ await act(async () => {
100
+ root?.render(/* @__PURE__ */jsx(client.ProvideZero, {
101
+ cacheURL: "http://127.0.0.1:7777/zero",
102
+ userID: "remint-test",
103
+ children: /* @__PURE__ */jsx("span", {
104
+ children: "ok"
105
+ })
106
+ }));
107
+ await Promise.resolve();
108
+ });
109
+ const first = fakeZero.instances.at(-1);
110
+ expect(first).toBeDefined();
111
+ const countBefore = fakeZero.instances.length;
112
+ let result;
113
+ await act(async () => {
114
+ result = await client.remint();
115
+ await Promise.resolve();
116
+ });
117
+ expect(result).toBe(true);
118
+ expect(first?.delete).toHaveBeenCalledTimes(1);
119
+ expect(fakeZero.instances.length).toBe(countBefore + 1);
120
+ expect(fakeZero.instances.at(-1)).not.toBe(first);
121
+ });
122
+ test("remint with no provider mounted returns false without burning the guard budget", async () => {
123
+ const isolated = createZeroClient({
124
+ schema,
125
+ models: {},
126
+ groupedQueries: {},
127
+ instanceName: "remint-unmounted-test"
128
+ });
129
+ expect(await isolated.remint()).toBe(false);
130
+ expect(await isolated.remint()).toBe(false);
131
+ root = createRoot(container);
132
+ await act(async () => {
133
+ root?.render(/* @__PURE__ */jsx(isolated.ProvideZero, {
134
+ cacheURL: "http://127.0.0.1:7777/zero",
135
+ userID: "remint-unmounted",
136
+ children: /* @__PURE__ */jsx("span", {
137
+ children: "ok"
138
+ })
139
+ }));
140
+ await Promise.resolve();
141
+ });
142
+ let result;
143
+ await act(async () => {
144
+ result = await isolated.remint();
145
+ await Promise.resolve();
146
+ });
147
+ expect(result).toBe(true);
148
+ });
97
149
  //# sourceMappingURL=createZeroClient.recovery.test.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["createSchema","string","table","act","createRoot","afterEach","beforeEach","expect","test","vi","createZeroClient","jsx","fakeZero","hoisted","FakeZero","context","connection","state","current","name","subscribe","connect","fn","delete","errors","close","run","preload","cleanup","complete","Promise","resolve","constructor","instances","push","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","noteTable","columns","id","body","primaryKey","schema","tables","client","models","groupedQueries","instanceName","container","root","length","document","createElement","unmount","mount","render","ProvideZero","cacheURL","userID","children","first","toBeDefined","deleteZero","zero","toHaveBeenCalledTimes","toHaveLength","not","toBe"],"sources":["../../src/createZeroClient.recovery.test.tsx"],"sourcesContent":[null],"mappings":"AAEA,SAASA,YAAA,EAAcC,MAAA,EAAQC,KAAA,QAAa;AAC5C,SAASC,GAAA,QAAW;AACpB,SAASC,UAAA,QAA6B;AACtC,SAASC,SAAA,EAAWC,UAAA,EAAYC,MAAA,EAAQC,IAAA,EAAMC,EAAA,QAAU;AAqCxD,SAASC,gBAAA,QAAwB;AAoCzB,SAAAC,GAAA;AAvER,MAAMC,QAAA,GAAWH,EAAA,CAAGI,OAAA,CAAQ,MAAM;EAChC,MAAMC,QAAA,CAAS;IACJC,OAAA,GAAU,CAAC;IACXC,UAAA,GAAa;MACpBC,KAAA,EAAO;QACLC,OAAA,EAAS;UAAEC,IAAA,EAAM;QAAS;QAC1BC,SAAA,EAAWA,CAAA,KAAM,MAAM,CAAC;MAC1B;MACAC,OAAA,EAASZ,EAAA,CAAGa,EAAA,CAAG;IACjB;IACSC,MAAA,GAASd,EAAA,CAAGa,EAAA,CAAG,aAAa;MAAEE,MAAA,EAAQ;IAAG,EAAE;IAC3CC,KAAA,GAAQhB,EAAA,CAAGa,EAAA,CAAG;IACdI,GAAA,GAAMjB,EAAA,CAAGa,EAAA,CAAG,YAAY,EAAE;IAC1BK,OAAA,GAAUlB,EAAA,CAAGa,EAAA,CAAG,OAAO;MAC9BM,OAAA,EAASA,CAAA,KAAM,CAAC;MAChBC,QAAA,EAAUC,OAAA,CAAQC,OAAA,CAAQ;IAC5B,EAAE;IAEFC,YAAA,EAAc;MACZC,SAAA,CAAUC,IAAA,CAAK,IAAI;IACrB;EACF;EAEA,MAAMD,SAAA,GAAwB,EAAC;EAC/B,OAAO;IAAEnB,QAAA;IAAUmB;EAAU;AAC/B,CAAC;AAEDxB,EAAA,CAAG0B,IAAA,CAAK,kBAAkB,MAAOC,cAAA,IAAmB;EAClD,MAAMC,MAAA,GAAS,MAAMD,cAAA,CAAgD;EACrE,OAAO;IACL,GAAGC,MAAA;IACHC,IAAA,EAAM1B,QAAA,CAASE;EACjB;AACF,CAAC;AAQDyB,UAAA,CAAWC,wBAAA,GAA2B;AAEtC,MAAMC,SAAA,GAAYvC,KAAA,CAAM,MAAM,EAAEwC,OAAA,CAAQ;EAAEC,EAAA,EAAI1C,MAAA,CAAO;EAAG2C,IAAA,EAAM3C,MAAA,CAAO;AAAE,CAAC,EAAE4C,UAAA,CAAW,IAAI;AACzF,MAAMC,MAAA,GAAS9C,YAAA,CAAa;EAAE+C,MAAA,EAAQ,CAACN,SAAS;AAAE,CAAC;AAEnD,MAAMO,MAAA,GAAStC,gBAAA,CAAiB;EAC9BoC,MAAA;EACAG,MAAA,EAAQ,CAAC;EACTC,cAAA,EAAgB,CAAC;EACjBC,YAAA,EAAc;AAChB,CAAC;AAED,IAAIC,SAAA;AACJ,IAAIC,IAAA;AAEJ/C,UAAA,CAAW,MAAM;EACfM,QAAA,CAASqB,SAAA,CAAUqB,MAAA,GAAS;EAC5BF,SAAA,GAAYG,QAAA,CAASC,aAAA,CAAc,KAAK;EACxCH,IAAA,GAAO;AACT,CAAC;AAEDhD,SAAA,CAAU,MAAM;EACd,IAAIgD,IAAA,EAAMlD,GAAA,CAAI,MAAMkD,IAAA,EAAMI,OAAA,CAAQ,CAAC;AACrC,CAAC;AAED,eAAeC,MAAA,EAAQ;EACrBL,IAAA,GAAOjD,UAAA,CAAWgD,SAAS;EAC3B,MAAMjD,GAAA,CAAI,YAAY;IACpBkD,IAAA,EAAMM,MAAA,CACJ,eAAAhD,GAAA,CAACqC,MAAA,CAAOY,WAAA,EAAP;MAAmBC,QAAA,EAAS;MAA6BC,MAAA,EAAO;MAC/DC,QAAA,iBAAApD,GAAA,CAAC;QAAKoD,QAAA;MAAA,CAAE;IAAA,CACV,CACF;IACA,MAAMjC,OAAA,CAAQC,OAAA,CAAQ;EACxB,CAAC;AACH;AAEAvB,IAAA,CAAK,qEAAqE,YAAY;EACpF,MAAMkD,KAAA,CAAM;EACZ,MAAMM,KAAA,GAAQpD,QAAA,CAASqB,SAAA,CAAU,CAAC;EAClC1B,MAAA,CAAOyD,KAAK,EAAEC,WAAA,CAAY;EAE1B,MAAMC,UAAA,GAAalB,MAAA,CAAOmB,IAAA,CAAK5C,MAAA;EAC/B,MAAMpB,GAAA,CAAI,YAAY;IACpB,MAAM+D,UAAA,CAAW;EACnB,CAAC;EAED3D,MAAA,CAAOyD,KAAA,EAAOzC,MAAM,EAAE6C,qBAAA,CAAsB,CAAC;EAC7C7D,MAAA,CAAOyD,KAAA,EAAOvC,KAAK,EAAE2C,qBAAA,CAAsB,CAAC;EAE5CjE,GAAA,CAAI,MAAMkD,IAAA,EAAMI,OAAA,CAAQ,CAAC;EACzB,MAAMC,KAAA,CAAM;EAEZnD,MAAA,CAAOK,QAAA,CAASqB,SAAS,EAAEoC,YAAA,CAAa,CAAC;EACzC9D,MAAA,CAAOK,QAAA,CAASqB,SAAA,CAAU,CAAC,CAAC,EAAEqC,GAAA,CAAIC,IAAA,CAAKP,KAAK;AAC9C,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createSchema","string","table","act","createRoot","afterEach","beforeEach","expect","test","vi","createZeroClient","jsx","fakeZero","hoisted","FakeZero","context","connection","state","current","name","subscribe","connect","fn","delete","errors","close","run","preload","cleanup","complete","Promise","resolve","constructor","instances","push","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","noteTable","columns","id","body","primaryKey","schema","tables","client","models","groupedQueries","instanceName","container","root","length","document","createElement","unmount","mount","render","ProvideZero","cacheURL","userID","children","first","toBeDefined","deleteZero","zero","toHaveBeenCalledTimes","toHaveLength","not","toBe","at","countBefore","result","remint","isolated"],"sources":["../../src/createZeroClient.recovery.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -125,4 +125,56 @@ test("zero.delete invalidates cached instance before a remount recovery", async
125
125
  expect(fakeZero.instances).toHaveLength(2);
126
126
  expect(fakeZero.instances[1]).not.toBe(first);
127
127
  });
128
+ test("remint drops local state and reconstructs a fresh instance in place", async function () {
129
+ root = createRoot(container);
130
+ await act(async function () {
131
+ root === null || root === void 0 ? void 0 : root.render(/* @__PURE__ */_jsx(client.ProvideZero, {
132
+ cacheURL: "http://127.0.0.1:7777/zero",
133
+ userID: "remint-test",
134
+ children: /* @__PURE__ */_jsx("span", {
135
+ children: "ok"
136
+ })
137
+ }));
138
+ await Promise.resolve();
139
+ });
140
+ var first = fakeZero.instances.at(-1);
141
+ expect(first).toBeDefined();
142
+ var countBefore = fakeZero.instances.length;
143
+ var result;
144
+ await act(async function () {
145
+ result = await client.remint();
146
+ await Promise.resolve();
147
+ });
148
+ expect(result).toBe(true);
149
+ expect(first === null || first === void 0 ? void 0 : first.delete).toHaveBeenCalledTimes(1);
150
+ expect(fakeZero.instances.length).toBe(countBefore + 1);
151
+ expect(fakeZero.instances.at(-1)).not.toBe(first);
152
+ });
153
+ test("remint with no provider mounted returns false without burning the guard budget", async function () {
154
+ var isolated = createZeroClient({
155
+ schema,
156
+ models: {},
157
+ groupedQueries: {},
158
+ instanceName: "remint-unmounted-test"
159
+ });
160
+ expect(await isolated.remint()).toBe(false);
161
+ expect(await isolated.remint()).toBe(false);
162
+ root = createRoot(container);
163
+ await act(async function () {
164
+ root === null || root === void 0 ? void 0 : root.render(/* @__PURE__ */_jsx(isolated.ProvideZero, {
165
+ cacheURL: "http://127.0.0.1:7777/zero",
166
+ userID: "remint-unmounted",
167
+ children: /* @__PURE__ */_jsx("span", {
168
+ children: "ok"
169
+ })
170
+ }));
171
+ await Promise.resolve();
172
+ });
173
+ var result;
174
+ await act(async function () {
175
+ result = await isolated.remint();
176
+ await Promise.resolve();
177
+ });
178
+ expect(result).toBe(true);
179
+ });
128
180
  //# sourceMappingURL=createZeroClient.recovery.test.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","createSchema","string","table","act","createRoot","afterEach","beforeEach","expect","test","vi","createZeroClient","_class_call_check","instance","Constructor","TypeError","_define_property","obj","key","value","Object","defineProperty","enumerable","configurable","writable","fakeZero","hoisted","FakeZero","FakeZero2","state","current","name","subscribe","connect","fn","errors","cleanup","complete","Promise","resolve","instances","push","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","noteTable","columns","id","body","primaryKey","schema","tables"],"sources":["../../src/createZeroClient.recovery.test.tsx"],"sourcesContent":[null],"mappings":"AAEA,SAASA,GAAA,IAAAC,IAAA,QAAc,mBAAqB;AAC5C,SAASC,YAAW,EAAAC,MAAA,EAAAC,KAAA;AACpB,SAASC,GAAA,eAA6B;AACtC,SAASC,UAAA,QAAW,kBAAoB;AAqCxC,SAASC,SAAA,EAAAC,UAAA,EAAAC,MAAwB,EAAAC,IAAA,EAAAC,EAAA;AAoCzB,SAAAC,gBAAA;AAvER,SAAMC,iBAAcA,CAAAC,QAAc,EAAAC,WAAA;EAChC,MAAMD,QAAA,YAASC,WAAA;IACJ,UAAUC,SAAC;EAAA;AACE;AACb,SACLC,gBAAiBA,CAAAC,GAAA,EAAAC,GAAS,EAAAC,KAAA;EAAA,IAAAD,GAC1B,IAAAD,GAAA;IAAuBG,MAAC,CAAAC,cAAA,CAAAJ,GAAA,EAAAC,GAAA;MAC1BC,KAAA;MACAG,UAAS,EAAG,IAAG;MACjBC,YAAA;MACSC,QAAS,EAAG;IACZ;EAAc,OACd;IACAP,GAAA,CAAAC,GAAA,IAAUC,KAAM;EAAO;EACf,OAACF,GAAA;AAAA;AACU,IAC5BQ,QAAE,GAAAf,EAAA,CAAAgB,OAAA;EAAA,IAEFC,QAAA,YAAcC,UAAA;IACZ,YAAU;;IACZhB,iBAAA,OAAAgB,SAAA;IACFZ,gBAAA;IAEAA,gBAA8B,CAAC;MAC/Ba,KAAS;QACVC,OAAA;UAEOC,IAAA;QACA;QACNC,SAAO,WAAAA,CAAA;UACF,oBACG;QACR;MACD;MAQDC,OAAW,EAAAvB,EAAA,CAAAwB,EAAA;IAEX,EAAM;IACNlB,gBAAe,eAAe,EAAAN,EAAS,CAAAwB,EAAA,mBAAY;MAE7C;QACJC,MAAA;MACA;IACA;IACAnB,gBAAc,gBAAAN,EAAA,CAAAwB,EAAA;IACflB,gBAAA,cAAAN,EAAA,CAAAwB,EAAA;MAEG;IACA;IAEJlB,gBAAiB,kBAAAN,EAAA,CAAAwB,EAAA;MACf,OAAS;QACTE,OAAY,WAAAA,CAAA,EAAS,CACrB,CAAO;QACRC,QAAA,EAAAC,OAAA,CAAAC,OAAA;MAED;IACE,EAAI;IACLC,SAAA,CAAAC,IAAA;EAED;EACE,IAAAD,SAAO,KAAW;EAClB,OAAM;IACJb,QAAM;IAAAa;EAGJ;AAEF;AAAsB9B,EACxB,CAACgC,IAAA,mCAAAC,cAAA;EACH,IAAAC,MAAA,SAAAD,cAAA;EAEA,OAAK;IACH,GAAAC,MAAM;IACNC,IAAM,EAAApB,QAAQ,CAAAE;EACd;AAEA;AACAmB,UAAM,CAAAC,wBAAgB;AACpB,IAAAC,SAAM,GAAA7C,KAAW,SAAA8C,OAAA;EACnBC,EAAC,EAAAhD,MAAA;EAEDiD,IAAA,EAAAjD,MAAO;AACP,GAAAkD,UAAO,KAAO;AAEd,IAAAC,MAAI,GAAMpD,YAAM,CAAQ;EACxBqD,MAAM,GAENN,SAAO;AAET,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","createSchema","string","table","act","createRoot","afterEach","beforeEach","expect","test","vi","createZeroClient","_class_call_check","instance","Constructor","TypeError","_define_property","obj","key","value","Object","defineProperty","enumerable","configurable","writable","fakeZero","hoisted","FakeZero","FakeZero2","state","current","name","subscribe","connect","fn","errors","cleanup","complete","Promise","resolve","instances","push","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","noteTable","columns","id","body","primaryKey","schema","tables","client","models","groupedQueries","instanceName","container","root","length","document","createElement","unmount","mount","render","ProvideZero","cacheURL","userID","children","first","toBeDefined","deleteZero","zero","delete","toHaveBeenCalledTimes","close","toHaveLength","not","toBe"],"sources":["../../src/createZeroClient.recovery.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  const RECOVER_GUARD_MS = 6e4;
2
+ const RELOAD_LATCH_TIMEOUT_MS = 15e3;
2
3
  const LOCAL_STORE_LOST = "Expected IndexedDB not found";
3
4
  const SQLITE_ERROR_NAME = "SqliteError";
4
5
  const SQLITE_STATEMENT_FINALIZED = "This statement has been finalized";
@@ -6,26 +7,69 @@ const STORE_CLOSED = "Store is closed";
6
7
  const STORE_CLOSED_REPEAT_MIN_MS = 2e3;
7
8
  const STORE_CLOSED_REPEAT_MAX_MS = 6e4;
8
9
  let reloadScheduled = false;
10
+ let reloadInProgress = false;
11
+ let reloadLatchTimer;
9
12
  const pendingDeletes = [];
10
- function recoveryGuardOpen(reasonKey) {
13
+ const inMemoryGuard = /* @__PURE__ */new Map();
14
+ function defaultGuardStorage() {
11
15
  try {
12
- const key = `on-zero-recover-${reasonKey}`;
13
- const rawLast = window.sessionStorage.getItem(key);
14
- const now = Date.now();
15
- const last = rawLast ? Number(rawLast) : 0;
16
- if (last > 0 && now - last < RECOVER_GUARD_MS) return false;
17
- window.sessionStorage.setItem(key, String(now));
18
- } catch {}
16
+ if (typeof window === "undefined" || !window.sessionStorage) return void 0;
17
+ return window.sessionStorage;
18
+ } catch {
19
+ return void 0;
20
+ }
21
+ }
22
+ function recoveryGuardOpen(reasonKey, guardStorage) {
23
+ const key = `on-zero-recover-${reasonKey}`;
24
+ const now = Date.now();
25
+ const memLast = inMemoryGuard.get(key) ?? 0;
26
+ if (memLast > 0 && now - memLast < RECOVER_GUARD_MS) return false;
27
+ const storage = guardStorage ?? defaultGuardStorage();
28
+ if (storage) {
29
+ try {
30
+ const rawLast = storage.getItem(key);
31
+ const last = rawLast ? Number(rawLast) : 0;
32
+ if (last > 0 && now - last < RECOVER_GUARD_MS) return false;
33
+ storage.setItem(key, String(now));
34
+ } catch {}
35
+ }
36
+ inMemoryGuard.set(key, now);
19
37
  return true;
20
38
  }
21
39
  let lastStoreClosedAtMs = 0;
40
+ function armReloadLatchTimeout() {
41
+ if (typeof setTimeout !== "function") return;
42
+ if (reloadLatchTimer) clearTimeout(reloadLatchTimer);
43
+ reloadLatchTimer = setTimeout(() => {
44
+ reloadLatchTimer = void 0;
45
+ reloadScheduled = false;
46
+ }, RELOAD_LATCH_TIMEOUT_MS);
47
+ if (reloadLatchTimer && typeof reloadLatchTimer === "object" && "unref" in reloadLatchTimer) {
48
+ reloadLatchTimer.unref();
49
+ }
50
+ }
51
+ function disarmReloadLatchTimeout() {
52
+ if (reloadLatchTimer) {
53
+ clearTimeout(reloadLatchTimer);
54
+ reloadLatchTimer = void 0;
55
+ }
56
+ }
57
+ function performReload(deps) {
58
+ if (reloadInProgress) return Promise.resolve();
59
+ reloadInProgress = true;
60
+ disarmReloadLatchTimeout();
61
+ const doReload = deps.reload ?? (() => globalThis.location?.reload?.());
62
+ return Promise.resolve().then(() => Promise.allSettled(pendingDeletes.splice(0).map(run => run()))).then(() => deps.beforeReload?.()).catch(() => {}).then(() => {
63
+ doReload();
64
+ });
65
+ }
22
66
  function recover(deps, reasonKey, message, dropLocalState) {
23
67
  if (typeof window === "undefined") return;
24
68
  if (dropLocalState) {
25
- pendingDeletes.push(Promise.resolve().then(deps.deleteLocalState).catch(() => {}));
69
+ pendingDeletes.push(() => Promise.resolve().then(deps.deleteLocalState));
26
70
  }
27
71
  if (reloadScheduled) return;
28
- if (!recoveryGuardOpen(reasonKey)) {
72
+ if (!recoveryGuardOpen(reasonKey, deps.guardStorage)) {
29
73
  console.error(`[on-zero] ${message} \u2014 already recovered once, not reloading`);
30
74
  deps.zeroEvents.emit({
31
75
  type: "fatal",
@@ -34,13 +78,23 @@ function recover(deps, reasonKey, message, dropLocalState) {
34
78
  return;
35
79
  }
36
80
  reloadScheduled = true;
81
+ armReloadLatchTimeout();
37
82
  console.warn(`[on-zero] ${message} \u2014 recovering`);
38
83
  deps.zeroEvents.emit({
39
84
  type: "recovering",
40
85
  reason: message
41
86
  });
42
- const doReload = deps.reload ?? (() => globalThis.location?.reload?.());
43
- Promise.resolve().then(() => Promise.allSettled(pendingDeletes)).then(() => deps.beforeReload?.()).catch(() => {}).finally(doReload);
87
+ const runReload = () => performReload(deps);
88
+ if (deps.scheduleReload) {
89
+ deps.scheduleReload({
90
+ reason: message,
91
+ reasonKey,
92
+ dropLocalState,
93
+ performReload: runReload
94
+ });
95
+ } else {
96
+ void runReload();
97
+ }
44
98
  }
45
99
  function makeZeroRecovery(deps) {
46
100
  return {
@@ -73,6 +127,58 @@ function isBenignStoreClosedLog(text) {
73
127
  if (/Mutator\s+".*"\s+app error on client/i.test(text)) return true;
74
128
  return false;
75
129
  }
130
+ function classifyMutationDesync(text) {
131
+ if (text.includes("sent mutation ID") && text.includes("but expected")) {
132
+ return {
133
+ reason: "mutation-desync",
134
+ reasonKey: "mutation-desync",
135
+ message: "mutation id desync"
136
+ };
137
+ }
138
+ if (text.includes("oooMutation") || text.includes("Server reported an out-of-order mutation")) {
139
+ return {
140
+ reason: "mutation-desync",
141
+ reasonKey: "mutation-desync",
142
+ message: "out-of-order mutation"
143
+ };
144
+ }
145
+ if (text.includes("already processed")) {
146
+ return {
147
+ reason: "mutation-desync",
148
+ reasonKey: "mutation-desync",
149
+ message: "mutation already processed"
150
+ };
151
+ }
152
+ if (text.includes("InvalidConnectionRequestLastMutationID")) {
153
+ return {
154
+ reason: "mutation-desync",
155
+ reasonKey: "mutation-desync",
156
+ message: "invalid connection last mutation id"
157
+ };
158
+ }
159
+ if (text.includes("InvalidConnectionRequestBaseCookie")) {
160
+ return {
161
+ reason: "connection-cookie-invalid",
162
+ reasonKey: "connection-cookie-invalid",
163
+ message: "invalid connection base cookie"
164
+ };
165
+ }
166
+ if (text.includes("ClientNotFound") || text.includes("Client not found")) {
167
+ return {
168
+ reason: "client-not-found",
169
+ reasonKey: "client-not-found",
170
+ message: "client not found"
171
+ };
172
+ }
173
+ if (text.includes("connection userID mismatch")) {
174
+ return {
175
+ reason: "connection-userid-mismatch",
176
+ reasonKey: "connection-userid-mismatch",
177
+ message: "connection user id mismatch"
178
+ };
179
+ }
180
+ return void 0;
181
+ }
76
182
  function classifyZeroRecoveryLog(level, args, nowMs = Date.now()) {
77
183
  if (level !== "error") return void 0;
78
184
  const text = args.map(logArgText).join(" ");
@@ -92,6 +198,13 @@ function classifyZeroRecoveryLog(level, args, nowMs = Date.now()) {
92
198
  dropLocalState: true
93
199
  };
94
200
  }
201
+ const desync = classifyMutationDesync(text);
202
+ if (desync) {
203
+ return {
204
+ ...desync,
205
+ dropLocalState: true
206
+ };
207
+ }
95
208
  if (text.includes(STORE_CLOSED) && !isBenignStoreClosedLog(text)) {
96
209
  const prevMs = lastStoreClosedAtMs;
97
210
  lastStoreClosedAtMs = nowMs;
@@ -112,19 +225,31 @@ function composeRecoveryLogSink(deps, consumerLogSink) {
112
225
  log(level, context, ...args) {
113
226
  if (consumerLogSink) consumerLogSink.log(level, context, ...args);else logToConsole(level, context, ...args);
114
227
  const recovery = classifyZeroRecoveryLog(level, args);
115
- if (recovery) {
116
- recover(deps, recovery.reasonKey, recovery.message, recovery.dropLocalState);
228
+ if (!recovery) return;
229
+ if (deps.benignLogFilter) {
230
+ const text = args.map(logArgText).join(" ");
231
+ if (deps.benignLogFilter(text)) return;
117
232
  }
233
+ recover(deps, recovery.reasonKey, recovery.message, recovery.dropLocalState);
118
234
  },
119
235
  // call through the consumer sink so a class-based sink keeps its `this`,
120
236
  // rather than handing Zero a detached method reference.
121
237
  flush: consumerFlush ? () => consumerFlush.call(consumerLogSink) : void 0
122
238
  };
123
239
  }
240
+ function isRecoverableZeroStalePokeMessage(message) {
241
+ return message.includes("Server returned unexpected base cookie during sync") || message.includes("Received cookie") && message.includes("is < than last snapshot cookie") && message.includes("ignoring client view");
242
+ }
124
243
  function resetRecoveryStateForTests() {
125
244
  reloadScheduled = false;
245
+ reloadInProgress = false;
246
+ if (reloadLatchTimer) {
247
+ clearTimeout(reloadLatchTimer);
248
+ reloadLatchTimer = void 0;
249
+ }
126
250
  pendingDeletes.length = 0;
127
251
  lastStoreClosedAtMs = 0;
252
+ inMemoryGuard.clear();
128
253
  }
129
- export { classifyZeroRecoveryLog, composeRecoveryLogSink, makeZeroRecovery, resetRecoveryStateForTests };
254
+ export { classifyZeroRecoveryLog, composeRecoveryLogSink, isRecoverableZeroStalePokeMessage, makeZeroRecovery, resetRecoveryStateForTests };
130
255
  //# sourceMappingURL=recoverZeroClient.mjs.map