on-zero 0.12.15 → 0.12.16
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 +21 -21
- package/dist/cjs/createZeroClient.headless.test.cjs +31 -0
- package/dist/cjs/createZeroClient.headless.test.native.js +33 -0
- package/dist/cjs/createZeroClient.headless.test.native.js.map +1 -1
- package/dist/cjs/createZeroClient.native.js +21 -21
- package/dist/cjs/createZeroClient.native.js.map +1 -1
- package/dist/cjs/instanceRegistry.cjs +18 -1
- package/dist/cjs/instanceRegistry.native.js +22 -1
- package/dist/cjs/instanceRegistry.native.js.map +1 -1
- package/dist/esm/createZeroClient.headless.test.mjs +31 -0
- package/dist/esm/createZeroClient.headless.test.mjs.map +1 -1
- package/dist/esm/createZeroClient.headless.test.native.js +33 -0
- package/dist/esm/createZeroClient.headless.test.native.js.map +1 -1
- package/dist/esm/createZeroClient.mjs +21 -21
- package/dist/esm/createZeroClient.mjs.map +1 -1
- package/dist/esm/createZeroClient.native.js +21 -21
- package/dist/esm/createZeroClient.native.js.map +1 -1
- package/dist/esm/instanceRegistry.mjs +18 -1
- package/dist/esm/instanceRegistry.mjs.map +1 -1
- package/dist/esm/instanceRegistry.native.js +22 -1
- package/dist/esm/instanceRegistry.native.js.map +1 -1
- package/package.json +2 -2
- package/src/createZeroClient.headless.test.tsx +27 -0
- package/src/createZeroClient.tsx +24 -22
- package/src/instanceRegistry.ts +33 -1
- package/types/createZeroClient.d.ts.map +1 -1
- package/types/instanceRegistry.d.ts +6 -0
- package/types/instanceRegistry.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["globalValue","getQueryName","
|
|
1
|
+
{"version":3,"names":["globalValue","getQueryName","getRuntimesByName","Map","getInstancesByNamespace","getInstancesByQueryName","releaseClientInstances","names","releasing","Set","instancesByNamespace","instancesByQueryName","namespace","owner","has","name","delete","queryName","registerClientInstance","namespaces","customQueries","queryNames","runtimesByName","runtime","get","zero","readyWaiters","runner","set","instance","next","existing","Error","getInstanceForNamespace","getInstanceForQueryFn","fn","queryOwner","split"],"sources":["../../src/instanceRegistry.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { globalValue } from "./helpers/globalValue.native.js";
|
|
2
2
|
import { getQueryName } from "./queryRegistry.native.js";
|
|
3
|
+
var getRuntimesByName = function getRuntimesByName2() {
|
|
4
|
+
return globalValue("on-zero:instance-runtimes-by-name", function () {
|
|
5
|
+
return /* @__PURE__ */new Map();
|
|
6
|
+
});
|
|
7
|
+
};
|
|
3
8
|
var getInstancesByNamespace = function getInstancesByNamespace2() {
|
|
4
9
|
return globalValue("on-zero:instances-by-namespace", function () {
|
|
5
10
|
return /* @__PURE__ */new Map();
|
|
@@ -116,10 +121,26 @@ function registerClientInstance(param) {
|
|
|
116
121
|
}
|
|
117
122
|
}
|
|
118
123
|
}
|
|
124
|
+
var runtimesByName = getRuntimesByName();
|
|
125
|
+
var runtime = runtimesByName.get(name);
|
|
126
|
+
if (!runtime) {
|
|
127
|
+
runtime = {
|
|
128
|
+
zero: null,
|
|
129
|
+
readyWaiters: /* @__PURE__ */new Set(),
|
|
130
|
+
runner: null
|
|
131
|
+
};
|
|
132
|
+
runtimesByName.set(name, runtime);
|
|
133
|
+
}
|
|
119
134
|
var instance = {
|
|
120
135
|
name,
|
|
121
136
|
customQueries,
|
|
122
|
-
|
|
137
|
+
runtime,
|
|
138
|
+
get runner() {
|
|
139
|
+
return runtime.runner;
|
|
140
|
+
},
|
|
141
|
+
set runner(next) {
|
|
142
|
+
runtime.runner = next;
|
|
143
|
+
}
|
|
123
144
|
};
|
|
124
145
|
var _iteratorNormalCompletion2 = true,
|
|
125
146
|
_didIteratorError2 = false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["globalValue","getQueryName","
|
|
1
|
+
{"version":3,"names":["globalValue","getQueryName","getRuntimesByName","getRuntimesByName2","Map","getInstancesByNamespace","getInstancesByNamespace2","getInstancesByQueryName","getInstancesByQueryName2","releaseClientInstances","names","releasing","Set","instancesByNamespace","instancesByQueryName","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","namespace","owner","value","has","name","delete","err","return","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1","queryName","owner1","registerClientInstance","param","namespaces","customQueries","queryNames"],"sources":["../../src/instanceRegistry.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.16",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"files": [
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"chokidar": "^4.0.3",
|
|
106
106
|
"citty": "^0.1.6",
|
|
107
107
|
"dequal": "^2.0.3",
|
|
108
|
-
"orez-lite": "0.12.
|
|
108
|
+
"orez-lite": "0.12.16",
|
|
109
109
|
"valibot": "^1.1.0"
|
|
110
110
|
},
|
|
111
111
|
"peerDependencies": {
|
|
@@ -45,3 +45,30 @@ test('connectHeadless publishes the instance with no react tree', async () => {
|
|
|
45
45
|
|
|
46
46
|
await connection.close()
|
|
47
47
|
})
|
|
48
|
+
|
|
49
|
+
test('a hot-recreated client resolves the mounted same-name instance', async () => {
|
|
50
|
+
const first = createZeroClient({
|
|
51
|
+
schema,
|
|
52
|
+
models: {},
|
|
53
|
+
groupedQueries: { headlessHotTest: { byId } },
|
|
54
|
+
instanceName: 'headless-hot-test',
|
|
55
|
+
})
|
|
56
|
+
const connection = first.connectHeadless({
|
|
57
|
+
userID: 'user-headless-hot',
|
|
58
|
+
kvStore: 'mem',
|
|
59
|
+
storageKey: 'headless-hot-test',
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
const refreshed = createZeroClient({
|
|
63
|
+
schema,
|
|
64
|
+
models: {},
|
|
65
|
+
groupedQueries: { headlessHotTest: { byId } },
|
|
66
|
+
instanceName: 'headless-hot-test',
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
expect(refreshed.zero.clientID).toBe(connection.zero.clientID)
|
|
70
|
+
expect(await refreshed.waitForZero()).toBe(connection.zero)
|
|
71
|
+
|
|
72
|
+
await connection.close()
|
|
73
|
+
expect(() => refreshed.zero.clientID).toThrow(/not initialized/)
|
|
74
|
+
})
|
package/src/createZeroClient.tsx
CHANGED
|
@@ -288,6 +288,10 @@ export function createZeroClientInternal<
|
|
|
288
288
|
Object.keys(queries).map((name) => `${namespace}.${name}`)
|
|
289
289
|
),
|
|
290
290
|
})
|
|
291
|
+
const zeroRuntime = instance.runtime as typeof instance.runtime & {
|
|
292
|
+
zero: ZeroInstance | null
|
|
293
|
+
readyWaiters: Set<(instance: ZeroInstance) => void>
|
|
294
|
+
}
|
|
291
295
|
|
|
292
296
|
// register for global run() helper
|
|
293
297
|
setCustomQueries(customQueries)
|
|
@@ -383,30 +387,27 @@ export function createZeroClientInternal<
|
|
|
383
387
|
return createdInstance
|
|
384
388
|
}
|
|
385
389
|
|
|
386
|
-
let latestZeroInstance: ZeroInstance | null = null
|
|
387
|
-
const zeroReadyWaiters = new Set<(instance: ZeroInstance) => void>()
|
|
388
|
-
|
|
389
390
|
// publish the active instance through the stable facade and query runner.
|
|
390
391
|
// the provider calls this during render (before descendant effects do
|
|
391
392
|
// imperative work) and connectHeadless calls it directly — the `zero` proxy,
|
|
392
393
|
// run(), and waitForZero() resolve identically either way.
|
|
393
394
|
function publishZeroInstance(zeroInstance: ZeroInstance): boolean {
|
|
394
|
-
if (zeroInstance ===
|
|
395
|
-
|
|
395
|
+
if (zeroInstance === zeroRuntime.zero) return false
|
|
396
|
+
zeroRuntime.zero = zeroInstance
|
|
396
397
|
mutationLifecycle.activate()
|
|
397
398
|
const runner: ZeroRunner = (query, options) => zeroInstance.run(query as any, options)
|
|
398
399
|
// the instance-keyed runner is what run() dispatches owned namespaces to;
|
|
399
400
|
// the global runner stays as the ambient fallback (inline zql)
|
|
400
401
|
instance.runner = runner
|
|
401
402
|
setRunner(runner)
|
|
402
|
-
const waiters = [...
|
|
403
|
-
|
|
403
|
+
const waiters = [...zeroRuntime.readyWaiters]
|
|
404
|
+
zeroRuntime.readyWaiters.clear()
|
|
404
405
|
for (const onReady of waiters) onReady(zeroInstance)
|
|
405
406
|
return true
|
|
406
407
|
}
|
|
407
408
|
|
|
408
409
|
function waitForZero({ signal }: WaitForZeroOptions = {}): Promise<ZeroInstance> {
|
|
409
|
-
if (
|
|
410
|
+
if (zeroRuntime.zero) return Promise.resolve(zeroRuntime.zero)
|
|
410
411
|
if (signal?.aborted) {
|
|
411
412
|
return Promise.reject(
|
|
412
413
|
signal.reason ?? new Error('Waiting for the Zero instance was aborted')
|
|
@@ -419,10 +420,10 @@ export function createZeroClientInternal<
|
|
|
419
420
|
resolve(instance)
|
|
420
421
|
}
|
|
421
422
|
const onAbort = () => {
|
|
422
|
-
|
|
423
|
+
zeroRuntime.readyWaiters.delete(onReady)
|
|
423
424
|
reject(signal?.reason ?? new Error('Waiting for the Zero instance was aborted'))
|
|
424
425
|
}
|
|
425
|
-
|
|
426
|
+
zeroRuntime.readyWaiters.add(onReady)
|
|
426
427
|
signal?.addEventListener('abort', onAbort, { once: true })
|
|
427
428
|
})
|
|
428
429
|
}
|
|
@@ -435,12 +436,12 @@ export function createZeroClientInternal<
|
|
|
435
436
|
// with still-no instance throws the same error, so real misuse stays loud.
|
|
436
437
|
function lazyMutatePath(path: string[]): any {
|
|
437
438
|
const resolve = () => {
|
|
438
|
-
if (
|
|
439
|
+
if (zeroRuntime.zero === null) {
|
|
439
440
|
throw new Error(
|
|
440
441
|
`Zero instance not initialized. Ensure ZeroProvider is mounted before accessing 'zero'.`
|
|
441
442
|
)
|
|
442
443
|
}
|
|
443
|
-
let target: any =
|
|
444
|
+
let target: any = zeroRuntime.zero.mutate
|
|
444
445
|
for (const key of path) target = target[key]
|
|
445
446
|
return target
|
|
446
447
|
}
|
|
@@ -459,17 +460,17 @@ export function createZeroClientInternal<
|
|
|
459
460
|
// Ideally rocicorp/zero would support .setAuth() natively, but for now we swap instances.
|
|
460
461
|
const zero: ZeroInstance = new Proxy({} as never, {
|
|
461
462
|
get(_, key) {
|
|
462
|
-
if (
|
|
463
|
+
if (zeroRuntime.zero === null) {
|
|
463
464
|
if (key === 'mutate') return lazyMutatePath([])
|
|
464
465
|
throw new Error(
|
|
465
466
|
`Zero instance not initialized. Ensure ZeroProvider is mounted before accessing 'zero'.`
|
|
466
467
|
)
|
|
467
468
|
}
|
|
468
469
|
if (key === 'delete') {
|
|
469
|
-
const instanceToDelete =
|
|
470
|
+
const instanceToDelete = zeroRuntime.zero
|
|
470
471
|
return () => deleteZeroInstance(instanceToDelete)
|
|
471
472
|
}
|
|
472
|
-
return getZeroProxyValue(
|
|
473
|
+
return getZeroProxyValue(zeroRuntime.zero, key)
|
|
473
474
|
},
|
|
474
475
|
})
|
|
475
476
|
|
|
@@ -497,6 +498,7 @@ export function createZeroClientInternal<
|
|
|
497
498
|
)
|
|
498
499
|
},
|
|
499
500
|
})
|
|
501
|
+
if (zeroRuntime.zero) mutationLifecycle.activate()
|
|
500
502
|
|
|
501
503
|
const zeroInstanceVersion = createDirectUseQuery
|
|
502
504
|
? createEmitter<number>(`zero-instance-version${emitterScope}`, 0)
|
|
@@ -513,7 +515,7 @@ export function createZeroClientInternal<
|
|
|
513
515
|
? createDirectUseQuery({
|
|
514
516
|
DisabledContext,
|
|
515
517
|
customQueries,
|
|
516
|
-
getZero: () =>
|
|
518
|
+
getZero: () => zeroRuntime.zero,
|
|
517
519
|
zeroVersion: zeroInstanceVersion!,
|
|
518
520
|
})
|
|
519
521
|
: createUnavailableDirectUseQuery<Schema>()
|
|
@@ -611,8 +613,8 @@ export function createZeroClientInternal<
|
|
|
611
613
|
let remintAttempts = 0
|
|
612
614
|
|
|
613
615
|
function unpublishZeroInstance(instanceToInvalidate: ZeroInstance): boolean {
|
|
614
|
-
if (
|
|
615
|
-
|
|
616
|
+
if (zeroRuntime.zero !== instanceToInvalidate) return false
|
|
617
|
+
zeroRuntime.zero = null
|
|
616
618
|
instance.runner = null
|
|
617
619
|
setRunner(null)
|
|
618
620
|
return true
|
|
@@ -668,8 +670,8 @@ export function createZeroClientInternal<
|
|
|
668
670
|
remintAttempts += 1
|
|
669
671
|
|
|
670
672
|
const { dropLocalState = true } = opts
|
|
671
|
-
if (dropLocalState &&
|
|
672
|
-
await deleteZeroInstance(
|
|
673
|
+
if (dropLocalState && zeroRuntime.zero) {
|
|
674
|
+
await deleteZeroInstance(zeroRuntime.zero).catch(() => {})
|
|
673
675
|
}
|
|
674
676
|
// re-check: the provider may have unmounted during the async delete.
|
|
675
677
|
const bump = remintControl.bump
|
|
@@ -916,9 +918,9 @@ export function createZeroClientInternal<
|
|
|
916
918
|
// descendant passive effects run. the outgoing instance remains cached
|
|
917
919
|
// until the commit-safe rotation effect below closes or reuses it.
|
|
918
920
|
useLayoutEffect(() => {
|
|
919
|
-
if (
|
|
921
|
+
if (zeroRuntime.zero && (disable || cachedZero?.key !== instanceKey)) {
|
|
920
922
|
mutationLifecycle.fence()
|
|
921
|
-
unpublishZeroInstance(
|
|
923
|
+
unpublishZeroInstance(zeroRuntime.zero)
|
|
922
924
|
}
|
|
923
925
|
}, [disable, instanceKey])
|
|
924
926
|
|
package/src/instanceRegistry.ts
CHANGED
|
@@ -13,14 +13,27 @@ import { getQueryName } from './queryRegistry'
|
|
|
13
13
|
import type { ZeroRunner } from './zeroRunner'
|
|
14
14
|
import type { AnyQueryRegistry } from '@rocicorp/zero'
|
|
15
15
|
|
|
16
|
+
export type ZeroClientRuntime = {
|
|
17
|
+
zero: unknown | null
|
|
18
|
+
readyWaiters: Set<(zero: unknown) => void>
|
|
19
|
+
runner: ZeroRunner | null
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
export type ZeroClientInstance = {
|
|
17
23
|
name: string
|
|
18
24
|
customQueries: AnyQueryRegistry
|
|
25
|
+
runtime: ZeroClientRuntime
|
|
19
26
|
// set when the instance's provider mounts (client); stays null on the
|
|
20
27
|
// server, where the ambient transaction runner serves every instance
|
|
21
28
|
runner: ZeroRunner | null
|
|
22
29
|
}
|
|
23
30
|
|
|
31
|
+
const getRuntimesByName = () =>
|
|
32
|
+
globalValue<Map<string, ZeroClientRuntime>>(
|
|
33
|
+
'on-zero:instance-runtimes-by-name',
|
|
34
|
+
() => new Map()
|
|
35
|
+
)
|
|
36
|
+
|
|
24
37
|
const getInstancesByNamespace = () =>
|
|
25
38
|
globalValue<Map<string, ZeroClientInstance>>(
|
|
26
39
|
'on-zero:instances-by-namespace',
|
|
@@ -71,7 +84,26 @@ export function registerClientInstance({
|
|
|
71
84
|
}
|
|
72
85
|
}
|
|
73
86
|
|
|
74
|
-
|
|
87
|
+
// the provider and its project module do not necessarily refresh together.
|
|
88
|
+
// keep their live zero behind the stable instance name so a new module facade
|
|
89
|
+
// resolves the provider that is already mounted.
|
|
90
|
+
const runtimesByName = getRuntimesByName()
|
|
91
|
+
let runtime = runtimesByName.get(name)
|
|
92
|
+
if (!runtime) {
|
|
93
|
+
runtime = { zero: null, readyWaiters: new Set(), runner: null }
|
|
94
|
+
runtimesByName.set(name, runtime)
|
|
95
|
+
}
|
|
96
|
+
const instance: ZeroClientInstance = {
|
|
97
|
+
name,
|
|
98
|
+
customQueries,
|
|
99
|
+
runtime,
|
|
100
|
+
get runner() {
|
|
101
|
+
return runtime.runner
|
|
102
|
+
},
|
|
103
|
+
set runner(next) {
|
|
104
|
+
runtime.runner = next
|
|
105
|
+
},
|
|
106
|
+
}
|
|
75
107
|
|
|
76
108
|
for (const namespace of namespaces) {
|
|
77
109
|
const existing = instancesByNamespace.get(namespace)
|
|
@@ -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,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,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,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,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IAC3B,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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"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import type { ZeroRunner } from './zeroRunner';
|
|
2
2
|
import type { AnyQueryRegistry } from '@rocicorp/zero';
|
|
3
|
+
export type ZeroClientRuntime = {
|
|
4
|
+
zero: unknown | null;
|
|
5
|
+
readyWaiters: Set<(zero: unknown) => void>;
|
|
6
|
+
runner: ZeroRunner | null;
|
|
7
|
+
};
|
|
3
8
|
export type ZeroClientInstance = {
|
|
4
9
|
name: string;
|
|
5
10
|
customQueries: AnyQueryRegistry;
|
|
11
|
+
runtime: ZeroClientRuntime;
|
|
6
12
|
runner: ZeroRunner | null;
|
|
7
13
|
};
|
|
8
14
|
export declare function releaseClientInstances(names: readonly string[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instanceRegistry.d.ts","sourceRoot":"","sources":["../src/instanceRegistry.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"instanceRegistry.d.ts","sourceRoot":"","sources":["../src/instanceRegistry.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IACpB,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;IAC1C,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,gBAAgB,CAAA;IAC/B,OAAO,EAAE,iBAAiB,CAAA;IAG1B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CAC1B,CAAA;AAoBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAUrE;AAED,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,UAAU,EACV,aAAa,EACb,UAAe,GAChB,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,gBAAgB,CAAA;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB,GAAG,kBAAkB,CA4DrB;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAChB,kBAAkB,GAAG,SAAS,CAEhC;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG,kBAAkB,GAAG,SAAS,CAMlF"}
|