on-zero 0.6.3 → 0.6.5

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 (90) hide show
  1. package/dist/cjs/createZeroClient.cjs +111 -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 +145 -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/multiInstance.test.cjs +12 -0
  23. package/dist/cjs/multiInstance.test.native.js +21 -0
  24. package/dist/cjs/multiInstance.test.native.js.map +1 -1
  25. package/dist/cjs/multiPartition.test.cjs +42 -0
  26. package/dist/cjs/multiPartition.test.native.js +51 -0
  27. package/dist/cjs/multiPartition.test.native.js.map +1 -0
  28. package/dist/esm/createZeroClient.connection.test.mjs +164 -0
  29. package/dist/esm/createZeroClient.connection.test.mjs.map +1 -0
  30. package/dist/esm/createZeroClient.connection.test.native.js +240 -0
  31. package/dist/esm/createZeroClient.connection.test.native.js.map +1 -0
  32. package/dist/esm/createZeroClient.mjs +112 -13
  33. package/dist/esm/createZeroClient.mjs.map +1 -1
  34. package/dist/esm/createZeroClient.native.js +146 -13
  35. package/dist/esm/createZeroClient.native.js.map +1 -1
  36. package/dist/esm/createZeroClient.recovery.test.mjs +52 -0
  37. package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
  38. package/dist/esm/createZeroClient.recovery.test.native.js +52 -0
  39. package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
  40. package/dist/esm/helpers/recoverZeroClient.mjs +140 -15
  41. package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
  42. package/dist/esm/helpers/recoverZeroClient.native.js +155 -23
  43. package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
  44. package/dist/esm/helpers/recoverZeroClient.test.mjs +182 -1
  45. package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
  46. package/dist/esm/helpers/recoverZeroClient.test.native.js +210 -1
  47. package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
  48. package/dist/esm/index.js +2 -2
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/index.mjs +2 -2
  51. package/dist/esm/index.mjs.map +1 -1
  52. package/dist/esm/index.native.js +2 -2
  53. package/dist/esm/index.native.js.map +1 -1
  54. package/dist/esm/multi.mjs +13 -1
  55. package/dist/esm/multi.mjs.map +1 -1
  56. package/dist/esm/multi.native.js +35 -1
  57. package/dist/esm/multi.native.js.map +1 -1
  58. package/dist/esm/multiInstance.test.mjs +12 -0
  59. package/dist/esm/multiInstance.test.mjs.map +1 -1
  60. package/dist/esm/multiInstance.test.native.js +21 -0
  61. package/dist/esm/multiInstance.test.native.js.map +1 -1
  62. package/dist/esm/multiPartition.test.mjs +43 -0
  63. package/dist/esm/multiPartition.test.mjs.map +1 -0
  64. package/dist/esm/multiPartition.test.native.js +49 -0
  65. package/dist/esm/multiPartition.test.native.js.map +1 -0
  66. package/lint/ssr-guards.js +164 -0
  67. package/package.json +2 -2
  68. package/readme.md +126 -0
  69. package/src/createZeroClient.connection.test.tsx +162 -0
  70. package/src/createZeroClient.recovery.test.tsx +68 -0
  71. package/src/createZeroClient.tsx +188 -13
  72. package/src/helpers/recoverZeroClient.test.ts +204 -1
  73. package/src/helpers/recoverZeroClient.ts +263 -42
  74. package/src/index.ts +3 -0
  75. package/src/multi.ts +33 -0
  76. package/src/multiInstance.test.tsx +13 -0
  77. package/src/multiPartition.test.ts +38 -0
  78. package/types/createZeroClient.connection.test.d.ts +5 -0
  79. package/types/createZeroClient.connection.test.d.ts.map +1 -0
  80. package/types/createZeroClient.d.ts +17 -0
  81. package/types/createZeroClient.d.ts.map +1 -1
  82. package/types/createZeroServer.d.ts +4 -4
  83. package/types/helpers/recoverZeroClient.d.ts +15 -1
  84. package/types/helpers/recoverZeroClient.d.ts.map +1 -1
  85. package/types/index.d.ts +1 -1
  86. package/types/index.d.ts.map +1 -1
  87. package/types/multi.d.ts +1 -0
  88. package/types/multi.d.ts.map +1 -1
  89. package/types/multiPartition.test.d.ts +2 -0
  90. package/types/multiPartition.test.d.ts.map +1 -0
@@ -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":"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","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
@@ -1 +1 @@
1
- {"version":3,"names":["RECOVER_GUARD_MS","LOCAL_STORE_LOST","SQLITE_ERROR_NAME","SQLITE_STATEMENT_FINALIZED","STORE_CLOSED","STORE_CLOSED_REPEAT_MIN_MS","STORE_CLOSED_REPEAT_MAX_MS","reloadScheduled","pendingDeletes","recoveryGuardOpen","reasonKey","key","rawLast","window","sessionStorage","getItem","now","Date","last","Number","setItem","String","lastStoreClosedAtMs","recover","deps","message","dropLocalState","push","Promise","resolve","then","deleteLocalState","catch","console","error","zeroEvents","emit","type","reason","warn","doReload","reload","globalThis","location","allSettled","beforeReload","finally","makeZeroRecovery","onUpdateNeeded","onClientStateNotFound","logToConsole","level","context","args","prefix","Object","entries","map","value","join","method","logArgText","arg","Error","name","stack","isBenignStoreClosedLog","text","test","classifyZeroRecoveryLog","nowMs","includes","prevMs","composeRecoveryLogSink","consumerLogSink","consumerFlush","flush","log","recovery","call","resetRecoveryStateForTests","length"],"sources":["../../../src/helpers/recoverZeroClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["RECOVER_GUARD_MS","RELOAD_LATCH_TIMEOUT_MS","LOCAL_STORE_LOST","SQLITE_ERROR_NAME","SQLITE_STATEMENT_FINALIZED","STORE_CLOSED","STORE_CLOSED_REPEAT_MIN_MS","STORE_CLOSED_REPEAT_MAX_MS","reloadScheduled","reloadInProgress","reloadLatchTimer","pendingDeletes","inMemoryGuard","Map","defaultGuardStorage","window","sessionStorage","recoveryGuardOpen","reasonKey","guardStorage","key","now","Date","memLast","get","storage","rawLast","getItem","last","Number","setItem","String","set","lastStoreClosedAtMs","armReloadLatchTimeout","setTimeout","clearTimeout","unref","disarmReloadLatchTimeout","performReload","deps","Promise","resolve","doReload","reload","globalThis","location","then","allSettled","splice","map","run","beforeReload","catch","recover","message","dropLocalState","push","deleteLocalState","console","error","zeroEvents","emit","type","reason","warn","runReload","scheduleReload","makeZeroRecovery","onUpdateNeeded","onClientStateNotFound","logToConsole","level","context","args","prefix","Object","entries","value","join","method","logArgText","arg","Error","name","stack","isBenignStoreClosedLog","text","test","classifyMutationDesync","includes","classifyZeroRecoveryLog","nowMs","desync","prevMs","composeRecoveryLogSink","consumerLogSink","consumerFlush","flush","log","recovery","benignLogFilter","call","isRecoverableZeroStalePokeMessage","resetRecoveryStateForTests","length","clear"],"sources":["../../../src/helpers/recoverZeroClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}