diff options
author | Marvin Hagemeister <hello@marvinh.dev> | 2023-05-31 12:20:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-31 12:20:38 +0200 |
commit | d0efd040c79021958a1e83caa56572c0401ca1f2 (patch) | |
tree | 5e2dffb0d680c6918a691c0ba8c553bd99e098db /ext/node/polyfills/process.ts | |
parent | 489d2e81c3e53ed689f51dc9d76c007d487aa101 (diff) |
fix(node): add missing process.reallyExit method (#19326)
This PR adds the missing `process.reallyExit()` method to node's
`process` object.
Was [pinged on
twitter](https://twitter.com/biwanczuk/status/1663326659787862017)
regarding running the `fastify` test suite in node. They use `node-tap`
which has been around arguably the longest of the test frameworks and
relies on a couple of old APIs. They have `signal-exit` as a dependency
which in turn [makes use of
`process.reallyExit()`](https://github.com/tapjs/signal-exit/blob/8fa7fc9a9c63f559af43d292b7eb727901775507/src/index.ts#L19).
That function cannot be found anywhere in their documentation, but
exists at runtime. See
https://github.com/nodejs/node/blob/6a6b3c54022104cc110ab09044a2a0cecb8988e7/lib/internal/bootstrap/node.js#L172
This doesn't yet make `node-tap` work, but gets us one step closer.
Diffstat (limited to 'ext/node/polyfills/process.ts')
-rw-r--r-- | ext/node/polyfills/process.ts | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts index 2dc10d7b1..b676e87d7 100644 --- a/ext/node/polyfills/process.ts +++ b/ext/node/polyfills/process.ts @@ -91,7 +91,7 @@ export const exit = (code?: number | string) => { process.emit("exit", process.exitCode || 0); } - Deno.exit(process.exitCode || 0); + process.reallyExit(process.exitCode || 0); }; function addReadOnlyProcessAlias( @@ -380,6 +380,13 @@ class Process extends EventEmitter { /** https://nodejs.org/api/process.html#process_process_exit_code */ exit = exit; + // Undocumented Node API that is used by `signal-exit` which in turn + // is used by `node-tap`. It was marked for removal a couple of years + // ago. See https://github.com/nodejs/node/blob/6a6b3c54022104cc110ab09044a2a0cecb8988e7/lib/internal/bootstrap/node.js#L172 + reallyExit = (code: number) => { + return Deno.exit(code || 0); + }; + _exiting = _exiting; /** https://nodejs.org/api/process.html#processexitcode_1 */ |