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.
Files changed (45) hide show
  1. package/dist/cjs/helpers/recoverZeroClient.cjs +1 -1
  2. package/dist/cjs/helpers/recoverZeroClient.native.js +2 -1
  3. package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
  4. package/dist/cjs/helpers/recoverZeroClient.test.cjs +31 -0
  5. package/dist/cjs/helpers/recoverZeroClient.test.native.js +33 -0
  6. package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
  7. package/dist/cjs/multiInstance.test.cjs +75 -0
  8. package/dist/cjs/multiInstance.test.native.js +111 -0
  9. package/dist/cjs/multiInstance.test.native.js.map +1 -1
  10. package/dist/cjs/run.cjs +6 -1
  11. package/dist/cjs/run.native.js +6 -1
  12. package/dist/cjs/run.native.js.map +1 -1
  13. package/dist/cjs/zeroRunner.cjs +4 -0
  14. package/dist/cjs/zeroRunner.native.js +4 -0
  15. package/dist/cjs/zeroRunner.native.js.map +1 -1
  16. package/dist/esm/helpers/recoverZeroClient.mjs +1 -1
  17. package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
  18. package/dist/esm/helpers/recoverZeroClient.native.js +2 -1
  19. package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
  20. package/dist/esm/helpers/recoverZeroClient.test.mjs +31 -0
  21. package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
  22. package/dist/esm/helpers/recoverZeroClient.test.native.js +33 -0
  23. package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
  24. package/dist/esm/multiInstance.test.mjs +75 -0
  25. package/dist/esm/multiInstance.test.mjs.map +1 -1
  26. package/dist/esm/multiInstance.test.native.js +111 -0
  27. package/dist/esm/multiInstance.test.native.js.map +1 -1
  28. package/dist/esm/run.mjs +7 -2
  29. package/dist/esm/run.mjs.map +1 -1
  30. package/dist/esm/run.native.js +7 -2
  31. package/dist/esm/run.native.js.map +1 -1
  32. package/dist/esm/zeroRunner.mjs +4 -1
  33. package/dist/esm/zeroRunner.mjs.map +1 -1
  34. package/dist/esm/zeroRunner.native.js +4 -1
  35. package/dist/esm/zeroRunner.native.js.map +1 -1
  36. package/package.json +2 -2
  37. package/src/helpers/recoverZeroClient.test.ts +33 -0
  38. package/src/helpers/recoverZeroClient.ts +7 -1
  39. package/src/multiInstance.test.tsx +69 -0
  40. package/src/run.ts +10 -2
  41. package/src/zeroRunner.ts +4 -0
  42. package/types/helpers/recoverZeroClient.d.ts.map +1 -1
  43. package/types/run.d.ts.map +1 -1
  44. package/types/zeroRunner.d.ts +3 -0
  45. 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;IAIA;EACE;EACF,IAAAF,QAAA,aAAAA,QAAA,uBAAAA,QAAA,CAAAJ,MAAA;IAEA,OAAKI,QAAQ,CAAAJ,MAAA;EACX;EAAU,IACR,CAAAA,MAAA;IACF,UAAAS,KAAA;EACF;EAEA,OAAOT,MAAA;AACT","ignoreList":[]}
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.34",
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.34",
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
- const doReload = deps.reload ?? (() => window.location.reload())
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 { getRunner } from './zeroRunner'
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 getRunner(instance)(queryRequest as any, options)
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;AAgED,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"}
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"}
@@ -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;AAGhE,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"}
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"}
@@ -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,CAkB9E"}
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"}