Bump packages to fix linter

This commit is contained in:
Henry Mercer 2023-01-18 20:50:03 +00:00
parent ed9506bbaf
commit 0a11e3fdd9
6063 changed files with 378752 additions and 306784 deletions

View file

@ -156,7 +156,7 @@ function broadcastMessage(data) {
}
async function loadFactory() {
const {default: factory} = await import(workerData.filename); // eslint-disable-line node/no-unsupported-features/es-syntax
const {default: factory} = await import(workerData.filename);
return factory;
}
@ -166,7 +166,8 @@ let signalAvailable = () => {
};
let fatal;
loadFactory(workerData.filename).then(factory => {
try {
const factory = await loadFactory(workerData.filename);
if (typeof factory !== 'function') {
throw new TypeError(`Missing default factory function export for shared worker plugin at ${workerData.filename}`);
}
@ -236,14 +237,12 @@ loadFactory(workerData.filename).then(factory => {
};
},
});
}).catch(error => {
if (fatal === undefined) {
fatal = error;
}
}).finally(() => {
} catch (error) {
fatal = fatal ?? error;
} finally {
if (fatal !== undefined) {
process.nextTick(() => {
throw fatal;
});
}
});
}

View file

@ -49,35 +49,54 @@ function launchWorker(filename, initialData) {
}
export async function observeWorkerProcess(fork, runStatus) {
let registrationCount = 0;
let signalDeregistered;
const deregistered = new Promise(resolve => {
signalDeregistered = resolve;
let signalDone;
const done = new Promise(resolve => {
signalDone = () => {
resolve();
};
});
fork.promise.finally(() => {
if (registrationCount === 0) {
signalDeregistered();
const activeInstances = new Set();
const removeInstance = instance => {
instance.worker.unref();
activeInstances.delete(instance);
if (activeInstances.size === 0) {
signalDone();
}
};
const removeAllInstances = () => {
if (activeInstances.size === 0) {
signalDone();
return;
}
for (const instance of activeInstances) {
removeInstance(instance);
}
};
fork.promise.finally(() => {
removeAllInstances();
});
fork.onConnectSharedWorker(async ({filename, initialData, port, signalError}) => {
const launched = launchWorker(filename, initialData);
activeInstances.add(launched);
const handleWorkerMessage = async message => {
if (message.type === 'deregistered-test-worker' && message.id === fork.threadId) {
launched.worker.off('message', handleWorkerMessage);
registrationCount--;
if (registrationCount === 0) {
signalDeregistered();
}
removeInstance(launched);
}
};
launched.statePromises.error.then(error => {
signalDeregistered();
launched.worker.off('message', handleWorkerMessage);
removeAllInstances();
runStatus.emitStateChange({type: 'shared-worker-error', err: serializeError('Shared worker error', true, error)});
signalError();
});
@ -85,8 +104,6 @@ export async function observeWorkerProcess(fork, runStatus) {
try {
await launched.statePromises.available;
registrationCount++;
port.postMessage({type: 'ready'});
launched.worker.postMessage({
@ -104,15 +121,8 @@ export async function observeWorkerProcess(fork, runStatus) {
});
launched.worker.on('message', handleWorkerMessage);
} catch {
return;
} finally {
// Attaching listeners has the side-effect of referencing the worker.
// Explicitly unreference it now so it does not prevent the main process
// from exiting.
launched.worker.unref();
}
} catch {}
});
return deregistered;
return done;
}