From 3e4524656d376ec79de630e5cd300f8e8094f6f0 Mon Sep 17 00:00:00 2001 From: snwy Date: Tue, 5 Nov 2024 16:21:33 -0800 Subject: [PATCH] constructors part 2 electric boogaloo --- src/js/internal/streams/duplex.js | 2 ++ src/js/internal/streams/legacy.js | 1 + src/js/internal/streams/passthrough.js | 2 ++ src/js/internal/streams/readable.js | 1 + src/js/internal/streams/transform.js | 2 ++ src/js/internal/streams/writable.js | 1 + 6 files changed, 9 insertions(+) diff --git a/src/js/internal/streams/duplex.js b/src/js/internal/streams/duplex.js index 2b36ffbca0..acf20f1bca 100644 --- a/src/js/internal/streams/duplex.js +++ b/src/js/internal/streams/duplex.js @@ -40,6 +40,8 @@ const { kOnConstructed } = require("internal/streams/utils"); function Duplex(options) { if (!(this instanceof Duplex)) return new Duplex(options); + this.constructor = Duplex; + this._events ??= { close: undefined, error: undefined, diff --git a/src/js/internal/streams/legacy.js b/src/js/internal/streams/legacy.js index 1f6354e89a..ff06d6a2de 100644 --- a/src/js/internal/streams/legacy.js +++ b/src/js/internal/streams/legacy.js @@ -8,6 +8,7 @@ const EE = require("node:events"); function Stream(opts) { EE.$call(this, opts); + this.constructor = Stream; } Stream.constructor = Stream; diff --git a/src/js/internal/streams/passthrough.js b/src/js/internal/streams/passthrough.js index 14cda38c33..ae20842184 100644 --- a/src/js/internal/streams/passthrough.js +++ b/src/js/internal/streams/passthrough.js @@ -37,6 +37,8 @@ ObjectSetPrototypeOf(PassThrough, Transform); function PassThrough(options) { if (!(this instanceof PassThrough)) return new PassThrough(options); + this.constructor = PassThrough; + Transform.$call(this, options); } diff --git a/src/js/internal/streams/readable.js b/src/js/internal/streams/readable.js index ad4019ed40..181bf3d48f 100644 --- a/src/js/internal/streams/readable.js +++ b/src/js/internal/streams/readable.js @@ -311,6 +311,7 @@ ReadableState.prototype[kOnConstructed] = function onConstructed(stream) { function Readable(options) { if (!(this instanceof Readable)) return new Readable(options); + this.constructor = Readable; this._events ??= { close: undefined, error: undefined, diff --git a/src/js/internal/streams/transform.js b/src/js/internal/streams/transform.js index 2625f681ee..45c3983926 100644 --- a/src/js/internal/streams/transform.js +++ b/src/js/internal/streams/transform.js @@ -77,6 +77,8 @@ const kCallback = Symbol("kCallback"); function Transform(options) { if (!(this instanceof Transform)) return new Transform(options); + this.constructor = Transform; + // TODO (ronag): This should preferably always be // applied but would be semver-major. Or even better; // make Transform a Readable with the Writable interface. diff --git a/src/js/internal/streams/writable.js b/src/js/internal/streams/writable.js index cae2d8f5b6..ffd8b470f6 100644 --- a/src/js/internal/streams/writable.js +++ b/src/js/internal/streams/writable.js @@ -388,6 +388,7 @@ WritableState.prototype[kOnConstructed] = function onConstructed(stream) { function Writable(options) { if (!(this instanceof Writable)) return new Writable(options); + this.constructor = Writable; this._events ??= { close: undefined, error: undefined,