Spaces:
Runtime error
Runtime error
| /* 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 */ | |