|
Buffer.prototype.asciiSlice = function asciiSlice(offset: number, length: number) { |
|
validateOffset(offset, "offset", 0, this.length); |
|
validateOffset(length, "length", 0, this.length - offset); |
|
return bufferUtil.toString(this, offset, offset + length, ASCII); |
|
}; |
|
|
|
Buffer.prototype.base64Slice = function base64Slice(offset: number, length: number) { |
|
validateOffset(offset, "offset", 0, this.length); |
|
validateOffset(length, "length", 0, this.length - offset); |
|
return bufferUtil.toString(this, offset, offset + length, BASE64); |
|
}; |
|
|
|
Buffer.prototype.base64urlSlice = function base64urlSlice(offset: number, length: number) { |
|
validateOffset(offset, "offset", 0, this.length); |
|
validateOffset(length, "length", 0, this.length - offset); |
|
return bufferUtil.toString(this, offset, offset + length, BASE64URL); |
|
}; |
|
|
|
Buffer.prototype.hexSlice = function hexSlice(offset: number, length: number) { |
|
validateOffset(offset, "offset", 0, this.length); |
|
validateOffset(length, "length", 0, this.length - offset); |
|
return bufferUtil.toString(this, offset, offset + length, HEX); |
|
}; |
|
|
|
Buffer.prototype.latin1Slice = function latin1Slice(offset: number, |
|
length: number) { |
|
validateOffset(offset, "offset", 0, this.length); |
|
validateOffset(length, "length", 0, this.length - offset); |
|
return bufferUtil.toString(this, offset, offset + length, LATIN1); |
|
}; |
|
|
|
Buffer.prototype.ucs2Slice = function ucs2Slice(offset: number, length: number) { |
|
validateOffset(offset, "offset", 0, this.length); |
|
validateOffset(length, "length", 0, this.length - offset); |
|
return bufferUtil.toString(this, offset, offset + length, UTF16LE); |
|
}; |
|
|
|
Buffer.prototype.utf8Slice = function utf8Slice(offset: number, length: number) { |
|
validateOffset(offset, "offset", 0, this.length); |
|
validateOffset(length, "length", 0, this.length - offset); |
|
return bufferUtil.toString(this, offset, offset + length, UTF8); |
|
}; |
The following is fine in Node.js:
But in workerd it throws:
Relevant source for us:
workerd/src/node/internal/internal_buffer.ts
Lines 758 to 799 in 7aa2d5f
Relevant source for Node.js:
https://github.com/nodejs/node/blob/8d3758487498e3c1edfd0f6f4d36d0fb3a3fab4e/src/node_buffer.cc#L545-L551
(Note also that Node.js allows
end < startso long as both are not out of bounds and sets:if (end < start) end = start)