From fb3f82b9eafef7da732c0af7e8a86c3b87075e3c Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Mon, 20 May 2024 15:24:13 +0200 Subject: fix(node): track `SIG*` listeners in `process.listeners` (#23890) Some npm libraries like `signal-exit` rely on the length of the listener array returned by `process.listeners("SIGNT")` to be correct to function. We weren't tracking `SIG*` events there, which broke those npm libraries. Fixes https://github.com/denoland/deno/issues/22892 --- ext/node/polyfills/process.ts | 3 +++ 1 file changed, 3 insertions(+) (limited to 'ext/node/polyfills/process.ts') diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts index 9c73f5a51..f742e6634 100644 --- a/ext/node/polyfills/process.ts +++ b/ext/node/polyfills/process.ts @@ -469,6 +469,7 @@ Process.prototype.on = function ( } else if (event === "SIGTERM" && Deno.build.os === "windows") { // Ignores SIGTERM on windows. } else { + EventEmitter.prototype.on.call(this, event, listener); Deno.addSignalListener(event as Deno.Signal, listener); } } else { @@ -494,6 +495,7 @@ Process.prototype.off = function ( } else if (event === "SIGTERM" && Deno.build.os === "windows") { // Ignores SIGTERM on windows. } else { + EventEmitter.prototype.off.call(this, event, listener); Deno.removeSignalListener(event as Deno.Signal, listener); } } else { @@ -537,6 +539,7 @@ Process.prototype.prependListener = function ( if (event === "SIGBREAK" && Deno.build.os !== "windows") { // Ignores SIGBREAK if the platform is not windows. } else { + EventEmitter.prototype.prependListener.call(this, event, listener); Deno.addSignalListener(event as Deno.Signal, listener); } } else { -- cgit v1.2.3