/* c8 ignore start */ // 64 KiB (same size chrome slice theirs blob into Uint8array's) const POOL_SIZE = 65536 if (!globalThis.ReadableStream) { // `node:stream/web` got introduced in v16.5.0 as experimental // and it's preferred over the polyfilled version. So we also // suppress the warning that gets emitted by NodeJS for using it. try { const process = require('node:process') const { emitWarning } = process try { process.emitWarning = () => {} Object.assign(globalThis, require('node:stream/web')) process.emitWarning = emitWarning } catch (error) { process.emitWarning = emitWarning throw error } } catch (error) { // fallback to polyfill implementation Object.assign(globalThis, require('web-streams-polyfill/dist/ponyfill.es2018.js')) } } try { // Don't use node: prefix for this, require+node: is not supported until node v14.14 // Only `import()` can use prefix in 12.20 and later const { Blob } = require('buffer') if (Blob && !Blob.prototype.stream) { Blob.prototype.stream = function name (params) { let position = 0 const blob = this return new ReadableStream({ type: 'bytes', async pull (ctrl) { const chunk = blob.slice(position, Math.min(blob.size, position + POOL_SIZE)) const buffer = await chunk.arrayBuffer() position += buffer.byteLength ctrl.enqueue(new Uint8Array(buffer)) if (position === blob.size) { ctrl.close() } } }) } } } catch (error) {} /* c8 ignore end */