Source code

Revision control

Copy as Markdown

Other Tools

'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;
};