diff options
-rw-r--r-- | ext/node/polyfills/internal/child_process.ts | 7 | ||||
-rw-r--r-- | runtime/js/40_process.js | 14 |
2 files changed, 12 insertions, 9 deletions
diff --git a/ext/node/polyfills/internal/child_process.ts b/ext/node/polyfills/internal/child_process.ts index 7f40ce94b..30b15fb62 100644 --- a/ext/node/polyfills/internal/child_process.ts +++ b/ext/node/polyfills/internal/child_process.ts @@ -6,6 +6,7 @@ // TODO(petamoriken): enable prefer-primordials for node polyfills // deno-lint-ignore-file prefer-primordials +import { core, internals } from "ext:core/mod.js"; import { assert } from "ext:deno_node/_util/asserts.ts"; import { EventEmitter } from "node:events"; import { os } from "ext:deno_node/internal_binding/constants.ts"; @@ -43,6 +44,7 @@ import { import { kEmptyObject } from "ext:deno_node/internal/util.mjs"; import { getValidatedPath } from "ext:deno_node/internal/fs/utils.mjs"; import process from "node:process"; + const core = globalThis.__bootstrap.core; const { op_node_ipc_read, @@ -258,8 +260,9 @@ export class ChildProcess extends EventEmitter { } } - if (typeof this.#process._pipeFd == "number") { - setupChannel(this, this.#process._pipeFd); + const pipeFd = internals.getPipeFd(this.#process); + if (typeof pipeFd == "number") { + setupChannel(this, pipeFd); } (async () => { diff --git a/runtime/js/40_process.js b/runtime/js/40_process.js index 9239f8e99..2a97f81a3 100644 --- a/runtime/js/40_process.js +++ b/runtime/js/40_process.js @@ -1,6 +1,6 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. -import { core, primordials } from "ext:core/mod.js"; +import { core, internals, primordials } from "ext:core/mod.js"; const ops = core.ops; const { ArrayPrototypeMap, @@ -204,16 +204,16 @@ function collectOutput(readableStream) { return readableStreamCollectIntoUint8Array(readableStream); } +const _pipeFd = Symbol("[[pipeFd]]"); + +internals.getPipeFd = (process) => process[_pipeFd]; + class ChildProcess { #rid; #waitPromise; #waitComplete = false; - #pipeFd; - // internal, used by ext/node - get _pipeFd() { - return this.#pipeFd; - } + [_pipeFd]; #pid; get pid() { @@ -259,7 +259,7 @@ class ChildProcess { this.#rid = rid; this.#pid = pid; - this.#pipeFd = pipeFd; + this[_pipeFd] = pipeFd; if (stdinRid !== null) { this.#stdin = writableStreamForRid(stdinRid); |