nice-threads
Advanced tools
Comparing version 0.8.0 to 0.9.0
@@ -13,5 +13,4 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { | ||
var _NiceThread_idCounter, _NiceThread_worker; | ||
import * as dntShim from "../_dnt.shims.js"; | ||
import { isNiceThreadError } from './error.js'; | ||
import { makeUrl } from './url.js'; | ||
import { getGlobalWorker } from './global_worker.js'; | ||
/** A promise-based web worker wrapper for easy thread creation at runtime. */ | ||
@@ -23,16 +22,4 @@ export class NiceThread { | ||
_NiceThread_worker.set(this, void 0); | ||
const script = 'const workerCache = new Map();\n' + | ||
'const worker = ' + worker.toString() + ';\n' + | ||
'addEventListener("message", async function (event) {\n' + | ||
' const workerData = event.data ?? { id: 0, args: [] };\n' + | ||
' const { id = 0, args = [] } = workerData\n' + | ||
' try{\n' + | ||
' const result = await worker(...args);\n' + | ||
' postMessage({ id, result });\n' + | ||
' } catch (error) {\n' + | ||
' postMessage({ id, __nice_thread_error: error })\n' + | ||
' }\n' + | ||
'})'; | ||
// deno-lint-ignore no-explicit-any | ||
__classPrivateFieldSet(this, _NiceThread_worker, new dntShim.Worker(makeUrl(script), { type: 'module' }), "f"); | ||
const Worker = getGlobalWorker(); | ||
__classPrivateFieldSet(this, _NiceThread_worker, new Worker(worker), "f"); | ||
} | ||
@@ -44,6 +31,2 @@ /** Calls the function on the thread and returns a promise which will contain the result. */ | ||
const promise = new Promise((resolve, reject) => { | ||
const onerror = (event) => { | ||
remove(); | ||
reject(event.error); | ||
}; | ||
const onmessage = (event) => { | ||
@@ -65,7 +48,5 @@ if (event.data?.id === id) { | ||
const remove = () => { | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").removeEventListener('error', onerror); | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").removeEventListener('message', onmessage); | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").removeEventListener('messageerror', onmessageerror); | ||
}; | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").addEventListener('error', onerror); | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").addEventListener('message', onmessage); | ||
@@ -72,0 +53,0 @@ __classPrivateFieldGet(this, _NiceThread_worker, "f").addEventListener('messageerror', onmessageerror); |
@@ -0,2 +1,4 @@ | ||
import "./_dnt.polyfills.js"; | ||
export { mock, unmock } from './lib/MockWorker.js'; | ||
export * from './lib/NiceThread.js'; | ||
export * from './lib/NiceThreadPool.js'; |
@@ -6,3 +6,3 @@ { | ||
"name": "nice-threads", | ||
"version": "0.8.0", | ||
"version": "0.9.0", | ||
"description": "A promise wrapper for JavaScript Workers, batteries", | ||
@@ -9,0 +9,0 @@ "keywords": [ |
@@ -9,3 +9,3 @@ # Nice Threads | ||
All executors and workers are of type `module`; use `await import` to dynamically import other modules at runtime. | ||
All executors and workers are of type `module`; use `await import` to dynamically import other modules at runtime. Using `require` will result in transpiling those statements to `await import`, so ensure that Node modules you want to use also provide ESM exports. This is also how TypeScript support "just works" when targeting `CommonJS` module syntax. | ||
@@ -36,2 +36,21 @@ Then, you can start individual threads and manage them yourself: | ||
Accurate debugging and testing is now supported with a module-wide API. | ||
```TypeScript | ||
// Example only. | ||
import { mock, unmock } from 'https://deno.land/x/nice_threads/mod.ts' // or `from 'nice-threads'` | ||
describe('My Test', () => { | ||
it('should give me real code coverage', async () => { | ||
mock() | ||
const niceThread = new NiceThread(async function (input) { | ||
return input | ||
}); | ||
const result = await niceThread.call(10); // Expected: '10' | ||
unmock() | ||
}) | ||
}) | ||
``` | ||
For complete details of the library, please see [the hosted documentation](https://deno.land/x/nice_threads/mod.ts). | ||
@@ -38,0 +57,0 @@ In-line code examples will be added before a major version release. |
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { | ||
@@ -39,5 +16,4 @@ if (kind === "m") throw new TypeError("Private method is not writable"); | ||
exports.NiceThread = void 0; | ||
const dntShim = __importStar(require("../_dnt.shims.js")); | ||
const error_js_1 = require("./error.js"); | ||
const url_js_1 = require("./url.js"); | ||
const global_worker_js_1 = require("./global_worker.js"); | ||
/** A promise-based web worker wrapper for easy thread creation at runtime. */ | ||
@@ -49,16 +25,4 @@ class NiceThread { | ||
_NiceThread_worker.set(this, void 0); | ||
const script = 'const workerCache = new Map();\n' + | ||
'const worker = ' + worker.toString() + ';\n' + | ||
'addEventListener("message", async function (event) {\n' + | ||
' const workerData = event.data ?? { id: 0, args: [] };\n' + | ||
' const { id = 0, args = [] } = workerData\n' + | ||
' try{\n' + | ||
' const result = await worker(...args);\n' + | ||
' postMessage({ id, result });\n' + | ||
' } catch (error) {\n' + | ||
' postMessage({ id, __nice_thread_error: error })\n' + | ||
' }\n' + | ||
'})'; | ||
// deno-lint-ignore no-explicit-any | ||
__classPrivateFieldSet(this, _NiceThread_worker, new dntShim.Worker((0, url_js_1.makeUrl)(script), { type: 'module' }), "f"); | ||
const Worker = (0, global_worker_js_1.getGlobalWorker)(); | ||
__classPrivateFieldSet(this, _NiceThread_worker, new Worker(worker), "f"); | ||
} | ||
@@ -70,6 +34,2 @@ /** Calls the function on the thread and returns a promise which will contain the result. */ | ||
const promise = new Promise((resolve, reject) => { | ||
const onerror = (event) => { | ||
remove(); | ||
reject(event.error); | ||
}; | ||
const onmessage = (event) => { | ||
@@ -91,7 +51,5 @@ if (event.data?.id === id) { | ||
const remove = () => { | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").removeEventListener('error', onerror); | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").removeEventListener('message', onmessage); | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").removeEventListener('messageerror', onmessageerror); | ||
}; | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").addEventListener('error', onerror); | ||
__classPrivateFieldGet(this, _NiceThread_worker, "f").addEventListener('message', onmessage); | ||
@@ -98,0 +56,0 @@ __classPrivateFieldGet(this, _NiceThread_worker, "f").addEventListener('messageerror', onmessageerror); |
@@ -17,3 +17,8 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.unmock = exports.mock = void 0; | ||
require("./_dnt.polyfills.js"); | ||
var MockWorker_js_1 = require("./lib/MockWorker.js"); | ||
Object.defineProperty(exports, "mock", { enumerable: true, get: function () { return MockWorker_js_1.mock; } }); | ||
Object.defineProperty(exports, "unmock", { enumerable: true, get: function () { return MockWorker_js_1.unmock; } }); | ||
__exportStar(require("./lib/NiceThread.js"), exports); | ||
__exportStar(require("./lib/NiceThreadPool.js"), exports); |
@@ -0,2 +1,4 @@ | ||
import "./_dnt.polyfills.js"; | ||
export { mock, unmock } from './lib/MockWorker.js'; | ||
export * from './lib/NiceThread.js'; | ||
export * from './lib/NiceThreadPool.js'; |
58887
38
1105
66