From ff6738e573b7a0b9ad6f98f87449aa0159127054 Mon Sep 17 00:00:00 2001 From: Ryan Mark Date: Tue, 8 Sep 2026 15:33:46 -0700 Subject: [PATCH] Use subarray instead of the deprecated Buffer#slice `Buffer.prototype.slice` is deprecated in favour of `subarray`. From `@types/node`: /** @deprecated Use `subarray` instead. */ slice(start?: number, end?: number): Buffer; It was deprecated because it does not behave like the `Uint8Array.prototype.slice` it shadows: the Buffer one returns a view over the same memory, the TypedArray one copies. `subarray` is the honest name for the view, and a view is what every one of these call sites wants, since each one immediately calls `.toString()` on the result. No behaviour change. Both return a view over the same memory and produce identical output, so this is a rename at the call site. The two `result.slice(...)` calls in `Transformer#toString` are left alone. Those are `String.prototype.slice`, which is not deprecated. Co-Authored-By: Claude Opus 5 (1M context) --- src/coordinates-of.js | 4 ++-- src/transformer.js | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/coordinates-of.js b/src/coordinates-of.js index f125948..f8d936b 100644 --- a/src/coordinates-of.js +++ b/src/coordinates-of.js @@ -24,9 +24,9 @@ export function coordinatesOf(source, parsedResult) { let { contentRange: byteRange } = parsedResult; let inclusiveContent = buffer - .slice(byteRange.startByte, byteRange.endByte) + .subarray(byteRange.startByte, byteRange.endByte) .toString(); - let beforeContent = buffer.slice(0, byteRange.startByte).toString(); + let beforeContent = buffer.subarray(0, byteRange.startByte).toString(); let before = beforeContent.length; let startCharIndex = before; diff --git a/src/transformer.js b/src/transformer.js index 05ff87e..3094c4f 100644 --- a/src/transformer.js +++ b/src/transformer.js @@ -414,7 +414,7 @@ export class ParseResultStringUtils { * @param {ParseResult} parseResult */ contentBefore(parseResult) { - return this.#buffer.slice(0, parseResult.range.startByte).toString(); + return this.#buffer.subarray(0, parseResult.range.startByte).toString(); } /** @@ -422,7 +422,7 @@ export class ParseResultStringUtils { */ originalContentOf(parseResult) { return this.#buffer - .slice( + .subarray( parseResult.contentRange.startByte, parseResult.contentRange.endByte, ) @@ -445,7 +445,10 @@ export class ParseResultStringUtils { */ openingTag(parseResult) { let openingTag = this.#buffer - .slice(parseResult.startRange.startByte, parseResult.startRange.endByte) + .subarray( + parseResult.startRange.startByte, + parseResult.startRange.endByte, + ) .toString(); return openingTag; } @@ -455,7 +458,7 @@ export class ParseResultStringUtils { */ closingTag(parseResult) { let closingTag = this.#buffer - .slice(parseResult.endRange.startByte, parseResult.endRange.endByte) + .subarray(parseResult.endRange.startByte, parseResult.endRange.endByte) .toString(); return closingTag; }