on-zero 0.16.19 → 0.16.20
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/createUseQuery.cjs +2 -1
- package/dist/cjs/createUseQuery.native.js +2 -1
- package/dist/cjs/createUseQuery.native.js.map +1 -1
- package/dist/cjs/createUseQueryDirect.cjs +2 -1
- package/dist/cjs/createUseQueryDirect.native.js +2 -1
- package/dist/cjs/createUseQueryDirect.native.js.map +1 -1
- package/dist/cjs/createZeroClient.cjs +75 -9
- package/dist/cjs/createZeroClient.native.js +151 -81
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroClient.recovery.test.cjs +351 -10
- package/dist/cjs/createZeroClient.recovery.test.native.js +412 -12
- package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/cjs/generate.cjs +16 -11
- package/dist/cjs/generate.native.js +16 -11
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/cjs/generate.test.cjs +22 -0
- package/dist/cjs/generate.test.native.js +22 -0
- package/dist/cjs/generate.test.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.cjs +542 -52
- package/dist/cjs/helpers/recoverZeroClient.native.js +721 -59
- package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.test.cjs +318 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js +361 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/cjs/kvStore.cjs +30 -0
- package/dist/cjs/kvStore.native.js +34 -0
- package/dist/cjs/kvStore.native.js.map +1 -0
- package/dist/cjs/queryJson.cjs +58 -0
- package/dist/cjs/queryJson.native.js +86 -0
- package/dist/cjs/queryJson.native.js.map +1 -0
- package/dist/cjs/resolveQuery.cjs +2 -0
- package/dist/cjs/resolveQuery.native.js +2 -0
- package/dist/cjs/resolveQuery.native.js.map +1 -1
- package/dist/cjs/useQuery.empty.test.cjs +11 -1
- package/dist/cjs/useQuery.empty.test.native.js +23 -1
- package/dist/cjs/useQuery.empty.test.native.js.map +1 -1
- package/dist/cjs/useQuery.ssr.test.cjs +22 -1
- package/dist/cjs/useQuery.ssr.test.native.js +30 -1
- package/dist/cjs/useQuery.ssr.test.native.js.map +1 -1
- package/dist/esm/createUseQuery.mjs +2 -1
- package/dist/esm/createUseQuery.mjs.map +1 -1
- package/dist/esm/createUseQuery.native.js +2 -1
- package/dist/esm/createUseQuery.native.js.map +1 -1
- package/dist/esm/createUseQueryDirect.mjs +2 -1
- package/dist/esm/createUseQueryDirect.mjs.map +1 -1
- package/dist/esm/createUseQueryDirect.native.js +2 -1
- package/dist/esm/createUseQueryDirect.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +76 -10
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +152 -82
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.mjs +352 -11
- package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.native.js +413 -13
- package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/esm/generate.mjs +16 -11
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +16 -11
- package/dist/esm/generate.native.js.map +1 -1
- package/dist/esm/generate.test.mjs +22 -0
- package/dist/esm/generate.test.mjs.map +1 -1
- package/dist/esm/generate.test.native.js +22 -0
- package/dist/esm/generate.test.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs +542 -54
- package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.native.js +721 -61
- package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs +319 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js +362 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/esm/kvStore.mjs +5 -0
- package/dist/esm/kvStore.mjs.map +1 -0
- package/dist/esm/kvStore.native.js +6 -0
- package/dist/esm/kvStore.native.js.map +1 -0
- package/dist/esm/queryJson.mjs +32 -0
- package/dist/esm/queryJson.mjs.map +1 -0
- package/dist/esm/queryJson.native.js +57 -0
- package/dist/esm/queryJson.native.js.map +1 -0
- package/dist/esm/resolveQuery.mjs +2 -0
- package/dist/esm/resolveQuery.mjs.map +1 -1
- package/dist/esm/resolveQuery.native.js +2 -0
- package/dist/esm/resolveQuery.native.js.map +1 -1
- package/dist/esm/useQuery.empty.test.mjs +12 -2
- package/dist/esm/useQuery.empty.test.mjs.map +1 -1
- package/dist/esm/useQuery.empty.test.native.js +24 -2
- package/dist/esm/useQuery.empty.test.native.js.map +1 -1
- package/dist/esm/useQuery.ssr.test.mjs +23 -2
- package/dist/esm/useQuery.ssr.test.mjs.map +1 -1
- package/dist/esm/useQuery.ssr.test.native.js +31 -2
- package/dist/esm/useQuery.ssr.test.native.js.map +1 -1
- package/package.json +11 -3
- package/src/createUseQuery.tsx +2 -1
- package/src/createUseQueryDirect.tsx +2 -1
- package/src/createZeroClient.recovery.test.tsx +370 -7
- package/src/createZeroClient.tsx +100 -10
- package/src/generate.test.ts +31 -0
- package/src/generate.ts +22 -10
- package/src/helpers/recoverZeroClient.test.ts +323 -0
- package/src/helpers/recoverZeroClient.ts +896 -78
- package/src/kvStore.native.ts +7 -0
- package/src/kvStore.ts +7 -0
- package/src/queryJson.ts +46 -0
- package/src/resolveQuery.ts +2 -0
- package/src/useQuery.empty.test.tsx +16 -2
- package/src/useQuery.ssr.test.ts +23 -2
- package/types/createUseQuery.d.ts.map +1 -1
- package/types/createUseQueryDirect.d.ts.map +1 -1
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/createZeroClient.recovery.test.d.ts.map +1 -1
- package/types/generate.d.ts.map +1 -1
- package/types/helpers/recoverZeroClient.d.ts +6 -0
- package/types/helpers/recoverZeroClient.d.ts.map +1 -1
- package/types/kvStore.d.ts +2 -0
- package/types/kvStore.d.ts.map +1 -0
- package/types/kvStore.native.d.ts +3 -0
- package/types/kvStore.native.d.ts.map +1 -0
- package/types/queryJson.d.ts +3 -0
- package/types/queryJson.d.ts.map +1 -0
- package/types/resolveQuery.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","recoverZeroClient_exports","__export","classifyZeroRecoveryLog","composeRecoveryLogSink","isRecoverableZeroStalePokeMessage","makeZeroRecovery","resetRecoveryStateForTests","module","exports","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","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","pendingInPlaceRecoveries","inMemoryGuard","Map","defaultGuardStorage","window","sessionStorage","unused","recoveryGuardOpen","reasonKey","guardStorage","_inMemoryGuard_get","documentScope","_ref","_globalThis_location","globalThis","location","href","key","now","Date","memLast","get","storage","rawLast","getItem","last","Number","setItem","String","set","lastStoreClosedAtMs","armReloadLatchTimeout","setTimeout","clearTimeout","unref","disarmReloadLatchTimeout","performReload","deps","_deps_reload","Promise","resolve","doReload","reload","call","inPlaceRecoveries","then","splice","allSettled","map","run","_deps_beforeReload","beforeReload","catch","reloadStarted","results","all","recover2","length","some","recovered","console","error","recover","message","dropLocalState","_deps_onRecovery","onRecovery","push","deleteLocalState","recoverInPlace","includes","zeroEvents","emit","type","reason","_globalThis_dispatchEvent","_globalThis","dispatchEvent","CustomEvent","detail","warn","runReload","runReload2","scheduleReload","onUpdateNeeded","onClientStateNotFound","logToConsole","level","context","_len","arguments","args","Array","_key","prefix","Object","entries","param","join","method","logArgText","arg","Error","name","stack","isBenignStoreClosedLog","text","test","classifyMutationDesync","nowMs","desync","prevMs"],"sources":["../../../src/helpers/recoverZeroClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","recoverZeroClient_exports","__export","classifyZeroRecoveryLog","composeRecoveryLogSink","isGroupTransitionOpen","isRecoverableZeroStalePokeMessage","makeZeroRecovery","primeGroupCache","resetRecoveryStateForTests","module","exports","import_globalValue","require","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","RECOVER_GUARD_MS","RELOAD_LATCH_TIMEOUT_MS","GROUP_TRANSITION_REASONS","Set","LOCAL_STORE_LOST","SQLITE_ERROR_NAME","SQLITE_STATEMENT_FINALIZED","STORE_CLOSED","STORE_CLOSED_REPEAT_MIN_MS","STORE_CLOSED_REPEAT_MAX_MS","sharedRecoveryState","globalValue","reloadScheduled","reloadInProgress","reloadLatchTimer","pendingDeletes","pendingInPlaceRecoveries","inMemoryGuard","Map","constructionSeq","constructionSeqByDeps","WeakMap","groupByDeps","transitions","terminalMemory","terminalEmitted","unknownPostSignals","lastStoreClosedAtMs","documentScope","_ref","_globalThis_location","globalThis","location","href","unused","guardStorageKey","reasonKey","defaultGuardStorage","window","sessionStorage","recoveryGuardOpen","guardStorage","_sharedRecoveryState_inMemoryGuard_get","key","now","Date","memLast","get","storage","rawLast","getItem","last","Number","setItem","String","set","readRecoveryMarker","raw","test","t","parsed","JSON","parse","writeRecoveryMarker","marker","stringify","clearRecoveryMarker","removeItem","armReloadLatchTimeout","shared","setTimeout","clearTimeout","unref","disarmReloadLatchTimeout","pushGlobalDelete","deps","some","entry","owner","deleteLocalState","push","run","Promise","resolve","then","removeGlobalDelete","pending","index","findIndex","splice","removeGlobalRemint","fn","indexOf","seqOf","seq","refreshGroupCache","getGroupID","result","id","cachedGroupID","participantKey","_deps_recoverInPlace","recoverInPlace","transitionKey","_deps_clientIdentity","clientIdentity","findOpenTransitionParticipant","transition","settled","startSeq","participants","size","terminalKey","stampTerminal","message","groups","terminal","msg","emitTerminalOnce","_shared_terminalEmitted_get","emitKey","lastEmitted","console","error","zeroEvents","emit","type","reason","_globalThis_dispatchEvent","_globalThis","dispatchEvent","call","CustomEvent","detail","settleTransition","outcome","delete","notifySettled","checkTransitionComplete","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","values","iterator","_step","next","done","participant","reminted","skipped","err","return","pendingWaits","failTransition","input","map","oldGroupID","filter","group","reasons","signalDeps","makeWrappedRemint","remint","ok","firstReason","Error","awaitReconnected","race","settledPromise","runParticipantImmediate","doDelete","dropLocalState","deleteExecuted","doRemint","remintExecuted","wrappedRemint","joinTransition","add","existing","remintsExecuted","startTransition","startedAtMs","warn","runReload","runReload2","performReload","scheduleReload","checkTransitionGuard","myGroup","memory","length","includes","markerGroups","_marker_msg","message1","handlePostTransitionSignal","_ref1","newGroup","oldGroups","join","budget","freshBudget","windowStartMs","count","recoverViaGroupTransition","open","_deps_reload","doReload","reload","globalDeletes","globalRemints","openTransitions","transitionDeletes","transitionRemints","transition2","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","_step1","runDelete","_iterator1","allSettled","_deps_beforeReload","beforeReload","catch","reloadStarted","noteTransitionsReloading","liveRemints","param","results","all","recover2","globalResults","slice","recovered","firstParticipant","recover","_deps_onRecovery","onRecovery","has"],"sources":["../../../src/helpers/recoverZeroClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -555,4 +555,322 @@ async function flush() {
|
|
|
555
555
|
(0, import_vitest.expect)((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)("Received cookie 5 is < than last snapshot cookie 9, ignoring client view")).toBe(true);
|
|
556
556
|
(0, import_vitest.expect)((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)("client state not found")).toBe(false);
|
|
557
557
|
});
|
|
558
|
+
});
|
|
559
|
+
(0, import_vitest.describe)("group transitions", () => {
|
|
560
|
+
function setupTransition(opts) {
|
|
561
|
+
const events = [];
|
|
562
|
+
const zeroEvents = (0, import_emitter.createEmitter)(`test-transition-${emitterSeq++}`, null);
|
|
563
|
+
zeroEvents.listen(event => {
|
|
564
|
+
if (event) events.push(event);
|
|
565
|
+
});
|
|
566
|
+
const deleteLocalState = import_vitest.vi.fn(() => Promise.resolve());
|
|
567
|
+
const reload = import_vitest.vi.fn(opts?.reload ?? (() => {}));
|
|
568
|
+
const recoverInPlace = opts?.remint ? import_vitest.vi.fn(opts.remint) : void 0;
|
|
569
|
+
const awaitReconnected = opts?.connected ? import_vitest.vi.fn(() => opts.connected) : void 0;
|
|
570
|
+
const deps = {
|
|
571
|
+
deleteLocalState,
|
|
572
|
+
zeroEvents,
|
|
573
|
+
reload,
|
|
574
|
+
recoverInPlace,
|
|
575
|
+
awaitReconnected,
|
|
576
|
+
clientIdentity: opts?.identity,
|
|
577
|
+
getGroupID: opts?.group === void 0 ? void 0 : () => opts.group
|
|
578
|
+
};
|
|
579
|
+
return {
|
|
580
|
+
deps,
|
|
581
|
+
deleteLocalState,
|
|
582
|
+
reload,
|
|
583
|
+
recoverInPlace,
|
|
584
|
+
events
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
function fatals(events) {
|
|
588
|
+
return events.filter(event => event.type === "fatal");
|
|
589
|
+
}
|
|
590
|
+
function recoverings(events) {
|
|
591
|
+
return events.filter(event => event.type === "recovering");
|
|
592
|
+
}
|
|
593
|
+
(0, import_vitest.test)("concurrent NewClientGroup signals join one transition: one reload, joins silent, no fatal, no IDB delete", async () => {
|
|
594
|
+
const a = setupTransition({
|
|
595
|
+
group: "g-a"
|
|
596
|
+
});
|
|
597
|
+
const b = setupTransition({
|
|
598
|
+
group: "g-b"
|
|
599
|
+
});
|
|
600
|
+
const recoveryA = (0, import_recoverZeroClient.makeZeroRecovery)(a.deps);
|
|
601
|
+
const recoveryB = (0, import_recoverZeroClient.makeZeroRecovery)(b.deps);
|
|
602
|
+
recoveryA.onUpdateNeeded({
|
|
603
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
604
|
+
});
|
|
605
|
+
recoveryB.onUpdateNeeded({
|
|
606
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
607
|
+
});
|
|
608
|
+
await flush();
|
|
609
|
+
(0, import_vitest.expect)(a.reload.mock.calls.length + b.reload.mock.calls.length).toBe(1);
|
|
610
|
+
(0, import_vitest.expect)(recoverings(a.events)).toHaveLength(1);
|
|
611
|
+
(0, import_vitest.expect)(recoverings(b.events)).toHaveLength(0);
|
|
612
|
+
(0, import_vitest.expect)(fatals([...a.events, ...b.events])).toEqual([]);
|
|
613
|
+
(0, import_vitest.expect)(a.deleteLocalState).not.toHaveBeenCalled();
|
|
614
|
+
(0, import_vitest.expect)(b.deleteLocalState).not.toHaveBeenCalled();
|
|
615
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isGroupTransitionOpen)()).toBe(false);
|
|
616
|
+
});
|
|
617
|
+
(0, import_vitest.test)("a second change with a newer group starts a fresh transition after a reload", async () => {
|
|
618
|
+
const a = setupTransition({
|
|
619
|
+
group: "g1"
|
|
620
|
+
});
|
|
621
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
622
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
623
|
+
});
|
|
624
|
+
await flush();
|
|
625
|
+
(0, import_vitest.expect)(a.reload).toHaveBeenCalledTimes(1);
|
|
626
|
+
(0, import_recoverZeroClient.resetRecoveryStateForTests)();
|
|
627
|
+
const b = setupTransition({
|
|
628
|
+
group: "g2"
|
|
629
|
+
});
|
|
630
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(b.deps).onUpdateNeeded({
|
|
631
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
632
|
+
});
|
|
633
|
+
await flush();
|
|
634
|
+
(0, import_vitest.expect)(b.reload).toHaveBeenCalledTimes(1);
|
|
635
|
+
(0, import_vitest.expect)(recoverings(b.events)).toHaveLength(1);
|
|
636
|
+
(0, import_vitest.expect)(fatals(b.events)).toEqual([]);
|
|
637
|
+
});
|
|
638
|
+
(0, import_vitest.test)("an unchanged group after a reload goes terminal once, then silent", async () => {
|
|
639
|
+
const a = setupTransition({
|
|
640
|
+
group: "g1"
|
|
641
|
+
});
|
|
642
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
643
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
644
|
+
});
|
|
645
|
+
await flush();
|
|
646
|
+
(0, import_vitest.expect)(a.reload).toHaveBeenCalledTimes(1);
|
|
647
|
+
(0, import_recoverZeroClient.resetRecoveryStateForTests)();
|
|
648
|
+
const consoleError = import_vitest.vi.spyOn(console, "error").mockImplementation(() => {});
|
|
649
|
+
try {
|
|
650
|
+
const b = setupTransition({
|
|
651
|
+
group: "g1"
|
|
652
|
+
});
|
|
653
|
+
const recovery = (0, import_recoverZeroClient.makeZeroRecovery)(b.deps);
|
|
654
|
+
recovery.onUpdateNeeded({
|
|
655
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
656
|
+
});
|
|
657
|
+
await flush();
|
|
658
|
+
(0, import_vitest.expect)(b.reload).not.toHaveBeenCalled();
|
|
659
|
+
(0, import_vitest.expect)(fatals(b.events)).toHaveLength(1);
|
|
660
|
+
(0, import_vitest.expect)(fatals(b.events)[0]).toMatchObject({
|
|
661
|
+
reasonKey: "NewClientGroup",
|
|
662
|
+
reason: import_vitest.expect.stringContaining("g1")
|
|
663
|
+
});
|
|
664
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledTimes(1);
|
|
665
|
+
recovery.onUpdateNeeded({
|
|
666
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
667
|
+
});
|
|
668
|
+
const c = setupTransition({
|
|
669
|
+
group: "g1"
|
|
670
|
+
});
|
|
671
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(c.deps).onUpdateNeeded({
|
|
672
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
673
|
+
});
|
|
674
|
+
await flush();
|
|
675
|
+
(0, import_vitest.expect)(fatals([...b.events, ...c.events])).toHaveLength(1);
|
|
676
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledTimes(1);
|
|
677
|
+
(0, import_vitest.expect)(b.reload).not.toHaveBeenCalled();
|
|
678
|
+
} finally {
|
|
679
|
+
consoleError.mockRestore();
|
|
680
|
+
}
|
|
681
|
+
});
|
|
682
|
+
(0, import_vitest.test)("a reminted instance re-firing with an unchanged group fails terminal once", async () => {
|
|
683
|
+
let releaseConnected = () => {};
|
|
684
|
+
const connected = new Promise(resolve => {
|
|
685
|
+
releaseConnected = resolve;
|
|
686
|
+
});
|
|
687
|
+
const a = setupTransition({
|
|
688
|
+
group: "g1",
|
|
689
|
+
reload: () => false,
|
|
690
|
+
remint: () => Promise.resolve(true),
|
|
691
|
+
connected
|
|
692
|
+
});
|
|
693
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
694
|
+
type: import_zero.UpdateNeededReasonType.SchemaVersionNotSupported
|
|
695
|
+
});
|
|
696
|
+
await flush();
|
|
697
|
+
(0, import_vitest.expect)(a.recoverInPlace).toHaveBeenCalledTimes(1);
|
|
698
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isGroupTransitionOpen)()).toBe(true);
|
|
699
|
+
const consoleError = import_vitest.vi.spyOn(console, "error").mockImplementation(() => {});
|
|
700
|
+
try {
|
|
701
|
+
const b = setupTransition({
|
|
702
|
+
group: "g1"
|
|
703
|
+
});
|
|
704
|
+
const recovery = (0, import_recoverZeroClient.makeZeroRecovery)(b.deps);
|
|
705
|
+
recovery.onUpdateNeeded({
|
|
706
|
+
type: import_zero.UpdateNeededReasonType.SchemaVersionNotSupported
|
|
707
|
+
});
|
|
708
|
+
await flush();
|
|
709
|
+
(0, import_vitest.expect)(fatals(b.events)).toHaveLength(1);
|
|
710
|
+
(0, import_vitest.expect)(fatals(b.events)[0]?.reason).toContain("g1");
|
|
711
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledTimes(1);
|
|
712
|
+
(0, import_vitest.expect)(a.recoverInPlace).toHaveBeenCalledTimes(1);
|
|
713
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isGroupTransitionOpen)()).toBe(false);
|
|
714
|
+
releaseConnected(true);
|
|
715
|
+
recovery.onUpdateNeeded({
|
|
716
|
+
type: import_zero.UpdateNeededReasonType.SchemaVersionNotSupported
|
|
717
|
+
});
|
|
718
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
719
|
+
type: import_zero.UpdateNeededReasonType.SchemaVersionNotSupported
|
|
720
|
+
});
|
|
721
|
+
await flush();
|
|
722
|
+
(0, import_vitest.expect)(fatals([...a.events, ...b.events])).toHaveLength(1);
|
|
723
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledTimes(1);
|
|
724
|
+
} finally {
|
|
725
|
+
consoleError.mockRestore();
|
|
726
|
+
}
|
|
727
|
+
});
|
|
728
|
+
(0, import_vitest.test)("a reminted instance with a changed group supersedes into a fresh transition", async () => {
|
|
729
|
+
const a = setupTransition({
|
|
730
|
+
group: "g1",
|
|
731
|
+
reload: () => false,
|
|
732
|
+
remint: () => Promise.resolve(true),
|
|
733
|
+
connected: new Promise(() => {})
|
|
734
|
+
});
|
|
735
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
736
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
737
|
+
});
|
|
738
|
+
await flush();
|
|
739
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isGroupTransitionOpen)()).toBe(true);
|
|
740
|
+
const b = setupTransition({
|
|
741
|
+
group: "g2",
|
|
742
|
+
reload: () => false,
|
|
743
|
+
remint: () => Promise.resolve(true)
|
|
744
|
+
});
|
|
745
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(b.deps).onUpdateNeeded({
|
|
746
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
747
|
+
});
|
|
748
|
+
await flush();
|
|
749
|
+
(0, import_vitest.expect)(recoverings(b.events)).toHaveLength(1);
|
|
750
|
+
(0, import_vitest.expect)(fatals([...a.events, ...b.events])).toEqual([]);
|
|
751
|
+
(0, import_vitest.expect)(b.recoverInPlace).toHaveBeenCalledTimes(1);
|
|
752
|
+
});
|
|
753
|
+
(0, import_vitest.test)("unreadable groups allow one supersede, then go terminal", async () => {
|
|
754
|
+
const a = setupTransition({
|
|
755
|
+
reload: () => false,
|
|
756
|
+
remint: () => Promise.resolve(true),
|
|
757
|
+
connected: new Promise(() => {})
|
|
758
|
+
});
|
|
759
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
760
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
761
|
+
});
|
|
762
|
+
await flush();
|
|
763
|
+
const consoleError = import_vitest.vi.spyOn(console, "error").mockImplementation(() => {});
|
|
764
|
+
try {
|
|
765
|
+
const b = setupTransition({
|
|
766
|
+
reload: () => false,
|
|
767
|
+
remint: () => Promise.resolve(true),
|
|
768
|
+
connected: new Promise(() => {})
|
|
769
|
+
});
|
|
770
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(b.deps).onUpdateNeeded({
|
|
771
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
772
|
+
});
|
|
773
|
+
await flush();
|
|
774
|
+
(0, import_vitest.expect)(recoverings(b.events)).toHaveLength(1);
|
|
775
|
+
(0, import_vitest.expect)(fatals(b.events)).toEqual([]);
|
|
776
|
+
const c = setupTransition({
|
|
777
|
+
reload: () => false
|
|
778
|
+
});
|
|
779
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(c.deps).onUpdateNeeded({
|
|
780
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
781
|
+
});
|
|
782
|
+
await flush();
|
|
783
|
+
(0, import_vitest.expect)(fatals(c.events)).toHaveLength(1);
|
|
784
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledTimes(1);
|
|
785
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(c.deps).onUpdateNeeded({
|
|
786
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
787
|
+
});
|
|
788
|
+
await flush();
|
|
789
|
+
(0, import_vitest.expect)(fatals(c.events)).toHaveLength(1);
|
|
790
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledTimes(1);
|
|
791
|
+
} finally {
|
|
792
|
+
consoleError.mockRestore();
|
|
793
|
+
}
|
|
794
|
+
});
|
|
795
|
+
(0, import_vitest.test)("SchemaVersionNotSupported drops the store inside its transition", async () => {
|
|
796
|
+
const a = setupTransition({
|
|
797
|
+
group: "g1",
|
|
798
|
+
reload: () => false,
|
|
799
|
+
remint: () => Promise.resolve(true)
|
|
800
|
+
});
|
|
801
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
802
|
+
type: import_zero.UpdateNeededReasonType.SchemaVersionNotSupported
|
|
803
|
+
});
|
|
804
|
+
await flush();
|
|
805
|
+
(0, import_vitest.expect)(a.deleteLocalState).toHaveBeenCalledTimes(1);
|
|
806
|
+
(0, import_vitest.expect)(a.recoverInPlace).toHaveBeenCalledTimes(1);
|
|
807
|
+
(0, import_vitest.expect)(fatals(a.events)).toEqual([]);
|
|
808
|
+
});
|
|
809
|
+
(0, import_vitest.test)("different identities ride separate transitions but share the one reload", async () => {
|
|
810
|
+
const a = setupTransition({
|
|
811
|
+
group: "g-a",
|
|
812
|
+
identity: "user-a"
|
|
813
|
+
});
|
|
814
|
+
const b = setupTransition({
|
|
815
|
+
group: "g-b",
|
|
816
|
+
identity: "user-b"
|
|
817
|
+
});
|
|
818
|
+
const recoveryA = (0, import_recoverZeroClient.makeZeroRecovery)(a.deps);
|
|
819
|
+
const recoveryB = (0, import_recoverZeroClient.makeZeroRecovery)(b.deps);
|
|
820
|
+
recoveryA.onUpdateNeeded({
|
|
821
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
822
|
+
});
|
|
823
|
+
recoveryB.onUpdateNeeded({
|
|
824
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
825
|
+
});
|
|
826
|
+
await flush();
|
|
827
|
+
(0, import_vitest.expect)(recoverings(a.events)).toHaveLength(1);
|
|
828
|
+
(0, import_vitest.expect)(recoverings(b.events)).toHaveLength(1);
|
|
829
|
+
(0, import_vitest.expect)(a.reload.mock.calls.length + b.reload.mock.calls.length).toBe(1);
|
|
830
|
+
(0, import_vitest.expect)(fatals([...a.events, ...b.events])).toEqual([]);
|
|
831
|
+
});
|
|
832
|
+
(0, import_vitest.test)("a legacy bare-timestamp marker goes terminal once (legacy parity)", async () => {
|
|
833
|
+
const key = `on-zero-recover-${globalThis.location?.href}-NewClientGroup`;
|
|
834
|
+
window.sessionStorage.setItem(key, String(Date.now()));
|
|
835
|
+
const consoleError = import_vitest.vi.spyOn(console, "error").mockImplementation(() => {});
|
|
836
|
+
try {
|
|
837
|
+
const a = setupTransition({
|
|
838
|
+
group: "g1"
|
|
839
|
+
});
|
|
840
|
+
const recovery = (0, import_recoverZeroClient.makeZeroRecovery)(a.deps);
|
|
841
|
+
recovery.onUpdateNeeded({
|
|
842
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
843
|
+
});
|
|
844
|
+
await flush();
|
|
845
|
+
(0, import_vitest.expect)(a.reload).not.toHaveBeenCalled();
|
|
846
|
+
(0, import_vitest.expect)(fatals(a.events)).toHaveLength(1);
|
|
847
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledTimes(1);
|
|
848
|
+
recovery.onUpdateNeeded({
|
|
849
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
850
|
+
});
|
|
851
|
+
await flush();
|
|
852
|
+
(0, import_vitest.expect)(fatals(a.events)).toHaveLength(1);
|
|
853
|
+
(0, import_vitest.expect)(consoleError).toHaveBeenCalledTimes(1);
|
|
854
|
+
} finally {
|
|
855
|
+
consoleError.mockRestore();
|
|
856
|
+
}
|
|
857
|
+
});
|
|
858
|
+
(0, import_vitest.test)("a participant that cannot remint skips without failing the transition", async () => {
|
|
859
|
+
const a = setupTransition({
|
|
860
|
+
group: "g1",
|
|
861
|
+
reload: () => false,
|
|
862
|
+
remint: () => Promise.resolve(false)
|
|
863
|
+
});
|
|
864
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
865
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
866
|
+
});
|
|
867
|
+
await flush();
|
|
868
|
+
(0, import_vitest.expect)((0, import_recoverZeroClient.isGroupTransitionOpen)()).toBe(false);
|
|
869
|
+
(0, import_recoverZeroClient.makeZeroRecovery)(a.deps).onUpdateNeeded({
|
|
870
|
+
type: import_zero.UpdateNeededReasonType.NewClientGroup
|
|
871
|
+
});
|
|
872
|
+
await flush();
|
|
873
|
+
(0, import_vitest.expect)(recoverings(a.events)).toHaveLength(2);
|
|
874
|
+
(0, import_vitest.expect)(fatals(a.events)).toEqual([]);
|
|
875
|
+
});
|
|
558
876
|
});
|