From 9311e4334a41b6d80ec998a65c63ef4dd6f170cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Goetz?= Date: Wed, 3 Jan 2024 11:24:04 +0100 Subject: [PATCH] Apply code review changes, fix linting errors --- src/index.ts | 31 ++++++++++--------------------- test/ts-runner.spec.ts | 2 +- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/src/index.ts b/src/index.ts index 0bc1d754b..ebe24acd9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -103,20 +103,10 @@ export function extractProperties(object?: T) { } } -export function createSyncFn( +export function createSyncFn, R = unknown>( workerPath: string, - bufferSize?: number, - timeout?: number, -): Syncify -export function createSyncFn( - workerPath: string, - options?: SynckitOptions, -): Syncify -export function createSyncFn>( - workerPath: string, - bufferSizeOrOptions?: SynckitOptions | number, - timeout?: number, -) { + timeoutOrOptions?: SynckitOptions | number, +): Syncify { if (!path.isAbsolute(workerPath)) { throw new Error('`workerPath` must be absolute') } @@ -124,19 +114,19 @@ export function createSyncFn>( const cachedSyncFn = syncFnCache.get(workerPath) if (cachedSyncFn) { - return cachedSyncFn + return cachedSyncFn as Syncify } const syncFn = startWorkerThread( workerPath, - /* istanbul ignore next */ typeof bufferSizeOrOptions === 'number' - ? { timeout } - : bufferSizeOrOptions, + /* istanbul ignore next */ typeof timeoutOrOptions === 'number' + ? { timeout: timeoutOrOptions } + : timeoutOrOptions, ) syncFnCache.set(workerPath, syncFn) - return syncFn + return syncFn as Syncify } const cjsRequire = @@ -510,13 +500,12 @@ function startWorkerThread>( const syncFn = (...args: Parameters): R => { const id = nextID++ - // Reset SharedArrayBuffer - Atomics.store(sharedBufferView, 0, 0) - const msg: MainToWorkerMessage> = { id, args } worker.postMessage(msg) const status = Atomics.wait(sharedBufferView, 0, 0, timeout) + // Reset SharedArrayBuffer for next call + Atomics.store(sharedBufferView, 0, 0) /* istanbul ignore if */ if (!['ok', 'not-equal'].includes(status)) { diff --git a/test/ts-runner.spec.ts b/test/ts-runner.spec.ts index cdb6601a8..089e40af5 100644 --- a/test/ts-runner.spec.ts +++ b/test/ts-runner.spec.ts @@ -134,8 +134,8 @@ test('unknown ts runner', async () => { const { createSyncFn } = await import('synckit') expect(() => - // @ts-expect-error createSyncFn(path.resolve(_dirname, 'worker.js'), { + // @ts-expect-error tsRunner: 'unknown', }), ).toThrowErrorMatchingInlineSnapshot(`"Unknown ts runner: unknown"`)