Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
lib: revert compression changes and drop semver-major changes
Signed-off-by: Ali Hassan <ali-hassan27@outlook.com>
  • Loading branch information
thisalihassan committed Apr 16, 2026
commit 7909167575809a639aa56b66bde22f84928eba1f
16 changes: 0 additions & 16 deletions lib/internal/blob.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ const {
const {
isAnyArrayBuffer,
isArrayBufferView,
isSharedArrayBuffer,
} = require('internal/util/types');

const {
Expand Down Expand Up @@ -110,21 +109,6 @@ function getSource(source, endings) {
if (isBlob(source))
return [source.size, source[kHandle]];

if (isSharedArrayBuffer(source)) {
throw new ERR_INVALID_ARG_TYPE(
'source',
['ArrayBuffer', 'TypedArray', 'DataView', 'Blob', 'string'],
source,
);
}
if (isArrayBufferView(source) && isSharedArrayBuffer(source.buffer)) {
throw new ERR_INVALID_ARG_VALUE(
'source',
source,
'must not be backed by a SharedArrayBuffer',
);
}

if (isAnyArrayBuffer(source)) {
source = new Uint8Array(source);
} else if (!isArrayBufferView(source)) {
Expand Down
8 changes: 0 additions & 8 deletions lib/internal/webstreams/compression.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ const {
const {
codes: {
ERR_INVALID_ARG_TYPE,
ERR_INVALID_ARG_VALUE,
},
} = require('internal/errors');

Expand All @@ -48,13 +47,6 @@ function validateBufferSourceChunk(chunk) {
chunk,
);
}
if (isArrayBufferView(chunk) && isSharedArrayBuffer(chunk.buffer)) {
throw new ERR_INVALID_ARG_VALUE(
'chunk',
chunk,
'must not be backed by a SharedArrayBuffer',
);
}
}

const formatConverter = createEnumConverter('CompressionFormat', [
Expand Down
64 changes: 1 addition & 63 deletions test/parallel/test-webapi-sharedarraybuffer-rejection.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,46 +3,12 @@
const common = require('../common');
const assert = require('assert');
const test = require('node:test');
const { Blob } = require('buffer');
const { ReadableStream, CompressionStream, DecompressionStream } = require('stream/web');
const { ReadableStream } = require('stream/web');

const sab = new SharedArrayBuffer(8);
const sabView = new Uint8Array(sab);
const sabDataView = new DataView(sab);

// -- Blob constructor --

test('Blob rejects raw SharedArrayBuffer', () => {
assert.throws(
() => new Blob([sab]),
{ code: 'ERR_INVALID_ARG_TYPE' },
);
});

test('Blob rejects Uint8Array backed by SharedArrayBuffer', () => {
assert.throws(
() => new Blob([sabView]),
{ code: 'ERR_INVALID_ARG_VALUE' },
);
});

test('Blob rejects DataView backed by SharedArrayBuffer', () => {
assert.throws(
() => new Blob([sabDataView]),
{ code: 'ERR_INVALID_ARG_VALUE' },
);
});

test('Blob still accepts regular ArrayBuffer', () => {
const blob = new Blob([new ArrayBuffer(4)]);
assert.strictEqual(blob.size, 4);
});

test('Blob still accepts regular Uint8Array', () => {
const blob = new Blob([new Uint8Array(4)]);
assert.strictEqual(blob.size, 4);
});

// -- ReadableStreamBYOBReader.read() --

test('ReadableStreamBYOBReader.read() rejects SAB-backed Uint8Array', async () => {
Expand Down Expand Up @@ -132,34 +98,6 @@ test('ReadableByteStreamController.enqueue() rejects SAB-backed DataView', async
reader.releaseLock();
});

// -- Compression/Decompression streams reject raw SharedArrayBuffer --

for (const format of ['deflate', 'gzip', 'deflate-raw', 'brotli']) {
test(`CompressionStream rejects raw SharedArrayBuffer for ${format}`, async () => {
const cs = new CompressionStream(format);
const writer = cs.writable.getWriter();
const reader = cs.readable.getReader();

const writePromise = writer.write(sab);
const readPromise = reader.read();

await assert.rejects(writePromise, { code: 'ERR_INVALID_ARG_TYPE' });
await assert.rejects(readPromise, { code: 'ERR_INVALID_ARG_TYPE' });
});

test(`DecompressionStream rejects raw SharedArrayBuffer for ${format}`, async () => {
const ds = new DecompressionStream(format);
const writer = ds.writable.getWriter();
const reader = ds.readable.getReader();

const writePromise = writer.write(sab);
const readPromise = reader.read();

await assert.rejects(writePromise, { code: 'ERR_INVALID_ARG_TYPE' });
await assert.rejects(readPromise, { code: 'ERR_INVALID_ARG_TYPE' });
});
}

// -- SharedWebIDL converters --

const { converters } = require('internal/webidl');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-webstreams-compression-bad-chunks.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const badChunks = [
{
name: 'Uint8Array backed by SharedArrayBuffer',
value: new Uint8Array(new SharedArrayBuffer(1)),
code: 'ERR_INVALID_ARG_VALUE',
code: 'ERR_INVALID_ARG_TYPE',
},
];

Expand Down
Loading