on-zero 0.9.2 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/createZeroClient.cjs +176 -100
- package/dist/cjs/createZeroClient.connection.test.cjs +32 -0
- package/dist/cjs/createZeroClient.connection.test.native.js +34 -0
- package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -1
- package/dist/cjs/createZeroClient.headless.test.cjs +33 -0
- package/dist/cjs/createZeroClient.headless.test.native.js +38 -0
- package/dist/cjs/createZeroClient.headless.test.native.js.map +1 -0
- package/dist/cjs/createZeroClient.native.js +207 -132
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/zeroRunner.cjs +1 -1
- package/dist/cjs/zeroRunner.native.js +1 -1
- package/dist/esm/createZeroClient.connection.test.mjs +32 -0
- package/dist/esm/createZeroClient.connection.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.connection.test.native.js +34 -0
- package/dist/esm/createZeroClient.connection.test.native.js.map +1 -1
- package/dist/esm/createZeroClient.headless.test.mjs +34 -0
- package/dist/esm/createZeroClient.headless.test.mjs.map +1 -0
- package/dist/esm/createZeroClient.headless.test.native.js +36 -0
- package/dist/esm/createZeroClient.headless.test.native.js.map +1 -0
- package/dist/esm/createZeroClient.mjs +178 -102
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +209 -134
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/zeroRunner.mjs +1 -1
- package/dist/esm/zeroRunner.mjs.map +1 -1
- package/dist/esm/zeroRunner.native.js +1 -1
- package/package.json +1 -1
- package/src/createZeroClient.connection.test.tsx +38 -0
- package/src/createZeroClient.headless.test.tsx +47 -0
- package/src/createZeroClient.tsx +323 -218
- package/src/zeroRunner.ts +1 -1
- package/types/createZeroClient.d.ts +24 -0
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/createZeroClient.headless.test.d.ts +2 -0
- package/types/createZeroClient.headless.test.d.ts.map +1 -0
|
@@ -146,8 +146,79 @@ function createZeroClientInternal({
|
|
|
146
146
|
});
|
|
147
147
|
(0, import_run.setCustomQueries)(customQueries);
|
|
148
148
|
const DisabledContext = (0, import_react2.createContext)(false);
|
|
149
|
+
let clientMutators = null;
|
|
150
|
+
function getClientMutators() {
|
|
151
|
+
clientMutators ??= (0, import_createMutators.createMutators)({
|
|
152
|
+
models,
|
|
153
|
+
environment: "client",
|
|
154
|
+
authData: null,
|
|
155
|
+
can: permissionsHelpers.can
|
|
156
|
+
});
|
|
157
|
+
return clientMutators;
|
|
158
|
+
}
|
|
159
|
+
function constructZeroInstance({
|
|
160
|
+
options,
|
|
161
|
+
transport,
|
|
162
|
+
beforeReload,
|
|
163
|
+
scheduleReload,
|
|
164
|
+
guardStorage,
|
|
165
|
+
benignLogPatterns
|
|
166
|
+
}) {
|
|
167
|
+
if (transport) {
|
|
168
|
+
const serverURL = options.cacheURL ?? options.server;
|
|
169
|
+
if (typeof serverURL !== "string") {
|
|
170
|
+
throw new Error(`client transport requires a server URL`);
|
|
171
|
+
}
|
|
172
|
+
transport.install(serverURL);
|
|
173
|
+
}
|
|
174
|
+
const instanceRef = {
|
|
175
|
+
current: null
|
|
176
|
+
};
|
|
177
|
+
const recoveryDeps = {
|
|
178
|
+
deleteLocalState: () => deleteZeroInstance(instanceRef.current),
|
|
179
|
+
zeroEvents,
|
|
180
|
+
beforeReload,
|
|
181
|
+
scheduleReload,
|
|
182
|
+
guardStorage,
|
|
183
|
+
benignLogPatterns: [...(transport?.logClassifications?.benign ?? []), ...(benignLogPatterns ?? [])],
|
|
184
|
+
onRecovery: () => mutationLifecycle.fence()
|
|
185
|
+
};
|
|
186
|
+
const recovery = (0, import_recoverZeroClient.makeZeroRecovery)(recoveryDeps);
|
|
187
|
+
const createdInstance = new import_zero.Zero({
|
|
188
|
+
kvStore: "mem",
|
|
189
|
+
...options,
|
|
190
|
+
schema,
|
|
191
|
+
// @ts-expect-error same erasure ZeroProvider needed
|
|
192
|
+
mutators: getClientMutators(),
|
|
193
|
+
// when the consumer brings no logSink, install ours: it preserves Zero's
|
|
194
|
+
// console output AND watches for the local-store-lost signature. a
|
|
195
|
+
// consumer with its own logSink owns log-based recovery (no double-fire
|
|
196
|
+
// with e.g. soot's origin-gated recovery).
|
|
197
|
+
logSink: options.logSink ?? (0, import_recoverZeroClient.composeRecoveryLogSink)(recoveryDeps),
|
|
198
|
+
// consumer handlers win; otherwise on-zero's default self-healing
|
|
199
|
+
// recovery covers EVERY reason (drop local state + reload, guarded) —
|
|
200
|
+
// passing these to Zero disables its built-in reload, so any reason we
|
|
201
|
+
// left unhandled would fatal-blank the app forever.
|
|
202
|
+
onUpdateNeeded: options.onUpdateNeeded ?? recovery.onUpdateNeeded,
|
|
203
|
+
onClientStateNotFound: options.onClientStateNotFound ?? recovery.onClientStateNotFound
|
|
204
|
+
});
|
|
205
|
+
instanceRef.current = createdInstance;
|
|
206
|
+
return createdInstance;
|
|
207
|
+
}
|
|
149
208
|
let latestZeroInstance = null;
|
|
150
209
|
const zeroReadyWaiters = /* @__PURE__ */new Set();
|
|
210
|
+
function publishZeroInstance(zeroInstance) {
|
|
211
|
+
if (zeroInstance === latestZeroInstance) return false;
|
|
212
|
+
latestZeroInstance = zeroInstance;
|
|
213
|
+
mutationLifecycle.activate();
|
|
214
|
+
const runner = (query, options) => zeroInstance.run(query, options);
|
|
215
|
+
instance.runner = runner;
|
|
216
|
+
(0, import_zeroRunner.setRunner)(runner);
|
|
217
|
+
const waiters = [...zeroReadyWaiters];
|
|
218
|
+
zeroReadyWaiters.clear();
|
|
219
|
+
for (const onReady of waiters) onReady(zeroInstance);
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
151
222
|
function waitForZero({
|
|
152
223
|
signal
|
|
153
224
|
} = {}) {
|
|
@@ -402,14 +473,6 @@ function createZeroClientInternal({
|
|
|
402
473
|
}
|
|
403
474
|
const authData = authDataIn ?? stableAuthDataRef.current ?? null;
|
|
404
475
|
(0, import_state.setAuthData)(authData);
|
|
405
|
-
const mutators = (0, import_react2.useMemo)(() => {
|
|
406
|
-
return (0, import_createMutators.createMutators)({
|
|
407
|
-
models,
|
|
408
|
-
environment: "client",
|
|
409
|
-
authData: null,
|
|
410
|
-
can: permissionsHelpers.can
|
|
411
|
-
});
|
|
412
|
-
}, []);
|
|
413
476
|
const hostScope = (0, import_hostStorageScope.readHostStorageScope)();
|
|
414
477
|
const scopedProps = hostScope ? {
|
|
415
478
|
...props,
|
|
@@ -453,54 +516,22 @@ function createZeroClientInternal({
|
|
|
453
516
|
}
|
|
454
517
|
let cached = cachedZero;
|
|
455
518
|
const options = scopedProps;
|
|
456
|
-
if (transport) {
|
|
457
|
-
const serverURL = options.cacheURL ?? options.server;
|
|
458
|
-
if (typeof serverURL !== "string") {
|
|
459
|
-
throw new Error(`client transport requires a server URL`);
|
|
460
|
-
}
|
|
461
|
-
transport.install(serverURL);
|
|
462
|
-
}
|
|
463
519
|
if (cached?.key !== instanceKey) {
|
|
464
520
|
if (cached) {
|
|
465
521
|
clearZeroInstanceReferences(cached.instance);
|
|
466
522
|
mutationLifecycle.fence();
|
|
467
523
|
cached.instance.close();
|
|
468
524
|
}
|
|
469
|
-
const instanceRef = {
|
|
470
|
-
current: null
|
|
471
|
-
};
|
|
472
|
-
const recoveryDeps = {
|
|
473
|
-
deleteLocalState: () => deleteZeroInstance(instanceRef.current),
|
|
474
|
-
zeroEvents,
|
|
475
|
-
beforeReload,
|
|
476
|
-
scheduleReload,
|
|
477
|
-
guardStorage,
|
|
478
|
-
benignLogPatterns: [...(transport?.logClassifications?.benign ?? []), ...(benignLogPatterns ?? [])],
|
|
479
|
-
onRecovery: () => mutationLifecycle.fence()
|
|
480
|
-
};
|
|
481
|
-
const recovery = (0, import_recoverZeroClient.makeZeroRecovery)(recoveryDeps);
|
|
482
|
-
const createdInstance = new import_zero.Zero({
|
|
483
|
-
kvStore: "mem",
|
|
484
|
-
...options,
|
|
485
|
-
schema,
|
|
486
|
-
// @ts-expect-error same erasure ZeroProvider needed
|
|
487
|
-
mutators,
|
|
488
|
-
// when the consumer brings no logSink, install ours: it preserves
|
|
489
|
-
// Zero's console output AND watches for the local-store-lost signature.
|
|
490
|
-
// a consumer with its own logSink owns log-based recovery (no
|
|
491
|
-
// double-fire with e.g. soot's origin-gated recovery).
|
|
492
|
-
logSink: options.logSink ?? (0, import_recoverZeroClient.composeRecoveryLogSink)(recoveryDeps),
|
|
493
|
-
// consumer handlers win; otherwise on-zero's default self-healing
|
|
494
|
-
// recovery covers EVERY reason (drop local state + reload, guarded) —
|
|
495
|
-
// passing these to Zero disables its built-in reload, so any reason we
|
|
496
|
-
// left unhandled would fatal-blank the app forever.
|
|
497
|
-
onUpdateNeeded: options.onUpdateNeeded ?? recovery.onUpdateNeeded,
|
|
498
|
-
onClientStateNotFound: options.onClientStateNotFound ?? recovery.onClientStateNotFound
|
|
499
|
-
});
|
|
500
|
-
instanceRef.current = createdInstance;
|
|
501
525
|
cached = {
|
|
502
526
|
key: instanceKey,
|
|
503
|
-
instance:
|
|
527
|
+
instance: constructZeroInstance({
|
|
528
|
+
options,
|
|
529
|
+
transport,
|
|
530
|
+
beforeReload,
|
|
531
|
+
scheduleReload,
|
|
532
|
+
guardStorage,
|
|
533
|
+
benignLogPatterns
|
|
534
|
+
})
|
|
504
535
|
};
|
|
505
536
|
cachedZero = cached;
|
|
506
537
|
}
|
|
@@ -536,39 +567,66 @@ function createZeroClientInternal({
|
|
|
536
567
|
const ProvideZero = import_platform.IS_SERVER_RUNTIME ? ProvideZeroServer : ProvideZeroClient;
|
|
537
568
|
const SetZeroInstance = () => {
|
|
538
569
|
const zeroInstance = (0, import_react.useZero)();
|
|
539
|
-
|
|
540
|
-
latestZeroInstance = zeroInstance;
|
|
541
|
-
mutationLifecycle.activate();
|
|
542
|
-
const runner = (query, options) => zeroInstance.run(query, options);
|
|
543
|
-
instance.runner = runner;
|
|
544
|
-
(0, import_zeroRunner.setRunner)(runner);
|
|
545
|
-
const waiters = [...zeroReadyWaiters];
|
|
546
|
-
zeroReadyWaiters.clear();
|
|
547
|
-
for (const onReady of waiters) onReady(zeroInstance);
|
|
548
|
-
}
|
|
570
|
+
publishZeroInstance(zeroInstance);
|
|
549
571
|
(0, import_react2.useEffect)(() => {
|
|
550
572
|
zeroInstanceVersion?.emit(zeroInstanceVersion.value + 1);
|
|
551
573
|
}, [zeroInstance]);
|
|
552
574
|
return null;
|
|
553
575
|
};
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
576
|
+
function connectHeadless(props) {
|
|
577
|
+
const {
|
|
578
|
+
authData,
|
|
579
|
+
transport,
|
|
580
|
+
beforeReload,
|
|
581
|
+
scheduleReload,
|
|
582
|
+
guardStorage,
|
|
583
|
+
benignLogPatterns,
|
|
584
|
+
refreshAuth,
|
|
585
|
+
...options
|
|
586
|
+
} = props;
|
|
587
|
+
(0, import_state.setAuthData)(authData ?? null);
|
|
588
|
+
const zeroInstance = constructZeroInstance({
|
|
589
|
+
options,
|
|
590
|
+
transport,
|
|
591
|
+
beforeReload,
|
|
592
|
+
scheduleReload,
|
|
593
|
+
guardStorage,
|
|
594
|
+
benignLogPatterns
|
|
595
|
+
});
|
|
596
|
+
publishZeroInstance(zeroInstance);
|
|
597
|
+
zeroInstanceVersion?.emit(zeroInstanceVersion.value + 1);
|
|
598
|
+
const unwatch = watchZeroConnection({
|
|
599
|
+
zeroInstance,
|
|
600
|
+
refreshAuth
|
|
601
|
+
});
|
|
602
|
+
return {
|
|
603
|
+
zero: zeroInstance,
|
|
604
|
+
close: async () => {
|
|
605
|
+
unwatch();
|
|
606
|
+
clearZeroInstanceReferences(zeroInstance);
|
|
607
|
+
mutationLifecycle.fence();
|
|
608
|
+
await zeroInstance.close();
|
|
609
|
+
}
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
function watchZeroConnection(args) {
|
|
613
|
+
const {
|
|
614
|
+
zeroInstance,
|
|
615
|
+
refreshAuth,
|
|
616
|
+
exposeDataset,
|
|
617
|
+
datasetCacheUrl
|
|
618
|
+
} = args;
|
|
619
|
+
let prevState = zeroInstance.connection.state.current.name;
|
|
620
|
+
let hasConnected = false;
|
|
621
|
+
const currentReconnect = zeroEvents.value?.type === "reconnect" && zeroEvents.value.status !== "connected" ? zeroEvents.value : null;
|
|
622
|
+
let reconnect = currentReconnect ? {
|
|
566
623
|
reasonKey: currentReconnect.reasonKey,
|
|
567
624
|
reason: currentReconnect.reason
|
|
568
|
-
} : null
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
625
|
+
} : null;
|
|
626
|
+
let recoverableError = null;
|
|
627
|
+
let needsAuth = false;
|
|
628
|
+
const handle = () => {
|
|
629
|
+
const state = zeroInstance.connection.state.current;
|
|
572
630
|
const name = state.name;
|
|
573
631
|
const reason = "reason" in state && typeof state.reason === "string" ? state.reason : "";
|
|
574
632
|
if (exposeDataset && typeof document !== "undefined" && document.body) {
|
|
@@ -578,10 +636,10 @@ function createZeroClientInternal({
|
|
|
578
636
|
if (name === "connected") document.body.dataset.zeroConnected = "true";else delete document.body.dataset.zeroConnected;
|
|
579
637
|
}
|
|
580
638
|
if (name === "connected") {
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
if (
|
|
584
|
-
|
|
639
|
+
hasConnected = true;
|
|
640
|
+
recoverableError = null;
|
|
641
|
+
if (reconnect) {
|
|
642
|
+
reconnect = null;
|
|
585
643
|
emitReconnectStatus({
|
|
586
644
|
type: "reconnect",
|
|
587
645
|
status: "connected"
|
|
@@ -590,46 +648,46 @@ function createZeroClientInternal({
|
|
|
590
648
|
}
|
|
591
649
|
const reconnectReasonKey = reason.includes("ServerOverloaded") ? "server-overloaded" : reason.includes("Failed to fetch") || reason.includes("fetch failed") || reason.includes("NetworkError when attempting to fetch resource") || reason.includes("Network request failed") || reason.includes("Load failed") ? "transport" : void 0;
|
|
592
650
|
if (name === "error" && ((0, import_recoverZeroClient.isRecoverableZeroStalePokeMessage)(reason) || reconnectReasonKey)) {
|
|
593
|
-
if (
|
|
594
|
-
|
|
595
|
-
|
|
651
|
+
if (recoverableError !== reason) {
|
|
652
|
+
recoverableError = reason;
|
|
653
|
+
reconnect = {
|
|
596
654
|
reasonKey: reconnectReasonKey ?? "transport",
|
|
597
655
|
reason
|
|
598
656
|
};
|
|
599
657
|
emitReconnectStatus({
|
|
600
658
|
type: "reconnect",
|
|
601
659
|
status: "trying",
|
|
602
|
-
...
|
|
660
|
+
...reconnect
|
|
603
661
|
});
|
|
604
662
|
void Promise.resolve(zeroInstance.connection?.connect?.()).catch(() => {});
|
|
605
663
|
}
|
|
606
664
|
return;
|
|
607
665
|
}
|
|
608
|
-
if (name !== "error")
|
|
609
|
-
if (name === "connecting" && (
|
|
610
|
-
|
|
611
|
-
reasonKey: reconnectReasonKey ??
|
|
612
|
-
reason: reason ||
|
|
666
|
+
if (name !== "error") recoverableError = null;
|
|
667
|
+
if (name === "connecting" && (reconnect || hasConnected || Boolean(reason))) {
|
|
668
|
+
reconnect = {
|
|
669
|
+
reasonKey: reconnectReasonKey ?? reconnect?.reasonKey ?? "transport",
|
|
670
|
+
reason: reason || reconnect?.reason || "connection interrupted"
|
|
613
671
|
};
|
|
614
672
|
emitReconnectStatus({
|
|
615
673
|
type: "reconnect",
|
|
616
674
|
status: reason ? "waiting" : "trying",
|
|
617
|
-
...
|
|
675
|
+
...reconnect
|
|
618
676
|
});
|
|
619
|
-
} else if (name === "disconnected" && (
|
|
620
|
-
|
|
621
|
-
reasonKey:
|
|
622
|
-
reason: reason ||
|
|
677
|
+
} else if (name === "disconnected" && (reconnect || hasConnected)) {
|
|
678
|
+
reconnect = {
|
|
679
|
+
reasonKey: reconnect?.reasonKey ?? "transport",
|
|
680
|
+
reason: reason || reconnect?.reason || "connection interrupted"
|
|
623
681
|
};
|
|
624
682
|
emitReconnectStatus({
|
|
625
683
|
type: "reconnect",
|
|
626
684
|
status: "waiting",
|
|
627
|
-
...
|
|
685
|
+
...reconnect
|
|
628
686
|
});
|
|
629
687
|
}
|
|
630
688
|
if (name === "needs-auth") {
|
|
631
|
-
if (refreshAuth && !
|
|
632
|
-
|
|
689
|
+
if (refreshAuth && !needsAuth) {
|
|
690
|
+
needsAuth = true;
|
|
633
691
|
void refreshAuth().then(token => {
|
|
634
692
|
if (token) zeroInstance.connection?.connect?.({
|
|
635
693
|
auth: token
|
|
@@ -637,19 +695,36 @@ function createZeroClientInternal({
|
|
|
637
695
|
}).catch(() => {});
|
|
638
696
|
}
|
|
639
697
|
} else {
|
|
640
|
-
|
|
698
|
+
needsAuth = false;
|
|
641
699
|
}
|
|
642
|
-
if (name !== prevState
|
|
643
|
-
prevState
|
|
700
|
+
if (name !== prevState) {
|
|
701
|
+
prevState = name;
|
|
644
702
|
if (name === "error" || name === "needs-auth") {
|
|
645
|
-
|
|
703
|
+
zeroEvents.emit({
|
|
646
704
|
type: "error",
|
|
647
705
|
reasonKey: name === "needs-auth" ? "connection-needs-auth" : "connection-error",
|
|
648
706
|
message: reason || name
|
|
649
707
|
});
|
|
650
708
|
}
|
|
651
709
|
}
|
|
652
|
-
}
|
|
710
|
+
};
|
|
711
|
+
const unsubscribe = zeroInstance.connection.state.subscribe(handle);
|
|
712
|
+
handle();
|
|
713
|
+
return unsubscribe;
|
|
714
|
+
}
|
|
715
|
+
const ConnectionMonitor = (0, import_react2.memo)(({
|
|
716
|
+
zeroEvents: _zeroEvents,
|
|
717
|
+
refreshAuth,
|
|
718
|
+
exposeDataset,
|
|
719
|
+
datasetCacheUrl
|
|
720
|
+
}) => {
|
|
721
|
+
const zeroInstance = (0, import_react.useZero)();
|
|
722
|
+
(0, import_react2.useEffect)(() => watchZeroConnection({
|
|
723
|
+
zeroInstance,
|
|
724
|
+
refreshAuth,
|
|
725
|
+
exposeDataset,
|
|
726
|
+
datasetCacheUrl
|
|
727
|
+
}), [zeroInstance, refreshAuth, exposeDataset, datasetCacheUrl]);
|
|
653
728
|
return null;
|
|
654
729
|
});
|
|
655
730
|
function preload(fnArg, paramsOrOptions, optionsArg) {
|
|
@@ -686,6 +761,7 @@ function createZeroClientInternal({
|
|
|
686
761
|
zeroEvents,
|
|
687
762
|
reloadPage,
|
|
688
763
|
ProvideZero,
|
|
764
|
+
connectHeadless,
|
|
689
765
|
ControlQueries,
|
|
690
766
|
useQuery,
|
|
691
767
|
useQueryDirect,
|
|
@@ -298,4 +298,36 @@ async function mount(extraProps = {}, userID = "conn") {
|
|
|
298
298
|
} finally {
|
|
299
299
|
import_vitest.vi.useRealTimers();
|
|
300
300
|
}
|
|
301
|
+
});
|
|
302
|
+
(0, import_vitest.test)("connectHeadless refreshes auth on needs-auth with no react tree", async () => {
|
|
303
|
+
const headlessClient = (0, import_createZeroClient.createZeroClient)({
|
|
304
|
+
schema,
|
|
305
|
+
models: {},
|
|
306
|
+
groupedQueries: {},
|
|
307
|
+
instanceName: "headless-auth-test"
|
|
308
|
+
});
|
|
309
|
+
const refreshAuth = import_vitest.vi.fn(async () => "headless-fresh-token");
|
|
310
|
+
const connection = headlessClient.connectHeadless({
|
|
311
|
+
userID: "headless-auth",
|
|
312
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
313
|
+
refreshAuth
|
|
314
|
+
});
|
|
315
|
+
const instance = fakeZero.instances.at(-1);
|
|
316
|
+
instance.connection.state.set({
|
|
317
|
+
name: "needs-auth",
|
|
318
|
+
reason: "token expired"
|
|
319
|
+
});
|
|
320
|
+
await Promise.resolve();
|
|
321
|
+
(0, import_vitest.expect)(refreshAuth).toHaveBeenCalledTimes(1);
|
|
322
|
+
await Promise.resolve();
|
|
323
|
+
(0, import_vitest.expect)(instance.connection.connect).toHaveBeenCalledWith({
|
|
324
|
+
auth: "headless-fresh-token"
|
|
325
|
+
});
|
|
326
|
+
instance.connection.state.set({
|
|
327
|
+
name: "needs-auth",
|
|
328
|
+
reason: "token expired again"
|
|
329
|
+
});
|
|
330
|
+
await Promise.resolve();
|
|
331
|
+
(0, import_vitest.expect)(refreshAuth).toHaveBeenCalledTimes(1);
|
|
332
|
+
await connection.close();
|
|
301
333
|
});
|
|
@@ -375,4 +375,38 @@ async function mount() {
|
|
|
375
375
|
import_vitest.vi.useRealTimers();
|
|
376
376
|
}
|
|
377
377
|
});
|
|
378
|
+
(0, import_vitest.test)("connectHeadless refreshes auth on needs-auth with no react tree", async function () {
|
|
379
|
+
var headlessClient = (0, import_createZeroClient.createZeroClient)({
|
|
380
|
+
schema,
|
|
381
|
+
models: {},
|
|
382
|
+
groupedQueries: {},
|
|
383
|
+
instanceName: "headless-auth-test"
|
|
384
|
+
});
|
|
385
|
+
var refreshAuth = import_vitest.vi.fn(async function () {
|
|
386
|
+
return "headless-fresh-token";
|
|
387
|
+
});
|
|
388
|
+
var connection = headlessClient.connectHeadless({
|
|
389
|
+
userID: "headless-auth",
|
|
390
|
+
cacheURL: "http://127.0.0.1:7788/zero",
|
|
391
|
+
refreshAuth
|
|
392
|
+
});
|
|
393
|
+
var instance = fakeZero.instances.at(-1);
|
|
394
|
+
instance.connection.state.set({
|
|
395
|
+
name: "needs-auth",
|
|
396
|
+
reason: "token expired"
|
|
397
|
+
});
|
|
398
|
+
await Promise.resolve();
|
|
399
|
+
(0, import_vitest.expect)(refreshAuth).toHaveBeenCalledTimes(1);
|
|
400
|
+
await Promise.resolve();
|
|
401
|
+
(0, import_vitest.expect)(instance.connection.connect).toHaveBeenCalledWith({
|
|
402
|
+
auth: "headless-fresh-token"
|
|
403
|
+
});
|
|
404
|
+
instance.connection.state.set({
|
|
405
|
+
name: "needs-auth",
|
|
406
|
+
reason: "token expired again"
|
|
407
|
+
});
|
|
408
|
+
await Promise.resolve();
|
|
409
|
+
(0, import_vitest.expect)(refreshAuth).toHaveBeenCalledTimes(1);
|
|
410
|
+
await connection.close();
|
|
411
|
+
});
|
|
378
412
|
//# sourceMappingURL=createZeroClient.connection.test.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["import_jsx_runtime","require","import_zero","import_react","import_client","import_vitest","import_createZeroClient","_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","fakeZero","vi","hoisted","FakeConnectionState","FakeConnectionState2","initial","_this","Set","cb","listeners","add","delete","current","set","next","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","err","return","FakeZero","FakeZero2","state","name","connect","fn","errors","cleanup","complete","Promise","resolve","instances","push","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","noteTable","table","columns","id","string","body","primaryKey","schema","createSchema","tables","client","createZeroClient","models","groupedQueries","instanceName","container","root","beforeEach","document","createElement","dataset","zeroState","zeroConnected","zeroReason","afterEach","act","unmount","mount","extraProps","arguments","userID","createRoot","render","jsx","ProvideZero","cacheURL","children","at","test","readinessClient","ready","waitForZero","expect","toBe","install","transport","toHaveBeenCalledOnce","toHaveBeenCalledWith","refreshAuth","events","off","zeroEvents","listen","event","connection","reason","toHaveBeenCalledTimes","auth","toContainEqual","type","reasonKey","message","some"],"sources":["../../src/createZeroClient.connection.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["import_jsx_runtime","require","import_zero","import_react","import_client","import_vitest","import_createZeroClient","_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","fakeZero","vi","hoisted","FakeConnectionState","FakeConnectionState2","initial","_this","Set","cb","listeners","add","delete","current","set","next","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","err","return","FakeZero","FakeZero2","state","name","connect","fn","errors","cleanup","complete","Promise","resolve","instances","push","mock","importOriginal","actual","Zero","globalThis","IS_REACT_ACT_ENVIRONMENT","noteTable","table","columns","id","string","body","primaryKey","schema","createSchema","tables","client","createZeroClient","models","groupedQueries","instanceName","container","root","beforeEach","document","createElement","dataset","zeroState","zeroConnected","zeroReason","afterEach","act","unmount","mount","extraProps","arguments","userID","createRoot","render","jsx","ProvideZero","cacheURL","children","at","test","readinessClient","ready","waitForZero","expect","toBe","install","transport","toHaveBeenCalledOnce","toHaveBeenCalledWith","refreshAuth","events","off","zeroEvents","listen","event","connection","reason","toHaveBeenCalledTimes","auth","toContainEqual","type","reasonKey","message","some","status"],"sources":["../../src/createZeroClient.connection.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var import_zero = require("@rocicorp/zero");
|
|
2
|
+
var import_vitest = require("vitest");
|
|
3
|
+
var import_createZeroClient = require("./createZeroClient.cjs");
|
|
4
|
+
const userTable = (0, import_zero.table)("user").columns({
|
|
5
|
+
id: (0, import_zero.string)(),
|
|
6
|
+
name: (0, import_zero.string)()
|
|
7
|
+
}).primaryKey("id");
|
|
8
|
+
const schema = (0, import_zero.createSchema)({
|
|
9
|
+
tables: [userTable]
|
|
10
|
+
});
|
|
11
|
+
const byId = args => args;
|
|
12
|
+
(0, import_vitest.test)("connectHeadless publishes the instance with no react tree", async () => {
|
|
13
|
+
const client = (0, import_createZeroClient.createZeroClient)({
|
|
14
|
+
schema,
|
|
15
|
+
models: {},
|
|
16
|
+
groupedQueries: {
|
|
17
|
+
headlessTest: {
|
|
18
|
+
byId
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
instanceName: "headless-test"
|
|
22
|
+
});
|
|
23
|
+
const pending = /* @__PURE__ */Symbol("pending");
|
|
24
|
+
const before = await Promise.race([client.waitForZero(), Promise.resolve(pending)]);
|
|
25
|
+
(0, import_vitest.expect)(before).toBe(pending);
|
|
26
|
+
const connection = client.connectHeadless({
|
|
27
|
+
userID: "user-headless",
|
|
28
|
+
kvStore: "mem",
|
|
29
|
+
storageKey: "headless-test"
|
|
30
|
+
});
|
|
31
|
+
(0, import_vitest.expect)(await client.waitForZero()).toBe(connection.zero);
|
|
32
|
+
await connection.close();
|
|
33
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var import_zero = require("@rocicorp/zero");
|
|
4
|
+
var import_vitest = require("vitest");
|
|
5
|
+
var import_createZeroClient = require("./createZeroClient.native.js");
|
|
6
|
+
var userTable = (0, import_zero.table)("user").columns({
|
|
7
|
+
id: (0, import_zero.string)(),
|
|
8
|
+
name: (0, import_zero.string)()
|
|
9
|
+
}).primaryKey("id");
|
|
10
|
+
var schema = (0, import_zero.createSchema)({
|
|
11
|
+
tables: [userTable]
|
|
12
|
+
});
|
|
13
|
+
var byId = function byId2(args) {
|
|
14
|
+
return args;
|
|
15
|
+
};
|
|
16
|
+
(0, import_vitest.test)("connectHeadless publishes the instance with no react tree", async function () {
|
|
17
|
+
var client = (0, import_createZeroClient.createZeroClient)({
|
|
18
|
+
schema,
|
|
19
|
+
models: {},
|
|
20
|
+
groupedQueries: {
|
|
21
|
+
headlessTest: {
|
|
22
|
+
byId
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
instanceName: "headless-test"
|
|
26
|
+
});
|
|
27
|
+
var pending = /* @__PURE__ */Symbol("pending");
|
|
28
|
+
var before = await Promise.race([client.waitForZero(), Promise.resolve(pending)]);
|
|
29
|
+
(0, import_vitest.expect)(before).toBe(pending);
|
|
30
|
+
var connection = client.connectHeadless({
|
|
31
|
+
userID: "user-headless",
|
|
32
|
+
kvStore: "mem",
|
|
33
|
+
storageKey: "headless-test"
|
|
34
|
+
});
|
|
35
|
+
(0, import_vitest.expect)(await client.waitForZero()).toBe(connection.zero);
|
|
36
|
+
await connection.close();
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=createZeroClient.headless.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["import_zero","require","import_vitest","import_createZeroClient","userTable","table","columns","id","string","name","primaryKey","schema","createSchema","tables","byId","byId2","args","test","client","createZeroClient","models","groupedQueries","headlessTest","instanceName"],"sources":["../../src/createZeroClient.headless.test.tsx"],"sourcesContent":[null],"mappings":"AAEA;;AACA,IAAAA,WAAA,GAAAC,OAA6B;AAE7B,IAAAC,aAAA,GAAAD,OAAA,SAAiC;AAIjC,IAAAE,uBAAkB,GAAAF,OAAA,+BAAsB,CAAE;AAC1C,IAAAG,SAAM,OAASJ,WAAA,CAAAK,KAAA,QAAa,EAAEC,OAAA,CAAQ;EAEtCC,EAAA,EAAM,IAAAP,WAAQ,CAAAQ,MAAyB;EAAAC,IAOvC,MAAAT,WAAA,CAAKQ,MAAA;AACH,GAAAE,UAAM;AAA0B,IAC9BC,MAAA,OAAAX,WAAA,CAAAY,YAAA;EAAAC,MACA,GACAT,SAAA;AACc,EAChB;AAKA,IAAAU,IAAM,YAAUC,MAAAC,IAAA;EAChB,OAAMA,IAAA;AAA4B;AACb,IACnBd,aAAQ,CAAAe,IAAQ,6DAA2B;EAC7C,IAACC,MAAA,OAAAf,uBAAA,CAAAgB,gBAAA;IACDR,MAAA;IAEAS,MAAM;IACJC,cAAQ;MACRC,YAAS;QACTR;MACD;IAED;IAEAS,YAAM;EACP","ignoreList":[]}
|