@ariestools/threads 8.0.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 (209) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +946 -0
  3. package/dist/browser/common.d.ts +22 -0
  4. package/dist/browser/common.d.ts.map +1 -0
  5. package/dist/browser/index-browser.d.ts +9 -0
  6. package/dist/browser/index-browser.d.ts.map +1 -0
  7. package/dist/browser/index-browser.mjs +844 -0
  8. package/dist/browser/index-browser.mjs.map +7 -0
  9. package/dist/browser/index-node.d.ts +9 -0
  10. package/dist/browser/index-node.d.ts.map +1 -0
  11. package/dist/browser/isObservable.d.ts +2 -0
  12. package/dist/browser/isObservable.d.ts.map +1 -0
  13. package/dist/browser/master/get-bundle-url.browser.d.ts +4 -0
  14. package/dist/browser/master/get-bundle-url.browser.d.ts.map +1 -0
  15. package/dist/browser/master/implementation.browser.d.ts +14 -0
  16. package/dist/browser/master/implementation.browser.d.ts.map +1 -0
  17. package/dist/browser/master/implementation.browser.mjs +90 -0
  18. package/dist/browser/master/implementation.browser.mjs.map +7 -0
  19. package/dist/browser/master/implementation.node.d.ts +14 -0
  20. package/dist/browser/master/implementation.node.d.ts.map +1 -0
  21. package/dist/browser/master/index-browser.d.ts +13 -0
  22. package/dist/browser/master/index-browser.d.ts.map +1 -0
  23. package/dist/browser/master/index-browser.mjs +813 -0
  24. package/dist/browser/master/index-browser.mjs.map +7 -0
  25. package/dist/browser/master/index-node.d.ts +13 -0
  26. package/dist/browser/master/index-node.d.ts.map +1 -0
  27. package/dist/browser/master/invocation-proxy.d.ts +16 -0
  28. package/dist/browser/master/invocation-proxy.d.ts.map +1 -0
  29. package/dist/browser/master/pool-browser.d.ts +93 -0
  30. package/dist/browser/master/pool-browser.d.ts.map +1 -0
  31. package/dist/browser/master/pool-browser.mjs +308 -0
  32. package/dist/browser/master/pool-browser.mjs.map +7 -0
  33. package/dist/browser/master/pool-node.d.ts +93 -0
  34. package/dist/browser/master/pool-node.d.ts.map +1 -0
  35. package/dist/browser/master/pool-types.d.ts +68 -0
  36. package/dist/browser/master/pool-types.d.ts.map +1 -0
  37. package/dist/browser/master/register.d.ts +2 -0
  38. package/dist/browser/master/register.d.ts.map +1 -0
  39. package/dist/browser/master/spawn.d.ts +22 -0
  40. package/dist/browser/master/spawn.d.ts.map +1 -0
  41. package/dist/browser/master/thread.d.ts +14 -0
  42. package/dist/browser/master/thread.d.ts.map +1 -0
  43. package/dist/browser/observable-promise.d.ts +41 -0
  44. package/dist/browser/observable-promise.d.ts.map +1 -0
  45. package/dist/browser/observable.d.ts +24 -0
  46. package/dist/browser/observable.d.ts.map +1 -0
  47. package/dist/browser/promise.d.ts +6 -0
  48. package/dist/browser/promise.d.ts.map +1 -0
  49. package/dist/browser/serializers.d.ts +27 -0
  50. package/dist/browser/serializers.d.ts.map +1 -0
  51. package/dist/browser/symbols.d.ts +11 -0
  52. package/dist/browser/symbols.d.ts.map +1 -0
  53. package/dist/browser/transferable.d.ts +49 -0
  54. package/dist/browser/transferable.d.ts.map +1 -0
  55. package/dist/browser/types/master.d.ts +111 -0
  56. package/dist/browser/types/master.d.ts.map +1 -0
  57. package/dist/browser/types/messages.d.ts +71 -0
  58. package/dist/browser/types/messages.d.ts.map +1 -0
  59. package/dist/browser/types/worker.d.ts +13 -0
  60. package/dist/browser/types/worker.d.ts.map +1 -0
  61. package/dist/browser/worker/WorkerGlobalScope.d.ts +7 -0
  62. package/dist/browser/worker/WorkerGlobalScope.d.ts.map +1 -0
  63. package/dist/browser/worker/expose.d.ts +10 -0
  64. package/dist/browser/worker/expose.d.ts.map +1 -0
  65. package/dist/browser/worker/worker.browser.d.ts +20 -0
  66. package/dist/browser/worker/worker.browser.d.ts.map +1 -0
  67. package/dist/browser/worker/worker.browser.mjs +300 -0
  68. package/dist/browser/worker/worker.browser.mjs.map +7 -0
  69. package/dist/browser/worker/worker.node.d.ts +34 -0
  70. package/dist/browser/worker/worker.node.d.ts.map +1 -0
  71. package/dist/neutral/common.d.ts +22 -0
  72. package/dist/neutral/common.d.ts.map +1 -0
  73. package/dist/neutral/index-browser.d.ts +9 -0
  74. package/dist/neutral/index-browser.d.ts.map +1 -0
  75. package/dist/neutral/index-node.d.ts +9 -0
  76. package/dist/neutral/index-node.d.ts.map +1 -0
  77. package/dist/neutral/isObservable.d.ts +2 -0
  78. package/dist/neutral/isObservable.d.ts.map +1 -0
  79. package/dist/neutral/master/get-bundle-url.browser.d.ts +4 -0
  80. package/dist/neutral/master/get-bundle-url.browser.d.ts.map +1 -0
  81. package/dist/neutral/master/implementation.browser.d.ts +14 -0
  82. package/dist/neutral/master/implementation.browser.d.ts.map +1 -0
  83. package/dist/neutral/master/implementation.node.d.ts +14 -0
  84. package/dist/neutral/master/implementation.node.d.ts.map +1 -0
  85. package/dist/neutral/master/index-browser.d.ts +13 -0
  86. package/dist/neutral/master/index-browser.d.ts.map +1 -0
  87. package/dist/neutral/master/index-node.d.ts +13 -0
  88. package/dist/neutral/master/index-node.d.ts.map +1 -0
  89. package/dist/neutral/master/invocation-proxy.d.ts +16 -0
  90. package/dist/neutral/master/invocation-proxy.d.ts.map +1 -0
  91. package/dist/neutral/master/pool-browser.d.ts +93 -0
  92. package/dist/neutral/master/pool-browser.d.ts.map +1 -0
  93. package/dist/neutral/master/pool-node.d.ts +93 -0
  94. package/dist/neutral/master/pool-node.d.ts.map +1 -0
  95. package/dist/neutral/master/pool-types.d.ts +68 -0
  96. package/dist/neutral/master/pool-types.d.ts.map +1 -0
  97. package/dist/neutral/master/register.d.ts +2 -0
  98. package/dist/neutral/master/register.d.ts.map +1 -0
  99. package/dist/neutral/master/spawn.d.ts +22 -0
  100. package/dist/neutral/master/spawn.d.ts.map +1 -0
  101. package/dist/neutral/master/spawn.mjs +424 -0
  102. package/dist/neutral/master/spawn.mjs.map +7 -0
  103. package/dist/neutral/master/thread.d.ts +14 -0
  104. package/dist/neutral/master/thread.d.ts.map +1 -0
  105. package/dist/neutral/master/thread.mjs +24 -0
  106. package/dist/neutral/master/thread.mjs.map +7 -0
  107. package/dist/neutral/observable-promise.d.ts +41 -0
  108. package/dist/neutral/observable-promise.d.ts.map +1 -0
  109. package/dist/neutral/observable-promise.mjs +142 -0
  110. package/dist/neutral/observable-promise.mjs.map +7 -0
  111. package/dist/neutral/observable.d.ts +24 -0
  112. package/dist/neutral/observable.d.ts.map +1 -0
  113. package/dist/neutral/observable.mjs +32 -0
  114. package/dist/neutral/observable.mjs.map +7 -0
  115. package/dist/neutral/promise.d.ts +6 -0
  116. package/dist/neutral/promise.d.ts.map +1 -0
  117. package/dist/neutral/serializers.d.ts +27 -0
  118. package/dist/neutral/serializers.d.ts.map +1 -0
  119. package/dist/neutral/symbols.d.ts +11 -0
  120. package/dist/neutral/symbols.d.ts.map +1 -0
  121. package/dist/neutral/transferable.d.ts +49 -0
  122. package/dist/neutral/transferable.d.ts.map +1 -0
  123. package/dist/neutral/types/master.d.ts +111 -0
  124. package/dist/neutral/types/master.d.ts.map +1 -0
  125. package/dist/neutral/types/messages.d.ts +71 -0
  126. package/dist/neutral/types/messages.d.ts.map +1 -0
  127. package/dist/neutral/types/messages.mjs +19 -0
  128. package/dist/neutral/types/messages.mjs.map +7 -0
  129. package/dist/neutral/types/worker.d.ts +13 -0
  130. package/dist/neutral/types/worker.d.ts.map +1 -0
  131. package/dist/neutral/worker/WorkerGlobalScope.d.ts +7 -0
  132. package/dist/neutral/worker/WorkerGlobalScope.d.ts.map +1 -0
  133. package/dist/neutral/worker/expose.d.ts +10 -0
  134. package/dist/neutral/worker/expose.d.ts.map +1 -0
  135. package/dist/neutral/worker/worker.browser.d.ts +20 -0
  136. package/dist/neutral/worker/worker.browser.d.ts.map +1 -0
  137. package/dist/neutral/worker/worker.node.d.ts +34 -0
  138. package/dist/neutral/worker/worker.node.d.ts.map +1 -0
  139. package/dist/node/common.d.ts +22 -0
  140. package/dist/node/common.d.ts.map +1 -0
  141. package/dist/node/index-browser.d.ts +9 -0
  142. package/dist/node/index-browser.d.ts.map +1 -0
  143. package/dist/node/index-node.d.ts +9 -0
  144. package/dist/node/index-node.d.ts.map +1 -0
  145. package/dist/node/index-node.mjs +839 -0
  146. package/dist/node/index-node.mjs.map +7 -0
  147. package/dist/node/isObservable.d.ts +2 -0
  148. package/dist/node/isObservable.d.ts.map +1 -0
  149. package/dist/node/master/get-bundle-url.browser.d.ts +4 -0
  150. package/dist/node/master/get-bundle-url.browser.d.ts.map +1 -0
  151. package/dist/node/master/implementation.browser.d.ts +14 -0
  152. package/dist/node/master/implementation.browser.d.ts.map +1 -0
  153. package/dist/node/master/implementation.node.d.ts +14 -0
  154. package/dist/node/master/implementation.node.d.ts.map +1 -0
  155. package/dist/node/master/implementation.node.mjs +82 -0
  156. package/dist/node/master/implementation.node.mjs.map +7 -0
  157. package/dist/node/master/index-browser.d.ts +13 -0
  158. package/dist/node/master/index-browser.d.ts.map +1 -0
  159. package/dist/node/master/index-node.d.ts +13 -0
  160. package/dist/node/master/index-node.d.ts.map +1 -0
  161. package/dist/node/master/index-node.mjs +808 -0
  162. package/dist/node/master/index-node.mjs.map +7 -0
  163. package/dist/node/master/invocation-proxy.d.ts +16 -0
  164. package/dist/node/master/invocation-proxy.d.ts.map +1 -0
  165. package/dist/node/master/pool-browser.d.ts +93 -0
  166. package/dist/node/master/pool-browser.d.ts.map +1 -0
  167. package/dist/node/master/pool-node.d.ts +93 -0
  168. package/dist/node/master/pool-node.d.ts.map +1 -0
  169. package/dist/node/master/pool-node.mjs +309 -0
  170. package/dist/node/master/pool-node.mjs.map +7 -0
  171. package/dist/node/master/pool-types.d.ts +68 -0
  172. package/dist/node/master/pool-types.d.ts.map +1 -0
  173. package/dist/node/master/register.d.ts +2 -0
  174. package/dist/node/master/register.d.ts.map +1 -0
  175. package/dist/node/master/register.mjs +87 -0
  176. package/dist/node/master/register.mjs.map +7 -0
  177. package/dist/node/master/spawn.d.ts +22 -0
  178. package/dist/node/master/spawn.d.ts.map +1 -0
  179. package/dist/node/master/thread.d.ts +14 -0
  180. package/dist/node/master/thread.d.ts.map +1 -0
  181. package/dist/node/observable-promise.d.ts +41 -0
  182. package/dist/node/observable-promise.d.ts.map +1 -0
  183. package/dist/node/observable.d.ts +24 -0
  184. package/dist/node/observable.d.ts.map +1 -0
  185. package/dist/node/promise.d.ts +6 -0
  186. package/dist/node/promise.d.ts.map +1 -0
  187. package/dist/node/serializers.d.ts +27 -0
  188. package/dist/node/serializers.d.ts.map +1 -0
  189. package/dist/node/symbols.d.ts +11 -0
  190. package/dist/node/symbols.d.ts.map +1 -0
  191. package/dist/node/transferable.d.ts +49 -0
  192. package/dist/node/transferable.d.ts.map +1 -0
  193. package/dist/node/types/master.d.ts +111 -0
  194. package/dist/node/types/master.d.ts.map +1 -0
  195. package/dist/node/types/messages.d.ts +71 -0
  196. package/dist/node/types/messages.d.ts.map +1 -0
  197. package/dist/node/types/worker.d.ts +13 -0
  198. package/dist/node/types/worker.d.ts.map +1 -0
  199. package/dist/node/worker/WorkerGlobalScope.d.ts +7 -0
  200. package/dist/node/worker/WorkerGlobalScope.d.ts.map +1 -0
  201. package/dist/node/worker/expose.d.ts +10 -0
  202. package/dist/node/worker/expose.d.ts.map +1 -0
  203. package/dist/node/worker/worker.browser.d.ts +20 -0
  204. package/dist/node/worker/worker.browser.d.ts.map +1 -0
  205. package/dist/node/worker/worker.node.d.ts +34 -0
  206. package/dist/node/worker/worker.node.d.ts.map +1 -0
  207. package/dist/node/worker/worker.node.mjs +313 -0
  208. package/dist/node/worker/worker.node.mjs.map +7 -0
  209. package/package.json +147 -0
@@ -0,0 +1,14 @@
1
+ import type { ImplementationExport } from '../types/master.ts';
2
+ /** Default thread pool size based on available hardware concurrency, falling back to 4. */
3
+ export declare const defaultPoolSize: number;
4
+ /**
5
+ * Get the browser-specific worker implementation, lazily initializing it on first call.
6
+ * @returns The platform-specific worker implementation export.
7
+ */
8
+ export declare function getWorkerImplementation(): ImplementationExport;
9
+ /**
10
+ * Check whether the current code is running inside a web worker context.
11
+ * @returns True if running in a worker, false otherwise.
12
+ */
13
+ export declare function isWorkerRuntime(): boolean;
14
+ //# sourceMappingURL=implementation.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation.browser.d.ts","sourceRoot":"","sources":["../../../src/master/implementation.browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAwB,MAAM,oBAAoB,CAAA;AAGpF,2FAA2F;AAC3F,eAAO,MAAM,eAAe,QAA8G,CAAA;AAgE1I;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAK9D;AAED;;;GAGG;AACH,wBAAgB,eAAe,YAI9B"}
@@ -0,0 +1,14 @@
1
+ import type { ImplementationExport } from '../types/master.ts';
2
+ /** Default thread pool size based on the number of CPU cores. */
3
+ export declare const defaultPoolSize: number;
4
+ /**
5
+ * Get the Node.js-specific worker implementation using `worker_threads`, lazily initializing it on first call.
6
+ * @returns The platform-specific worker implementation export.
7
+ */
8
+ export declare function getWorkerImplementation(): ImplementationExport;
9
+ /**
10
+ * Check whether the current code is running inside a Node.js worker thread.
11
+ * @returns True if running in a worker thread (not the main thread), false otherwise.
12
+ */
13
+ export declare function isWorkerRuntime(): boolean;
14
+ //# sourceMappingURL=implementation.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation.node.d.ts","sourceRoot":"","sources":["../../../src/master/implementation.node.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,oBAAoB,EACrB,MAAM,oBAAoB,CAAA;AAE3B,iEAAiE;AACjE,eAAO,MAAM,eAAe,QAAgB,CAAA;AAgF5C;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAK9D;AAED;;;GAGG;AACH,wBAAgB,eAAe,YAE9B"}
@@ -0,0 +1,13 @@
1
+ import type { BlobWorker as BlobWorkerClass, Worker as WorkerType } from '../types/master.ts';
2
+ export type { FunctionThread, ModuleThread } from '../types/master.ts';
3
+ export { Pool } from './pool-browser.ts';
4
+ export { spawn } from './spawn.ts';
5
+ export { Thread } from './thread.ts';
6
+ export type BlobWorker = typeof BlobWorkerClass;
7
+ export type Worker = WorkerType;
8
+ /** Separate class to spawn workers from source code blobs or strings. */
9
+ export declare const BlobWorker: typeof BlobWorkerClass;
10
+ /** Worker implementation. Either web worker or a Node.js Worker class. */
11
+ export declare const Worker: typeof import("../types/master.ts").WorkerImplementation;
12
+ export { isWorkerRuntime } from './implementation.browser.ts';
13
+ //# sourceMappingURL=index-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-browser.d.ts","sourceRoot":"","sources":["../../../src/master/index-browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG7F,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,MAAM,UAAU,GAAG,OAAO,eAAe,CAAA;AAC/C,MAAM,MAAM,MAAM,GAAG,UAAU,CAAA;AAE/B,yEAAyE;AACzE,eAAO,MAAM,UAAU,wBAAuD,CAAA;AAE9E,0EAA0E;AAC1E,eAAO,MAAM,MAAM,0DAA0D,CAAA;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { BlobWorker as BlobWorkerClass, Worker as WorkerType } from '../types/master.ts';
2
+ export type { FunctionThread, ModuleThread } from '../types/master.ts';
3
+ export { Pool } from './pool-browser.ts';
4
+ export { spawn } from './spawn.ts';
5
+ export { Thread } from './thread.ts';
6
+ export type BlobWorker = typeof BlobWorkerClass;
7
+ export type Worker = WorkerType;
8
+ /** Separate class to spawn workers from source code blobs or strings. */
9
+ export declare const BlobWorker: typeof BlobWorkerClass;
10
+ /** Worker implementation. Either web worker or a Node.js Worker class. */
11
+ export declare const Worker: typeof import("../types/master.ts").WorkerImplementation;
12
+ export { isWorkerRuntime } from './implementation.node.ts';
13
+ //# sourceMappingURL=index-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../../../src/master/index-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG7F,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,MAAM,UAAU,GAAG,OAAO,eAAe,CAAA;AAC/C,MAAM,MAAM,MAAM,GAAG,UAAU,CAAA;AAE/B,yEAAyE;AACzE,eAAO,MAAM,UAAU,wBAAoD,CAAA;AAE3E,0EAA0E;AAC1E,eAAO,MAAM,MAAM,0DAAuD,CAAA;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { ModuleMethods, ModuleProxy, ProxyableFunction, Worker as WorkerType } from '../types/master.ts';
2
+ /**
3
+ * Create a proxy function that forwards calls to a worker thread via postMessage.
4
+ * @param worker - The worker to send messages to.
5
+ * @param method - Optional method name for module-style workers.
6
+ * @returns A proxied function that returns an `ObservablePromise`.
7
+ */
8
+ export declare function createProxyFunction<Args extends any[], ReturnType>(worker: WorkerType, method?: string): ProxyableFunction<Args, ReturnType>;
9
+ /**
10
+ * Create a proxy module that maps method names to proxy functions forwarding calls to a worker.
11
+ * @param worker - The worker to send messages to.
12
+ * @param methodNames - The method names exposed by the worker module.
13
+ * @returns A proxy object with methods matching the worker module's API.
14
+ */
15
+ export declare function createProxyModule<Methods extends ModuleMethods>(worker: WorkerType, methodNames: string[]): ModuleProxy<Methods>;
16
+ //# sourceMappingURL=invocation-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocation-proxy.d.ts","sourceRoot":"","sources":["../../../src/master/invocation-proxy.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,IAAI,UAAU,EACpE,MAAM,oBAAoB,CAAA;AAsG3B;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAS,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAoBxF,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CACjD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAQhI"}
@@ -0,0 +1,93 @@
1
+ import { Observable } from 'observable-fns';
2
+ import type { PoolEvent, QueuedTask, TaskRunFunction } from './pool-types.ts';
3
+ import { PoolEventType } from './pool-types.ts';
4
+ import { Thread } from './thread.ts';
5
+ export declare namespace Pool {
6
+ type Event<ThreadType extends Thread = any> = PoolEvent<ThreadType>;
7
+ type EventType = PoolEventType;
8
+ }
9
+ /**
10
+ * Thread pool managing a set of worker threads.
11
+ * Use it to queue tasks that are run on those threads with limited
12
+ * concurrency.
13
+ */
14
+ export interface Pool<ThreadType extends Thread> {
15
+ /**
16
+ * Returns a promise that resolves once the task queue is emptied.
17
+ * Promise will be rejected if any task fails.
18
+ *
19
+ * @param allowResolvingImmediately Set to `true` to resolve immediately if task queue is currently empty.
20
+ */
21
+ completed(allowResolvingImmediately?: boolean): Promise<any>;
22
+ /**
23
+ * Returns a promise that resolves once the task queue is emptied.
24
+ * Failing tasks will not cause the promise to be rejected.
25
+ *
26
+ * @param allowResolvingImmediately Set to `true` to resolve immediately if task queue is currently empty.
27
+ */
28
+ settled(allowResolvingImmediately?: boolean): Promise<Error[]>;
29
+ /**
30
+ * Returns an observable that yields pool events.
31
+ */
32
+ events(): Observable<PoolEvent<ThreadType>>;
33
+ /**
34
+ * Queue a task and return a promise that resolves once the task has been dequeued,
35
+ * started and finished.
36
+ *
37
+ * @param task An async function that takes a thread instance and invokes it.
38
+ */
39
+ queue<Return>(task: TaskRunFunction<ThreadType, Return>): QueuedTask<ThreadType, Return>;
40
+ /**
41
+ * Terminate all pool threads.
42
+ *
43
+ * @param force Set to `true` to kill the thread even if it cannot be stopped gracefully.
44
+ */
45
+ terminate(force?: boolean): Promise<void>;
46
+ }
47
+ interface PoolOptions {
48
+ /** Maximum no. of tasks to run on one worker thread at a time. Defaults to one. */
49
+ concurrency?: number;
50
+ /** Maximum no. of jobs to be queued for execution before throwing an error. */
51
+ maxQueuedJobs?: number;
52
+ /** Gives that pool a name to be used for debug logging, letting you distinguish between log output of different pools. */
53
+ name?: string;
54
+ /** No. of worker threads to spawn and to be managed by the pool. */
55
+ size?: number;
56
+ }
57
+ declare class WorkerPool<ThreadType extends Thread> implements Pool<ThreadType> {
58
+ static EventType: typeof PoolEventType;
59
+ private readonly debug;
60
+ private readonly eventObservable;
61
+ private readonly options;
62
+ private readonly workers;
63
+ private readonly eventSubject;
64
+ private initErrors;
65
+ private isClosing;
66
+ private nextTaskID;
67
+ private taskQueue;
68
+ constructor(spawnWorker: () => Promise<ThreadType>, optionsOrSize?: number | PoolOptions);
69
+ private findIdlingWorker;
70
+ private runPoolTask;
71
+ private run;
72
+ private scheduleWork;
73
+ private taskCompletion;
74
+ settled(allowResolvingImmediately?: boolean): Promise<Error[]>;
75
+ completed(allowResolvingImmediately?: boolean): Promise<void>;
76
+ events(): Observable<PoolEvent<ThreadType>>;
77
+ queue(taskFunction: TaskRunFunction<ThreadType, any>): QueuedTask<ThreadType, any>;
78
+ terminate(force?: boolean): Promise<void>;
79
+ }
80
+ /**
81
+ * Thread pool constructor. Creates a new pool and spawns its worker threads.
82
+ */
83
+ declare function PoolConstructor<ThreadType extends Thread>(spawnWorker: () => Promise<ThreadType>, optionsOrSize?: number | PoolOptions): WorkerPool<ThreadType>;
84
+ /**
85
+ * Thread pool constructor. Creates a new pool and spawns its worker threads.
86
+ */
87
+ export declare const Pool: typeof PoolConstructor & {
88
+ EventType: typeof PoolEventType;
89
+ };
90
+ export type { PoolEvent, QueuedTask } from './pool-types.ts';
91
+ export { PoolEventType } from './pool-types.ts';
92
+ export { Thread } from './thread.ts';
93
+ //# sourceMappingURL=pool-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-browser.d.ts","sourceRoot":"","sources":["../../../src/master/pool-browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { Observable } from 'observable-fns';
2
+ import type { PoolEvent, QueuedTask, TaskRunFunction } from './pool-types.ts';
3
+ import { PoolEventType } from './pool-types.ts';
4
+ import { Thread } from './thread.ts';
5
+ export declare namespace Pool {
6
+ type Event<ThreadType extends Thread = any> = PoolEvent<ThreadType>;
7
+ type EventType = PoolEventType;
8
+ }
9
+ /**
10
+ * Thread pool managing a set of worker threads.
11
+ * Use it to queue tasks that are run on those threads with limited
12
+ * concurrency.
13
+ */
14
+ export interface Pool<ThreadType extends Thread> {
15
+ /**
16
+ * Returns a promise that resolves once the task queue is emptied.
17
+ * Promise will be rejected if any task fails.
18
+ *
19
+ * @param allowResolvingImmediately Set to `true` to resolve immediately if task queue is currently empty.
20
+ */
21
+ completed(allowResolvingImmediately?: boolean): Promise<any>;
22
+ /**
23
+ * Returns a promise that resolves once the task queue is emptied.
24
+ * Failing tasks will not cause the promise to be rejected.
25
+ *
26
+ * @param allowResolvingImmediately Set to `true` to resolve immediately if task queue is currently empty.
27
+ */
28
+ settled(allowResolvingImmediately?: boolean): Promise<Error[]>;
29
+ /**
30
+ * Returns an observable that yields pool events.
31
+ */
32
+ events(): Observable<PoolEvent<ThreadType>>;
33
+ /**
34
+ * Queue a task and return a promise that resolves once the task has been dequeued,
35
+ * started and finished.
36
+ *
37
+ * @param task An async function that takes a thread instance and invokes it.
38
+ */
39
+ queue<Return>(task: TaskRunFunction<ThreadType, Return>): QueuedTask<ThreadType, Return>;
40
+ /**
41
+ * Terminate all pool threads.
42
+ *
43
+ * @param force Set to `true` to kill the thread even if it cannot be stopped gracefully.
44
+ */
45
+ terminate(force?: boolean): Promise<void>;
46
+ }
47
+ interface PoolOptions {
48
+ /** Maximum no. of tasks to run on one worker thread at a time. Defaults to one. */
49
+ concurrency?: number;
50
+ /** Maximum no. of jobs to be queued for execution before throwing an error. */
51
+ maxQueuedJobs?: number;
52
+ /** Gives that pool a name to be used for debug logging, letting you distinguish between log output of different pools. */
53
+ name?: string;
54
+ /** No. of worker threads to spawn and to be managed by the pool. */
55
+ size?: number;
56
+ }
57
+ declare class WorkerPool<ThreadType extends Thread> implements Pool<ThreadType> {
58
+ static EventType: typeof PoolEventType;
59
+ private readonly debug;
60
+ private readonly eventObservable;
61
+ private readonly options;
62
+ private readonly workers;
63
+ private readonly eventSubject;
64
+ private initErrors;
65
+ private isClosing;
66
+ private nextTaskID;
67
+ private taskQueue;
68
+ constructor(spawnWorker: () => Promise<ThreadType>, optionsOrSize?: number | PoolOptions);
69
+ private findIdlingWorker;
70
+ private runPoolTask;
71
+ private run;
72
+ private scheduleWork;
73
+ private taskCompletion;
74
+ settled(allowResolvingImmediately?: boolean): Promise<Error[]>;
75
+ completed(allowResolvingImmediately?: boolean): Promise<void>;
76
+ events(): Observable<PoolEvent<ThreadType>>;
77
+ queue(taskFunction: TaskRunFunction<ThreadType, any>): QueuedTask<ThreadType, any>;
78
+ terminate(force?: boolean): Promise<void>;
79
+ }
80
+ /**
81
+ * Thread pool constructor. Creates a new pool and spawns its worker threads.
82
+ */
83
+ declare function PoolConstructor<ThreadType extends Thread>(spawnWorker: () => Promise<ThreadType>, optionsOrSize?: number | PoolOptions): WorkerPool<ThreadType>;
84
+ /**
85
+ * Thread pool constructor. Creates a new pool and spawns its worker threads.
86
+ */
87
+ export declare const Pool: typeof PoolConstructor & {
88
+ EventType: typeof PoolEventType;
89
+ };
90
+ export type { PoolEvent, QueuedTask } from './pool-types.ts';
91
+ export { PoolEventType } from './pool-types.ts';
92
+ export { Thread } from './thread.ts';
93
+ //# sourceMappingURL=pool-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-node.d.ts","sourceRoot":"","sources":["../../../src/master/pool-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { Thread } from './thread.ts';
2
+ /** Pool event type. Specifies the type of each `PoolEvent`. */
3
+ export declare enum PoolEventType {
4
+ initialized = "initialized",
5
+ taskCanceled = "taskCanceled",
6
+ taskCompleted = "taskCompleted",
7
+ taskFailed = "taskFailed",
8
+ taskQueued = "taskQueued",
9
+ taskQueueDrained = "taskQueueDrained",
10
+ taskStart = "taskStart",
11
+ terminated = "terminated"
12
+ }
13
+ /** A function that runs a task on a worker thread and returns a promise of the result. */
14
+ export type TaskRunFunction<ThreadType extends Thread, Return> = (worker: ThreadType) => Promise<Return>;
15
+ /** Pool event. Subscribe to those events using `pool.events()`. Useful for debugging. */
16
+ export type PoolEvent<ThreadType extends Thread> = {
17
+ type: PoolEventType.initialized;
18
+ size: number;
19
+ } | {
20
+ type: PoolEventType.taskQueued;
21
+ taskID: number;
22
+ } | {
23
+ type: PoolEventType.taskQueueDrained;
24
+ } | {
25
+ type: PoolEventType.taskStart;
26
+ taskID: number;
27
+ workerID: number;
28
+ } | {
29
+ type: PoolEventType.taskCompleted;
30
+ returnValue: any;
31
+ taskID: number;
32
+ workerID: number;
33
+ } | {
34
+ type: PoolEventType.taskFailed;
35
+ error: Error;
36
+ taskID: number;
37
+ workerID: number;
38
+ } | {
39
+ type: PoolEventType.taskCanceled;
40
+ taskID: number;
41
+ } | {
42
+ type: PoolEventType.terminated;
43
+ remainingQueue: QueuedTask<ThreadType, any>[];
44
+ };
45
+ /** Descriptor for a worker in a pool, tracking its initialization and running tasks. */
46
+ export interface WorkerDescriptor<ThreadType extends Thread> {
47
+ init: Promise<ThreadType>;
48
+ runningTasks: Promise<any>[];
49
+ }
50
+ /**
51
+ * Task that has been `pool.queued()`-ed.
52
+ */
53
+ export interface QueuedTask<ThreadType extends Thread, Return> {
54
+ /** @private */
55
+ id: number;
56
+ /** @private */
57
+ run: TaskRunFunction<ThreadType, Return>;
58
+ /**
59
+ * Queued tasks can be cancelled until the pool starts running them on a worker thread.
60
+ */
61
+ cancel(): void;
62
+ /**
63
+ * `QueuedTask` is thenable, so you can `await` it.
64
+ * Resolves when the task has successfully been executed. Rejects if the task fails.
65
+ */
66
+ then: Promise<Return>['then'];
67
+ }
68
+ //# sourceMappingURL=pool-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-types.d.ts","sourceRoot":"","sources":["../../../src/master/pool-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,+DAA+D;AAC/D,oBAAY,aAAa;IACvB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,SAAS,cAAc;IACvB,UAAU,eAAe;CAC1B;AAED,0FAA0F;AAC1F,MAAM,MAAM,eAAe,CAAC,UAAU,SAAS,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAExG,yFAAyF;AACzF,MAAM,MAAM,SAAS,CAAC,UAAU,SAAS,MAAM,IACzC;IACF,IAAI,EAAE,aAAa,CAAC,WAAW,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;CACb,GACC;IACA,IAAI,EAAE,aAAa,CAAC,UAAU,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf,GACC;IACA,IAAI,EAAE,aAAa,CAAC,gBAAgB,CAAA;CACrC,GACC;IACA,IAAI,EAAE,aAAa,CAAC,SAAS,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,GACC;IACA,IAAI,EAAE,aAAa,CAAC,aAAa,CAAA;IACjC,WAAW,EAAE,GAAG,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,GACC;IACA,IAAI,EAAE,aAAa,CAAC,UAAU,CAAA;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,GACC;IACA,IAAI,EAAE,aAAa,CAAC,YAAY,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;CACf,GACC;IACA,IAAI,EAAE,aAAa,CAAC,UAAU,CAAA;IAC9B,cAAc,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAA;CAC9C,CAAA;AAEH,wFAAwF;AACxF,MAAM,WAAW,gBAAgB,CAAC,UAAU,SAAS,MAAM;IACzD,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IACzB,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,UAAU,SAAS,MAAM,EAAE,MAAM;IAC3D,eAAe;IACf,EAAE,EAAE,MAAM,CAAA;IAEV,eAAe;IACf,GAAG,EAAE,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAExC;;OAEG;IACH,MAAM,IAAI,IAAI,CAAA;IAEd;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/master/register.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import type { FunctionThread, ModuleThread, StripAsync, Worker as WorkerType } from '../types/master.ts';
2
+ import type { WorkerFunction, WorkerModule } from '../types/worker.ts';
3
+ type ArbitraryWorkerInterface = WorkerFunction & WorkerModule<string> & {
4
+ somekeythatisneverusedinproductioncode123: 'magicmarker123';
5
+ };
6
+ type ArbitraryThreadType = FunctionThread<any, any> & ModuleThread<any>;
7
+ /** Maps a worker's exposed API type to its corresponding thread type (`FunctionThread` or `ModuleThread`). */
8
+ export type ExposedToThreadType<Exposed extends WorkerFunction | WorkerModule<any>> = Exposed extends ArbitraryWorkerInterface ? ArbitraryThreadType : Exposed extends WorkerFunction ? FunctionThread<Parameters<Exposed>, StripAsync<ReturnType<Exposed>>> : Exposed extends WorkerModule<any> ? ModuleThread<Exposed> : never;
9
+ /**
10
+ * Spawn a new thread. Takes a fresh worker instance, wraps it in a thin
11
+ * abstraction layer to provide the transparent API and verifies that
12
+ * the worker has initialized successfully.
13
+ *
14
+ * @param worker Instance of `Worker`. Either a web worker or `worker_threads` worker.
15
+ * @param [options]
16
+ * @param [options.timeout] Init message timeout. Default: 10000 or set by environment variable.
17
+ */
18
+ export declare function spawn<Exposed extends WorkerFunction | WorkerModule<any> = ArbitraryWorkerInterface>(worker: WorkerType, options?: {
19
+ timeout?: number;
20
+ }): Promise<ExposedToThreadType<Exposed>>;
21
+ export {};
22
+ //# sourceMappingURL=spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/master/spawn.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAEZ,UAAU,EACV,MAAM,IAAI,UAAU,EAKrB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtE,KAAK,wBAAwB,GAAG,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG;IAAE,yCAAyC,EAAE,gBAAgB,CAAA;CAAE,CAAA;AACvI,KAAK,mBAAmB,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;AAUvE,8GAA8G;AAC9G,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,IAC9E,OAAO,SAAS,wBAAwB,GAAG,mBAAmB,GAC5D,OAAO,SAAS,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GACnG,OAAO,SAAS,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GACvD,KAAK,CAAA;AA4Gf;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,OAAO,SAAS,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,wBAAwB,EACvG,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAwBvC"}