@hybrid-compute/core 0.20.0 → 0.22.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.22.0](https://github.com/phun-ky/hybrid-compute/compare/@hybrid-compute/core@0.21.0...@hybrid-compute/core@0.22.0) (2026-02-12)
4
+
5
+ ### Tasks
6
+
7
+ * 🤖 @hybrid-compute/local@0.21.0 ([02dd3f8](https://github.com/phun-ky/hybrid-compute/commit/02dd3f848a220922a0ab388275dd21fe8a43b9fd))
8
+ * 🤖 @hybrid-compute/remote@0.21.0 ([cd59e28](https://github.com/phun-ky/hybrid-compute/commit/cd59e28dba9eb61bc393f580c9884983bde094dd))
9
+ * 🤖 @hybrid-compute/worker@0.21.0 ([f1c1a3d](https://github.com/phun-ky/hybrid-compute/commit/f1c1a3d7f12b465a2c2a824a862eb4effbea210a))
10
+ * 🤖 bump the major-updates group across 1 directory with 2 updates ([1f73fdb](https://github.com/phun-ky/hybrid-compute/commit/1f73fdb36f258af191f8c3b901dc9ff94d34b7bc))
11
+ * 🤖 bump the major-updates group across 1 directory with 3 updates ([e2defae](https://github.com/phun-ky/hybrid-compute/commit/e2defae02a5c1ffe49a3314eb26b453edb45d965))
12
+ * 🤖 Ensure that we can use trusted publishing ([8c1c34b](https://github.com/phun-ky/hybrid-compute/commit/8c1c34bf2db8fe172c10bf4066d0f4cd75c234e6))
13
+
14
+ ### Refactoring
15
+
16
+ * 💡 Replace glob with glob-bin ([98cc893](https://github.com/phun-ky/hybrid-compute/commit/98cc8932bee41bfdb7eb2b668b039def35867402))
17
+
18
+ ## [0.21.0](///compare/@hybrid-compute/core@0.20.0...@hybrid-compute/core@0.21.0) (2025-11-24)
19
+
3
20
  ## [0.20.0](https://github.com/phun-ky/hybrid-compute/compare/@hybrid-compute/core@0.19.0...@hybrid-compute/core@0.20.0) (2025-11-10)
4
21
 
5
22
  ### Tasks
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=core.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/core.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,102 @@
1
+ import test, { describe } from 'node:test';
2
+ import assert from 'node:assert';
3
+ import { createHybridCompute, HybridCompute } from '..';
4
+ // Mocks
5
+ const mockTaskName = 'double';
6
+ const mockInput = 21;
7
+ const mockOutput = 42;
8
+ function createMockBackend() {
9
+ return {
10
+ canRun: (taskName) => taskName === 'double',
11
+ runTask: async (taskName, input) => {
12
+ // mock response — force-cast for test purposes
13
+ return 42;
14
+ }
15
+ };
16
+ }
17
+ function createNonRunnableMockBackend() {
18
+ return {
19
+ canRun: () => false,
20
+ runTask: async () => {
21
+ throw new Error('Should not be called');
22
+ }
23
+ };
24
+ }
25
+ describe('HybridCompute', () => {
26
+ test('runs task using local strategy', async () => {
27
+ const compute = new HybridCompute({ local: createMockBackend() });
28
+ const result = await compute.runTask(mockTaskName, mockInput, 'local');
29
+ assert.strictEqual(result, mockOutput);
30
+ });
31
+ test('runs task using worker strategy', async () => {
32
+ const compute = new HybridCompute({ worker: createMockBackend() });
33
+ const result = await compute.runTask(mockTaskName, mockInput, 'worker');
34
+ assert.strictEqual(result, mockOutput);
35
+ });
36
+ test('runs task with missing strategy, should default to auto', async () => {
37
+ const compute = new HybridCompute({ worker: createMockBackend() });
38
+ const result = await compute.runTask(mockTaskName, mockInput, 2);
39
+ assert.strictEqual(result, mockOutput);
40
+ });
41
+ test('runs task using remote strategy', async () => {
42
+ const compute = new HybridCompute({ remote: createMockBackend() });
43
+ const result = await compute.runTask(mockTaskName, mockInput, 'remote');
44
+ assert.strictEqual(result, mockOutput);
45
+ });
46
+ test('uses auto strategy with priority: worker > local > remote', async () => {
47
+ const callOrder = [];
48
+ const worker = {
49
+ canRun: () => (callOrder.push('worker'), true),
50
+ runTask: async (taskName, input) => {
51
+ callOrder.push('runWorker');
52
+ return mockOutput;
53
+ }
54
+ };
55
+ const local = {
56
+ canRun: () => (callOrder.push('local'), true),
57
+ runTask: async (taskName, input) => {
58
+ callOrder.push('runLocal');
59
+ return mockOutput;
60
+ }
61
+ };
62
+ const remote = {
63
+ canRun: () => (callOrder.push('remote'), true),
64
+ runTask: async (taskName, input) => {
65
+ callOrder.push('runRemote');
66
+ return mockOutput;
67
+ }
68
+ };
69
+ const compute = new HybridCompute({ worker, local, remote });
70
+ const result = await compute.runTask(mockTaskName, mockInput, 'auto');
71
+ assert.strictEqual(result, mockOutput);
72
+ assert.deepStrictEqual(callOrder, ['worker', 'runWorker']);
73
+ });
74
+ test('falls back in auto strategy if earlier backends cannot run', async () => {
75
+ const compute = new HybridCompute({
76
+ worker: createMockBackend(),
77
+ local: createMockBackend(),
78
+ remote: createMockBackend()
79
+ });
80
+ const result = await compute.runTask(mockTaskName, mockInput, 'auto');
81
+ assert.strictEqual(result, mockOutput);
82
+ });
83
+ test('throws if no backend matches the strategy', async () => {
84
+ const compute = new HybridCompute({});
85
+ await assert.rejects(() => compute.runTask(mockTaskName, mockInput, 'local'), /No backend available/);
86
+ });
87
+ test('throws if no backend can run in auto strategy', async () => {
88
+ const compute = new HybridCompute({
89
+ worker: createNonRunnableMockBackend(),
90
+ local: createNonRunnableMockBackend(),
91
+ remote: createNonRunnableMockBackend()
92
+ });
93
+ await assert.rejects(() => compute.runTask(mockTaskName, mockInput, 'auto'), /No backend available/);
94
+ });
95
+ });
96
+ describe('createHybridCompute', () => {
97
+ test('returns HybridCompute instance', () => {
98
+ const instance = createHybridCompute({ local: createMockBackend() });
99
+ assert.ok(instance instanceof HybridCompute);
100
+ });
101
+ });
102
+ //# sourceMappingURL=core.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.spec.js","sourceRoot":"","sources":["../../src/__tests__/core.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ export * from './types.js';
2
+ import { ExecutionStrategyType, HybridComputeOptionsInterface } from './types.js';
3
+ /**
4
+ * The HybridCompute class acts as an orchestrator to delegate compute tasks
5
+ * across different backends (local, worker, or remote) using a flexible strategy.
6
+ *
7
+ * It supports four strategies:
8
+ * - `'local'`: Forces execution on the local (main thread) backend.
9
+ * - `'worker'`: Forces execution on a threaded/WebWorker backend.
10
+ * - `'remote'`: Forces execution on a remote/server backend.
11
+ * - `'auto'`: Automatically selects the first available backend that supports the task.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const compute = new HybridCompute({
16
+ * local: createLocalCompute(),
17
+ * worker: createThreadedCompute(workerPath, ['double']),
18
+ * remote: createRemoteCompute({ transport: 'fetch', endpoint: '/api/compute' })
19
+ * });
20
+ *
21
+ * const result = await compute.runTask<number, number>('double', 21, 'auto');
22
+ * console.log(result); // 42
23
+ * ```
24
+ */
25
+ export declare class HybridCompute {
26
+ private backends;
27
+ /**
28
+ * Creates a new HybridCompute orchestrator.
29
+ *
30
+ * @param backends - An object containing optional local, worker, and remote backends.
31
+ */
32
+ constructor(backends: HybridComputeOptionsInterface);
33
+ /**
34
+ * Runs a task using the specified execution strategy.
35
+ *
36
+ * If `strategy` is `'auto'`, it will try the worker, then local, then remote backend in order of priority.
37
+ *
38
+ * @typeParam Input - The type of the input expected by the task.
39
+ * @typeParam Output - The expected output type returned by the task.
40
+ *
41
+ * @param taskName - The name of the task to execute.
42
+ * @param input - The input payload for the task.
43
+ * @param strategy - The execution strategy to use. Defaults to `'auto'`.
44
+ *
45
+ * @returns A Promise resolving to the task's output.
46
+ *
47
+ * @throws If no backend is available or able to run the task.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * const output = await compute.runTask('greetUser', { name: 'Alice' }, 'worker');
52
+ * ```
53
+ */
54
+ runTask<Input, Output>(taskName: string, input: Input, strategy?: ExecutionStrategyType): Promise<Output>;
55
+ }
56
+ /**
57
+ * Factory function for creating a HybridCompute instance.
58
+ *
59
+ * @param backends - Configuration options specifying available backends.
60
+ * @returns A new HybridCompute orchestrator.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const hybrid = createHybridCompute({ local: createLocalCompute() });
65
+ * ```
66
+ */
67
+ export declare function createHybridCompute(backends: HybridComputeOptionsInterface): HybridCompute;
68
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAI3B,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAgC;IAEhD;;;;OAIG;gBACS,QAAQ,EAAE,6BAA6B;IAInD;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,GAAE,qBAA8B,GACvC,OAAO,CAAC,MAAM,CAAC;CA0BnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,6BAA6B,iBAE1E"}
package/dist/index.js ADDED
@@ -0,0 +1,97 @@
1
+ export * from './types.js';
2
+ import { isNotString } from '@phun-ky/typeof';
3
+ /**
4
+ * The HybridCompute class acts as an orchestrator to delegate compute tasks
5
+ * across different backends (local, worker, or remote) using a flexible strategy.
6
+ *
7
+ * It supports four strategies:
8
+ * - `'local'`: Forces execution on the local (main thread) backend.
9
+ * - `'worker'`: Forces execution on a threaded/WebWorker backend.
10
+ * - `'remote'`: Forces execution on a remote/server backend.
11
+ * - `'auto'`: Automatically selects the first available backend that supports the task.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const compute = new HybridCompute({
16
+ * local: createLocalCompute(),
17
+ * worker: createThreadedCompute(workerPath, ['double']),
18
+ * remote: createRemoteCompute({ transport: 'fetch', endpoint: '/api/compute' })
19
+ * });
20
+ *
21
+ * const result = await compute.runTask<number, number>('double', 21, 'auto');
22
+ * console.log(result); // 42
23
+ * ```
24
+ */
25
+ export class HybridCompute {
26
+ /**
27
+ * Creates a new HybridCompute orchestrator.
28
+ *
29
+ * @param backends - An object containing optional local, worker, and remote backends.
30
+ */
31
+ constructor(backends) {
32
+ this.backends = backends;
33
+ }
34
+ /**
35
+ * Runs a task using the specified execution strategy.
36
+ *
37
+ * If `strategy` is `'auto'`, it will try the worker, then local, then remote backend in order of priority.
38
+ *
39
+ * @typeParam Input - The type of the input expected by the task.
40
+ * @typeParam Output - The expected output type returned by the task.
41
+ *
42
+ * @param taskName - The name of the task to execute.
43
+ * @param input - The input payload for the task.
44
+ * @param strategy - The execution strategy to use. Defaults to `'auto'`.
45
+ *
46
+ * @returns A Promise resolving to the task's output.
47
+ *
48
+ * @throws If no backend is available or able to run the task.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const output = await compute.runTask('greetUser', { name: 'Alice' }, 'worker');
53
+ * ```
54
+ */
55
+ async runTask(taskName, input, strategy = 'auto') {
56
+ if (isNotString(strategy)) {
57
+ console.info("Wrong type passed for `strategy`, defaulting to 'auto'");
58
+ strategy = 'auto';
59
+ }
60
+ if (strategy === 'local' && this.backends.local) {
61
+ return this.backends.local.runTask(taskName, input);
62
+ }
63
+ else if (strategy === 'worker' && this.backends.worker) {
64
+ return this.backends.worker.runTask(taskName, input);
65
+ }
66
+ else if (strategy === 'remote' && this.backends.remote) {
67
+ return this.backends.remote.runTask(taskName, input);
68
+ }
69
+ else if (strategy === 'auto') {
70
+ if (this.backends.worker?.canRun(taskName)) {
71
+ return this.backends.worker.runTask(taskName, input);
72
+ }
73
+ else if (this.backends.local?.canRun(taskName)) {
74
+ return this.backends.local.runTask(taskName, input);
75
+ }
76
+ else if (this.backends.remote?.canRun(taskName)) {
77
+ return this.backends.remote.runTask(taskName, input);
78
+ }
79
+ }
80
+ throw new Error(`No backend available for task '${taskName}' using strategy '${strategy}'`);
81
+ }
82
+ }
83
+ /**
84
+ * Factory function for creating a HybridCompute instance.
85
+ *
86
+ * @param backends - Configuration options specifying available backends.
87
+ * @returns A new HybridCompute orchestrator.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const hybrid = createHybridCompute({ local: createLocalCompute() });
92
+ * ```
93
+ */
94
+ export function createHybridCompute(backends) {
95
+ return new HybridCompute(backends);
96
+ }
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,aAAa;IAGxB;;;;OAIG;IACH,YAAY,QAAuC;QACjD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,KAAY,EACZ,WAAkC,MAAM;QAExC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACvE,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CACb,kCAAkC,QAAQ,qBAAqB,QAAQ,GAAG,CAC3E,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAuC;IACzE,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The strategy used to determine which compute backend to use.
3
+ *
4
+ * - `auto`: Automatically select the best backend available.
5
+ * - `local`: Run tasks directly on the main thread.
6
+ * - `worker`: Offload tasks to WebWorker or thread-based compute.
7
+ * - `remote`: Offload tasks to a remote server or service.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const strategy: ExecutionStrategyType = 'worker';
12
+ * ```
13
+ */
14
+ export type ExecutionStrategyType = 'auto' | 'local' | 'worker' | 'remote';
15
+ /**
16
+ * Describes a unit of work that can be executed by a compute backend.
17
+ *
18
+ * @template Input The input type expected by the task.
19
+ * @template Output The output type returned by the task.
20
+ *
21
+ * @property name - A unique name used to identify the task.
22
+ * @property run - A function that takes input and returns a Promise of the output.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const task: ComputeTaskInterface<number, number> = {
27
+ * name: 'double',
28
+ * run: async (x) => x * 2
29
+ * };
30
+ * ```
31
+ */
32
+ export interface ComputeTaskInterface<Input = unknown, Output = unknown> {
33
+ name: string;
34
+ run(input: Input): Promise<Output>;
35
+ }
36
+ /**
37
+ * Represents a backend capable of executing registered compute tasks.
38
+ *
39
+ * Each backend must be able to:
40
+ * - Determine if it can run a given task (`canRun`)
41
+ * - Execute a named task with input and return a Promise of output (`runTask`)
42
+ *
43
+ * @template Input The input type for task execution.
44
+ * @template Output The output type for task execution.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const backend: ComputeBackendInterface = {
49
+ * canRun: (taskName) => taskName === 'double',
50
+ * runTask: async (taskName, input) => {
51
+ * if (taskName === 'double') return (input as number) * 2;
52
+ * throw new Error('Unknown task');
53
+ * }
54
+ * };
55
+ * ```
56
+ */
57
+ export interface ComputeBackendInterface {
58
+ canRun(taskName: string): boolean;
59
+ runTask<Input, Output>(taskName: string, input: Input): Promise<Output>;
60
+ }
61
+ /**
62
+ * Configuration options for initializing the HybridCompute orchestrator.
63
+ *
64
+ * Backends are optional, and can be combined or omitted based on the environment or needs.
65
+ *
66
+ * @property local - A local synchronous compute backend (main thread).
67
+ * @property worker - A background-thread compute backend (e.g. WebWorker).
68
+ * @property remote - A server-side or cloud compute backend.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const options: HybridComputeOptionsInterface = {
73
+ * local: createLocalCompute(),
74
+ * remote: createRemoteCompute({ ... })
75
+ * };
76
+ * ```
77
+ *
78
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API
79
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
80
+ */
81
+ export interface HybridComputeOptionsInterface {
82
+ local?: ComputeBackendInterface;
83
+ worker?: ComputeBackendInterface;
84
+ remote?: ComputeBackendInterface;
85
+ }
86
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,6BAA6B;IAC5C,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hybrid-compute/core",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "Core orchestrator for dispatching compute tasks to local, threaded, or remote backends.",
5
5
  "keywords": [
6
6
  "compute",
@@ -32,13 +32,13 @@
32
32
  "release": "release-it",
33
33
  "test": "tsx --test **/__tests__/**/*.spec.ts",
34
34
  "pretest:ci": "rm -rf coverage && mkdir -p coverage",
35
- "test:ci": "glob -c \"node --import tsx --test --no-warnings --experimental-test-coverage --test-reporter=cobertura --test-reporter-destination=coverage/cobertura-coverage.xml --test-reporter=spec --test-reporter-destination=stdout\" \"**/__tests__/**/*.spec.ts\""
35
+ "test:ci": "glob-bin -c \"node --import tsx --test --no-warnings --experimental-test-coverage --test-reporter=cobertura --test-reporter-destination=coverage/cobertura-coverage.xml --test-reporter=spec --test-reporter-destination=stdout\" \"**/__tests__/**/*.spec.ts\""
36
36
  },
37
37
  "dependencies": {
38
38
  "@phun-ky/typeof": "^2.0.1"
39
39
  },
40
40
  "devDependencies": {
41
- "@types/node": "^24.0.3",
41
+ "@types/node": "^25.2.3",
42
42
  "eslint": "^9.27.0",
43
43
  "eslint-config-phun-ky": "^1.0.3",
44
44
  "prettier": "^3.5.3",
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/types.ts","../../node_modules/@phun-ky/typeof/dist/typeof.d.ts","./src/index.ts","./src/__tests__/core.spec.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/blob.d.ts","./node_modules/@types/node/web-globals/console.d.ts","./node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/encoding.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/utility.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client-stats.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/h2c-client.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-call-history.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/snapshot-agent.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cache-interceptor.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/importmeta.d.ts","./node_modules/@types/node/web-globals/messaging.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/performance.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/web-globals/streams.d.ts","./node_modules/@types/node/web-globals/timers.d.ts","./node_modules/@types/node/web-globals/url.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/inspector/promises.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/path/posix.d.ts","./node_modules/@types/node/path/win32.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/quic.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/test/reporters.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/util/types.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","../../node_modules/@types/ms/index.d.ts","../../node_modules/@types/debug/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/hast/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/json5/index.d.ts","../../node_modules/@types/mdast/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/parse-path/index.d.ts","../../node_modules/@types/ungap__structured-clone/index.d.ts"],"fileIdsList":[[55,117,125,129,132,134,135,136,148],[55,117,125,129,132,134,135,136,148,174],[55,117,125,129,132,134,135,136,148,177],[55,114,115,117,125,129,132,134,135,136,148],[55,116,117,125,129,132,134,135,136,148],[117,125,129,132,134,135,136,148],[55,117,125,129,132,134,135,136,148,156],[55,117,118,123,125,128,129,132,134,135,136,138,148,153,165],[55,117,118,119,125,128,129,132,134,135,136,148],[55,117,120,125,129,132,134,135,136,148,166],[55,117,121,122,125,129,132,134,135,136,139,148],[55,117,122,125,129,132,134,135,136,148,153,162],[55,117,123,125,128,129,132,134,135,136,138,148],[55,116,117,124,125,129,132,134,135,136,148],[55,117,125,126,129,132,134,135,136,148],[55,117,125,127,128,129,132,134,135,136,148],[55,116,117,125,128,129,132,134,135,136,148],[55,117,125,128,129,130,132,134,135,136,148,153,165],[55,117,125,128,129,130,132,134,135,136,148,153,156],[55,104,117,125,128,129,131,132,134,135,136,138,148,153,165],[55,117,125,128,129,131,132,134,135,136,138,148,153,162,165],[55,117,125,129,131,132,133,134,135,136,148,153,162,165],[53,54,55,56,57,58,59,60,61,62,63,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172],[55,117,125,128,129,132,134,135,136,148],[55,117,125,129,132,134,136,148],[55,117,125,129,132,134,135,136,137,148,165],[55,117,125,128,129,132,134,135,136,138,148,153],[55,117,125,129,132,134,135,136,139,148],[55,117,125,129,132,134,135,136,140,148],[55,117,125,128,129,132,134,135,136,143,148],[55,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172],[55,117,125,129,132,134,135,136,145,148],[55,117,125,129,132,134,135,136,146,148],[55,117,122,125,129,132,134,135,136,138,148,156],[55,117,125,128,129,132,134,135,136,148,149],[55,117,125,129,132,134,135,136,148,150,166,169],[55,117,125,128,129,132,134,135,136,148,153,155,156],[55,117,125,129,132,134,135,136,148,154,156],[55,117,125,129,132,134,135,136,148,156,166],[55,117,125,129,132,134,135,136,148,157],[55,114,117,125,129,132,134,135,136,148,153,159,165],[55,117,125,129,132,134,135,136,148,153,158],[55,117,125,128,129,132,134,135,136,148,160,161],[55,117,125,129,132,134,135,136,148,160,161],[55,117,122,125,129,132,134,135,136,138,148,153,162],[55,117,125,129,132,134,135,136,148,163],[55,117,125,129,132,134,135,136,138,148,164],[55,117,125,129,131,132,134,135,136,146,148,165],[55,117,125,129,132,134,135,136,148,166,167],[55,117,122,125,129,132,134,135,136,148,167],[55,117,125,129,132,134,135,136,148,153,168],[55,117,125,129,132,134,135,136,137,148,169],[55,117,125,129,132,134,135,136,148,170],[55,117,120,125,129,132,134,135,136,148],[55,117,122,125,129,132,134,135,136,148],[55,117,125,129,132,134,135,136,148,166],[55,104,117,125,129,132,134,135,136,148],[55,117,125,129,132,134,135,136,148,165],[55,117,125,129,132,134,135,136,148,171],[55,117,125,129,132,134,135,136,143,148],[55,117,125,129,132,134,135,136,148,161],[55,104,117,125,128,129,130,132,134,135,136,143,148,153,156,165,168,169,171],[55,117,125,129,132,134,135,136,148,153,172],[55,70,73,76,77,117,125,129,132,134,135,136,148,165],[55,73,117,125,129,132,134,135,136,148,153,165],[55,73,77,117,125,129,132,134,135,136,148,165],[55,117,125,129,132,134,135,136,148,153],[55,67,117,125,129,132,134,135,136,148],[55,71,117,125,129,132,134,135,136,148],[55,69,70,73,117,125,129,132,134,135,136,148,165],[55,117,125,129,132,134,135,136,138,148,162],[55,117,125,129,132,134,135,136,148,173],[55,67,117,125,129,132,134,135,136,148,173],[55,69,73,117,125,129,132,134,135,136,138,148,165],[55,64,65,66,68,72,117,125,128,129,132,134,135,136,148,153,165],[55,73,81,89,117,125,129,132,134,135,136,148],[55,65,71,117,125,129,132,134,135,136,148],[55,73,98,99,117,125,129,132,134,135,136,148],[55,65,68,73,117,125,129,132,134,135,136,148,156,165,173],[55,73,117,125,129,132,134,135,136,148],[55,69,73,117,125,129,132,134,135,136,148,165],[55,64,117,125,129,132,134,135,136,148],[55,67,68,69,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,117,125,129,132,134,135,136,148],[55,73,91,94,117,125,129,132,134,135,136,148],[55,73,81,82,83,117,125,129,132,134,135,136,148],[55,71,73,82,84,117,125,129,132,134,135,136,148],[55,72,117,125,129,132,134,135,136,148],[55,65,67,73,117,125,129,132,134,135,136,148],[55,73,77,82,84,117,125,129,132,134,135,136,148],[55,77,117,125,129,132,134,135,136,148],[55,71,73,76,117,125,129,132,134,135,136,148,165],[55,65,69,73,81,117,125,129,132,134,135,136,148],[55,73,91,117,125,129,132,134,135,136,148],[55,84,117,125,129,132,134,135,136,148],[55,67,73,98,117,125,129,132,134,135,136,148,156,171,173],[51,55,114,117,125,129,132,134,135,136,148,158],[49,50,55,117,125,129,132,134,135,136,148]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"79ddc9655edd2484e01845eaf64d8b9edb663011c8906085481c81d260a8e1e4","signature":"7e0a39d7e9bd71bc245d45bef20fb3e8f9aeef8fff85144e7e49ffff376d2a65"},{"version":"297ca747af2a715b1d9d80e87447d372849bcc372dc620f4f46445c69cb3d436","impliedFormat":99},{"version":"e73c4b340aec9cd53ebf2cd686484a710b59d1d43c0cdf98f9c52f277f05f44a","signature":"2bd8e387a34aaa8d553144408e70c8eb2fa3882a82efb788c633b83dc1cb8141"},{"version":"6d47b2e364c99e94a2097bdbe984ebef8a336145ace688c95177a8a4100d338a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"237ba5ac2a95702a114a309e39c53a5bddff5f6333b325db9764df9b34f3502b","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"f83fb2b1338afbb3f9d733c7d6e8b135826c41b0518867df0c0ace18ae1aa270","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9451a46a89ed209e2e08329e6cac59f89356eae79a7230f916d8cc38725407c7","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95","impliedFormat":1},{"version":"f7ba0e839daa0702e3ff1a1a871c0d8ea2d586ce684dd8a72c786c36a680b1d9","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"f64deb26664af64dc274637343bde8d82f930c77af05a412c7d310b77207a448","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"bce309f4d9b67c18d4eeff5bba6cf3e67b2b0aead9f03f75d6060c553974d7ba","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"2a00d005e3af99cd1cfa75220e60c61b04bfb6be7ca7453bfe2ef6cca37cc03c","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"c3877fef8a43cd434f9728f25a97575b0eb73d92f38b5c87c840daccc3e21d97","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"1dbd83860e7634f9c236647f45dbc5d3c4f9eba8827d87209d6e9826fdf4dbd5","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"b37f83e7deea729aa9ce5593f78905afb45b7532fdff63041d374f60059e7852","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"e72bcd16c134dae5a840b1d5d0e8b87e1d07fbbff01d66e9a7b913da3cd39b8e","impliedFormat":1},{"version":"4c9dd88817e91f98e93c3445102dd3671748c8c523a5b3ba01c5b65af0db07e2","impliedFormat":1}],"root":[49,51,52],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":7},"referencedMap":[[50,1],[175,2],[176,1],[178,3],[179,1],[180,1],[181,3],[174,1],[182,1],[183,1],[184,1],[177,1],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[114,4],[115,4],[116,5],[55,6],[117,7],[118,8],[119,9],[53,1],[120,10],[121,11],[122,12],[123,13],[124,14],[125,15],[126,15],[127,16],[128,17],[129,18],[130,19],[56,1],[54,1],[131,20],[132,21],[133,22],[173,23],[134,24],[135,25],[136,24],[137,26],[138,27],[139,28],[140,29],[141,29],[142,29],[143,30],[144,31],[145,32],[146,33],[147,34],[148,35],[149,35],[150,36],[151,1],[152,1],[153,37],[154,38],[155,37],[156,39],[157,40],[158,41],[159,42],[160,43],[161,44],[162,45],[163,46],[164,47],[165,48],[166,49],[167,50],[168,51],[169,52],[170,53],[57,24],[58,1],[59,54],[60,55],[61,1],[62,56],[63,1],[105,57],[106,58],[107,59],[108,59],[109,60],[110,1],[111,7],[112,61],[113,58],[171,62],[172,63],[81,64],[93,65],[79,66],[94,67],[103,68],[70,69],[71,70],[69,71],[102,72],[97,73],[101,74],[73,75],[90,76],[72,77],[100,78],[67,79],[68,73],[74,80],[75,1],[80,81],[78,80],[65,82],[104,83],[95,84],[84,85],[83,80],[85,86],[88,87],[82,88],[86,89],[98,72],[76,90],[77,91],[89,92],[66,67],[92,93],[91,80],[87,94],[96,1],[64,1],[99,95],[52,96],[51,97],[49,1]],"latestChangedDtsFile":"./dist/__tests__/core.spec.d.ts","version":"5.9.3"}