From 2d4b3b018d8abb9e7b472a7fade59c2f4c982d50 Mon Sep 17 00:00:00 2001 From: Tomasz Andrzejak Date: Fri, 6 Jun 2025 09:15:05 +0200 Subject: [PATCH] fix(p3-shim): avoid side effects when loading filesystem API --- .../lib/nodejs/filesystem/descriptor.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/preview3-shim/lib/nodejs/filesystem/descriptor.js b/packages/preview3-shim/lib/nodejs/filesystem/descriptor.js index d07487c00..2d14fe0fd 100644 --- a/packages/preview3-shim/lib/nodejs/filesystem/descriptor.js +++ b/packages/preview3-shim/lib/nodejs/filesystem/descriptor.js @@ -11,9 +11,12 @@ import { wasiTypeFromDirent } from './utils.js'; const symbolDispose = Symbol.dispose || Symbol.for('dispose'); -const _worker = new ResourceWorker( - new URL('../workers/filesystem-worker.js', import.meta.url) -); +let WORKER = null; +function worker() { + return (WORKER ??= new ResourceWorker( + new URL('../workers/filesystem-worker.js', import.meta.url) + )); +} class Descriptor { /** Node.js file handle for file operations (FileHandle from fs.promises.open) */ @@ -99,7 +102,7 @@ class Descriptor { readViaStream(offset) { this.#ensureHandle(); const transform = new TransformStream(); - const promise = _worker + const promise = worker() .run( { op: 'read', @@ -137,7 +140,7 @@ class Descriptor { const stream = await data.intoReadableStream(); try { - await _worker.run( + await worker().run( { op: 'write', fd: this.#handle.fd, offset, stream }, [stream] ); @@ -327,7 +330,7 @@ class Descriptor { ); const transform = new TransformStream(); - const promise = _worker + const promise = worker() .run( { op: 'readDir',