on-zero 0.8.3 → 0.8.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/README.md +15 -2
- package/dist/cjs/combineZeroClients.cjs +21 -1
- package/dist/cjs/combineZeroClients.native.js +34 -9
- package/dist/cjs/combineZeroClients.native.js.map +1 -1
- package/dist/cjs/createZeroClient.cjs +81 -8
- package/dist/cjs/createZeroClient.connection.test.cjs +67 -0
- package/dist/cjs/createZeroClient.connection.test.native.js +69 -0
- package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -1
- package/dist/cjs/createZeroClient.native.js +85 -9
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroClient.recovery.test.cjs +19 -8
- package/dist/cjs/createZeroClient.recovery.test.native.js +20 -8
- package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.cjs +0 -3
- package/dist/cjs/helpers/recoverZeroClient.native.js +0 -3
- package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/cjs/multiInstance.test.cjs +54 -0
- package/dist/cjs/multiInstance.test.native.js +58 -0
- package/dist/cjs/multiInstance.test.native.js.map +1 -1
- package/dist/esm/combineZeroClients.mjs +21 -1
- package/dist/esm/combineZeroClients.mjs.map +1 -1
- package/dist/esm/combineZeroClients.native.js +34 -9
- package/dist/esm/combineZeroClients.native.js.map +1 -1
- package/dist/esm/createZeroClient.connection.test.mjs +67 -0
- package/dist/esm/createZeroClient.connection.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.connection.test.native.js +69 -0
- package/dist/esm/createZeroClient.connection.test.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +81 -8
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +85 -9
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.mjs +19 -8
- package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.native.js +20 -8
- package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs +0 -3
- package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.native.js +0 -3
- package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/esm/multiInstance.test.mjs +54 -0
- package/dist/esm/multiInstance.test.mjs.map +1 -1
- package/dist/esm/multiInstance.test.native.js +58 -0
- package/dist/esm/multiInstance.test.native.js.map +1 -1
- package/package.json +1 -1
- package/src/combineZeroClients.tsx +30 -1
- package/src/createZeroClient.connection.test.tsx +66 -0
- package/src/createZeroClient.recovery.test.tsx +21 -12
- package/src/createZeroClient.tsx +127 -18
- package/src/helpers/recoverZeroClient.ts +0 -13
- package/src/multiInstance.test.tsx +49 -0
- package/src/types.ts +13 -2
- package/types/combineZeroClients.d.ts +2 -0
- package/types/combineZeroClients.d.ts.map +1 -1
- package/types/createZeroClient.d.ts +2 -0
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/helpers/recoverZeroClient.d.ts +1 -6
- package/types/helpers/recoverZeroClient.d.ts.map +1 -1
- package/types/types.d.ts +10 -1
- package/types/types.d.ts.map +1 -1
package/src/createZeroClient.tsx
CHANGED
|
@@ -61,6 +61,7 @@ import type {
|
|
|
61
61
|
GetZeroMutators,
|
|
62
62
|
ZeroEvent,
|
|
63
63
|
ZeroEventsEmitter,
|
|
64
|
+
ZeroReconnectReasonKey,
|
|
64
65
|
} from './types'
|
|
65
66
|
import type {
|
|
66
67
|
AnyQueryRegistry,
|
|
@@ -100,8 +101,8 @@ export type CreateZeroClientOptions<
|
|
|
100
101
|
models: Models
|
|
101
102
|
groupedQueries: GroupedQueries
|
|
102
103
|
permissionStrategy?: PermissionStrategy
|
|
103
|
-
// repeated server acknowledgement timeouts
|
|
104
|
-
// remains a normal slow-server failure
|
|
104
|
+
// repeated server acknowledgement timeouts reconnect with the existing local
|
|
105
|
+
// state. one timeout remains a normal slow-server failure.
|
|
105
106
|
serverAckTimeoutRecoveryThreshold?: number
|
|
106
107
|
// names this client instance so multiple instances can coexist on one page.
|
|
107
108
|
// each query/mutator namespace is claimed by exactly one instance, and the
|
|
@@ -371,11 +372,6 @@ export function createZeroClientInternal<
|
|
|
371
372
|
null
|
|
372
373
|
)
|
|
373
374
|
|
|
374
|
-
let recoverFromAckTimeout: (input: {
|
|
375
|
-
label: string
|
|
376
|
-
timeoutMs: number
|
|
377
|
-
consecutiveTimeouts: number
|
|
378
|
-
}) => void = () => {}
|
|
379
375
|
const ackTimeoutRecoveryThreshold =
|
|
380
376
|
Number.isFinite(serverAckTimeoutRecoveryThreshold) &&
|
|
381
377
|
serverAckTimeoutRecoveryThreshold >= 2
|
|
@@ -383,7 +379,12 @@ export function createZeroClientInternal<
|
|
|
383
379
|
: 2
|
|
384
380
|
const mutationLifecycle = createMutationLifecycle({
|
|
385
381
|
ackTimeoutRecoveryThreshold,
|
|
386
|
-
recoverFromAckTimeout: (input) =>
|
|
382
|
+
recoverFromAckTimeout: (input) => {
|
|
383
|
+
void reconnectInPlace(
|
|
384
|
+
'server-ack-timeout',
|
|
385
|
+
`${input.label} server acknowledgement timed out ${input.consecutiveTimeouts} consecutive times (${input.timeoutMs}ms each)`
|
|
386
|
+
)
|
|
387
|
+
},
|
|
387
388
|
})
|
|
388
389
|
|
|
389
390
|
const zeroInstanceVersion = createDirectUseQuery
|
|
@@ -566,6 +567,36 @@ export function createZeroClientInternal<
|
|
|
566
567
|
return true
|
|
567
568
|
}
|
|
568
569
|
|
|
570
|
+
function emitReconnectStatus(event: Extract<ZeroEvent, { type: 'reconnect' }>): void {
|
|
571
|
+
const current = zeroEvents.value
|
|
572
|
+
if (
|
|
573
|
+
current?.type === 'reconnect' &&
|
|
574
|
+
current.status === event.status &&
|
|
575
|
+
('reasonKey' in current ? current.reasonKey : undefined) ===
|
|
576
|
+
('reasonKey' in event ? event.reasonKey : undefined) &&
|
|
577
|
+
('reason' in current ? current.reason : undefined) ===
|
|
578
|
+
('reason' in event ? event.reason : undefined)
|
|
579
|
+
) {
|
|
580
|
+
return
|
|
581
|
+
}
|
|
582
|
+
zeroEvents.emit(event)
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
async function reconnectInPlace(
|
|
586
|
+
reasonKey: ZeroReconnectReasonKey,
|
|
587
|
+
reason: string
|
|
588
|
+
): Promise<boolean> {
|
|
589
|
+
emitReconnectStatus({ type: 'reconnect', status: 'trying', reasonKey, reason })
|
|
590
|
+
return remint({ dropLocalState: false })
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
function reloadPage(): boolean {
|
|
594
|
+
const location = globalThis.location
|
|
595
|
+
if (!location?.reload) return false
|
|
596
|
+
location.reload()
|
|
597
|
+
return true
|
|
598
|
+
}
|
|
599
|
+
|
|
569
600
|
// when ProvideZero is rendered without a real Zero instance (SSG, disable=true,
|
|
570
601
|
// or transiently while the active path is still creating its first instance),
|
|
571
602
|
// we want descendants' useZero() / useConnectionState() / on-zero useQuery to
|
|
@@ -846,7 +877,6 @@ export function createZeroClientInternal<
|
|
|
846
877
|
onRecovery: () => mutationLifecycle.fence(),
|
|
847
878
|
}
|
|
848
879
|
const recovery = makeZeroRecovery(recoveryDeps)
|
|
849
|
-
recoverFromAckTimeout = recovery.onServerAckTimeout
|
|
850
880
|
const createdInstance = new ZeroClient<Schema, ZeroMutators>({
|
|
851
881
|
kvStore: 'mem',
|
|
852
882
|
...options,
|
|
@@ -976,9 +1006,25 @@ export function createZeroClientInternal<
|
|
|
976
1006
|
const zeroInstance = useZero<Schema, ZeroMutators>()
|
|
977
1007
|
const state = useConnectionState()
|
|
978
1008
|
const prevState = useRef(state.name)
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
1009
|
+
const hasConnectedRef = useRef(false)
|
|
1010
|
+
const currentReconnect =
|
|
1011
|
+
zeroEvents.value?.type === 'reconnect' && zeroEvents.value.status !== 'connected'
|
|
1012
|
+
? zeroEvents.value
|
|
1013
|
+
: null
|
|
1014
|
+
const reconnectRef = useRef<{
|
|
1015
|
+
reasonKey: ZeroReconnectReasonKey
|
|
1016
|
+
reason: string
|
|
1017
|
+
} | null>(
|
|
1018
|
+
currentReconnect
|
|
1019
|
+
? {
|
|
1020
|
+
reasonKey: currentReconnect.reasonKey,
|
|
1021
|
+
reason: currentReconnect.reason,
|
|
1022
|
+
}
|
|
1023
|
+
: null
|
|
1024
|
+
)
|
|
1025
|
+
// one reconnect per distinct recoverable error / one refresh per
|
|
1026
|
+
// needs-auth transition, so a stuck state doesn't retry-storm.
|
|
1027
|
+
const recoverableErrorRef = useRef<string | null>(null)
|
|
982
1028
|
const needsAuthRef = useRef(false)
|
|
983
1029
|
|
|
984
1030
|
useEffect(() => {
|
|
@@ -997,16 +1043,78 @@ export function createZeroClientInternal<
|
|
|
997
1043
|
else delete document.body.dataset.zeroConnected
|
|
998
1044
|
}
|
|
999
1045
|
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
if (
|
|
1004
|
-
|
|
1046
|
+
if (name === 'connected') {
|
|
1047
|
+
hasConnectedRef.current = true
|
|
1048
|
+
recoverableErrorRef.current = null
|
|
1049
|
+
if (reconnectRef.current) {
|
|
1050
|
+
reconnectRef.current = null
|
|
1051
|
+
emitReconnectStatus({ type: 'reconnect', status: 'connected' })
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
const reconnectReasonKey: ZeroReconnectReasonKey | undefined = reason.includes(
|
|
1056
|
+
'ServerOverloaded'
|
|
1057
|
+
)
|
|
1058
|
+
? 'server-overloaded'
|
|
1059
|
+
: reason.includes('Failed to fetch') ||
|
|
1060
|
+
reason.includes('fetch failed') ||
|
|
1061
|
+
reason.includes('NetworkError when attempting to fetch resource') ||
|
|
1062
|
+
reason.includes('Network request failed') ||
|
|
1063
|
+
reason.includes('Load failed')
|
|
1064
|
+
? 'transport'
|
|
1065
|
+
: undefined
|
|
1066
|
+
|
|
1067
|
+
// stale-poke and paused transport errors both resume the existing
|
|
1068
|
+
// client. ServerOverloaded remains in Zero's own retry/backoff loop.
|
|
1069
|
+
if (
|
|
1070
|
+
name === 'error' &&
|
|
1071
|
+
(isRecoverableZeroStalePokeMessage(reason) || reconnectReasonKey)
|
|
1072
|
+
) {
|
|
1073
|
+
if (recoverableErrorRef.current !== reason) {
|
|
1074
|
+
recoverableErrorRef.current = reason
|
|
1075
|
+
reconnectRef.current = {
|
|
1076
|
+
reasonKey: reconnectReasonKey ?? 'transport',
|
|
1077
|
+
reason,
|
|
1078
|
+
}
|
|
1079
|
+
emitReconnectStatus({
|
|
1080
|
+
type: 'reconnect',
|
|
1081
|
+
status: 'trying',
|
|
1082
|
+
...reconnectRef.current,
|
|
1083
|
+
})
|
|
1005
1084
|
void Promise.resolve(zeroInstance.connection?.connect?.()).catch(() => {})
|
|
1006
1085
|
}
|
|
1007
1086
|
return
|
|
1008
1087
|
}
|
|
1009
|
-
if (name !== 'error')
|
|
1088
|
+
if (name !== 'error') recoverableErrorRef.current = null
|
|
1089
|
+
|
|
1090
|
+
if (
|
|
1091
|
+
name === 'connecting' &&
|
|
1092
|
+
(reconnectRef.current || hasConnectedRef.current || Boolean(reason))
|
|
1093
|
+
) {
|
|
1094
|
+
reconnectRef.current = {
|
|
1095
|
+
reasonKey:
|
|
1096
|
+
reconnectReasonKey ?? reconnectRef.current?.reasonKey ?? 'transport',
|
|
1097
|
+
reason: reason || reconnectRef.current?.reason || 'connection interrupted',
|
|
1098
|
+
}
|
|
1099
|
+
emitReconnectStatus({
|
|
1100
|
+
type: 'reconnect',
|
|
1101
|
+
status: reason ? 'waiting' : 'trying',
|
|
1102
|
+
...reconnectRef.current,
|
|
1103
|
+
})
|
|
1104
|
+
} else if (
|
|
1105
|
+
name === 'disconnected' &&
|
|
1106
|
+
(reconnectRef.current || hasConnectedRef.current)
|
|
1107
|
+
) {
|
|
1108
|
+
reconnectRef.current = {
|
|
1109
|
+
reasonKey: reconnectRef.current?.reasonKey ?? 'transport',
|
|
1110
|
+
reason: reason || reconnectRef.current?.reason || 'connection interrupted',
|
|
1111
|
+
}
|
|
1112
|
+
emitReconnectStatus({
|
|
1113
|
+
type: 'reconnect',
|
|
1114
|
+
status: 'waiting',
|
|
1115
|
+
...reconnectRef.current,
|
|
1116
|
+
})
|
|
1117
|
+
}
|
|
1010
1118
|
|
|
1011
1119
|
// needs-auth: the token expired and zero won't auto-resume unless the
|
|
1012
1120
|
// auth string changes. refresh it and reconnect in place, once.
|
|
@@ -1092,6 +1200,7 @@ export function createZeroClientInternal<
|
|
|
1092
1200
|
return {
|
|
1093
1201
|
instanceName,
|
|
1094
1202
|
zeroEvents,
|
|
1203
|
+
reloadPage,
|
|
1095
1204
|
ProvideZero,
|
|
1096
1205
|
ControlQueries,
|
|
1097
1206
|
useQuery,
|
|
@@ -30,7 +30,6 @@ export type ZeroRecoveryLogClassification = {
|
|
|
30
30
|
| 'VersionNotSupported'
|
|
31
31
|
| 'SchemaVersionNotSupported'
|
|
32
32
|
| 'client-state-not-found'
|
|
33
|
-
| 'server-ack-timeout'
|
|
34
33
|
>
|
|
35
34
|
message: string
|
|
36
35
|
dropLocalState: boolean
|
|
@@ -278,18 +277,6 @@ export function makeZeroRecovery(deps: ZeroRecoveryDeps) {
|
|
|
278
277
|
// drop it and reload into a fresh client.
|
|
279
278
|
recover(deps, 'client-state-not-found', 'client state not found', true)
|
|
280
279
|
},
|
|
281
|
-
onServerAckTimeout(input: {
|
|
282
|
-
label: string
|
|
283
|
-
timeoutMs: number
|
|
284
|
-
consecutiveTimeouts: number
|
|
285
|
-
}) {
|
|
286
|
-
recover(
|
|
287
|
-
deps,
|
|
288
|
-
'server-ack-timeout',
|
|
289
|
-
`${input.label} server acknowledgement timed out ${input.consecutiveTimeouts} consecutive times (${input.timeoutMs}ms each)`,
|
|
290
|
-
true
|
|
291
|
-
)
|
|
292
|
-
},
|
|
293
280
|
}
|
|
294
281
|
}
|
|
295
282
|
|
|
@@ -66,6 +66,7 @@ function fakeClient(name: string, namespaces: string[], zeroStub: unknown) {
|
|
|
66
66
|
preload: vi.fn(() => `${name}-preload`),
|
|
67
67
|
getQuery: vi.fn(() => `${name}-getQuery`),
|
|
68
68
|
zeroEvents: createEmitter<ZeroEvent | null>(`zero:test-${name}`, null),
|
|
69
|
+
reloadPage: vi.fn(() => true),
|
|
69
70
|
ControlQueries: ({ children }: { children: ReactNode }) => children,
|
|
70
71
|
}
|
|
71
72
|
}
|
|
@@ -283,6 +284,9 @@ describe('combineZeroClients facade', () => {
|
|
|
283
284
|
expect(zero.userID).toBe('primary-user')
|
|
284
285
|
// unclaimed namespaces fall back to the primary instance
|
|
285
286
|
expect(zero.mutate.unknownNs).toBe(undefined)
|
|
287
|
+
expect(combined.reloadPage()).toBe(true)
|
|
288
|
+
expect(control.reloadPage).toHaveBeenCalledOnce()
|
|
289
|
+
expect(project.reloadPage).not.toHaveBeenCalled()
|
|
286
290
|
})
|
|
287
291
|
|
|
288
292
|
test('useQuery/preload/getQuery/usePermission dispatch by namespace', () => {
|
|
@@ -385,4 +389,49 @@ describe('combineZeroClients facade', () => {
|
|
|
385
389
|
expect(messageOf(a.zeroEvents.value)).toBe('from-a')
|
|
386
390
|
expect(messageOf(b.zeroEvents.value)).toBe('from-b')
|
|
387
391
|
})
|
|
392
|
+
|
|
393
|
+
test('combined zeroEvents stays pending until every instance reconnects', () => {
|
|
394
|
+
const { client: a } = makeClient('reconnect-a', 'reconnectA')
|
|
395
|
+
const { client: b } = makeClient('reconnect-b', 'reconnectB')
|
|
396
|
+
const combined = combineZeroClients(a, b)
|
|
397
|
+
const seen: Array<ZeroEvent | null> = []
|
|
398
|
+
combined.zeroEvents.listen((event) => seen.push(event))
|
|
399
|
+
|
|
400
|
+
a.zeroEvents.emit({
|
|
401
|
+
type: 'reconnect',
|
|
402
|
+
status: 'waiting',
|
|
403
|
+
reasonKey: 'server-overloaded',
|
|
404
|
+
reason: 'busy',
|
|
405
|
+
})
|
|
406
|
+
b.zeroEvents.emit({
|
|
407
|
+
type: 'reconnect',
|
|
408
|
+
status: 'trying',
|
|
409
|
+
reasonKey: 'transport',
|
|
410
|
+
reason: 'fetch failed',
|
|
411
|
+
})
|
|
412
|
+
a.zeroEvents.emit({ type: 'reconnect', status: 'connected' })
|
|
413
|
+
b.zeroEvents.emit({ type: 'reconnect', status: 'connected' })
|
|
414
|
+
|
|
415
|
+
expect(seen).toEqual([
|
|
416
|
+
{
|
|
417
|
+
type: 'reconnect',
|
|
418
|
+
status: 'waiting',
|
|
419
|
+
reasonKey: 'server-overloaded',
|
|
420
|
+
reason: 'busy',
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
type: 'reconnect',
|
|
424
|
+
status: 'waiting',
|
|
425
|
+
reasonKey: 'server-overloaded',
|
|
426
|
+
reason: 'busy',
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
type: 'reconnect',
|
|
430
|
+
status: 'trying',
|
|
431
|
+
reasonKey: 'transport',
|
|
432
|
+
reason: 'fetch failed',
|
|
433
|
+
},
|
|
434
|
+
{ type: 'reconnect', status: 'connected' },
|
|
435
|
+
])
|
|
436
|
+
})
|
|
388
437
|
})
|
package/src/types.ts
CHANGED
|
@@ -166,8 +166,15 @@ export type ZeroEvent =
|
|
|
166
166
|
reasonKey: 'connection-error' | 'connection-needs-auth'
|
|
167
167
|
message: string
|
|
168
168
|
}
|
|
169
|
-
|
|
170
|
-
|
|
169
|
+
| {
|
|
170
|
+
type: 'reconnect'
|
|
171
|
+
status: 'trying' | 'waiting'
|
|
172
|
+
reasonKey: ZeroReconnectReasonKey
|
|
173
|
+
reason: string
|
|
174
|
+
}
|
|
175
|
+
| { type: 'reconnect'; status: 'connected' }
|
|
176
|
+
// destructive recovery lifecycle: 'recovering' = optionally dropping local
|
|
177
|
+
// state + reloading; 'fatal' = the reload loop guard tripped.
|
|
171
178
|
| { type: 'recovering'; reasonKey: ZeroRecoveryReasonKey; reason: string }
|
|
172
179
|
| { type: 'fatal'; reasonKey: ZeroRecoveryReasonKey; reason: string }
|
|
173
180
|
|
|
@@ -194,6 +201,10 @@ export type ZeroRecoveryReasonKey =
|
|
|
194
201
|
| 'connection-cookie-invalid'
|
|
195
202
|
| 'client-not-found'
|
|
196
203
|
| 'connection-userid-mismatch'
|
|
204
|
+
|
|
205
|
+
export type ZeroReconnectReasonKey =
|
|
206
|
+
| 'transport'
|
|
207
|
+
| 'server-overloaded'
|
|
197
208
|
| 'server-ack-timeout'
|
|
198
209
|
|
|
199
210
|
/**
|
|
@@ -16,6 +16,7 @@ type CombinableZeroClient = {
|
|
|
16
16
|
preload: (...args: any[]) => any;
|
|
17
17
|
getQuery: (...args: any[]) => any;
|
|
18
18
|
zeroEvents: ZeroEventsEmitter;
|
|
19
|
+
reloadPage: () => boolean;
|
|
19
20
|
ControlQueries: (props: ControlQueriesProps) => ReactNode;
|
|
20
21
|
};
|
|
21
22
|
export type CombineZeroClientsOptions = {
|
|
@@ -37,6 +38,7 @@ export type CombinedZeroClients<Clients extends readonly CombinableZeroClient[]>
|
|
|
37
38
|
getQuery: UnionToIntersection<Clients[number]['getQuery']>;
|
|
38
39
|
run: typeof run;
|
|
39
40
|
zeroEvents: ZeroEventsEmitter;
|
|
41
|
+
reloadPage: () => boolean;
|
|
40
42
|
ControlQueries: (props: ControlQueriesProps) => ReactNode;
|
|
41
43
|
};
|
|
42
44
|
export declare function combineZeroClients<const Clients extends readonly [CombinableZeroClient, ...CombinableZeroClient[]]>(...clientsAndOptions: [...Clients] | [...Clients, CombineZeroClientsOptions]): CombinedZeroClients<Clients>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combineZeroClients.d.ts","sourceRoot":"","sources":["../src/combineZeroClients.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"combineZeroClients.d.ts","sourceRoot":"","sources":["../src/combineZeroClients.tsx"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,7 @@ export type DirectQueryAdapter<Schema extends ZeroSchema> = (props: {
|
|
|
37
37
|
export declare function createZeroClient<Schema extends ZeroSchema, Models extends GenericModels>(options: CreateZeroClientOptions<Schema, Models>): {
|
|
38
38
|
instanceName: string;
|
|
39
39
|
zeroEvents: ZeroEventsEmitter;
|
|
40
|
+
reloadPage: () => boolean;
|
|
40
41
|
ProvideZero: ({ children, authData: authDataIn }: Omit<ZeroOptions<Schema, GetZeroMutators<Models>>, "schema" | "mutators"> & {
|
|
41
42
|
children: ReactNode;
|
|
42
43
|
authData?: {} | null | undefined;
|
|
@@ -86,6 +87,7 @@ export declare function createZeroClientInternal<Schema extends ZeroSchema, Mode
|
|
|
86
87
|
}): {
|
|
87
88
|
instanceName: string;
|
|
88
89
|
zeroEvents: ZeroEventsEmitter;
|
|
90
|
+
reloadPage: () => boolean;
|
|
89
91
|
ProvideZero: ({ children, authData: authDataIn }: Omit<ZeroOptions<Schema, GetZeroMutators<Models>>, "schema" | "mutators"> & {
|
|
90
92
|
children: ReactNode;
|
|
91
93
|
authData?: AuthData | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroClient.d.ts","sourceRoot":"","sources":["../src/createZeroClient.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,IAAI,UAAU,EACnB,MAAM,gBAAgB,CAAA;AAOvB,OAAO,EASL,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAGd,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAK/D,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAEpB,MAAM,6BAA6B,CAAA;AAIpC,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAOhE,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EAEf,iBAAiB,
|
|
1
|
+
{"version":3,"file":"createZeroClient.d.ts","sourceRoot":"","sources":["../src/createZeroClient.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { ZeroEventsEmitter, ZeroRecoveryReasonKey } from '../types';
|
|
|
2
2
|
import type { LogLevel, LogSink } from '@rocicorp/logger';
|
|
3
3
|
import type { UpdateNeededReason } from '@rocicorp/zero';
|
|
4
4
|
export type ZeroRecoveryLogClassification = {
|
|
5
|
-
reasonKey: Exclude<ZeroRecoveryReasonKey, 'NewClientGroup' | 'VersionNotSupported' | 'SchemaVersionNotSupported' | 'client-state-not-found'
|
|
5
|
+
reasonKey: Exclude<ZeroRecoveryReasonKey, 'NewClientGroup' | 'VersionNotSupported' | 'SchemaVersionNotSupported' | 'client-state-not-found'>;
|
|
6
6
|
message: string;
|
|
7
7
|
dropLocalState: boolean;
|
|
8
8
|
};
|
|
@@ -30,11 +30,6 @@ export type ZeroRecoveryDeps = {
|
|
|
30
30
|
export declare function makeZeroRecovery(deps: ZeroRecoveryDeps): {
|
|
31
31
|
onUpdateNeeded(reason: UpdateNeededReason): void;
|
|
32
32
|
onClientStateNotFound(): void;
|
|
33
|
-
onServerAckTimeout(input: {
|
|
34
|
-
label: string;
|
|
35
|
-
timeoutMs: number;
|
|
36
|
-
consecutiveTimeouts: number;
|
|
37
|
-
}): void;
|
|
38
33
|
};
|
|
39
34
|
export declare function classifyZeroRecoveryLog(level: LogLevel | string, args: readonly unknown[], nowMs?: number): ZeroRecoveryLogClassification | undefined;
|
|
40
35
|
export declare function composeRecoveryLogSink(deps: ZeroRecoveryDeps, consumerLogSink?: LogSink): LogSink;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoverZeroClient.d.ts","sourceRoot":"","sources":["../../src/helpers/recoverZeroClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACxE,OAAO,KAAK,EAAW,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAuBxD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,OAAO,CAChB,qBAAqB,EACnB,gBAAgB,GAChB,qBAAqB,GACrB,2BAA2B,GAC3B,wBAAwB,
|
|
1
|
+
{"version":3,"file":"recoverZeroClient.d.ts","sourceRoot":"","sources":["../../src/helpers/recoverZeroClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACxE,OAAO,KAAK,EAAW,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAuBxD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,OAAO,CAChB,qBAAqB,EACnB,gBAAgB,GAChB,qBAAqB,GACrB,2BAA2B,GAC3B,wBAAwB,CAC3B,CAAA;IACD,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAA;AAM5C,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACvC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAKD,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,qBAAqB,CAAA;IAChC,cAAc,EAAE,OAAO,CAAA;IAGvB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAI7B,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,UAAU,EAAE,iBAAiB,CAAA;IAG7B,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAIlC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,IAAI,CAAA;IAGrD,YAAY,CAAC,EAAE,oBAAoB,CAAA;IAEnC,iBAAiB,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IAG7C,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,qBAAqB,KAAK,IAAI,CAAA;IAEvD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AA4KD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB;2BAE5B,kBAAkB;;EAsB5C;AA+FD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,KAAK,SAAa,GACjB,6BAA6B,GAAG,SAAS,CAqC3C;AAOD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,EACtB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAiBT;AAWD,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO1E;AAMD,wBAAgB,0BAA0B,SAUzC"}
|
package/types/types.d.ts
CHANGED
|
@@ -94,6 +94,14 @@ export type ZeroEvent = {
|
|
|
94
94
|
type: 'error';
|
|
95
95
|
reasonKey: 'connection-error' | 'connection-needs-auth';
|
|
96
96
|
message: string;
|
|
97
|
+
} | {
|
|
98
|
+
type: 'reconnect';
|
|
99
|
+
status: 'trying' | 'waiting';
|
|
100
|
+
reasonKey: ZeroReconnectReasonKey;
|
|
101
|
+
reason: string;
|
|
102
|
+
} | {
|
|
103
|
+
type: 'reconnect';
|
|
104
|
+
status: 'connected';
|
|
97
105
|
} | {
|
|
98
106
|
type: 'recovering';
|
|
99
107
|
reasonKey: ZeroRecoveryReasonKey;
|
|
@@ -113,7 +121,8 @@ export type ZeroEventsEmitter = {
|
|
|
113
121
|
listen: (listener: (value: ZeroEvent | null) => void) => () => void;
|
|
114
122
|
emit: (next: ZeroEvent | null) => void;
|
|
115
123
|
};
|
|
116
|
-
export type ZeroRecoveryReasonKey = 'NewClientGroup' | 'VersionNotSupported' | 'SchemaVersionNotSupported' | 'client-state-not-found' | 'indexeddb-not-found' | 'sqlite-statement-finalized' | 'store-closed-repeat' | 'mutation-desync' | 'connection-cookie-invalid' | 'client-not-found' | 'connection-userid-mismatch'
|
|
124
|
+
export type ZeroRecoveryReasonKey = 'NewClientGroup' | 'VersionNotSupported' | 'SchemaVersionNotSupported' | 'client-state-not-found' | 'indexeddb-not-found' | 'sqlite-statement-finalized' | 'store-closed-repeat' | 'mutation-desync' | 'connection-cookie-invalid' | 'client-not-found' | 'connection-userid-mismatch';
|
|
125
|
+
export type ZeroReconnectReasonKey = 'transport' | 'server-overloaded' | 'server-ack-timeout';
|
|
117
126
|
/**
|
|
118
127
|
* Admin role bypass for permissions:
|
|
119
128
|
* - 'all': admin bypasses both query and mutation permissions (default)
|
package/types/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|