@vertexvis/web-workers 0.1.1-canary.9 → 0.2.1-canary.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.
@@ -5,164 +5,162 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib = require('tslib');
6
6
  var threads = require('threads');
7
7
 
8
- var TerminateController = /** @class */ (function () {
9
- function TerminateController() {
10
- this.threads = [];
11
- this.pools = [];
12
- }
13
- TerminateController.prototype.addThread = function (thread) {
14
- this.threads.push(thread);
15
- };
16
- TerminateController.prototype.addPool = function (pool) {
17
- this.pools.push(pool);
18
- };
19
- TerminateController.prototype.terminate = function (force) {
20
- if (force === void 0) { force = false; }
21
- return tslib.__awaiter(this, void 0, void 0, function () {
22
- return tslib.__generator(this, function (_a) {
23
- switch (_a.label) {
24
- case 0: return [4 /*yield*/, Promise.all(tslib.__spreadArray(tslib.__spreadArray([], this.threads.map(function (t) { return threads.Thread.terminate(t); })), this.pools.map(function (p) { return p.terminate(force); })))];
25
- case 1:
26
- _a.sent();
27
- return [2 /*return*/];
28
- }
29
- });
30
- });
31
- };
32
- return TerminateController;
8
+ var TerminateController = /** @class */ (function () {
9
+ function TerminateController() {
10
+ this.threads = [];
11
+ this.pools = [];
12
+ }
13
+ TerminateController.prototype.addThread = function (thread) {
14
+ this.threads.push(thread);
15
+ };
16
+ TerminateController.prototype.addPool = function (pool) {
17
+ this.pools.push(pool);
18
+ };
19
+ TerminateController.prototype.terminate = function () {
20
+ return tslib.__awaiter(this, arguments, void 0, function (force) {
21
+ if (force === void 0) { force = false; }
22
+ return tslib.__generator(this, function (_a) {
23
+ switch (_a.label) {
24
+ case 0: return [4 /*yield*/, Promise.all(tslib.__spreadArray(tslib.__spreadArray([], this.threads.map(function (t) { return threads.Thread.terminate(t); }), true), this.pools.map(function (p) { return p.terminate(force); }), true))];
25
+ case 1:
26
+ _a.sent();
27
+ return [2 /*return*/];
28
+ }
29
+ });
30
+ });
31
+ };
32
+ return TerminateController;
33
33
  }());
34
34
 
35
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
- function getGlobal() {
37
- if (typeof globalThis !== 'undefined') {
38
- return globalThis;
39
- }
40
- else if (typeof self !== 'undefined') {
41
- return self;
42
- }
43
- else if (typeof window !== 'undefined') {
44
- return window;
45
- }
46
- else if (typeof global !== 'undefined') {
47
- return global;
48
- }
49
- throw new Error('unable to locate global object');
50
- }
35
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
+ function getGlobal() {
37
+ if (typeof globalThis !== 'undefined') {
38
+ return globalThis;
39
+ }
40
+ else if (typeof self !== 'undefined') {
41
+ return self;
42
+ }
43
+ else if (typeof window !== 'undefined') {
44
+ return window;
45
+ }
46
+ else if (typeof global !== 'undefined') {
47
+ return global;
48
+ }
49
+ throw new Error('unable to locate global object');
50
+ }
51
51
  var globalThis$1 = getGlobal();
52
52
 
53
- function instanceOf(obj, className) {
54
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
- var Type = globalThis$1[className];
56
- return Type != null && obj instanceof Type;
57
- }
58
- function isTransferable(obj) {
59
- return (instanceOf(obj, 'ArrayBuffer') ||
60
- instanceOf(obj, 'MessagePort') ||
61
- instanceOf(obj, 'ImageBitmap') ||
62
- instanceOf(obj, 'OffscreenCanvas'));
63
- }
64
- function isTypedArray(obj) {
65
- return (instanceOf(obj, 'Int8Array') ||
66
- instanceOf(obj, 'Uint8Array') ||
67
- instanceOf(obj, 'Uint8ClampedArray') ||
68
- instanceOf(obj, 'Int16Array') ||
69
- instanceOf(obj, 'Uint16Array') ||
70
- instanceOf(obj, 'Int32Array') ||
71
- instanceOf(obj, 'Uint32Array') ||
72
- instanceOf(obj, 'Float32Array') ||
73
- instanceOf(obj, 'Float64Array') ||
74
- instanceOf(obj, 'BigInt64Array') ||
75
- instanceOf(obj, 'BigUint64Array'));
76
- }
77
- /**
78
- * A function that will recursively inspect an object and return a Threads
79
- * `Transfer` that contains all the `Transferable`s in the given object.
80
- *
81
- * @param obj The object to make transferable.
82
- * @returns A `Transfer` from Threads.
83
- */
84
- function makeTransferable(obj) {
85
- if (isTransferable(obj)) {
86
- return threads.Transfer(obj);
87
- }
88
- else if (obj != null && typeof obj === 'object') {
89
- var transferables = findTransferables(obj);
90
- return threads.Transfer(obj, transferables);
91
- }
92
- else {
93
- return obj;
94
- }
95
- }
96
- function findTransferables(obj) {
97
- if (isTransferable(obj)) {
98
- return [obj];
99
- }
100
- else if (typeof obj === 'object') {
101
- if (Array.isArray(obj)) {
102
- var result_1 = [];
103
- obj.forEach(function (o) { return result_1.push.apply(result_1, findTransferables(o)); });
104
- return result_1;
105
- }
106
- else if (isTypedArray(obj)) {
107
- return [obj.buffer];
108
- }
109
- else if (obj != null) {
110
- return Object.values(obj).reduce(function (acc, value) {
111
- acc.push.apply(acc, findTransferables(value));
112
- return acc;
113
- }, []);
114
- }
115
- else {
116
- return [];
117
- }
118
- }
119
- else {
120
- return [];
121
- }
53
+ function instanceOf(obj, className) {
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ var Type = globalThis$1[className];
56
+ return Type != null && obj instanceof Type;
57
+ }
58
+ function isTransferable(obj) {
59
+ return (instanceOf(obj, 'ArrayBuffer') ||
60
+ instanceOf(obj, 'MessagePort') ||
61
+ instanceOf(obj, 'ImageBitmap') ||
62
+ instanceOf(obj, 'OffscreenCanvas'));
63
+ }
64
+ function isTypedArray(obj) {
65
+ return (instanceOf(obj, 'Int8Array') ||
66
+ instanceOf(obj, 'Uint8Array') ||
67
+ instanceOf(obj, 'Uint8ClampedArray') ||
68
+ instanceOf(obj, 'Int16Array') ||
69
+ instanceOf(obj, 'Uint16Array') ||
70
+ instanceOf(obj, 'Int32Array') ||
71
+ instanceOf(obj, 'Uint32Array') ||
72
+ instanceOf(obj, 'Float32Array') ||
73
+ instanceOf(obj, 'Float64Array') ||
74
+ instanceOf(obj, 'BigInt64Array') ||
75
+ instanceOf(obj, 'BigUint64Array'));
76
+ }
77
+ /**
78
+ * A function that will recursively inspect an object and return a Threads
79
+ * `Transfer` that contains all the `Transferable`s in the given object.
80
+ *
81
+ * @param obj The object to make transferable.
82
+ * @returns A `Transfer` from Threads.
83
+ */
84
+ function makeTransferable(obj) {
85
+ if (isTransferable(obj)) {
86
+ return threads.Transfer(obj);
87
+ }
88
+ else if (obj != null && typeof obj === 'object') {
89
+ var transferables = findTransferables(obj);
90
+ return threads.Transfer(obj, transferables);
91
+ }
92
+ else {
93
+ return obj;
94
+ }
95
+ }
96
+ function findTransferables(obj) {
97
+ if (isTransferable(obj)) {
98
+ return [obj];
99
+ }
100
+ else if (typeof obj === 'object') {
101
+ if (Array.isArray(obj)) {
102
+ var result_1 = [];
103
+ obj.forEach(function (o) { return result_1.push.apply(result_1, findTransferables(o)); });
104
+ return result_1;
105
+ }
106
+ else if (isTypedArray(obj)) {
107
+ return [obj.buffer];
108
+ }
109
+ else if (obj != null) {
110
+ return Object.values(obj).reduce(function (acc, value) {
111
+ acc.push.apply(acc, findTransferables(value));
112
+ return acc;
113
+ }, []);
114
+ }
115
+ else {
116
+ return [];
117
+ }
118
+ }
119
+ else {
120
+ return [];
121
+ }
122
122
  }
123
123
 
124
- /**
125
- * Defines a web worker implementation. This function wraps the `expose` method
126
- * of Threads and handles automatic conversion of Transferable types.
127
- *
128
- * @param impl The worker implementation.
129
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable
130
- */
131
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
132
- function defineWorker(impl, _a) {
133
- var _b = _a === void 0 ? {} : _a, _c = _b.expose, expose = _c === void 0 ? threads.expose : _c;
134
- function wrap(f) {
135
- var _this = this;
136
- return function () {
137
- var args = [];
138
- for (var _i = 0; _i < arguments.length; _i++) {
139
- args[_i] = arguments[_i];
140
- }
141
- return tslib.__awaiter(_this, void 0, void 0, function () {
142
- var res;
143
- return tslib.__generator(this, function (_a) {
144
- switch (_a.label) {
145
- case 0: return [4 /*yield*/, f.apply(void 0, args)];
146
- case 1:
147
- res = _a.sent();
148
- return [2 /*return*/, makeTransferable(res)];
149
- }
150
- });
151
- });
152
- };
153
- }
154
- if (typeof impl === 'function') {
155
- return expose(wrap(impl));
156
- }
157
- else {
158
- var mod = Object.entries(impl).reduce(function (mod, _a) {
159
- var key = _a[0], fn = _a[1];
160
- mod[key] = wrap(fn);
161
- return mod;
162
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
163
- }, {});
164
- return expose(mod);
165
- }
124
+ /**
125
+ * Defines a web worker implementation. This function wraps the `expose` method
126
+ * of Threads and handles automatic conversion of Transferable types.
127
+ *
128
+ * @param impl The worker implementation.
129
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable
130
+ */
131
+ function defineWorker(impl, _a) {
132
+ var _b = _a === void 0 ? {} : _a, _c = _b.expose, expose = _c === void 0 ? threads.expose : _c;
133
+ function wrap(f) {
134
+ var _this = this;
135
+ return function () {
136
+ var args = [];
137
+ for (var _i = 0; _i < arguments.length; _i++) {
138
+ args[_i] = arguments[_i];
139
+ }
140
+ return tslib.__awaiter(_this, void 0, void 0, function () {
141
+ var res;
142
+ return tslib.__generator(this, function (_a) {
143
+ switch (_a.label) {
144
+ case 0: return [4 /*yield*/, f.apply(void 0, args)];
145
+ case 1:
146
+ res = _a.sent();
147
+ return [2 /*return*/, makeTransferable(res)];
148
+ }
149
+ });
150
+ });
151
+ };
152
+ }
153
+ if (typeof impl === 'function') {
154
+ return expose(wrap(impl));
155
+ }
156
+ else {
157
+ var mod = Object.entries(impl).reduce(function (mod, _a) {
158
+ var key = _a[0], fn = _a[1];
159
+ mod[key] = wrap(fn);
160
+ return mod;
161
+ }, {});
162
+ return expose(mod);
163
+ }
166
164
  }
167
165
 
168
166
  exports.TerminateController = TerminateController;
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.cjs.js","sources":["../src/terminate.ts","../src/globalThis.ts","../src/transferable.ts","../src/worker.ts"],"sourcesContent":["import { Pool, Thread } from 'threads';\n\ntype WorkerPoolLike = Pick<ReturnType<typeof Pool>, 'terminate'>;\n\nexport class TerminateController {\n private threads: Thread[] = [];\n private pools: WorkerPoolLike[] = [];\n\n public addThread(thread: Thread): void {\n this.threads.push(thread);\n }\n\n public addPool(pool: WorkerPoolLike): void {\n this.pools.push(pool);\n }\n\n public async terminate(force = false): Promise<void> {\n await Promise.all([\n ...this.threads.map((t) => Thread.terminate(t)),\n ...this.pools.map((p) => p.terminate(force)),\n ]);\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getGlobal(): any {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n } else if (typeof self !== 'undefined') {\n return self;\n } else if (typeof window !== 'undefined') {\n return window;\n } else if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n\nexport default getGlobal();\n","import globalThis from './globalThis';\nimport { Transfer } from 'threads';\n\ntype TypedArray =\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\nfunction instanceOf(obj: unknown, className: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Type = globalThis[className];\n return Type != null && obj instanceof Type;\n}\n\nfunction isTransferable(obj: unknown): obj is Transferable {\n return (\n instanceOf(obj, 'ArrayBuffer') ||\n instanceOf(obj, 'MessagePort') ||\n instanceOf(obj, 'ImageBitmap') ||\n instanceOf(obj, 'OffscreenCanvas')\n );\n}\n\nfunction isTypedArray(obj: unknown): obj is TypedArray {\n return (\n instanceOf(obj, 'Int8Array') ||\n instanceOf(obj, 'Uint8Array') ||\n instanceOf(obj, 'Uint8ClampedArray') ||\n instanceOf(obj, 'Int16Array') ||\n instanceOf(obj, 'Uint16Array') ||\n instanceOf(obj, 'Int32Array') ||\n instanceOf(obj, 'Uint32Array') ||\n instanceOf(obj, 'Float32Array') ||\n instanceOf(obj, 'Float64Array') ||\n instanceOf(obj, 'BigInt64Array') ||\n instanceOf(obj, 'BigUint64Array')\n );\n}\n\n/**\n * A function that will recursively inspect an object and return a Threads\n * `Transfer` that contains all the `Transferable`s in the given object.\n *\n * @param obj The object to make transferable.\n * @returns A `Transfer` from Threads.\n */\nexport function makeTransferable<T>(obj: T): ReturnType<typeof Transfer> | T {\n if (isTransferable(obj)) {\n return Transfer(obj);\n } else if (obj != null && typeof obj === 'object') {\n const transferables = findTransferables(obj);\n return Transfer(obj, transferables);\n } else {\n return obj;\n }\n}\n\nfunction findTransferables<T>(obj: T): Transferable[] {\n if (isTransferable(obj)) {\n return [obj];\n } else if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n const result: Transferable[] = [];\n obj.forEach((o) => result.push(...findTransferables(o)));\n return result;\n } else if (isTypedArray(obj)) {\n return [obj.buffer];\n } else if (obj != null) {\n return Object.values(obj).reduce((acc, value) => {\n acc.push(...findTransferables(value));\n return acc;\n }, []);\n } else {\n return [];\n }\n } else {\n return [];\n }\n}\n","import { expose as threadsExpose } from 'threads';\nimport { WorkerFunction, WorkerModule } from 'threads/dist/types/worker';\nimport { makeTransferable } from './transferable';\n\ninterface DefineWorkerOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expose?: (f: WorkerFunction | WorkerModule<any>) => void;\n}\n\n/**\n * Defines a web worker implementation. This function wraps the `expose` method\n * of Threads and handles automatic conversion of Transferable types.\n *\n * @param impl The worker implementation.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function defineWorker(\n impl: WorkerFunction | WorkerModule<any>,\n { expose = threadsExpose }: DefineWorkerOptions = {}\n): void {\n function wrap(f: WorkerFunction): WorkerFunction {\n return async (...args: unknown[]) => {\n const res = await f(...args);\n return makeTransferable(res);\n };\n }\n\n if (typeof impl === 'function') {\n return expose(wrap(impl));\n } else {\n const mod = Object.entries(impl).reduce((mod, [key, fn]) => {\n mod[key] = wrap(fn);\n return mod;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, {} as WorkerModule<any>);\n return expose(mod);\n }\n}\n"],"names":["Thread","globalThis","Transfer","threadsExpose"],"mappings":"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"}
1
+ {"version":3,"file":"bundle.cjs.js","sources":["../src/terminate.ts","../src/globalThis.ts","../src/transferable.ts","../src/worker.ts"],"sourcesContent":["import { Thread } from 'threads';\n\ninterface WorkerPoolLike {\n terminate(force?: boolean): Promise<void>;\n}\n\nexport class TerminateController {\n private threads: Thread[] = [];\n private pools: WorkerPoolLike[] = [];\n\n public addThread(thread: Thread): void {\n this.threads.push(thread);\n }\n\n public addPool(pool: WorkerPoolLike): void {\n this.pools.push(pool);\n }\n\n public async terminate(force = false): Promise<void> {\n await Promise.all([\n ...this.threads.map((t) => Thread.terminate(t)),\n ...this.pools.map((p) => p.terminate(force)),\n ]);\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getGlobal(): any {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n } else if (typeof self !== 'undefined') {\n return self;\n } else if (typeof window !== 'undefined') {\n return window;\n } else if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n\nexport default getGlobal();\n","import { Transfer } from 'threads';\n\nimport globalThis from './globalThis';\n\ntype TypedArray =\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\nfunction instanceOf(obj: unknown, className: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Type = globalThis[className];\n return Type != null && obj instanceof Type;\n}\n\nfunction isTransferable(obj: unknown): obj is Transferable {\n return (\n instanceOf(obj, 'ArrayBuffer') ||\n instanceOf(obj, 'MessagePort') ||\n instanceOf(obj, 'ImageBitmap') ||\n instanceOf(obj, 'OffscreenCanvas')\n );\n}\n\nfunction isTypedArray(obj: unknown): obj is TypedArray {\n return (\n instanceOf(obj, 'Int8Array') ||\n instanceOf(obj, 'Uint8Array') ||\n instanceOf(obj, 'Uint8ClampedArray') ||\n instanceOf(obj, 'Int16Array') ||\n instanceOf(obj, 'Uint16Array') ||\n instanceOf(obj, 'Int32Array') ||\n instanceOf(obj, 'Uint32Array') ||\n instanceOf(obj, 'Float32Array') ||\n instanceOf(obj, 'Float64Array') ||\n instanceOf(obj, 'BigInt64Array') ||\n instanceOf(obj, 'BigUint64Array')\n );\n}\n\n/**\n * A function that will recursively inspect an object and return a Threads\n * `Transfer` that contains all the `Transferable`s in the given object.\n *\n * @param obj The object to make transferable.\n * @returns A `Transfer` from Threads.\n */\nexport function makeTransferable<T>(obj: T): ReturnType<typeof Transfer> | T {\n if (isTransferable(obj)) {\n return Transfer(obj);\n } else if (obj != null && typeof obj === 'object') {\n const transferables = findTransferables(obj);\n return Transfer(obj, transferables);\n } else {\n return obj;\n }\n}\n\nfunction findTransferables<T>(obj: T): Transferable[] {\n if (isTransferable(obj)) {\n return [obj];\n } else if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n const result: Transferable[] = [];\n obj.forEach((o) => result.push(...findTransferables(o)));\n return result;\n } else if (isTypedArray(obj)) {\n return [obj.buffer];\n } else if (obj != null) {\n return Object.values(obj).reduce((acc, value) => {\n acc.push(...findTransferables(value));\n return acc;\n }, []);\n } else {\n return [];\n }\n } else {\n return [];\n }\n}\n","import { expose as threadsExpose } from 'threads';\nimport { WorkerFunction, WorkerModule } from 'threads/dist/types/worker';\n\nimport { makeTransferable } from './transferable';\n\ninterface DefineWorkerOptions {\n expose?: (f: WorkerFunction | WorkerModule<string>) => void;\n}\n\n/**\n * Defines a web worker implementation. This function wraps the `expose` method\n * of Threads and handles automatic conversion of Transferable types.\n *\n * @param impl The worker implementation.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n */\nexport function defineWorker(\n impl: WorkerFunction | WorkerModule<string>,\n { expose = threadsExpose }: DefineWorkerOptions = {}\n): void {\n function wrap(f: WorkerFunction): WorkerFunction {\n return async (...args: unknown[]) => {\n const res = await f(...args);\n return makeTransferable(res);\n };\n }\n\n if (typeof impl === 'function') {\n return expose(wrap(impl));\n } else {\n const mod = Object.entries(impl).reduce((mod, [key, fn]) => {\n mod[key] = wrap(fn);\n return mod;\n }, {} as WorkerModule<string>);\n return expose(mod);\n }\n}\n"],"names":["__spreadArray","Thread","globalThis","Transfer","threadsExpose"],"mappings":"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"}
@@ -1,164 +1,162 @@
1
1
  import { __awaiter, __generator, __spreadArray } from 'tslib';
2
2
  import { Thread, Transfer, expose } from 'threads';
3
3
 
4
- var TerminateController = /** @class */ (function () {
5
- function TerminateController() {
6
- this.threads = [];
7
- this.pools = [];
8
- }
9
- TerminateController.prototype.addThread = function (thread) {
10
- this.threads.push(thread);
11
- };
12
- TerminateController.prototype.addPool = function (pool) {
13
- this.pools.push(pool);
14
- };
15
- TerminateController.prototype.terminate = function (force) {
16
- if (force === void 0) { force = false; }
17
- return __awaiter(this, void 0, void 0, function () {
18
- return __generator(this, function (_a) {
19
- switch (_a.label) {
20
- case 0: return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray([], this.threads.map(function (t) { return Thread.terminate(t); })), this.pools.map(function (p) { return p.terminate(force); })))];
21
- case 1:
22
- _a.sent();
23
- return [2 /*return*/];
24
- }
25
- });
26
- });
27
- };
28
- return TerminateController;
4
+ var TerminateController = /** @class */ (function () {
5
+ function TerminateController() {
6
+ this.threads = [];
7
+ this.pools = [];
8
+ }
9
+ TerminateController.prototype.addThread = function (thread) {
10
+ this.threads.push(thread);
11
+ };
12
+ TerminateController.prototype.addPool = function (pool) {
13
+ this.pools.push(pool);
14
+ };
15
+ TerminateController.prototype.terminate = function () {
16
+ return __awaiter(this, arguments, void 0, function (force) {
17
+ if (force === void 0) { force = false; }
18
+ return __generator(this, function (_a) {
19
+ switch (_a.label) {
20
+ case 0: return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray([], this.threads.map(function (t) { return Thread.terminate(t); }), true), this.pools.map(function (p) { return p.terminate(force); }), true))];
21
+ case 1:
22
+ _a.sent();
23
+ return [2 /*return*/];
24
+ }
25
+ });
26
+ });
27
+ };
28
+ return TerminateController;
29
29
  }());
30
30
 
31
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
- function getGlobal() {
33
- if (typeof globalThis !== 'undefined') {
34
- return globalThis;
35
- }
36
- else if (typeof self !== 'undefined') {
37
- return self;
38
- }
39
- else if (typeof window !== 'undefined') {
40
- return window;
41
- }
42
- else if (typeof global !== 'undefined') {
43
- return global;
44
- }
45
- throw new Error('unable to locate global object');
46
- }
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ function getGlobal() {
33
+ if (typeof globalThis !== 'undefined') {
34
+ return globalThis;
35
+ }
36
+ else if (typeof self !== 'undefined') {
37
+ return self;
38
+ }
39
+ else if (typeof window !== 'undefined') {
40
+ return window;
41
+ }
42
+ else if (typeof global !== 'undefined') {
43
+ return global;
44
+ }
45
+ throw new Error('unable to locate global object');
46
+ }
47
47
  var globalThis$1 = getGlobal();
48
48
 
49
- function instanceOf(obj, className) {
50
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
- var Type = globalThis$1[className];
52
- return Type != null && obj instanceof Type;
53
- }
54
- function isTransferable(obj) {
55
- return (instanceOf(obj, 'ArrayBuffer') ||
56
- instanceOf(obj, 'MessagePort') ||
57
- instanceOf(obj, 'ImageBitmap') ||
58
- instanceOf(obj, 'OffscreenCanvas'));
59
- }
60
- function isTypedArray(obj) {
61
- return (instanceOf(obj, 'Int8Array') ||
62
- instanceOf(obj, 'Uint8Array') ||
63
- instanceOf(obj, 'Uint8ClampedArray') ||
64
- instanceOf(obj, 'Int16Array') ||
65
- instanceOf(obj, 'Uint16Array') ||
66
- instanceOf(obj, 'Int32Array') ||
67
- instanceOf(obj, 'Uint32Array') ||
68
- instanceOf(obj, 'Float32Array') ||
69
- instanceOf(obj, 'Float64Array') ||
70
- instanceOf(obj, 'BigInt64Array') ||
71
- instanceOf(obj, 'BigUint64Array'));
72
- }
73
- /**
74
- * A function that will recursively inspect an object and return a Threads
75
- * `Transfer` that contains all the `Transferable`s in the given object.
76
- *
77
- * @param obj The object to make transferable.
78
- * @returns A `Transfer` from Threads.
79
- */
80
- function makeTransferable(obj) {
81
- if (isTransferable(obj)) {
82
- return Transfer(obj);
83
- }
84
- else if (obj != null && typeof obj === 'object') {
85
- var transferables = findTransferables(obj);
86
- return Transfer(obj, transferables);
87
- }
88
- else {
89
- return obj;
90
- }
91
- }
92
- function findTransferables(obj) {
93
- if (isTransferable(obj)) {
94
- return [obj];
95
- }
96
- else if (typeof obj === 'object') {
97
- if (Array.isArray(obj)) {
98
- var result_1 = [];
99
- obj.forEach(function (o) { return result_1.push.apply(result_1, findTransferables(o)); });
100
- return result_1;
101
- }
102
- else if (isTypedArray(obj)) {
103
- return [obj.buffer];
104
- }
105
- else if (obj != null) {
106
- return Object.values(obj).reduce(function (acc, value) {
107
- acc.push.apply(acc, findTransferables(value));
108
- return acc;
109
- }, []);
110
- }
111
- else {
112
- return [];
113
- }
114
- }
115
- else {
116
- return [];
117
- }
49
+ function instanceOf(obj, className) {
50
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
+ var Type = globalThis$1[className];
52
+ return Type != null && obj instanceof Type;
53
+ }
54
+ function isTransferable(obj) {
55
+ return (instanceOf(obj, 'ArrayBuffer') ||
56
+ instanceOf(obj, 'MessagePort') ||
57
+ instanceOf(obj, 'ImageBitmap') ||
58
+ instanceOf(obj, 'OffscreenCanvas'));
59
+ }
60
+ function isTypedArray(obj) {
61
+ return (instanceOf(obj, 'Int8Array') ||
62
+ instanceOf(obj, 'Uint8Array') ||
63
+ instanceOf(obj, 'Uint8ClampedArray') ||
64
+ instanceOf(obj, 'Int16Array') ||
65
+ instanceOf(obj, 'Uint16Array') ||
66
+ instanceOf(obj, 'Int32Array') ||
67
+ instanceOf(obj, 'Uint32Array') ||
68
+ instanceOf(obj, 'Float32Array') ||
69
+ instanceOf(obj, 'Float64Array') ||
70
+ instanceOf(obj, 'BigInt64Array') ||
71
+ instanceOf(obj, 'BigUint64Array'));
72
+ }
73
+ /**
74
+ * A function that will recursively inspect an object and return a Threads
75
+ * `Transfer` that contains all the `Transferable`s in the given object.
76
+ *
77
+ * @param obj The object to make transferable.
78
+ * @returns A `Transfer` from Threads.
79
+ */
80
+ function makeTransferable(obj) {
81
+ if (isTransferable(obj)) {
82
+ return Transfer(obj);
83
+ }
84
+ else if (obj != null && typeof obj === 'object') {
85
+ var transferables = findTransferables(obj);
86
+ return Transfer(obj, transferables);
87
+ }
88
+ else {
89
+ return obj;
90
+ }
91
+ }
92
+ function findTransferables(obj) {
93
+ if (isTransferable(obj)) {
94
+ return [obj];
95
+ }
96
+ else if (typeof obj === 'object') {
97
+ if (Array.isArray(obj)) {
98
+ var result_1 = [];
99
+ obj.forEach(function (o) { return result_1.push.apply(result_1, findTransferables(o)); });
100
+ return result_1;
101
+ }
102
+ else if (isTypedArray(obj)) {
103
+ return [obj.buffer];
104
+ }
105
+ else if (obj != null) {
106
+ return Object.values(obj).reduce(function (acc, value) {
107
+ acc.push.apply(acc, findTransferables(value));
108
+ return acc;
109
+ }, []);
110
+ }
111
+ else {
112
+ return [];
113
+ }
114
+ }
115
+ else {
116
+ return [];
117
+ }
118
118
  }
119
119
 
120
- /**
121
- * Defines a web worker implementation. This function wraps the `expose` method
122
- * of Threads and handles automatic conversion of Transferable types.
123
- *
124
- * @param impl The worker implementation.
125
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable
126
- */
127
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
128
- function defineWorker(impl, _a) {
129
- var _b = _a === void 0 ? {} : _a, _c = _b.expose, expose$1 = _c === void 0 ? expose : _c;
130
- function wrap(f) {
131
- var _this = this;
132
- return function () {
133
- var args = [];
134
- for (var _i = 0; _i < arguments.length; _i++) {
135
- args[_i] = arguments[_i];
136
- }
137
- return __awaiter(_this, void 0, void 0, function () {
138
- var res;
139
- return __generator(this, function (_a) {
140
- switch (_a.label) {
141
- case 0: return [4 /*yield*/, f.apply(void 0, args)];
142
- case 1:
143
- res = _a.sent();
144
- return [2 /*return*/, makeTransferable(res)];
145
- }
146
- });
147
- });
148
- };
149
- }
150
- if (typeof impl === 'function') {
151
- return expose$1(wrap(impl));
152
- }
153
- else {
154
- var mod = Object.entries(impl).reduce(function (mod, _a) {
155
- var key = _a[0], fn = _a[1];
156
- mod[key] = wrap(fn);
157
- return mod;
158
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
- }, {});
160
- return expose$1(mod);
161
- }
120
+ /**
121
+ * Defines a web worker implementation. This function wraps the `expose` method
122
+ * of Threads and handles automatic conversion of Transferable types.
123
+ *
124
+ * @param impl The worker implementation.
125
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable
126
+ */
127
+ function defineWorker(impl, _a) {
128
+ var _b = _a === void 0 ? {} : _a, _c = _b.expose, expose$1 = _c === void 0 ? expose : _c;
129
+ function wrap(f) {
130
+ var _this = this;
131
+ return function () {
132
+ var args = [];
133
+ for (var _i = 0; _i < arguments.length; _i++) {
134
+ args[_i] = arguments[_i];
135
+ }
136
+ return __awaiter(_this, void 0, void 0, function () {
137
+ var res;
138
+ return __generator(this, function (_a) {
139
+ switch (_a.label) {
140
+ case 0: return [4 /*yield*/, f.apply(void 0, args)];
141
+ case 1:
142
+ res = _a.sent();
143
+ return [2 /*return*/, makeTransferable(res)];
144
+ }
145
+ });
146
+ });
147
+ };
148
+ }
149
+ if (typeof impl === 'function') {
150
+ return expose$1(wrap(impl));
151
+ }
152
+ else {
153
+ var mod = Object.entries(impl).reduce(function (mod, _a) {
154
+ var key = _a[0], fn = _a[1];
155
+ mod[key] = wrap(fn);
156
+ return mod;
157
+ }, {});
158
+ return expose$1(mod);
159
+ }
162
160
  }
163
161
 
164
162
  export { TerminateController, defineWorker, makeTransferable };
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.esm.js","sources":["../src/terminate.ts","../src/globalThis.ts","../src/transferable.ts","../src/worker.ts"],"sourcesContent":["import { Pool, Thread } from 'threads';\n\ntype WorkerPoolLike = Pick<ReturnType<typeof Pool>, 'terminate'>;\n\nexport class TerminateController {\n private threads: Thread[] = [];\n private pools: WorkerPoolLike[] = [];\n\n public addThread(thread: Thread): void {\n this.threads.push(thread);\n }\n\n public addPool(pool: WorkerPoolLike): void {\n this.pools.push(pool);\n }\n\n public async terminate(force = false): Promise<void> {\n await Promise.all([\n ...this.threads.map((t) => Thread.terminate(t)),\n ...this.pools.map((p) => p.terminate(force)),\n ]);\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getGlobal(): any {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n } else if (typeof self !== 'undefined') {\n return self;\n } else if (typeof window !== 'undefined') {\n return window;\n } else if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n\nexport default getGlobal();\n","import globalThis from './globalThis';\nimport { Transfer } from 'threads';\n\ntype TypedArray =\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\nfunction instanceOf(obj: unknown, className: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Type = globalThis[className];\n return Type != null && obj instanceof Type;\n}\n\nfunction isTransferable(obj: unknown): obj is Transferable {\n return (\n instanceOf(obj, 'ArrayBuffer') ||\n instanceOf(obj, 'MessagePort') ||\n instanceOf(obj, 'ImageBitmap') ||\n instanceOf(obj, 'OffscreenCanvas')\n );\n}\n\nfunction isTypedArray(obj: unknown): obj is TypedArray {\n return (\n instanceOf(obj, 'Int8Array') ||\n instanceOf(obj, 'Uint8Array') ||\n instanceOf(obj, 'Uint8ClampedArray') ||\n instanceOf(obj, 'Int16Array') ||\n instanceOf(obj, 'Uint16Array') ||\n instanceOf(obj, 'Int32Array') ||\n instanceOf(obj, 'Uint32Array') ||\n instanceOf(obj, 'Float32Array') ||\n instanceOf(obj, 'Float64Array') ||\n instanceOf(obj, 'BigInt64Array') ||\n instanceOf(obj, 'BigUint64Array')\n );\n}\n\n/**\n * A function that will recursively inspect an object and return a Threads\n * `Transfer` that contains all the `Transferable`s in the given object.\n *\n * @param obj The object to make transferable.\n * @returns A `Transfer` from Threads.\n */\nexport function makeTransferable<T>(obj: T): ReturnType<typeof Transfer> | T {\n if (isTransferable(obj)) {\n return Transfer(obj);\n } else if (obj != null && typeof obj === 'object') {\n const transferables = findTransferables(obj);\n return Transfer(obj, transferables);\n } else {\n return obj;\n }\n}\n\nfunction findTransferables<T>(obj: T): Transferable[] {\n if (isTransferable(obj)) {\n return [obj];\n } else if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n const result: Transferable[] = [];\n obj.forEach((o) => result.push(...findTransferables(o)));\n return result;\n } else if (isTypedArray(obj)) {\n return [obj.buffer];\n } else if (obj != null) {\n return Object.values(obj).reduce((acc, value) => {\n acc.push(...findTransferables(value));\n return acc;\n }, []);\n } else {\n return [];\n }\n } else {\n return [];\n }\n}\n","import { expose as threadsExpose } from 'threads';\nimport { WorkerFunction, WorkerModule } from 'threads/dist/types/worker';\nimport { makeTransferable } from './transferable';\n\ninterface DefineWorkerOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expose?: (f: WorkerFunction | WorkerModule<any>) => void;\n}\n\n/**\n * Defines a web worker implementation. This function wraps the `expose` method\n * of Threads and handles automatic conversion of Transferable types.\n *\n * @param impl The worker implementation.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function defineWorker(\n impl: WorkerFunction | WorkerModule<any>,\n { expose = threadsExpose }: DefineWorkerOptions = {}\n): void {\n function wrap(f: WorkerFunction): WorkerFunction {\n return async (...args: unknown[]) => {\n const res = await f(...args);\n return makeTransferable(res);\n };\n }\n\n if (typeof impl === 'function') {\n return expose(wrap(impl));\n } else {\n const mod = Object.entries(impl).reduce((mod, [key, fn]) => {\n mod[key] = wrap(fn);\n return mod;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, {} as WorkerModule<any>);\n return expose(mod);\n }\n}\n"],"names":["globalThis","expose","threadsExpose"],"mappings":"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"}
1
+ {"version":3,"file":"bundle.esm.js","sources":["../src/terminate.ts","../src/globalThis.ts","../src/transferable.ts","../src/worker.ts"],"sourcesContent":["import { Thread } from 'threads';\n\ninterface WorkerPoolLike {\n terminate(force?: boolean): Promise<void>;\n}\n\nexport class TerminateController {\n private threads: Thread[] = [];\n private pools: WorkerPoolLike[] = [];\n\n public addThread(thread: Thread): void {\n this.threads.push(thread);\n }\n\n public addPool(pool: WorkerPoolLike): void {\n this.pools.push(pool);\n }\n\n public async terminate(force = false): Promise<void> {\n await Promise.all([\n ...this.threads.map((t) => Thread.terminate(t)),\n ...this.pools.map((p) => p.terminate(force)),\n ]);\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getGlobal(): any {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n } else if (typeof self !== 'undefined') {\n return self;\n } else if (typeof window !== 'undefined') {\n return window;\n } else if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n\nexport default getGlobal();\n","import { Transfer } from 'threads';\n\nimport globalThis from './globalThis';\n\ntype TypedArray =\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\nfunction instanceOf(obj: unknown, className: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Type = globalThis[className];\n return Type != null && obj instanceof Type;\n}\n\nfunction isTransferable(obj: unknown): obj is Transferable {\n return (\n instanceOf(obj, 'ArrayBuffer') ||\n instanceOf(obj, 'MessagePort') ||\n instanceOf(obj, 'ImageBitmap') ||\n instanceOf(obj, 'OffscreenCanvas')\n );\n}\n\nfunction isTypedArray(obj: unknown): obj is TypedArray {\n return (\n instanceOf(obj, 'Int8Array') ||\n instanceOf(obj, 'Uint8Array') ||\n instanceOf(obj, 'Uint8ClampedArray') ||\n instanceOf(obj, 'Int16Array') ||\n instanceOf(obj, 'Uint16Array') ||\n instanceOf(obj, 'Int32Array') ||\n instanceOf(obj, 'Uint32Array') ||\n instanceOf(obj, 'Float32Array') ||\n instanceOf(obj, 'Float64Array') ||\n instanceOf(obj, 'BigInt64Array') ||\n instanceOf(obj, 'BigUint64Array')\n );\n}\n\n/**\n * A function that will recursively inspect an object and return a Threads\n * `Transfer` that contains all the `Transferable`s in the given object.\n *\n * @param obj The object to make transferable.\n * @returns A `Transfer` from Threads.\n */\nexport function makeTransferable<T>(obj: T): ReturnType<typeof Transfer> | T {\n if (isTransferable(obj)) {\n return Transfer(obj);\n } else if (obj != null && typeof obj === 'object') {\n const transferables = findTransferables(obj);\n return Transfer(obj, transferables);\n } else {\n return obj;\n }\n}\n\nfunction findTransferables<T>(obj: T): Transferable[] {\n if (isTransferable(obj)) {\n return [obj];\n } else if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n const result: Transferable[] = [];\n obj.forEach((o) => result.push(...findTransferables(o)));\n return result;\n } else if (isTypedArray(obj)) {\n return [obj.buffer];\n } else if (obj != null) {\n return Object.values(obj).reduce((acc, value) => {\n acc.push(...findTransferables(value));\n return acc;\n }, []);\n } else {\n return [];\n }\n } else {\n return [];\n }\n}\n","import { expose as threadsExpose } from 'threads';\nimport { WorkerFunction, WorkerModule } from 'threads/dist/types/worker';\n\nimport { makeTransferable } from './transferable';\n\ninterface DefineWorkerOptions {\n expose?: (f: WorkerFunction | WorkerModule<string>) => void;\n}\n\n/**\n * Defines a web worker implementation. This function wraps the `expose` method\n * of Threads and handles automatic conversion of Transferable types.\n *\n * @param impl The worker implementation.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n */\nexport function defineWorker(\n impl: WorkerFunction | WorkerModule<string>,\n { expose = threadsExpose }: DefineWorkerOptions = {}\n): void {\n function wrap(f: WorkerFunction): WorkerFunction {\n return async (...args: unknown[]) => {\n const res = await f(...args);\n return makeTransferable(res);\n };\n }\n\n if (typeof impl === 'function') {\n return expose(wrap(impl));\n } else {\n const mod = Object.entries(impl).reduce((mod, [key, fn]) => {\n mod[key] = wrap(fn);\n return mod;\n }, {} as WorkerModule<string>);\n return expose(mod);\n }\n}\n"],"names":["globalThis","expose","threadsExpose"],"mappings":"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"}
@@ -47,7 +47,7 @@ declare module 'worker:*' {
47
47
  * @param allowResolvingImmediately Set to `true` to resolve immediately if
48
48
  * task queue is currently empty.
49
49
  */
50
- completed(allowResolvingImmediately?: boolean): Promise<any>;
50
+ completed(allowResolvingImmediately?: boolean): Promise<unknown>;
51
51
  /**
52
52
  * Returns a promise that resolves once the task queue is emptied. Failing
53
53
  * tasks will not cause the promise to be rejected.
@@ -129,6 +129,5 @@ declare module 'worker:*' {
129
129
  * Loads the worker bundle and returns a `WorkerModule` that contains methods
130
130
  * for spawning a web worker or creating worker pools.
131
131
  */
132
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
133
- export function loadWorker<T = any>(): Promise<WorkerModule<T>>;
132
+ export function loadWorker<T = unknown>(): Promise<WorkerModule<T>>;
134
133
  }
@@ -1,2 +1,2 @@
1
- declare const _default: any;
2
- export default _default;
1
+ declare const _default: any;
2
+ export default _default;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference path="extensions.d.ts" />
2
- export * from './terminate';
3
- export * from './transferable';
4
- export * from './worker';
1
+ export * from './terminate';
2
+ export * from './transferable';
3
+ export * from './worker';
@@ -1,10 +1,12 @@
1
- import { Pool, Thread } from 'threads';
2
- declare type WorkerPoolLike = Pick<ReturnType<typeof Pool>, 'terminate'>;
3
- export declare class TerminateController {
4
- private threads;
5
- private pools;
6
- addThread(thread: Thread): void;
7
- addPool(pool: WorkerPoolLike): void;
8
- terminate(force?: boolean): Promise<void>;
9
- }
10
- export {};
1
+ import { Thread } from 'threads';
2
+ interface WorkerPoolLike {
3
+ terminate(force?: boolean): Promise<void>;
4
+ }
5
+ export declare class TerminateController {
6
+ private threads;
7
+ private pools;
8
+ addThread(thread: Thread): void;
9
+ addPool(pool: WorkerPoolLike): void;
10
+ terminate(force?: boolean): Promise<void>;
11
+ }
12
+ export {};
@@ -1,9 +1,9 @@
1
- import { Transfer } from 'threads';
2
- /**
3
- * A function that will recursively inspect an object and return a Threads
4
- * `Transfer` that contains all the `Transferable`s in the given object.
5
- *
6
- * @param obj The object to make transferable.
7
- * @returns A `Transfer` from Threads.
8
- */
9
- export declare function makeTransferable<T>(obj: T): ReturnType<typeof Transfer> | T;
1
+ import { Transfer } from 'threads';
2
+ /**
3
+ * A function that will recursively inspect an object and return a Threads
4
+ * `Transfer` that contains all the `Transferable`s in the given object.
5
+ *
6
+ * @param obj The object to make transferable.
7
+ * @returns A `Transfer` from Threads.
8
+ */
9
+ export declare function makeTransferable<T>(obj: T): ReturnType<typeof Transfer> | T;
package/dist/worker.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { WorkerFunction, WorkerModule } from 'threads/dist/types/worker';
2
- interface DefineWorkerOptions {
3
- expose?: (f: WorkerFunction | WorkerModule<any>) => void;
4
- }
5
- /**
6
- * Defines a web worker implementation. This function wraps the `expose` method
7
- * of Threads and handles automatic conversion of Transferable types.
8
- *
9
- * @param impl The worker implementation.
10
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable
11
- */
12
- export declare function defineWorker(impl: WorkerFunction | WorkerModule<any>, { expose }?: DefineWorkerOptions): void;
13
- export {};
1
+ import { WorkerFunction, WorkerModule } from 'threads/dist/types/worker';
2
+ interface DefineWorkerOptions {
3
+ expose?: (f: WorkerFunction | WorkerModule<string>) => void;
4
+ }
5
+ /**
6
+ * Defines a web worker implementation. This function wraps the `expose` method
7
+ * of Threads and handles automatic conversion of Transferable types.
8
+ *
9
+ * @param impl The worker implementation.
10
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Transferable
11
+ */
12
+ export declare function defineWorker(impl: WorkerFunction | WorkerModule<string>, { expose }?: DefineWorkerOptions): void;
13
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertexvis/web-workers",
3
- "version": "0.1.1-canary.9",
3
+ "version": "0.2.1-canary.0",
4
4
  "license": "MIT",
5
5
  "description": "A wrapper around ThreadsJS to make bundling and using web workers even simpler.",
6
6
  "keywords": [
@@ -41,13 +41,14 @@
41
41
  "test:coverage": "yarn test --coverage"
42
42
  },
43
43
  "devDependencies": {
44
- "jest": "^27.0.6",
45
- "threads": "^1.6.5",
46
- "tslib": "^2.3.0"
44
+ "jest": "^29.7.0",
45
+ "jest-environment-jsdom": "^29.7.0",
46
+ "threads": "^1.7.0",
47
+ "tslib": "^2.8.1"
47
48
  },
48
49
  "peerDependencies": {
49
50
  "threads": "^1",
50
51
  "tslib": "^2"
51
52
  },
52
- "gitHead": "329d3d3e0cc185bfdb3134c20f6b15211a505fa6"
53
+ "gitHead": "f7f90b0fdb430ebbb4b3f2da819a30be1b5c2f04"
53
54
  }