diff --git a/ext/node/lib.rs b/ext/node/lib.rs index dcb779060d..2a060d0e8b 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -591,7 +591,6 @@ deno_core::extension!(deno_node, "internal/readline/utils.mjs", "internal/stream_base_commons.ts", "internal/streams/add-abort-signal.mjs", - "internal/streams/buffer_list.mjs", "internal/streams/destroy.mjs", "internal/streams/end-of-stream.mjs", "internal/streams/lazy_transform.mjs", diff --git a/ext/node/polyfills/01_require.js b/ext/node/polyfills/01_require.js index 3e90750cd3..065c266834 100644 --- a/ext/node/polyfills/01_require.js +++ b/ext/node/polyfills/01_require.js @@ -122,7 +122,6 @@ import internalFsUtils from "ext:deno_node/internal/fs/utils.mjs"; import internalHttp from "ext:deno_node/internal/http.ts"; import internalReadlineUtils from "ext:deno_node/internal/readline/utils.mjs"; import internalStreamsAddAbortSignal from "ext:deno_node/internal/streams/add-abort-signal.mjs"; -import internalStreamsBufferList from "ext:deno_node/internal/streams/buffer_list.mjs"; import internalStreamsLazyTransform from "ext:deno_node/internal/streams/lazy_transform.mjs"; import internalStreamsState from "ext:deno_node/internal/streams/state.mjs"; import internalTestBinding from "ext:deno_node/internal/test/binding.ts"; @@ -225,7 +224,6 @@ function setupBuiltinModules() { "internal/http": internalHttp, "internal/readline/utils": internalReadlineUtils, "internal/streams/add-abort-signal": internalStreamsAddAbortSignal, - "internal/streams/buffer_list": internalStreamsBufferList, "internal/streams/lazy_transform": internalStreamsLazyTransform, "internal/streams/state": internalStreamsState, "internal/test/binding": internalTestBinding, diff --git a/ext/node/polyfills/internal/streams/buffer_list.mjs b/ext/node/polyfills/internal/streams/buffer_list.mjs deleted file mode 100644 index cb9dba563b..0000000000 --- a/ext/node/polyfills/internal/streams/buffer_list.mjs +++ /dev/null @@ -1,188 +0,0 @@ -// Copyright 2018-2025 the Deno authors. MIT license. -// Copyright Joyent and Node contributors. All rights reserved. MIT license. -// deno-lint-ignore-file - -import { Buffer } from "node:buffer"; -import { inspect } from "ext:deno_node/internal/util/inspect.mjs"; - -class BufferList { - constructor() { - this.head = null; - this.tail = null; - this.length = 0; - } - - push(v) { - const entry = { data: v, next: null }; - if (this.length > 0) { - this.tail.next = entry; - } else { - this.head = entry; - } - this.tail = entry; - ++this.length; - } - - unshift(v) { - const entry = { data: v, next: this.head }; - if (this.length === 0) { - this.tail = entry; - } - this.head = entry; - ++this.length; - } - - shift() { - if (this.length === 0) { - return; - } - const ret = this.head.data; - if (this.length === 1) { - this.head = this.tail = null; - } else { - this.head = this.head.next; - } - --this.length; - return ret; - } - - clear() { - this.head = this.tail = null; - this.length = 0; - } - - join(s) { - if (this.length === 0) { - return ""; - } - let p = this.head; - let ret = "" + p.data; - while (p = p.next) { - ret += s + p.data; - } - return ret; - } - - concat(n) { - if (this.length === 0) { - return Buffer.alloc(0); - } - const ret = Buffer.allocUnsafe(n >>> 0); - let p = this.head; - let i = 0; - while (p) { - ret.set(p.data, i); - i += p.data.length; - p = p.next; - } - return ret; - } - - // Consumes a specified amount of bytes or characters from the buffered data. - consume(n, hasStrings) { - const data = this.head.data; - if (n < data.length) { - // `slice` is the same for buffers and strings. - const slice = data.slice(0, n); - this.head.data = data.slice(n); - return slice; - } - if (n === data.length) { - // First chunk is a perfect match. - return this.shift(); - } - // Result spans more than one buffer. - return hasStrings ? this._getString(n) : this._getBuffer(n); - } - - first() { - return this.head.data; - } - - *[Symbol.iterator]() { - for (let p = this.head; p; p = p.next) { - yield p.data; - } - } - - // Consumes a specified amount of characters from the buffered data. - _getString(n) { - let ret = ""; - let p = this.head; - let c = 0; - do { - const str = p.data; - if (n > str.length) { - ret += str; - n -= str.length; - } else { - if (n === str.length) { - ret += str; - ++c; - if (p.next) { - this.head = p.next; - } else { - this.head = this.tail = null; - } - } else { - ret += str.slice(0, n); - this.head = p; - p.data = str.slice(n); - } - break; - } - ++c; - } while (p = p.next); - this.length -= c; - return ret; - } - - // Consumes a specified amount of bytes from the buffered data. - _getBuffer(n) { - const ret = Buffer.allocUnsafe(n); - const retLen = n; - let p = this.head; - let c = 0; - do { - const buf = p.data; - if (n > buf.length) { - ret.set(buf, retLen - n); - n -= buf.length; - } else { - if (n === buf.length) { - ret.set(buf, retLen - n); - ++c; - if (p.next) { - this.head = p.next; - } else { - this.head = this.tail = null; - } - } else { - ret.set( - new Uint8Array(buf.buffer, buf.byteOffset, n), - retLen - n, - ); - this.head = p; - p.data = buf.slice(n); - } - break; - } - ++c; - } while (p = p.next); - this.length -= c; - return ret; - } - - // Make sure the linked list only shows the minimal necessary information. - [inspect.custom](_, options) { - return inspect(this, { - ...options, - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false, - }); - } -} - -export default BufferList; diff --git a/tools/core_import_map.json b/tools/core_import_map.json index 935c7179a1..44a40fa6ba 100644 --- a/tools/core_import_map.json +++ b/tools/core_import_map.json @@ -156,7 +156,6 @@ "ext:deno_node/internal/readline/symbols.mjs": "../ext/node/polyfills/internal/readline/symbols.mjs", "ext:deno_node/internal/readline/utils.mjs": "../ext/node/polyfills/internal/readline/utils.mjs", "ext:deno_node/internal/streams/add-abort-signal.mjs": "../ext/node/polyfills/internal/streams/add-abort-signal.mjs", - "ext:deno_node/internal/streams/buffer_list.mjs": "../ext/node/polyfills/internal/streams/buffer_list.mjs", "ext:deno_node/internal/streams/destroy.mjs": "../ext/node/polyfills/internal/streams/destroy.mjs", "node:_stream_duplex": "../ext/node/polyfills/internal/streams/duplex.mjs", "ext:deno_node/internal/streams/end-of-stream.mjs": "../ext/node/polyfills/internal/streams/end-of-stream.mjs",