on-zero 0.16.5 → 0.16.6
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 +58 -23
- package/dist/cjs/createZeroClient.connection.test.cjs +94 -3
- package/dist/cjs/createZeroClient.connection.test.native.js +110 -11
- package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -1
- package/dist/cjs/createZeroClient.native.js +68 -31
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/createZeroClient.recovery.test.cjs +41 -0
- package/dist/cjs/createZeroClient.recovery.test.native.js +44 -0
- package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/createZeroClient.connection.test.mjs +95 -4
- package/dist/esm/createZeroClient.connection.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.connection.test.native.js +111 -12
- package/dist/esm/createZeroClient.connection.test.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +58 -23
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +68 -31
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.mjs +42 -1
- package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.recovery.test.native.js +45 -1
- package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +2 -2
- package/src/createZeroClient.connection.test.tsx +100 -2
- package/src/createZeroClient.recovery.test.tsx +52 -1
- package/src/createZeroClient.tsx +110 -59
- package/src/index.ts +1 -0
- package/types/createZeroClient.d.ts +5 -0
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @vitest-environment jsdom
|
|
2
2
|
|
|
3
3
|
import { createSchema, string, table } from '@rocicorp/zero'
|
|
4
|
-
import { act } from 'react'
|
|
4
|
+
import { act, StrictMode } from 'react'
|
|
5
5
|
import { createRoot, type Root } from 'react-dom/client'
|
|
6
6
|
import { afterEach, beforeEach, expect, test, vi } from 'vitest'
|
|
7
7
|
|
|
@@ -37,7 +37,7 @@ const fakeZero = vi.hoisted(() => {
|
|
|
37
37
|
readonly run = vi.fn(async () => [])
|
|
38
38
|
readonly preload = vi.fn(() => ({ cleanup: () => {}, complete: Promise.resolve() }))
|
|
39
39
|
|
|
40
|
-
constructor() {
|
|
40
|
+
constructor(readonly options?: { auth?: string }) {
|
|
41
41
|
instances.push(this)
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -162,6 +162,104 @@ test('refreshAuth reconnects in place on needs-auth, once per transition', async
|
|
|
162
162
|
off()
|
|
163
163
|
})
|
|
164
164
|
|
|
165
|
+
test('a disabled logout cannot revive its closed authenticated instance', async () => {
|
|
166
|
+
const first = await mount({ auth: 'old-token' }, 'conn-auth-cycle')
|
|
167
|
+
|
|
168
|
+
await act(async () => {
|
|
169
|
+
root?.render(
|
|
170
|
+
<client.ProvideZero
|
|
171
|
+
cacheURL="http://127.0.0.1:7788/zero"
|
|
172
|
+
userID="conn-auth-cycle"
|
|
173
|
+
auth={undefined}
|
|
174
|
+
disable
|
|
175
|
+
>
|
|
176
|
+
<span>ok</span>
|
|
177
|
+
</client.ProvideZero>
|
|
178
|
+
)
|
|
179
|
+
await Promise.resolve()
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
await act(async () => {
|
|
183
|
+
root?.render(
|
|
184
|
+
<client.ProvideZero
|
|
185
|
+
cacheURL="http://127.0.0.1:7788/zero"
|
|
186
|
+
userID="conn-auth-cycle"
|
|
187
|
+
auth="fresh-token"
|
|
188
|
+
>
|
|
189
|
+
<span>ok</span>
|
|
190
|
+
</client.ProvideZero>
|
|
191
|
+
)
|
|
192
|
+
await Promise.resolve()
|
|
193
|
+
})
|
|
194
|
+
|
|
195
|
+
expect(fakeZero.instances).toHaveLength(2)
|
|
196
|
+
expect(fakeZero.instances[1]).not.toBe(first)
|
|
197
|
+
expect(fakeZero.instances[1]?.options?.auth).toBe('fresh-token')
|
|
198
|
+
})
|
|
199
|
+
|
|
200
|
+
test('a remounted provider reconnects its cached instance when auth changed', async () => {
|
|
201
|
+
const instance = await mount({ auth: 'old-token' }, 'conn-auth-remount')
|
|
202
|
+
|
|
203
|
+
await act(async () => {
|
|
204
|
+
root?.unmount()
|
|
205
|
+
root = null
|
|
206
|
+
await Promise.resolve()
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
root = createRoot(container)
|
|
210
|
+
await act(async () => {
|
|
211
|
+
root?.render(
|
|
212
|
+
<client.ProvideZero
|
|
213
|
+
cacheURL="http://127.0.0.1:7788/zero"
|
|
214
|
+
userID="conn-auth-remount"
|
|
215
|
+
auth="fresh-token"
|
|
216
|
+
>
|
|
217
|
+
<span>ok</span>
|
|
218
|
+
</client.ProvideZero>
|
|
219
|
+
)
|
|
220
|
+
await Promise.resolve()
|
|
221
|
+
})
|
|
222
|
+
|
|
223
|
+
expect(fakeZero.instances).toHaveLength(1)
|
|
224
|
+
expect(instance.connection.connect).toHaveBeenCalledWith({ auth: 'fresh-token' })
|
|
225
|
+
})
|
|
226
|
+
|
|
227
|
+
test('a double-invoked render still reconnects on a changed token', async () => {
|
|
228
|
+
root = createRoot(container)
|
|
229
|
+
await act(async () => {
|
|
230
|
+
root?.render(
|
|
231
|
+
<StrictMode>
|
|
232
|
+
<client.ProvideZero
|
|
233
|
+
cacheURL="http://127.0.0.1:7788/zero"
|
|
234
|
+
userID="conn-auth-strict"
|
|
235
|
+
auth="old-token"
|
|
236
|
+
>
|
|
237
|
+
<span>ok</span>
|
|
238
|
+
</client.ProvideZero>
|
|
239
|
+
</StrictMode>
|
|
240
|
+
)
|
|
241
|
+
await Promise.resolve()
|
|
242
|
+
})
|
|
243
|
+
const instance = fakeZero.instances.at(-1)!
|
|
244
|
+
|
|
245
|
+
await act(async () => {
|
|
246
|
+
root?.render(
|
|
247
|
+
<StrictMode>
|
|
248
|
+
<client.ProvideZero
|
|
249
|
+
cacheURL="http://127.0.0.1:7788/zero"
|
|
250
|
+
userID="conn-auth-strict"
|
|
251
|
+
auth="fresh-token"
|
|
252
|
+
>
|
|
253
|
+
<span>ok</span>
|
|
254
|
+
</client.ProvideZero>
|
|
255
|
+
</StrictMode>
|
|
256
|
+
)
|
|
257
|
+
await Promise.resolve()
|
|
258
|
+
})
|
|
259
|
+
|
|
260
|
+
expect(instance.connection.connect).toHaveBeenCalledWith({ auth: 'fresh-token' })
|
|
261
|
+
})
|
|
262
|
+
|
|
165
263
|
test('stale-poke error reconnects instead of surfacing a fatal error', async () => {
|
|
166
264
|
const events: Array<{ type: string }> = []
|
|
167
265
|
const off = client.zeroEvents.listen((event) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @vitest-environment jsdom
|
|
2
2
|
|
|
3
3
|
import { createSchema, string, table } from '@rocicorp/zero'
|
|
4
|
-
import { act } from 'react'
|
|
4
|
+
import { act, useLayoutEffect } from 'react'
|
|
5
5
|
import { createRoot, type Root } from 'react-dom/client'
|
|
6
6
|
import { afterEach, beforeEach, expect, test, vi } from 'vitest'
|
|
7
7
|
|
|
@@ -137,6 +137,57 @@ test('remint drops local state and reconstructs a fresh instance in place', asyn
|
|
|
137
137
|
expect(fakeZero.instances.at(-1)).not.toBe(first)
|
|
138
138
|
})
|
|
139
139
|
|
|
140
|
+
test('provider generation changes with the actual instance during remint', async () => {
|
|
141
|
+
const generationClient = createZeroClient({
|
|
142
|
+
schema,
|
|
143
|
+
models: {},
|
|
144
|
+
groupedQueries: {},
|
|
145
|
+
instanceName: 'provider-generation-test',
|
|
146
|
+
})
|
|
147
|
+
const generations: Array<
|
|
148
|
+
NonNullable<ReturnType<typeof generationClient.useZeroProviderGeneration>>
|
|
149
|
+
> = []
|
|
150
|
+
|
|
151
|
+
function GenerationProbe() {
|
|
152
|
+
const generation = generationClient.useZeroProviderGeneration()
|
|
153
|
+
useLayoutEffect(() => {
|
|
154
|
+
if (generation) generations.push(generation)
|
|
155
|
+
}, [generation])
|
|
156
|
+
return null
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
root = createRoot(container)
|
|
160
|
+
await act(async () => {
|
|
161
|
+
root?.render(
|
|
162
|
+
<generationClient.ProvideZero
|
|
163
|
+
cacheURL="http://127.0.0.1:7777/zero"
|
|
164
|
+
userID="generation-test"
|
|
165
|
+
>
|
|
166
|
+
<GenerationProbe />
|
|
167
|
+
</generationClient.ProvideZero>
|
|
168
|
+
)
|
|
169
|
+
await Promise.resolve()
|
|
170
|
+
})
|
|
171
|
+
|
|
172
|
+
expect(generations).toHaveLength(1)
|
|
173
|
+
const firstGeneration = generations[0]
|
|
174
|
+
expect(firstGeneration?.isCurrent()).toBe(true)
|
|
175
|
+
|
|
176
|
+
await act(async () => {
|
|
177
|
+
expect(await generationClient.remint({ dropLocalState: false })).toBe(true)
|
|
178
|
+
await Promise.resolve()
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
expect(generations).toHaveLength(2)
|
|
182
|
+
expect(generations[1]).not.toBe(firstGeneration)
|
|
183
|
+
expect(firstGeneration?.isCurrent()).toBe(false)
|
|
184
|
+
expect(generations[1]?.isCurrent()).toBe(true)
|
|
185
|
+
|
|
186
|
+
act(() => root?.unmount())
|
|
187
|
+
root = null
|
|
188
|
+
expect(generations[1]?.isCurrent()).toBe(false)
|
|
189
|
+
})
|
|
190
|
+
|
|
140
191
|
test('remint with no provider mounted returns false without burning the guard budget', async () => {
|
|
141
192
|
// own client so the shared remint guard state is fresh for this assertion.
|
|
142
193
|
const isolated = createZeroClient({
|
package/src/createZeroClient.tsx
CHANGED
|
@@ -91,6 +91,10 @@ export type ZeroProviderTransport = {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
export type ZeroProviderGeneration = {
|
|
95
|
+
isCurrent: () => boolean
|
|
96
|
+
}
|
|
97
|
+
|
|
94
98
|
export type WaitForZeroOptions = {
|
|
95
99
|
signal?: AbortSignal
|
|
96
100
|
}
|
|
@@ -298,6 +302,22 @@ export function createZeroClientInternal<
|
|
|
298
302
|
setCustomQueries(customQueries)
|
|
299
303
|
|
|
300
304
|
const DisabledContext = createContext<QueryControlMode>(false)
|
|
305
|
+
const ZeroProviderGenerationContext = createContext<ZeroProviderGeneration | null>(null)
|
|
306
|
+
const zeroProviderGenerations = new WeakMap<object, ZeroProviderGeneration>()
|
|
307
|
+
|
|
308
|
+
function useZeroProviderGeneration(): ZeroProviderGeneration | null {
|
|
309
|
+
return useContext(ZeroProviderGenerationContext)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function getZeroProviderGeneration(zeroInstance: ZeroInstance): ZeroProviderGeneration {
|
|
313
|
+
const existing = zeroProviderGenerations.get(zeroInstance)
|
|
314
|
+
if (existing) return existing
|
|
315
|
+
const generation = {
|
|
316
|
+
isCurrent: () => zeroRuntime.zero === zeroInstance,
|
|
317
|
+
}
|
|
318
|
+
zeroProviderGenerations.set(zeroInstance, generation)
|
|
319
|
+
return generation
|
|
320
|
+
}
|
|
301
321
|
|
|
302
322
|
// mutators never vary per mount: auth is read dynamically through
|
|
303
323
|
// getAuthData() at mutation time. built once, lazily, so the provider and
|
|
@@ -638,14 +658,21 @@ export function createZeroClientInternal<
|
|
|
638
658
|
// lifecycle artifact. single-provider assumption: one mounted ProvideZero
|
|
639
659
|
// per client (true of every consumer); two simultaneously mounted providers
|
|
640
660
|
// with different identities would thrash this slot.
|
|
641
|
-
|
|
661
|
+
// `auth` is the token the instance last connected with, so a provider that
|
|
662
|
+
// unmounted and remounted around a sign-in can still tell the token changed.
|
|
663
|
+
type CachedZeroEntry = {
|
|
664
|
+
key: string
|
|
665
|
+
instance: ZeroInstance
|
|
666
|
+
auth?: string | null
|
|
667
|
+
}
|
|
668
|
+
let cachedZero: CachedZeroEntry | null = null
|
|
642
669
|
|
|
643
670
|
// instances the render phase displaced, waiting for a commit to close them.
|
|
644
671
|
// react can throw a render away, so a rotation is only PROVISIONAL until
|
|
645
672
|
// something commits: closing there would kill an instance the committed tree
|
|
646
673
|
// still holds. keyed so a render that swings back to a retired identity
|
|
647
674
|
// revives that instance instead of constructing a twin beside it.
|
|
648
|
-
const retiredZero = new Map<string,
|
|
675
|
+
const retiredZero = new Map<string, CachedZeroEntry>()
|
|
649
676
|
|
|
650
677
|
// in-place re-mint: drop the current instance's local state then reconstruct a
|
|
651
678
|
// fresh client WITHOUT a page reload — the native-safe recovery path (a reload
|
|
@@ -843,16 +870,18 @@ export function createZeroClientInternal<
|
|
|
843
870
|
<AuthDataContext.Provider value={(authDataIn ?? {}) as AuthData}>
|
|
844
871
|
<DisabledContext.Provider value="empty">
|
|
845
872
|
<ZeroContext.Provider value={DISABLED_ZERO_STUB as any}>
|
|
846
|
-
{
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
873
|
+
<ZeroProviderGenerationContext.Provider value={null}>
|
|
874
|
+
{/* match the active path's 3-child layout exactly so descendant
|
|
875
|
+
useId() lands at the same fiber index in both branches. the
|
|
876
|
+
two leading nulls reserve the SetZeroInstance + ConnectionMonitor
|
|
877
|
+
slots; the active path puts those components there only once
|
|
878
|
+
an instance exists. without these placeholder slots, children
|
|
879
|
+
would sit at child index 0 here but index 2 in the active
|
|
880
|
+
path, shifting every descendant useId. */}
|
|
881
|
+
{null}
|
|
882
|
+
{null}
|
|
883
|
+
{children}
|
|
884
|
+
</ZeroProviderGenerationContext.Provider>
|
|
856
885
|
</ZeroContext.Provider>
|
|
857
886
|
</DisabledContext.Provider>
|
|
858
887
|
</AuthDataContext.Provider>
|
|
@@ -964,32 +993,41 @@ export function createZeroClientInternal<
|
|
|
964
993
|
// double-invoked render and a suspense hide/reveal both hit the cache: no
|
|
965
994
|
// churn, no second client.
|
|
966
995
|
//
|
|
967
|
-
// disable=true creates nothing.
|
|
968
|
-
//
|
|
996
|
+
// disable=true creates nothing. an identity change while disabled still
|
|
997
|
+
// retires the old instance: logout commonly removes auth and disables in
|
|
998
|
+
// the same render, and keeping the authenticated key cached would revive
|
|
999
|
+
// its already-closed connection when the next session signs in. a plain
|
|
1000
|
+
// disable with the same identity remains a gate and keeps its warm cache.
|
|
969
1001
|
let liveInstance: ZeroInstance | undefined
|
|
1002
|
+
if (disable && cachedZero && cachedZero.key !== instanceKey) {
|
|
1003
|
+
retiredZero.set(cachedZero.key, cachedZero)
|
|
1004
|
+
cachedZero = null
|
|
1005
|
+
}
|
|
1006
|
+
let activeZero: CachedZeroEntry | null = null
|
|
970
1007
|
if (!disable) {
|
|
971
1008
|
if (cachedZero?.key !== instanceKey) {
|
|
972
|
-
if (cachedZero) retiredZero.set(cachedZero.key, cachedZero
|
|
1009
|
+
if (cachedZero) retiredZero.set(cachedZero.key, cachedZero)
|
|
973
1010
|
const revived = retiredZero.get(instanceKey)
|
|
974
1011
|
retiredZero.delete(instanceKey)
|
|
975
|
-
|
|
1012
|
+
const nextCachedZero = revived ?? {
|
|
976
1013
|
key: instanceKey,
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
}),
|
|
1014
|
+
auth,
|
|
1015
|
+
instance: constructZeroInstance({
|
|
1016
|
+
options: scopedProps as Omit<
|
|
1017
|
+
ZeroOptions<Schema, ZeroMutators>,
|
|
1018
|
+
'schema' | 'mutators'
|
|
1019
|
+
>,
|
|
1020
|
+
transport,
|
|
1021
|
+
beforeReload,
|
|
1022
|
+
scheduleReload,
|
|
1023
|
+
guardStorage,
|
|
1024
|
+
benignLogPatterns,
|
|
1025
|
+
}),
|
|
990
1026
|
}
|
|
1027
|
+
cachedZero = nextCachedZero
|
|
991
1028
|
}
|
|
992
|
-
|
|
1029
|
+
activeZero = cachedZero
|
|
1030
|
+
liveInstance = activeZero.instance
|
|
993
1031
|
}
|
|
994
1032
|
|
|
995
1033
|
// a disabled provider stops being ready before descendant passive effects
|
|
@@ -1016,26 +1054,23 @@ export function createZeroClientInternal<
|
|
|
1016
1054
|
// close only. the replacement is already published and already fenced
|
|
1017
1055
|
// the outgoing client's writes, and SetZeroInstance's effect emits the
|
|
1018
1056
|
// one version change a rotation is allowed to produce.
|
|
1019
|
-
for (const zeroInstance of outgoing) zeroInstance.close()
|
|
1057
|
+
for (const { instance: zeroInstance } of outgoing) zeroInstance.close()
|
|
1020
1058
|
})
|
|
1021
1059
|
|
|
1022
1060
|
// a changed token on the same identity refreshes auth in place — zero
|
|
1023
1061
|
// sends an auth update over the live connection instead of reconnecting
|
|
1024
1062
|
// (upstream ZeroProvider does exactly this). string <-> undefined flips
|
|
1025
|
-
// rotate the instance via hasAuth in the identity key instead.
|
|
1026
|
-
|
|
1063
|
+
// rotate the instance via hasAuth in the identity key instead. the compare
|
|
1064
|
+
// reads the CACHE rather than a ref, so a provider that unmounted during
|
|
1065
|
+
// sign-out and remounted after sign-in still sees the new token; and it
|
|
1066
|
+
// happens HERE rather than during render, because render runs twice under
|
|
1067
|
+
// strictmode and a render-phase write makes the second pass read its own
|
|
1068
|
+
// update and skip the reconnect entirely.
|
|
1027
1069
|
useEffect(() => {
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
typeof prevAuth === 'string' &&
|
|
1033
|
-
typeof auth === 'string' &&
|
|
1034
|
-
prevAuth !== auth
|
|
1035
|
-
) {
|
|
1036
|
-
liveInstance.connection.connect({ auth })
|
|
1037
|
-
}
|
|
1038
|
-
}, [liveInstance, auth])
|
|
1070
|
+
if (!activeZero || typeof auth !== 'string' || activeZero.auth === auth) return
|
|
1071
|
+
activeZero.auth = auth
|
|
1072
|
+
activeZero.instance.connection.connect({ auth })
|
|
1073
|
+
}, [activeZero, auth])
|
|
1039
1074
|
|
|
1040
1075
|
// Always render the same shell shape, with or without an instance, and
|
|
1041
1076
|
// whether disable is true or false. While disable=true we hand descendants
|
|
@@ -1047,21 +1082,25 @@ export function createZeroClientInternal<
|
|
|
1047
1082
|
<AuthDataContext.Provider value={authData}>
|
|
1048
1083
|
<DisabledContext.Provider value={liveInstance ? false : 'empty'}>
|
|
1049
1084
|
<ZeroContext.Provider value={liveInstance ?? (DISABLED_ZERO_STUB as any)}>
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1085
|
+
<ZeroProviderGenerationContext.Provider
|
|
1086
|
+
value={liveInstance ? getZeroProviderGeneration(liveInstance) : null}
|
|
1087
|
+
>
|
|
1088
|
+
{liveInstance ? <SetZeroInstance /> : null}
|
|
1089
|
+
{liveInstance ? (
|
|
1090
|
+
<ConnectionMonitor
|
|
1091
|
+
zeroEvents={zeroEvents}
|
|
1092
|
+
refreshAuth={refreshAuth}
|
|
1093
|
+
exposeDataset={connectionDataset}
|
|
1094
|
+
datasetCacheUrl={
|
|
1095
|
+
connectionDataset
|
|
1096
|
+
? ((props as { cacheURL?: string; server?: string }).cacheURL ??
|
|
1097
|
+
(props as { cacheURL?: string; server?: string }).server)
|
|
1098
|
+
: undefined
|
|
1099
|
+
}
|
|
1100
|
+
/>
|
|
1101
|
+
) : null}
|
|
1102
|
+
{children}
|
|
1103
|
+
</ZeroProviderGenerationContext.Provider>
|
|
1065
1104
|
</ZeroContext.Provider>
|
|
1066
1105
|
</DisabledContext.Provider>
|
|
1067
1106
|
</AuthDataContext.Provider>
|
|
@@ -1076,6 +1115,17 @@ export function createZeroClientInternal<
|
|
|
1076
1115
|
// publish before descendant effects perform imperative work.
|
|
1077
1116
|
publishZeroInstance(zeroInstance)
|
|
1078
1117
|
|
|
1118
|
+
useLayoutEffect(() => {
|
|
1119
|
+
// strict-effects replays cleanup without another render. republish in
|
|
1120
|
+
// setup so the provider remains current after that replay, and unpublish
|
|
1121
|
+
// the exact instance synchronously when its provider actually leaves.
|
|
1122
|
+
publishZeroInstance(zeroInstance)
|
|
1123
|
+
return () => {
|
|
1124
|
+
if (!unpublishZeroInstance(zeroInstance)) return
|
|
1125
|
+
mutationLifecycle.fence()
|
|
1126
|
+
}
|
|
1127
|
+
}, [zeroInstance])
|
|
1128
|
+
|
|
1079
1129
|
useEffect(() => {
|
|
1080
1130
|
zeroInstanceVersion?.emit(zeroInstanceVersion.value + 1)
|
|
1081
1131
|
}, [zeroInstance])
|
|
@@ -1367,6 +1417,7 @@ export function createZeroClientInternal<
|
|
|
1367
1417
|
useQueryDirect,
|
|
1368
1418
|
usePermission,
|
|
1369
1419
|
usePermissionDirect,
|
|
1420
|
+
useZeroProviderGeneration,
|
|
1370
1421
|
zero,
|
|
1371
1422
|
preload,
|
|
1372
1423
|
getQuery,
|
package/src/index.ts
CHANGED
|
@@ -18,6 +18,9 @@ export type ZeroProviderTransport = {
|
|
|
18
18
|
benign?: readonly ZeroLogPattern[];
|
|
19
19
|
};
|
|
20
20
|
};
|
|
21
|
+
export type ZeroProviderGeneration = {
|
|
22
|
+
isCurrent: () => boolean;
|
|
23
|
+
};
|
|
21
24
|
export type WaitForZeroOptions = {
|
|
22
25
|
signal?: AbortSignal;
|
|
23
26
|
};
|
|
@@ -73,6 +76,7 @@ export declare function createZeroClient<Schema extends ZeroSchema, Models exten
|
|
|
73
76
|
useQueryDirect: UseQueryHook<Schema>;
|
|
74
77
|
usePermission: (table: (string & {}) | (keyof Schema["tables"] & string), objOrId: string | Partial<Row<any>> | undefined, enabled?: boolean, debug?: boolean) => boolean | null;
|
|
75
78
|
usePermissionDirect: (table: (string & {}) | (keyof Schema["tables"] & string), objOrId: string | Partial<Row<any>> | undefined, enabled?: boolean, debug?: boolean) => boolean | null;
|
|
79
|
+
useZeroProviderGeneration: () => ZeroProviderGeneration | null;
|
|
76
80
|
zero: ZeroClient<Schema, GetZeroMutators<Models>, unknown>;
|
|
77
81
|
preload: {
|
|
78
82
|
<TArg, TTable extends keyof Schema["tables"] & string, TReturn>(fn: PlainQueryFn<TArg, Query<TTable, Schema, TReturn>>, params: TArg, options?: PreloadOptions): {
|
|
@@ -139,6 +143,7 @@ export declare function createZeroClientInternal<Schema extends ZeroSchema, Mode
|
|
|
139
143
|
useQueryDirect: UseQueryHook<Schema>;
|
|
140
144
|
usePermission: (table: (keyof Schema["tables"] & string) | (string & {}), objOrId: string | Partial<Row<any>> | undefined, enabled?: boolean, debug?: boolean) => boolean | null;
|
|
141
145
|
usePermissionDirect: (table: (keyof Schema["tables"] & string) | (string & {}), objOrId: string | Partial<Row<any>> | undefined, enabled?: boolean, debug?: boolean) => boolean | null;
|
|
146
|
+
useZeroProviderGeneration: () => ZeroProviderGeneration | null;
|
|
142
147
|
zero: ZeroClient<Schema, GetZeroMutators<Models>, unknown>;
|
|
143
148
|
preload: {
|
|
144
149
|
<TArg, TTable extends keyof Schema["tables"] & string, TReturn>(fn: PlainQueryFn<TArg, Query<TTable, Schema, TReturn>>, params: TArg, options?: PreloadOptions): {
|
|
@@ -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;AAKpC,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAOhE,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EAEf,iBAAiB,EAElB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EACV,gBAAgB,EAChB,KAAK,EACL,GAAG,EAEH,WAAW,EACX,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,KAAK,cAAc,GAAG;IAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEvE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;AAMpF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;AAEtF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IACnC,kBAAkB,CAAC,EAAE;QACnB,MAAM,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;KACnC,CAAA;CACF,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,uBAAuB,CACjC,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,IAC1B;IACF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;IACjC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IAGvC,iCAAiC,CAAC,EAAE,MAAM,CAAA;IAI1C,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,UAAU,IAAI,CAAC,KAAK,EAAE;IAClE,eAAe,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC1C,aAAa,EAAE,gBAAgB,CAAA;IAC/B,OAAO,EAAE,MAAM,GAAG,CAAA;IAClB,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CAC7B,KAAK,YAAY,CAAC,MAAM,CAAC,CAAA;AA+B1B,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,UAAU,EAAE,MAAM,SAAS,aAAa,EACtF,OAAO,EAAE,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC;;;
|
|
1
|
+
{"version":3,"file":"createZeroClient.d.ts","sourceRoot":"","sources":["../src/createZeroClient.tsx"],"names":[],"mappings":"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"}
|
package/types/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export * from './helpers/mutatorContext';
|
|
|
7
7
|
export * from './helpers/useMutation';
|
|
8
8
|
export { ensureAuth, getAuth } from './helpers/getAuth';
|
|
9
9
|
export { setAuthData, setEnvironment } from './state';
|
|
10
|
-
export { createZeroClient, type CreateZeroClientOptions, type GroupedQueries, type PermissionStrategy, type WaitForZeroOptions, type ZeroProviderTransport, } from './createZeroClient';
|
|
10
|
+
export { createZeroClient, type CreateZeroClientOptions, type GroupedQueries, type PermissionStrategy, type WaitForZeroOptions, type ZeroProviderGeneration, type ZeroProviderTransport, } from './createZeroClient';
|
|
11
11
|
export * from './createUseQuery';
|
|
12
12
|
export * from './resolveQuery';
|
|
13
13
|
export * from './run';
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAM3D,mBAAmB,SAAS,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,iCAAiC,EACjC,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAM3D,mBAAmB,SAAS,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,iCAAiC,EACjC,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,6BAA6B,CAAA"}
|