%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const { Worker } = require('worker_threads'); const { createHook } = require('async_hooks'); const { deepStrictEqual, strictEqual } = require('assert'); const m = new Map(); createHook({ init(asyncId, type, triggerAsyncId, resource) { if (['WORKER', 'MESSAGEPORT'].includes(type)) { m.set(asyncId, { type, resource }); } }, destroy(asyncId) { m.delete(asyncId); } }).enable(); function getActiveWorkerAndMessagePortTypes() { const activeWorkerAndMessagePortTypes = []; for (const asyncId of m.keys()) { const { type, resource } = m.get(asyncId); // Same logic as https://github.com/mafintosh/why-is-node-running/blob/24fb4c878753390a05d00959e6173d0d3c31fddd/index.js#L31-L32. if (typeof resource.hasRef !== 'function' || resource.hasRef() === true) { activeWorkerAndMessagePortTypes.push(type); } } return activeWorkerAndMessagePortTypes; } const w = new Worker('', { eval: true }); deepStrictEqual(getActiveWorkerAndMessagePortTypes(), ['WORKER']); w.unref(); deepStrictEqual(getActiveWorkerAndMessagePortTypes(), []); w.ref(); deepStrictEqual(getActiveWorkerAndMessagePortTypes(), ['WORKER', 'MESSAGEPORT']); w.on('exit', common.mustCall((exitCode) => { strictEqual(exitCode, 0); deepStrictEqual(getActiveWorkerAndMessagePortTypes(), ['WORKER']); setTimeout(common.mustCall(() => { deepStrictEqual(getActiveWorkerAndMessagePortTypes(), []); }), 0); }));