summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/internal/streams/lazy_transform.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/polyfills/internal/streams/lazy_transform.mjs')
-rw-r--r--ext/node/polyfills/internal/streams/lazy_transform.mjs53
1 files changed, 53 insertions, 0 deletions
diff --git a/ext/node/polyfills/internal/streams/lazy_transform.mjs b/ext/node/polyfills/internal/streams/lazy_transform.mjs
new file mode 100644
index 000000000..2bb93bd91
--- /dev/null
+++ b/ext/node/polyfills/internal/streams/lazy_transform.mjs
@@ -0,0 +1,53 @@
+// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// deno-lint-ignore-file
+
+import { getDefaultEncoding } from "internal:deno_node/polyfills/internal/crypto/util.ts";
+import stream from "internal:deno_node/polyfills/stream.ts";
+
+function LazyTransform(options) {
+ this._options = options;
+}
+Object.setPrototypeOf(LazyTransform.prototype, stream.Transform.prototype);
+Object.setPrototypeOf(LazyTransform, stream.Transform);
+
+function makeGetter(name) {
+ return function () {
+ stream.Transform.call(this, this._options);
+ this._writableState.decodeStrings = false;
+
+ if (!this._options || !this._options.defaultEncoding) {
+ this._writableState.defaultEncoding = getDefaultEncoding();
+ }
+
+ return this[name];
+ };
+}
+
+function makeSetter(name) {
+ return function (val) {
+ Object.defineProperty(this, name, {
+ value: val,
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ });
+ };
+}
+
+Object.defineProperties(LazyTransform.prototype, {
+ _readableState: {
+ get: makeGetter("_readableState"),
+ set: makeSetter("_readableState"),
+ configurable: true,
+ enumerable: true,
+ },
+ _writableState: {
+ get: makeGetter("_writableState"),
+ set: makeSetter("_writableState"),
+ configurable: true,
+ enumerable: true,
+ },
+});
+
+export default LazyTransform;