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.
- package/dist/cjs/createZeroClient.cjs +111 -12
- package/dist/cjs/createZeroClient.connection.test.cjs +163 -0
- package/dist/cjs/createZeroClient.connection.test.native.js +242 -0
- package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -0
- package/dist/cjs/createZeroClient.native.js +145 -12
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroClient.recovery.test.cjs +52 -0
- package/dist/cjs/createZeroClient.recovery.test.native.js +52 -0
- package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.cjs +140 -14
- package/dist/cjs/helpers/recoverZeroClient.native.js +155 -22
- package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.test.cjs +181 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js +209 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/multi.cjs +13 -0
- package/dist/cjs/multi.native.js +35 -0
- package/dist/cjs/multi.native.js.map +1 -1
- package/dist/cjs/multiInstance.test.cjs +12 -0
- package/dist/cjs/multiInstance.test.native.js +21 -0
- package/dist/cjs/multiInstance.test.native.js.map +1 -1
- package/dist/cjs/multiPartition.test.cjs +42 -0
- package/dist/cjs/multiPartition.test.native.js +51 -0
- package/dist/cjs/multiPartition.test.native.js.map +1 -0
- package/dist/esm/createZeroClient.connection.test.mjs +164 -0
- package/dist/esm/createZeroClient.connection.test.mjs.map +1 -0
- package/dist/esm/createZeroClient.connection.test.native.js +240 -0
- package/dist/esm/createZeroClient.connection.test.native.js.map +1 -0
- package/dist/esm/createZeroClient.mjs +112 -13
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +146 -13
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.mjs +52 -0
- package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.native.js +52 -0
- package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs +140 -15
- package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.native.js +155 -23
- package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs +182 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js +210 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/multi.mjs +13 -1
- package/dist/esm/multi.mjs.map +1 -1
- package/dist/esm/multi.native.js +35 -1
- package/dist/esm/multi.native.js.map +1 -1
- package/dist/esm/multiInstance.test.mjs +12 -0
- package/dist/esm/multiInstance.test.mjs.map +1 -1
- package/dist/esm/multiInstance.test.native.js +21 -0
- package/dist/esm/multiInstance.test.native.js.map +1 -1
- package/dist/esm/multiPartition.test.mjs +43 -0
- package/dist/esm/multiPartition.test.mjs.map +1 -0
- package/dist/esm/multiPartition.test.native.js +49 -0
- package/dist/esm/multiPartition.test.native.js.map +1 -0
- package/lint/ssr-guards.js +164 -0
- package/package.json +2 -2
- package/readme.md +126 -0
- package/src/createZeroClient.connection.test.tsx +162 -0
- package/src/createZeroClient.recovery.test.tsx +68 -0
- package/src/createZeroClient.tsx +188 -13
- package/src/helpers/recoverZeroClient.test.ts +204 -1
- package/src/helpers/recoverZeroClient.ts +263 -42
- package/src/index.ts +3 -0
- package/src/multi.ts +33 -0
- package/src/multiInstance.test.tsx +13 -0
- package/src/multiPartition.test.ts +38 -0
- package/types/createZeroClient.connection.test.d.ts +5 -0
- package/types/createZeroClient.connection.test.d.ts.map +1 -0
- package/types/createZeroClient.d.ts +17 -0
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/createZeroServer.d.ts +4 -4
- package/types/helpers/recoverZeroClient.d.ts +15 -1
- package/types/helpers/recoverZeroClient.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/multi.d.ts +1 -0
- package/types/multi.d.ts.map +1 -1
- package/types/multiPartition.test.d.ts +2 -0
- package/types/multiPartition.test.d.ts.map +1 -0
|
@@ -289,4 +289,185 @@ async function flush() {
|
|
|
289
289
|
reason: "client state not found"
|
|
290
290
|
});
|
|
291
291
|
});
|
|
292
|
+
(0, import_vitest.test)("scheduleReload defers the reload AND the store delete until performReload runs", async () => {
|
|
293
|
+
const {
|
|
294
|
+
deps,
|
|
295
|
+
deleteLocalState,
|
|
296
|
+
reload
|
|
297
|
+
} = setup();
|
|
298
|
+
let captured;
|
|
299
|
+
deps.scheduleReload = ctx => {
|
|
300
|
+
captured = ctx;
|
|
301
|
+
};
|
|
302
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
303
|
+
await flush();
|
|
304
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
305
|
+
(0, import_vitest.expect)(deleteLocalState).not.toHaveBeenCalled();
|
|
306
|
+
(0, import_vitest.expect)(captured).toMatchObject({
|
|
307
|
+
reasonKey: "client-state-not-found",
|
|
308
|
+
dropLocalState: true
|
|
309
|
+
});
|
|
310
|
+
await captured.performReload();
|
|
311
|
+
await flush();
|
|
312
|
+
(0, import_vitest.expect)(deleteLocalState).toHaveBeenCalledTimes(1);
|
|
313
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
314
|
+
});
|
|
315
|
+
(0, import_vitest.test)("scheduleReload that reloads directly skips the delete and beforeReload", async () => {
|
|
316
|
+
const {
|
|
317
|
+
deps,
|
|
318
|
+
deleteLocalState,
|
|
319
|
+
reload
|
|
320
|
+
} = setup();
|
|
321
|
+
const nativeReload = import_vitest.vi.fn();
|
|
322
|
+
const beforeReload = import_vitest.vi.fn(async () => {});
|
|
323
|
+
deps.beforeReload = beforeReload;
|
|
324
|
+
deps.scheduleReload = () => {
|
|
325
|
+
nativeReload();
|
|
326
|
+
};
|
|
327
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
328
|
+
await flush();
|
|
329
|
+
(0, import_vitest.expect)(nativeReload).toHaveBeenCalledTimes(1);
|
|
330
|
+
(0, import_vitest.expect)(deleteLocalState).not.toHaveBeenCalled();
|
|
331
|
+
(0, import_vitest.expect)(beforeReload).not.toHaveBeenCalled();
|
|
332
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
333
|
+
});
|
|
334
|
+
(0, import_vitest.test)("scheduleReload performReload is idempotent (one reload even if called twice)", async () => {
|
|
335
|
+
const {
|
|
336
|
+
deps,
|
|
337
|
+
deleteLocalState,
|
|
338
|
+
reload
|
|
339
|
+
} = setup();
|
|
340
|
+
let captured;
|
|
341
|
+
deps.scheduleReload = ctx => {
|
|
342
|
+
captured = ctx;
|
|
343
|
+
};
|
|
344
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
345
|
+
await flush();
|
|
346
|
+
await captured.performReload();
|
|
347
|
+
await captured.performReload();
|
|
348
|
+
await flush();
|
|
349
|
+
(0, import_vitest.expect)(deleteLocalState).toHaveBeenCalledTimes(1);
|
|
350
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
351
|
+
});
|
|
352
|
+
(0, import_vitest.test)("scheduleReload deferred PAST the latch timeout still deletes and reloads exactly once", async () => {
|
|
353
|
+
import_vitest.vi.useFakeTimers();
|
|
354
|
+
try {
|
|
355
|
+
const {
|
|
356
|
+
deps,
|
|
357
|
+
deleteLocalState,
|
|
358
|
+
reload
|
|
359
|
+
} = setup();
|
|
360
|
+
let captured;
|
|
361
|
+
deps.scheduleReload = ctx => {
|
|
362
|
+
captured = ctx;
|
|
363
|
+
};
|
|
364
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
365
|
+
(0, import_vitest.expect)(captured).toBeDefined();
|
|
366
|
+
await import_vitest.vi.advanceTimersByTimeAsync(2e4);
|
|
367
|
+
(0, import_vitest.expect)(deleteLocalState).not.toHaveBeenCalled();
|
|
368
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
369
|
+
await captured.performReload();
|
|
370
|
+
(0, import_vitest.expect)(deleteLocalState).toHaveBeenCalledTimes(1);
|
|
371
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
372
|
+
} finally {
|
|
373
|
+
import_vitest.vi.useRealTimers();
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
(0, import_vitest.test)("a slow beforeReload holds the latch through the timeout window (no double reload)", async () => {
|
|
377
|
+
import_vitest.vi.useFakeTimers();
|
|
378
|
+
try {
|
|
379
|
+
const {
|
|
380
|
+
deps,
|
|
381
|
+
reload
|
|
382
|
+
} = setup();
|
|
383
|
+
let releaseBeforeReload = () => {};
|
|
384
|
+
deps.beforeReload = () => new Promise(resolve => {
|
|
385
|
+
releaseBeforeReload = resolve;
|
|
386
|
+
});
|
|
387
|
+
const recovery = (0, import_recoverZeroClient.makeZeroRecovery)(deps);
|
|
388
|
+
recovery.onClientStateNotFound();
|
|
389
|
+
await import_vitest.vi.advanceTimersByTimeAsync(2e4);
|
|
390
|
+
recovery.onClientStateNotFound();
|
|
391
|
+
await import_vitest.vi.advanceTimersByTimeAsync(0);
|
|
392
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
393
|
+
releaseBeforeReload();
|
|
394
|
+
await import_vitest.vi.advanceTimersByTimeAsync(0);
|
|
395
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
396
|
+
} finally {
|
|
397
|
+
import_vitest.vi.useRealTimers();
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
(0, import_vitest.test)("injectable guardStorage gives cross-reload loop protection (Hermes has no sessionStorage)", async () => {
|
|
401
|
+
const store = /* @__PURE__ */new Map();
|
|
402
|
+
const {
|
|
403
|
+
deps,
|
|
404
|
+
reload,
|
|
405
|
+
events
|
|
406
|
+
} = setup();
|
|
407
|
+
deps.guardStorage = {
|
|
408
|
+
getItem: key => store.get(key) ?? null,
|
|
409
|
+
setItem: (key, value) => {
|
|
410
|
+
store.set(key, value);
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
const recovery = (0, import_recoverZeroClient.makeZeroRecovery)(deps);
|
|
414
|
+
recovery.onClientStateNotFound();
|
|
415
|
+
await flush();
|
|
416
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
417
|
+
(0, import_recoverZeroClient.resetRecoveryStateForTests)();
|
|
418
|
+
recovery.onClientStateNotFound();
|
|
419
|
+
await flush();
|
|
420
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
421
|
+
(0, import_vitest.expect)(events.some(event => event.type === "fatal")).toBe(true);
|
|
422
|
+
});
|
|
423
|
+
(0, import_vitest.test)("a guardStorage that throws never crashes recovery (in-memory is the floor)", async () => {
|
|
424
|
+
const {
|
|
425
|
+
deps,
|
|
426
|
+
reload
|
|
427
|
+
} = setup();
|
|
428
|
+
deps.guardStorage = {
|
|
429
|
+
getItem: () => {
|
|
430
|
+
throw new Error("no storage on this platform");
|
|
431
|
+
},
|
|
432
|
+
setItem: () => {
|
|
433
|
+
throw new Error("no storage on this platform");
|
|
434
|
+
}
|
|
435
|
+
};
|
|
436
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
437
|
+
await flush();
|
|
438
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
439
|
+
});
|
|
440
|
+
(0, import_vitest.test)("classifier recognizes the mutation / connection desync class", () => {
|
|
441
|
+
const cases = [[["sent mutation ID 5 but expected 4"], "mutation-desync"], [["oooMutation detected"], "mutation-desync"], [["Server reported an out-of-order mutation"], "mutation-desync"], [["Ignoring mutation 3, already processed. Expected: 4"], "mutation-desync"], [["InvalidConnectionRequestLastMutationID"], "mutation-desync"], [["InvalidConnectionRequestBaseCookie"], "connection-cookie-invalid"], [["ClientNotFound: client gone"], "client-not-found"], [["connection userID mismatch"], "connection-userid-mismatch"]];
|
|
442
|
+
for (const [args, reason] of cases) {
|
|
443
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.classifyZeroRecoveryLog)("error", args)).toMatchObject({
|
|
444
|
+
reason,
|
|
445
|
+
dropLocalState: true
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.classifyZeroRecoveryLog)("error", ["consecutive server-ack timeouts"])).toBeUndefined();
|
|
449
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.classifyZeroRecoveryLog)("error", ["Connection attempt timed out after 10 seconds"])).toBeUndefined();
|
|
450
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.classifyZeroRecoveryLog)("warn", ["ClientNotFound"])).toBeUndefined();
|
|
451
|
+
});
|
|
452
|
+
(0, import_vitest.test)("benignLogFilter suppresses recovery for a matching classified log", async () => {
|
|
453
|
+
const {
|
|
454
|
+
deps,
|
|
455
|
+
deleteLocalState,
|
|
456
|
+
reload
|
|
457
|
+
} = setup();
|
|
458
|
+
deps.benignLogFilter = message => message.includes("ClientNotFound");
|
|
459
|
+
const sink = (0, import_recoverZeroClient.composeRecoveryLogSink)(deps);
|
|
460
|
+
sink.log("error", void 0, "ClientNotFound: gone");
|
|
461
|
+
await flush();
|
|
462
|
+
(0, import_vitest.expect)(deleteLocalState).not.toHaveBeenCalled();
|
|
463
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
464
|
+
sink.log("error", void 0, "sent mutation ID 5 but expected 4");
|
|
465
|
+
await flush();
|
|
466
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
467
|
+
});
|
|
468
|
+
(0, import_vitest.test)("isRecoverableZeroStalePokeMessage matches only the stale-cookie signatures", () => {
|
|
469
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)("Server returned unexpected base cookie during sync")).toBe(true);
|
|
470
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)("Received cookie 5 is < than last snapshot cookie 9, ignoring client view")).toBe(true);
|
|
471
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)("client state not found")).toBe(false);
|
|
472
|
+
});
|
|
292
473
|
});
|
|
@@ -345,5 +345,214 @@ async function flush() {
|
|
|
345
345
|
reason: "client state not found"
|
|
346
346
|
});
|
|
347
347
|
});
|
|
348
|
+
(0, import_vitest.test)("scheduleReload defers the reload AND the store delete until performReload runs", async function () {
|
|
349
|
+
var {
|
|
350
|
+
deps,
|
|
351
|
+
deleteLocalState,
|
|
352
|
+
reload
|
|
353
|
+
} = setup();
|
|
354
|
+
var captured;
|
|
355
|
+
deps.scheduleReload = function (ctx) {
|
|
356
|
+
captured = ctx;
|
|
357
|
+
};
|
|
358
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
359
|
+
await flush();
|
|
360
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
361
|
+
(0, import_vitest.expect)(deleteLocalState).not.toHaveBeenCalled();
|
|
362
|
+
(0, import_vitest.expect)(captured).toMatchObject({
|
|
363
|
+
reasonKey: "client-state-not-found",
|
|
364
|
+
dropLocalState: true
|
|
365
|
+
});
|
|
366
|
+
await captured.performReload();
|
|
367
|
+
await flush();
|
|
368
|
+
(0, import_vitest.expect)(deleteLocalState).toHaveBeenCalledTimes(1);
|
|
369
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
370
|
+
});
|
|
371
|
+
(0, import_vitest.test)("scheduleReload that reloads directly skips the delete and beforeReload", async function () {
|
|
372
|
+
var {
|
|
373
|
+
deps,
|
|
374
|
+
deleteLocalState,
|
|
375
|
+
reload
|
|
376
|
+
} = setup();
|
|
377
|
+
var nativeReload = import_vitest.vi.fn();
|
|
378
|
+
var beforeReload = import_vitest.vi.fn(async function () {});
|
|
379
|
+
deps.beforeReload = beforeReload;
|
|
380
|
+
deps.scheduleReload = function () {
|
|
381
|
+
nativeReload();
|
|
382
|
+
};
|
|
383
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
384
|
+
await flush();
|
|
385
|
+
(0, import_vitest.expect)(nativeReload).toHaveBeenCalledTimes(1);
|
|
386
|
+
(0, import_vitest.expect)(deleteLocalState).not.toHaveBeenCalled();
|
|
387
|
+
(0, import_vitest.expect)(beforeReload).not.toHaveBeenCalled();
|
|
388
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
389
|
+
});
|
|
390
|
+
(0, import_vitest.test)("scheduleReload performReload is idempotent (one reload even if called twice)", async function () {
|
|
391
|
+
var {
|
|
392
|
+
deps,
|
|
393
|
+
deleteLocalState,
|
|
394
|
+
reload
|
|
395
|
+
} = setup();
|
|
396
|
+
var captured;
|
|
397
|
+
deps.scheduleReload = function (ctx) {
|
|
398
|
+
captured = ctx;
|
|
399
|
+
};
|
|
400
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
401
|
+
await flush();
|
|
402
|
+
await captured.performReload();
|
|
403
|
+
await captured.performReload();
|
|
404
|
+
await flush();
|
|
405
|
+
(0, import_vitest.expect)(deleteLocalState).toHaveBeenCalledTimes(1);
|
|
406
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
407
|
+
});
|
|
408
|
+
(0, import_vitest.test)("scheduleReload deferred PAST the latch timeout still deletes and reloads exactly once", async function () {
|
|
409
|
+
import_vitest.vi.useFakeTimers();
|
|
410
|
+
try {
|
|
411
|
+
var {
|
|
412
|
+
deps,
|
|
413
|
+
deleteLocalState,
|
|
414
|
+
reload
|
|
415
|
+
} = setup();
|
|
416
|
+
var captured;
|
|
417
|
+
deps.scheduleReload = function (ctx) {
|
|
418
|
+
captured = ctx;
|
|
419
|
+
};
|
|
420
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
421
|
+
(0, import_vitest.expect)(captured).toBeDefined();
|
|
422
|
+
await import_vitest.vi.advanceTimersByTimeAsync(2e4);
|
|
423
|
+
(0, import_vitest.expect)(deleteLocalState).not.toHaveBeenCalled();
|
|
424
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
425
|
+
await captured.performReload();
|
|
426
|
+
(0, import_vitest.expect)(deleteLocalState).toHaveBeenCalledTimes(1);
|
|
427
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
428
|
+
} finally {
|
|
429
|
+
import_vitest.vi.useRealTimers();
|
|
430
|
+
}
|
|
431
|
+
});
|
|
432
|
+
(0, import_vitest.test)("a slow beforeReload holds the latch through the timeout window (no double reload)", async function () {
|
|
433
|
+
import_vitest.vi.useFakeTimers();
|
|
434
|
+
try {
|
|
435
|
+
var {
|
|
436
|
+
deps,
|
|
437
|
+
reload
|
|
438
|
+
} = setup();
|
|
439
|
+
var releaseBeforeReload = function () {};
|
|
440
|
+
deps.beforeReload = function () {
|
|
441
|
+
return new Promise(function (resolve) {
|
|
442
|
+
releaseBeforeReload = resolve;
|
|
443
|
+
});
|
|
444
|
+
};
|
|
445
|
+
var recovery = (0, import_recoverZeroClient.makeZeroRecovery)(deps);
|
|
446
|
+
recovery.onClientStateNotFound();
|
|
447
|
+
await import_vitest.vi.advanceTimersByTimeAsync(2e4);
|
|
448
|
+
recovery.onClientStateNotFound();
|
|
449
|
+
await import_vitest.vi.advanceTimersByTimeAsync(0);
|
|
450
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
451
|
+
releaseBeforeReload();
|
|
452
|
+
await import_vitest.vi.advanceTimersByTimeAsync(0);
|
|
453
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
454
|
+
} finally {
|
|
455
|
+
import_vitest.vi.useRealTimers();
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
(0, import_vitest.test)("injectable guardStorage gives cross-reload loop protection (Hermes has no sessionStorage)", async function () {
|
|
459
|
+
var store = /* @__PURE__ */new Map();
|
|
460
|
+
var {
|
|
461
|
+
deps,
|
|
462
|
+
reload,
|
|
463
|
+
events
|
|
464
|
+
} = setup();
|
|
465
|
+
deps.guardStorage = {
|
|
466
|
+
getItem: function (key) {
|
|
467
|
+
var _store_get;
|
|
468
|
+
return (_store_get = store.get(key)) !== null && _store_get !== void 0 ? _store_get : null;
|
|
469
|
+
},
|
|
470
|
+
setItem: function (key, value) {
|
|
471
|
+
store.set(key, value);
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
var recovery = (0, import_recoverZeroClient.makeZeroRecovery)(deps);
|
|
475
|
+
recovery.onClientStateNotFound();
|
|
476
|
+
await flush();
|
|
477
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
478
|
+
(0, import_recoverZeroClient.resetRecoveryStateForTests)();
|
|
479
|
+
recovery.onClientStateNotFound();
|
|
480
|
+
await flush();
|
|
481
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
482
|
+
(0, import_vitest.expect)(events.some(function (event) {
|
|
483
|
+
return event.type === "fatal";
|
|
484
|
+
})).toBe(true);
|
|
485
|
+
});
|
|
486
|
+
(0, import_vitest.test)("a guardStorage that throws never crashes recovery (in-memory is the floor)", async function () {
|
|
487
|
+
var {
|
|
488
|
+
deps,
|
|
489
|
+
reload
|
|
490
|
+
} = setup();
|
|
491
|
+
deps.guardStorage = {
|
|
492
|
+
getItem: function () {
|
|
493
|
+
throw new Error("no storage on this platform");
|
|
494
|
+
},
|
|
495
|
+
setItem: function () {
|
|
496
|
+
throw new Error("no storage on this platform");
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(deps).onClientStateNotFound();
|
|
500
|
+
await flush();
|
|
501
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
502
|
+
});
|
|
503
|
+
(0, import_vitest.test)("classifier recognizes the mutation / connection desync class", function () {
|
|
504
|
+
var cases = [[["sent mutation ID 5 but expected 4"], "mutation-desync"], [["oooMutation detected"], "mutation-desync"], [["Server reported an out-of-order mutation"], "mutation-desync"], [["Ignoring mutation 3, already processed. Expected: 4"], "mutation-desync"], [["InvalidConnectionRequestLastMutationID"], "mutation-desync"], [["InvalidConnectionRequestBaseCookie"], "connection-cookie-invalid"], [["ClientNotFound: client gone"], "client-not-found"], [["connection userID mismatch"], "connection-userid-mismatch"]];
|
|
505
|
+
var _iteratorNormalCompletion = true,
|
|
506
|
+
_didIteratorError = false,
|
|
507
|
+
_iteratorError = void 0;
|
|
508
|
+
try {
|
|
509
|
+
for (var _iterator = cases[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
510
|
+
var [args, reason] = _step.value;
|
|
511
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.classifyZeroRecoveryLog)("error", args)).toMatchObject({
|
|
512
|
+
reason,
|
|
513
|
+
dropLocalState: true
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
} catch (err) {
|
|
517
|
+
_didIteratorError = true;
|
|
518
|
+
_iteratorError = err;
|
|
519
|
+
} finally {
|
|
520
|
+
try {
|
|
521
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
522
|
+
_iterator.return();
|
|
523
|
+
}
|
|
524
|
+
} finally {
|
|
525
|
+
if (_didIteratorError) {
|
|
526
|
+
throw _iteratorError;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.classifyZeroRecoveryLog)("error", ["consecutive server-ack timeouts"])).toBeUndefined();
|
|
531
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.classifyZeroRecoveryLog)("error", ["Connection attempt timed out after 10 seconds"])).toBeUndefined();
|
|
532
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.classifyZeroRecoveryLog)("warn", ["ClientNotFound"])).toBeUndefined();
|
|
533
|
+
});
|
|
534
|
+
(0, import_vitest.test)("benignLogFilter suppresses recovery for a matching classified log", async function () {
|
|
535
|
+
var {
|
|
536
|
+
deps,
|
|
537
|
+
deleteLocalState,
|
|
538
|
+
reload
|
|
539
|
+
} = setup();
|
|
540
|
+
deps.benignLogFilter = function (message) {
|
|
541
|
+
return message.includes("ClientNotFound");
|
|
542
|
+
};
|
|
543
|
+
var sink = (0, import_recoverZeroClient.composeRecoveryLogSink)(deps);
|
|
544
|
+
sink.log("error", void 0, "ClientNotFound: gone");
|
|
545
|
+
await flush();
|
|
546
|
+
(0, import_vitest.expect)(deleteLocalState).not.toHaveBeenCalled();
|
|
547
|
+
(0, import_vitest.expect)(reload).not.toHaveBeenCalled();
|
|
548
|
+
sink.log("error", void 0, "sent mutation ID 5 but expected 4");
|
|
549
|
+
await flush();
|
|
550
|
+
(0, import_vitest.expect)(reload).toHaveBeenCalledTimes(1);
|
|
551
|
+
});
|
|
552
|
+
(0, import_vitest.test)("isRecoverableZeroStalePokeMessage matches only the stale-cookie signatures", function () {
|
|
553
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)("Server returned unexpected base cookie during sync")).toBe(true);
|
|
554
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)("Received cookie 5 is < than last snapshot cookie 9, ignoring client view")).toBe(true);
|
|
555
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)("client state not found")).toBe(false);
|
|
556
|
+
});
|
|
348
557
|
});
|
|
349
558
|
//# sourceMappingURL=recoverZeroClient.test.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["import_helpers","require","import_zero","import_vitest","import_recoverZeroClient","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","emitterSeq","setup","events","zeroEvents","createEmitter","listen","event","push","deleteLocalState","vi","fn","Promise","resolve","reload","deps","flush","setTimeout","beforeEach","window","sessionStorage","clear","resetRecoveryStateForTests","describe","test","makeZeroRecovery","onUpdateNeeded","type","UpdateNeededReasonType","SchemaVersionNotSupported","expect","toEqual","reason","stringContaining","toHaveBeenCalledTimes","recovery","NewClientGroup","VersionNotSupported","not","toHaveBeenCalled","onClientStateNotFound","a","b","mock","calls","toBe","filter","some","consumer","log","sink","composeRecoveryLogSink","sqliteError","Error","name","bgIntervalProcess","nowSpy","spyOn","Date","mockReturnValue","mockRestore","infoSpy","console","mockImplementation","worker","toHaveBeenCalledWith","_sink_flush","ClassSink","ClassSink2","flush2","flushed"],"sources":["../../../src/helpers/recoverZeroClient.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["import_helpers","require","import_zero","import_vitest","import_recoverZeroClient","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","emitterSeq","setup","events","zeroEvents","createEmitter","listen","event","push","deleteLocalState","vi","fn","Promise","resolve","reload","deps","flush","setTimeout","beforeEach","window","sessionStorage","clear","resetRecoveryStateForTests","describe","test","makeZeroRecovery","onUpdateNeeded","type","UpdateNeededReasonType","SchemaVersionNotSupported","expect","toEqual","reason","stringContaining","toHaveBeenCalledTimes","recovery","NewClientGroup","VersionNotSupported","not","toHaveBeenCalled","onClientStateNotFound","a","b","mock","calls","toBe","filter","some","consumer","log","sink","composeRecoveryLogSink","sqliteError","Error","name","bgIntervalProcess","nowSpy","spyOn","Date","mockReturnValue","mockRestore","infoSpy","console","mockImplementation","worker","toHaveBeenCalledWith","_sink_flush","ClassSink","ClassSink2","flush2","flushed","call","classifyZeroRecoveryLog","toMatchObject","dropLocalState","message","toBeUndefined","originalLocation","globalThis","location","toContainEqual","captured","scheduleReload","ctx","reasonKey","performReload","nativeReload","beforeReload","useFakeTimers","toBeDefined","advanceTimersByTimeAsync","useRealTimers","releaseBeforeReload"],"sources":["../../../src/helpers/recoverZeroClient.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -31,6 +31,7 @@ __export(index_exports, {
|
|
|
31
31
|
defineQuery: () => import_zero.defineQuery,
|
|
32
32
|
ensureAuth: () => import_getAuth.ensureAuth,
|
|
33
33
|
getAuth: () => import_getAuth.getAuth,
|
|
34
|
+
isRecoverableZeroStalePokeMessage: () => import_recoverZeroClient.isRecoverableZeroStalePokeMessage,
|
|
34
35
|
makeZeroRecovery: () => import_recoverZeroClient.makeZeroRecovery,
|
|
35
36
|
resetShownZeroClientError: () => import_showZeroClientError.resetShownZeroClientError,
|
|
36
37
|
setAuthData: () => import_state.setAuthData,
|
package/dist/cjs/index.native.js
CHANGED
|
@@ -33,6 +33,7 @@ __export(index_exports, {
|
|
|
33
33
|
defineQuery: () => import_zero.defineQuery,
|
|
34
34
|
ensureAuth: () => import_getAuth.ensureAuth,
|
|
35
35
|
getAuth: () => import_getAuth.getAuth,
|
|
36
|
+
isRecoverableZeroStalePokeMessage: () => import_recoverZeroClient.isRecoverableZeroStalePokeMessage,
|
|
36
37
|
makeZeroRecovery: () => import_recoverZeroClient.makeZeroRecovery,
|
|
37
38
|
resetShownZeroClientError: () => import_showZeroClientError.resetShownZeroClientError,
|
|
38
39
|
setAuthData: () => import_state.setAuthData,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","classifyZeroRecoveryLog","import_recoverZeroClient","clearZeroClientData","import_clearZeroClientData","composeRecoveryLogSink","createZeroClient","import_createZeroClient","defineQueries","import_zero","defineQuery","ensureAuth","import_getAuth","getAuth","makeZeroRecovery","resetShownZeroClientError","import_showZeroClientError","setAuthData","import_state","setEnvironment","setRunner","import_zeroRunner","showZeroClientErrorOnce","module","exports","__reExport","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,uBAAA,EAAAA,CAAA,KAAAC,wBAAA,CAAAD,uBAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAC,0BAAA,CAAAD,mBAAA;EAAAE,sBAAA,EAAAA,CAAA,KAAAH,wBAAA,CAAAG,sBAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAC,uBAAA,CAAAD,gBAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAC,WAAA,CAAAD,aAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAD,WAAA,CAAAC,WAAA;EAAAC,UAAA,EAAAA,CAAA,KAAAC,cAAA,CAAAD,UAAA;EAAAE,OAAA,EAAAA,CAAA,KAAAD,cAAA,CAAAC,OAAA;EAAAC,
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","classifyZeroRecoveryLog","import_recoverZeroClient","clearZeroClientData","import_clearZeroClientData","composeRecoveryLogSink","createZeroClient","import_createZeroClient","defineQueries","import_zero","defineQuery","ensureAuth","import_getAuth","getAuth","isRecoverableZeroStalePokeMessage","makeZeroRecovery","resetShownZeroClientError","import_showZeroClientError","setAuthData","import_state","setEnvironment","setRunner","import_zeroRunner","showZeroClientErrorOnce","module","exports","__reExport","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,uBAAA,EAAAA,CAAA,KAAAC,wBAAA,CAAAD,uBAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAC,0BAAA,CAAAD,mBAAA;EAAAE,sBAAA,EAAAA,CAAA,KAAAH,wBAAA,CAAAG,sBAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAC,uBAAA,CAAAD,gBAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAC,WAAA,CAAAD,aAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAD,WAAA,CAAAC,WAAA;EAAAC,UAAA,EAAAA,CAAA,KAAAC,cAAA,CAAAD,UAAA;EAAAE,OAAA,EAAAA,CAAA,KAAAD,cAAA,CAAAC,OAAA;EAAAC,iCAAA,EAAAA,CAAA,KAAAZ,wBAAA,CAAAY,iCAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAb,wBAAA,CAAAa,gBAAA;EAAAC,yBAAA,EAAAA,CAAA,KAAAC,0BAAA,CAAAD,yBAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAC,YAAA,CAAAD,WAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAD,YAAA,CAAAC,cAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAC,iBAAA,CAAAD,SAAA;EAAAE,uBAAA,EAAAA,CAAA,KAAAN,0BAAA,CAAAM;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAA/B,YAAc,CAAAK,aAAA;AACd2B,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,gCADd,GAAAH,MAAA,CAAAC,OAAA;AAEAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,+BAAAH,MAFd,CAAAC,OAAA;AAGAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,oCAAAH,MAHd,CAAAC,OAAA;AAIAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,wCAJdH,MAAA,CAAAC,OAAA;AAKAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,wCALdH,MAAA,CAAAC,OAAA;AAMAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,qCANd,GAAAH,MAAA,CAAAC,OAAA;AAOAC,UAAA,CAAA3B,aAAoC,EAAA4B,OAAA,qCAAAH,MAAA,CAAAC,OAAA;AACpC,IAAAb,cAAA,GAA4Ce,OAAA;AAE5C,IAAAR,YAAA,GAAAQ,OAAA,oBAKO;AACP,IAAApB,uBAAc,GAAAoB,OAAA,+BAhBd;AAiBAD,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,gCAjBd,GAAAH,MAAA,CAAAC,OAAA;AAkBAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,8BAlBd,EAAAH,MAAA,CAAAC,OAAA;AAmBAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,2BAnBd,GAAAH,MAAA,CAAAC,OAAA;AAoBAC,UAAA,CAAA3B,aAA2C,EAAA4B,OAAA,qBAAAH,MAAA,CAAAC,OAAA;AAC3C,IAAAH,iBAAA,GAAAK,OAAc;AACdD,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,wBAtBd,GAAAH,MAAA,CAAAC,OAAA;AAuBAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,uBAAAH,MAvBd,CAAAC,OAAA;AAwBAC,UAAA,CAAA3B,aAAA,EAAc4B,OAAA,0BAxBd,GAAAH,MAAA,CAAAC,OAAA;AAyBAC,UAAA,CAAA3B,aAA2C,EAAA4B,OAAA,qBAAAH,MAAA,CAAAC,OAAA;AAQ3C,IAAAhB,WAAA,GAAAkB,OAAA,iBAGO;AACP,IAAAvB,0BAAA,GAKOuB,OAAA;AACP,IAAAV,0BAAA,GAUOU,OAAA","ignoreList":[]}
|
package/dist/cjs/multi.cjs
CHANGED
|
@@ -23,6 +23,7 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
23
23
|
}), mod);
|
|
24
24
|
var multi_exports = {};
|
|
25
25
|
__export(multi_exports, {
|
|
26
|
+
assertZeroInstancePartition: () => assertZeroInstancePartition,
|
|
26
27
|
createZeroClientWithDirectQueries: () => createZeroClientWithDirectQueries
|
|
27
28
|
});
|
|
28
29
|
module.exports = __toCommonJS(multi_exports);
|
|
@@ -35,4 +36,16 @@ function createZeroClientWithDirectQueries(options) {
|
|
|
35
36
|
...options,
|
|
36
37
|
createDirectUseQuery
|
|
37
38
|
});
|
|
39
|
+
}
|
|
40
|
+
function assertZeroInstancePartition(kind, entries, partitions) {
|
|
41
|
+
const labels = Object.keys(partitions);
|
|
42
|
+
for (const name of Object.keys(entries)) {
|
|
43
|
+
const owners = labels.filter(label => name in partitions[label]);
|
|
44
|
+
if (owners.length === 0) {
|
|
45
|
+
throw new Error(`[on-zero] generated ${kind} "${name}" is missing from the instance partition (${labels.join(" / ")}) \u2014 add it to exactly one partition table.`);
|
|
46
|
+
}
|
|
47
|
+
if (owners.length > 1) {
|
|
48
|
+
throw new Error(`[on-zero] generated ${kind} "${name}" is claimed by more than one instance partition (${owners.join(", ")}) \u2014 it must belong to exactly one.`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
38
51
|
}
|
package/dist/cjs/multi.native.js
CHANGED
|
@@ -25,6 +25,7 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
25
25
|
}), mod);
|
|
26
26
|
var multi_exports = {};
|
|
27
27
|
__export(multi_exports, {
|
|
28
|
+
assertZeroInstancePartition: () => assertZeroInstancePartition,
|
|
28
29
|
createZeroClientWithDirectQueries: () => createZeroClientWithDirectQueries
|
|
29
30
|
});
|
|
30
31
|
module.exports = __toCommonJS(multi_exports);
|
|
@@ -38,4 +39,38 @@ function createZeroClientWithDirectQueries(options) {
|
|
|
38
39
|
createDirectUseQuery
|
|
39
40
|
});
|
|
40
41
|
}
|
|
42
|
+
function assertZeroInstancePartition(kind, entries, partitions) {
|
|
43
|
+
var labels = Object.keys(partitions);
|
|
44
|
+
var _iteratorNormalCompletion = true,
|
|
45
|
+
_didIteratorError = false,
|
|
46
|
+
_iteratorError = void 0;
|
|
47
|
+
try {
|
|
48
|
+
var _loop = function () {
|
|
49
|
+
var name = _step.value;
|
|
50
|
+
var owners = labels.filter(function (label) {
|
|
51
|
+
return name in partitions[label];
|
|
52
|
+
});
|
|
53
|
+
if (owners.length === 0) {
|
|
54
|
+
throw new Error(`[on-zero] generated ${kind} "${name}" is missing from the instance partition (${labels.join(" / ")}) \u2014 add it to exactly one partition table.`);
|
|
55
|
+
}
|
|
56
|
+
if (owners.length > 1) {
|
|
57
|
+
throw new Error(`[on-zero] generated ${kind} "${name}" is claimed by more than one instance partition (${owners.join(", ")}) \u2014 it must belong to exactly one.`);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
for (var _iterator = Object.keys(entries)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
|
|
61
|
+
} catch (err) {
|
|
62
|
+
_didIteratorError = true;
|
|
63
|
+
_iteratorError = err;
|
|
64
|
+
} finally {
|
|
65
|
+
try {
|
|
66
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
67
|
+
_iterator.return();
|
|
68
|
+
}
|
|
69
|
+
} finally {
|
|
70
|
+
if (_didIteratorError) {
|
|
71
|
+
throw _iteratorError;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
41
76
|
//# sourceMappingURL=multi.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","multi_exports","__export","createZeroClientWithDirectQueries","module","exports","import_createZeroClient","require","import_createUseQueryDirect","__reExport","options","createDirectUseQuery","createUseQueryDirect","createZeroClientInternal"],"sources":["../../src/multi.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,iCAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","multi_exports","__export","assertZeroInstancePartition","createZeroClientWithDirectQueries","module","exports","import_createZeroClient","require","import_createUseQueryDirect","__reExport","options","createDirectUseQuery","createUseQueryDirect","createZeroClientInternal","kind","entries","partitions","labels","Object","keys","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","name","_step","owners","filter","label","length","Error","join"],"sources":["../../src/multi.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,2BAAA,EAAAA,CAAA,KAAAA,2BAAA;EAAAC,iCAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAV,YAAA,CAIOK,aAAA;AACP,IAAAM,uBAAA,GAAAC,OAAqC;AAKrC,IAAAC,2BAAc,GAAAD,OAAA,mCAVd;AAYOE,UAAS,CAAAT,aAAA,EAAAO,OAAA,iCAK+C,GAAAH,MAAA,CAAAC,OAAA;AAC7D,SAAMF,iCAAmDA,CAAAO,OAAA;EACzD,IAAAC,oBAAO,GAAAH,2BAAA,CAAAI,oBAAyC;EAAA,OAC3C,IAAAN,uBAAA,CAAAO,wBAAA;IACH,GAAAH,OAAA;IACDC;EACH;AAYO;AAKL,SAAMT,2BAAqBA,CAAAY,IAAU,EAAAC,OAAA,EAAAC,UAAA;EACrC,IAAAC,MAAA,GAAWC,MAAQ,CAAAC,IAAA,CAAAH,UAAY;EAC7B,IAAAI,yBAAsB,GAAQ;IAAAC,iBAAkB,QAAW;IAAAC,cAAM;EACjE;IACE,IAAAC,KAAM,GAAI,SAAAA,CAAA;MAAA,IACRC,IAAA,GAAAC,KAAA,CAAA1B,KAAA;MAEF,IAAA2B,MAAA,GAAAT,MAAA,CAAAU,MAAA,WAAAC,KAAA;QACF,OAAAJ,IAAA,IAAAR,UAAA,CAAAY,KAAA;MACA,EAAI;MACF,IAAAF,MAAU,CAAAG,MAAA;QACR,UAAAC,KAAA,wBAAoChB,IAAA,KAAAU,IAAA,6CACvBP,MAAK,CAAAc,IAAK;MACzB;MACF,IAAAL,MAAA,CAAAG,MAAA;QACF,UAAAC,KAAA,wBAAAhB,IAAA,KAAAU,IAAA,qDAAAE,MAAA,CAAAK,IAAA;MACF","ignoreList":[]}
|
|
@@ -250,6 +250,18 @@ function fakeClient(name, namespaces, zeroStub) {
|
|
|
250
250
|
(0, import_vitest.expect)(() => a.zero.clientID).toThrow(/not initialized/);
|
|
251
251
|
(0, import_vitest.expect)(() => b.zero.clientID).toThrow(/not initialized/);
|
|
252
252
|
});
|
|
253
|
+
(0, import_vitest.test)("unmounted zero.mutate is a lazy path that resolves at call time", () => {
|
|
254
|
+
const {
|
|
255
|
+
client
|
|
256
|
+
} = makeClient("proxy-lazy-mutate", "proxyLazyMutate");
|
|
257
|
+
const insert = client.zero.mutate.user.insert;
|
|
258
|
+
(0, import_vitest.expect)(typeof insert).toBe("function");
|
|
259
|
+
(0, import_vitest.expect)(() => insert({
|
|
260
|
+
id: "1",
|
|
261
|
+
name: "a"
|
|
262
|
+
})).toThrow(/not initialized/);
|
|
263
|
+
(0, import_vitest.expect)(() => client.zero.clientID).toThrow(/not initialized/);
|
|
264
|
+
});
|
|
253
265
|
});
|
|
254
266
|
(0, import_vitest.describe)("combineZeroClients facade", () => {
|
|
255
267
|
(0, import_vitest.test)("zero.mutate dispatches by model namespace, rest forwards to primary", () => {
|
|
@@ -11,6 +11,11 @@ var import_queryRegistry = require("./queryRegistry.native.js");
|
|
|
11
11
|
var import_run = require("./run.native.js");
|
|
12
12
|
var import_zeroRunner = require("./zeroRunner.native.js");
|
|
13
13
|
var import_zql = require("./zql.native.js");
|
|
14
|
+
function _type_of(obj) {
|
|
15
|
+
"@swc/helpers - typeof";
|
|
16
|
+
|
|
17
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
18
|
+
}
|
|
14
19
|
var userTable = (0, import_zero.table)("user").columns({
|
|
15
20
|
id: (0, import_zero.string)(),
|
|
16
21
|
name: (0, import_zero.string)()
|
|
@@ -343,6 +348,22 @@ function fakeClient(name, namespaces, zeroStub) {
|
|
|
343
348
|
return b.zero.clientID;
|
|
344
349
|
}).toThrow(/not initialized/);
|
|
345
350
|
});
|
|
351
|
+
(0, import_vitest.test)("unmounted zero.mutate is a lazy path that resolves at call time", function () {
|
|
352
|
+
var {
|
|
353
|
+
client
|
|
354
|
+
} = makeClient("proxy-lazy-mutate", "proxyLazyMutate");
|
|
355
|
+
var insert = client.zero.mutate.user.insert;
|
|
356
|
+
(0, import_vitest.expect)(typeof insert === "undefined" ? "undefined" : _type_of(insert)).toBe("function");
|
|
357
|
+
(0, import_vitest.expect)(function () {
|
|
358
|
+
return insert({
|
|
359
|
+
id: "1",
|
|
360
|
+
name: "a"
|
|
361
|
+
});
|
|
362
|
+
}).toThrow(/not initialized/);
|
|
363
|
+
(0, import_vitest.expect)(function () {
|
|
364
|
+
return client.zero.clientID;
|
|
365
|
+
}).toThrow(/not initialized/);
|
|
366
|
+
});
|
|
346
367
|
});
|
|
347
368
|
(0, import_vitest.describe)("combineZeroClients facade", function () {
|
|
348
369
|
(0, import_vitest.test)("zero.mutate dispatches by model namespace, rest forwards to primary", function () {
|