@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,142 @@
1
+ // src/observable-promise.ts
2
+ import { Observable } from "observable-fns";
3
+ var doNothing = () => {
4
+ };
5
+ var returnInput = (input) => input;
6
+ var runDeferred = (fn) => {
7
+ void (async () => {
8
+ await Promise.resolve();
9
+ fn();
10
+ })();
11
+ };
12
+ function fail(error) {
13
+ throw error;
14
+ }
15
+ function isThenable(thing) {
16
+ return thing != null && typeof thing.then === "function";
17
+ }
18
+ var ObservablePromise = class _ObservablePromise extends Observable {
19
+ [Symbol.toStringTag] = "[object ObservablePromise]";
20
+ initHasRun = false;
21
+ fulfillmentCallbacks = [];
22
+ rejectionCallbacks = [];
23
+ firstValue;
24
+ firstValueSet = false;
25
+ rejection;
26
+ state = "pending";
27
+ constructor(init) {
28
+ super((originalObserver) => {
29
+ const self = this;
30
+ const observer = {
31
+ ...originalObserver,
32
+ complete() {
33
+ originalObserver.complete();
34
+ self.onCompletion();
35
+ },
36
+ error(error) {
37
+ originalObserver.error(error);
38
+ self.onError(error);
39
+ },
40
+ next(value) {
41
+ originalObserver.next(value);
42
+ self.onNext(value);
43
+ }
44
+ };
45
+ try {
46
+ this.initHasRun = true;
47
+ return init(observer);
48
+ } catch (error) {
49
+ observer.error(error);
50
+ }
51
+ });
52
+ }
53
+ onNext(value) {
54
+ if (this.firstValueSet) {
55
+ return;
56
+ }
57
+ this.firstValue = value;
58
+ this.firstValueSet = true;
59
+ }
60
+ onError(error) {
61
+ this.state = "rejected";
62
+ this.rejection = error;
63
+ for (const onRejected of this.rejectionCallbacks) {
64
+ runDeferred(() => onRejected(error));
65
+ }
66
+ }
67
+ onCompletion() {
68
+ this.state = "fulfilled";
69
+ for (const onFulfilled of this.fulfillmentCallbacks) {
70
+ runDeferred(() => onFulfilled(this.firstValue));
71
+ }
72
+ }
73
+ createPromise(onFulfilledRaw, onRejectedRaw) {
74
+ const onFulfilled = onFulfilledRaw || returnInput;
75
+ const onRejected = onRejectedRaw || fail;
76
+ let onRejectedCalled = false;
77
+ return new Promise((resolve, reject) => {
78
+ const rejectionCallback = (error) => {
79
+ if (onRejectedCalled) return;
80
+ onRejectedCalled = true;
81
+ try {
82
+ resolve(onRejected(error));
83
+ } catch (anotherError) {
84
+ reject(anotherError);
85
+ }
86
+ };
87
+ const fulfillmentCallback = (value) => {
88
+ try {
89
+ resolve(onFulfilled(value));
90
+ } catch (ex) {
91
+ const error = ex;
92
+ rejectionCallback(error);
93
+ }
94
+ };
95
+ if (!this.initHasRun) {
96
+ this.subscribe({ error: rejectionCallback });
97
+ }
98
+ if (this.state === "fulfilled") {
99
+ return resolve(onFulfilled(this.firstValue));
100
+ }
101
+ if (this.state === "rejected") {
102
+ onRejectedCalled = true;
103
+ return resolve(onRejected(this.rejection));
104
+ }
105
+ this.fulfillmentCallbacks.push(fulfillmentCallback);
106
+ this.rejectionCallbacks.push(rejectionCallback);
107
+ });
108
+ }
109
+ then(onFulfilledRaw, onRejectedRaw) {
110
+ return this.createPromise(onFulfilledRaw, onRejectedRaw);
111
+ }
112
+ catch(onRejected) {
113
+ return this.createPromise(void 0, onRejected);
114
+ }
115
+ finally(onCompleted) {
116
+ const handler = onCompleted || doNothing;
117
+ return this.createPromise(
118
+ (value) => {
119
+ handler();
120
+ return value;
121
+ },
122
+ () => handler()
123
+ );
124
+ }
125
+ static from(thing) {
126
+ return isThenable(thing) ? new _ObservablePromise((observer) => {
127
+ void (async () => {
128
+ try {
129
+ const value = await thing;
130
+ observer.next(value);
131
+ observer.complete();
132
+ } catch (error) {
133
+ observer.error(error);
134
+ }
135
+ })();
136
+ }) : super.from(thing);
137
+ }
138
+ };
139
+ export {
140
+ ObservablePromise
141
+ };
142
+ //# sourceMappingURL=observable-promise.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/observable-promise.ts"],
4
+ "sourcesContent": ["/* eslint-disable unicorn/no-thenable */\n/* eslint-disable @typescript-eslint/member-ordering */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable unicorn/no-this-assignment */\nimport type { ObservableLike, SubscriptionObserver } from 'observable-fns'\nimport { Observable } from 'observable-fns'\n\ntype OnFulfilled<T, Result = void> = (value: T) => Result\ntype OnRejected<Result = void> = (error: Error) => Result\n\ntype Initializer<T> = (observer: SubscriptionObserver<T>) => UnsubscribeFn | void\n\ntype Thenable<T> = { then: (onFulfilled?: (value: T) => any, onRejected?: (error: any) => any) => any }\n\ntype UnsubscribeFn = () => void\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst doNothing = () => {}\nconst returnInput = <T>(input: T): T => input\nconst runDeferred = (fn: () => void) => {\n void (async () => {\n await Promise.resolve()\n fn()\n })()\n}\n\nfunction fail(error: Error): never {\n throw error\n}\n\nfunction isThenable(thing: any): thing is Thenable<any> {\n return thing != null && typeof thing.then === 'function'\n}\n\n/**\n * Creates a hybrid, combining the APIs of an Observable and a Promise.\n *\n * It is used to proxy async process states when we are initially not sure\n * if that async process will yield values once (-> Promise) or multiple\n * times (-> Observable).\n *\n * Note that the observable promise inherits some of the observable's characteristics:\n * The `init` function will be called *once for every time anyone subscribes to it*.\n *\n * If this is undesired, derive a hot observable from it using `makeHot()` and\n * subscribe to that.\n */\nexport class ObservablePromise<T> extends Observable<T> implements Promise<T> {\n readonly [Symbol.toStringTag] = '[object ObservablePromise]'\n private initHasRun = false\n private fulfillmentCallbacks: OnFulfilled<T>[] = []\n private rejectionCallbacks: OnRejected[] = []\n\n private firstValue: T | undefined\n private firstValueSet = false\n private rejection: Error | undefined\n private state: 'fulfilled' | 'pending' | 'rejected' = 'pending'\n\n constructor(init: Initializer<T>) {\n super((originalObserver: SubscriptionObserver<T>) => {\n const self = this\n const observer: SubscriptionObserver<T> = {\n ...originalObserver,\n complete() {\n originalObserver.complete()\n self.onCompletion()\n },\n error(error: Error) {\n originalObserver.error(error)\n self.onError(error)\n },\n next(value: T) {\n originalObserver.next(value)\n self.onNext(value)\n },\n }\n\n try {\n this.initHasRun = true\n return init(observer)\n } catch (error) {\n observer.error(error)\n }\n })\n }\n\n private onNext(value: T) {\n if (this.firstValueSet) {\n return\n }\n\n this.firstValue = value\n this.firstValueSet = true\n }\n\n private onError(error: Error) {\n this.state = 'rejected'\n this.rejection = error\n\n for (const onRejected of this.rejectionCallbacks) {\n // Promisifying the call to turn errors into unhandled promise rejections\n // instead of them failing sync and cancelling the iteration\n runDeferred(() => onRejected(error))\n }\n }\n\n private onCompletion() {\n this.state = 'fulfilled'\n\n for (const onFulfilled of this.fulfillmentCallbacks) {\n // Promisifying the call to turn errors into unhandled promise rejections\n // instead of them failing sync and cancelling the iteration\n runDeferred(() => onFulfilled(this.firstValue as T))\n }\n }\n\n private createPromise<TResult1 = T, TResult2 = never>(\n onFulfilledRaw?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onRejectedRaw?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n const onFulfilled: OnFulfilled<T, TResult1> = onFulfilledRaw || (returnInput as any)\n const onRejected = onRejectedRaw || fail\n let onRejectedCalled = false\n\n return new Promise<TResult1 | TResult2>((resolve, reject) => {\n const rejectionCallback = (error: Error) => {\n if (onRejectedCalled) return\n onRejectedCalled = true\n\n try {\n resolve(onRejected(error))\n } catch (anotherError) {\n reject(anotherError)\n }\n }\n const fulfillmentCallback = (value: T) => {\n try {\n resolve(onFulfilled(value))\n } catch (ex) {\n const error = ex as Error\n rejectionCallback(error)\n }\n }\n if (!this.initHasRun) {\n this.subscribe({ error: rejectionCallback })\n }\n if (this.state === 'fulfilled') {\n return resolve(onFulfilled(this.firstValue as T))\n }\n if (this.state === 'rejected') {\n onRejectedCalled = true\n return resolve(onRejected(this.rejection!))\n }\n this.fulfillmentCallbacks.push(fulfillmentCallback)\n this.rejectionCallbacks.push(rejectionCallback)\n })\n }\n\n then<TResult1 = T, TResult2 = never>(\n onFulfilledRaw?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onRejectedRaw?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n return this.createPromise(onFulfilledRaw, onRejectedRaw)\n }\n\n catch<Result = never>(onRejected: ((error: Error) => Promise<Result> | Result) | null | undefined) {\n return this.createPromise(undefined, onRejected)\n }\n\n finally(onCompleted?: (() => void) | null) {\n const handler = onCompleted || doNothing\n return this.createPromise(\n (value: T) => {\n handler()\n return value\n },\n () => handler(),\n ) as Promise<T>\n }\n\n static override from<T>(thing: Observable<T> | ObservableLike<T> | ArrayLike<T> | Thenable<T>): ObservablePromise<T> {\n return isThenable(thing)\n ? new ObservablePromise((observer) => {\n void (async () => {\n try {\n const value = await thing\n observer.next(value)\n observer.complete()\n } catch (error) {\n observer.error(error)\n }\n })()\n })\n : (super.from(thing) as ObservablePromise<T>)\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,24 @@
1
+ import type { ObservableLike } from 'observable-fns';
2
+ import { Observable } from 'observable-fns';
3
+ /**
4
+ * Observable subject. Implements the Observable interface, but also exposes
5
+ * the `next()`, `error()`, `complete()` methods to initiate observable
6
+ * updates "from the outside".
7
+ *
8
+ * Use `Observable.from(subject)` to derive an observable that proxies all
9
+ * values, errors and the completion raised on this subject, but does not
10
+ * expose the `next()`, `error()`, `complete()` methods.
11
+ */
12
+ export declare class Subject<T> extends Observable<T> implements ObservableLike<T> {
13
+ #private;
14
+ constructor();
15
+ /** Signal completion to all subscribers. */
16
+ complete(): void;
17
+ /** Signal an error to all subscribers. */
18
+ error(error: any): void;
19
+ /** Emit a new value to all subscribers. */
20
+ next(value: T): void;
21
+ }
22
+ /** Re-export of the Observable class from the `observable-fns` library. */
23
+ export { Observable } from 'observable-fns';
24
+ //# sourceMappingURL=observable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../../src/observable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;GAQG;AACH,qBAAa,OAAO,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;;;IAaxE,4CAA4C;IAC5C,QAAQ;IAIR,0CAA0C;IAC1C,KAAK,CAAC,KAAK,EAAE,GAAG;IAIhB,2CAA2C;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;CAGd;AAED,2EAA2E;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,32 @@
1
+ // src/observable.ts
2
+ import { Observable } from "observable-fns";
3
+ import { Observable as Observable2 } from "observable-fns";
4
+ var Subject = class extends Observable {
5
+ #observers = [];
6
+ constructor() {
7
+ super((observer) => {
8
+ this.#observers = [...this.#observers, observer];
9
+ const unsubscribe = () => {
10
+ this.#observers = this.#observers.filter((someObserver) => someObserver !== observer);
11
+ };
12
+ return unsubscribe;
13
+ });
14
+ }
15
+ /** Signal completion to all subscribers. */
16
+ complete() {
17
+ for (const observer of this.#observers) observer.complete();
18
+ }
19
+ /** Signal an error to all subscribers. */
20
+ error(error) {
21
+ for (const observer of this.#observers) observer.error(error);
22
+ }
23
+ /** Emit a new value to all subscribers. */
24
+ next(value) {
25
+ for (const observer of this.#observers) observer.next(value);
26
+ }
27
+ };
28
+ export {
29
+ Observable2 as Observable,
30
+ Subject
31
+ };
32
+ //# sourceMappingURL=observable.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/observable.ts"],
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ObservableLike, SubscriptionObserver } from 'observable-fns'\nimport { Observable } from 'observable-fns'\n\n/**\n * Observable subject. Implements the Observable interface, but also exposes\n * the `next()`, `error()`, `complete()` methods to initiate observable\n * updates \"from the outside\".\n *\n * Use `Observable.from(subject)` to derive an observable that proxies all\n * values, errors and the completion raised on this subject, but does not\n * expose the `next()`, `error()`, `complete()` methods.\n */\nexport class Subject<T> extends Observable<T> implements ObservableLike<T> {\n #observers: SubscriptionObserver<T>[] = []\n\n constructor() {\n super((observer) => {\n this.#observers = [...this.#observers, observer]\n const unsubscribe = () => {\n this.#observers = this.#observers.filter(someObserver => someObserver !== observer)\n }\n return unsubscribe\n })\n }\n\n /** Signal completion to all subscribers. */\n complete() {\n for (const observer of this.#observers) observer.complete()\n }\n\n /** Signal an error to all subscribers. */\n error(error: any) {\n for (const observer of this.#observers) observer.error(error)\n }\n\n /** Emit a new value to all subscribers. */\n next(value: T) {\n for (const observer of this.#observers) observer.next(value)\n }\n}\n\n/** Re-export of the Observable class from the `observable-fns` library. */\nexport { Observable } from 'observable-fns'\n"],
5
+ "mappings": ";AAEA,SAAS,kBAAkB;AAyC3B,SAAS,cAAAA,mBAAkB;AA9BpB,IAAM,UAAN,cAAyB,WAA2C;AAAA,EACzE,aAAwC,CAAC;AAAA,EAEzC,cAAc;AACZ,UAAM,CAAC,aAAa;AAClB,WAAK,aAAa,CAAC,GAAG,KAAK,YAAY,QAAQ;AAC/C,YAAM,cAAc,MAAM;AACxB,aAAK,aAAa,KAAK,WAAW,OAAO,kBAAgB,iBAAiB,QAAQ;AAAA,MACpF;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,WAAW;AACT,eAAW,YAAY,KAAK,WAAY,UAAS,SAAS;AAAA,EAC5D;AAAA;AAAA,EAGA,MAAM,OAAY;AAChB,eAAW,YAAY,KAAK,WAAY,UAAS,MAAM,KAAK;AAAA,EAC9D;AAAA;AAAA,EAGA,KAAK,OAAU;AACb,eAAW,YAAY,KAAK,WAAY,UAAS,KAAK,KAAK;AAAA,EAC7D;AACF;",
6
+ "names": ["Observable"]
7
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Creates a new promise and exposes its resolver function.
3
+ * Use with care!
4
+ */
5
+ export declare function createPromiseWithResolver<T>(): [Promise<T>, (result: T) => void];
6
+ //# sourceMappingURL=promise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/promise.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,CAkBhF"}
@@ -0,0 +1,27 @@
1
+ /** A serializer that can convert between a message format and an input type. */
2
+ export interface Serializer<Msg = JsonSerializable, Input = any> {
3
+ deserialize(message: Msg): Input;
4
+ serialize(input: Input): Msg;
5
+ }
6
+ /** A serializer implementation that receives a fallback (default) serializer for chaining. */
7
+ export interface SerializerImplementation<Msg = JsonSerializable, Input = any> {
8
+ deserialize(message: Msg, defaultDeserialize: (msg: Msg) => Input): Input;
9
+ serialize(input: Input, defaultSerialize: (inp: Input) => Msg): Msg;
10
+ }
11
+ /**
12
+ * Extend a base serializer with an additional serializer implementation, creating a chain.
13
+ * @param extend - The base serializer to extend.
14
+ * @param implementation - The new serializer implementation that wraps the base.
15
+ * @returns A new serializer combining both behaviors.
16
+ */
17
+ export declare function extendSerializer<MessageType, InputType = any>(extend: Serializer<MessageType, InputType>, implementation: SerializerImplementation<MessageType, InputType>): Serializer<MessageType, InputType>;
18
+ type JsonSerializablePrimitive = string | number | boolean | null;
19
+ type JsonSerializableObject = {
20
+ [key: string]: JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[] | undefined;
21
+ };
22
+ /** A JSON-compatible value that can be serialized for worker message passing. */
23
+ export type JsonSerializable = JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[];
24
+ /** Default serializer that handles Error instances and passes other values through. */
25
+ export declare const DefaultSerializer: Serializer<JsonSerializable>;
26
+ export {};
27
+ //# sourceMappingURL=serializers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializers.d.ts","sourceRoot":"","sources":["../../src/serializers.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,MAAM,WAAW,UAAU,CAAC,GAAG,GAAG,gBAAgB,EAAE,KAAK,GAAG,GAAG;IAC7D,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK,CAAA;IAChC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAA;CAC7B;AAED,8FAA8F;AAC9F,MAAM,WAAW,wBAAwB,CAAC,GAAG,GAAG,gBAAgB,EAAE,KAAK,GAAG,GAAG;IAC3E,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,KAAK,GAAG,KAAK,CAAA;IACzE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,GAAG,CAAA;CACpE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,SAAS,GAAG,GAAG,EAC3D,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,EAC1C,cAAc,EAAE,wBAAwB,CAAC,WAAW,EAAE,SAAS,CAAC,GAC/D,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CASpC;AAED,KAAK,yBAAyB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAEjE,KAAK,sBAAsB,GAAG;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,GAAG,yBAAyB,EAAE,GAAG,sBAAsB,GAAG,sBAAsB,EAAE,GAAG,SAAS,CAAA;CACvI,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,GAAG,yBAAyB,EAAE,GAAG,sBAAsB,GAAG,sBAAsB,EAAE,CAAA;AAqB1I,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,gBAAgB,CAG1D,CAAA"}
@@ -0,0 +1,11 @@
1
+ /** Symbol key for accessing a thread's error observable. */
2
+ export declare const $errors: unique symbol;
3
+ /** Symbol key for accessing a thread's event observable. */
4
+ export declare const $events: unique symbol;
5
+ /** Symbol key for accessing a thread's terminate function. */
6
+ export declare const $terminate: unique symbol;
7
+ /** Symbol key for marking an object as a transferable descriptor. */
8
+ export declare const $transferable: unique symbol;
9
+ /** Symbol key for accessing the underlying worker instance of a thread. */
10
+ export declare const $worker: unique symbol;
11
+ //# sourceMappingURL=symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../../src/symbols.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,eAAO,MAAM,OAAO,eAA0B,CAAA;AAC9C,4DAA4D;AAC5D,eAAO,MAAM,OAAO,eAA0B,CAAA;AAC9C,8DAA8D;AAC9D,eAAO,MAAM,UAAU,eAA6B,CAAA;AACpD,qEAAqE;AACrE,eAAO,MAAM,aAAa,eAAgC,CAAA;AAC1D,2EAA2E;AAC3E,eAAO,MAAM,OAAO,eAA0B,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { $transferable } from './symbols.ts';
2
+ /** Descriptor wrapping a value with its associated transferable objects for zero-copy messaging. */
3
+ export interface TransferDescriptor<T = any> {
4
+ [$transferable]: true;
5
+ send: T;
6
+ transferables: Transferable[];
7
+ }
8
+ /**
9
+ * Check whether a value is a `TransferDescriptor` created by `Transfer()`.
10
+ * @param thing - The value to check.
11
+ * @returns True if the value is a transfer descriptor.
12
+ */
13
+ export declare function isTransferDescriptor(thing: any): thing is TransferDescriptor;
14
+ /**
15
+ * Mark a transferable object as such, so it will no be serialized and
16
+ * deserialized on messaging with the main thread, but to transfer
17
+ * ownership of it to the receiving thread.
18
+ *
19
+ * Only works with array buffers, message ports and few more special
20
+ * types of objects, but it's much faster than serializing and
21
+ * deserializing them.
22
+ *
23
+ * Note:
24
+ * The transferable object cannot be accessed by this thread again
25
+ * unless the receiving thread transfers it back again!
26
+ *
27
+ * @param transferable Array buffer, message port or similar.
28
+ * @see <https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast>
29
+ */
30
+ export declare function Transfer(transferable: Transferable): TransferDescriptor;
31
+ /**
32
+ * Mark transferable objects within an arbitrary object or array as
33
+ * being a transferable object. They will then not be serialized
34
+ * and deserialized on messaging with the main thread, but ownership
35
+ * of them will be tranferred to the receiving thread.
36
+ *
37
+ * Only array buffers, message ports and few more special types of
38
+ * objects can be transferred, but it's much faster than serializing and
39
+ * deserializing them.
40
+ *
41
+ * Note:
42
+ * The transferable object cannot be accessed by this thread again
43
+ * unless the receiving thread transfers it back again!
44
+ *
45
+ * @param transferable Array buffer, message port or similar.
46
+ * @see <https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast>
47
+ */
48
+ export declare function Transfer<T>(payload: T, transferables: Transferable[]): TransferDescriptor;
49
+ //# sourceMappingURL=transferable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferable.d.ts","sourceRoot":"","sources":["../../src/transferable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,oGAAoG;AACpG,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAA;IACrB,IAAI,EAAE,CAAC,CAAA;IACP,aAAa,EAAE,YAAY,EAAE,CAAA;CAC9B;AAQD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,kBAAkB,CAE5E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,kBAAkB,CAAA;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAA"}
@@ -0,0 +1,111 @@
1
+ import type { Observable } from 'observable-fns';
2
+ import type { ObservablePromise } from '../observable-promise.ts';
3
+ import type { $errors, $events, $terminate, $worker } from '../symbols.ts';
4
+ import type { TransferDescriptor } from '../transferable.ts';
5
+ interface ObservableLikeSubscription {
6
+ unsubscribe(): any;
7
+ }
8
+ interface ObservableLike<T> {
9
+ subscribe(onNext: (value: T) => any, onError?: (error: any) => any, onComplete?: () => any): ObservableLikeSubscription;
10
+ subscribe(listeners: {
11
+ complete?(): any;
12
+ error?(error: any): any;
13
+ next?(value: T): any;
14
+ }): ObservableLikeSubscription;
15
+ }
16
+ /** Unwraps `Promise<T>` or `ObservableLike<T>` to their inner type `T`. */
17
+ export type StripAsync<Type> = Type extends Promise<infer PromiseBaseType> ? PromiseBaseType : Type extends ObservableLike<infer ObservableBaseType> ? ObservableBaseType : Type;
18
+ type StripTransfer<Type> = Type extends TransferDescriptor<infer BaseType> ? BaseType : Type;
19
+ /** An object whose keys are method names and values are functions, representing a worker module's methods. */
20
+ export type ModuleMethods = Record<string, (...args: any) => any>;
21
+ type ProxyableArgs<Args extends any[]> = Args extends [arg0: infer Arg0, ...rest: infer RestArgs] ? [Arg0 extends Transferable ? Arg0 | TransferDescriptor<Arg0> : Arg0, ...RestArgs] : Args;
22
+ /** A function proxied from a worker thread, returning an `ObservablePromise` of the unwrapped result. */
23
+ export type ProxyableFunction<Args extends any[], ReturnType> = Args extends [] ? () => ObservablePromise<StripTransfer<StripAsync<ReturnType>>> : (...args: ProxyableArgs<Args>) => ObservablePromise<StripTransfer<StripAsync<ReturnType>>>;
24
+ /** Proxy object mapping a worker module's methods to their proxied counterparts. */
25
+ export type ModuleProxy<Methods extends ModuleMethods> = {
26
+ [method in keyof Methods]: ProxyableFunction<Parameters<Methods[method]>, ReturnType<Methods[method]>>;
27
+ };
28
+ /** Internal symbol-keyed properties attached to every spawned thread. */
29
+ export interface PrivateThreadProps {
30
+ [$errors]: Observable<Error>;
31
+ [$events]: Observable<WorkerEvent>;
32
+ [$terminate]: () => Promise<void>;
33
+ [$worker]: Worker;
34
+ }
35
+ /** A thread wrapping a single exposed function. */
36
+ export type FunctionThread<Args extends any[] = any[], ReturnType = any> = ProxyableFunction<Args, ReturnType> & PrivateThreadProps;
37
+ /** A thread wrapping an exposed module of functions. */
38
+ export type ModuleThread<Methods extends ModuleMethods = any> = ModuleProxy<Methods> & PrivateThreadProps;
39
+ interface AnyFunctionThread extends PrivateThreadProps {
40
+ (...args: any[]): ObservablePromise<any>;
41
+ }
42
+ interface AnyModuleThread extends PrivateThreadProps {
43
+ }
44
+ /** Worker thread. Either a `FunctionThread` or a `ModuleThread`. */
45
+ export type Thread = AnyFunctionThread | AnyModuleThread;
46
+ /** List of `Transferable` objects to be transferred with a message. */
47
+ export type TransferList = Transferable[];
48
+ /** Worker instance. Either a web worker or a Node.js Worker provided by `worker_threads`. */
49
+ export interface Worker extends EventTarget {
50
+ postMessage(value: any, transferList?: TransferList): void;
51
+ /** In Node.js return type is Promise while in browser return type is void */
52
+ terminate(callback?: (error?: Error, exitCode?: number) => void): void | Promise<number>;
53
+ }
54
+ /** Options for configuring a worker thread, extending the standard `WorkerOptions`. */
55
+ export interface ThreadsWorkerOptions extends WorkerOptions {
56
+ /** Whether to apply CORS protection workaround. Defaults to true. */
57
+ CORSWorkaround?: boolean;
58
+ /** Prefix for the path passed to the Worker constructor. Web worker only. */
59
+ _baseURL?: string;
60
+ /** Resource limits passed on to Node worker_threads */
61
+ resourceLimits?: {
62
+ /** The size of a pre-allocated memory range used for generated code. */
63
+ codeRangeSizeMb?: number;
64
+ /** The maximum size of the main heap in MB. */
65
+ maxOldGenerationSizeMb?: number;
66
+ /** The maximum size of a heap space for recently created objects. */
67
+ maxYoungGenerationSizeMb?: number;
68
+ };
69
+ /** Data passed on to Node.js worker_threads. */
70
+ workerData?: any;
71
+ }
72
+ /** Worker implementation. Either web worker or a Node.js Worker class. */
73
+ export declare class WorkerImplementation extends EventTarget implements Worker {
74
+ constructor(path: string, options?: ThreadsWorkerOptions);
75
+ postMessage(value: any, transferList?: TransferList): void;
76
+ terminate(): void | Promise<number>;
77
+ }
78
+ /** Class to spawn workers from a blob or source string. */
79
+ export declare class BlobWorker extends WorkerImplementation {
80
+ constructor(blob: Blob, options?: ThreadsWorkerOptions);
81
+ static fromText(source: string, options?: ThreadsWorkerOptions): WorkerImplementation;
82
+ }
83
+ /** Export shape for platform-specific worker implementations. */
84
+ export interface ImplementationExport {
85
+ blob: typeof BlobWorker;
86
+ default: typeof WorkerImplementation;
87
+ }
88
+ /** Event as emitted by worker thread. Subscribe to using `Thread.events(thread)`. */
89
+ export declare enum WorkerEventType {
90
+ internalError = "internalError",
91
+ message = "message",
92
+ termination = "termination"
93
+ }
94
+ /** Event indicating an internal error occurred in the worker. */
95
+ export interface WorkerInternalErrorEvent {
96
+ error: Error;
97
+ type: WorkerEventType.internalError;
98
+ }
99
+ /** Event containing a message received from the worker. */
100
+ export interface WorkerMessageEvent<Data> {
101
+ data: Data;
102
+ type: WorkerEventType.message;
103
+ }
104
+ /** Event indicating the worker has been terminated. */
105
+ export interface WorkerTerminationEvent {
106
+ type: WorkerEventType.termination;
107
+ }
108
+ /** Union of all possible worker event types. */
109
+ export type WorkerEvent = WorkerInternalErrorEvent | WorkerMessageEvent<any> | WorkerTerminationEvent;
110
+ export {};
111
+ //# sourceMappingURL=master.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"master.d.ts","sourceRoot":"","sources":["../../../src/types/master.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /** Serialized representation of an Error for transmission between threads. */
2
+ export interface SerializedError {
3
+ __error_marker: '$$error';
4
+ message: string;
5
+ name: string;
6
+ stack?: string;
7
+ }
8
+ /** Types of messages that the master thread can send to a worker. */
9
+ export declare enum MasterMessageType {
10
+ cancel = "cancel",
11
+ run = "run"
12
+ }
13
+ /** Message sent by the master to cancel a running job. */
14
+ export type MasterJobCancelMessage = {
15
+ type: MasterMessageType.cancel;
16
+ uid: number;
17
+ };
18
+ /** Message sent by the master to run a function in the worker. */
19
+ export type MasterJobRunMessage = {
20
+ type: MasterMessageType.run;
21
+ uid: number;
22
+ method?: string;
23
+ args: any[];
24
+ };
25
+ /** Types of messages that a worker thread can send to the master. */
26
+ export declare enum WorkerMessageType {
27
+ error = "error",
28
+ init = "init",
29
+ result = "result",
30
+ running = "running",
31
+ uncaughtError = "uncaughtError"
32
+ }
33
+ /** Message sent by a worker when an uncaught error occurs. */
34
+ export type WorkerUncaughtErrorMessage = {
35
+ type: WorkerMessageType.uncaughtError;
36
+ error: {
37
+ message: string;
38
+ name: string;
39
+ stack?: string;
40
+ };
41
+ };
42
+ /** Message sent by a worker after calling `expose()` to signal its API to the master. */
43
+ export type WorkerInitMessage = {
44
+ type: WorkerMessageType.init;
45
+ exposed: {
46
+ type: 'function';
47
+ } | {
48
+ type: 'module';
49
+ methods: string[];
50
+ };
51
+ };
52
+ /** Message sent by a worker when a job encounters an error. */
53
+ export type WorkerJobErrorMessage = {
54
+ type: WorkerMessageType.error;
55
+ uid: number;
56
+ error: SerializedError;
57
+ };
58
+ /** Message sent by a worker containing a job's result value. */
59
+ export type WorkerJobResultMessage = {
60
+ type: WorkerMessageType.result;
61
+ uid: number;
62
+ complete?: true;
63
+ payload?: any;
64
+ };
65
+ /** Message sent by a worker when a job starts executing. */
66
+ export type WorkerJobStartMessage = {
67
+ type: WorkerMessageType.running;
68
+ uid: number;
69
+ resultType: 'observable' | 'promise';
70
+ };
71
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/types/messages.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,SAAS,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAKD,qEAAqE;AACrE,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED,0DAA0D;AAC1D,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,kEAAkE;AAClE,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ,CAAA;AAKD,qEAAqE;AACrE,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,aAAa,kBAAkB;CAChC;AAED,8DAA8D;AAC9D,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,iBAAiB,CAAC,aAAa,CAAA;IACrC,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF,CAAA;AAED,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAA;IAC5B,OAAO,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CACtE,CAAA;AAED,+DAA+D;AAC/D,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,gEAAgE;AAChE,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,OAAO,CAAC,EAAE,GAAG,CAAA;CACd,CAAA;AAED,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAA;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,YAAY,GAAG,SAAS,CAAA;CACrC,CAAA"}
@@ -0,0 +1,19 @@
1
+ // src/types/messages.ts
2
+ var MasterMessageType = /* @__PURE__ */ ((MasterMessageType2) => {
3
+ MasterMessageType2["cancel"] = "cancel";
4
+ MasterMessageType2["run"] = "run";
5
+ return MasterMessageType2;
6
+ })(MasterMessageType || {});
7
+ var WorkerMessageType = /* @__PURE__ */ ((WorkerMessageType2) => {
8
+ WorkerMessageType2["error"] = "error";
9
+ WorkerMessageType2["init"] = "init";
10
+ WorkerMessageType2["result"] = "result";
11
+ WorkerMessageType2["running"] = "running";
12
+ WorkerMessageType2["uncaughtError"] = "uncaughtError";
13
+ return WorkerMessageType2;
14
+ })(WorkerMessageType || {});
15
+ export {
16
+ MasterMessageType,
17
+ WorkerMessageType
18
+ };
19
+ //# sourceMappingURL=messages.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/messages.ts"],
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/member-ordering */\n\n/** Serialized representation of an Error for transmission between threads. */\nexport interface SerializedError {\n __error_marker: '$$error'\n message: string\n name: string\n stack?: string\n}\n\n/////////////////////////////\n// Messages sent by master:\n\n/** Types of messages that the master thread can send to a worker. */\nexport enum MasterMessageType {\n cancel = 'cancel',\n run = 'run',\n}\n\n/** Message sent by the master to cancel a running job. */\nexport type MasterJobCancelMessage = {\n type: MasterMessageType.cancel\n uid: number\n}\n\n/** Message sent by the master to run a function in the worker. */\nexport type MasterJobRunMessage = {\n type: MasterMessageType.run\n uid: number\n method?: string\n args: any[]\n}\n\n////////////////////////////\n// Messages sent by worker:\n\n/** Types of messages that a worker thread can send to the master. */\nexport enum WorkerMessageType {\n error = 'error',\n init = 'init',\n result = 'result',\n running = 'running',\n uncaughtError = 'uncaughtError',\n}\n\n/** Message sent by a worker when an uncaught error occurs. */\nexport type WorkerUncaughtErrorMessage = {\n type: WorkerMessageType.uncaughtError\n error: {\n message: string\n name: string\n stack?: string\n }\n}\n\n/** Message sent by a worker after calling `expose()` to signal its API to the master. */\nexport type WorkerInitMessage = {\n type: WorkerMessageType.init\n exposed: { type: 'function' } | { type: 'module'; methods: string[] }\n}\n\n/** Message sent by a worker when a job encounters an error. */\nexport type WorkerJobErrorMessage = {\n type: WorkerMessageType.error\n uid: number\n error: SerializedError\n}\n\n/** Message sent by a worker containing a job's result value. */\nexport type WorkerJobResultMessage = {\n type: WorkerMessageType.result\n uid: number\n complete?: true\n payload?: any\n}\n\n/** Message sent by a worker when a job starts executing. */\nexport type WorkerJobStartMessage = {\n type: WorkerMessageType.running\n uid: number\n resultType: 'observable' | 'promise'\n}\n"],
5
+ "mappings": ";AAeO,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,SAAM;AAFI,SAAAA;AAAA,GAAA;AAuBL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,WAAQ;AACR,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,aAAU;AACV,EAAAA,mBAAA,mBAAgB;AALN,SAAAA;AAAA,GAAA;",
6
+ "names": ["MasterMessageType", "WorkerMessageType"]
7
+ }
@@ -0,0 +1,13 @@
1
+ type UnsubscribeFn = () => void;
2
+ /** Abstraction layer for the worker runtime API, used by `expose()` to communicate with the master thread. */
3
+ export interface AbstractedWorkerAPI {
4
+ isWorkerRuntime(): boolean;
5
+ postMessageToMaster(message: any, transferList?: Transferable[]): void;
6
+ subscribeToMasterMessages(onMessage: (data: any) => void): UnsubscribeFn;
7
+ }
8
+ /** A function that can be exposed from a worker thread. */
9
+ export type WorkerFunction = ((...args: any[]) => any) | (() => any);
10
+ /** An object whose values are functions, representing a module exposed from a worker thread. */
11
+ export type WorkerModule<Keys extends string> = Record<Keys, WorkerFunction>;
12
+ export {};
13
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/types/worker.ts"],"names":[],"mappings":"AAEA,KAAK,aAAa,GAAG,MAAM,IAAI,CAAA;AAE/B,8GAA8G;AAC9G,MAAM,WAAW,mBAAmB;IAClC,eAAe,IAAI,OAAO,CAAA;IAC1B,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IACtE,yBAAyB,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,aAAa,CAAA;CACzE;AAED,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;AAEpE,gGAAgG;AAChG,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /** Minimal interface representing the global scope inside a web worker. */
2
+ export interface WorkerGlobalScope {
3
+ addEventListener(eventName: string, listener: (event: Event) => void): void;
4
+ postMessage(message: unknown, transferList?: readonly Transferable[]): void;
5
+ removeEventListener(eventName: string, listener: (event: Event) => void): void;
6
+ }
7
+ //# sourceMappingURL=WorkerGlobalScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerGlobalScope.d.ts","sourceRoot":"","sources":["../../../src/worker/WorkerGlobalScope.ts"],"names":[],"mappings":"AAEA,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;IAC3E,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAAA;IAC3E,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CAC/E"}
@@ -0,0 +1,10 @@
1
+ import type { AbstractedWorkerAPI, WorkerFunction, WorkerModule } from '../types/worker.ts';
2
+ import type { WorkerGlobalScope } from './WorkerGlobalScope.ts';
3
+ /**
4
+ * Create an `expose()` function bound to a specific worker API implementation and global scope.
5
+ * @param implementation - The abstracted worker API for communicating with the master thread.
6
+ * @param self - The worker's global scope for subscribing to error events.
7
+ * @returns The `expose()` function that workers call to register their API.
8
+ */
9
+ export declare function createExpose(implementation: AbstractedWorkerAPI, self: WorkerGlobalScope): (exposed: WorkerFunction | WorkerModule<any>) => void;
10
+ //# sourceMappingURL=expose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expose.d.ts","sourceRoot":"","sources":["../../../src/worker/expose.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAClD,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAa/D;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,mBAAmB,EAAE,IAAI,EAAE,iBAAiB,aAmI9D,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,UAoF5D"}