| 'use strict'; |
| |
| self.recordingReadableStream = (extras = {}, strategy) => { |
| let controllerToCopyOver; |
| const stream = new ReadableStream({ |
| type: extras.type, |
| start(controller) { |
| controllerToCopyOver = controller; |
| |
| if (extras.start) { |
| return extras.start(controller); |
| } |
| |
| return undefined; |
| }, |
| pull(controller) { |
| stream.events.push('pull'); |
| |
| if (extras.pull) { |
| return extras.pull(controller); |
| } |
| |
| return undefined; |
| }, |
| cancel(reason) { |
| stream.events.push('cancel', reason); |
| stream.eventsWithoutPulls.push('cancel', reason); |
| |
| if (extras.cancel) { |
| return extras.cancel(reason); |
| } |
| |
| return undefined; |
| } |
| }, strategy); |
| |
| stream.controller = controllerToCopyOver; |
| stream.events = []; |
| stream.eventsWithoutPulls = []; |
| |
| return stream; |
| }; |
| |
| self.recordingWritableStream = (extras = {}, strategy) => { |
| let controllerToCopyOver; |
| const stream = new WritableStream({ |
| start(controller) { |
| controllerToCopyOver = controller; |
| |
| if (extras.start) { |
| return extras.start(controller); |
| } |
| |
| return undefined; |
| }, |
| write(chunk, controller) { |
| stream.events.push('write', chunk); |
| |
| if (extras.write) { |
| return extras.write(chunk, controller); |
| } |
| |
| return undefined; |
| }, |
| close() { |
| stream.events.push('close'); |
| |
| if (extras.close) { |
| return extras.close(); |
| } |
| |
| return undefined; |
| }, |
| abort(e) { |
| stream.events.push('abort', e); |
| |
| if (extras.abort) { |
| return extras.abort(e); |
| } |
| |
| return undefined; |
| } |
| }, strategy); |
| |
| stream.controller = controllerToCopyOver; |
| stream.events = []; |
| |
| return stream; |
| }; |
| |
| self.recordingTransformStream = (extras = {}, writableStrategy, readableStrategy) => { |
| let controllerToCopyOver; |
| const stream = new TransformStream({ |
| start(controller) { |
| controllerToCopyOver = controller; |
| |
| if (extras.start) { |
| return extras.start(controller); |
| } |
| |
| return undefined; |
| }, |
| |
| transform(chunk, controller) { |
| stream.events.push('transform', chunk); |
| |
| if (extras.transform) { |
| return extras.transform(chunk, controller); |
| } |
| |
| controller.enqueue(chunk); |
| |
| return undefined; |
| }, |
| |
| flush(controller) { |
| stream.events.push('flush'); |
| |
| if (extras.flush) { |
| return extras.flush(controller); |
| } |
| |
| return undefined; |
| } |
| }, writableStrategy, readableStrategy); |
| |
| stream.controller = controllerToCopyOver; |
| stream.events = []; |
| |
| return stream; |
| }; |