From a5c2d5beb7653b19a553230758ee5e93e13f8c5d Mon Sep 17 00:00:00 2001 From: Nikita Sivukhin Date: Wed, 24 Sep 2025 12:01:27 +0400 Subject: [PATCH] get rid of global module variable - otherwise there will be a race when both database-browser and sync-browser are used --- bindings/javascript/packages/browser-common/index.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/bindings/javascript/packages/browser-common/index.ts b/bindings/javascript/packages/browser-common/index.ts index 183bc3498..2db8de5a7 100644 --- a/bindings/javascript/packages/browser-common/index.ts +++ b/bindings/javascript/packages/browser-common/index.ts @@ -42,9 +42,7 @@ function panicWorker(name): never { throw new Error(`method ${name} must be invoked only from the main thread`); } -let completeOpfs: any = null; - -function mainImports(worker: Worker): BrowserImports { +function mainImports(worker: Worker, completeOpfs: (c: any, r: any) => void): BrowserImports { return { is_web_worker(): boolean { return false; @@ -410,6 +408,7 @@ function setupWebWorker() { async function setupMainThread(wasmFile: ArrayBuffer, factory: () => Worker): Promise { const worker = factory(); + let completeOpfs = null; const __emnapiContext = __emnapiGetDefaultContext() const __wasi = new __WASI({ version: 'preview1', @@ -433,7 +432,7 @@ async function setupMainThread(wasmFile: ArrayBuffer, factory: () => Worker): Pr ...importObject.env, ...importObject.napi, ...importObject.emnapi, - ...mainImports(worker), + ...mainImports(worker, (c, res) => completeOpfs(c, res)), memory: __sharedMemory, } return importObject