(function() {
"use strict";
var _g = globalThis;
var _slots = new WeakMap();
function _getSlot(obj, key) {
var m = _slots.get(obj);
return m ? m[key] : undefined;
}
function _setSlot(obj, key, value) {
var m = _slots.get(obj);
if (!m) { m = {}; _slots.set(obj, m); }
m[key] = value;
}
function _hasSlot(obj, key) {
var m = _slots.get(obj);
return m && (key in m);
}
var _readableStreamBrand = Symbol("ReadableStream");
var _writableStreamBrand = Symbol("WritableStream");
var _transformStreamBrand = Symbol("TransformStream");
var _defaultReaderBrand = Symbol("ReadableStreamDefaultReader");
var _byobReaderBrand = Symbol("ReadableStreamBYOBReader");
var _defaultControllerBrand = Symbol("ReadableStreamDefaultController");
var _byteControllerBrand = Symbol("ReadableByteStreamController");
var _byobRequestBrand = Symbol("ReadableStreamBYOBRequest");
var _writableDefaultWriterBrand = Symbol("WritableStreamDefaultWriter");
var _writableDefaultControllerBrand = Symbol("WritableStreamDefaultController");
var _transformDefaultControllerBrand = Symbol("TransformStreamDefaultController");
var STATE_READABLE = 0;
var STATE_CLOSED = 1;
var STATE_ERRORED = 2;
function _isObject(v) { return (typeof v === "object" && v !== null) || typeof v === "function"; }
function _isReadableStream(v) { return _isObject(v) && v[_readableStreamBrand] === true; }
function _isWritableStream(v) { return _isObject(v) && v[_writableStreamBrand] === true; }
function _isTransformStream(v) { return _isObject(v) && v[_transformStreamBrand] === true; }
function _isDefaultReader(v) { return _isObject(v) && v[_defaultReaderBrand] === true; }
function _isBYOBReader(v) { return _isObject(v) && v[_byobReaderBrand] === true; }
function _isDefaultController(v) { return _isObject(v) && v[_defaultControllerBrand] === true; }
function _isByteController(v) { return _isObject(v) && v[_byteControllerBrand] === true; }
function _isBYOBRequest(v) { return _isObject(v) && v[_byobRequestBrand] === true; }
function _isWritableDefaultWriter(v) { return _isObject(v) && v[_writableDefaultWriterBrand] === true; }
function _isWritableDefaultController(v) { return _isObject(v) && v[_writableDefaultControllerBrand] === true; }
function _isTransformDefaultController(v) { return _isObject(v) && v[_transformDefaultControllerBrand] === true; }
function _isReadableStreamLocked(stream) {
return _getSlot(stream, "reader") !== undefined;
}
function _isWritableStreamLocked(stream) {
return _getSlot(stream, "writer") !== undefined;
}
function _typeError(msg) { return new TypeError(msg); }
function _rangeError(msg) { return new RangeError(msg); }
function _promiseInvokeOrNoop(obj, key, args) {
try {
var fn = obj[key];
if (fn === undefined) return Promise.resolve(undefined);
if (typeof fn !== "function") return Promise.resolve(undefined);
return Promise.resolve(fn.apply(obj, args || []));
} catch (e) {
return Promise.reject(e);
}
}
function _promiseInvokeOrNoopNoCatch(obj, key, args) {
var fn = obj[key];
if (fn === undefined) return undefined;
return fn.apply(obj, args || []);
}
function _newQueue() {
return { chunks: [], totalSize: 0 };
}
function _enqueueValueWithSize(queue, value, size) {
size = Number(size);
if (!_isFiniteNonNegativeNumber(size)) throw _rangeError("size must be a finite, non-negative number");
queue.chunks.push({ value: value, size: size });
queue.totalSize += size;
}
function _dequeueValue(queue) {
if (queue.chunks.length === 0) return undefined;
var pair = queue.chunks.shift();
queue.totalSize -= pair.size;
return pair.value;
}
function _peekQueueValue(queue) {
if (queue.chunks.length === 0) return undefined;
return queue.chunks[0].value;
}
function _resetQueue(queue) {
queue.chunks = [];
queue.totalSize = 0;
}
function _isFiniteNonNegativeNumber(v) {
return typeof v === "number" && isFinite(v) && v >= 0;
}
function _extractHighWaterMark(strategy, defaultHWM) {
if (strategy === undefined || strategy === null) return defaultHWM;
var hwm = strategy.highWaterMark;
if (hwm === undefined) return defaultHWM;
hwm = Number(hwm);
if (isNaN(hwm) || hwm < 0) throw _rangeError("highWaterMark must be a non-negative number");
return hwm;
}
function _extractSizeAlgorithm(strategy) {
if (strategy === undefined || strategy === null) return function() { return 1; };
var size = strategy.size;
if (size === undefined) return function() { return 1; };
if (typeof size !== "function") throw _typeError("size must be a function");
return size;
}
if (typeof _g.ReadableStream === "undefined") {
function ReadableStream(underlyingSource, strategy) {
if (!(this instanceof ReadableStream)) return new ReadableStream(underlyingSource, strategy);
this[_readableStreamBrand] = true;
_initializeReadableStream(this);
var source = underlyingSource || {};
if (!_isObject(source)) throw _typeError("ReadableStream constructor takes an object as first argument");
if (strategy !== undefined && !_isObject(strategy)) throw _typeError("ReadableStream constructor takes an object as second argument, if any");
var type = source.type;
var typeString = String(type);
if (typeString === "bytes") {
_setUpReadableByteStreamControllerFromUnderlyingSource(this, source, strategy);
} else if (type === undefined) {
_setUpReadableStreamDefaultControllerFromUnderlyingSource(this, source, strategy);
} else {
throw _rangeError("Invalid type for underlying source");
}
}
ReadableStream.prototype.cancel = function(reason) {
if (!_isReadableStream(this)) return Promise.reject(_typeError("this is not a ReadableStream"));
if (_isReadableStreamLocked(this)) return Promise.reject(_typeError("ReadableStream is locked"));
return _readableStreamCancel(this, reason);
};
ReadableStream.prototype.getReader = function(options) {
if (!_isReadableStream(this)) throw _typeError("this is not a ReadableStream");
if (options === undefined) {
_resolveLazyStart(this);
return new _g.ReadableStreamDefaultReader(this);
}
var mode = options.mode;
if (mode === undefined) {
_resolveLazyStart(this);
return new _g.ReadableStreamDefaultReader(this);
}
if (String(mode) === "byob") {
_resolveLazyStart(this);
return new _g.ReadableStreamBYOBReader(this);
}
throw _rangeError("Invalid mode for getReader()");
};
ReadableStream.prototype.pipeThrough = function(transforms, options) {
var readable = transforms.readable;
var writable = transforms.writable;
if (!_isReadableStream(this)) throw _typeError("this is not a ReadableStream");
if (_isReadableStreamLocked(this)) throw _typeError("ReadableStream is locked");
var preventClose = false, preventAbort = false, preventCancel = false, signal;
if (options && _isObject(options)) {
preventClose = !!options.preventClose;
preventAbort = !!options.preventAbort;
preventCancel = !!options.preventCancel;
signal = options.signal;
}
var promise = _readableStreamPipeToWritableStream(this, writable, preventClose, preventAbort, preventCancel, signal);
promise.catch(function() {});
return readable;
};
ReadableStream.prototype.pipeTo = function(destination, options) {
if (!_isReadableStream(this)) return Promise.reject(_typeError("this is not a ReadableStream"));
if (_isReadableStreamLocked(this)) return Promise.reject(_typeError("ReadableStream is locked"));
var preventClose = false, preventAbort = false, preventCancel = false, signal;
if (options && _isObject(options)) {
preventClose = !!options.preventClose;
preventAbort = !!options.preventAbort;
preventCancel = !!options.preventCancel;
signal = options.signal;
}
return _readableStreamPipeToWritableStream(this, destination, preventClose, preventAbort, preventCancel, signal);
};
ReadableStream.prototype.tee = function() {
if (!_isReadableStream(this)) throw _typeError("this is not a ReadableStream");
return _readableStreamTee(this, false);
};
Object.defineProperty(ReadableStream.prototype, "locked", {
get: function() {
if (!_isReadableStream(this)) throw _typeError("this is not a ReadableStream");
return _isReadableStreamLocked(this);
},
configurable: true,
enumerable: true
});
if (typeof Symbol !== "undefined" && Symbol.asyncIterator) {
ReadableStream.prototype[Symbol.asyncIterator] = function() {
var reader = this.getReader();
var stream = this;
return {
next: function() {
return reader.read().then(function(result) {
if (result.done) {
reader.releaseLock();
return { value: undefined, done: true };
}
return { value: result.value, done: false };
});
},
return: function() {
reader.releaseLock();
return Promise.resolve({ value: undefined, done: true });
}
};
};
}
_g.ReadableStream = ReadableStream;
}
function _initializeReadableStream(stream) {
_setSlot(stream, "state", STATE_READABLE);
_setSlot(stream, "reader", undefined);
_setSlot(stream, "storedError", undefined);
_setSlot(stream, "disturbed", false);
_setSlot(stream, "readableStreamController", undefined);
}
function _resolveLazyStart(stream) {
}
function _readableStreamCancel(stream, reason) {
_setSlot(stream, "disturbed", true);
var state = _getSlot(stream, "state");
if (state === STATE_CLOSED) return Promise.resolve(undefined);
if (state === STATE_ERRORED) return Promise.reject(_getSlot(stream, "storedError"));
_readableStreamClose(stream);
var controller = _getSlot(stream, "readableStreamController");
if (controller) {
return _promiseInvokeOrNoop(_getSlot(controller, "underlyingSource"), "cancel", [reason])
.then(function() { return undefined; });
}
return Promise.resolve(undefined);
}
function _readableStreamClose(stream) {
_setSlot(stream, "state", STATE_CLOSED);
var reader = _getSlot(stream, "reader");
if (reader === undefined) return;
var closedPromise = _getSlot(reader, "closedPromise");
if (closedPromise && typeof closedPromise.resolve === "function") {
closedPromise.resolve(undefined);
}
if (_isDefaultReader(reader)) {
var pending = _getSlot(reader, "readRequests");
if (pending && pending.length > 0) {
var reqs = pending.slice();
_setSlot(reader, "readRequests", []);
for (var i = 0; i < reqs.length; i++) {
reqs[i].resolve({ value: undefined, done: true });
}
}
}
}
function _readableStreamError(stream, error) {
_setSlot(stream, "state", STATE_ERRORED);
_setSlot(stream, "storedError", error);
var reader = _getSlot(stream, "reader");
if (reader === undefined) return;
var closedPromise = _getSlot(reader, "closedPromise");
if (closedPromise && typeof closedPromise.reject === "function") {
closedPromise.reject(error);
}
if (_isDefaultReader(reader)) {
var pending = _getSlot(reader, "readRequests");
if (pending && pending.length > 0) {
var reqs = pending.slice();
_setSlot(reader, "readRequests", []);
for (var i = 0; i < reqs.length; i++) {
reqs[i].reject(error);
}
}
}
}
function _readableStreamFulfillReadRequest(stream, chunk, done) {
var reader = _getSlot(stream, "reader");
var readRequests = _getSlot(reader, "readRequests");
if (readRequests && readRequests.length > 0) {
var req = readRequests.shift();
if (done) {
req.resolve({ value: undefined, done: true });
} else {
req.resolve({ value: chunk, done: false });
}
}
}
function _readableStreamAddReadRequest(stream, reader) {
var readRequests = _getSlot(reader, "readRequests");
if (!readRequests) {
readRequests = [];
_setSlot(reader, "readRequests", readRequests);
}
return new Promise(function(resolve, reject) {
readRequests.push({ resolve: resolve, reject: reject });
});
}
function _readableStreamFulfillReadIntoRequest(stream, chunk, done) {
var reader = _getSlot(stream, "reader");
var readIntoRequests = _getSlot(reader, "readIntoRequests");
if (readIntoRequests && readIntoRequests.length > 0) {
var req = readIntoRequests.shift();
if (done) {
req.resolve({ value: undefined, done: true });
} else {
req.resolve({ value: chunk, done: false });
}
}
}
function _readableStreamAddReadIntoRequest(stream, reader) {
var readIntoRequests = _getSlot(reader, "readIntoRequests");
if (!readIntoRequests) {
readIntoRequests = [];
_setSlot(reader, "readIntoRequests", readIntoRequests);
}
return new Promise(function(resolve, reject) {
readIntoRequests.push({ resolve: resolve, reject: reject });
});
}
function _readableStreamHasReadIntoRequests(stream) {
var reader = _getSlot(stream, "reader");
if (!_isBYOBReader(reader)) return false;
var reqs = _getSlot(reader, "readIntoRequests");
return reqs && reqs.length > 0;
}
function _readableStreamHasReadRequests(stream) {
var reader = _getSlot(stream, "reader");
if (!_isDefaultReader(reader)) return false;
var reqs = _getSlot(reader, "readRequests");
return reqs && reqs.length > 0;
}
function _readableStreamReaderGenericInitialize(reader, stream) {
_setSlot(reader, "stream", stream);
_setSlot(stream, "reader", reader);
var state = _getSlot(stream, "state");
var closedPromise = {};
if (state === STATE_CLOSED) {
closedPromise.promise = Promise.resolve(undefined);
closedPromise.resolve = undefined;
closedPromise.reject = undefined;
} else if (state === STATE_ERRORED) {
closedPromise.promise = Promise.reject(_getSlot(stream, "storedError"));
closedPromise.resolve = undefined;
closedPromise.reject = undefined;
} else {
closedPromise.promise = new Promise(function(resolve, reject) {
closedPromise.resolve = resolve;
closedPromise.reject = reject;
});
}
_setSlot(reader, "closedPromise", closedPromise);
}
function _readableStreamReaderGenericRelease(reader) {
var stream = _getSlot(reader, "stream");
if (stream === undefined) return;
_setSlot(reader, "stream", undefined);
_setSlot(stream, "reader", undefined);
}
function _readableStreamPipeToWritableStream(source, dest, preventClose, preventAbort, preventCancel, signal) {
var reader;
var writer;
var lastWrite;
var currentWrite;
var shutdownAction;
return new Promise(function(resolve, reject) {
var aborted = false;
var pipeState = { source: source, dest: dest, resolve: resolve, reject: reject };
if (signal && signal.aborted) {
aborted = true;
var reason = signal.reason;
_shutdownWithAction(function() {
if (!preventAbort) {
return _writableStreamAbort(dest, reason);
}
return Promise.resolve(undefined);
}, reason, pipeState);
return;
}
reader = source.getReader();
writer = dest.getWriter ? dest.getWriter() : undefined;
if (!writer && _isWritableStream(dest)) {
writer = new _g.WritableStreamDefaultWriter(dest);
}
if (!writer) {
reject(_typeError("destination must be a WritableStream"));
return;
}
function pump() {
if (aborted) return;
currentWrite = null;
return reader.read().then(function(result) {
if (result.done) {
_shutdown(preventClose, pipeState);
return;
}
currentWrite = writer.write(result.value);
currentWrite.catch(function() {});
return currentWrite.then(pump, function(e) {
if (!preventAbort) {
_shutdownWithAction(function() {
return _writableStreamAbort(dest, e);
}, e, pipeState);
}
});
}, function(e) {
if (!preventCancel) {
_shutdownWithAction(function() {
return _readableStreamCancel(source, e);
}, e, pipeState);
}
});
}
pump();
if (signal) {
signal.addEventListener("abort", function() {
aborted = true;
var reason = signal.reason;
if (!preventAbort) {
_shutdownWithAction(function() {
return _writableStreamAbort(dest, reason);
}, reason, pipeState);
} else if (!preventCancel) {
_shutdownWithAction(function() {
return _readableStreamCancel(source, reason);
}, reason, pipeState);
}
});
}
});
}
function _shutdown(preventClose, pipeState) {
if (preventClose) {
pipeState.resolve(undefined);
} else {
_shutdownWithAction(function() {
return _writableStreamClose(pipeState.dest);
}, undefined, pipeState);
}
}
function _shutdownWithAction(action, reason, pipeState) {
if (action) {
Promise.resolve(action()).then(function() {
if (reason !== undefined) {
pipeState.reject(reason);
} else {
pipeState.resolve(undefined);
}
}, function(e) {
pipeState.reject(e);
});
} else {
if (reason !== undefined) {
pipeState.reject(reason);
} else {
pipeState.resolve(undefined);
}
}
}
function _readableStreamTee(stream, cloneForBranch2) {
_setSlot(stream, "disturbed", true);
var reader = stream.getReader();
var branch1, branch2;
var readAgain = false;
var reason1, reason2;
var canceled1 = false, canceled2 = false;
var resolve1, resolve2;
var cancelPromise = new Promise(function(r1, r2) { resolve1 = r1; resolve2 = r2; });
function pullAlgorithm() {
if (readAgain) return Promise.resolve(undefined);
readAgain = true;
return reader.read().then(function(result) {
readAgain = false;
if (result.done) {
if (!canceled1) _readableStreamDefaultControllerClose(_getSlot(branch1, "readableStreamController"));
if (!canceled2) _readableStreamDefaultControllerClose(_getSlot(branch2, "readableStreamController"));
return;
}
var value1 = result.value;
var value2 = result.value;
if (!canceled1) _readableStreamDefaultControllerEnqueue(_getSlot(branch1, "readableStreamController"), value1);
if (!canceled2) _readableStreamDefaultControllerEnqueue(_getSlot(branch2, "readableStreamController"), value2);
}, function(e) {
if (!canceled1) _readableStreamDefaultControllerError(_getSlot(branch1, "readableStreamController"), e);
if (!canceled2) _readableStreamDefaultControllerError(_getSlot(branch2, "readableStreamController"), e);
});
}
function cancel1Algorithm(reason) {
canceled1 = true;
reason1 = reason;
if (canceled2) {
var cancelResult = reader.cancel([reason1, reason2]);
resolve1(undefined);
resolve2(undefined);
return cancelResult;
}
return cancelPromise.then(function() { return undefined; });
}
function cancel2Algorithm(reason) {
canceled2 = true;
reason2 = reason;
if (canceled1) {
var cancelResult = reader.cancel([reason1, reason2]);
resolve1(undefined);
resolve2(undefined);
return cancelResult;
}
return cancelPromise.then(function() { return undefined; });
}
branch1 = new _g.ReadableStream({
pull: pullAlgorithm,
cancel: cancel1Algorithm
});
branch2 = new _g.ReadableStream({
pull: pullAlgorithm,
cancel: cancel2Algorithm
});
_setSlot(branch1, "readableStreamController", _getSlot(branch1, "readableStreamController"));
_setSlot(branch2, "readableStreamController", _getSlot(branch2, "readableStreamController"));
return [branch1, branch2];
}
if (typeof _g.ReadableStreamDefaultReader === "undefined") {
function ReadableStreamDefaultReader(stream) {
if (!(this instanceof ReadableStreamDefaultReader)) return new ReadableStreamDefaultReader(stream);
if (!_isReadableStream(stream)) throw _typeError("stream is not a ReadableStream");
this[_defaultReaderBrand] = true;
_setSlot(this, "readRequests", []);
_readableStreamReaderGenericInitialize(this, stream);
_setSlot(this, "closedPromise", _getSlot(this, "closedPromise"));
}
ReadableStreamDefaultReader.prototype.cancel = function(reason) {
if (!_isDefaultReader(this)) return Promise.reject(_typeError("this is not a ReadableStreamDefaultReader"));
var stream = _getSlot(this, "stream");
if (stream === undefined) return Promise.reject(_typeError("reader is not attached to a stream"));
return _readableStreamCancel(stream, reason);
};
ReadableStreamDefaultReader.prototype.read = function() {
if (!_isDefaultReader(this)) return Promise.reject(_typeError("this is not a ReadableStreamDefaultReader"));
var stream = _getSlot(this, "stream");
if (stream === undefined) return Promise.reject(_typeError("reader is not attached to a stream"));
_setSlot(stream, "disturbed", true);
var state = _getSlot(stream, "state");
if (state === STATE_CLOSED) return Promise.resolve({ value: undefined, done: true });
if (state === STATE_ERRORED) return Promise.reject(_getSlot(stream, "storedError"));
var controller = _getSlot(stream, "readableStreamController");
if (_isDefaultController(controller)) {
return _readableStreamDefaultControllerRead(controller);
}
return _readableStreamAddReadRequest(stream, this);
};
ReadableStreamDefaultReader.prototype.releaseLock = function() {
if (!_isDefaultReader(this)) throw _typeError("this is not a ReadableStreamDefaultReader");
var stream = _getSlot(this, "stream");
if (stream === undefined) return;
if (_isReadableStreamLocked(stream) && _getSlot(stream, "reader") !== this) {
throw _typeError("reader is not the current reader");
}
_readableStreamDefaultReaderRelease(this);
};
Object.defineProperty(ReadableStreamDefaultReader.prototype, "closed", {
get: function() {
if (!_isDefaultReader(this)) return Promise.reject(_typeError("this is not a ReadableStreamDefaultReader"));
return _getSlot(this, "closedPromise").promise;
},
configurable: true,
enumerable: true
});
_g.ReadableStreamDefaultReader = ReadableStreamDefaultReader;
}
function _readableStreamDefaultControllerRead(controller) {
var stream = _getSlot(controller, "stream");
var queue = _getSlot(controller, "queue");
if (queue && queue.chunks.length > 0) {
var chunk = _dequeueValue(queue);
if (_getSlot(controller, "closeRequested") && queue.chunks.length === 0) {
_readableStreamClose(stream);
} else {
_readableStreamDefaultControllerCallPullIfNeeded(controller);
}
return Promise.resolve({ value: chunk, done: false });
}
if (_getSlot(stream, "state") === STATE_CLOSED) {
return Promise.resolve({ value: undefined, done: true });
}
return _readableStreamAddReadRequest(stream, _getSlot(stream, "reader"));
}
function _readableStreamDefaultReaderRelease(reader) {
var stream = _getSlot(reader, "stream");
if (stream === undefined) return;
_readableStreamReaderGenericRelease(reader);
var readRequests = _getSlot(reader, "readRequests");
if (readRequests) {
for (var i = 0; i < readRequests.length; i++) {
readRequests[i].resolve({ value: undefined, done: true });
}
_setSlot(reader, "readRequests", []);
}
}
if (typeof _g.ReadableStreamBYOBReader === "undefined") {
function ReadableStreamBYOBReader(stream) {
if (!(this instanceof ReadableStreamBYOBReader)) return new ReadableStreamBYOBReader(stream);
if (!_isReadableStream(stream)) throw _typeError("stream is not a ReadableStream");
this[_byobReaderBrand] = true;
_setSlot(this, "readIntoRequests", []);
_readableStreamReaderGenericInitialize(this, stream);
}
ReadableStreamBYOBReader.prototype.cancel = function(reason) {
if (!_isBYOBReader(this)) return Promise.reject(_typeError("this is not a ReadableStreamBYOBReader"));
var stream = _getSlot(this, "stream");
if (stream === undefined) return Promise.reject(_typeError("reader is not attached to a stream"));
return _readableStreamCancel(stream, reason);
};
ReadableStreamBYOBReader.prototype.read = function(view) {
if (!_isBYOBReader(this)) return Promise.reject(_typeError("this is not a ReadableStreamBYOBReader"));
if (!ArrayBuffer.isView(view)) return Promise.reject(_typeError("view must be an ArrayBufferView"));
var stream = _getSlot(this, "stream");
if (stream === undefined) return Promise.reject(_typeError("reader is not attached to a stream"));
_setSlot(stream, "disturbed", true);
var state = _getSlot(stream, "state");
if (state === STATE_CLOSED) return Promise.resolve({ value: undefined, done: true });
if (state === STATE_ERRORED) return Promise.reject(_getSlot(stream, "storedError"));
var controller = _getSlot(stream, "readableStreamController");
if (_isByteController(controller)) {
return _readableByteStreamControllerReadInto(controller, view);
}
return _readableStreamAddReadIntoRequest(stream, this);
};
ReadableStreamBYOBReader.prototype.releaseLock = function() {
if (!_isBYOBReader(this)) throw _typeError("this is not a ReadableStreamBYOBReader");
var stream = _getSlot(this, "stream");
if (stream === undefined) return;
_readableStreamBYOBReaderRelease(this);
};
Object.defineProperty(ReadableStreamBYOBReader.prototype, "closed", {
get: function() {
if (!_isBYOBReader(this)) return Promise.reject(_typeError("this is not a ReadableStreamBYOBReader"));
return _getSlot(this, "closedPromise").promise;
},
configurable: true,
enumerable: true
});
_g.ReadableStreamBYOBReader = ReadableStreamBYOBReader;
}
function _readableStreamBYOBReaderRelease(reader) {
var stream = _getSlot(reader, "stream");
if (stream === undefined) return;
_readableStreamReaderGenericRelease(reader);
var readIntoRequests = _getSlot(reader, "readIntoRequests");
if (readIntoRequests) {
for (var i = 0; i < readIntoRequests.length; i++) {
readIntoRequests[i].resolve({ value: undefined, done: true });
}
_setSlot(reader, "readIntoRequests", []);
}
}
if (typeof _g.ReadableStreamDefaultController === "undefined") {
function ReadableStreamDefaultController() {
throw _typeError("ReadableStreamDefaultController cannot be constructed directly");
}
ReadableStreamDefaultController.prototype.close = function() {
if (!_isDefaultController(this)) throw _typeError("this is not a ReadableStreamDefaultController");
var stream = _getSlot(this, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) throw _typeError("stream is not readable");
_readableStreamDefaultControllerClose(this);
};
ReadableStreamDefaultController.prototype.enqueue = function(chunk) {
if (!_isDefaultController(this)) throw _typeError("this is not a ReadableStreamDefaultController");
var stream = _getSlot(this, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) throw _typeError("stream is not readable");
return _readableStreamDefaultControllerEnqueue(this, chunk);
};
ReadableStreamDefaultController.prototype.error = function(e) {
if (!_isDefaultController(this)) throw _typeError("this is not a ReadableStreamDefaultController");
var stream = _getSlot(this, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) throw _typeError("stream is not readable");
_readableStreamDefaultControllerError(this, e);
};
Object.defineProperty(ReadableStreamDefaultController.prototype, "desiredSize", {
get: function() {
if (!_isDefaultController(this)) throw _typeError("this is not a ReadableStreamDefaultController");
return _readableStreamDefaultControllerGetDesiredSize(this);
},
configurable: true,
enumerable: true
});
_g.ReadableStreamDefaultController = ReadableStreamDefaultController;
}
function _setUpReadableStreamDefaultController(stream, underlyingSource, sizeAlgorithm, highWaterMark, startAlgorithm, pullAlgorithm, cancelAlgorithm) {
var controller = Object.create(_g.ReadableStreamDefaultController.prototype);
controller[_defaultControllerBrand] = true;
_setSlot(controller, "stream", stream);
_setSlot(controller, "queue", _newQueue());
_setSlot(controller, "started", false);
_setSlot(controller, "closeRequested", false);
_setSlot(controller, "pullAgain", false);
_setSlot(controller, "pulling", false);
_setSlot(controller, "underlyingSource", underlyingSource);
_setSlot(controller, "sizeAlgorithm", sizeAlgorithm);
_setSlot(controller, "highWaterMark", highWaterMark);
_setSlot(controller, "pullAlgorithm", pullAlgorithm);
_setSlot(controller, "cancelAlgorithm", cancelAlgorithm);
_setSlot(stream, "readableStreamController", controller);
var hwm = highWaterMark;
_setSlot(controller, "highWaterMark", hwm);
var startResult = startAlgorithm();
Promise.resolve(startResult).then(function() {
_setSlot(controller, "started", true);
_readableStreamDefaultControllerCallPullIfNeeded(controller);
}, function(e) {
_readableStreamDefaultControllerError(controller, e);
});
}
function _setUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, strategy) {
var sizeAlgorithm = _extractSizeAlgorithm(strategy);
var highWaterMark = _extractHighWaterMark(strategy, 1);
var startAlgorithm = function() { return _promiseInvokeOrNoopNoCatch(underlyingSource, "start", [controller]); };
var pullAlgorithm = function() { return _promiseInvokeOrNoop(underlyingSource, "pull", [controller]); };
var cancelAlgorithm = function(reason) { return _promiseInvokeOrNoop(underlyingSource, "cancel", [reason]); };
var controller;
controller = Object.create(_g.ReadableStreamDefaultController.prototype);
controller[_defaultControllerBrand] = true;
_setSlot(controller, "stream", stream);
_setSlot(controller, "queue", _newQueue());
_setSlot(controller, "started", false);
_setSlot(controller, "closeRequested", false);
_setSlot(controller, "pullAgain", false);
_setSlot(controller, "pulling", false);
_setSlot(controller, "underlyingSource", underlyingSource);
_setSlot(controller, "sizeAlgorithm", sizeAlgorithm);
_setSlot(controller, "highWaterMark", highWaterMark);
_setSlot(controller, "pullAlgorithm", pullAlgorithm);
_setSlot(controller, "cancelAlgorithm", cancelAlgorithm);
_setSlot(stream, "readableStreamController", controller);
var startResult = startAlgorithm();
Promise.resolve(startResult).then(function() {
_setSlot(controller, "started", true);
_readableStreamDefaultControllerCallPullIfNeeded(controller);
}, function(e) {
_readableStreamDefaultControllerError(controller, e);
});
}
function _readableStreamDefaultControllerCallPullIfNeeded(controller) {
if (!_readableStreamDefaultControllerShouldCallPull(controller)) return;
if (_getSlot(controller, "pulling")) {
_setSlot(controller, "pullAgain", true);
return;
}
_setSlot(controller, "pulling", true);
var pullAlgorithm = _getSlot(controller, "pullAlgorithm");
Promise.resolve(pullAlgorithm()).then(function() {
_setSlot(controller, "pulling", false);
if (_getSlot(controller, "pullAgain")) {
_setSlot(controller, "pullAgain", false);
_readableStreamDefaultControllerCallPullIfNeeded(controller);
}
}, function(e) {
_readableStreamDefaultControllerError(controller, e);
});
}
function _readableStreamDefaultControllerShouldCallPull(controller) {
var stream = _getSlot(controller, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) return false;
if (_getSlot(controller, "closeRequested")) return false;
if (!_getSlot(controller, "started")) return false;
if (_isReadableStreamLocked(stream) && _isDefaultReader(_getSlot(stream, "reader")) && _readableStreamHasReadRequests(stream)) return true;
var desiredSize = _readableStreamDefaultControllerGetDesiredSize(controller);
if (desiredSize === null || desiredSize > 0) return true;
return false;
}
function _readableStreamDefaultControllerGetDesiredSize(controller) {
var stream = _getSlot(controller, "stream");
var state = _getSlot(stream, "state");
if (state === STATE_ERRORED) return null;
if (state === STATE_CLOSED) return 0;
var queue = _getSlot(controller, "queue");
return _getSlot(controller, "highWaterMark") - queue.totalSize;
}
function _readableStreamDefaultControllerClose(controller) {
var stream = _getSlot(controller, "stream");
_setSlot(controller, "closeRequested", true);
if (_getSlot(stream, "state") !== STATE_READABLE) return;
var queue = _getSlot(controller, "queue");
if (queue.chunks.length === 0) {
_readableStreamClose(stream);
}
}
function _readableStreamDefaultControllerEnqueue(controller, chunk) {
var stream = _getSlot(controller, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) return;
var pendingReader = _getSlot(stream, "reader");
if (_isReadableStreamLocked(stream) && _isDefaultReader(pendingReader)) {
var pending = _getSlot(pendingReader, "readRequests");
if (pending && pending.length > 0) {
_readableStreamFulfillReadRequest(stream, chunk, false);
_readableStreamDefaultControllerCallPullIfNeeded(controller);
return;
}
}
var sizeAlgorithm = _getSlot(controller, "sizeAlgorithm");
try {
var size = sizeAlgorithm(chunk);
_enqueueValueWithSize(_getSlot(controller, "queue"), chunk, size);
} catch (e) {
_readableStreamDefaultControllerError(controller, e);
return;
}
_readableStreamDefaultControllerCallPullIfNeeded(controller);
}
function _readableStreamDefaultControllerError(controller, e) {
var stream = _getSlot(controller, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) return;
_resetQueue(_getSlot(controller, "queue"));
_readableStreamError(stream, e);
}
if (typeof _g.ReadableByteStreamController === "undefined") {
function ReadableByteStreamController() {
throw _typeError("ReadableByteStreamController cannot be constructed directly");
}
ReadableByteStreamController.prototype.close = function() {
if (!_isByteController(this)) throw _typeError("this is not a ReadableByteStreamController");
var stream = _getSlot(this, "stream");
if (_getSlot(this, "closeRequested")) throw _typeError("close has already been requested");
if (_getSlot(stream, "state") !== STATE_READABLE) throw _typeError("stream is not readable");
_readableByteStreamControllerClose(this);
};
ReadableByteStreamController.prototype.enqueue = function(chunk) {
if (!_isByteController(this)) throw _typeError("this is not a ReadableByteStreamController");
var stream = _getSlot(this, "stream");
if (_getSlot(this, "closeRequested")) throw _typeError("close has already been requested");
if (_getSlot(stream, "state") !== STATE_READABLE) throw _typeError("stream is not readable");
if (!ArrayBuffer.isView(chunk) && !(chunk instanceof ArrayBuffer)) {
throw _typeError("chunk must be an ArrayBufferView or ArrayBuffer");
}
_readableByteStreamControllerEnqueue(this, chunk);
};
ReadableByteStreamController.prototype.error = function(e) {
if (!_isByteController(this)) throw _typeError("this is not a ReadableByteStreamController");
var stream = _getSlot(this, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) throw _typeError("stream is not readable");
_readableByteStreamControllerError(this, e);
};
Object.defineProperty(ReadableByteStreamController.prototype, "byobRequest", {
get: function() {
if (!_isByteController(this)) throw _typeError("this is not a ReadableByteStreamController");
return _getSlot(this, "byobRequest") || null;
},
configurable: true,
enumerable: true
});
Object.defineProperty(ReadableByteStreamController.prototype, "desiredSize", {
get: function() {
if (!_isByteController(this)) throw _typeError("this is not a ReadableByteStreamController");
return _readableByteStreamControllerGetDesiredSize(this);
},
configurable: true,
enumerable: true
});
_g.ReadableByteStreamController = ReadableByteStreamController;
}
function _setUpReadableByteStreamController(stream, underlyingSource, highWaterMark, autoAllocateChunkSize) {
var controller = Object.create(_g.ReadableByteStreamController.prototype);
controller[_byteControllerBrand] = true;
_setSlot(controller, "stream", stream);
_setSlot(controller, "queue", _newQueue());
_setSlot(controller, "started", false);
_setSlot(controller, "closeRequested", false);
_setSlot(controller, "pullAgain", false);
_setSlot(controller, "pulling", false);
_setSlot(controller, "underlyingSource", underlyingSource);
_setSlot(controller, "highWaterMark", highWaterMark);
_setSlot(controller, "autoAllocateChunkSize", autoAllocateChunkSize);
_setSlot(controller, "pendingPullIntos", []);
_setSlot(controller, "byobRequest", null);
_setSlot(stream, "readableStreamController", controller);
var startResult = _promiseInvokeOrNoopNoCatch(underlyingSource, "start", [controller]);
Promise.resolve(startResult).then(function() {
_setSlot(controller, "started", true);
_readableByteStreamControllerCallPullIfNeeded(controller);
}, function(e) {
_readableByteStreamControllerError(controller, e);
});
}
function _setUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingSource, strategy) {
var highWaterMark = _extractHighWaterMark(strategy, 0);
var autoAllocateChunkSize = underlyingSource.autoAllocateChunkSize;
if (autoAllocateChunkSize !== undefined) {
autoAllocateChunkSize = Number(autoAllocateChunkSize);
if (autoAllocateChunkSize <= 0 || !isFinite(autoAllocateChunkSize)) {
throw _rangeError("autoAllocateChunkSize must be a positive finite number");
}
}
_setUpReadableByteStreamController(stream, underlyingSource, highWaterMark, autoAllocateChunkSize);
}
function _readableByteStreamControllerCallPullIfNeeded(controller) {
if (!_readableByteStreamControllerShouldCallPull(controller)) return;
if (_getSlot(controller, "pulling")) {
_setSlot(controller, "pullAgain", true);
return;
}
_setSlot(controller, "pulling", true);
_promiseInvokeOrNoop(_getSlot(controller, "underlyingSource"), "pull", [controller]).then(function() {
_setSlot(controller, "pulling", false);
if (_getSlot(controller, "pullAgain")) {
_setSlot(controller, "pullAgain", false);
_readableByteStreamControllerCallPullIfNeeded(controller);
}
}, function(e) {
_readableByteStreamControllerError(controller, e);
});
}
function _readableByteStreamControllerShouldCallPull(controller) {
var stream = _getSlot(controller, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) return false;
if (_getSlot(controller, "closeRequested")) return false;
if (!_getSlot(controller, "started")) return false;
if (_isReadableStreamLocked(stream) && _isBYOBReader(_getSlot(stream, "reader")) && _readableStreamHasReadIntoRequests(stream)) return true;
if (_isReadableStreamLocked(stream) && _isDefaultReader(_getSlot(stream, "reader")) && _readableStreamHasReadRequests(stream)) return true;
var desiredSize = _readableByteStreamControllerGetDesiredSize(controller);
if (desiredSize === null || desiredSize > 0) return true;
return false;
}
function _readableByteStreamControllerGetDesiredSize(controller) {
var stream = _getSlot(controller, "stream");
var state = _getSlot(stream, "state");
if (state === STATE_ERRORED) return null;
if (state === STATE_CLOSED) return 0;
return _getSlot(controller, "highWaterMark") - _getSlot(controller, "queue").totalSize;
}
function _readableByteStreamControllerClose(controller) {
var stream = _getSlot(controller, "stream");
_setSlot(controller, "closeRequested", true);
if (_getSlot(stream, "state") !== STATE_READABLE) return;
var queue = _getSlot(controller, "queue");
if (queue.chunks.length === 0) {
_readableStreamClose(stream);
}
}
function _readableByteStreamControllerEnqueue(controller, chunk) {
var stream = _getSlot(controller, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) return;
var bytes;
if (chunk instanceof ArrayBuffer) {
bytes = new Uint8Array(chunk);
} else if (ArrayBuffer.isView(chunk)) {
bytes = new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
} else {
throw _typeError("chunk must be an ArrayBufferView or ArrayBuffer");
}
if (_isReadableStreamLocked(stream) && _isDefaultReader(_getSlot(stream, "reader"))) {
_readableStreamFulfillReadRequest(stream, bytes, false);
} else if (_isReadableStreamLocked(stream) && _isBYOBReader(_getSlot(stream, "reader"))) {
_readableStreamFulfillReadIntoRequest(stream, bytes, false);
} else {
var queue = _getSlot(controller, "queue");
_enqueueValueWithSize(queue, bytes, bytes.byteLength);
}
_readableByteStreamControllerCallPullIfNeeded(controller);
}
function _readableByteStreamControllerError(controller, e) {
var stream = _getSlot(controller, "stream");
if (_getSlot(stream, "state") !== STATE_READABLE) return;
_resetQueue(_getSlot(controller, "queue"));
_readableStreamError(stream, e);
}
function _readableByteStreamControllerReadInto(controller, view) {
var stream = _getSlot(controller, "stream");
_setSlot(stream, "disturbed", true);
var state = _getSlot(stream, "state");
if (state === STATE_CLOSED) return Promise.resolve({ value: undefined, done: true });
if (state === STATE_ERRORED) return Promise.reject(_getSlot(stream, "storedError"));
var queue = _getSlot(controller, "queue");
if (queue.chunks.length > 0) {
var chunk = _dequeueValue(queue);
var viewBytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
var copied = Math.min(chunk.length, viewBytes.length);
viewBytes.set(chunk.subarray(0, copied));
_readableByteStreamControllerCallPullIfNeeded(controller);
if (copied < chunk.length) {
var remainder = chunk.subarray(copied);
queue.chunks.unshift({ value: remainder, size: remainder.byteLength });
queue.totalSize += remainder.byteLength;
}
return Promise.resolve({ value: new view.constructor(view.buffer, view.byteOffset, copied), done: false });
}
var autoAllocateChunkSize = _getSlot(controller, "autoAllocateChunkSize");
if (autoAllocateChunkSize !== undefined) {
var buffer = new ArrayBuffer(autoAllocateChunkSize);
var byobReq = _createBYOBRequest(controller, buffer, 0, autoAllocateChunkSize);
_setSlot(controller, "byobRequest", byobReq);
}
return _readableStreamAddReadIntoRequest(stream, _getSlot(stream, "reader"));
}
if (typeof _g.ReadableStreamBYOBRequest === "undefined") {
function ReadableStreamBYOBRequest() {
throw _typeError("ReadableStreamBYOBRequest cannot be constructed directly");
}
ReadableStreamBYOBRequest.prototype.respond = function(bytesWritten) {
if (!_isBYOBRequest(this)) throw _typeError("this is not a ReadableStreamBYOBRequest");
var controller = _getSlot(this, "controller");
if (controller === undefined) throw _typeError("this BYOBRequest has been invalidated");
_readableByteStreamControllerRespond(controller, bytesWritten);
};
ReadableStreamBYOBRequest.prototype.respondWithNewView = function(view) {
if (!_isBYOBRequest(this)) throw _typeError("this is not a ReadableStreamBYOBRequest");
var controller = _getSlot(this, "controller");
if (controller === undefined) throw _typeError("this BYOBRequest has been invalidated");
if (!ArrayBuffer.isView(view)) throw _typeError("view must be an ArrayBufferView");
_readableByteStreamControllerRespondWithNewView(controller, view);
};
Object.defineProperty(ReadableStreamBYOBRequest.prototype, "view", {
get: function() {
if (!_isBYOBRequest(this)) throw _typeError("this is not a ReadableStreamBYOBRequest");
var buffer = _getSlot(this, "buffer");
if (buffer === undefined) return undefined;
var byteOffset = _getSlot(this, "byteOffset") || 0;
var byteLength = _getSlot(this, "byteLength") || 0;
return new Uint8Array(buffer, byteOffset, byteLength);
},
configurable: true,
enumerable: true
});
_g.ReadableStreamBYOBRequest = ReadableStreamBYOBRequest;
}
function _createBYOBRequest(controller, buffer, byteOffset, byteLength) {
var req = Object.create(_g.ReadableStreamBYOBRequest.prototype);
req[_byobRequestBrand] = true;
_setSlot(req, "controller", controller);
_setSlot(req, "buffer", buffer);
_setSlot(req, "byteOffset", byteOffset);
_setSlot(req, "byteLength", byteLength);
return req;
}
function _readableByteStreamControllerRespond(controller, bytesWritten) {
var stream = _getSlot(controller, "stream");
if (_isReadableStreamLocked(stream) && _isBYOBReader(_getSlot(stream, "reader"))) {
_readableStreamFulfillReadIntoRequest(stream, new Uint8Array(_getSlot(controller, "byobRequest") ? _getSlot(_getSlot(controller, "byobRequest"), "buffer") : new ArrayBuffer(0), 0, bytesWritten), false);
}
_setSlot(controller, "byobRequest", null);
_readableByteStreamControllerCallPullIfNeeded(controller);
}
function _readableByteStreamControllerRespondWithNewView(controller, view) {
var stream = _getSlot(controller, "stream");
if (_isReadableStreamLocked(stream) && _isBYOBReader(_getSlot(stream, "reader"))) {
_readableStreamFulfillReadIntoRequest(stream, view, false);
}
_setSlot(controller, "byobRequest", null);
_readableByteStreamControllerCallPullIfNeeded(controller);
}
if (typeof _g.WritableStream === "undefined") {
function WritableStream(underlyingSink, strategy) {
if (!(this instanceof WritableStream)) return new WritableStream(underlyingSink, strategy);
this[_writableStreamBrand] = true;
_initializeWritableStream(this);
_setUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, strategy);
}
WritableStream.prototype.abort = function(reason) {
if (!_isWritableStream(this)) return Promise.reject(_typeError("this is not a WritableStream"));
var state = _getSlot(this, "state");
if (state === "closed" || state === "errored") return Promise.reject(_typeError("stream is " + state));
return _writableStreamAbort(this, reason);
};
WritableStream.prototype.close = function() {
if (!_isWritableStream(this)) return Promise.reject(_typeError("this is not a WritableStream"));
var state = _getSlot(this, "state");
if (state === "closed") return Promise.reject(_typeError("stream is already closed"));
if (state === "errored") return Promise.reject(_getSlot(this, "storedError"));
if (_getSlot(this, "closeRequested")) return Promise.reject(_typeError("close already requested"));
return _writableStreamClose(this);
};
WritableStream.prototype.getWriter = function() {
if (!_isWritableStream(this)) throw _typeError("this is not a WritableStream");
return new _g.WritableStreamDefaultWriter(this);
};
Object.defineProperty(WritableStream.prototype, "locked", {
get: function() {
if (!_isWritableStream(this)) throw _typeError("this is not a WritableStream");
return _isWritableStreamLocked(this);
},
configurable: true,
enumerable: true
});
_g.WritableStream = WritableStream;
}
function _initializeWritableStream(stream) {
_setSlot(stream, "state", "writable");
_setSlot(stream, "writer", undefined);
_setSlot(stream, "storedError", undefined);
_setSlot(stream, "closeRequested", false);
_setSlot(stream, "inFlightWriteRequest", undefined);
_setSlot(stream, "inFlightCloseRequest", undefined);
_setSlot(stream, "pendingAbortRequest", undefined);
_setSlot(stream, "backpressure", false);
_setSlot(stream, "writableStreamController", undefined);
_setSlot(stream, "writeRequests", []);
_setSlot(stream, "closeRequest", undefined);
}
function _writableStreamAbort(stream, reason) {
var state = _getSlot(stream, "state");
if (state === "closed" || state === "errored") return Promise.resolve(undefined);
_setSlot(stream, "state", "errored");
_setSlot(stream, "storedError", reason);
var controller = _getSlot(stream, "writableStreamController");
if (controller) {
return _promiseInvokeOrNoop(_getSlot(controller, "underlyingSink"), "abort", [reason])
.then(function() { return undefined; });
}
return Promise.resolve(undefined);
}
function _writableStreamClose(stream) {
var state = _getSlot(stream, "state");
if (state === "writable") {
_setSlot(stream, "closeRequested", true);
var controller = _getSlot(stream, "writableStreamController");
if (controller) {
var queue = _getSlot(controller, "queue");
if (queue.chunks.length === 0) {
_setSlot(stream, "state", "closing");
var closeRequest = {};
closeRequest.promise = new Promise(function(resolve, reject) {
closeRequest.resolve = resolve;
closeRequest.reject = reject;
});
_setSlot(stream, "closeRequest", closeRequest);
_writableStreamDefaultControllerClose(controller);
return closeRequest.promise;
}
}
_setSlot(stream, "state", "closing");
var closeReq = {};
closeReq.promise = new Promise(function(resolve, reject) {
closeReq.resolve = resolve;
closeReq.reject = reject;
});
_setSlot(stream, "closeRequest", closeReq);
return closeReq.promise;
}
if (state === "erroring") {
var closeP = {};
closeP.promise = new Promise(function(resolve, reject) {
closeP.resolve = resolve;
closeP.reject = reject;
});
_setSlot(stream, "closeRequest", closeP);
return closeP.promise;
}
return Promise.reject(_typeError("cannot close stream in state " + state));
}
function _writableStreamFinishClose(stream) {
_setSlot(stream, "state", "closed");
var closeRequest = _getSlot(stream, "closeRequest");
if (closeRequest && typeof closeRequest.resolve === "function") {
closeRequest.resolve(undefined);
}
var writer = _getSlot(stream, "writer");
if (writer) {
var closedPromise = _getSlot(writer, "closedPromise");
if (closedPromise && typeof closedPromise.resolve === "function") {
closedPromise.resolve(undefined);
}
}
}
function _writableStreamError(stream, error) {
_setSlot(stream, "state", "errored");
_setSlot(stream, "storedError", error);
var writer = _getSlot(stream, "writer");
if (writer) {
var closedPromise = _getSlot(writer, "closedPromise");
if (closedPromise && typeof closedPromise.reject === "function") {
closedPromise.reject(error);
}
var readyPromise = _getSlot(writer, "readyPromise");
if (readyPromise && typeof readyPromise.reject === "function") {
readyPromise.reject(error);
}
}
var writeRequests = _getSlot(stream, "writeRequests");
if (writeRequests) {
for (var i = 0; i < writeRequests.length; i++) {
writeRequests[i].reject(error);
}
_setSlot(stream, "writeRequests", []);
}
var closeRequest = _getSlot(stream, "closeRequest");
if (closeRequest && typeof closeRequest.reject === "function") {
closeRequest.reject(error);
}
}
if (typeof _g.WritableStreamDefaultWriter === "undefined") {
function WritableStreamDefaultWriter(stream) {
if (!(this instanceof WritableStreamDefaultWriter)) return new WritableStreamDefaultWriter(stream);
if (!_isWritableStream(stream)) throw _typeError("stream is not a WritableStream");
if (_isWritableStreamLocked(stream)) throw _typeError("stream is already locked");
this[_writableDefaultWriterBrand] = true;
_setSlot(this, "stream", stream);
_setSlot(stream, "writer", this);
var state = _getSlot(stream, "state");
var closedPromise = {};
var readyPromise = {};
if (state === "errored") {
closedPromise.promise = Promise.reject(_getSlot(stream, "storedError"));
closedPromise.resolve = undefined;
closedPromise.reject = undefined;
readyPromise.promise = Promise.reject(_getSlot(stream, "storedError"));
readyPromise.resolve = undefined;
readyPromise.reject = undefined;
} else if (state === "closed") {
closedPromise.promise = Promise.resolve(undefined);
closedPromise.resolve = undefined;
closedPromise.reject = undefined;
readyPromise.promise = Promise.resolve(undefined);
readyPromise.resolve = undefined;
readyPromise.reject = undefined;
} else {
closedPromise.promise = new Promise(function(resolve, reject) {
closedPromise.resolve = resolve;
closedPromise.reject = reject;
});
readyPromise.promise = new Promise(function(resolve, reject) {
readyPromise.resolve = resolve;
readyPromise.reject = reject;
});
}
_setSlot(this, "closedPromise", closedPromise);
_setSlot(this, "readyPromise", readyPromise);
}
WritableStreamDefaultWriter.prototype.abort = function(reason) {
if (!_isWritableDefaultWriter(this)) return Promise.reject(_typeError("this is not a WritableStreamDefaultWriter"));
var stream = _getSlot(this, "stream");
if (stream === undefined) return Promise.reject(_typeError("writer is not attached to a stream"));
return _writableStreamAbort(stream, reason);
};
WritableStreamDefaultWriter.prototype.close = function() {
if (!_isWritableDefaultWriter(this)) return Promise.reject(_typeError("this is not a WritableStreamDefaultWriter"));
var stream = _getSlot(this, "stream");
if (stream === undefined) return Promise.reject(_typeError("writer is not attached to a stream"));
return _writableStreamClose(stream);
};
WritableStreamDefaultWriter.prototype.write = function(chunk) {
if (!_isWritableDefaultWriter(this)) return Promise.reject(_typeError("this is not a WritableStreamDefaultWriter"));
var stream = _getSlot(this, "stream");
if (stream === undefined) return Promise.reject(_typeError("writer is not attached to a stream"));
var state = _getSlot(stream, "state");
if (state === "errored") return Promise.reject(_getSlot(stream, "storedError"));
if (state === "closed") return Promise.reject(_typeError("stream is closed"));
if (_getSlot(stream, "closeRequested")) return Promise.reject(_typeError("stream is closing"));
return _writableStreamDefaultWriterWrite(this, chunk);
};
WritableStreamDefaultWriter.prototype.releaseLock = function() {
if (!_isWritableDefaultWriter(this)) throw _typeError("this is not a WritableStreamDefaultWriter");
var stream = _getSlot(this, "stream");
if (stream === undefined) return;
_setSlot(stream, "writer", undefined);
_setSlot(this, "stream", undefined);
var closedPromise = _getSlot(this, "closedPromise");
if (closedPromise && typeof closedPromise.reject === "function") {
closedPromise.reject(_typeError("writer was released"));
}
};
Object.defineProperty(WritableStreamDefaultWriter.prototype, "closed", {
get: function() {
if (!_isWritableDefaultWriter(this)) return Promise.reject(_typeError("this is not a WritableStreamDefaultWriter"));
return _getSlot(this, "closedPromise").promise;
},
configurable: true,
enumerable: true
});
Object.defineProperty(WritableStreamDefaultWriter.prototype, "desiredSize", {
get: function() {
if (!_isWritableDefaultWriter(this)) throw _typeError("this is not a WritableStreamDefaultWriter");
var stream = _getSlot(this, "stream");
if (stream === undefined) throw _typeError("writer is not attached to a stream");
var controller = _getSlot(stream, "writableStreamController");
return controller ? _writableStreamDefaultControllerGetDesiredSize(controller) : null;
},
configurable: true,
enumerable: true
});
Object.defineProperty(WritableStreamDefaultWriter.prototype, "ready", {
get: function() {
if (!_isWritableDefaultWriter(this)) return Promise.reject(_typeError("this is not a WritableStreamDefaultWriter"));
return _getSlot(this, "readyPromise").promise;
},
configurable: true,
enumerable: true
});
_g.WritableStreamDefaultWriter = WritableStreamDefaultWriter;
}
function _writableStreamDefaultWriterWrite(writer, chunk) {
var stream = _getSlot(writer, "stream");
var controller = _getSlot(stream, "writableStreamController");
if (!controller) return Promise.reject(_typeError("stream has no controller"));
var writeReq = {};
writeReq.promise = new Promise(function(resolve, reject) {
writeReq.resolve = resolve;
writeReq.reject = reject;
});
var writeRequests = _getSlot(stream, "writeRequests");
writeRequests.push(writeReq);
var sizeAlgorithm = _getSlot(controller, "sizeAlgorithm");
try {
var size = sizeAlgorithm(chunk);
_enqueueValueWithSize(_getSlot(controller, "queue"), chunk, size);
} catch (e) {
_writableStreamError(stream, e);
return Promise.reject(e);
}
_writableStreamDefaultControllerCallWriteIfNeeded(controller);
return writeReq.promise;
}
if (typeof _g.WritableStreamDefaultController === "undefined") {
function WritableStreamDefaultController() {
throw _typeError("WritableStreamDefaultController cannot be constructed directly");
}
WritableStreamDefaultController.prototype.error = function(e) {
if (!_isWritableDefaultController(this)) throw _typeError("this is not a WritableStreamDefaultController");
var stream = _getSlot(this, "stream");
var state = _getSlot(stream, "state");
if (state === "writable") {
_writableStreamDefaultControllerError(this, e);
}
};
_g.WritableStreamDefaultController = WritableStreamDefaultController;
}
function _setUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, strategy) {
var sink = underlyingSink || {};
var sizeAlgorithm = _extractSizeAlgorithm(strategy);
var highWaterMark = _extractHighWaterMark(strategy, 1);
var controller = Object.create(_g.WritableStreamDefaultController.prototype);
controller[_writableDefaultControllerBrand] = true;
_setSlot(controller, "stream", stream);
_setSlot(controller, "underlyingSink", sink);
_setSlot(controller, "queue", _newQueue());
_setSlot(controller, "started", false);
_setSlot(controller, "sizeAlgorithm", sizeAlgorithm);
_setSlot(controller, "highWaterMark", highWaterMark);
_setSlot(stream, "writableStreamController", controller);
var backpressure = highWaterMark <= 0;
_setSlot(stream, "backpressure", backpressure);
if (backpressure) {
}
var startResult = _promiseInvokeOrNoopNoCatch(sink, "start", [controller]);
Promise.resolve(startResult).then(function() {
_setSlot(controller, "started", true);
_writableStreamDefaultControllerCallWriteIfNeeded(controller);
}, function(e) {
_writableStreamDefaultControllerError(controller, e);
});
}
function _writableStreamDefaultControllerGetDesiredSize(controller) {
var queue = _getSlot(controller, "queue");
return _getSlot(controller, "highWaterMark") - queue.totalSize;
}
function _writableStreamDefaultControllerClose(controller) {
var stream = _getSlot(controller, "stream");
_promiseInvokeOrNoop(_getSlot(controller, "underlyingSink"), "close", [controller]).then(function() {
_writableStreamFinishClose(stream);
}, function(e) {
_writableStreamError(stream, e);
});
}
function _writableStreamDefaultControllerError(controller, e) {
var stream = _getSlot(controller, "stream");
_writableStreamError(stream, e);
}
function _writableStreamDefaultControllerCallWriteIfNeeded(controller) {
var stream = _getSlot(controller, "stream");
var state = _getSlot(stream, "state");
if (state !== "writable") return;
if (!_getSlot(controller, "started")) return;
var queue = _getSlot(controller, "queue");
if (queue.chunks.length === 0) return;
var writeRequests = _getSlot(stream, "writeRequests");
if (writeRequests.length === 0) return;
var chunk = _dequeueValue(queue);
var writeReq = writeRequests.shift();
_promiseInvokeOrNoop(_getSlot(controller, "underlyingSink"), "write", [chunk, controller]).then(function() {
if (writeReq && typeof writeReq.resolve === "function") {
writeReq.resolve(undefined);
}
if (queue.chunks.length === 0 && _getSlot(stream, "closeRequested")) {
_writableStreamDefaultControllerClose(controller);
} else {
_writableStreamDefaultControllerCallWriteIfNeeded(controller);
}
}, function(e) {
if (writeReq && typeof writeReq.reject === "function") {
writeReq.reject(e);
}
_writableStreamError(stream, e);
});
}
if (typeof _g.TransformStream === "undefined") {
function TransformStream(transformer, writableStrategy, readableStrategy) {
if (!(this instanceof TransformStream)) return new TransformStream(transformer, writableStrategy, readableStrategy);
this[_transformStreamBrand] = true;
_initializeTransformStream(this, transformer, writableStrategy, readableStrategy);
}
Object.defineProperty(TransformStream.prototype, "readable", {
get: function() {
if (!_isTransformStream(this)) throw _typeError("this is not a TransformStream");
return _getSlot(this, "readable");
},
configurable: true,
enumerable: true
});
Object.defineProperty(TransformStream.prototype, "writable", {
get: function() {
if (!_isTransformStream(this)) throw _typeError("this is not a TransformStream");
return _getSlot(this, "writable");
},
configurable: true,
enumerable: true
});
_g.TransformStream = TransformStream;
}
function _initializeTransformStream(stream, transformer, writableStrategy, readableStrategy) {
var transform = transformer || {};
var transformAlgorithm = function(chunk, controller) {
try {
var result = transform.transform ? transform.transform(chunk, controller) : controller.enqueue(chunk);
return Promise.resolve(result);
} catch (e) {
return Promise.reject(e);
}
};
var flushAlgorithm = function(controller) {
return _promiseInvokeOrNoop(transform, "flush", [controller]);
};
var cancelAlgorithm = function(reason) {
return Promise.resolve(undefined);
};
var controller = _createTransformStreamDefaultController(transformAlgorithm, flushAlgorithm);
_setSlot(stream, "transformStreamController", controller);
_setSlot(controller, "stream", stream);
var writableHighWaterMark = _extractHighWaterMark(writableStrategy, 1);
var writableSizeAlgorithm = _extractSizeAlgorithm(writableStrategy);
var readableHighWaterMark = _extractHighWaterMark(readableStrategy, 0);
var readableSizeAlgorithm = _extractSizeAlgorithm(readableStrategy);
var writable = new _g.WritableStream({
start: function(wsController) {
},
write: function(chunk) {
return transformAlgorithm(chunk, controller);
},
close: function() {
return flushAlgorithm(controller).then(function() {
_readableStreamDefaultControllerClose(_getSlot(_getSlot(stream, "readable"), "readableStreamController"));
});
},
abort: function(reason) {
_readableStreamDefaultControllerError(_getSlot(_getSlot(stream, "readable"), "readableStreamController"), reason);
return Promise.resolve(undefined);
}
}, { highWaterMark: writableHighWaterMark, size: writableSizeAlgorithm });
var readable = new _g.ReadableStream({
start: function(rsController) {
_setSlot(controller, "readableController", rsController);
},
pull: function(rsController) {
},
cancel: function(reason) {
return cancelAlgorithm(reason);
}
}, { highWaterMark: readableHighWaterMark, size: readableSizeAlgorithm });
_setSlot(stream, "readable", readable);
_setSlot(stream, "writable", writable);
if (transform.start) {
Promise.resolve(transform.start(controller)).catch(function(e) {
_readableStreamDefaultControllerError(_getSlot(readable, "readableStreamController"), e);
});
}
}
function _createTransformStreamDefaultController(transformAlgorithm, flushAlgorithm) {
var controller = Object.create(_g.TransformStreamDefaultController.prototype);
controller[_transformDefaultControllerBrand] = true;
_setSlot(controller, "transformAlgorithm", transformAlgorithm);
_setSlot(controller, "flushAlgorithm", flushAlgorithm);
return controller;
}
if (typeof _g.TransformStreamDefaultController === "undefined") {
function TransformStreamDefaultController() {
throw _typeError("TransformStreamDefaultController cannot be constructed directly");
}
TransformStreamDefaultController.prototype.enqueue = function(chunk) {
if (!_isTransformDefaultController(this)) throw _typeError("this is not a TransformStreamDefaultController");
var stream = _getSlot(this, "stream");
var readable = _getSlot(stream, "readable");
var controller = _getSlot(readable, "readableStreamController");
_readableStreamDefaultControllerEnqueue(controller, chunk);
};
TransformStreamDefaultController.prototype.error = function(reason) {
if (!_isTransformDefaultController(this)) throw _typeError("this is not a TransformStreamDefaultController");
var stream = _getSlot(this, "stream");
var readable = _getSlot(stream, "readable");
var controller = _getSlot(readable, "readableStreamController");
_readableStreamDefaultControllerError(controller, reason);
};
TransformStreamDefaultController.prototype.terminate = function() {
if (!_isTransformDefaultController(this)) throw _typeError("this is not a TransformStreamDefaultController");
var stream = _getSlot(this, "stream");
var readable = _getSlot(stream, "readable");
var controller = _getSlot(readable, "readableStreamController");
_readableStreamDefaultControllerClose(controller);
var writable = _getSlot(stream, "writable");
_writableStreamError(writable, _typeError("transform stream terminated"));
};
_g.TransformStreamDefaultController = TransformStreamDefaultController;
}
if (typeof _g.ByteLengthQueuingStrategy === "undefined") {
function ByteLengthQueuingStrategy(init) {
if (!(this instanceof ByteLengthQueuingStrategy)) return new ByteLengthQueuingStrategy(init);
if (!_isObject(init)) throw _typeError("ByteLengthQueuingStrategy requires an object");
this.highWaterMark = init.highWaterMark;
}
ByteLengthQueuingStrategy.prototype.size = function(chunk) {
return chunk && chunk.byteLength !== undefined ? chunk.byteLength : 1;
};
_g.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;
}
if (typeof _g.CountQueuingStrategy === "undefined") {
function CountQueuingStrategy(init) {
if (!(this instanceof CountQueuingStrategy)) return new CountQueuingStrategy(init);
if (!_isObject(init)) throw _typeError("CountQueuingStrategy requires an object");
this.highWaterMark = init.highWaterMark;
}
CountQueuingStrategy.prototype.size = function() {
return 1;
};
_g.CountQueuingStrategy = CountQueuingStrategy;
}
if (typeof _g.TextEncoderStream === "undefined") {
function TextEncoderStream() {
if (!(this instanceof TextEncoderStream)) return new TextEncoderStream();
var encoder = new TextEncoder();
var ts = new _g.TransformStream({
transform: function(chunk, controller) {
if (typeof chunk === "string") {
var encoded = encoder.encode(chunk);
if (encoded.byteLength > 0) {
controller.enqueue(encoded);
}
} else {
controller.enqueue(chunk);
}
},
flush: function(controller) {
}
});
this._transformStream = ts;
}
Object.defineProperty(TextEncoderStream.prototype, "readable", {
get: function() { return this._transformStream.readable; },
configurable: true,
enumerable: true
});
Object.defineProperty(TextEncoderStream.prototype, "writable", {
get: function() { return this._transformStream.writable; },
configurable: true,
enumerable: true
});
Object.defineProperty(TextEncoderStream.prototype, "encoding", {
get: function() { return "utf-8"; },
configurable: true,
enumerable: true
});
_g.TextEncoderStream = TextEncoderStream;
}
if (typeof _g.TextDecoderStream === "undefined") {
function TextDecoderStream(encoding, options) {
if (!(this instanceof TextDecoderStream)) return new TextDecoderStream(encoding, options);
var decoder = new TextDecoder(encoding, options);
var firstChunk = true;
var ts = new _g.TransformStream({
transform: function(chunk, controller) {
var bytes;
if (typeof chunk === "string") {
bytes = new TextEncoder().encode(chunk);
} else if (ArrayBuffer.isView(chunk)) {
bytes = new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
} else if (chunk instanceof ArrayBuffer) {
bytes = new Uint8Array(chunk);
} else {
bytes = new Uint8Array(0);
}
var decoded = decoder.decode(bytes, { stream: true });
if (decoded.length > 0) {
controller.enqueue(decoded);
}
firstChunk = false;
},
flush: function(controller) {
var decoded = decoder.decode();
if (decoded.length > 0) {
controller.enqueue(decoded);
}
}
});
this._transformStream = ts;
this._encoding = decoder.encoding;
this._fatal = !!options && !!options.fatal;
this._ignoreBOM = !!options && !!options.ignoreBOM;
}
Object.defineProperty(TextDecoderStream.prototype, "readable", {
get: function() { return this._transformStream.readable; },
configurable: true,
enumerable: true
});
Object.defineProperty(TextDecoderStream.prototype, "writable", {
get: function() { return this._transformStream.writable; },
configurable: true,
enumerable: true
});
Object.defineProperty(TextDecoderStream.prototype, "encoding", {
get: function() { return this._encoding; },
configurable: true,
enumerable: true
});
Object.defineProperty(TextDecoderStream.prototype, "fatal", {
get: function() { return this._fatal; },
configurable: true,
enumerable: true
});
Object.defineProperty(TextDecoderStream.prototype, "ignoreBOM", {
get: function() { return this._ignoreBOM; },
configurable: true,
enumerable: true
});
_g.TextDecoderStream = TextDecoderStream;
}
if (typeof _g.CompressionStream === "undefined") {
function CompressionStream(format) {
if (!(this instanceof CompressionStream)) return new CompressionStream(format);
var fmt = String(format);
if (fmt !== "gzip" && fmt !== "deflate" && fmt !== "deflate-raw") {
throw _rangeError("CompressionStream format must be 'gzip', 'deflate', or 'deflate-raw'");
}
var chunks = [];
var ts = new _g.TransformStream({
transform: function(chunk, controller) {
var bytes;
if (typeof chunk === "string") {
bytes = new TextEncoder().encode(chunk);
} else if (ArrayBuffer.isView(chunk)) {
bytes = new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
} else if (chunk instanceof ArrayBuffer) {
bytes = new Uint8Array(chunk);
} else {
return;
}
chunks.push(bytes);
controller.enqueue(bytes);
},
flush: function(controller) {
}
});
this._transformStream = ts;
this._format = fmt;
}
Object.defineProperty(CompressionStream.prototype, "readable", {
get: function() { return this._transformStream.readable; },
configurable: true,
enumerable: true
});
Object.defineProperty(CompressionStream.prototype, "writable", {
get: function() { return this._transformStream.writable; },
configurable: true,
enumerable: true
});
_g.CompressionStream = CompressionStream;
}
if (typeof _g.DecompressionStream === "undefined") {
function DecompressionStream(format) {
if (!(this instanceof DecompressionStream)) return new DecompressionStream(format);
var fmt = String(format);
if (fmt !== "gzip" && fmt !== "deflate" && fmt !== "deflate-raw") {
throw _rangeError("DecompressionStream format must be 'gzip', 'deflate', or 'deflate-raw'");
}
var chunks = [];
var ts = new _g.TransformStream({
transform: function(chunk, controller) {
var bytes;
if (typeof chunk === "string") {
bytes = new TextEncoder().encode(chunk);
} else if (ArrayBuffer.isView(chunk)) {
bytes = new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);
} else if (chunk instanceof ArrayBuffer) {
bytes = new Uint8Array(chunk);
} else {
return;
}
chunks.push(bytes);
controller.enqueue(bytes);
},
flush: function(controller) {
}
});
this._transformStream = ts;
this._format = fmt;
}
Object.defineProperty(DecompressionStream.prototype, "readable", {
get: function() { return this._transformStream.readable; },
configurable: true,
enumerable: true
});
Object.defineProperty(DecompressionStream.prototype, "writable", {
get: function() { return this._transformStream.writable; },
configurable: true,
enumerable: true
});
_g.DecompressionStream = DecompressionStream;
}
})();