forked from LeenkxTeam/Kmake
132 lines
2.6 KiB
JavaScript
132 lines
2.6 KiB
JavaScript
'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;
|
|
};
|