delphirtl
Version:
RTL functions from Delphi
38 lines • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.workerData = exports.parentPort = exports.Worker = exports.isMainThread = void 0;
exports.runInThread = runInThread;
const worker_threads_1 = require("worker_threads");
/**
* Runs a function in a thread
*
* @template T
* @param {() => T} fn The function to run in a thread
* @returns {Promise<T>}
* @category Threads
*/
async function runInThread(fn) {
return new Promise((resolve, reject) => {
const worker = new worker_threads_1.Worker(__filename, {
workerData: { fn: fn.toString() }
});
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', (code) => {
if (code !== 0) {
reject(new Error(`Worker stopped with exit code ${code}`));
}
});
});
}
if (!worker_threads_1.isMainThread) {
const { workerData } = require('worker_threads');
const fn = new Function(`return (${workerData.fn})`)();
worker_threads_1.parentPort?.postMessage(fn());
}
var worker_threads_2 = require("worker_threads");
Object.defineProperty(exports, "isMainThread", { enumerable: true, get: function () { return worker_threads_2.isMainThread; } });
Object.defineProperty(exports, "Worker", { enumerable: true, get: function () { return worker_threads_2.Worker; } });
Object.defineProperty(exports, "parentPort", { enumerable: true, get: function () { return worker_threads_2.parentPort; } });
Object.defineProperty(exports, "workerData", { enumerable: true, get: function () { return worker_threads_2.workerData; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGhyZWFkdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOENJLGtDQUFXO0FBOUNmLG1EQUFrRTtBQUVsRTs7Ozs7OztHQU9HO0FBQ0gsS0FBSyxVQUFVLFdBQVcsQ0FBSSxFQUFXO0lBQ3JDLE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSx1QkFBTSxDQUFDLFVBQVUsRUFBRTtZQUNsQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1NBQ3BDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGlDQUFpQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsSUFBSSxDQUFDLDZCQUFZLEVBQUUsQ0FBQztJQUNoQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDakQsTUFBTSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsV0FBVyxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3ZELDJCQUFVLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQWtCRCxpREFBOEU7QUFBckUsOEdBQUEsWUFBWSxPQUFBO0FBQUUsd0dBQUEsTUFBTSxPQUFBO0FBQUUsNEdBQUEsVUFBVSxPQUFBO0FBQUUsNEdBQUEsVUFBVSxPQUFBIn0=