diff options
| author | 2023-08-08 22:19:46 -0700 | |
|---|---|---|
| committer | 2023-08-08 22:19:46 -0700 | |
| commit | 009fe18fa269247ae533608fa524c442b69b8f3a (patch) | |
| tree | ae57b67c32487c9dd7f7e3c567f1a2a740433dcb /src/js/node/worker_threads.ts | |
| parent | 40d00a961ec4aa4398e18bada520eaf5791151cc (diff) | |
| download | bun-009fe18fa269247ae533608fa524c442b69b8f3a.tar.gz bun-009fe18fa269247ae533608fa524c442b69b8f3a.tar.zst bun-009fe18fa269247ae533608fa524c442b69b8f3a.zip | |
worker tests (#4058)
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Diffstat (limited to 'src/js/node/worker_threads.ts')
| -rw-r--r-- | src/js/node/worker_threads.ts | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/js/node/worker_threads.ts b/src/js/node/worker_threads.ts index fd099a023..1cc778fd0 100644 --- a/src/js/node/worker_threads.ts +++ b/src/js/node/worker_threads.ts @@ -190,14 +190,29 @@ function moveMessagePortToContext() { throwNotImplemented("worker_threads.moveMessagePortToContext"); } +const unsupportedOptions = [ + "eval", + "argv", + "execArgv", + "stdin", + "stdout", + "stderr", + "trackedUnmanagedFds", + "resourceLimits", +]; + class Worker extends EventEmitter { #worker: WebWorker; #performance; - #onExitPromise = undefined; + #onExitPromise: Promise<number> | number | undefined = undefined; constructor(filename: string, options: NodeWorkerOptions = {}) { super(); - // TODO: stdin, stdout, stderr, and other node specific options. + for (const key of unsupportedOptions) { + if (key in options) { + emitWarning("option." + key, `worker_threads.Worker option "${key}" is not implemented.`); + } + } this.#worker = new WebWorker(filename, options); this.#worker.addEventListener("close", this.#onClose.bind(this)); this.#worker.addEventListener("error", this.#onError.bind(this)); @@ -264,13 +279,14 @@ class Worker extends EventEmitter { return this.#worker.postMessage(...args); } - #onClose() { - this.emit("exit"); + #onClose(e) { + this.#onExitPromise = e.code; + this.emit("exit", e.code); } #onError(event: ErrorEvent) { // TODO: is this right? - this.emit("error", event); + this.emit("error", event.error); } #onMessage(event: MessageEvent) { @@ -278,13 +294,12 @@ class Worker extends EventEmitter { this.emit("message", event.data); } - #onMessageError(event: Event) { + #onMessageError(event: MessageEvent) { // TODO: is this right? - this.emit("messageerror", (event as any).error || event); + this.emit("messageerror", (event as any).error ?? event.data ?? event); } #onOpen() { - // TODO: is this right? this.emit("online"); } |
