@xylabs/threads 4.0.1 → 4.0.3

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 (58) hide show
  1. package/dist/common.d.ts +1 -1
  2. package/dist/esm/master/spawn.js +1 -3
  3. package/dist/esm/types/master.js +0 -1
  4. package/dist/esm/worker/index.js +1 -3
  5. package/dist/index.d.ts +1 -1
  6. package/dist/master/implementation.browser.d.ts +1 -1
  7. package/dist/master/implementation.node.d.ts +1 -1
  8. package/dist/master/index.d.ts +1 -2
  9. package/dist/master/invocation-proxy.d.ts +1 -1
  10. package/dist/master/pool-types.d.ts +1 -1
  11. package/dist/master/pool.d.ts +3 -2
  12. package/dist/master/spawn.d.ts +2 -2
  13. package/dist/master/spawn.js +1 -3
  14. package/dist/master/thread.d.ts +2 -2
  15. package/dist/observable-promise.d.ts +2 -1
  16. package/dist/observable.d.ts +2 -1
  17. package/dist/types/master.d.ts +4 -4
  18. package/dist/types/master.js +0 -1
  19. package/dist/worker/implementation.d.ts +1 -1
  20. package/dist/worker/index.d.ts +1 -1
  21. package/dist/worker/index.js +1 -3
  22. package/observable.js +1 -0
  23. package/package.json +10 -9
  24. package/register.js +1 -0
  25. package/rollup.config.js +2 -0
  26. package/src/common.ts +4 -1
  27. package/src/index.ts +3 -1
  28. package/src/master/implementation.browser.ts +2 -1
  29. package/src/master/implementation.node.ts +5 -2
  30. package/src/master/index.ts +1 -3
  31. package/src/master/invocation-proxy.ts +7 -3
  32. package/src/master/pool-types.ts +1 -1
  33. package/src/master/pool.ts +10 -3
  34. package/src/master/spawn.ts +7 -7
  35. package/src/master/thread.ts +5 -3
  36. package/src/observable-promise.ts +2 -1
  37. package/src/observable.ts +2 -1
  38. package/src/serializers.ts +1 -1
  39. package/src/types/master.ts +6 -4
  40. package/src/worker/implementation.browser.ts +1 -1
  41. package/src/worker/implementation.tiny-worker.ts +1 -1
  42. package/src/worker/implementation.ts +1 -1
  43. package/src/worker/implementation.worker_threads.ts +2 -2
  44. package/src/worker/index.ts +10 -9
  45. package/test/lib/serialization.ts +1 -1
  46. package/test/pool.test.ts +6 -5
  47. package/test/serialization.test.ts +3 -1
  48. package/test/spawn.chromium.mocha.ts +3 -1
  49. package/test/spawn.test.ts +5 -3
  50. package/test/streaming.test.ts +3 -1
  51. package/test/transferables.test.ts +4 -2
  52. package/test-tooling/rollup/app.js +3 -1
  53. package/test-tooling/tsconfig/minimal.ts +3 -1
  54. package/test-tooling/webpack/app.ts +3 -1
  55. package/test-tooling/webpack/webpack.node.config.js +4 -11
  56. package/test-tooling/webpack/webpack.web.config.js +3 -8
  57. package/types/is-observable.d.ts +1 -1
  58. package/worker.js +1 -0
package/dist/common.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { JsonSerializable, SerializerImplementation } from './serializers';
1
+ import type { JsonSerializable, SerializerImplementation } from './serializers';
2
2
  export declare function registerSerializer(serializer: SerializerImplementation<JsonSerializable>): void;
3
3
  export declare function deserialize(message: JsonSerializable): any;
4
4
  export declare function serialize(input: any): JsonSerializable;
@@ -64,9 +64,7 @@ function createEventObservable(worker, workerTermination) {
64
64
  worker.addEventListener('message', messageHandler);
65
65
  worker.addEventListener('unhandledrejection', rejectionHandler);
66
66
  workerTermination.then(() => {
67
- const terminationEvent = {
68
- type: master_1.WorkerEventType.termination,
69
- };
67
+ const terminationEvent = { type: master_1.WorkerEventType.termination };
70
68
  worker.removeEventListener('message', messageHandler);
71
69
  worker.removeEventListener('unhandledrejection', rejectionHandler);
72
70
  observer.next(terminationEvent);
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkerEventType = void 0;
4
- const symbols_1 = require("../symbols");
5
4
  var WorkerEventType;
6
5
  (function (WorkerEventType) {
7
6
  WorkerEventType["internalError"] = "internalError";
@@ -28,9 +28,7 @@ function deconstructTransfer(thing) {
28
28
  }
29
29
  function postFunctionInitMessage() {
30
30
  const initMessage = {
31
- exposed: {
32
- type: 'function',
33
- },
31
+ exposed: { type: 'function' },
34
32
  type: messages_1.WorkerMessageType.init,
35
33
  };
36
34
  implementation_1.default.postMessageToMaster(initMessage);
package/dist/index.d.ts CHANGED
@@ -2,6 +2,6 @@ export { registerSerializer } from './common';
2
2
  export * from './master/index';
3
3
  export { QueuedTask } from './master/pool';
4
4
  export { ExposedToThreadType as ExposedAs } from './master/spawn';
5
- export { DefaultSerializer, JsonSerializable, Serializer, SerializerImplementation } from './serializers';
5
+ export { DefaultSerializer, JsonSerializable, Serializer, SerializerImplementation, } from './serializers';
6
6
  export { Transfer, TransferDescriptor } from './transferable';
7
7
  export { expose } from './worker/index';
@@ -1,4 +1,4 @@
1
- import { ImplementationExport } from '../types/master';
1
+ import type { ImplementationExport } from '../types/master';
2
2
  export declare const defaultPoolSize: number;
3
3
  export declare function getWorkerImplementation(): ImplementationExport;
4
4
  export declare function isWorkerRuntime(): boolean;
@@ -1,4 +1,4 @@
1
- import { ImplementationExport } from '../types/master';
1
+ import type { ImplementationExport } from '../types/master';
2
2
  export declare const defaultPoolSize: number;
3
3
  export declare function getWorkerImplementation(): ImplementationExport;
4
4
  export declare function isWorkerRuntime(): boolean;
@@ -1,5 +1,4 @@
1
- import type { BlobWorker as BlobWorkerClass } from '../types/master';
2
- import { Worker as WorkerType } from '../types/master';
1
+ import type { BlobWorker as BlobWorkerClass, Worker as WorkerType } from '../types/master';
3
2
  export { FunctionThread, ModuleThread } from '../types/master';
4
3
  export { Pool } from './pool';
5
4
  export { spawn } from './spawn';
@@ -1,3 +1,3 @@
1
- import { ModuleMethods, ModuleProxy, ProxyableFunction, Worker as WorkerType } from '../types/master';
1
+ import type { ModuleMethods, ModuleProxy, ProxyableFunction, Worker as WorkerType } from '../types/master';
2
2
  export declare function createProxyFunction<Args extends any[], ReturnType>(worker: WorkerType, method?: string): ProxyableFunction<Args, ReturnType>;
3
3
  export declare function createProxyModule<Methods extends ModuleMethods>(worker: WorkerType, methodNames: string[]): ModuleProxy<Methods>;
@@ -1,4 +1,4 @@
1
- import { Thread } from './thread';
1
+ import type { Thread } from './thread';
2
2
  export declare enum PoolEventType {
3
3
  initialized = "initialized",
4
4
  taskCanceled = "taskCanceled",
@@ -1,5 +1,6 @@
1
1
  import { Observable } from 'observable-fns';
2
- import { PoolEvent, PoolEventType, QueuedTask, TaskRunFunction } from './pool-types';
2
+ import type { PoolEvent, QueuedTask, TaskRunFunction } from './pool-types';
3
+ import { PoolEventType } from './pool-types';
3
4
  import { Thread } from './thread';
4
5
  export declare namespace Pool {
5
6
  type Event<ThreadType extends Thread = any> = PoolEvent<ThreadType>;
@@ -45,5 +46,5 @@ declare function PoolConstructor<ThreadType extends Thread>(spawnWorker: () => P
45
46
  export declare const Pool: typeof PoolConstructor & {
46
47
  EventType: typeof PoolEventType;
47
48
  };
48
- export { PoolEvent, PoolEventType, QueuedTask } from './pool-types';
49
+ export { PoolEvent, PoolEventType, QueuedTask, } from './pool-types';
49
50
  export { Thread } from './thread';
@@ -1,5 +1,5 @@
1
- import { FunctionThread, ModuleThread, StripAsync, Worker as WorkerType } from '../types/master';
2
- import { WorkerFunction, WorkerModule } from '../types/worker';
1
+ import type { FunctionThread, ModuleThread, StripAsync, Worker as WorkerType } from '../types/master';
2
+ import type { WorkerFunction, WorkerModule } from '../types/worker';
3
3
  type ArbitraryWorkerInterface = WorkerFunction & WorkerModule<string> & {
4
4
  somekeythatisneverusedinproductioncode123: 'magicmarker123';
5
5
  };
@@ -64,9 +64,7 @@ function createEventObservable(worker, workerTermination) {
64
64
  worker.addEventListener('message', messageHandler);
65
65
  worker.addEventListener('unhandledrejection', rejectionHandler);
66
66
  workerTermination.then(() => {
67
- const terminationEvent = {
68
- type: master_1.WorkerEventType.termination,
69
- };
67
+ const terminationEvent = { type: master_1.WorkerEventType.termination };
70
68
  worker.removeEventListener('message', messageHandler);
71
69
  worker.removeEventListener('unhandledrejection', rejectionHandler);
72
70
  observer.next(terminationEvent);
@@ -1,5 +1,5 @@
1
- import { Observable } from 'observable-fns';
2
- import { Thread as ThreadType, WorkerEvent } from '../types/master';
1
+ import type { Observable } from 'observable-fns';
2
+ import type { Thread as ThreadType, WorkerEvent } from '../types/master';
3
3
  export type Thread = ThreadType;
4
4
  export declare const Thread: {
5
5
  errors<ThreadT extends ThreadType>(thread: ThreadT): Observable<Error>;
@@ -1,4 +1,5 @@
1
- import { Observable, ObservableLike, SubscriptionObserver } from 'observable-fns';
1
+ import type { ObservableLike, SubscriptionObserver } from 'observable-fns';
2
+ import { Observable } from 'observable-fns';
2
3
  type Initializer<T> = (observer: SubscriptionObserver<T>) => UnsubscribeFn | void;
3
4
  type Thenable<T> = {
4
5
  then: (onFulfilled?: (value: T) => any, onRejected?: (error: any) => any) => any;
@@ -1,4 +1,5 @@
1
- import { Observable, ObservableLike } from 'observable-fns';
1
+ import type { ObservableLike } from 'observable-fns';
2
+ import { Observable } from 'observable-fns';
2
3
  declare const $observers: unique symbol;
3
4
  export declare class Subject<T> extends Observable<T> implements ObservableLike<T> {
4
5
  private [$observers];
@@ -1,7 +1,7 @@
1
- import { Observable } from 'observable-fns';
2
- import { ObservablePromise } from '../observable-promise';
3
- import { $errors, $events, $terminate, $worker } from '../symbols';
4
- import { TransferDescriptor } from '../transferable';
1
+ import type { Observable } from 'observable-fns';
2
+ import type { ObservablePromise } from '../observable-promise';
3
+ import type { $errors, $events, $terminate, $worker } from '../symbols';
4
+ import type { TransferDescriptor } from '../transferable';
5
5
  interface ObservableLikeSubscription {
6
6
  unsubscribe(): any;
7
7
  }
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkerEventType = void 0;
4
- const symbols_1 = require("../symbols");
5
4
  var WorkerEventType;
6
5
  (function (WorkerEventType) {
7
6
  WorkerEventType["internalError"] = "internalError";
@@ -1,3 +1,3 @@
1
- import { AbstractedWorkerAPI } from '../types/worker';
1
+ import type { AbstractedWorkerAPI } from '../types/worker';
2
2
  declare const _default: AbstractedWorkerAPI;
3
3
  export default _default;
@@ -1,4 +1,4 @@
1
- import { WorkerFunction, WorkerModule } from '../types/worker';
1
+ import type { WorkerFunction, WorkerModule } from '../types/worker';
2
2
  export { registerSerializer } from '../common';
3
3
  export { Transfer } from '../transferable';
4
4
  export declare const isWorkerRuntime: () => boolean;
@@ -28,9 +28,7 @@ function deconstructTransfer(thing) {
28
28
  }
29
29
  function postFunctionInitMessage() {
30
30
  const initMessage = {
31
- exposed: {
32
- type: 'function',
33
- },
31
+ exposed: { type: 'function' },
34
32
  type: messages_1.WorkerMessageType.init,
35
33
  };
36
34
  implementation_1.default.postMessageToMaster(initMessage);
package/observable.js CHANGED
@@ -1 +1,2 @@
1
+ /* eslint-disable @typescript-eslint/no-require-imports */
1
2
  module.exports = require('./dist/observable')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/threads",
3
- "version": "4.0.1",
3
+ "version": "4.0.3",
4
4
  "description": "Web workers & worker threads as simple as a function call",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -69,7 +69,7 @@
69
69
  },
70
70
  "author": "Andy Wermke (https://github.com/andywer)",
71
71
  "bugs": {
72
- "url": "https://github.com/andywer/threads.js/issues"
72
+ "url": "git+https://github.com/andywer/threads.js/issues"
73
73
  },
74
74
  "funding": "https://github.com/andywer/threads.js?sponsor=1",
75
75
  "homepage": "https://threads.js.org",
@@ -84,7 +84,7 @@
84
84
  "worker_threads"
85
85
  ],
86
86
  "dependencies": {
87
- "@babel/types": "^7.25.2",
87
+ "@babel/types": "^7.25.4",
88
88
  "callsites-3-1-0": "npm:callsites@3.1.0",
89
89
  "debug": "^4.3.6",
90
90
  "is-observable-2-1-0": "npm:is-observable@2.1.0",
@@ -96,26 +96,27 @@
96
96
  "@types/chai": "^4.3.17",
97
97
  "@types/debug": "^4.1.12",
98
98
  "@types/execa": "^2.0.0",
99
- "@types/node": "^22.2.0",
99
+ "@types/node": "^22.5.0",
100
100
  "@types/webpack": "^5.28.5",
101
+ "@xylabs/ts-scripts-yarn3": "^4.0.0",
101
102
  "ava": "^6.1.3",
102
103
  "chai": "^5.1.1",
103
104
  "cross-env": "^7.0.3",
104
- "execa": "^9.3.0",
105
+ "execa": "^9.3.1",
105
106
  "mocha": "^10.7.3",
106
107
  "puppet-run": "^0.11.4",
107
108
  "puppet-run-plugin-mocha": "^0.1.1",
108
109
  "raw-loader": "^4.0.2",
109
- "rimraf": "^5.0.10",
110
- "rollup": "^4.20.0",
110
+ "rimraf": "^5",
111
+ "rollup": "^4.21.0",
111
112
  "threads-plugin": "^1.4.0",
112
113
  "tiny-worker": "^2.3.0",
113
114
  "ts-loader": "^9.5.1",
114
115
  "ts-node": "^10.9.2",
115
116
  "typescript": "^5.5.4",
116
- "undici-types": "^6.19.6",
117
+ "undici-types": "^6.19.8",
117
118
  "wavy": "^1.0.4",
118
- "webpack": "^5.93.0",
119
+ "webpack": "^5.94.0",
119
120
  "worker-plugin": "^5.0.1"
120
121
  },
121
122
  "optionalDependencies": {
package/register.js CHANGED
@@ -1 +1,2 @@
1
+ /* eslint-disable @typescript-eslint/no-require-imports */
1
2
  require('./dist/master/register')
package/rollup.config.js CHANGED
@@ -1,4 +1,6 @@
1
+ /* eslint-disable @typescript-eslint/no-require-imports */
1
2
  const commonjs = require('@rollup/plugin-commonjs')
3
+ /* eslint-disable @typescript-eslint/no-require-imports */
2
4
  const { nodeResolve } = require('@rollup/plugin-node-resolve')
3
5
 
4
6
  module.exports = {
package/src/common.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { DefaultSerializer, extendSerializer, JsonSerializable, Serializer, SerializerImplementation } from './serializers'
2
+ import type {
3
+ JsonSerializable, Serializer, SerializerImplementation,
4
+ } from './serializers'
5
+ import { DefaultSerializer, extendSerializer } from './serializers'
3
6
 
4
7
  let registeredSerializer: Serializer<JsonSerializable> = DefaultSerializer
5
8
 
package/src/index.ts CHANGED
@@ -3,6 +3,8 @@ export { registerSerializer } from './common'
3
3
  export * from './master/index'
4
4
  export { QueuedTask } from './master/pool'
5
5
  export { ExposedToThreadType as ExposedAs } from './master/spawn'
6
- export { DefaultSerializer, JsonSerializable, Serializer, SerializerImplementation } from './serializers'
6
+ export {
7
+ DefaultSerializer, JsonSerializable, Serializer, SerializerImplementation,
8
+ } from './serializers'
7
9
  export { Transfer, TransferDescriptor } from './transferable'
8
10
  export { expose } from './worker/index'
@@ -1,7 +1,8 @@
1
+ /* eslint-disable @stylistic/max-len */
1
2
  /* eslint-disable import-x/no-internal-modules */
2
3
  // tslint:disable max-classes-per-file
3
4
 
4
- import { ImplementationExport, ThreadsWorkerOptions } from '../types/master'
5
+ import type { ImplementationExport, ThreadsWorkerOptions } from '../types/master'
5
6
  import { getBundleURL } from './get-bundle-url.browser'
6
7
 
7
8
  export const defaultPoolSize = typeof navigator !== 'undefined' && navigator.hardwareConcurrency ? navigator.hardwareConcurrency : 4
@@ -15,9 +15,12 @@ import { cpus } from 'node:os'
15
15
  import path from 'node:path'
16
16
  import { fileURLToPath } from 'node:url'
17
17
 
18
- import getCallsites, { CallSite } from 'callsites-3-1-0'
18
+ import type { CallSite } from 'callsites-3-1-0'
19
+ import getCallsites from 'callsites-3-1-0'
19
20
 
20
- import { ImplementationExport, ThreadsWorkerOptions, WorkerImplementation } from '../types/master'
21
+ import type {
22
+ ImplementationExport, ThreadsWorkerOptions, WorkerImplementation,
23
+ } from '../types/master'
21
24
 
22
25
  interface WorkerGlobalScope {
23
26
  addEventListener(eventName: string, listener: (event: Event) => void): void
@@ -1,7 +1,5 @@
1
1
  /* eslint-disable import-x/no-internal-modules */
2
- // tslint:disable no-duplicate-imports
3
- import type { BlobWorker as BlobWorkerClass } from '../types/master'
4
- import { Worker as WorkerType } from '../types/master'
2
+ import type { BlobWorker as BlobWorkerClass, Worker as WorkerType } from '../types/master'
5
3
  import { getWorkerImplementation } from './implementation'
6
4
 
7
5
  export { FunctionThread, ModuleThread } from '../types/master'
@@ -13,14 +13,18 @@ import { multicast, Observable } from 'observable-fns'
13
13
  import { deserialize, serialize } from '../common'
14
14
  import { ObservablePromise } from '../observable-promise'
15
15
  import { isTransferDescriptor } from '../transferable'
16
- import { ModuleMethods, ModuleProxy, ProxyableFunction, Worker as WorkerType } from '../types/master'
17
- import {
16
+ import type {
17
+ ModuleMethods, ModuleProxy, ProxyableFunction, Worker as WorkerType,
18
+ } from '../types/master'
19
+ import type {
18
20
  MasterJobCancelMessage,
19
21
  MasterJobRunMessage,
20
- MasterMessageType,
21
22
  WorkerJobErrorMessage,
22
23
  WorkerJobResultMessage,
23
24
  WorkerJobStartMessage,
25
+ } from '../types/messages'
26
+ import {
27
+ MasterMessageType,
24
28
  WorkerMessageType,
25
29
  } from '../types/messages'
26
30
 
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* eslint-disable @typescript-eslint/member-ordering */
3
- import { Thread } from './thread'
3
+ import type { Thread } from './thread'
4
4
 
5
5
  /** Pool event type. Specifies the type of each `PoolEvent`. */
6
6
  export enum PoolEventType {
@@ -8,11 +8,16 @@
8
8
  /* eslint-disable @typescript-eslint/no-namespace */
9
9
  /* eslint-disable @typescript-eslint/no-floating-promises */
10
10
  import DebugLogger from 'debug'
11
- import { multicast, Observable, Subject } from 'observable-fns'
11
+ import {
12
+ multicast, Observable, Subject,
13
+ } from 'observable-fns'
12
14
 
13
15
  import { allSettled } from '../ponyfills'
14
16
  import { defaultPoolSize } from './implementation'
15
- import { PoolEvent, PoolEventType, QueuedTask, TaskRunFunction, WorkerDescriptor } from './pool-types'
17
+ import type {
18
+ PoolEvent, QueuedTask, TaskRunFunction, WorkerDescriptor,
19
+ } from './pool-types'
20
+ import { PoolEventType } from './pool-types'
16
21
  import { Thread } from './thread'
17
22
 
18
23
  export declare namespace Pool {
@@ -388,5 +393,7 @@ function PoolConstructor<ThreadType extends Thread>(spawnWorker: () => Promise<T
388
393
  */
389
394
  export const Pool = PoolConstructor as typeof PoolConstructor & { EventType: typeof PoolEventType }
390
395
 
391
- export { PoolEvent, PoolEventType, QueuedTask } from './pool-types'
396
+ export {
397
+ PoolEvent, PoolEventType, QueuedTask,
398
+ } from './pool-types'
392
399
  export { Thread } from './thread'
@@ -6,21 +6,23 @@ import { Observable } from 'observable-fns'
6
6
 
7
7
  import { deserialize } from '../common'
8
8
  import { createPromiseWithResolver } from '../promise'
9
- import { $errors, $events, $terminate, $worker } from '../symbols'
10
9
  import {
10
+ $errors, $events, $terminate, $worker,
11
+ } from '../symbols'
12
+ import type {
11
13
  FunctionThread,
12
14
  ModuleThread,
13
15
  PrivateThreadProps,
14
16
  StripAsync,
15
17
  Worker as WorkerType,
16
18
  WorkerEvent,
17
- WorkerEventType,
18
19
  WorkerInternalErrorEvent,
19
20
  WorkerMessageEvent,
20
21
  WorkerTerminationEvent,
21
22
  } from '../types/master'
22
- import { WorkerInitMessage, WorkerUncaughtErrorMessage } from '../types/messages'
23
- import { WorkerFunction, WorkerModule } from '../types/worker'
23
+ import { WorkerEventType } from '../types/master'
24
+ import type { WorkerInitMessage, WorkerUncaughtErrorMessage } from '../types/messages'
25
+ import type { WorkerFunction, WorkerModule } from '../types/worker'
24
26
  import { createProxyFunction, createProxyModule } from './invocation-proxy'
25
27
 
26
28
  type ArbitraryWorkerInterface = WorkerFunction & WorkerModule<string> & { somekeythatisneverusedinproductioncode123: 'magicmarker123' }
@@ -93,9 +95,7 @@ function createEventObservable(worker: WorkerType, workerTermination: Promise<an
93
95
  worker.addEventListener('unhandledrejection', rejectionHandler)
94
96
 
95
97
  workerTermination.then(() => {
96
- const terminationEvent: WorkerTerminationEvent = {
97
- type: WorkerEventType.termination,
98
- }
98
+ const terminationEvent: WorkerTerminationEvent = { type: WorkerEventType.termination }
99
99
  worker.removeEventListener('message', messageHandler)
100
100
  worker.removeEventListener('unhandledrejection', rejectionHandler)
101
101
  observer.next(terminationEvent)
@@ -1,8 +1,10 @@
1
1
  /* eslint-disable import-x/no-internal-modules */
2
- import { Observable } from 'observable-fns'
2
+ import type { Observable } from 'observable-fns'
3
3
 
4
- import { $errors, $events, $terminate } from '../symbols'
5
- import { Thread as ThreadType, WorkerEvent } from '../types/master'
4
+ import {
5
+ $errors, $events, $terminate,
6
+ } from '../symbols'
7
+ import type { Thread as ThreadType, WorkerEvent } from '../types/master'
6
8
 
7
9
  function fail(message: string): never {
8
10
  throw new Error(message)
@@ -5,7 +5,8 @@
5
5
  /* eslint-disable @typescript-eslint/no-explicit-any */
6
6
  /* eslint-disable @typescript-eslint/no-this-alias */
7
7
  /* eslint-disable unicorn/no-this-assignment */
8
- import { Observable, ObservableLike, SubscriptionObserver } from 'observable-fns'
8
+ import type { ObservableLike, SubscriptionObserver } from 'observable-fns'
9
+ import { Observable } from 'observable-fns'
9
10
 
10
11
  type OnFulfilled<T, Result = void> = (value: T) => Result
11
12
  type OnRejected<Result = void> = (error: Error) => Result
package/src/observable.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Observable, ObservableLike, SubscriptionObserver } from 'observable-fns'
2
+ import type { ObservableLike, SubscriptionObserver } from 'observable-fns'
3
+ import { Observable } from 'observable-fns'
3
4
 
4
5
  const $observers = Symbol('observers')
5
6
 
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable import-x/no-internal-modules */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
- import { SerializedError } from './types/messages'
3
+ import type { SerializedError } from './types/messages'
4
4
 
5
5
  export interface Serializer<Msg = JsonSerializable, Input = any> {
6
6
  deserialize(message: Msg): Input
@@ -4,11 +4,13 @@
4
4
 
5
5
  // Cannot use `compilerOptions.esModuleInterop` and default import syntax
6
6
  // See <https://github.com/microsoft/TypeScript/issues/28009>
7
- import { Observable } from 'observable-fns'
7
+ import type { Observable } from 'observable-fns'
8
8
 
9
- import { ObservablePromise } from '../observable-promise'
10
- import { $errors, $events, $terminate, $worker } from '../symbols'
11
- import { TransferDescriptor } from '../transferable'
9
+ import type { ObservablePromise } from '../observable-promise'
10
+ import type {
11
+ $errors, $events, $terminate, $worker,
12
+ } from '../symbols'
13
+ import type { TransferDescriptor } from '../transferable'
12
14
 
13
15
  interface ObservableLikeSubscription {
14
16
  unsubscribe(): any
@@ -3,7 +3,7 @@
3
3
  /// <reference lib="dom" />
4
4
  // tslint:disable no-shadowed-variable
5
5
 
6
- import { AbstractedWorkerAPI } from '../types/worker'
6
+ import type { AbstractedWorkerAPI } from '../types/worker'
7
7
 
8
8
  interface WorkerGlobalScope {
9
9
  addEventListener(eventName: string, listener: (event: Event) => void): void
@@ -3,7 +3,7 @@
3
3
  /// <reference lib="dom" />
4
4
  // tslint:disable no-shadowed-variable
5
5
 
6
- import { AbstractedWorkerAPI } from '../types/worker'
6
+ import type { AbstractedWorkerAPI } from '../types/worker'
7
7
 
8
8
  interface WorkerGlobalScope {
9
9
  addEventListener(eventName: string, listener: (event: Event) => void): void
@@ -4,7 +4,7 @@
4
4
  * This file is only a stub to make './implementation' resolve to the right module.
5
5
  */
6
6
 
7
- import { AbstractedWorkerAPI } from '../types/worker'
7
+ import type { AbstractedWorkerAPI } from '../types/worker'
8
8
  import WebWorkerImplementation from './implementation.browser'
9
9
  import TinyWorkerImplementation from './implementation.tiny-worker'
10
10
  import WorkerThreadsImplementation from './implementation.worker_threads'
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable import-x/no-internal-modules */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  // tslint:disable no-shadowed-variable
4
- import { MessagePort } from 'node:worker_threads'
4
+ import type { MessagePort } from 'node:worker_threads'
5
5
 
6
- import { AbstractedWorkerAPI } from '../types/worker'
6
+ import type { AbstractedWorkerAPI } from '../types/worker'
7
7
  import WorkerThreads from '../worker_threads'
8
8
 
9
9
  function assertMessagePort(port: MessagePort | null | undefined): MessagePort {
@@ -2,23 +2,26 @@
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  /* eslint-disable @typescript-eslint/no-floating-promises */
4
4
  import isSomeObservable from 'is-observable-2-1-0'
5
- import { Observable, Subscription } from 'observable-fns'
5
+ import type { Observable, Subscription } from 'observable-fns'
6
6
 
7
7
  import { deserialize, serialize } from '../common'
8
- import { isTransferDescriptor, TransferDescriptor } from '../transferable'
9
- import {
8
+ import type { TransferDescriptor } from '../transferable'
9
+ import { isTransferDescriptor } from '../transferable'
10
+ import type {
10
11
  MasterJobCancelMessage,
11
12
  MasterJobRunMessage,
12
- MasterMessageType,
13
13
  SerializedError,
14
14
  WorkerInitMessage,
15
15
  WorkerJobErrorMessage,
16
16
  WorkerJobResultMessage,
17
17
  WorkerJobStartMessage,
18
- WorkerMessageType,
19
18
  WorkerUncaughtErrorMessage,
20
19
  } from '../types/messages'
21
- import { WorkerFunction, WorkerModule } from '../types/worker'
20
+ import {
21
+ MasterMessageType,
22
+ WorkerMessageType,
23
+ } from '../types/messages'
24
+ import type { WorkerFunction, WorkerModule } from '../types/worker'
22
25
  import Implementation from './implementation'
23
26
 
24
27
  export { registerSerializer } from '../common'
@@ -50,9 +53,7 @@ function deconstructTransfer(thing: any) {
50
53
 
51
54
  function postFunctionInitMessage() {
52
55
  const initMessage: WorkerInitMessage = {
53
- exposed: {
54
- type: 'function',
55
- },
56
+ exposed: { type: 'function' },
56
57
  type: WorkerMessageType.init,
57
58
  }
58
59
  Implementation.postMessageToMaster(initMessage)
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
 
3
- import { JsonSerializable, SerializerImplementation } from '../../src/index'
3
+ import type { JsonSerializable, SerializerImplementation } from '../../src/index'
4
4
 
5
5
  export class Foo<T> {
6
6
  private readonly value: T
package/test/pool.test.ts CHANGED
@@ -6,8 +6,11 @@
6
6
  // eslint-disable import-x/no-internal-modules
7
7
  import test from 'ava'
8
8
 
9
- import { Pool, spawn, Worker } from '../src/index'
10
- import { PoolEventType, QueuedTask } from '../src/master/pool'
9
+ import {
10
+ Pool, spawn, Worker,
11
+ } from '../src/index'
12
+ import type { QueuedTask } from '../src/master/pool'
13
+ import { PoolEventType } from '../src/master/pool'
11
14
 
12
15
  const workerPath = './workers/hello-world'
13
16
  const HELLO_WORLD = 'Hello World'
@@ -64,9 +67,7 @@ test.serial('thread pool basics work and events are emitted', async (t) => {
64
67
  type: Pool.EventType.taskCompleted,
65
68
  workerID: 1,
66
69
  },
67
- {
68
- type: Pool.EventType.taskQueueDrained,
69
- },
70
+ { type: Pool.EventType.taskQueueDrained },
70
71
  {
71
72
  remainingQueue: [],
72
73
  type: Pool.EventType.terminated,
@@ -1,7 +1,9 @@
1
1
  /* eslint-disable import-x/no-internal-modules */
2
2
  import test from 'ava'
3
3
 
4
- import { registerSerializer, spawn, Thread, Worker } from '../src/index'
4
+ import {
5
+ registerSerializer, spawn, Thread, Worker,
6
+ } from '../src/index'
5
7
  import { Foo, fooSerializer } from './lib/serialization'
6
8
 
7
9
  registerSerializer(fooSerializer)
@@ -11,7 +11,9 @@ import '../src/master/register'
11
11
 
12
12
  import { expect } from 'chai'
13
13
 
14
- import { BlobWorker, spawn, Thread } from '..'
14
+ import {
15
+ BlobWorker, spawn, Thread,
16
+ } from '..'
15
17
 
16
18
  describe('threads in browser', function () {
17
19
  it('can spawn and terminate a thread', async function () {
@@ -2,10 +2,12 @@
2
2
 
3
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
4
  import test from 'ava'
5
- import { Observable } from 'observable-fns'
5
+ import type { Observable } from 'observable-fns'
6
6
 
7
- import { spawn, Thread, Worker } from '../src/index'
8
- import { Counter } from './workers/counter'
7
+ import {
8
+ spawn, Thread, Worker,
9
+ } from '../src/index'
10
+ import type { Counter } from './workers/counter'
9
11
 
10
12
  test('can spawn and terminate a thread', async (t) => {
11
13
  // We also test here that running spawn() without type parameters works
@@ -1,6 +1,8 @@
1
1
  import test from 'ava'
2
2
 
3
- import { spawn, Thread, Worker } from '../src/index'
3
+ import {
4
+ spawn, Thread, Worker,
5
+ } from '../src/index'
4
6
 
5
7
  test('can use worker returning an observable subject', async (t) => {
6
8
  const captured: Array<{ max: number; min: number }> = []
@@ -4,8 +4,10 @@
4
4
 
5
5
  import test from 'ava'
6
6
 
7
- import { spawn, Thread, Transfer, Worker } from '../src/index'
8
- import { XorBuffer } from './workers/arraybuffer-xor'
7
+ import {
8
+ spawn, Thread, Transfer, Worker,
9
+ } from '../src/index'
10
+ import type { XorBuffer } from './workers/arraybuffer-xor'
9
11
 
10
12
  type SpyInit<Args extends any[], OriginalReturn, NewReturn> = (originalFn: (...args: Args) => OriginalReturn) => (...args: Args) => NewReturn
11
13
 
@@ -1,5 +1,7 @@
1
1
  /* eslint-disable no-restricted-imports */
2
- import { spawn, Thread, Worker } from '../..'
2
+ import {
3
+ spawn, Thread, Worker,
4
+ } from '../..'
3
5
 
4
6
  async function run() {
5
7
  const add = await spawn(new Worker('./worker.js'))
@@ -1,6 +1,8 @@
1
1
  /* eslint-disable no-restricted-imports */
2
2
  /* eslint-disable @typescript-eslint/no-floating-promises */
3
- import { spawn, Thread, Worker } from '../..'
3
+ import {
4
+ spawn, Thread, Worker,
5
+ } from '../..'
4
6
 
5
7
  async function main() {
6
8
  const helloWorld = await spawn(new Worker('./workers/hello-world'))
@@ -1,6 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
 
3
- import { isWorkerRuntime, Pool, spawn, Worker } from '../../src/index'
3
+ import {
4
+ isWorkerRuntime, Pool, spawn, Worker,
5
+ } from '../../src/index'
4
6
 
5
7
  type AdditionWorker = (a: number, b: number) => number
6
8
  type HelloWorker = (text: string) => string
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-require-imports */
1
2
  const path = require('node:path')
2
3
  const ThreadsPlugin = require('threads-plugin')
3
4
 
@@ -5,19 +6,13 @@ module.exports = {
5
6
  context: __dirname,
6
7
  devtool: false,
7
8
  entry: require.resolve('./app.ts'),
8
- externals: {
9
- 'tiny-worker': 'tiny-worker',
10
- },
9
+ externals: { 'tiny-worker': 'tiny-worker' },
11
10
  mode: 'development',
12
11
  module: {
13
12
  rules: [
14
13
  {
15
14
  loader: 'ts-loader',
16
- options: {
17
- compilerOptions: {
18
- module: 'esnext',
19
- },
20
- },
15
+ options: { compilerOptions: { module: 'esnext' } },
21
16
  test: /\.ts$/,
22
17
  },
23
18
  ],
@@ -29,8 +24,6 @@ module.exports = {
29
24
  path: path.resolve(__dirname, './dist/app.node'),
30
25
  },
31
26
  plugins: [new ThreadsPlugin()],
32
- resolve: {
33
- extensions: ['.js', '.ts'],
34
- },
27
+ resolve: { extensions: ['.js', '.ts'] },
35
28
  target: 'node',
36
29
  }
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-require-imports */
1
2
  const path = require('node:path')
2
3
  const ThreadsPlugin = require('threads-plugin')
3
4
 
@@ -10,11 +11,7 @@ module.exports = {
10
11
  rules: [
11
12
  {
12
13
  loader: 'ts-loader',
13
- options: {
14
- compilerOptions: {
15
- module: 'esnext',
16
- },
17
- },
14
+ options: { compilerOptions: { module: 'esnext' } },
18
15
  test: /\.ts$/,
19
16
  },
20
17
  ],
@@ -26,8 +23,6 @@ module.exports = {
26
23
  path: path.resolve(__dirname, './dist/app.web'),
27
24
  },
28
25
  plugins: [new ThreadsPlugin()],
29
- resolve: {
30
- extensions: ['.js', '.ts'],
31
- },
26
+ resolve: { extensions: ['.js', '.ts'] },
32
27
  target: 'web',
33
28
  }
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  declare module 'is-observable-2-1-0' {
3
- import { Observable } from 'observable-fns'
3
+ import type { Observable } from 'observable-fns'
4
4
 
5
5
  function isObservable(thing: any): thing is Observable<any>
6
6
  export = isObservable
package/worker.js CHANGED
@@ -1 +1,2 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
1
2
  module.exports = require('./dist/worker/index')