@bquery/bquery 1.9.0 → 1.10.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.
Files changed (124) hide show
  1. package/README.md +181 -25
  2. package/dist/{a11y-_9X-kt-_.js → a11y-DG2i4iZN.js} +3 -3
  3. package/dist/{a11y-_9X-kt-_.js.map → a11y-DG2i4iZN.js.map} +1 -1
  4. package/dist/a11y.es.mjs +1 -1
  5. package/dist/{component-L3-JfOFz.js → component-DRotf1hl.js} +19 -18
  6. package/dist/{component-L3-JfOFz.js.map → component-DRotf1hl.js.map} +1 -1
  7. package/dist/component.es.mjs +1 -1
  8. package/dist/concurrency/errors.d.ts +29 -0
  9. package/dist/concurrency/errors.d.ts.map +1 -0
  10. package/dist/concurrency/high-level.d.ts +85 -0
  11. package/dist/concurrency/high-level.d.ts.map +1 -0
  12. package/dist/concurrency/index.d.ts +19 -0
  13. package/dist/concurrency/index.d.ts.map +1 -0
  14. package/dist/concurrency/internal.d.ts +26 -0
  15. package/dist/concurrency/internal.d.ts.map +1 -0
  16. package/dist/concurrency/pipeline.d.ts +30 -0
  17. package/dist/concurrency/pipeline.d.ts.map +1 -0
  18. package/dist/concurrency/pool.d.ts +48 -0
  19. package/dist/concurrency/pool.d.ts.map +1 -0
  20. package/dist/concurrency/reactive.d.ts +107 -0
  21. package/dist/concurrency/reactive.d.ts.map +1 -0
  22. package/dist/concurrency/rpc.d.ts +46 -0
  23. package/dist/concurrency/rpc.d.ts.map +1 -0
  24. package/dist/concurrency/support.d.ts +23 -0
  25. package/dist/concurrency/support.d.ts.map +1 -0
  26. package/dist/concurrency/task.d.ts +31 -0
  27. package/dist/concurrency/task.d.ts.map +1 -0
  28. package/dist/concurrency/types.d.ts +343 -0
  29. package/dist/concurrency/types.d.ts.map +1 -0
  30. package/dist/concurrency-BU1wPEsZ.js +826 -0
  31. package/dist/concurrency-BU1wPEsZ.js.map +1 -0
  32. package/dist/concurrency.es.mjs +29 -0
  33. package/dist/{constraints-D5RHQLmP.js → constraints-CqjhmpZC.js} +1 -1
  34. package/dist/{constraints-D5RHQLmP.js.map → constraints-CqjhmpZC.js.map} +1 -1
  35. package/dist/core-CongXJuo.js +87 -0
  36. package/dist/core-CongXJuo.js.map +1 -0
  37. package/dist/{custom-directives-Dr4C5lVV.js → custom-directives-BjFzFhuf.js} +1 -1
  38. package/dist/{custom-directives-Dr4C5lVV.js.map → custom-directives-BjFzFhuf.js.map} +1 -1
  39. package/dist/{devtools-BhB2iDPT.js → devtools-C5FExMwv.js} +2 -2
  40. package/dist/{devtools-BhB2iDPT.js.map → devtools-C5FExMwv.js.map} +1 -1
  41. package/dist/devtools.es.mjs +1 -1
  42. package/dist/{dnd-NwZBYh4l.js → dnd-BAqzPlSo.js} +1 -1
  43. package/dist/{dnd-NwZBYh4l.js.map → dnd-BAqzPlSo.js.map} +1 -1
  44. package/dist/dnd.es.mjs +1 -1
  45. package/dist/effect-Cc51IH91.js +87 -0
  46. package/dist/effect-Cc51IH91.js.map +1 -0
  47. package/dist/{env-CTdvLaH2.js → env-PvwYHnJq.js} +1 -1
  48. package/dist/{env-CTdvLaH2.js.map → env-PvwYHnJq.js.map} +1 -1
  49. package/dist/{forms-UhAeJEoO.js → forms-Dx1Scvh0.js} +41 -40
  50. package/dist/{forms-UhAeJEoO.js.map → forms-Dx1Scvh0.js.map} +1 -1
  51. package/dist/forms.es.mjs +1 -1
  52. package/dist/full.d.ts +2 -0
  53. package/dist/full.d.ts.map +1 -1
  54. package/dist/full.es.mjs +243 -214
  55. package/dist/full.iife.js +117 -33
  56. package/dist/full.iife.js.map +1 -1
  57. package/dist/full.umd.js +117 -33
  58. package/dist/full.umd.js.map +1 -1
  59. package/dist/{i18n-kuF6Ekj6.js → i18n-Cazyk9RD.js} +3 -3
  60. package/dist/{i18n-kuF6Ekj6.js.map → i18n-Cazyk9RD.js.map} +1 -1
  61. package/dist/i18n.es.mjs +1 -1
  62. package/dist/index.d.ts +1 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.es.mjs +270 -241
  65. package/dist/media/observers.d.ts.map +1 -1
  66. package/dist/{media-D4zLj9t-.js → media-dAKIGPk3.js} +3 -3
  67. package/dist/{media-D4zLj9t-.js.map → media-dAKIGPk3.js.map} +1 -1
  68. package/dist/media.es.mjs +1 -1
  69. package/dist/{motion-BJsAuULb.js → motion-BBMso9Ir.js} +1 -1
  70. package/dist/{motion-BJsAuULb.js.map → motion-BBMso9Ir.js.map} +1 -1
  71. package/dist/motion.es.mjs +1 -1
  72. package/dist/{mount-B-JvH6Y0.js → mount-C8O2vXkQ.js} +10 -9
  73. package/dist/{mount-B-JvH6Y0.js.map → mount-C8O2vXkQ.js.map} +1 -1
  74. package/dist/{platform-Dw2gE3zI.js → platform-BPHIXbw8.js} +17 -16
  75. package/dist/{platform-Dw2gE3zI.js.map → platform-BPHIXbw8.js.map} +1 -1
  76. package/dist/platform.es.mjs +1 -1
  77. package/dist/{plugin-C2WuC8SF.js → plugin-DjTqWg-P.js} +2 -2
  78. package/dist/{plugin-C2WuC8SF.js.map → plugin-DjTqWg-P.js.map} +1 -1
  79. package/dist/plugin.es.mjs +1 -1
  80. package/dist/reactive/watch.d.ts.map +1 -1
  81. package/dist/reactive/websocket.d.ts +6 -3
  82. package/dist/reactive/websocket.d.ts.map +1 -1
  83. package/dist/{reactive-BjpLkclt.js → reactive-BAd2hfl8.js} +436 -449
  84. package/dist/reactive-BAd2hfl8.js.map +1 -0
  85. package/dist/reactive.es.mjs +42 -40
  86. package/dist/readonly-C0ZwS1Tf.js +35 -0
  87. package/dist/readonly-C0ZwS1Tf.js.map +1 -0
  88. package/dist/{registry-B08iilIh.js → registry-Cr6VH8CR.js} +1 -1
  89. package/dist/{registry-B08iilIh.js.map → registry-Cr6VH8CR.js.map} +1 -1
  90. package/dist/{router-BieVwgci.js → router-CCepRMpC.js} +29 -28
  91. package/dist/{router-BieVwgci.js.map → router-CCepRMpC.js.map} +1 -1
  92. package/dist/router.es.mjs +1 -1
  93. package/dist/{ssr-CrGSJySz.js → ssr-D-1IPcfw.js} +4 -4
  94. package/dist/{ssr-CrGSJySz.js.map → ssr-D-1IPcfw.js.map} +1 -1
  95. package/dist/ssr.es.mjs +1 -1
  96. package/dist/{store-CY6sjTW3.js → store-CjmEeX9-.js} +6 -6
  97. package/dist/{store-CY6sjTW3.js.map → store-CjmEeX9-.js.map} +1 -1
  98. package/dist/store.es.mjs +2 -2
  99. package/dist/{testing-UjAtu9aQ.js → testing-TdfaL7VE.js} +7 -7
  100. package/dist/{testing-UjAtu9aQ.js.map → testing-TdfaL7VE.js.map} +1 -1
  101. package/dist/testing.es.mjs +1 -1
  102. package/dist/{untrack-D0fnO5k2.js → untrack-bjWDNdyE.js} +11 -10
  103. package/dist/{untrack-D0fnO5k2.js.map → untrack-bjWDNdyE.js.map} +1 -1
  104. package/dist/view.es.mjs +12 -11
  105. package/package.json +17 -13
  106. package/src/concurrency/errors.ts +57 -0
  107. package/src/concurrency/high-level.ts +387 -0
  108. package/src/concurrency/index.ts +63 -0
  109. package/src/concurrency/internal.ts +100 -0
  110. package/src/concurrency/pipeline.ts +133 -0
  111. package/src/concurrency/pool.ts +450 -0
  112. package/src/concurrency/reactive.ts +339 -0
  113. package/src/concurrency/rpc.ts +380 -0
  114. package/src/concurrency/support.ts +44 -0
  115. package/src/concurrency/task.ts +318 -0
  116. package/src/concurrency/types.ts +431 -0
  117. package/src/full.ts +65 -0
  118. package/src/index.ts +3 -0
  119. package/src/media/observers.ts +5 -8
  120. package/src/reactive/watch.ts +10 -9
  121. package/src/reactive/websocket.ts +31 -8
  122. package/dist/core-DdtZHzsS.js +0 -168
  123. package/dist/core-DdtZHzsS.js.map +0 -1
  124. package/dist/reactive-BjpLkclt.js.map +0 -1
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Reactive wrappers around reusable concurrency primitives.
3
+ *
4
+ * @module bquery/concurrency
5
+ */
6
+ import type { CreateRpcPoolOptions, CreateRpcWorkerOptions, CreateTaskPoolOptions, CreateTaskWorkerOptions, ReactiveRpcPool, ReactiveRpcWorker, ReactiveTaskPool, ReactiveTaskWorker, WorkerRpcHandlers, WorkerTaskHandler } from './types';
7
+ /**
8
+ * Creates a reactive wrapper around a reusable task worker.
9
+ *
10
+ * The returned wrapper preserves the standard `run()` / `terminate()` API and
11
+ * adds readonly signals such as `state$` and `busy$` for UI bindings.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { createReactiveTaskWorker } from '@bquery/bquery/concurrency';
16
+ * import { effect } from '@bquery/bquery/reactive';
17
+ *
18
+ * const worker = createReactiveTaskWorker((value: number) => value * 2);
19
+ *
20
+ * effect(() => {
21
+ * console.log(worker.state$.value, worker.busy$.value);
22
+ * });
23
+ *
24
+ * await worker.run(21);
25
+ * worker.terminate();
26
+ * ```
27
+ */
28
+ export declare function createReactiveTaskWorker<TInput = void, TResult = unknown>(handler: WorkerTaskHandler<TInput, TResult>, options?: CreateTaskWorkerOptions): ReactiveTaskWorker<TInput, TResult>;
29
+ /**
30
+ * Creates a reactive wrapper around a reusable RPC worker.
31
+ *
32
+ * The returned wrapper preserves the standard `call()` / `terminate()` API and
33
+ * adds readonly signals such as `state$` and `busy$` for UI bindings.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import { createReactiveRpcWorker } from '@bquery/bquery/concurrency';
38
+ * import { effect } from '@bquery/bquery/reactive';
39
+ *
40
+ * const rpc = createReactiveRpcWorker({
41
+ * sum: ({ values }: { values: number[] }) => values.reduce((total, value) => total + value, 0),
42
+ * });
43
+ *
44
+ * effect(() => {
45
+ * console.log(rpc.state$.value, rpc.busy$.value);
46
+ * });
47
+ *
48
+ * await rpc.call('sum', { values: [1, 2, 3] });
49
+ * rpc.terminate();
50
+ * ```
51
+ */
52
+ export declare function createReactiveRpcWorker<TRoutes extends WorkerRpcHandlers>(handlers: TRoutes, options?: CreateRpcWorkerOptions): ReactiveRpcWorker<TRoutes>;
53
+ /**
54
+ * Creates a reactive wrapper around a reusable task pool.
55
+ *
56
+ * The returned wrapper preserves the standard `run()` / `clear()` /
57
+ * `terminate()` API and adds readonly signals for pool state and queue load.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * import { createReactiveTaskPool } from '@bquery/bquery/concurrency';
62
+ * import { effect } from '@bquery/bquery/reactive';
63
+ *
64
+ * const pool = createReactiveTaskPool((value: number) => value * 2, { concurrency: 2 });
65
+ *
66
+ * effect(() => {
67
+ * console.log(pool.pending$.value, pool.size$.value, pool.state$.value);
68
+ * });
69
+ *
70
+ * await Promise.all([pool.run(1), pool.run(2), pool.run(3)]);
71
+ * pool.terminate();
72
+ * ```
73
+ */
74
+ export declare function createReactiveTaskPool<TInput = void, TResult = unknown>(handler: WorkerTaskHandler<TInput, TResult>, options?: CreateTaskPoolOptions): ReactiveTaskPool<TInput, TResult>;
75
+ /**
76
+ * Creates a reactive wrapper around a reusable RPC pool.
77
+ *
78
+ * The returned wrapper preserves the standard `call()` / `clear()` /
79
+ * `terminate()` API and adds readonly signals for pool state and queue load.
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * import { createReactiveRpcPool } from '@bquery/bquery/concurrency';
84
+ * import { effect } from '@bquery/bquery/reactive';
85
+ *
86
+ * const pool = createReactiveRpcPool(
87
+ * {
88
+ * sum: ({ values }: { values: number[] }) => values.reduce((total, value) => total + value, 0),
89
+ * },
90
+ * { concurrency: 2 }
91
+ * );
92
+ *
93
+ * effect(() => {
94
+ * console.log(pool.pending$.value, pool.size$.value, pool.state$.value);
95
+ * });
96
+ *
97
+ * await Promise.all([
98
+ * pool.call('sum', { values: [1, 2] }),
99
+ * pool.call('sum', { values: [3, 4] }),
100
+ * pool.call('sum', { values: [5, 6] }),
101
+ * ]);
102
+ *
103
+ * pool.terminate();
104
+ * ```
105
+ */
106
+ export declare function createReactiveRpcPool<TRoutes extends WorkerRpcHandlers>(handlers: TRoutes, options?: CreateRpcPoolOptions): ReactiveRpcPool<TRoutes>;
107
+ //# sourceMappingURL=reactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../../src/concurrency/reactive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAKlB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AA6DjB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,OAAO,EACvE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,OAAO,GAAE,uBAA4B,GACpC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAwBrC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,SAAS,iBAAiB,EACvE,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE,sBAA2B,GACnC,iBAAiB,CAAC,OAAO,CAAC,CA4B5B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,OAAO,EACrE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,OAAO,GAAE,qBAA0B,GAClC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAwCnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,iBAAiB,EACrE,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE,oBAAyB,GACjC,eAAe,CAAC,OAAO,CAAC,CA4C1B"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * RPC-style worker communication helpers.
3
+ *
4
+ * @module bquery/concurrency
5
+ */
6
+ import type { CallWorkerMethodOptions, CreateRpcWorkerOptions, RpcWorker, WorkerRpcHandlers } from './types';
7
+ /**
8
+ * Creates a reusable RPC-style worker with explicit named method dispatch.
9
+ *
10
+ * The worker processes one request at a time to keep lifecycle, timeout, abort,
11
+ * and cleanup semantics aligned with the minimal Milestone 1 task API.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { createRpcWorker } from '@bquery/bquery/concurrency';
16
+ *
17
+ * const rpc = createRpcWorker({
18
+ * sum: ({ values }: { values: number[] }) => values.reduce((total, value) => total + value, 0),
19
+ * double: (value: number) => value * 2,
20
+ * });
21
+ *
22
+ * const total = await rpc.call('sum', { values: [1, 2, 3] });
23
+ * rpc.terminate();
24
+ * ```
25
+ */
26
+ export declare function createRpcWorker<TRoutes extends WorkerRpcHandlers>(handlers: TRoutes, options?: CreateRpcWorkerOptions): RpcWorker<TRoutes>;
27
+ /**
28
+ * Executes a single named RPC method in a fresh worker and tears it down after
29
+ * the response is received.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { callWorkerMethod } from '@bquery/bquery/concurrency';
34
+ *
35
+ * const total = await callWorkerMethod(
36
+ * {
37
+ * sum: ({ values }: { values: number[] }) =>
38
+ * values.reduce((result, value) => result + value, 0),
39
+ * },
40
+ * 'sum',
41
+ * { values: [1, 2, 3] }
42
+ * );
43
+ * ```
44
+ */
45
+ export declare function callWorkerMethod<TRoutes extends WorkerRpcHandlers, TMethod extends keyof TRoutes & string>(handlers: TRoutes, method: TMethod, input: Parameters<TRoutes[TMethod]>[0], options?: CallWorkerMethodOptions): Promise<Awaited<ReturnType<TRoutes[TMethod]>>>;
46
+ //# sourceMappingURL=rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/concurrency/rpc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,SAAS,EAGT,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAyGjB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,iBAAiB,EAC/D,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE,sBAA2B,GACnC,SAAS,CAAC,OAAO,CAAC,CA4LpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,SAAS,iBAAiB,EACjC,OAAO,SAAS,MAAM,OAAO,GAAG,MAAM,EAEtC,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EACtC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAQhD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Runtime support checks for the concurrency module.
3
+ *
4
+ * @module bquery/concurrency
5
+ */
6
+ import type { ConcurrencySupport } from './types';
7
+ /**
8
+ * Returns a feature snapshot for zero-build inline worker execution.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * if (!isConcurrencySupported()) {
13
+ * console.warn('Worker tasks are unavailable in this environment.');
14
+ * }
15
+ * ```
16
+ */
17
+ export declare function getConcurrencySupport(): ConcurrencySupport;
18
+ /**
19
+ * Returns `true` when bQuery can create inline worker tasks in the current
20
+ * environment.
21
+ */
22
+ export declare function isConcurrencySupported(): boolean;
23
+ //# sourceMappingURL=support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/concurrency/support.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAiB1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Zero-build worker task helpers.
3
+ *
4
+ * @module bquery/concurrency
5
+ */
6
+ import type { CreateTaskWorkerOptions, RunTaskOptions, TaskWorker, WorkerTaskHandler } from './types';
7
+ /**
8
+ * Creates a reusable worker task handle around a standalone function.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { createTaskWorker } from '@bquery/bquery/concurrency';
13
+ *
14
+ * const worker = createTaskWorker((value: number) => value * value, { name: 'square-worker' });
15
+ * const result = await worker.run(12);
16
+ * worker.terminate();
17
+ * ```
18
+ */
19
+ export declare function createTaskWorker<TInput = void, TResult = unknown>(handler: WorkerTaskHandler<TInput, TResult>, options?: CreateTaskWorkerOptions): TaskWorker<TInput, TResult>;
20
+ /**
21
+ * Executes a single task in a fresh worker and tears it down afterwards.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * import { runTask } from '@bquery/bquery/concurrency';
26
+ *
27
+ * const result = await runTask((value: number) => value * 2, 21);
28
+ * ```
29
+ */
30
+ export declare function runTask<TInput = void, TResult = unknown>(handler: WorkerTaskHandler<TInput, TResult>, input: TInput, options?: RunTaskOptions): Promise<TResult>;
31
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/concurrency/task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,KAAK,EACV,uBAAuB,EACvB,cAAc,EAEd,UAAU,EAEV,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAiEjB;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,OAAO,EAC/D,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,OAAO,GAAE,uBAA4B,GACpC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAyL7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,OAAO,EAC5D,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAQlB"}
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Public types for the concurrency module.
3
+ *
4
+ * @module bquery/concurrency
5
+ */
6
+ import type { ReadonlySignalHandle } from '../reactive/index';
7
+ /**
8
+ * Standalone task handler executed inside a Web Worker.
9
+ *
10
+ * The function must be self-contained because it is stringified and evaluated
11
+ * in the worker context without access to outer closures.
12
+ *
13
+ * The bivariance wrapper is intentional: TypeScript checks plain function
14
+ * parameter types contravariantly under `strictFunctionTypes`, but method
15
+ * signatures remain bivariant. Modeling the public handler as a method-shaped
16
+ * signature keeps object-literal task and RPC handlers ergonomic in strict
17
+ * typechecks, including the repository's dedicated test typecheck. In practice
18
+ * this allows narrower inline handler parameter annotations in object literals;
19
+ * the trade-off is that assignability here is intentionally a little less strict
20
+ * than a plain function-type alias would be.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const square = (value: number) => value * value;
25
+ * ```
26
+ */
27
+ export type WorkerTaskHandler<TInput = void, TResult = unknown> = {
28
+ bivarianceHack(input: TInput): TResult | Promise<TResult>;
29
+ }['bivarianceHack'];
30
+ /** Lifecycle state of a reusable task worker. */
31
+ export type TaskWorkerState = 'idle' | 'running' | 'terminated';
32
+ /** Structured error codes emitted by the concurrency module. */
33
+ export type TaskWorkerErrorCode = 'ABORT' | 'BUSY' | 'METHOD_NOT_FOUND' | 'QUEUE_CLEARED' | 'QUEUE_FULL' | 'SERIALIZATION' | 'TERMINATED' | 'TIMEOUT' | 'UNSUPPORTED' | 'WORKER';
34
+ /** Per-run options for worker task execution. */
35
+ export interface TaskRunOptions {
36
+ /**
37
+ * AbortSignal used to cancel the current run.
38
+ * Cancellation terminates the active worker run so later runs start cleanly.
39
+ */
40
+ signal?: AbortSignal;
41
+ /**
42
+ * Optional timeout in milliseconds.
43
+ * Non-finite or non-positive values disable timeout handling.
44
+ */
45
+ timeout?: number;
46
+ /**
47
+ * Transferable values passed together with the task payload.
48
+ * Use this for large `ArrayBuffer`-backed payloads when appropriate.
49
+ */
50
+ transfer?: Transferable[];
51
+ }
52
+ /** Options for creating a reusable task worker. */
53
+ export interface CreateTaskWorkerOptions {
54
+ /** Optional worker name shown in browser tooling where supported. */
55
+ name?: string;
56
+ /**
57
+ * Default timeout applied to `run()` calls when the run itself does not
58
+ * override it.
59
+ */
60
+ timeout?: number;
61
+ }
62
+ /** Options accepted by the one-off `runTask()` helper. */
63
+ export interface RunTaskOptions extends CreateTaskWorkerOptions, TaskRunOptions {
64
+ }
65
+ /** Options for creating a reusable RPC worker. */
66
+ export type CreateRpcWorkerOptions = CreateTaskWorkerOptions;
67
+ /** Options accepted by the one-off RPC method helper. */
68
+ export interface CallWorkerMethodOptions extends CreateRpcWorkerOptions, TaskRunOptions {
69
+ }
70
+ /** Options for creating a reusable task worker pool. */
71
+ export interface CreateTaskPoolOptions extends CreateTaskWorkerOptions {
72
+ /** Maximum number of workers executing tasks in parallel (default: 4). */
73
+ concurrency?: number;
74
+ /**
75
+ * Maximum number of not-yet-started tasks kept in the queue.
76
+ * Use `0` to disable queueing or `Infinity` for an unbounded queue.
77
+ */
78
+ maxQueue?: number;
79
+ }
80
+ /** Options for creating a reusable RPC worker pool. */
81
+ export interface CreateRpcPoolOptions extends CreateRpcWorkerOptions {
82
+ /** Maximum number of workers executing calls in parallel (default: 4). */
83
+ concurrency?: number;
84
+ /**
85
+ * Maximum number of not-yet-started calls kept in the queue.
86
+ * Use `0` to disable queueing or `Infinity` for an unbounded queue.
87
+ */
88
+ maxQueue?: number;
89
+ }
90
+ /** Standalone task descriptor for `parallel()` / `batchTasks()`. */
91
+ export interface ParallelTask<TInput = unknown, TResult = unknown> {
92
+ /** Standalone handler revived inside a worker context. */
93
+ handler: WorkerTaskHandler<TInput, TResult>;
94
+ /** Serializable payload for the handler. */
95
+ input: TInput;
96
+ /** Optional per-task timeout, abort, and transfer options. */
97
+ options?: TaskRunOptions;
98
+ }
99
+ /** Shared pool options for high-level parallel task helpers. */
100
+ export type ParallelOptions = CreateTaskPoolOptions;
101
+ /** Shared options for chunked collection helpers such as `map()` and `filter()`. */
102
+ export interface ParallelCollectionOptions extends CreateTaskPoolOptions {
103
+ /**
104
+ * Number of array items grouped into each worker run.
105
+ * Defaults to `1`.
106
+ */
107
+ batchSize?: number;
108
+ /** AbortSignal shared across all queued or running chunks. */
109
+ signal?: AbortSignal;
110
+ }
111
+ /** Callback signature used by `map()` for parallel array processing. */
112
+ export type ParallelMapHandler<TInput, TResult> = (value: TInput, index: number) => TResult | Promise<TResult>;
113
+ /** Callback signature used by predicate-style helpers such as `filter()`. */
114
+ export type ParallelPredicateHandler<TInput> = (value: TInput, index: number) => boolean | Promise<boolean>;
115
+ /** Callback signature used by `reduce()` for sequential accumulation inside a worker. */
116
+ export type ParallelReduceHandler<TAccumulator, TInput> = (accumulator: TAccumulator, value: TInput, index: number) => TAccumulator | Promise<TAccumulator>;
117
+ /** Options for `map()` chunking and cancellation behavior. */
118
+ export type ParallelMapOptions = ParallelCollectionOptions;
119
+ /** Shared defaults for the optional fluent concurrency pipeline. */
120
+ export type ConcurrencyPipelineOptions = ParallelCollectionOptions;
121
+ /**
122
+ * Optional fluent pipeline over the existing explicit collection helpers.
123
+ *
124
+ * The pipeline is immutable: each transforming stage returns a new pipeline
125
+ * instead of mutating the previous one in place.
126
+ */
127
+ export interface ConcurrencyPipeline<TValue> {
128
+ /**
129
+ * Maps the current array value through the existing worker-backed `map()` helper.
130
+ */
131
+ map<TResult>(mapper: ParallelMapHandler<TValue, TResult>, options?: ParallelCollectionOptions): ConcurrencyPipeline<TResult>;
132
+ /**
133
+ * Filters the current array value through the existing worker-backed `filter()` helper.
134
+ */
135
+ filter(predicate: ParallelPredicateHandler<TValue>, options?: ParallelCollectionOptions): ConcurrencyPipeline<TValue>;
136
+ /**
137
+ * Resolves the pipeline to a materialized array.
138
+ */
139
+ toArray(): Promise<TValue[]>;
140
+ /**
141
+ * Evaluates whether at least one item matches via the existing `some()` helper.
142
+ */
143
+ some(predicate: ParallelPredicateHandler<TValue>, options?: ParallelCollectionOptions): Promise<boolean>;
144
+ /**
145
+ * Evaluates whether every item matches via the existing `every()` helper.
146
+ */
147
+ every(predicate: ParallelPredicateHandler<TValue>, options?: ParallelCollectionOptions): Promise<boolean>;
148
+ /**
149
+ * Finds the first matching item via the existing `find()` helper.
150
+ */
151
+ find(predicate: ParallelPredicateHandler<TValue>, options?: ParallelCollectionOptions): Promise<TValue | undefined>;
152
+ /**
153
+ * Reduces the current array value via the existing `reduce()` helper.
154
+ */
155
+ reduce<TAccumulator>(reducer: ParallelReduceHandler<TAccumulator, TValue>, initialValue: TAccumulator, options?: TaskRunOptions): Promise<TAccumulator>;
156
+ }
157
+ /** Result tuple inferred from a `parallel()` or `batchTasks()` task list. */
158
+ export type ParallelResults<TTasks extends readonly ParallelTask<unknown, unknown>[]> = {
159
+ [TIndex in keyof TTasks]: TTasks[TIndex] extends ParallelTask<unknown, infer TResult> ? Awaited<TResult> : never;
160
+ };
161
+ /** Feature-detection snapshot for the browser concurrency runtime. */
162
+ export interface ConcurrencySupport {
163
+ /** `Worker` constructor availability. */
164
+ worker: boolean;
165
+ /** `Blob` availability for zero-build inline worker scripts. */
166
+ blob: boolean;
167
+ /** `URL.createObjectURL()` and `URL.revokeObjectURL()` availability. */
168
+ objectUrl: boolean;
169
+ /** `AbortController` availability for cancellation ergonomics. */
170
+ abortController: boolean;
171
+ /** Whether the minimum browser primitives for this module are present. */
172
+ supported: boolean;
173
+ }
174
+ /**
175
+ * Reusable worker-task handle.
176
+ *
177
+ * A task worker runs one task at a time. Queueing and pooling live in the
178
+ * separate `TaskPool` / `RpcPool` APIs so the worker handle itself stays explicit.
179
+ */
180
+ export interface TaskWorker<TInput = void, TResult = unknown> {
181
+ /** Current lifecycle state. */
182
+ readonly state: TaskWorkerState;
183
+ /** Whether a task is currently running. */
184
+ readonly busy: boolean;
185
+ /**
186
+ * Execute one task in the backing worker.
187
+ *
188
+ * @param input - Serializable input passed to the task handler
189
+ * @param options - Per-run timeout, abort, and transfer options
190
+ */
191
+ run(input: TInput, options?: TaskRunOptions): Promise<TResult>;
192
+ /**
193
+ * Permanently terminate the backing worker.
194
+ * Any in-flight task is rejected with a termination error.
195
+ */
196
+ terminate(): void;
197
+ }
198
+ /**
199
+ * Reactive wrapper around a reusable task worker.
200
+ *
201
+ * Extends the standard {@link TaskWorker} API with readonly signals so UI code
202
+ * can observe worker lifecycle changes without polling getters manually.
203
+ */
204
+ export interface ReactiveTaskWorker<TInput = void, TResult = unknown> extends TaskWorker<TInput, TResult> {
205
+ /** Reactive mirror of {@link TaskWorker.state}. */
206
+ readonly state$: ReadonlySignalHandle<TaskWorkerState>;
207
+ /** Reactive mirror of {@link TaskWorker.busy}. */
208
+ readonly busy$: ReadonlySignalHandle<boolean>;
209
+ }
210
+ /** Standalone named RPC handler executed inside a Web Worker. */
211
+ export type WorkerRpcHandler<TInput = void, TResult = unknown> = WorkerTaskHandler<TInput, TResult>;
212
+ /** Explicit map of named worker RPC handlers. */
213
+ export type WorkerRpcHandlers = Record<string, WorkerRpcHandler<unknown, unknown>>;
214
+ /** Reusable RPC-style worker handle with named method dispatch. */
215
+ export interface RpcWorker<TRoutes extends WorkerRpcHandlers = WorkerRpcHandlers> {
216
+ /** Current lifecycle state. */
217
+ readonly state: TaskWorkerState;
218
+ /** Whether a method call is currently in progress. */
219
+ readonly busy: boolean;
220
+ /**
221
+ * Call one named RPC method in the backing worker.
222
+ *
223
+ * @param method - Method name from the provided RPC handler map
224
+ * @param input - Serializable payload for the selected method
225
+ * @param options - Per-call timeout, abort, and transfer options
226
+ */
227
+ call<TMethod extends keyof TRoutes & string>(method: TMethod, input: Parameters<TRoutes[TMethod]>[0], options?: TaskRunOptions): Promise<Awaited<ReturnType<TRoutes[TMethod]>>>;
228
+ /**
229
+ * Permanently terminate the backing worker.
230
+ * Any in-flight call is rejected with a termination error.
231
+ */
232
+ terminate(): void;
233
+ }
234
+ /**
235
+ * Reactive wrapper around a reusable RPC worker.
236
+ *
237
+ * Extends the standard {@link RpcWorker} API with readonly signals so UI code
238
+ * can observe worker lifecycle changes without polling getters manually.
239
+ */
240
+ export interface ReactiveRpcWorker<TRoutes extends WorkerRpcHandlers = WorkerRpcHandlers> extends RpcWorker<TRoutes> {
241
+ /** Reactive mirror of {@link RpcWorker.state}. */
242
+ readonly state$: ReadonlySignalHandle<TaskWorkerState>;
243
+ /** Reactive mirror of {@link RpcWorker.busy}. */
244
+ readonly busy$: ReadonlySignalHandle<boolean>;
245
+ }
246
+ /** Reusable pool of task workers with bounded concurrency and queueing. */
247
+ export interface TaskPool<TInput = void, TResult = unknown> {
248
+ /** Current lifecycle state. */
249
+ readonly state: TaskWorkerState;
250
+ /** Whether the pool has active or queued tasks. */
251
+ readonly busy: boolean;
252
+ /** Maximum number of parallel worker runs. */
253
+ readonly concurrency: number;
254
+ /** Number of tasks currently running. */
255
+ readonly pending: number;
256
+ /** Number of tasks currently waiting in the queue. */
257
+ readonly size: number;
258
+ /**
259
+ * Queue or immediately execute one task in the pool.
260
+ *
261
+ * @param input - Serializable task input
262
+ * @param options - Per-run timeout, abort, and transfer options
263
+ */
264
+ run(input: TInput, options?: TaskRunOptions): Promise<TResult>;
265
+ /**
266
+ * Remove queued tasks that have not started yet.
267
+ * Active tasks continue running.
268
+ */
269
+ clear(): void;
270
+ /**
271
+ * Permanently terminate the pool and all backing workers.
272
+ * Active and queued tasks reject with termination errors.
273
+ */
274
+ terminate(): void;
275
+ }
276
+ /**
277
+ * Reactive wrapper around a reusable task pool.
278
+ *
279
+ * Extends the standard {@link TaskPool} API with readonly signals for pool
280
+ * state, queue pressure, and configured concurrency.
281
+ */
282
+ export interface ReactiveTaskPool<TInput = void, TResult = unknown> extends TaskPool<TInput, TResult> {
283
+ /** Reactive mirror of {@link TaskPool.state}. */
284
+ readonly state$: ReadonlySignalHandle<TaskWorkerState>;
285
+ /** Reactive mirror of {@link TaskPool.busy}. */
286
+ readonly busy$: ReadonlySignalHandle<boolean>;
287
+ /** Reactive mirror of {@link TaskPool.concurrency}. */
288
+ readonly concurrency$: ReadonlySignalHandle<number>;
289
+ /** Reactive mirror of {@link TaskPool.pending}. */
290
+ readonly pending$: ReadonlySignalHandle<number>;
291
+ /** Reactive mirror of {@link TaskPool.size}. */
292
+ readonly size$: ReadonlySignalHandle<number>;
293
+ }
294
+ /** Reusable pool of RPC workers with bounded concurrency and queueing. */
295
+ export interface RpcPool<TRoutes extends WorkerRpcHandlers = WorkerRpcHandlers> {
296
+ /** Current lifecycle state. */
297
+ readonly state: TaskWorkerState;
298
+ /** Whether the pool has active or queued calls. */
299
+ readonly busy: boolean;
300
+ /** Maximum number of parallel worker calls. */
301
+ readonly concurrency: number;
302
+ /** Number of calls currently running. */
303
+ readonly pending: number;
304
+ /** Number of calls currently waiting in the queue. */
305
+ readonly size: number;
306
+ /**
307
+ * Queue or immediately execute one RPC call in the pool.
308
+ *
309
+ * @param method - Method name from the provided RPC handler map
310
+ * @param input - Serializable payload for the selected method
311
+ * @param options - Per-call timeout, abort, and transfer options
312
+ */
313
+ call<TMethod extends keyof TRoutes & string>(method: TMethod, input: Parameters<TRoutes[TMethod]>[0], options?: TaskRunOptions): Promise<Awaited<ReturnType<TRoutes[TMethod]>>>;
314
+ /**
315
+ * Remove queued calls that have not started yet.
316
+ * Active calls continue running.
317
+ */
318
+ clear(): void;
319
+ /**
320
+ * Permanently terminate the pool and all backing workers.
321
+ * Active and queued calls reject with termination errors.
322
+ */
323
+ terminate(): void;
324
+ }
325
+ /**
326
+ * Reactive wrapper around a reusable RPC pool.
327
+ *
328
+ * Extends the standard {@link RpcPool} API with readonly signals for pool
329
+ * state, queue pressure, and configured concurrency.
330
+ */
331
+ export interface ReactiveRpcPool<TRoutes extends WorkerRpcHandlers = WorkerRpcHandlers> extends RpcPool<TRoutes> {
332
+ /** Reactive mirror of {@link RpcPool.state}. */
333
+ readonly state$: ReadonlySignalHandle<TaskWorkerState>;
334
+ /** Reactive mirror of {@link RpcPool.busy}. */
335
+ readonly busy$: ReadonlySignalHandle<boolean>;
336
+ /** Reactive mirror of {@link RpcPool.concurrency}. */
337
+ readonly concurrency$: ReadonlySignalHandle<number>;
338
+ /** Reactive mirror of {@link RpcPool.pending}. */
339
+ readonly pending$: ReadonlySignalHandle<number>;
340
+ /** Reactive mirror of {@link RpcPool.size}. */
341
+ readonly size$: ReadonlySignalHandle<number>;
342
+ }
343
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/concurrency/types.ts"],"names":[],"mappings":"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"}