on-zero 0.4.34 → 0.4.36
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/helpers/recoverZeroClient.cjs +1 -1
- package/dist/cjs/helpers/recoverZeroClient.native.js +2 -1
- package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/cjs/helpers/recoverZeroClient.test.cjs +31 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js +33 -0
- package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/cjs/multiInstance.test.cjs +75 -0
- package/dist/cjs/multiInstance.test.native.js +111 -0
- package/dist/cjs/multiInstance.test.native.js.map +1 -1
- package/dist/cjs/run.cjs +6 -1
- package/dist/cjs/run.native.js +6 -1
- package/dist/cjs/run.native.js.map +1 -1
- package/dist/cjs/zeroRunner.cjs +4 -0
- package/dist/cjs/zeroRunner.native.js +4 -0
- package/dist/cjs/zeroRunner.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs +1 -1
- package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.native.js +2 -1
- package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.mjs +31 -0
- package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
- package/dist/esm/helpers/recoverZeroClient.test.native.js +33 -0
- package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
- package/dist/esm/multiInstance.test.mjs +75 -0
- package/dist/esm/multiInstance.test.mjs.map +1 -1
- package/dist/esm/multiInstance.test.native.js +111 -0
- package/dist/esm/multiInstance.test.native.js.map +1 -1
- package/dist/esm/run.mjs +7 -2
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/run.native.js +7 -2
- package/dist/esm/run.native.js.map +1 -1
- package/dist/esm/zeroRunner.mjs +4 -1
- package/dist/esm/zeroRunner.mjs.map +1 -1
- package/dist/esm/zeroRunner.native.js +4 -1
- package/dist/esm/zeroRunner.native.js.map +1 -1
- package/package.json +2 -2
- package/src/helpers/recoverZeroClient.test.ts +33 -0
- package/src/helpers/recoverZeroClient.ts +7 -1
- package/src/multiInstance.test.tsx +69 -0
- package/src/run.ts +10 -2
- package/src/zeroRunner.ts +4 -0
- package/types/helpers/recoverZeroClient.d.ts.map +1 -1
- package/types/run.d.ts.map +1 -1
- package/types/zeroRunner.d.ts +3 -0
- package/types/zeroRunner.d.ts.map +1 -1
|
@@ -9,6 +9,9 @@ function getRunner(instance) {
|
|
|
9
9
|
return mutatorContext().tx.run(q, o);
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
+
return getAmbientRunner(instance);
|
|
13
|
+
}
|
|
14
|
+
function getAmbientRunner(instance) {
|
|
12
15
|
if (instance === null || instance === void 0 ? void 0 : instance.runner) {
|
|
13
16
|
return instance.runner;
|
|
14
17
|
}
|
|
@@ -17,5 +20,5 @@ function getRunner(instance) {
|
|
|
17
20
|
}
|
|
18
21
|
return runner;
|
|
19
22
|
}
|
|
20
|
-
export { getRunner, setRunner };
|
|
23
|
+
export { getAmbientRunner, getRunner, setRunner };
|
|
21
24
|
//# sourceMappingURL=zeroRunner.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isInZeroMutation","mutatorContext","runner","setRunner","r","getRunner","instance","q","o","tx","run","Error"],"sources":["../../src/zeroRunner.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,gBAAA,EAAkBC,cAAA,QAAsB;AAgBjD,IAAIC,MAAA,GAA4B;AAEzB,SAASC,UAAUC,CAAA,EAAe;EACvCF,MAAA,GAASE,CAAA;AACX;AAEO,SAASC,UAAUC,QAAA,EAAsD;EAC9E,IAAIN,gBAAA,CAAiB,GAAG;IACtB,OAAO,UAAIO,CAAM,EAAAC,CAAA;MACnB,OAAAP,cAAA,GAAAQ,EAAA,CAAAC,GAAA,CAAAH,CAAA,EAAAC,CAAA;
|
|
1
|
+
{"version":3,"names":["isInZeroMutation","mutatorContext","runner","setRunner","r","getRunner","instance","q","o","tx","run","getAmbientRunner","Error"],"sources":["../../src/zeroRunner.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,gBAAA,EAAkBC,cAAA,QAAsB;AAgBjD,IAAIC,MAAA,GAA4B;AAEzB,SAASC,UAAUC,CAAA,EAAe;EACvCF,MAAA,GAASE,CAAA;AACX;AAEO,SAASC,UAAUC,QAAA,EAAsD;EAC9E,IAAIN,gBAAA,CAAiB,GAAG;IACtB,OAAO,UAAIO,CAAM,EAAAC,CAAA;MACnB,OAAAP,cAAA,GAAAQ,EAAA,CAAAC,GAAA,CAAAH,CAAA,EAAAC,CAAA;IAEA;EACF;EAEO,OAASG,gBAAA,CAAiBL,QAAA;AAG/B;AACE,SAAAK,gBAAgBA,CAAAL,QAAA;EAClB,IAAAA,QAAA,aAAAA,QAAA,uBAAAA,QAAA,CAAAJ,MAAA;IAEA,OAAKI,QAAQ,CAAAJ,MAAA;EACX;EAAU,IACR,CAAAA,MAAA;IACF,UAAAU,KAAA;EACF;EAEA,OAAOV,MAAA;AACT","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.36",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
|
-
"@take-out/helpers": "0.4.
|
|
80
|
+
"@take-out/helpers": "0.4.36",
|
|
81
81
|
"chokidar": "^4.0.3",
|
|
82
82
|
"citty": "^0.1.6",
|
|
83
83
|
"valibot": "^1.1.0"
|
|
@@ -169,4 +169,37 @@ describe('zero recovery', () => {
|
|
|
169
169
|
expect(deleteLocalState).not.toHaveBeenCalled()
|
|
170
170
|
expect(reload).not.toHaveBeenCalled()
|
|
171
171
|
})
|
|
172
|
+
|
|
173
|
+
// a host with a `window` shim but no real `location` — the sootsim tenant
|
|
174
|
+
// render-worker, which hides `location` for isolation. the DEFAULT reload
|
|
175
|
+
// path (no injected `deps.reload`) must still drop stale IDB and not throw
|
|
176
|
+
// "reading 'reload'" on undefined; it no-ops the reload and lets the host
|
|
177
|
+
// remount. previously crashed as an unhandled rejection.
|
|
178
|
+
test('default reload path is a safe no-op when location is absent', async () => {
|
|
179
|
+
const events: ZeroEvent[] = []
|
|
180
|
+
const zeroEvents = createEmitter<ZeroEvent | null>(`test-recover-${emitterSeq++}`, null)
|
|
181
|
+
zeroEvents.listen((event) => {
|
|
182
|
+
if (event) events.push(event)
|
|
183
|
+
})
|
|
184
|
+
const deleteLocalState = vi.fn(() => Promise.resolve())
|
|
185
|
+
// no `reload` dep — exercises the default `globalThis.location?.reload?.()`.
|
|
186
|
+
const deps: ZeroRecoveryDeps = { deleteLocalState, zeroEvents }
|
|
187
|
+
const originalLocation = globalThis.location
|
|
188
|
+
// simulate the worker: window exists (jsdom) but location is absent.
|
|
189
|
+
Object.defineProperty(globalThis, 'location', {
|
|
190
|
+
configurable: true,
|
|
191
|
+
value: undefined,
|
|
192
|
+
})
|
|
193
|
+
try {
|
|
194
|
+
makeZeroRecovery(deps).onClientStateNotFound()
|
|
195
|
+
await flush()
|
|
196
|
+
} finally {
|
|
197
|
+
Object.defineProperty(globalThis, 'location', {
|
|
198
|
+
configurable: true,
|
|
199
|
+
value: originalLocation,
|
|
200
|
+
})
|
|
201
|
+
}
|
|
202
|
+
expect(deleteLocalState).toHaveBeenCalledTimes(1)
|
|
203
|
+
expect(events).toContainEqual({ type: 'recovering', reason: 'client state not found' })
|
|
204
|
+
})
|
|
172
205
|
})
|
|
@@ -74,7 +74,13 @@ function recover(
|
|
|
74
74
|
reloadScheduled = true
|
|
75
75
|
console.warn(`[on-zero] ${message} — recovering`)
|
|
76
76
|
deps.zeroEvents.emit({ type: 'recovering', reason: message })
|
|
77
|
-
|
|
77
|
+
// resolve the reload exactly as @rocicorp/zero does internally
|
|
78
|
+
// (`getBrowserGlobal('location')?.reload()`, zero.js): read location off the
|
|
79
|
+
// global and optional-chain through it. a non-DOM host with a `window` shim
|
|
80
|
+
// but no real `location` (the sootsim tenant render-worker hides `location`
|
|
81
|
+
// for isolation) then drops its stale IDB and no-ops the reload — letting the
|
|
82
|
+
// host remount — instead of throwing "reading 'reload'" on undefined.
|
|
83
|
+
const doReload = deps.reload ?? (() => globalThis.location?.reload?.())
|
|
78
84
|
// defer one microtask so sibling instances failing in the same tick enqueue
|
|
79
85
|
// their deletes first, then await them all before reloading.
|
|
80
86
|
Promise.resolve()
|
|
@@ -4,10 +4,12 @@ import { describe, expect, test, vi } from 'vitest'
|
|
|
4
4
|
|
|
5
5
|
import { combineZeroClients } from './combineZeroClients'
|
|
6
6
|
import { createZeroClient } from './createZeroClient'
|
|
7
|
+
import { runWithContext } from './helpers/mutatorContext'
|
|
7
8
|
import { getInstanceForNamespace, registerClientInstance } from './instanceRegistry'
|
|
8
9
|
import { registerQuery } from './queryRegistry'
|
|
9
10
|
import { run } from './run'
|
|
10
11
|
import { setRunner, type ZeroRunner } from './zeroRunner'
|
|
12
|
+
import { zql } from './zql'
|
|
11
13
|
|
|
12
14
|
import type { ZeroEvent } from './types'
|
|
13
15
|
import type { AnyQueryRegistry, Query } from '@rocicorp/zero'
|
|
@@ -89,6 +91,73 @@ describe('multi-instance namespace dispatch', () => {
|
|
|
89
91
|
expect(request.query.queryName).toBe('runUser.byId')
|
|
90
92
|
})
|
|
91
93
|
|
|
94
|
+
test('run() rejects named queries inside server mutation context', async () => {
|
|
95
|
+
const { byId } = makeClient('run-ctx-owner', 'runCtxThing')
|
|
96
|
+
const ownerRunner = vi.fn(async (..._args: unknown[]) => ({ from: 'owner' }))
|
|
97
|
+
getInstanceForNamespace('runCtxThing')!.runner = ownerRunner as ZeroRunner
|
|
98
|
+
const txRun = vi.fn(async (..._args: unknown[]) => ({ from: 'tx' }))
|
|
99
|
+
|
|
100
|
+
await expect(
|
|
101
|
+
runWithContext(
|
|
102
|
+
{
|
|
103
|
+
authData: null,
|
|
104
|
+
environment: 'server',
|
|
105
|
+
can: async () => {},
|
|
106
|
+
tx: { run: txRun },
|
|
107
|
+
} as any,
|
|
108
|
+
() => run(byId, { id: '1' }),
|
|
109
|
+
),
|
|
110
|
+
).rejects.toThrow(/run\(namedQuery\) cannot be used inside a Zero mutation/)
|
|
111
|
+
|
|
112
|
+
expect(ownerRunner).not.toHaveBeenCalled()
|
|
113
|
+
expect(txRun).not.toHaveBeenCalled()
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
test('run() keeps named queries on their owning client runner when browser context leaks', async () => {
|
|
117
|
+
const { byId } = makeClient('run-client-leak-owner', 'runClientLeakThing')
|
|
118
|
+
const ownerRunner = vi.fn(async (..._args: unknown[]) => ({ from: 'owner' }))
|
|
119
|
+
getInstanceForNamespace('runClientLeakThing')!.runner = ownerRunner as ZeroRunner
|
|
120
|
+
const txRun = vi.fn(async (..._args: unknown[]) => ({ from: 'tx' }))
|
|
121
|
+
|
|
122
|
+
await expect(
|
|
123
|
+
runWithContext(
|
|
124
|
+
{
|
|
125
|
+
authData: null,
|
|
126
|
+
environment: 'client',
|
|
127
|
+
can: async () => {},
|
|
128
|
+
tx: { run: txRun },
|
|
129
|
+
} as any,
|
|
130
|
+
() => run(byId, { id: '1' }),
|
|
131
|
+
),
|
|
132
|
+
).resolves.toEqual({ from: 'owner' })
|
|
133
|
+
|
|
134
|
+
expect(ownerRunner).toHaveBeenCalledTimes(1)
|
|
135
|
+
expect(txRun).not.toHaveBeenCalled()
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
test('run() keeps inline zql on the active transaction runner', async () => {
|
|
139
|
+
makeClient('run-inline-context', 'runInlineThing')
|
|
140
|
+
const ambientRunner = vi.fn(async (..._args: unknown[]) => ({ from: 'ambient' }))
|
|
141
|
+
setRunner(ambientRunner as ZeroRunner)
|
|
142
|
+
const txRun = vi.fn(async (..._args: unknown[]) => ({ from: 'tx' }))
|
|
143
|
+
const query = zql.user.where('id', '1')
|
|
144
|
+
|
|
145
|
+
await expect(
|
|
146
|
+
runWithContext(
|
|
147
|
+
{
|
|
148
|
+
authData: null,
|
|
149
|
+
environment: 'client',
|
|
150
|
+
can: async () => {},
|
|
151
|
+
tx: { run: txRun },
|
|
152
|
+
} as any,
|
|
153
|
+
() => run(query),
|
|
154
|
+
),
|
|
155
|
+
).resolves.toEqual({ from: 'tx' })
|
|
156
|
+
|
|
157
|
+
expect(txRun).toHaveBeenCalledWith(query, undefined)
|
|
158
|
+
expect(ambientRunner).not.toHaveBeenCalled()
|
|
159
|
+
})
|
|
160
|
+
|
|
92
161
|
test('a claimed namespace with an unmounted instance uses the ambient runner (server path)', async () => {
|
|
93
162
|
const { byId } = makeClient('srv-instance', 'srvThing')
|
|
94
163
|
const ambient = vi.fn(async (..._args: unknown[]) => ({ from: 'ambient' }))
|
package/src/run.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getInstanceForQueryFn } from './instanceRegistry'
|
|
2
2
|
import { resolveQuery, type PlainQueryFn } from './resolveQuery'
|
|
3
|
-
import {
|
|
3
|
+
import { isInZeroMutation, mutatorContext } from './helpers/mutatorContext'
|
|
4
|
+
import { getAmbientRunner, getRunner } from './zeroRunner'
|
|
4
5
|
|
|
5
6
|
import type {
|
|
6
7
|
AnyQueryRegistry,
|
|
@@ -75,11 +76,18 @@ export function run(
|
|
|
75
76
|
return getRunner()(queryOrFn, options)
|
|
76
77
|
}
|
|
77
78
|
|
|
79
|
+
const inMutation = isInZeroMutation()
|
|
80
|
+
if (inMutation && mutatorContext().environment === 'server') {
|
|
81
|
+
throw new Error(
|
|
82
|
+
'run(namedQuery) cannot be used inside a Zero mutation. Use tx.run(zql...) for transactional mutation reads.',
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
|
|
78
86
|
// with multiple client instances mounted, a named query executes against
|
|
79
87
|
// the instance that claimed its namespace, not whichever mounted last
|
|
80
88
|
const instance = getInstanceForQueryFn(queryOrFn)
|
|
81
89
|
const customQueries = instance?.customQueries ?? getCustomQueries()
|
|
82
90
|
const queryRequest = resolveQuery({ customQueries, fn: queryOrFn, params })
|
|
83
91
|
|
|
84
|
-
return
|
|
92
|
+
return getAmbientRunner(instance)(queryRequest as any, options)
|
|
85
93
|
}
|
package/src/zeroRunner.ts
CHANGED
|
@@ -25,6 +25,10 @@ export function getRunner(instance?: { runner: ZeroRunner | null }): ZeroRunner
|
|
|
25
25
|
return (q, o) => mutatorContext().tx.run(q, o)
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
return getAmbientRunner(instance)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function getAmbientRunner(instance?: { runner: ZeroRunner | null }): ZeroRunner {
|
|
28
32
|
// a mounted instance's own runner wins; otherwise the ambient runner
|
|
29
33
|
// (single-instance client, or the server transaction runner)
|
|
30
34
|
if (instance?.runner) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoverZeroClient.d.ts","sourceRoot":"","sources":["../../src/helpers/recoverZeroClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAqB,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAUlE,MAAM,MAAM,gBAAgB,GAAG;IAI7B,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,UAAU,EAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAGrC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAElC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;
|
|
1
|
+
{"version":3,"file":"recoverZeroClient.d.ts","sourceRoot":"","sources":["../../src/helpers/recoverZeroClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAqB,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAUlE,MAAM,MAAM,gBAAgB,GAAG;IAI7B,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,UAAU,EAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAGrC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAElC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAsED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB;2BAE5B,kBAAkB;;EAsB5C;AAyBD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,EACtB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAwBT;AAID,wBAAgB,0BAA0B,SAGzC"}
|
package/types/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIhE,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AAIvB,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,QAEzD;AAaD,wBAAgB,GAAG,CACjB,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC9C,OAAO,EAEP,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AAElC,wBAAgB,GAAG,CACjB,MAAM,SAAS,UAAU,EACzB,IAAI,EACJ,MAAM,SAAS,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC9C,OAAO,EAEP,EAAE,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EACtD,MAAM,EAAE,IAAI,EACZ,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AAElC,wBAAgB,GAAG,CACjB,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC9C,OAAO,EAEP,EAAE,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EACtD,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA"}
|
package/types/zeroRunner.d.ts
CHANGED
|
@@ -5,4 +5,7 @@ export declare function setRunner(r: ZeroRunner): void;
|
|
|
5
5
|
export declare function getRunner(instance?: {
|
|
6
6
|
runner: ZeroRunner | null;
|
|
7
7
|
}): ZeroRunner;
|
|
8
|
+
export declare function getAmbientRunner(instance?: {
|
|
9
|
+
runner: ZeroRunner | null;
|
|
10
|
+
}): ZeroRunner;
|
|
8
11
|
//# sourceMappingURL=zeroRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zeroRunner.d.ts","sourceRoot":"","sources":["../src/zeroRunner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,UAAU,EACV,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EAAE,UAAU,EAAE,CAAA;AAE1B,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAC/B,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EACtC,OAAO,CAAC,EAAE,UAAU,KACjB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AAIpC,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,QAEtC;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE;IAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"zeroRunner.d.ts","sourceRoot":"","sources":["../src/zeroRunner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,UAAU,EACV,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EAAE,UAAU,EAAE,CAAA;AAE1B,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAC/B,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EACtC,OAAO,CAAC,EAAE,UAAU,KACjB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AAIpC,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,QAEtC;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE;IAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,GAAG,UAAU,CAM9E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE;IAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,GAAG,UAAU,CAcrF"}
|