{"version":3,"sources":["../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/stub/symbol.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/utils.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/helpers/miscellaneous.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/helpers/webidl.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/simple-queue.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/abstract-ops/internal-methods.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/generic-reader.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/stub/number-isfinite.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/stub/math-trunc.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/basic.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/readable-stream.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/default-reader.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/target/es2018/stub/async-iterator-prototype.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/async-iterator.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/stub/number-isnan.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/abstract-ops/ecmascript.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/abstract-ops/miscellaneous.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/abstract-ops/queue-with-sizes.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/helpers/array-buffer-view.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/byte-stream-controller.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/reader-options.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/byob-reader.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/abstract-ops/queuing-strategy.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/queuing-strategy.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/underlying-sink.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/writable-stream.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/abort-signal.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/writable-stream.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/globals.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/stub/dom-exception.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/pipe.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/default-controller.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/tee.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/readable-stream-like.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream/from.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/underlying-source.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/iterator-options.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/pipe-options.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/readable-writable-pair.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/readable-stream.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/queuing-strategy-init.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/byte-length-queuing-strategy.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/count-queuing-strategy.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/validators/transformer.ts","../../../node_modules/.bun/web-streams-polyfill@3.3.2/node_modules/web-streams-polyfill/src/lib/transform-stream.ts","../../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/streams.cjs","../../../node_modules/.bun/node-domexception@1.0.0/node_modules/node-domexception/index.js","../../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/index.js","../../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/file.js","../../../node_modules/.bun/formdata-polyfill@4.0.10/node_modules/formdata-polyfill/esm.min.js","../../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/from.js"],"names":["x","i","Symbol","e","queueMicrotask","r","streamBrandCheckException","defaultControllerBrandCheckException","DOMException","ReadableStream","POOL_SIZE","Blob","exports","size","File","f","FormData","m","fs","stat"],"mappings":"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","file":"chunk-C4EDNNQP.mjs","sourcesContent":["/// <reference lib=\"es2015.symbol\" />\n\nconst SymbolPolyfill: (description?: string) => symbol =\n  typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ?\n    Symbol :\n    description => `Symbol(${description})` as any as symbol;\n\nexport default SymbolPolyfill;\n","export function noop(): undefined {\n  return undefined;\n}\n","import { noop } from '../../utils';\nimport { AssertionError } from '../../stub/assert';\n\nexport function typeIsObject(x: any): x is object {\n  return (typeof x === 'object' && x !== null) || typeof x === 'function';\n}\n\nexport const rethrowAssertionErrorRejection: (e: any) => void =\n  DEBUG ? e => {\n    // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n    // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n    // expect any errors, but assertion errors are always problematic.\n    if (e && e instanceof AssertionError) {\n      setTimeout(() => {\n        throw e;\n      }, 0);\n    }\n  } : noop;\n\nexport function setFunctionName(fn: Function, name: string): void {\n  try {\n    Object.defineProperty(fn, 'name', {\n      value: name,\n      configurable: true\n    });\n  } catch {\n    // This property is non-configurable in older browsers, so ignore if this throws.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#browser_compatibility\n  }\n}\n","import { rethrowAssertionErrorRejection } from './miscellaneous';\nimport assert from '../../stub/assert';\n\nconst originalPromise = Promise;\nconst originalPromiseThen = Promise.prototype.then;\nconst originalPromiseReject = Promise.reject.bind(originalPromise);\n\n// https://webidl.spec.whatwg.org/#a-new-promise\nexport function newPromise<T>(executor: (\n  resolve: (value: T | PromiseLike<T>) => void,\n  reject: (reason?: any) => void\n) => void): Promise<T> {\n  return new originalPromise(executor);\n}\n\n// https://webidl.spec.whatwg.org/#a-promise-resolved-with\nexport function promiseResolvedWith<T>(value: T | PromiseLike<T>): Promise<T> {\n  return newPromise(resolve => resolve(value));\n}\n\n// https://webidl.spec.whatwg.org/#a-promise-rejected-with\nexport function promiseRejectedWith<T = never>(reason: any): Promise<T> {\n  return originalPromiseReject(reason);\n}\n\nexport function PerformPromiseThen<T, TResult1 = T, TResult2 = never>(\n  promise: Promise<T>,\n  onFulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>,\n  onRejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2> {\n  // There doesn't appear to be any way to correctly emulate the behaviour from JavaScript, so this is just an\n  // approximation.\n  return originalPromiseThen.call(promise, onFulfilled, onRejected) as Promise<TResult1 | TResult2>;\n}\n\n// Bluebird logs a warning when a promise is created within a fulfillment handler, but then isn't returned\n// from that handler. To prevent this, return null instead of void from all handlers.\n// http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-created-in-a-handler-but-was-not-returned-from-it\nexport function uponPromise<T>(\n  promise: Promise<T>,\n  onFulfilled?: (value: T) => null | PromiseLike<null>,\n  onRejected?: (reason: any) => null | PromiseLike<null>): void {\n  PerformPromiseThen(\n    PerformPromiseThen(promise, onFulfilled, onRejected),\n    undefined,\n    rethrowAssertionErrorRejection\n  );\n}\n\nexport function uponFulfillment<T>(promise: Promise<T>, onFulfilled: (value: T) => null | PromiseLike<null>): void {\n  uponPromise(promise, onFulfilled);\n}\n\nexport function uponRejection(promise: Promise<unknown>, onRejected: (reason: any) => null | PromiseLike<null>): void {\n  uponPromise(promise, undefined, onRejected);\n}\n\nexport function transformPromiseWith<T, TResult1 = T, TResult2 = never>(\n  promise: Promise<T>,\n  fulfillmentHandler?: (value: T) => TResult1 | PromiseLike<TResult1>,\n  rejectionHandler?: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2> {\n  return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n}\n\nexport function setPromiseIsHandledToTrue(promise: Promise<unknown>): void {\n  PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n}\n\nlet _queueMicrotask: (callback: () => void) => void = callback => {\n  if (typeof queueMicrotask === 'function') {\n    _queueMicrotask = queueMicrotask;\n  } else {\n    const resolvedPromise = promiseResolvedWith(undefined);\n    _queueMicrotask = cb => PerformPromiseThen(resolvedPromise, cb);\n  }\n  return _queueMicrotask(callback);\n};\n\nexport { _queueMicrotask as queueMicrotask };\n\nexport function reflectCall<T, A extends any[], R>(F: (this: T, ...fnArgs: A) => R, V: T, args: A): R {\n  if (typeof F !== 'function') {\n    throw new TypeError('Argument is not a function');\n  }\n  return Function.prototype.apply.call(F, V, args);\n}\n\nexport function promiseCall<T, A extends any[], R>(F: (this: T, ...fnArgs: A) => R | PromiseLike<R>,\n                                                   V: T,\n                                                   args: A): Promise<R> {\n  assert(typeof F === 'function');\n  assert(V !== undefined);\n  assert(Array.isArray(args));\n  try {\n    return promiseResolvedWith(reflectCall(F, V, args));\n  } catch (value) {\n    return promiseRejectedWith(value);\n  }\n}\n","import assert from '../stub/assert';\n\n// Original from Chromium\n// https://chromium.googlesource.com/chromium/src/+/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/core/streams/SimpleQueue.js\n\nconst QUEUE_MAX_ARRAY_SIZE = 16384;\n\ninterface Node<T> {\n  _elements: T[];\n  _next: Node<T> | undefined;\n}\n\n/**\n * Simple queue structure.\n *\n * Avoids scalability issues with using a packed array directly by using\n * multiple arrays in a linked list and keeping the array size bounded.\n */\nexport class SimpleQueue<T> {\n  private _front: Node<T>;\n  private _back: Node<T>;\n  private _cursor = 0;\n  private _size = 0;\n\n  constructor() {\n    // _front and _back are always defined.\n    this._front = {\n      _elements: [],\n      _next: undefined\n    };\n    this._back = this._front;\n    // The cursor is used to avoid calling Array.shift().\n    // It contains the index of the front element of the array inside the\n    // front-most node. It is always in the range [0, QUEUE_MAX_ARRAY_SIZE).\n    this._cursor = 0;\n    // When there is only one node, size === elements.length - cursor.\n    this._size = 0;\n  }\n\n  get length(): number {\n    return this._size;\n  }\n\n  // For exception safety, this method is structured in order:\n  // 1. Read state\n  // 2. Calculate required state mutations\n  // 3. Perform state mutations\n  push(element: T): void {\n    const oldBack = this._back;\n    let newBack = oldBack;\n    assert(oldBack._next === undefined);\n    if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n      newBack = {\n        _elements: [],\n        _next: undefined\n      };\n    }\n\n    // push() is the mutation most likely to throw an exception, so it\n    // goes first.\n    oldBack._elements.push(element);\n    if (newBack !== oldBack) {\n      this._back = newBack;\n      oldBack._next = newBack;\n    }\n    ++this._size;\n  }\n\n  // Like push(), shift() follows the read -> calculate -> mutate pattern for\n  // exception safety.\n  shift(): T {\n    assert(this._size > 0); // must not be called on an empty queue\n\n    const oldFront = this._front;\n    let newFront = oldFront;\n    const oldCursor = this._cursor;\n    let newCursor = oldCursor + 1;\n\n    const elements = oldFront._elements;\n    const element = elements[oldCursor];\n\n    if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n      assert(elements.length === QUEUE_MAX_ARRAY_SIZE);\n      assert(oldFront._next !== undefined);\n      newFront = oldFront._next!;\n      newCursor = 0;\n    }\n\n    // No mutations before this point.\n    --this._size;\n    this._cursor = newCursor;\n    if (oldFront !== newFront) {\n      this._front = newFront;\n    }\n\n    // Permit shifted element to be garbage collected.\n    elements[oldCursor] = undefined!;\n\n    return element;\n  }\n\n  // The tricky thing about forEach() is that it can be called\n  // re-entrantly. The queue may be mutated inside the callback. It is easy to\n  // see that push() within the callback has no negative effects since the end\n  // of the queue is checked for on every iteration. If shift() is called\n  // repeatedly within the callback then the next iteration may return an\n  // element that has been removed. In this case the callback will be called\n  // with undefined values until we either \"catch up\" with elements that still\n  // exist or reach the back of the queue.\n  forEach(callback: (element: T) => void): void {\n    let i = this._cursor;\n    let node = this._front;\n    let elements = node._elements;\n    while (i !== elements.length || node._next !== undefined) {\n      if (i === elements.length) {\n        assert(node._next !== undefined);\n        assert(i === QUEUE_MAX_ARRAY_SIZE);\n        node = node._next!;\n        elements = node._elements;\n        i = 0;\n        if (elements.length === 0) {\n          break;\n        }\n      }\n      callback(elements[i]);\n      ++i;\n    }\n  }\n\n  // Return the element that would be returned if shift() was called now,\n  // without modifying the queue.\n  peek(): T {\n    assert(this._size > 0); // must not be called on an empty queue\n\n    const front = this._front;\n    const cursor = this._cursor;\n    return front._elements[cursor];\n  }\n}\n","export const AbortSteps = Symbol('[[AbortSteps]]');\nexport const ErrorSteps = Symbol('[[ErrorSteps]]');\nexport const CancelSteps = Symbol('[[CancelSteps]]');\nexport const PullSteps = Symbol('[[PullSteps]]');\nexport const ReleaseSteps = Symbol('[[ReleaseSteps]]');\n","import assert from '../../stub/assert';\nimport { ReadableStream, ReadableStreamCancel, type ReadableStreamReader } from '../readable-stream';\nimport { newPromise, setPromiseIsHandledToTrue } from '../helpers/webidl';\nimport { ReleaseSteps } from '../abstract-ops/internal-methods';\n\nexport function ReadableStreamReaderGenericInitialize<R>(reader: ReadableStreamReader<R>, stream: ReadableStream<R>) {\n  reader._ownerReadableStream = stream;\n  stream._reader = reader;\n\n  if (stream._state === 'readable') {\n    defaultReaderClosedPromiseInitialize(reader);\n  } else if (stream._state === 'closed') {\n    defaultReaderClosedPromiseInitializeAsResolved(reader);\n  } else {\n    assert(stream._state === 'errored');\n\n    defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n  }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nexport function ReadableStreamReaderGenericCancel(reader: ReadableStreamReader<any>, reason: any): Promise<undefined> {\n  const stream = reader._ownerReadableStream;\n  assert(stream !== undefined);\n  return ReadableStreamCancel(stream, reason);\n}\n\nexport function ReadableStreamReaderGenericRelease(reader: ReadableStreamReader<any>) {\n  const stream = reader._ownerReadableStream;\n  assert(stream !== undefined);\n  assert(stream._reader === reader);\n\n  if (stream._state === 'readable') {\n    defaultReaderClosedPromiseReject(\n      reader,\n      new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));\n  } else {\n    defaultReaderClosedPromiseResetToRejected(\n      reader,\n      new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));\n  }\n\n  stream._readableStreamController[ReleaseSteps]();\n\n  stream._reader = undefined;\n  reader._ownerReadableStream = undefined!;\n}\n\n// Helper functions for the readers.\n\nexport function readerLockException(name: string): TypeError {\n  return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nexport function defaultReaderClosedPromiseInitialize(reader: ReadableStreamReader<any>) {\n  reader._closedPromise = newPromise((resolve, reject) => {\n    reader._closedPromise_resolve = resolve;\n    reader._closedPromise_reject = reject;\n  });\n}\n\nexport function defaultReaderClosedPromiseInitializeAsRejected(reader: ReadableStreamReader<any>, reason: any) {\n  defaultReaderClosedPromiseInitialize(reader);\n  defaultReaderClosedPromiseReject(reader, reason);\n}\n\nexport function defaultReaderClosedPromiseInitializeAsResolved(reader: ReadableStreamReader<any>) {\n  defaultReaderClosedPromiseInitialize(reader);\n  defaultReaderClosedPromiseResolve(reader);\n}\n\nexport function defaultReaderClosedPromiseReject(reader: ReadableStreamReader<any>, reason: any) {\n  if (reader._closedPromise_reject === undefined) {\n    return;\n  }\n\n  setPromiseIsHandledToTrue(reader._closedPromise);\n  reader._closedPromise_reject(reason);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\nexport function defaultReaderClosedPromiseResetToRejected(reader: ReadableStreamReader<any>, reason: any) {\n  assert(reader._closedPromise_resolve === undefined);\n  assert(reader._closedPromise_reject === undefined);\n\n  defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n}\n\nexport function defaultReaderClosedPromiseResolve(reader: ReadableStreamReader<any>) {\n  if (reader._closedPromise_resolve === undefined) {\n    return;\n  }\n\n  reader._closedPromise_resolve(undefined);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n","/// <reference lib=\"es2015.core\" />\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill\nconst NumberIsFinite: typeof Number.isFinite = Number.isFinite || function (x) {\n  return typeof x === 'number' && isFinite(x);\n};\n\nexport default NumberIsFinite;\n","/// <reference lib=\"es2015.core\" />\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc#Polyfill\nconst MathTrunc: typeof Math.trunc = Math.trunc || function (v) {\n  return v < 0 ? Math.ceil(v) : Math.floor(v);\n};\n\nexport default MathTrunc;\n","import NumberIsFinite from '../../stub/number-isfinite';\nimport MathTrunc from '../../stub/math-trunc';\n\n// https://heycam.github.io/webidl/#idl-dictionaries\nexport function isDictionary(x: any): x is object | null {\n  return typeof x === 'object' || typeof x === 'function';\n}\n\nexport function assertDictionary(obj: unknown,\n                                 context: string): asserts obj is object | null | undefined {\n  if (obj !== undefined && !isDictionary(obj)) {\n    throw new TypeError(`${context} is not an object.`);\n  }\n}\n\nexport type AnyFunction = (...args: any[]) => any;\n\n// https://heycam.github.io/webidl/#idl-callback-functions\nexport function assertFunction(x: unknown, context: string): asserts x is AnyFunction {\n  if (typeof x !== 'function') {\n    throw new TypeError(`${context} is not a function.`);\n  }\n}\n\n// https://heycam.github.io/webidl/#idl-object\nexport function isObject(x: any): x is object {\n  return (typeof x === 'object' && x !== null) || typeof x === 'function';\n}\n\nexport function assertObject(x: unknown,\n                             context: string): asserts x is object {\n  if (!isObject(x)) {\n    throw new TypeError(`${context} is not an object.`);\n  }\n}\n\nexport function assertRequiredArgument<T>(x: T | undefined,\n                                          position: number,\n                                          context: string): asserts x is T {\n  if (x === undefined) {\n    throw new TypeError(`Parameter ${position} is required in '${context}'.`);\n  }\n}\n\nexport function assertRequiredField<T>(x: T | undefined,\n                                       field: string,\n                                       context: string): asserts x is T {\n  if (x === undefined) {\n    throw new TypeError(`${field} is required in '${context}'.`);\n  }\n}\n\n// https://heycam.github.io/webidl/#idl-unrestricted-double\nexport function convertUnrestrictedDouble(value: unknown): number {\n  return Number(value);\n}\n\nfunction censorNegativeZero(x: number): number {\n  return x === 0 ? 0 : x;\n}\n\nfunction integerPart(x: number): number {\n  return censorNegativeZero(MathTrunc(x));\n}\n\n// https://heycam.github.io/webidl/#idl-unsigned-long-long\nexport function convertUnsignedLongLongWithEnforceRange(value: unknown, context: string): number {\n  const lowerBound = 0;\n  const upperBound = Number.MAX_SAFE_INTEGER;\n\n  let x = Number(value);\n  x = censorNegativeZero(x);\n\n  if (!NumberIsFinite(x)) {\n    throw new TypeError(`${context} is not a finite number`);\n  }\n\n  x = integerPart(x);\n\n  if (x < lowerBound || x > upperBound) {\n    throw new TypeError(`${context} is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`);\n  }\n\n  if (!NumberIsFinite(x) || x === 0) {\n    return 0;\n  }\n\n  // TODO Use BigInt if supported?\n  // let xBigInt = BigInt(integerPart(x));\n  // xBigInt = BigInt.asUintN(64, xBigInt);\n  // return Number(xBigInt);\n\n  return x;\n}\n","import { IsReadableStream, ReadableStream } from '../readable-stream';\n\nexport function assertReadableStream(x: unknown, context: string): asserts x is ReadableStream {\n  if (!IsReadableStream(x)) {\n    throw new TypeError(`${context} is not a ReadableStream.`);\n  }\n}\n","import assert from '../../stub/assert';\nimport { SimpleQueue } from '../simple-queue';\nimport {\n  ReadableStreamReaderGenericCancel,\n  ReadableStreamReaderGenericInitialize,\n  ReadableStreamReaderGenericRelease,\n  readerLockException\n} from './generic-reader';\nimport { IsReadableStreamLocked, ReadableStream } from '../readable-stream';\nimport { setFunctionName, typeIsObject } from '../helpers/miscellaneous';\nimport { PullSteps } from '../abstract-ops/internal-methods';\nimport { newPromise, promiseRejectedWith } from '../helpers/webidl';\nimport { assertRequiredArgument } from '../validators/basic';\nimport { assertReadableStream } from '../validators/readable-stream';\n\n/**\n * A result returned by {@link ReadableStreamDefaultReader.read}.\n *\n * @public\n */\nexport type ReadableStreamDefaultReadResult<T> = {\n  done: false;\n  value: T;\n} | {\n  done: true;\n  value?: undefined;\n}\n\n// Abstract operations for the ReadableStream.\n\nexport function AcquireReadableStreamDefaultReader<R>(stream: ReadableStream): ReadableStreamDefaultReader<R> {\n  return new ReadableStreamDefaultReader(stream);\n}\n\n// ReadableStream API exposed for controllers.\n\nexport function ReadableStreamAddReadRequest<R>(stream: ReadableStream<R>,\n                                                readRequest: ReadRequest<R>): void {\n  assert(IsReadableStreamDefaultReader(stream._reader));\n  assert(stream._state === 'readable');\n\n  (stream._reader! as ReadableStreamDefaultReader<R>)._readRequests.push(readRequest);\n}\n\nexport function ReadableStreamFulfillReadRequest<R>(stream: ReadableStream<R>, chunk: R | undefined, done: boolean) {\n  const reader = stream._reader as ReadableStreamDefaultReader<R>;\n\n  assert(reader._readRequests.length > 0);\n\n  const readRequest = reader._readRequests.shift()!;\n  if (done) {\n    readRequest._closeSteps();\n  } else {\n    readRequest._chunkSteps(chunk!);\n  }\n}\n\nexport function ReadableStreamGetNumReadRequests<R>(stream: ReadableStream<R>): number {\n  return (stream._reader as ReadableStreamDefaultReader<R>)._readRequests.length;\n}\n\nexport function ReadableStreamHasDefaultReader(stream: ReadableStream): boolean {\n  const reader = stream._reader;\n\n  if (reader === undefined) {\n    return false;\n  }\n\n  if (!IsReadableStreamDefaultReader(reader)) {\n    return false;\n  }\n\n  return true;\n}\n\n// Readers\n\nexport interface ReadRequest<R> {\n  _chunkSteps(chunk: R): void;\n\n  _closeSteps(): void;\n\n  _errorSteps(e: any): void;\n}\n\n/**\n * A default reader vended by a {@link ReadableStream}.\n *\n * @public\n */\nexport class ReadableStreamDefaultReader<R = any> {\n  /** @internal */\n  _ownerReadableStream!: ReadableStream<R>;\n  /** @internal */\n  _closedPromise!: Promise<undefined>;\n  /** @internal */\n  _closedPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _closedPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _readRequests: SimpleQueue<ReadRequest<R>>;\n\n  constructor(stream: ReadableStream<R>) {\n    assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader');\n    assertReadableStream(stream, 'First parameter');\n\n    if (IsReadableStreamLocked(stream)) {\n      throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n    }\n\n    ReadableStreamReaderGenericInitialize(this, stream);\n\n    this._readRequests = new SimpleQueue();\n  }\n\n  /**\n   * Returns a promise that will be fulfilled when the stream becomes closed,\n   * or rejected if the stream ever errors or the reader's lock is released before the stream finishes closing.\n   */\n  get closed(): Promise<undefined> {\n    if (!IsReadableStreamDefaultReader(this)) {\n      return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n    }\n\n    return this._closedPromise;\n  }\n\n  /**\n   * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n   */\n  cancel(reason: any = undefined): Promise<void> {\n    if (!IsReadableStreamDefaultReader(this)) {\n      return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return promiseRejectedWith(readerLockException('cancel'));\n    }\n\n    return ReadableStreamReaderGenericCancel(this, reason);\n  }\n\n  /**\n   * Returns a promise that allows access to the next chunk from the stream's internal queue, if available.\n   *\n   * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.\n   */\n  read(): Promise<ReadableStreamDefaultReadResult<R>> {\n    if (!IsReadableStreamDefaultReader(this)) {\n      return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return promiseRejectedWith(readerLockException('read from'));\n    }\n\n    let resolvePromise!: (result: ReadableStreamDefaultReadResult<R>) => void;\n    let rejectPromise!: (reason: any) => void;\n    const promise = newPromise<ReadableStreamDefaultReadResult<R>>((resolve, reject) => {\n      resolvePromise = resolve;\n      rejectPromise = reject;\n    });\n    const readRequest: ReadRequest<R> = {\n      _chunkSteps: chunk => resolvePromise({ value: chunk, done: false }),\n      _closeSteps: () => resolvePromise({ value: undefined, done: true }),\n      _errorSteps: e => rejectPromise(e)\n    };\n    ReadableStreamDefaultReaderRead(this, readRequest);\n    return promise;\n  }\n\n  /**\n   * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.\n   * If the associated stream is errored when the lock is released, the reader will appear errored in the same way\n   * from now on; otherwise, the reader will appear closed.\n   *\n   * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by\n   * the reader's {@link ReadableStreamDefaultReader.read | read()} method has not yet been settled. Attempting to\n   * do so will throw a `TypeError` and leave the reader locked to the stream.\n   */\n  releaseLock(): void {\n    if (!IsReadableStreamDefaultReader(this)) {\n      throw defaultReaderBrandCheckException('releaseLock');\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return;\n    }\n\n    ReadableStreamDefaultReaderRelease(this);\n  }\n}\n\nObject.defineProperties(ReadableStreamDefaultReader.prototype, {\n  cancel: { enumerable: true },\n  read: { enumerable: true },\n  releaseLock: { enumerable: true },\n  closed: { enumerable: true }\n});\nsetFunctionName(ReadableStreamDefaultReader.prototype.cancel, 'cancel');\nsetFunctionName(ReadableStreamDefaultReader.prototype.read, 'read');\nsetFunctionName(ReadableStreamDefaultReader.prototype.releaseLock, 'releaseLock');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStreamDefaultReader.prototype, Symbol.toStringTag, {\n    value: 'ReadableStreamDefaultReader',\n    configurable: true\n  });\n}\n\n// Abstract operations for the readers.\n\nexport function IsReadableStreamDefaultReader<R = any>(x: any): x is ReadableStreamDefaultReader<R> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n    return false;\n  }\n\n  return x instanceof ReadableStreamDefaultReader;\n}\n\nexport function ReadableStreamDefaultReaderRead<R>(reader: ReadableStreamDefaultReader<R>,\n                                                   readRequest: ReadRequest<R>): void {\n  const stream = reader._ownerReadableStream;\n\n  assert(stream !== undefined);\n\n  stream._disturbed = true;\n\n  if (stream._state === 'closed') {\n    readRequest._closeSteps();\n  } else if (stream._state === 'errored') {\n    readRequest._errorSteps(stream._storedError);\n  } else {\n    assert(stream._state === 'readable');\n    stream._readableStreamController[PullSteps](readRequest as ReadRequest<any>);\n  }\n}\n\nexport function ReadableStreamDefaultReaderRelease(reader: ReadableStreamDefaultReader) {\n  ReadableStreamReaderGenericRelease(reader);\n  const e = new TypeError('Reader was released');\n  ReadableStreamDefaultReaderErrorReadRequests(reader, e);\n}\n\nexport function ReadableStreamDefaultReaderErrorReadRequests(reader: ReadableStreamDefaultReader, e: any) {\n  const readRequests = reader._readRequests;\n  reader._readRequests = new SimpleQueue();\n  readRequests.forEach(readRequest => {\n    readRequest._errorSteps(e);\n  });\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableStreamDefaultReader.prototype.${name} can only be used on a ReadableStreamDefaultReader`);\n}\n","/// <reference lib=\"es2018.asynciterable\" />\n\n/* eslint-disable @typescript-eslint/no-empty-function */\nexport const AsyncIteratorPrototype: AsyncIterable<any> | undefined =\n  Object.getPrototypeOf(Object.getPrototypeOf(async function* (): AsyncIterableIterator<any> {}).prototype);\n","/// <reference lib=\"es2018.asynciterable\" />\n\nimport { ReadableStream } from '../readable-stream';\nimport {\n  AcquireReadableStreamDefaultReader,\n  ReadableStreamDefaultReader,\n  ReadableStreamDefaultReaderRead,\n  type ReadableStreamDefaultReadResult,\n  type ReadRequest\n} from './default-reader';\nimport { ReadableStreamReaderGenericCancel, ReadableStreamReaderGenericRelease } from './generic-reader';\nimport assert from '../../stub/assert';\nimport { AsyncIteratorPrototype } from '@@target/stub/async-iterator-prototype';\nimport { typeIsObject } from '../helpers/miscellaneous';\nimport {\n  newPromise,\n  promiseRejectedWith,\n  promiseResolvedWith,\n  queueMicrotask,\n  transformPromiseWith\n} from '../helpers/webidl';\n\n/**\n * An async iterator returned by {@link ReadableStream.values}.\n *\n * @public\n */\nexport interface ReadableStreamAsyncIterator<R> extends AsyncIterator<R> {\n  next(): Promise<IteratorResult<R, undefined>>;\n\n  return(value?: any): Promise<IteratorResult<any>>;\n}\n\nexport class ReadableStreamAsyncIteratorImpl<R> {\n  private readonly _reader: ReadableStreamDefaultReader<R>;\n  private readonly _preventCancel: boolean;\n  private _ongoingPromise: Promise<ReadableStreamDefaultReadResult<R>> | undefined = undefined;\n  private _isFinished = false;\n\n  constructor(reader: ReadableStreamDefaultReader<R>, preventCancel: boolean) {\n    this._reader = reader;\n    this._preventCancel = preventCancel;\n  }\n\n  next(): Promise<ReadableStreamDefaultReadResult<R>> {\n    const nextSteps = () => this._nextSteps();\n    this._ongoingPromise = this._ongoingPromise ?\n      transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) :\n      nextSteps();\n    return this._ongoingPromise;\n  }\n\n  return(value: any): Promise<ReadableStreamDefaultReadResult<any>> {\n    const returnSteps = () => this._returnSteps(value);\n    return this._ongoingPromise ?\n      transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) :\n      returnSteps();\n  }\n\n  private _nextSteps(): Promise<ReadableStreamDefaultReadResult<R>> {\n    if (this._isFinished) {\n      return Promise.resolve({ value: undefined, done: true });\n    }\n\n    const reader = this._reader;\n    assert(reader._ownerReadableStream !== undefined);\n\n    let resolvePromise!: (result: ReadableStreamDefaultReadResult<R>) => void;\n    let rejectPromise!: (reason: any) => void;\n    const promise = newPromise<ReadableStreamDefaultReadResult<R>>((resolve, reject) => {\n      resolvePromise = resolve;\n      rejectPromise = reject;\n    });\n    const readRequest: ReadRequest<R> = {\n      _chunkSteps: chunk => {\n        this._ongoingPromise = undefined;\n        // This needs to be delayed by one microtask, otherwise we stop pulling too early which breaks a test.\n        // FIXME Is this a bug in the specification, or in the test?\n        queueMicrotask(() => resolvePromise({ value: chunk, done: false }));\n      },\n      _closeSteps: () => {\n        this._ongoingPromise = undefined;\n        this._isFinished = true;\n        ReadableStreamReaderGenericRelease(reader);\n        resolvePromise({ value: undefined, done: true });\n      },\n      _errorSteps: reason => {\n        this._ongoingPromise = undefined;\n        this._isFinished = true;\n        ReadableStreamReaderGenericRelease(reader);\n        rejectPromise(reason);\n      }\n    };\n    ReadableStreamDefaultReaderRead(reader, readRequest);\n    return promise;\n  }\n\n  private _returnSteps(value: any): Promise<ReadableStreamDefaultReadResult<any>> {\n    if (this._isFinished) {\n      return Promise.resolve({ value, done: true });\n    }\n    this._isFinished = true;\n\n    const reader = this._reader;\n    assert(reader._ownerReadableStream !== undefined);\n    assert(reader._readRequests.length === 0);\n\n    if (!this._preventCancel) {\n      const result = ReadableStreamReaderGenericCancel(reader, value);\n      ReadableStreamReaderGenericRelease(reader);\n      return transformPromiseWith(result, () => ({ value, done: true }));\n    }\n\n    ReadableStreamReaderGenericRelease(reader);\n    return promiseResolvedWith({ value, done: true });\n  }\n}\n\ninterface ReadableStreamAsyncIteratorInstance<R> extends ReadableStreamAsyncIterator<R> {\n  /** @interal */\n  _asyncIteratorImpl: ReadableStreamAsyncIteratorImpl<R>;\n\n  next(): Promise<IteratorResult<R, undefined>>;\n\n  return(value?: any): Promise<IteratorResult<any>>;\n}\n\nconst ReadableStreamAsyncIteratorPrototype: ReadableStreamAsyncIteratorInstance<any> = {\n  next(this: ReadableStreamAsyncIteratorInstance<any>): Promise<ReadableStreamDefaultReadResult<any>> {\n    if (!IsReadableStreamAsyncIterator(this)) {\n      return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n    }\n    return this._asyncIteratorImpl.next();\n  },\n\n  return(this: ReadableStreamAsyncIteratorInstance<any>, value: any): Promise<ReadableStreamDefaultReadResult<any>> {\n    if (!IsReadableStreamAsyncIterator(this)) {\n      return promiseRejectedWith(streamAsyncIteratorBrandCheckException('return'));\n    }\n    return this._asyncIteratorImpl.return(value);\n  }\n} as any;\nif (AsyncIteratorPrototype !== undefined) {\n  Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n}\n\n// Abstract operations for the ReadableStream.\n\nexport function AcquireReadableStreamAsyncIterator<R>(stream: ReadableStream<R>,\n                                                      preventCancel: boolean): ReadableStreamAsyncIterator<R> {\n  const reader = AcquireReadableStreamDefaultReader<R>(stream);\n  const impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel);\n  const iterator: ReadableStreamAsyncIteratorInstance<R> = Object.create(ReadableStreamAsyncIteratorPrototype);\n  iterator._asyncIteratorImpl = impl;\n  return iterator;\n}\n\nfunction IsReadableStreamAsyncIterator<R = any>(x: any): x is ReadableStreamAsyncIterator<R> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) {\n    return false;\n  }\n\n  try {\n    // noinspection SuspiciousTypeOfGuard\n    return (x as ReadableStreamAsyncIteratorInstance<any>)._asyncIteratorImpl instanceof\n      ReadableStreamAsyncIteratorImpl;\n  } catch {\n    return false;\n  }\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamAsyncIteratorBrandCheckException(name: string): TypeError {\n  return new TypeError(`ReadableStreamAsyncIterator.${name} can only be used on a ReadableSteamAsyncIterator`);\n}\n","/// <reference lib=\"es2015.core\" />\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Polyfill\nconst NumberIsNaN: typeof Number.isNaN = Number.isNaN || function (x) {\n  // eslint-disable-next-line no-self-compare\n  return x !== x;\n};\n\nexport default NumberIsNaN;\n","import { reflectCall } from 'lib/helpers/webidl';\nimport { typeIsObject } from '../helpers/miscellaneous';\nimport assert from '../../stub/assert';\n\ndeclare global {\n  interface ArrayBuffer {\n    readonly detached: boolean;\n\n    transfer(): ArrayBuffer;\n  }\n\n  function structuredClone<T>(value: T, options: { transfer: ArrayBuffer[] }): T;\n}\n\nexport function CreateArrayFromList<T extends any[]>(elements: T): T {\n  // We use arrays to represent lists, so this is basically a no-op.\n  // Do a slice though just in case we happen to depend on the unique-ness.\n  return elements.slice() as T;\n}\n\nexport function CopyDataBlockBytes(dest: ArrayBuffer,\n                                   destOffset: number,\n                                   src: ArrayBuffer,\n                                   srcOffset: number,\n                                   n: number) {\n  new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n}\n\nexport let TransferArrayBuffer = (O: ArrayBuffer): ArrayBuffer => {\n  if (typeof O.transfer === 'function') {\n    TransferArrayBuffer = buffer => buffer.transfer();\n  } else if (typeof structuredClone === 'function') {\n    TransferArrayBuffer = buffer => structuredClone(buffer, { transfer: [buffer] });\n  } else {\n    // Not implemented correctly\n    TransferArrayBuffer = buffer => buffer;\n  }\n  return TransferArrayBuffer(O);\n};\n\nexport function CanTransferArrayBuffer(O: ArrayBuffer): boolean {\n  return !IsDetachedBuffer(O);\n}\n\nexport let IsDetachedBuffer = (O: ArrayBuffer): boolean => {\n  if (typeof O.detached === 'boolean') {\n    IsDetachedBuffer = buffer => buffer.detached;\n  } else {\n    // Not implemented correctly\n    IsDetachedBuffer = buffer => buffer.byteLength === 0;\n  }\n  return IsDetachedBuffer(O);\n};\n\nexport function ArrayBufferSlice(buffer: ArrayBuffer, begin: number, end: number): ArrayBuffer {\n  // ArrayBuffer.prototype.slice is not available on IE10\n  // https://www.caniuse.com/mdn-javascript_builtins_arraybuffer_slice\n  if (buffer.slice) {\n    return buffer.slice(begin, end);\n  }\n  const length = end - begin;\n  const slice = new ArrayBuffer(length);\n  CopyDataBlockBytes(slice, 0, buffer, begin, length);\n  return slice;\n}\n\nexport type MethodName<T> = {\n  [P in keyof T]: T[P] extends Function | undefined ? P : never;\n}[keyof T];\n\nexport function GetMethod<T, K extends MethodName<T>>(receiver: T, prop: K): T[K] | undefined {\n  const func = receiver[prop];\n  if (func === undefined || func === null) {\n    return undefined;\n  }\n  if (typeof func !== 'function') {\n    throw new TypeError(`${String(prop)} is not a function`);\n  }\n  return func;\n}\n\nexport interface SyncIteratorRecord<T> {\n  iterator: Iterator<T>,\n  nextMethod: Iterator<T>['next'],\n  done: boolean;\n}\n\nexport interface AsyncIteratorRecord<T> {\n  iterator: AsyncIterator<T>,\n  nextMethod: AsyncIterator<T>['next'],\n  done: boolean;\n}\n\nexport type SyncOrAsyncIteratorRecord<T> = SyncIteratorRecord<T> | AsyncIteratorRecord<T>;\n\nexport function CreateAsyncFromSyncIterator<T>(syncIteratorRecord: SyncIteratorRecord<T>): AsyncIteratorRecord<T> {\n  // Instead of re-implementing CreateAsyncFromSyncIterator and %AsyncFromSyncIteratorPrototype%,\n  // we use yield* inside an async generator function to achieve the same result.\n\n  // Wrap the sync iterator inside a sync iterable, so we can use it with yield*.\n  const syncIterable = {\n    [Symbol.iterator]: () => syncIteratorRecord.iterator\n  };\n  // Create an async generator function and immediately invoke it.\n  const asyncIterator = (async function* () {\n    return yield* syncIterable;\n  }());\n  // Return as an async iterator record.\n  const nextMethod = asyncIterator.next;\n  return { iterator: asyncIterator, nextMethod, done: false };\n}\n\nexport type SyncOrAsyncIterable<T> = Iterable<T> | AsyncIterable<T>;\nexport type SyncOrAsyncIteratorMethod<T> = () => (Iterator<T> | AsyncIterator<T>);\n\nfunction GetIterator<T>(\n  obj: SyncOrAsyncIterable<T>,\n  hint: 'async',\n  method?: SyncOrAsyncIteratorMethod<T>\n): AsyncIteratorRecord<T>;\nfunction GetIterator<T>(\n  obj: Iterable<T>,\n  hint: 'sync',\n  method?: SyncOrAsyncIteratorMethod<T>\n): SyncIteratorRecord<T>;\nfunction GetIterator<T>(\n  obj: SyncOrAsyncIterable<T>,\n  hint = 'sync',\n  method?: SyncOrAsyncIteratorMethod<T>\n): SyncOrAsyncIteratorRecord<T> {\n  assert(hint === 'sync' || hint === 'async');\n  if (method === undefined) {\n    if (hint === 'async') {\n      method = GetMethod(obj as AsyncIterable<T>, Symbol.asyncIterator);\n      if (method === undefined) {\n        const syncMethod = GetMethod(obj as Iterable<T>, Symbol.iterator);\n        const syncIteratorRecord = GetIterator(obj as Iterable<T>, 'sync', syncMethod);\n        return CreateAsyncFromSyncIterator(syncIteratorRecord);\n      }\n    } else {\n      method = GetMethod(obj as Iterable<T>, Symbol.iterator);\n    }\n  }\n  if (method === undefined) {\n    throw new TypeError('The object is not iterable');\n  }\n  const iterator = reflectCall(method, obj, []);\n  if (!typeIsObject(iterator)) {\n    throw new TypeError('The iterator method must return an object');\n  }\n  const nextMethod = iterator.next;\n  return { iterator, nextMethod, done: false } as SyncOrAsyncIteratorRecord<T>;\n}\n\nexport { GetIterator };\n\nexport function IteratorNext<T>(iteratorRecord: AsyncIteratorRecord<T>): Promise<IteratorResult<T>> {\n  const result = reflectCall(iteratorRecord.nextMethod, iteratorRecord.iterator, []);\n  if (!typeIsObject(result)) {\n    throw new TypeError('The iterator.next() method must return an object');\n  }\n  return result;\n}\n\nexport function IteratorComplete<TReturn>(\n  iterResult: IteratorResult<unknown, TReturn>\n): iterResult is IteratorReturnResult<TReturn> {\n  assert(typeIsObject(iterResult));\n  return Boolean(iterResult.done);\n}\n\nexport function IteratorValue<T>(iterResult: IteratorYieldResult<T>): T {\n  assert(typeIsObject(iterResult));\n  return iterResult.value;\n}\n","import NumberIsNaN from '../../stub/number-isnan';\nimport { ArrayBufferSlice } from './ecmascript';\nimport type { NonShared } from '../helpers/array-buffer-view';\n\nexport function IsNonNegativeNumber(v: number): boolean {\n  if (typeof v !== 'number') {\n    return false;\n  }\n\n  if (NumberIsNaN(v)) {\n    return false;\n  }\n\n  if (v < 0) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function CloneAsUint8Array(O: NonShared<ArrayBufferView>): NonShared<Uint8Array> {\n  const buffer = ArrayBufferSlice(O.buffer, O.byteOffset, O.byteOffset + O.byteLength);\n  return new Uint8Array(buffer) as NonShared<Uint8Array>;\n}\n","import assert from '../../stub/assert';\nimport { SimpleQueue } from '../simple-queue';\nimport { IsNonNegativeNumber } from './miscellaneous';\n\nexport interface QueueContainer<T> {\n  _queue: SimpleQueue<T>;\n  _queueTotalSize: number;\n}\n\nexport interface QueuePair<T> {\n  value: T;\n  size: number;\n}\n\nexport function DequeueValue<T>(container: QueueContainer<QueuePair<T>>): T {\n  assert('_queue' in container && '_queueTotalSize' in container);\n  assert(container._queue.length > 0);\n\n  const pair = container._queue.shift()!;\n  container._queueTotalSize -= pair.size;\n  if (container._queueTotalSize < 0) {\n    container._queueTotalSize = 0;\n  }\n\n  return pair.value;\n}\n\nexport function EnqueueValueWithSize<T>(container: QueueContainer<QueuePair<T>>, value: T, size: number) {\n  assert('_queue' in container && '_queueTotalSize' in container);\n\n  if (!IsNonNegativeNumber(size) || size === Infinity) {\n    throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n  }\n\n  container._queue.push({ value, size });\n  container._queueTotalSize += size;\n}\n\nexport function PeekQueueValue<T>(container: QueueContainer<QueuePair<T>>): T {\n  assert('_queue' in container && '_queueTotalSize' in container);\n  assert(container._queue.length > 0);\n\n  const pair = container._queue.peek();\n  return pair.value;\n}\n\nexport function ResetQueue<T>(container: QueueContainer<T>) {\n  assert('_queue' in container && '_queueTotalSize' in container);\n\n  container._queue = new SimpleQueue<T>();\n  container._queueTotalSize = 0;\n}\n","export type TypedArray =\n  | Int8Array\n  | Uint8Array\n  | Uint8ClampedArray\n  | Int16Array\n  | Uint16Array\n  | Int32Array\n  | Uint32Array\n  | Float32Array\n  | Float64Array;\n\nexport type NonShared<T extends ArrayBufferView> = T & {\n  buffer: ArrayBuffer;\n}\n\nexport interface ArrayBufferViewConstructor<T extends ArrayBufferView = ArrayBufferView> {\n  new(buffer: ArrayBuffer, byteOffset: number, length?: number): T;\n\n  readonly prototype: T;\n}\n\nexport interface TypedArrayConstructor<T extends TypedArray = TypedArray> extends ArrayBufferViewConstructor<T> {\n  readonly BYTES_PER_ELEMENT: number;\n}\n\nexport type DataViewConstructor = ArrayBufferViewConstructor<DataView>;\n\nfunction isDataViewConstructor(ctor: Function): ctor is DataViewConstructor {\n  return ctor === DataView;\n}\n\nexport function isDataView(view: ArrayBufferView): view is DataView {\n  return isDataViewConstructor(view.constructor);\n}\n\nexport function arrayBufferViewElementSize<T extends ArrayBufferView>(ctor: ArrayBufferViewConstructor<T>): number {\n  if (isDataViewConstructor(ctor)) {\n    return 1;\n  }\n  return (ctor as unknown as TypedArrayConstructor).BYTES_PER_ELEMENT;\n}\n","import assert from '../../stub/assert';\nimport { SimpleQueue } from '../simple-queue';\nimport { ResetQueue } from '../abstract-ops/queue-with-sizes';\nimport {\n  IsReadableStreamDefaultReader,\n  ReadableStreamAddReadRequest,\n  ReadableStreamFulfillReadRequest,\n  ReadableStreamGetNumReadRequests,\n  ReadableStreamHasDefaultReader,\n  type ReadRequest\n} from './default-reader';\nimport {\n  ReadableStreamAddReadIntoRequest,\n  ReadableStreamFulfillReadIntoRequest,\n  ReadableStreamGetNumReadIntoRequests,\n  ReadableStreamHasBYOBReader,\n  type ReadIntoRequest\n} from './byob-reader';\nimport NumberIsInteger from '../../stub/number-isinteger';\nimport {\n  IsReadableStreamLocked,\n  type ReadableByteStream,\n  ReadableStreamClose,\n  ReadableStreamError\n} from '../readable-stream';\nimport type { ValidatedUnderlyingByteSource } from './underlying-source';\nimport { setFunctionName, typeIsObject } from '../helpers/miscellaneous';\nimport {\n  ArrayBufferSlice,\n  CanTransferArrayBuffer,\n  CopyDataBlockBytes,\n  IsDetachedBuffer,\n  TransferArrayBuffer\n} from '../abstract-ops/ecmascript';\nimport { CancelSteps, PullSteps, ReleaseSteps } from '../abstract-ops/internal-methods';\nimport { promiseResolvedWith, uponPromise } from '../helpers/webidl';\nimport { assertRequiredArgument, convertUnsignedLongLongWithEnforceRange } from '../validators/basic';\nimport {\n  type ArrayBufferViewConstructor,\n  arrayBufferViewElementSize,\n  type NonShared,\n  type TypedArrayConstructor\n} from '../helpers/array-buffer-view';\n\n/**\n * A pull-into request in a {@link ReadableByteStreamController}.\n *\n * @public\n */\nexport class ReadableStreamBYOBRequest {\n  /** @internal */\n  _associatedReadableByteStreamController!: ReadableByteStreamController;\n  /** @internal */\n  _view!: NonShared<ArrayBufferView> | null;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * Returns the view for writing in to, or `null` if the BYOB request has already been responded to.\n   */\n  get view(): ArrayBufferView | null {\n    if (!IsReadableStreamBYOBRequest(this)) {\n      throw byobRequestBrandCheckException('view');\n    }\n\n    return this._view;\n  }\n\n  /**\n   * Indicates to the associated readable byte stream that `bytesWritten` bytes were written into\n   * {@link ReadableStreamBYOBRequest.view | view}, causing the result be surfaced to the consumer.\n   *\n   * After this method is called, {@link ReadableStreamBYOBRequest.view | view} will be transferred and no longer\n   * modifiable.\n   */\n  respond(bytesWritten: number): void;\n  respond(bytesWritten: number | undefined): void {\n    if (!IsReadableStreamBYOBRequest(this)) {\n      throw byobRequestBrandCheckException('respond');\n    }\n    assertRequiredArgument(bytesWritten, 1, 'respond');\n    bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, 'First parameter');\n\n    if (this._associatedReadableByteStreamController === undefined) {\n      throw new TypeError('This BYOB request has been invalidated');\n    }\n\n    if (IsDetachedBuffer(this._view!.buffer)) {\n      throw new TypeError(`The BYOB request's buffer has been detached and so cannot be used as a response`);\n    }\n\n    assert(this._view!.byteLength > 0);\n    assert(this._view!.buffer.byteLength > 0);\n\n    ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n  }\n\n  /**\n   * Indicates to the associated readable byte stream that instead of writing into\n   * {@link ReadableStreamBYOBRequest.view | view}, the underlying byte source is providing a new `ArrayBufferView`,\n   * which will be given to the consumer of the readable byte stream.\n   *\n   * After this method is called, `view` will be transferred and no longer modifiable.\n   */\n  respondWithNewView(view: ArrayBufferView): void;\n  respondWithNewView(view: NonShared<ArrayBufferView>): void {\n    if (!IsReadableStreamBYOBRequest(this)) {\n      throw byobRequestBrandCheckException('respondWithNewView');\n    }\n    assertRequiredArgument(view, 1, 'respondWithNewView');\n\n    if (!ArrayBuffer.isView(view)) {\n      throw new TypeError('You can only respond with array buffer views');\n    }\n\n    if (this._associatedReadableByteStreamController === undefined) {\n      throw new TypeError('This BYOB request has been invalidated');\n    }\n\n    if (IsDetachedBuffer(view.buffer)) {\n      throw new TypeError('The given view\\'s buffer has been detached and so cannot be used as a response');\n    }\n\n    ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n  }\n}\n\nObject.defineProperties(ReadableStreamBYOBRequest.prototype, {\n  respond: { enumerable: true },\n  respondWithNewView: { enumerable: true },\n  view: { enumerable: true }\n});\nsetFunctionName(ReadableStreamBYOBRequest.prototype.respond, 'respond');\nsetFunctionName(ReadableStreamBYOBRequest.prototype.respondWithNewView, 'respondWithNewView');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStreamBYOBRequest.prototype, Symbol.toStringTag, {\n    value: 'ReadableStreamBYOBRequest',\n    configurable: true\n  });\n}\n\ninterface ByteQueueElement {\n  buffer: ArrayBuffer;\n  byteOffset: number;\n  byteLength: number;\n}\n\ntype PullIntoDescriptor<T extends NonShared<ArrayBufferView> = NonShared<ArrayBufferView>> =\n  DefaultPullIntoDescriptor\n  | BYOBPullIntoDescriptor<T>;\n\ninterface DefaultPullIntoDescriptor {\n  buffer: ArrayBuffer;\n  bufferByteLength: number;\n  byteOffset: number;\n  byteLength: number;\n  bytesFilled: number;\n  minimumFill: number;\n  elementSize: number;\n  viewConstructor: TypedArrayConstructor<Uint8Array>;\n  readerType: 'default' | 'none';\n}\n\ninterface BYOBPullIntoDescriptor<T extends NonShared<ArrayBufferView> = NonShared<ArrayBufferView>> {\n  buffer: ArrayBuffer;\n  bufferByteLength: number;\n  byteOffset: number;\n  byteLength: number;\n  bytesFilled: number;\n  minimumFill: number;\n  elementSize: number;\n  viewConstructor: ArrayBufferViewConstructor<T>;\n  readerType: 'byob' | 'none';\n}\n\n/**\n * Allows control of a {@link ReadableStream | readable byte stream}'s state and internal queue.\n *\n * @public\n */\nexport class ReadableByteStreamController {\n  /** @internal */\n  _controlledReadableByteStream!: ReadableByteStream;\n  /** @internal */\n  _queue!: SimpleQueue<ByteQueueElement>;\n  /** @internal */\n  _queueTotalSize!: number;\n  /** @internal */\n  _started!: boolean;\n  /** @internal */\n  _closeRequested!: boolean;\n  /** @internal */\n  _pullAgain!: boolean;\n  /** @internal */\n  _pulling !: boolean;\n  /** @internal */\n  _strategyHWM!: number;\n  /** @internal */\n  _pullAlgorithm!: () => Promise<void>;\n  /** @internal */\n  _cancelAlgorithm!: (reason: any) => Promise<void>;\n  /** @internal */\n  _autoAllocateChunkSize: number | undefined;\n  /** @internal */\n  _byobRequest: ReadableStreamBYOBRequest | null;\n  /** @internal */\n  _pendingPullIntos!: SimpleQueue<PullIntoDescriptor>;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * Returns the current BYOB pull request, or `null` if there isn't one.\n   */\n  get byobRequest(): ReadableStreamBYOBRequest | null {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('byobRequest');\n    }\n\n    return ReadableByteStreamControllerGetBYOBRequest(this);\n  }\n\n  /**\n   * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is\n   * over-full. An underlying byte source ought to use this information to determine when and how to apply backpressure.\n   */\n  get desiredSize(): number | null {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('desiredSize');\n    }\n\n    return ReadableByteStreamControllerGetDesiredSize(this);\n  }\n\n  /**\n   * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from\n   * the stream, but once those are read, the stream will become closed.\n   */\n  close(): void {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('close');\n    }\n\n    if (this._closeRequested) {\n      throw new TypeError('The stream has already been closed; do not close it again!');\n    }\n\n    const state = this._controlledReadableByteStream._state;\n    if (state !== 'readable') {\n      throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be closed`);\n    }\n\n    ReadableByteStreamControllerClose(this);\n  }\n\n  /**\n   * Enqueues the given chunk chunk in the controlled readable stream.\n   * The chunk has to be an `ArrayBufferView` instance, or else a `TypeError` will be thrown.\n   */\n  enqueue(chunk: ArrayBufferView): void;\n  enqueue(chunk: NonShared<ArrayBufferView>): void {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('enqueue');\n    }\n\n    assertRequiredArgument(chunk, 1, 'enqueue');\n    if (!ArrayBuffer.isView(chunk)) {\n      throw new TypeError('chunk must be an array buffer view');\n    }\n    if (chunk.byteLength === 0) {\n      throw new TypeError('chunk must have non-zero byteLength');\n    }\n    if (chunk.buffer.byteLength === 0) {\n      throw new TypeError(`chunk's buffer must have non-zero byteLength`);\n    }\n\n    if (this._closeRequested) {\n      throw new TypeError('stream is closed or draining');\n    }\n\n    const state = this._controlledReadableByteStream._state;\n    if (state !== 'readable') {\n      throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be enqueued to`);\n    }\n\n    ReadableByteStreamControllerEnqueue(this, chunk);\n  }\n\n  /**\n   * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n   */\n  error(e: any = undefined): void {\n    if (!IsReadableByteStreamController(this)) {\n      throw byteStreamControllerBrandCheckException('error');\n    }\n\n    ReadableByteStreamControllerError(this, e);\n  }\n\n  /** @internal */\n  [CancelSteps](reason: any): Promise<void> {\n    ReadableByteStreamControllerClearPendingPullIntos(this);\n\n    ResetQueue(this);\n\n    const result = this._cancelAlgorithm(reason);\n    ReadableByteStreamControllerClearAlgorithms(this);\n    return result;\n  }\n\n  /** @internal */\n  [PullSteps](readRequest: ReadRequest<NonShared<Uint8Array>>): void {\n    const stream = this._controlledReadableByteStream;\n    assert(ReadableStreamHasDefaultReader(stream));\n\n    if (this._queueTotalSize > 0) {\n      assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n      ReadableByteStreamControllerFillReadRequestFromQueue(this, readRequest);\n      return;\n    }\n\n    const autoAllocateChunkSize = this._autoAllocateChunkSize;\n    if (autoAllocateChunkSize !== undefined) {\n      let buffer: ArrayBuffer;\n      try {\n        buffer = new ArrayBuffer(autoAllocateChunkSize);\n      } catch (bufferE) {\n        readRequest._errorSteps(bufferE);\n        return;\n      }\n\n      const pullIntoDescriptor: DefaultPullIntoDescriptor = {\n        buffer,\n        bufferByteLength: autoAllocateChunkSize,\n        byteOffset: 0,\n        byteLength: autoAllocateChunkSize,\n        bytesFilled: 0,\n        minimumFill: 1,\n        elementSize: 1,\n        viewConstructor: Uint8Array,\n        readerType: 'default'\n      };\n\n      this._pendingPullIntos.push(pullIntoDescriptor);\n    }\n\n    ReadableStreamAddReadRequest(stream, readRequest);\n    ReadableByteStreamControllerCallPullIfNeeded(this);\n  }\n\n  /** @internal */\n  [ReleaseSteps](): void {\n    if (this._pendingPullIntos.length > 0) {\n      const firstPullInto = this._pendingPullIntos.peek();\n      firstPullInto.readerType = 'none';\n\n      this._pendingPullIntos = new SimpleQueue();\n      this._pendingPullIntos.push(firstPullInto);\n    }\n  }\n}\n\nObject.defineProperties(ReadableByteStreamController.prototype, {\n  close: { enumerable: true },\n  enqueue: { enumerable: true },\n  error: { enumerable: true },\n  byobRequest: { enumerable: true },\n  desiredSize: { enumerable: true }\n});\nsetFunctionName(ReadableByteStreamController.prototype.close, 'close');\nsetFunctionName(ReadableByteStreamController.prototype.enqueue, 'enqueue');\nsetFunctionName(ReadableByteStreamController.prototype.error, 'error');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableByteStreamController.prototype, Symbol.toStringTag, {\n    value: 'ReadableByteStreamController',\n    configurable: true\n  });\n}\n\n// Abstract operations for the ReadableByteStreamController.\n\nexport function IsReadableByteStreamController(x: any): x is ReadableByteStreamController {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n    return false;\n  }\n\n  return x instanceof ReadableByteStreamController;\n}\n\nfunction IsReadableStreamBYOBRequest(x: any): x is ReadableStreamBYOBRequest {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n    return false;\n  }\n\n  return x instanceof ReadableStreamBYOBRequest;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller: ReadableByteStreamController): void {\n  const shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n  if (!shouldPull) {\n    return;\n  }\n\n  if (controller._pulling) {\n    controller._pullAgain = true;\n    return;\n  }\n\n  assert(!controller._pullAgain);\n\n  controller._pulling = true;\n\n  // TODO: Test controller argument\n  const pullPromise = controller._pullAlgorithm();\n  uponPromise(\n    pullPromise,\n    () => {\n      controller._pulling = false;\n\n      if (controller._pullAgain) {\n        controller._pullAgain = false;\n        ReadableByteStreamControllerCallPullIfNeeded(controller);\n      }\n\n      return null;\n    },\n    e => {\n      ReadableByteStreamControllerError(controller, e);\n      return null;\n    }\n  );\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller: ReadableByteStreamController) {\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n  controller._pendingPullIntos = new SimpleQueue();\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor<T extends NonShared<ArrayBufferView>>(\n  stream: ReadableByteStream,\n  pullIntoDescriptor: PullIntoDescriptor<T>\n) {\n  assert(stream._state !== 'errored');\n  assert(pullIntoDescriptor.readerType !== 'none');\n\n  let done = false;\n  if (stream._state === 'closed') {\n    assert(pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize === 0);\n    done = true;\n  }\n\n  const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor<T>(pullIntoDescriptor);\n  if (pullIntoDescriptor.readerType === 'default') {\n    ReadableStreamFulfillReadRequest(stream, filledView as unknown as NonShared<Uint8Array>, done);\n  } else {\n    assert(pullIntoDescriptor.readerType === 'byob');\n    ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n  }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor<T extends NonShared<ArrayBufferView>>(\n  pullIntoDescriptor: PullIntoDescriptor<T>\n): T {\n  const bytesFilled = pullIntoDescriptor.bytesFilled;\n  const elementSize = pullIntoDescriptor.elementSize;\n\n  assert(bytesFilled <= pullIntoDescriptor.byteLength);\n  assert(bytesFilled % elementSize === 0);\n\n  return new pullIntoDescriptor.viewConstructor(\n    pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize) as T;\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller: ReadableByteStreamController,\n                                                         buffer: ArrayBuffer,\n                                                         byteOffset: number,\n                                                         byteLength: number) {\n  controller._queue.push({ buffer, byteOffset, byteLength });\n  controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller: ReadableByteStreamController,\n                                                               buffer: ArrayBuffer,\n                                                               byteOffset: number,\n                                                               byteLength: number) {\n  let clonedChunk;\n  try {\n    clonedChunk = ArrayBufferSlice(buffer, byteOffset, byteOffset + byteLength);\n  } catch (cloneE) {\n    ReadableByteStreamControllerError(controller, cloneE);\n    throw cloneE;\n  }\n  ReadableByteStreamControllerEnqueueChunkToQueue(controller, clonedChunk, 0, byteLength);\n}\n\nfunction ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller: ReadableByteStreamController,\n                                                                    firstDescriptor: PullIntoDescriptor) {\n  assert(firstDescriptor.readerType === 'none');\n  if (firstDescriptor.bytesFilled > 0) {\n    ReadableByteStreamControllerEnqueueClonedChunkToQueue(\n      controller,\n      firstDescriptor.buffer,\n      firstDescriptor.byteOffset,\n      firstDescriptor.bytesFilled\n    );\n  }\n  ReadableByteStreamControllerShiftPendingPullInto(controller);\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller: ReadableByteStreamController,\n                                                                     pullIntoDescriptor: PullIntoDescriptor) {\n  const maxBytesToCopy = Math.min(controller._queueTotalSize,\n                                  pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n  const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n\n  let totalBytesToCopyRemaining = maxBytesToCopy;\n  let ready = false;\n  assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill);\n  const remainderBytes = maxBytesFilled % pullIntoDescriptor.elementSize;\n  const maxAlignedBytes = maxBytesFilled - remainderBytes;\n  // A descriptor for a read() request that is not yet filled up to its minimum length will stay at the head\n  // of the queue, so the underlying source can keep filling it.\n  if (maxAlignedBytes >= pullIntoDescriptor.minimumFill) {\n    totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n    ready = true;\n  }\n\n  const queue = controller._queue;\n\n  while (totalBytesToCopyRemaining > 0) {\n    const headOfQueue = queue.peek();\n\n    const bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n    const destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n    CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n    if (headOfQueue.byteLength === bytesToCopy) {\n      queue.shift();\n    } else {\n      headOfQueue.byteOffset += bytesToCopy;\n      headOfQueue.byteLength -= bytesToCopy;\n    }\n    controller._queueTotalSize -= bytesToCopy;\n\n    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n    totalBytesToCopyRemaining -= bytesToCopy;\n  }\n\n  if (!ready) {\n    assert(controller._queueTotalSize === 0);\n    assert(pullIntoDescriptor.bytesFilled > 0);\n    assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill);\n  }\n\n  return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller: ReadableByteStreamController,\n                                                                size: number,\n                                                                pullIntoDescriptor: PullIntoDescriptor) {\n  assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos.peek() === pullIntoDescriptor);\n  assert(controller._byobRequest === null);\n  pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller: ReadableByteStreamController) {\n  assert(controller._controlledReadableByteStream._state === 'readable');\n\n  if (controller._queueTotalSize === 0 && controller._closeRequested) {\n    ReadableByteStreamControllerClearAlgorithms(controller);\n    ReadableStreamClose(controller._controlledReadableByteStream);\n  } else {\n    ReadableByteStreamControllerCallPullIfNeeded(controller);\n  }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller: ReadableByteStreamController) {\n  if (controller._byobRequest === null) {\n    return;\n  }\n\n  controller._byobRequest._associatedReadableByteStreamController = undefined!;\n  controller._byobRequest._view = null!;\n  controller._byobRequest = null;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller: ReadableByteStreamController) {\n  assert(!controller._closeRequested);\n\n  while (controller._pendingPullIntos.length > 0) {\n    if (controller._queueTotalSize === 0) {\n      return;\n    }\n\n    const pullIntoDescriptor = controller._pendingPullIntos.peek();\n    assert(pullIntoDescriptor.readerType !== 'none');\n\n    if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n      ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n      ReadableByteStreamControllerCommitPullIntoDescriptor(\n        controller._controlledReadableByteStream,\n        pullIntoDescriptor\n      );\n    }\n  }\n}\n\nfunction ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller: ReadableByteStreamController) {\n  const reader = controller._controlledReadableByteStream._reader;\n  assert(IsReadableStreamDefaultReader(reader));\n  while (reader._readRequests.length > 0) {\n    if (controller._queueTotalSize === 0) {\n      return;\n    }\n    const readRequest = reader._readRequests.shift();\n    ReadableByteStreamControllerFillReadRequestFromQueue(controller, readRequest);\n  }\n}\n\nexport function ReadableByteStreamControllerPullInto<T extends NonShared<ArrayBufferView>>(\n  controller: ReadableByteStreamController,\n  view: T,\n  min: number,\n  readIntoRequest: ReadIntoRequest<T>\n): void {\n  const stream = controller._controlledReadableByteStream;\n\n  const ctor = view.constructor as ArrayBufferViewConstructor<T>;\n  const elementSize = arrayBufferViewElementSize(ctor);\n\n  const { byteOffset, byteLength } = view;\n\n  const minimumFill = min * elementSize;\n  assert(minimumFill >= elementSize && minimumFill <= byteLength);\n  assert(minimumFill % elementSize === 0);\n\n  let buffer: ArrayBuffer;\n  try {\n    buffer = TransferArrayBuffer(view.buffer);\n  } catch (e) {\n    readIntoRequest._errorSteps(e);\n    return;\n  }\n\n  const pullIntoDescriptor: BYOBPullIntoDescriptor<T> = {\n    buffer,\n    bufferByteLength: buffer.byteLength,\n    byteOffset,\n    byteLength,\n    bytesFilled: 0,\n    minimumFill,\n    elementSize,\n    viewConstructor: ctor,\n    readerType: 'byob'\n  };\n\n  if (controller._pendingPullIntos.length > 0) {\n    controller._pendingPullIntos.push(pullIntoDescriptor);\n\n    // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n    // - No change happens on desiredSize\n    // - The source has already been notified of that there's at least 1 pending read(view)\n\n    ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n    return;\n  }\n\n  if (stream._state === 'closed') {\n    const emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n    readIntoRequest._closeSteps(emptyView);\n    return;\n  }\n\n  if (controller._queueTotalSize > 0) {\n    if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n      const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor<T>(pullIntoDescriptor);\n\n      ReadableByteStreamControllerHandleQueueDrain(controller);\n\n      readIntoRequest._chunkSteps(filledView);\n      return;\n    }\n\n    if (controller._closeRequested) {\n      const e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n      ReadableByteStreamControllerError(controller, e);\n\n      readIntoRequest._errorSteps(e);\n      return;\n    }\n  }\n\n  controller._pendingPullIntos.push(pullIntoDescriptor);\n\n  ReadableStreamAddReadIntoRequest<T>(stream, readIntoRequest);\n  ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller: ReadableByteStreamController,\n                                                          firstDescriptor: PullIntoDescriptor) {\n  assert(firstDescriptor.bytesFilled % firstDescriptor.elementSize === 0);\n\n  if (firstDescriptor.readerType === 'none') {\n    ReadableByteStreamControllerShiftPendingPullInto(controller);\n  }\n\n  const stream = controller._controlledReadableByteStream;\n  if (ReadableStreamHasBYOBReader(stream)) {\n    while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n      const pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n      ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n    }\n  }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller: ReadableByteStreamController,\n                                                            bytesWritten: number,\n                                                            pullIntoDescriptor: PullIntoDescriptor) {\n  assert(pullIntoDescriptor.bytesFilled + bytesWritten <= pullIntoDescriptor.byteLength);\n\n  ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n  if (pullIntoDescriptor.readerType === 'none') {\n    ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, pullIntoDescriptor);\n    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n    return;\n  }\n\n  if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill) {\n    // A descriptor for a read() request that is not yet filled up to its minimum length will stay at the head\n    // of the queue, so the underlying source can keep filling it.\n    return;\n  }\n\n  ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n  const remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n  if (remainderSize > 0) {\n    const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n    ReadableByteStreamControllerEnqueueClonedChunkToQueue(\n      controller,\n      pullIntoDescriptor.buffer,\n      end - remainderSize,\n      remainderSize\n    );\n  }\n\n  pullIntoDescriptor.bytesFilled -= remainderSize;\n  ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n\n  ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller: ReadableByteStreamController, bytesWritten: number) {\n  const firstDescriptor = controller._pendingPullIntos.peek();\n  assert(CanTransferArrayBuffer(firstDescriptor.buffer));\n\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n\n  const state = controller._controlledReadableByteStream._state;\n  if (state === 'closed') {\n    assert(bytesWritten === 0);\n    ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n  } else {\n    assert(state === 'readable');\n    assert(bytesWritten > 0);\n    ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n  }\n\n  ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(\n  controller: ReadableByteStreamController\n): PullIntoDescriptor {\n  assert(controller._byobRequest === null);\n  const descriptor = controller._pendingPullIntos.shift()!;\n  return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller: ReadableByteStreamController): boolean {\n  const stream = controller._controlledReadableByteStream;\n\n  if (stream._state !== 'readable') {\n    return false;\n  }\n\n  if (controller._closeRequested) {\n    return false;\n  }\n\n  if (!controller._started) {\n    return false;\n  }\n\n  if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n    return true;\n  }\n\n  if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n    return true;\n  }\n\n  const desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n  assert(desiredSize !== null);\n  if (desiredSize! > 0) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction ReadableByteStreamControllerClearAlgorithms(controller: ReadableByteStreamController) {\n  controller._pullAlgorithm = undefined!;\n  controller._cancelAlgorithm = undefined!;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nexport function ReadableByteStreamControllerClose(controller: ReadableByteStreamController) {\n  const stream = controller._controlledReadableByteStream;\n\n  if (controller._closeRequested || stream._state !== 'readable') {\n    return;\n  }\n\n  if (controller._queueTotalSize > 0) {\n    controller._closeRequested = true;\n\n    return;\n  }\n\n  if (controller._pendingPullIntos.length > 0) {\n    const firstPendingPullInto = controller._pendingPullIntos.peek();\n    if (firstPendingPullInto.bytesFilled % firstPendingPullInto.elementSize !== 0) {\n      const e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n      ReadableByteStreamControllerError(controller, e);\n\n      throw e;\n    }\n  }\n\n  ReadableByteStreamControllerClearAlgorithms(controller);\n  ReadableStreamClose(stream);\n}\n\nexport function ReadableByteStreamControllerEnqueue(\n  controller: ReadableByteStreamController,\n  chunk: NonShared<ArrayBufferView>\n) {\n  const stream = controller._controlledReadableByteStream;\n\n  if (controller._closeRequested || stream._state !== 'readable') {\n    return;\n  }\n\n  const { buffer, byteOffset, byteLength } = chunk;\n  if (IsDetachedBuffer(buffer)) {\n    throw new TypeError('chunk\\'s buffer is detached and so cannot be enqueued');\n  }\n  const transferredBuffer = TransferArrayBuffer(buffer);\n\n  if (controller._pendingPullIntos.length > 0) {\n    const firstPendingPullInto = controller._pendingPullIntos.peek();\n    if (IsDetachedBuffer(firstPendingPullInto.buffer)) {\n      throw new TypeError(\n        'The BYOB request\\'s buffer has been detached and so cannot be filled with an enqueued chunk'\n      );\n    }\n    ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n    firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer);\n    if (firstPendingPullInto.readerType === 'none') {\n      ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, firstPendingPullInto);\n    }\n  }\n\n  if (ReadableStreamHasDefaultReader(stream)) {\n    ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller);\n    if (ReadableStreamGetNumReadRequests(stream) === 0) {\n      assert(controller._pendingPullIntos.length === 0);\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    } else {\n      assert(controller._queue.length === 0);\n      if (controller._pendingPullIntos.length > 0) {\n        assert(controller._pendingPullIntos.peek().readerType === 'default');\n        ReadableByteStreamControllerShiftPendingPullInto(controller);\n      }\n      const transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n      ReadableStreamFulfillReadRequest(stream, transferredView as NonShared<Uint8Array>, false);\n    }\n  } else if (ReadableStreamHasBYOBReader(stream)) {\n    // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n  } else {\n    assert(!IsReadableStreamLocked(stream));\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n  }\n\n  ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\n\nexport function ReadableByteStreamControllerError(controller: ReadableByteStreamController, e: any) {\n  const stream = controller._controlledReadableByteStream;\n\n  if (stream._state !== 'readable') {\n    return;\n  }\n\n  ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n  ResetQueue(controller);\n  ReadableByteStreamControllerClearAlgorithms(controller);\n  ReadableStreamError(stream, e);\n}\n\nexport function ReadableByteStreamControllerFillReadRequestFromQueue(\n  controller: ReadableByteStreamController,\n  readRequest: ReadRequest<NonShared<Uint8Array>>\n) {\n  assert(controller._queueTotalSize > 0);\n\n  const entry = controller._queue.shift();\n  controller._queueTotalSize -= entry.byteLength;\n\n  ReadableByteStreamControllerHandleQueueDrain(controller);\n\n  const view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n  readRequest._chunkSteps(view as NonShared<Uint8Array>);\n}\n\nexport function ReadableByteStreamControllerGetBYOBRequest(\n  controller: ReadableByteStreamController\n): ReadableStreamBYOBRequest | null {\n  if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) {\n    const firstDescriptor = controller._pendingPullIntos.peek();\n    const view = new Uint8Array(firstDescriptor.buffer,\n                                firstDescriptor.byteOffset + firstDescriptor.bytesFilled,\n                                firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n    const byobRequest: ReadableStreamBYOBRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n    SetUpReadableStreamBYOBRequest(byobRequest, controller, view as NonShared<Uint8Array>);\n    controller._byobRequest = byobRequest;\n  }\n  return controller._byobRequest;\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller: ReadableByteStreamController): number | null {\n  const state = controller._controlledReadableByteStream._state;\n\n  if (state === 'errored') {\n    return null;\n  }\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nexport function ReadableByteStreamControllerRespond(controller: ReadableByteStreamController, bytesWritten: number) {\n  assert(controller._pendingPullIntos.length > 0);\n\n  const firstDescriptor = controller._pendingPullIntos.peek();\n  const state = controller._controlledReadableByteStream._state;\n\n  if (state === 'closed') {\n    if (bytesWritten !== 0) {\n      throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n    }\n  } else {\n    assert(state === 'readable');\n    if (bytesWritten === 0) {\n      throw new TypeError('bytesWritten must be greater than 0 when calling respond() on a readable stream');\n    }\n    if (firstDescriptor.bytesFilled + bytesWritten > firstDescriptor.byteLength) {\n      throw new RangeError('bytesWritten out of range');\n    }\n  }\n\n  firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n  ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nexport function ReadableByteStreamControllerRespondWithNewView(controller: ReadableByteStreamController,\n                                                               view: NonShared<ArrayBufferView>) {\n  assert(controller._pendingPullIntos.length > 0);\n  assert(!IsDetachedBuffer(view.buffer));\n\n  const firstDescriptor = controller._pendingPullIntos.peek();\n  const state = controller._controlledReadableByteStream._state;\n\n  if (state === 'closed') {\n    if (view.byteLength !== 0) {\n      throw new TypeError('The view\\'s length must be 0 when calling respondWithNewView() on a closed stream');\n    }\n  } else {\n    assert(state === 'readable');\n    if (view.byteLength === 0) {\n      throw new TypeError(\n        'The view\\'s length must be greater than 0 when calling respondWithNewView() on a readable stream'\n      );\n    }\n  }\n\n  if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n    throw new RangeError('The region specified by view does not match byobRequest');\n  }\n  if (firstDescriptor.bufferByteLength !== view.buffer.byteLength) {\n    throw new RangeError('The buffer of view has different capacity than byobRequest');\n  }\n  if (firstDescriptor.bytesFilled + view.byteLength > firstDescriptor.byteLength) {\n    throw new RangeError('The region specified by view is larger than byobRequest');\n  }\n\n  const viewByteLength = view.byteLength;\n  firstDescriptor.buffer = TransferArrayBuffer(view.buffer);\n  ReadableByteStreamControllerRespondInternal(controller, viewByteLength);\n}\n\nexport function SetUpReadableByteStreamController(stream: ReadableByteStream,\n                                                  controller: ReadableByteStreamController,\n                                                  startAlgorithm: () => void | PromiseLike<void>,\n                                                  pullAlgorithm: () => Promise<void>,\n                                                  cancelAlgorithm: (reason: any) => Promise<void>,\n                                                  highWaterMark: number,\n                                                  autoAllocateChunkSize: number | undefined) {\n  assert(stream._readableStreamController === undefined);\n  if (autoAllocateChunkSize !== undefined) {\n    assert(NumberIsInteger(autoAllocateChunkSize));\n    assert(autoAllocateChunkSize > 0);\n  }\n\n  controller._controlledReadableByteStream = stream;\n\n  controller._pullAgain = false;\n  controller._pulling = false;\n\n  controller._byobRequest = null;\n\n  // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n  controller._queue = controller._queueTotalSize = undefined!;\n  ResetQueue(controller);\n\n  controller._closeRequested = false;\n  controller._started = false;\n\n  controller._strategyHWM = highWaterMark;\n\n  controller._pullAlgorithm = pullAlgorithm;\n  controller._cancelAlgorithm = cancelAlgorithm;\n\n  controller._autoAllocateChunkSize = autoAllocateChunkSize;\n\n  controller._pendingPullIntos = new SimpleQueue();\n\n  stream._readableStreamController = controller;\n\n  const startResult = startAlgorithm();\n  uponPromise(\n    promiseResolvedWith(startResult),\n    () => {\n      controller._started = true;\n\n      assert(!controller._pulling);\n      assert(!controller._pullAgain);\n\n      ReadableByteStreamControllerCallPullIfNeeded(controller);\n      return null;\n    },\n    r => {\n      ReadableByteStreamControllerError(controller, r);\n      return null;\n    }\n  );\n}\n\nexport function SetUpReadableByteStreamControllerFromUnderlyingSource(\n  stream: ReadableByteStream,\n  underlyingByteSource: ValidatedUnderlyingByteSource,\n  highWaterMark: number\n) {\n  const controller: ReadableByteStreamController = Object.create(ReadableByteStreamController.prototype);\n\n  let startAlgorithm: () => void | PromiseLike<void>;\n  let pullAlgorithm: () => Promise<void>;\n  let cancelAlgorithm: (reason: any) => Promise<void>;\n\n  if (underlyingByteSource.start !== undefined) {\n    startAlgorithm = () => underlyingByteSource.start!(controller);\n  } else {\n    startAlgorithm = () => undefined;\n  }\n  if (underlyingByteSource.pull !== undefined) {\n    pullAlgorithm = () => underlyingByteSource.pull!(controller);\n  } else {\n    pullAlgorithm = () => promiseResolvedWith(undefined);\n  }\n  if (underlyingByteSource.cancel !== undefined) {\n    cancelAlgorithm = reason => underlyingByteSource.cancel!(reason);\n  } else {\n    cancelAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  const autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n  if (autoAllocateChunkSize === 0) {\n    throw new TypeError('autoAllocateChunkSize must be greater than 0');\n  }\n\n  SetUpReadableByteStreamController(\n    stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize\n  );\n}\n\nfunction SetUpReadableStreamBYOBRequest(request: ReadableStreamBYOBRequest,\n                                        controller: ReadableByteStreamController,\n                                        view: NonShared<ArrayBufferView>) {\n  assert(IsReadableByteStreamController(controller));\n  assert(typeof view === 'object');\n  assert(ArrayBuffer.isView(view));\n  assert(!IsDetachedBuffer(view.buffer));\n  request._associatedReadableByteStreamController = controller;\n  request._view = view;\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableStreamBYOBRequest.prototype.${name} can only be used on a ReadableStreamBYOBRequest`);\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableByteStreamController.prototype.${name} can only be used on a ReadableByteStreamController`);\n}\n","import { assertDictionary, convertUnsignedLongLongWithEnforceRange } from './basic';\nimport type {\n  ReadableStreamBYOBReaderReadOptions,\n  ReadableStreamGetReaderOptions,\n  ValidatedReadableStreamBYOBReaderReadOptions\n} from '../readable-stream/reader-options';\n\nexport function convertReaderOptions(options: ReadableStreamGetReaderOptions | null | undefined,\n                                     context: string): ReadableStreamGetReaderOptions {\n  assertDictionary(options, context);\n  const mode = options?.mode;\n  return {\n    mode: mode === undefined ? undefined : convertReadableStreamReaderMode(mode, `${context} has member 'mode' that`)\n  };\n}\n\nfunction convertReadableStreamReaderMode(mode: string, context: string): 'byob' {\n  mode = `${mode}`;\n  if (mode !== 'byob') {\n    throw new TypeError(`${context} '${mode}' is not a valid enumeration value for ReadableStreamReaderMode`);\n  }\n  return mode;\n}\n\nexport function convertByobReadOptions(\n  options: ReadableStreamBYOBReaderReadOptions | null | undefined,\n  context: string\n): ValidatedReadableStreamBYOBReaderReadOptions {\n  assertDictionary(options, context);\n  const min = options?.min ?? 1;\n  return {\n    min: convertUnsignedLongLongWithEnforceRange(\n      min,\n      `${context} has member 'min' that`\n    )\n  };\n}\n","import assert from '../../stub/assert';\nimport { SimpleQueue } from '../simple-queue';\nimport {\n  ReadableStreamReaderGenericCancel,\n  ReadableStreamReaderGenericInitialize,\n  ReadableStreamReaderGenericRelease,\n  readerLockException\n} from './generic-reader';\nimport { IsReadableStreamLocked, type ReadableByteStream, type ReadableStream } from '../readable-stream';\nimport {\n  IsReadableByteStreamController,\n  ReadableByteStreamController,\n  ReadableByteStreamControllerPullInto\n} from './byte-stream-controller';\nimport { setFunctionName, typeIsObject } from '../helpers/miscellaneous';\nimport { newPromise, promiseRejectedWith } from '../helpers/webidl';\nimport { assertRequiredArgument } from '../validators/basic';\nimport { assertReadableStream } from '../validators/readable-stream';\nimport { IsDetachedBuffer } from '../abstract-ops/ecmascript';\nimport type {\n  ReadableStreamBYOBReaderReadOptions,\n  ValidatedReadableStreamBYOBReaderReadOptions\n} from './reader-options';\nimport { convertByobReadOptions } from '../validators/reader-options';\nimport { isDataView, type NonShared, type TypedArray } from '../helpers/array-buffer-view';\n\n/**\n * A result returned by {@link ReadableStreamBYOBReader.read}.\n *\n * @public\n */\nexport type ReadableStreamBYOBReadResult<T extends ArrayBufferView> = {\n  done: false;\n  value: T;\n} | {\n  done: true;\n  value: T | undefined;\n};\n\n// Abstract operations for the ReadableStream.\n\nexport function AcquireReadableStreamBYOBReader(stream: ReadableByteStream): ReadableStreamBYOBReader {\n  return new ReadableStreamBYOBReader(stream as ReadableStream<Uint8Array>);\n}\n\n// ReadableStream API exposed for controllers.\n\nexport function ReadableStreamAddReadIntoRequest<T extends NonShared<ArrayBufferView>>(\n  stream: ReadableByteStream,\n  readIntoRequest: ReadIntoRequest<T>\n): void {\n  assert(IsReadableStreamBYOBReader(stream._reader));\n  assert(stream._state === 'readable' || stream._state === 'closed');\n\n  (stream._reader! as ReadableStreamBYOBReader)._readIntoRequests.push(readIntoRequest);\n}\n\nexport function ReadableStreamFulfillReadIntoRequest(stream: ReadableByteStream,\n                                                     chunk: ArrayBufferView,\n                                                     done: boolean) {\n  const reader = stream._reader as ReadableStreamBYOBReader;\n\n  assert(reader._readIntoRequests.length > 0);\n\n  const readIntoRequest = reader._readIntoRequests.shift()!;\n  if (done) {\n    readIntoRequest._closeSteps(chunk);\n  } else {\n    readIntoRequest._chunkSteps(chunk);\n  }\n}\n\nexport function ReadableStreamGetNumReadIntoRequests(stream: ReadableByteStream): number {\n  return (stream._reader as ReadableStreamBYOBReader)._readIntoRequests.length;\n}\n\nexport function ReadableStreamHasBYOBReader(stream: ReadableByteStream): boolean {\n  const reader = stream._reader;\n\n  if (reader === undefined) {\n    return false;\n  }\n\n  if (!IsReadableStreamBYOBReader(reader)) {\n    return false;\n  }\n\n  return true;\n}\n\n// Readers\n\nexport interface ReadIntoRequest<T extends NonShared<ArrayBufferView>> {\n  _chunkSteps(chunk: T): void;\n\n  _closeSteps(chunk: T | undefined): void;\n\n  _errorSteps(e: any): void;\n}\n\n/**\n * A BYOB reader vended by a {@link ReadableStream}.\n *\n * @public\n */\nexport class ReadableStreamBYOBReader {\n  /** @internal */\n  _ownerReadableStream!: ReadableByteStream;\n  /** @internal */\n  _closedPromise!: Promise<undefined>;\n  /** @internal */\n  _closedPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _closedPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _readIntoRequests: SimpleQueue<ReadIntoRequest<any>>;\n\n  constructor(stream: ReadableStream<Uint8Array>) {\n    assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader');\n    assertReadableStream(stream, 'First parameter');\n\n    if (IsReadableStreamLocked(stream)) {\n      throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n    }\n\n    if (!IsReadableByteStreamController(stream._readableStreamController)) {\n      throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' +\n        'source');\n    }\n\n    ReadableStreamReaderGenericInitialize(this, stream);\n\n    this._readIntoRequests = new SimpleQueue();\n  }\n\n  /**\n   * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or\n   * the reader's lock is released before the stream finishes closing.\n   */\n  get closed(): Promise<undefined> {\n    if (!IsReadableStreamBYOBReader(this)) {\n      return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n    }\n\n    return this._closedPromise;\n  }\n\n  /**\n   * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n   */\n  cancel(reason: any = undefined): Promise<void> {\n    if (!IsReadableStreamBYOBReader(this)) {\n      return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return promiseRejectedWith(readerLockException('cancel'));\n    }\n\n    return ReadableStreamReaderGenericCancel(this, reason);\n  }\n\n  /**\n   * Attempts to reads bytes into view, and returns a promise resolved with the result.\n   *\n   * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.\n   */\n  read<T extends ArrayBufferView>(\n    view: T,\n    options?: ReadableStreamBYOBReaderReadOptions\n  ): Promise<ReadableStreamBYOBReadResult<T>>;\n  read<T extends NonShared<ArrayBufferView>>(\n    view: T,\n    rawOptions: ReadableStreamBYOBReaderReadOptions | null | undefined = {}\n  ): Promise<ReadableStreamBYOBReadResult<T>> {\n    if (!IsReadableStreamBYOBReader(this)) {\n      return promiseRejectedWith(byobReaderBrandCheckException('read'));\n    }\n\n    if (!ArrayBuffer.isView(view)) {\n      return promiseRejectedWith(new TypeError('view must be an array buffer view'));\n    }\n    if (view.byteLength === 0) {\n      return promiseRejectedWith(new TypeError('view must have non-zero byteLength'));\n    }\n    if (view.buffer.byteLength === 0) {\n      return promiseRejectedWith(new TypeError(`view's buffer must have non-zero byteLength`));\n    }\n    if (IsDetachedBuffer(view.buffer)) {\n      return promiseRejectedWith(new TypeError('view\\'s buffer has been detached'));\n    }\n\n    let options: ValidatedReadableStreamBYOBReaderReadOptions;\n    try {\n      options = convertByobReadOptions(rawOptions, 'options');\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    const min = options.min;\n    if (min === 0) {\n      return promiseRejectedWith(new TypeError('options.min must be greater than 0'));\n    }\n    if (!isDataView(view)) {\n      if (min > (view as unknown as TypedArray).length) {\n        return promiseRejectedWith(new RangeError('options.min must be less than or equal to view\\'s length'));\n      }\n    } else if (min > view.byteLength) {\n      return promiseRejectedWith(new RangeError('options.min must be less than or equal to view\\'s byteLength'));\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return promiseRejectedWith(readerLockException('read from'));\n    }\n\n    let resolvePromise!: (result: ReadableStreamBYOBReadResult<T>) => void;\n    let rejectPromise!: (reason: any) => void;\n    const promise = newPromise<ReadableStreamBYOBReadResult<T>>((resolve, reject) => {\n      resolvePromise = resolve;\n      rejectPromise = reject;\n    });\n    const readIntoRequest: ReadIntoRequest<T> = {\n      _chunkSteps: chunk => resolvePromise({ value: chunk, done: false }),\n      _closeSteps: chunk => resolvePromise({ value: chunk, done: true }),\n      _errorSteps: e => rejectPromise(e)\n    };\n    ReadableStreamBYOBReaderRead(this, view, min, readIntoRequest);\n    return promise;\n  }\n\n  /**\n   * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.\n   * If the associated stream is errored when the lock is released, the reader will appear errored in the same way\n   * from now on; otherwise, the reader will appear closed.\n   *\n   * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by\n   * the reader's {@link ReadableStreamBYOBReader.read | read()} method has not yet been settled. Attempting to\n   * do so will throw a `TypeError` and leave the reader locked to the stream.\n   */\n  releaseLock(): void {\n    if (!IsReadableStreamBYOBReader(this)) {\n      throw byobReaderBrandCheckException('releaseLock');\n    }\n\n    if (this._ownerReadableStream === undefined) {\n      return;\n    }\n\n    ReadableStreamBYOBReaderRelease(this);\n  }\n}\n\nObject.defineProperties(ReadableStreamBYOBReader.prototype, {\n  cancel: { enumerable: true },\n  read: { enumerable: true },\n  releaseLock: { enumerable: true },\n  closed: { enumerable: true }\n});\nsetFunctionName(ReadableStreamBYOBReader.prototype.cancel, 'cancel');\nsetFunctionName(ReadableStreamBYOBReader.prototype.read, 'read');\nsetFunctionName(ReadableStreamBYOBReader.prototype.releaseLock, 'releaseLock');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStreamBYOBReader.prototype, Symbol.toStringTag, {\n    value: 'ReadableStreamBYOBReader',\n    configurable: true\n  });\n}\n\n// Abstract operations for the readers.\n\nexport function IsReadableStreamBYOBReader(x: any): x is ReadableStreamBYOBReader {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n    return false;\n  }\n\n  return x instanceof ReadableStreamBYOBReader;\n}\n\nexport function ReadableStreamBYOBReaderRead<T extends NonShared<ArrayBufferView>>(\n  reader: ReadableStreamBYOBReader,\n  view: T,\n  min: number,\n  readIntoRequest: ReadIntoRequest<T>\n): void {\n  const stream = reader._ownerReadableStream;\n\n  assert(stream !== undefined);\n\n  stream._disturbed = true;\n\n  if (stream._state === 'errored') {\n    readIntoRequest._errorSteps(stream._storedError);\n  } else {\n    ReadableByteStreamControllerPullInto(\n      stream._readableStreamController as ReadableByteStreamController,\n      view,\n      min,\n      readIntoRequest\n    );\n  }\n}\n\nexport function ReadableStreamBYOBReaderRelease(reader: ReadableStreamBYOBReader) {\n  ReadableStreamReaderGenericRelease(reader);\n  const e = new TypeError('Reader was released');\n  ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e);\n}\n\nexport function ReadableStreamBYOBReaderErrorReadIntoRequests(reader: ReadableStreamBYOBReader, e: any) {\n  const readIntoRequests = reader._readIntoRequests;\n  reader._readIntoRequests = new SimpleQueue();\n  readIntoRequests.forEach(readIntoRequest => {\n    readIntoRequest._errorSteps(e);\n  });\n}\n\n// Helper functions for the ReadableStreamBYOBReader.\n\nfunction byobReaderBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableStreamBYOBReader.prototype.${name} can only be used on a ReadableStreamBYOBReader`);\n}\n","import type { QueuingStrategy, QueuingStrategySizeCallback } from '../queuing-strategy';\nimport NumberIsNaN from '../../stub/number-isnan';\n\nexport function ExtractHighWaterMark(strategy: QueuingStrategy, defaultHWM: number): number {\n  const { highWaterMark } = strategy;\n\n  if (highWaterMark === undefined) {\n    return defaultHWM;\n  }\n\n  if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n    throw new RangeError('Invalid highWaterMark');\n  }\n\n  return highWaterMark;\n}\n\nexport function ExtractSizeAlgorithm<T>(strategy: QueuingStrategy<T>): QueuingStrategySizeCallback<T> {\n  const { size } = strategy;\n\n  if (!size) {\n    return () => 1;\n  }\n\n  return size;\n}\n","import type { QueuingStrategy, QueuingStrategySizeCallback } from '../queuing-strategy';\nimport { assertDictionary, assertFunction, convertUnrestrictedDouble } from './basic';\n\nexport function convertQueuingStrategy<T>(init: QueuingStrategy<T> | null | undefined,\n                                          context: string): QueuingStrategy<T> {\n  assertDictionary(init, context);\n  const highWaterMark = init?.highWaterMark;\n  const size = init?.size;\n  return {\n    highWaterMark: highWaterMark === undefined ? undefined : convertUnrestrictedDouble(highWaterMark),\n    size: size === undefined ? undefined : convertQueuingStrategySize(size, `${context} has member 'size' that`)\n  };\n}\n\nfunction convertQueuingStrategySize<T>(fn: QueuingStrategySizeCallback<T>,\n                                       context: string): QueuingStrategySizeCallback<T> {\n  assertFunction(fn, context);\n  return chunk => convertUnrestrictedDouble(fn(chunk));\n}\n","import { assertDictionary, assertFunction } from './basic';\nimport { promiseCall, reflectCall } from '../helpers/webidl';\nimport type {\n  UnderlyingSink,\n  UnderlyingSinkAbortCallback,\n  UnderlyingSinkCloseCallback,\n  UnderlyingSinkStartCallback,\n  UnderlyingSinkWriteCallback,\n  ValidatedUnderlyingSink\n} from '../writable-stream/underlying-sink';\nimport { WritableStreamDefaultController } from '../writable-stream';\n\nexport function convertUnderlyingSink<W>(original: UnderlyingSink<W> | null,\n                                         context: string): ValidatedUnderlyingSink<W> {\n  assertDictionary(original, context);\n  const abort = original?.abort;\n  const close = original?.close;\n  const start = original?.start;\n  const type = original?.type;\n  const write = original?.write;\n  return {\n    abort: abort === undefined ?\n      undefined :\n      convertUnderlyingSinkAbortCallback(abort, original!, `${context} has member 'abort' that`),\n    close: close === undefined ?\n      undefined :\n      convertUnderlyingSinkCloseCallback(close, original!, `${context} has member 'close' that`),\n    start: start === undefined ?\n      undefined :\n      convertUnderlyingSinkStartCallback(start, original!, `${context} has member 'start' that`),\n    write: write === undefined ?\n      undefined :\n      convertUnderlyingSinkWriteCallback(write, original!, `${context} has member 'write' that`),\n    type\n  };\n}\n\nfunction convertUnderlyingSinkAbortCallback(\n  fn: UnderlyingSinkAbortCallback,\n  original: UnderlyingSink,\n  context: string\n): (reason: any) => Promise<void> {\n  assertFunction(fn, context);\n  return (reason: any) => promiseCall(fn, original, [reason]);\n}\n\nfunction convertUnderlyingSinkCloseCallback(\n  fn: UnderlyingSinkCloseCallback,\n  original: UnderlyingSink,\n  context: string\n): () => Promise<void> {\n  assertFunction(fn, context);\n  return () => promiseCall(fn, original, []);\n}\n\nfunction convertUnderlyingSinkStartCallback(\n  fn: UnderlyingSinkStartCallback,\n  original: UnderlyingSink,\n  context: string\n): UnderlyingSinkStartCallback {\n  assertFunction(fn, context);\n  return (controller: WritableStreamDefaultController) => reflectCall(fn, original, [controller]);\n}\n\nfunction convertUnderlyingSinkWriteCallback<W>(\n  fn: UnderlyingSinkWriteCallback<W>,\n  original: UnderlyingSink<W>,\n  context: string\n): (chunk: W, controller: WritableStreamDefaultController) => Promise<void> {\n  assertFunction(fn, context);\n  return (chunk: W, controller: WritableStreamDefaultController) => promiseCall(fn, original, [chunk, controller]);\n}\n","import { IsWritableStream, WritableStream } from '../writable-stream';\n\nexport function assertWritableStream(x: unknown, context: string): asserts x is WritableStream {\n  if (!IsWritableStream(x)) {\n    throw new TypeError(`${context} is not a WritableStream.`);\n  }\n}\n","/**\n * A signal object that allows you to communicate with a request and abort it if required\n * via its associated `AbortController` object.\n *\n * @remarks\n *   This interface is compatible with the `AbortSignal` interface defined in TypeScript's DOM types.\n *   It is redefined here, so it can be polyfilled without a DOM, for example with\n *   {@link https://www.npmjs.com/package/abortcontroller-polyfill | abortcontroller-polyfill} in a Node environment.\n *\n * @public\n */\nexport interface AbortSignal {\n  /**\n   * Whether the request is aborted.\n   */\n  readonly aborted: boolean;\n\n  /**\n   * If aborted, returns the reason for aborting.\n   */\n  readonly reason?: any;\n\n  /**\n   * Add an event listener to be triggered when this signal becomes aborted.\n   */\n  addEventListener(type: 'abort', listener: () => void): void;\n\n  /**\n   * Remove an event listener that was previously added with {@link AbortSignal.addEventListener}.\n   */\n  removeEventListener(type: 'abort', listener: () => void): void;\n}\n\nexport function isAbortSignal(value: unknown): value is AbortSignal {\n  if (typeof value !== 'object' || value === null) {\n    return false;\n  }\n  try {\n    return typeof (value as AbortSignal).aborted === 'boolean';\n  } catch {\n    // AbortSignal.prototype.aborted throws if its brand check fails\n    return false;\n  }\n}\n\n/**\n * A controller object that allows you to abort an `AbortSignal` when desired.\n *\n * @remarks\n *   This interface is compatible with the `AbortController` interface defined in TypeScript's DOM types.\n *   It is redefined here, so it can be polyfilled without a DOM, for example with\n *   {@link https://www.npmjs.com/package/abortcontroller-polyfill | abortcontroller-polyfill} in a Node environment.\n *\n * @internal\n */\nexport interface AbortController {\n  readonly signal: AbortSignal;\n\n  abort(reason?: any): void;\n}\n\ninterface AbortControllerConstructor {\n  new(): AbortController;\n}\n\nconst supportsAbortController = typeof (AbortController as any) === 'function';\n\n/**\n * Construct a new AbortController, if supported by the platform.\n *\n * @internal\n */\nexport function createAbortController(): AbortController | undefined {\n  if (supportsAbortController) {\n    return new (AbortController as AbortControllerConstructor)();\n  }\n  return undefined;\n}\n","import assert from '../stub/assert';\nimport {\n  newPromise,\n  promiseRejectedWith,\n  promiseResolvedWith,\n  setPromiseIsHandledToTrue,\n  uponPromise\n} from './helpers/webidl';\nimport {\n  DequeueValue,\n  EnqueueValueWithSize,\n  PeekQueueValue,\n  type QueuePair,\n  ResetQueue\n} from './abstract-ops/queue-with-sizes';\nimport type { QueuingStrategy, QueuingStrategySizeCallback } from './queuing-strategy';\nimport { SimpleQueue } from './simple-queue';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { AbortSteps, ErrorSteps } from './abstract-ops/internal-methods';\nimport { IsNonNegativeNumber } from './abstract-ops/miscellaneous';\nimport { ExtractHighWaterMark, ExtractSizeAlgorithm } from './abstract-ops/queuing-strategy';\nimport { convertQueuingStrategy } from './validators/queuing-strategy';\nimport type {\n  UnderlyingSink,\n  UnderlyingSinkAbortCallback,\n  UnderlyingSinkCloseCallback,\n  UnderlyingSinkStartCallback,\n  UnderlyingSinkWriteCallback,\n  ValidatedUnderlyingSink\n} from './writable-stream/underlying-sink';\nimport { assertObject, assertRequiredArgument } from './validators/basic';\nimport { convertUnderlyingSink } from './validators/underlying-sink';\nimport { assertWritableStream } from './validators/writable-stream';\nimport { type AbortController, type AbortSignal, createAbortController } from './abort-signal';\n\ntype WritableStreamState = 'writable' | 'closed' | 'erroring' | 'errored';\n\ninterface WriteOrCloseRequest {\n  _resolve: (value?: undefined) => void;\n  _reject: (reason: any) => void;\n}\n\ntype WriteRequest = WriteOrCloseRequest;\ntype CloseRequest = WriteOrCloseRequest;\n\ninterface PendingAbortRequest {\n  _promise: Promise<undefined>;\n  _resolve: (value?: undefined) => void;\n  _reject: (reason: any) => void;\n  _reason: any;\n  _wasAlreadyErroring: boolean;\n}\n\n/**\n * A writable stream represents a destination for data, into which you can write.\n *\n * @public\n */\nclass WritableStream<W = any> {\n  /** @internal */\n  _state!: WritableStreamState;\n  /** @internal */\n  _storedError: any;\n  /** @internal */\n  _writer: WritableStreamDefaultWriter<W> | undefined;\n  /** @internal */\n  _writableStreamController!: WritableStreamDefaultController<W>;\n  /** @internal */\n  _writeRequests!: SimpleQueue<WriteRequest>;\n  /** @internal */\n  _inFlightWriteRequest: WriteRequest | undefined;\n  /** @internal */\n  _closeRequest: CloseRequest | undefined;\n  /** @internal */\n  _inFlightCloseRequest: CloseRequest | undefined;\n  /** @internal */\n  _pendingAbortRequest: PendingAbortRequest | undefined;\n  /** @internal */\n  _backpressure!: boolean;\n\n  constructor(underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>);\n  constructor(rawUnderlyingSink: UnderlyingSink<W> | null | undefined = {},\n              rawStrategy: QueuingStrategy<W> | null | undefined = {}) {\n    if (rawUnderlyingSink === undefined) {\n      rawUnderlyingSink = null;\n    } else {\n      assertObject(rawUnderlyingSink, 'First parameter');\n    }\n\n    const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n    const underlyingSink = convertUnderlyingSink(rawUnderlyingSink, 'First parameter');\n\n    InitializeWritableStream(this);\n\n    const type = underlyingSink.type;\n    if (type !== undefined) {\n      throw new RangeError('Invalid type is specified');\n    }\n\n    const sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n    const highWaterMark = ExtractHighWaterMark(strategy, 1);\n\n    SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n  }\n\n  /**\n   * Returns whether or not the writable stream is locked to a writer.\n   */\n  get locked(): boolean {\n    if (!IsWritableStream(this)) {\n      throw streamBrandCheckException('locked');\n    }\n\n    return IsWritableStreamLocked(this);\n  }\n\n  /**\n   * Aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be\n   * immediately moved to an errored state, with any queued-up writes discarded. This will also execute any abort\n   * mechanism of the underlying sink.\n   *\n   * The returned promise will fulfill if the stream shuts down successfully, or reject if the underlying sink signaled\n   * that there was an error doing so. Additionally, it will reject with a `TypeError` (without attempting to cancel\n   * the stream) if the stream is currently locked.\n   */\n  abort(reason: any = undefined): Promise<void> {\n    if (!IsWritableStream(this)) {\n      return promiseRejectedWith(streamBrandCheckException('abort'));\n    }\n\n    if (IsWritableStreamLocked(this)) {\n      return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n    }\n\n    return WritableStreamAbort(this, reason);\n  }\n\n  /**\n   * Closes the stream. The underlying sink will finish processing any previously-written chunks, before invoking its\n   * close behavior. During this time any further attempts to write will fail (without erroring the stream).\n   *\n   * The method returns a promise that will fulfill if all remaining chunks are successfully written and the stream\n   * successfully closes, or rejects if an error is encountered during this process. Additionally, it will reject with\n   * a `TypeError` (without attempting to cancel the stream) if the stream is currently locked.\n   */\n  close() {\n    if (!IsWritableStream(this)) {\n      return promiseRejectedWith(streamBrandCheckException('close'));\n    }\n\n    if (IsWritableStreamLocked(this)) {\n      return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n    }\n\n    if (WritableStreamCloseQueuedOrInFlight(this)) {\n      return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n    }\n\n    return WritableStreamClose(this);\n  }\n\n  /**\n   * Creates a {@link WritableStreamDefaultWriter | writer} and locks the stream to the new writer. While the stream\n   * is locked, no other writer can be acquired until this one is released.\n   *\n   * This functionality is especially useful for creating abstractions that desire the ability to write to a stream\n   * without interruption or interleaving. By getting a writer for the stream, you can ensure nobody else can write at\n   * the same time, which would cause the resulting written data to be unpredictable and probably useless.\n   */\n  getWriter(): WritableStreamDefaultWriter<W> {\n    if (!IsWritableStream(this)) {\n      throw streamBrandCheckException('getWriter');\n    }\n\n    return AcquireWritableStreamDefaultWriter(this);\n  }\n}\n\nObject.defineProperties(WritableStream.prototype, {\n  abort: { enumerable: true },\n  close: { enumerable: true },\n  getWriter: { enumerable: true },\n  locked: { enumerable: true }\n});\nsetFunctionName(WritableStream.prototype.abort, 'abort');\nsetFunctionName(WritableStream.prototype.close, 'close');\nsetFunctionName(WritableStream.prototype.getWriter, 'getWriter');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(WritableStream.prototype, Symbol.toStringTag, {\n    value: 'WritableStream',\n    configurable: true\n  });\n}\n\nexport {\n  AcquireWritableStreamDefaultWriter,\n  CreateWritableStream,\n  IsWritableStream,\n  IsWritableStreamLocked,\n  WritableStream,\n  WritableStreamAbort,\n  WritableStreamDefaultControllerErrorIfNeeded,\n  WritableStreamDefaultWriterCloseWithErrorPropagation,\n  WritableStreamDefaultWriterRelease,\n  WritableStreamDefaultWriterWrite,\n  WritableStreamCloseQueuedOrInFlight\n};\n\nexport type {\n  UnderlyingSink,\n  UnderlyingSinkStartCallback,\n  UnderlyingSinkWriteCallback,\n  UnderlyingSinkCloseCallback,\n  UnderlyingSinkAbortCallback\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter<W>(stream: WritableStream<W>): WritableStreamDefaultWriter<W> {\n  return new WritableStreamDefaultWriter(stream);\n}\n\n// Throws if and only if startAlgorithm throws.\nfunction CreateWritableStream<W>(startAlgorithm: () => void | PromiseLike<void>,\n                                 writeAlgorithm: (chunk: W) => Promise<void>,\n                                 closeAlgorithm: () => Promise<void>,\n                                 abortAlgorithm: (reason: any) => Promise<void>,\n                                 highWaterMark = 1,\n                                 sizeAlgorithm: QueuingStrategySizeCallback<W> = () => 1) {\n  assert(IsNonNegativeNumber(highWaterMark));\n\n  const stream: WritableStream<W> = Object.create(WritableStream.prototype);\n  InitializeWritableStream(stream);\n\n  const controller: WritableStreamDefaultController<W> = Object.create(WritableStreamDefaultController.prototype);\n\n  SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm,\n                                       abortAlgorithm, highWaterMark, sizeAlgorithm);\n  return stream;\n}\n\nfunction InitializeWritableStream<W>(stream: WritableStream<W>) {\n  stream._state = 'writable';\n\n  // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n  // 'erroring' or 'errored'. May be set to an undefined value.\n  stream._storedError = undefined;\n\n  stream._writer = undefined;\n\n  // Initialize to undefined first because the constructor of the controller checks this\n  // variable to validate the caller.\n  stream._writableStreamController = undefined!;\n\n  // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n  // producer without waiting for the queued writes to finish.\n  stream._writeRequests = new SimpleQueue();\n\n  // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n  // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n  stream._inFlightWriteRequest = undefined;\n\n  // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n  // has been detached.\n  stream._closeRequest = undefined;\n\n  // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n  // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n  stream._inFlightCloseRequest = undefined;\n\n  // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n  stream._pendingAbortRequest = undefined;\n\n  // The backpressure signal set by the controller.\n  stream._backpressure = false;\n}\n\nfunction IsWritableStream(x: unknown): x is WritableStream {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n    return false;\n  }\n\n  return x instanceof WritableStream;\n}\n\nfunction IsWritableStreamLocked(stream: WritableStream): boolean {\n  assert(IsWritableStream(stream));\n\n  if (stream._writer === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamAbort(stream: WritableStream, reason: any): Promise<undefined> {\n  if (stream._state === 'closed' || stream._state === 'errored') {\n    return promiseResolvedWith(undefined);\n  }\n  stream._writableStreamController._abortReason = reason;\n  stream._writableStreamController._abortController?.abort(reason);\n\n  // TypeScript narrows the type of `stream._state` down to 'writable' | 'erroring',\n  // but it doesn't know that signaling abort runs author code that might have changed the state.\n  // Widen the type again by casting to WritableStreamState.\n  const state = stream._state as WritableStreamState;\n\n  if (state === 'closed' || state === 'errored') {\n    return promiseResolvedWith(undefined);\n  }\n  if (stream._pendingAbortRequest !== undefined) {\n    return stream._pendingAbortRequest._promise;\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n\n  let wasAlreadyErroring = false;\n  if (state === 'erroring') {\n    wasAlreadyErroring = true;\n    // reason will not be used, so don't keep a reference to it.\n    reason = undefined;\n  }\n\n  const promise = newPromise<undefined>((resolve, reject) => {\n    stream._pendingAbortRequest = {\n      _promise: undefined!,\n      _resolve: resolve,\n      _reject: reject,\n      _reason: reason,\n      _wasAlreadyErroring: wasAlreadyErroring\n    };\n  });\n  stream._pendingAbortRequest!._promise = promise;\n\n  if (!wasAlreadyErroring) {\n    WritableStreamStartErroring(stream, reason);\n  }\n\n  return promise;\n}\n\nfunction WritableStreamClose(stream: WritableStream<any>): Promise<undefined> {\n  const state = stream._state;\n  if (state === 'closed' || state === 'errored') {\n    return promiseRejectedWith(new TypeError(\n      `The stream (in ${state} state) is not in the writable state and cannot be closed`));\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n  assert(!WritableStreamCloseQueuedOrInFlight(stream));\n\n  const promise = newPromise<undefined>((resolve, reject) => {\n    const closeRequest: CloseRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._closeRequest = closeRequest;\n  });\n\n  const writer = stream._writer;\n  if (writer !== undefined && stream._backpressure && state === 'writable') {\n    defaultWriterReadyPromiseResolve(writer);\n  }\n\n  WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n  return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream: WritableStream): Promise<undefined> {\n  assert(IsWritableStreamLocked(stream));\n  assert(stream._state === 'writable');\n\n  const promise = newPromise<undefined>((resolve, reject) => {\n    const writeRequest: WriteRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._writeRequests.push(writeRequest);\n  });\n\n  return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream: WritableStream, error: any) {\n  const state = stream._state;\n\n  if (state === 'writable') {\n    WritableStreamStartErroring(stream, error);\n    return;\n  }\n\n  assert(state === 'erroring');\n  WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream: WritableStream, reason: any) {\n  assert(stream._storedError === undefined);\n  assert(stream._state === 'writable');\n\n  const controller = stream._writableStreamController;\n  assert(controller !== undefined);\n\n  stream._state = 'erroring';\n  stream._storedError = reason;\n  const writer = stream._writer;\n  if (writer !== undefined) {\n    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n  }\n\n  if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) {\n    WritableStreamFinishErroring(stream);\n  }\n}\n\nfunction WritableStreamFinishErroring(stream: WritableStream) {\n  assert(stream._state === 'erroring');\n  assert(!WritableStreamHasOperationMarkedInFlight(stream));\n  stream._state = 'errored';\n  stream._writableStreamController[ErrorSteps]();\n\n  const storedError = stream._storedError;\n  stream._writeRequests.forEach(writeRequest => {\n    writeRequest._reject(storedError);\n  });\n  stream._writeRequests = new SimpleQueue();\n\n  if (stream._pendingAbortRequest === undefined) {\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    return;\n  }\n\n  const abortRequest = stream._pendingAbortRequest;\n  stream._pendingAbortRequest = undefined;\n\n  if (abortRequest._wasAlreadyErroring) {\n    abortRequest._reject(storedError);\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    return;\n  }\n\n  const promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n  uponPromise(\n    promise,\n    () => {\n      abortRequest._resolve();\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n      return null;\n    },\n    (reason: any) => {\n      abortRequest._reject(reason);\n      WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n      return null;\n    });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream: WritableStream) {\n  assert(stream._inFlightWriteRequest !== undefined);\n  stream._inFlightWriteRequest!._resolve(undefined);\n  stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream: WritableStream, error: any) {\n  assert(stream._inFlightWriteRequest !== undefined);\n  stream._inFlightWriteRequest!._reject(error);\n  stream._inFlightWriteRequest = undefined;\n\n  assert(stream._state === 'writable' || stream._state === 'erroring');\n\n  WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream: WritableStream) {\n  assert(stream._inFlightCloseRequest !== undefined);\n  stream._inFlightCloseRequest!._resolve(undefined);\n  stream._inFlightCloseRequest = undefined;\n\n  const state = stream._state;\n\n  assert(state === 'writable' || state === 'erroring');\n\n  if (state === 'erroring') {\n    // The error was too late to do anything, so it is ignored.\n    stream._storedError = undefined;\n    if (stream._pendingAbortRequest !== undefined) {\n      stream._pendingAbortRequest._resolve();\n      stream._pendingAbortRequest = undefined;\n    }\n  }\n\n  stream._state = 'closed';\n\n  const writer = stream._writer;\n  if (writer !== undefined) {\n    defaultWriterClosedPromiseResolve(writer);\n  }\n\n  assert(stream._pendingAbortRequest === undefined);\n  assert(stream._storedError === undefined);\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream: WritableStream, error: any) {\n  assert(stream._inFlightCloseRequest !== undefined);\n  stream._inFlightCloseRequest!._reject(error);\n  stream._inFlightCloseRequest = undefined;\n\n  assert(stream._state === 'writable' || stream._state === 'erroring');\n\n  // Never execute sink abort() after sink close().\n  if (stream._pendingAbortRequest !== undefined) {\n    stream._pendingAbortRequest._reject(error);\n    stream._pendingAbortRequest = undefined;\n  }\n  WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream: WritableStream): boolean {\n  if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream: WritableStream): boolean {\n  if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream: WritableStream) {\n  assert(stream._inFlightCloseRequest === undefined);\n  assert(stream._closeRequest !== undefined);\n  stream._inFlightCloseRequest = stream._closeRequest;\n  stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream: WritableStream) {\n  assert(stream._inFlightWriteRequest === undefined);\n  assert(stream._writeRequests.length !== 0);\n  stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream: WritableStream) {\n  assert(stream._state === 'errored');\n  if (stream._closeRequest !== undefined) {\n    assert(stream._inFlightCloseRequest === undefined);\n\n    stream._closeRequest._reject(stream._storedError);\n    stream._closeRequest = undefined;\n  }\n  const writer = stream._writer;\n  if (writer !== undefined) {\n    defaultWriterClosedPromiseReject(writer, stream._storedError);\n  }\n}\n\nfunction WritableStreamUpdateBackpressure(stream: WritableStream, backpressure: boolean) {\n  assert(stream._state === 'writable');\n  assert(!WritableStreamCloseQueuedOrInFlight(stream));\n\n  const writer = stream._writer;\n  if (writer !== undefined && backpressure !== stream._backpressure) {\n    if (backpressure) {\n      defaultWriterReadyPromiseReset(writer);\n    } else {\n      assert(!backpressure);\n\n      defaultWriterReadyPromiseResolve(writer);\n    }\n  }\n\n  stream._backpressure = backpressure;\n}\n\n/**\n * A default writer vended by a {@link WritableStream}.\n *\n * @public\n */\nexport class WritableStreamDefaultWriter<W = any> {\n  /** @internal */\n  _ownerWritableStream: WritableStream<W>;\n  /** @internal */\n  _closedPromise!: Promise<undefined>;\n  /** @internal */\n  _closedPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _closedPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _closedPromiseState!: 'pending' | 'resolved' | 'rejected';\n  /** @internal */\n  _readyPromise!: Promise<undefined>;\n  /** @internal */\n  _readyPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _readyPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _readyPromiseState!: 'pending' | 'fulfilled' | 'rejected';\n\n  constructor(stream: WritableStream<W>) {\n    assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter');\n    assertWritableStream(stream, 'First parameter');\n\n    if (IsWritableStreamLocked(stream)) {\n      throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n    }\n\n    this._ownerWritableStream = stream;\n    stream._writer = this;\n\n    const state = stream._state;\n\n    if (state === 'writable') {\n      if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) {\n        defaultWriterReadyPromiseInitialize(this);\n      } else {\n        defaultWriterReadyPromiseInitializeAsResolved(this);\n      }\n\n      defaultWriterClosedPromiseInitialize(this);\n    } else if (state === 'erroring') {\n      defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n      defaultWriterClosedPromiseInitialize(this);\n    } else if (state === 'closed') {\n      defaultWriterReadyPromiseInitializeAsResolved(this);\n      defaultWriterClosedPromiseInitializeAsResolved(this);\n    } else {\n      assert(state === 'errored');\n\n      const storedError = stream._storedError;\n      defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n      defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n    }\n  }\n\n  /**\n   * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or\n   * the writer’s lock is released before the stream finishes closing.\n   */\n  get closed(): Promise<undefined> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n    }\n\n    return this._closedPromise;\n  }\n\n  /**\n   * Returns the desired size to fill the stream’s internal queue. It can be negative, if the queue is over-full.\n   * A producer can use this information to determine the right amount of data to write.\n   *\n   * It will be `null` if the stream cannot be successfully written to (due to either being errored, or having an abort\n   * queued up). It will return zero if the stream is closed. And the getter will throw an exception if invoked when\n   * the writer’s lock is released.\n   */\n  get desiredSize(): number | null {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      throw defaultWriterBrandCheckException('desiredSize');\n    }\n\n    if (this._ownerWritableStream === undefined) {\n      throw defaultWriterLockException('desiredSize');\n    }\n\n    return WritableStreamDefaultWriterGetDesiredSize(this);\n  }\n\n  /**\n   * Returns a promise that will be fulfilled when the desired size to fill the stream’s internal queue transitions\n   * from non-positive to positive, signaling that it is no longer applying backpressure. Once the desired size dips\n   * back to zero or below, the getter will return a new promise that stays pending until the next transition.\n   *\n   * If the stream becomes errored or aborted, or the writer’s lock is released, the returned promise will become\n   * rejected.\n   */\n  get ready(): Promise<undefined> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n    }\n\n    return this._readyPromise;\n  }\n\n  /**\n   * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}.\n   */\n  abort(reason: any = undefined): Promise<void> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n    }\n\n    if (this._ownerWritableStream === undefined) {\n      return promiseRejectedWith(defaultWriterLockException('abort'));\n    }\n\n    return WritableStreamDefaultWriterAbort(this, reason);\n  }\n\n  /**\n   * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}.\n   */\n  close(): Promise<void> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n    }\n\n    const stream = this._ownerWritableStream;\n\n    if (stream === undefined) {\n      return promiseRejectedWith(defaultWriterLockException('close'));\n    }\n\n    if (WritableStreamCloseQueuedOrInFlight(stream)) {\n      return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n    }\n\n    return WritableStreamDefaultWriterClose(this);\n  }\n\n  /**\n   * Releases the writer’s lock on the corresponding stream. After the lock is released, the writer is no longer active.\n   * If the associated stream is errored when the lock is released, the writer will appear errored in the same way from\n   * now on; otherwise, the writer will appear closed.\n   *\n   * Note that the lock can still be released even if some ongoing writes have not yet finished (i.e. even if the\n   * promises returned from previous calls to {@link WritableStreamDefaultWriter.write | write()} have not yet settled).\n   * It’s not necessary to hold the lock on the writer for the duration of the write; the lock instead simply prevents\n   * other producers from writing in an interleaved manner.\n   */\n  releaseLock(): void {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      throw defaultWriterBrandCheckException('releaseLock');\n    }\n\n    const stream = this._ownerWritableStream;\n\n    if (stream === undefined) {\n      return;\n    }\n\n    assert(stream._writer !== undefined);\n\n    WritableStreamDefaultWriterRelease(this);\n  }\n\n  /**\n   * Writes the given chunk to the writable stream, by waiting until any previous writes have finished successfully,\n   * and then sending the chunk to the underlying sink's {@link UnderlyingSink.write | write()} method. It will return\n   * a promise that fulfills with undefined upon a successful write, or rejects if the write fails or stream becomes\n   * errored before the writing process is initiated.\n   *\n   * Note that what \"success\" means is up to the underlying sink; it might indicate simply that the chunk has been\n   * accepted, and not necessarily that it is safely saved to its ultimate destination.\n   */\n  write(chunk: W): Promise<void>;\n  write(chunk: W = undefined!): Promise<void> {\n    if (!IsWritableStreamDefaultWriter(this)) {\n      return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n    }\n\n    if (this._ownerWritableStream === undefined) {\n      return promiseRejectedWith(defaultWriterLockException('write to'));\n    }\n\n    return WritableStreamDefaultWriterWrite(this, chunk);\n  }\n}\n\nObject.defineProperties(WritableStreamDefaultWriter.prototype, {\n  abort: { enumerable: true },\n  close: { enumerable: true },\n  releaseLock: { enumerable: true },\n  write: { enumerable: true },\n  closed: { enumerable: true },\n  desiredSize: { enumerable: true },\n  ready: { enumerable: true }\n});\nsetFunctionName(WritableStreamDefaultWriter.prototype.abort, 'abort');\nsetFunctionName(WritableStreamDefaultWriter.prototype.close, 'close');\nsetFunctionName(WritableStreamDefaultWriter.prototype.releaseLock, 'releaseLock');\nsetFunctionName(WritableStreamDefaultWriter.prototype.write, 'write');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(WritableStreamDefaultWriter.prototype, Symbol.toStringTag, {\n    value: 'WritableStreamDefaultWriter',\n    configurable: true\n  });\n}\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter<W = any>(x: any): x is WritableStreamDefaultWriter<W> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n    return false;\n  }\n\n  return x instanceof WritableStreamDefaultWriter;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer: WritableStreamDefaultWriter, reason: any) {\n  const stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer: WritableStreamDefaultWriter): Promise<undefined> {\n  const stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  return WritableStreamClose(stream);\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer: WritableStreamDefaultWriter): Promise<undefined> {\n  const stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  const state = stream._state;\n  if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n    return promiseResolvedWith(undefined);\n  }\n\n  if (state === 'errored') {\n    return promiseRejectedWith(stream._storedError);\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n\n  return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer: WritableStreamDefaultWriter, error: any) {\n  if (writer._closedPromiseState === 'pending') {\n    defaultWriterClosedPromiseReject(writer, error);\n  } else {\n    defaultWriterClosedPromiseResetToRejected(writer, error);\n  }\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer: WritableStreamDefaultWriter, error: any) {\n  if (writer._readyPromiseState === 'pending') {\n    defaultWriterReadyPromiseReject(writer, error);\n  } else {\n    defaultWriterReadyPromiseResetToRejected(writer, error);\n  }\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer: WritableStreamDefaultWriter): number | null {\n  const stream = writer._ownerWritableStream;\n  const state = stream._state;\n\n  if (state === 'errored' || state === 'erroring') {\n    return null;\n  }\n\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer: WritableStreamDefaultWriter) {\n  const stream = writer._ownerWritableStream;\n  assert(stream !== undefined);\n  assert(stream._writer === writer);\n\n  const releasedError = new TypeError(\n    `Writer was released and can no longer be used to monitor the stream's closedness`);\n\n  WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n  // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n  // rejected until afterwards. This means that simply testing state will not work.\n  WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n  stream._writer = undefined;\n  writer._ownerWritableStream = undefined!;\n}\n\nfunction WritableStreamDefaultWriterWrite<W>(writer: WritableStreamDefaultWriter<W>, chunk: W): Promise<undefined> {\n  const stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  const controller = stream._writableStreamController;\n\n  const chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n  if (stream !== writer._ownerWritableStream) {\n    return promiseRejectedWith(defaultWriterLockException('write to'));\n  }\n\n  const state = stream._state;\n  if (state === 'errored') {\n    return promiseRejectedWith(stream._storedError);\n  }\n  if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n    return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to'));\n  }\n  if (state === 'erroring') {\n    return promiseRejectedWith(stream._storedError);\n  }\n\n  assert(state === 'writable');\n\n  const promise = WritableStreamAddWriteRequest(stream);\n\n  WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n  return promise;\n}\n\nconst closeSentinel: unique symbol = {} as any;\n\ntype QueueRecord<W> = W | typeof closeSentinel;\n\n/**\n * Allows control of a {@link WritableStream | writable stream}'s state and internal queue.\n *\n * @public\n */\nexport class WritableStreamDefaultController<W = any> {\n  /** @internal */\n  _controlledWritableStream!: WritableStream<W>;\n  /** @internal */\n  _queue!: SimpleQueue<QueuePair<QueueRecord<W>>>;\n  /** @internal */\n  _queueTotalSize!: number;\n  /** @internal */\n  _abortReason: any;\n  /** @internal */\n  _abortController: AbortController | undefined;\n  /** @internal */\n  _started!: boolean;\n  /** @internal */\n  _strategySizeAlgorithm!: QueuingStrategySizeCallback<W>;\n  /** @internal */\n  _strategyHWM!: number;\n  /** @internal */\n  _writeAlgorithm!: (chunk: W) => Promise<void>;\n  /** @internal */\n  _closeAlgorithm!: () => Promise<void>;\n  /** @internal */\n  _abortAlgorithm!: (reason: any) => Promise<void>;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * The reason which was passed to `WritableStream.abort(reason)` when the stream was aborted.\n   *\n   * @deprecated\n   *  This property has been removed from the specification, see https://github.com/whatwg/streams/pull/1177.\n   *  Use {@link WritableStreamDefaultController.signal}'s `reason` instead.\n   */\n  get abortReason(): any {\n    if (!IsWritableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('abortReason');\n    }\n    return this._abortReason;\n  }\n\n  /**\n   * An `AbortSignal` that can be used to abort the pending write or close operation when the stream is aborted.\n   */\n  get signal(): AbortSignal {\n    if (!IsWritableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('signal');\n    }\n    if (this._abortController === undefined) {\n      // Older browsers or older Node versions may not support `AbortController` or `AbortSignal`.\n      // We don't want to bundle and ship an `AbortController` polyfill together with our polyfill,\n      // so instead we only implement support for `signal` if we find a global `AbortController` constructor.\n      throw new TypeError('WritableStreamDefaultController.prototype.signal is not supported');\n    }\n    return this._abortController.signal;\n  }\n\n  /**\n   * Closes the controlled writable stream, making all future interactions with it fail with the given error `e`.\n   *\n   * This method is rarely used, since usually it suffices to return a rejected promise from one of the underlying\n   * sink's methods. However, it can be useful for suddenly shutting down a stream in response to an event outside the\n   * normal lifecycle of interactions with the underlying sink.\n   */\n  error(e: any = undefined): void {\n    if (!IsWritableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('error');\n    }\n    const state = this._controlledWritableStream._state;\n    if (state !== 'writable') {\n      // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n      // just treat it as a no-op.\n      return;\n    }\n\n    WritableStreamDefaultControllerError(this, e);\n  }\n\n  /** @internal */\n  [AbortSteps](reason: any): Promise<void> {\n    const result = this._abortAlgorithm(reason);\n    WritableStreamDefaultControllerClearAlgorithms(this);\n    return result;\n  }\n\n  /** @internal */\n  [ErrorSteps]() {\n    ResetQueue(this);\n  }\n}\n\nObject.defineProperties(WritableStreamDefaultController.prototype, {\n  abortReason: { enumerable: true },\n  signal: { enumerable: true },\n  error: { enumerable: true }\n});\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(WritableStreamDefaultController.prototype, Symbol.toStringTag, {\n    value: 'WritableStreamDefaultController',\n    configurable: true\n  });\n}\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction IsWritableStreamDefaultController(x: any): x is WritableStreamDefaultController<any> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n    return false;\n  }\n\n  return x instanceof WritableStreamDefaultController;\n}\n\nfunction SetUpWritableStreamDefaultController<W>(stream: WritableStream<W>,\n                                                 controller: WritableStreamDefaultController<W>,\n                                                 startAlgorithm: () => void | PromiseLike<void>,\n                                                 writeAlgorithm: (chunk: W) => Promise<void>,\n                                                 closeAlgorithm: () => Promise<void>,\n                                                 abortAlgorithm: (reason: any) => Promise<void>,\n                                                 highWaterMark: number,\n                                                 sizeAlgorithm: QueuingStrategySizeCallback<W>) {\n  assert(IsWritableStream(stream));\n  assert(stream._writableStreamController === undefined);\n\n  controller._controlledWritableStream = stream;\n  stream._writableStreamController = controller;\n\n  // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n  controller._queue = undefined!;\n  controller._queueTotalSize = undefined!;\n  ResetQueue(controller);\n\n  controller._abortReason = undefined;\n  controller._abortController = createAbortController();\n  controller._started = false;\n\n  controller._strategySizeAlgorithm = sizeAlgorithm;\n  controller._strategyHWM = highWaterMark;\n\n  controller._writeAlgorithm = writeAlgorithm;\n  controller._closeAlgorithm = closeAlgorithm;\n  controller._abortAlgorithm = abortAlgorithm;\n\n  const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n  WritableStreamUpdateBackpressure(stream, backpressure);\n\n  const startResult = startAlgorithm();\n  const startPromise = promiseResolvedWith(startResult);\n  uponPromise(\n    startPromise,\n    () => {\n      assert(stream._state === 'writable' || stream._state === 'erroring');\n      controller._started = true;\n      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n      return null;\n    },\n    r => {\n      assert(stream._state === 'writable' || stream._state === 'erroring');\n      controller._started = true;\n      WritableStreamDealWithRejection(stream, r);\n      return null;\n    }\n  );\n}\n\nfunction SetUpWritableStreamDefaultControllerFromUnderlyingSink<W>(stream: WritableStream<W>,\n                                                                   underlyingSink: ValidatedUnderlyingSink<W>,\n                                                                   highWaterMark: number,\n                                                                   sizeAlgorithm: QueuingStrategySizeCallback<W>) {\n  const controller = Object.create(WritableStreamDefaultController.prototype);\n\n  let startAlgorithm: () => void | PromiseLike<void>;\n  let writeAlgorithm: (chunk: W) => Promise<void>;\n  let closeAlgorithm: () => Promise<void>;\n  let abortAlgorithm: (reason: any) => Promise<void>;\n\n  if (underlyingSink.start !== undefined) {\n    startAlgorithm = () => underlyingSink.start!(controller);\n  } else {\n    startAlgorithm = () => undefined;\n  }\n  if (underlyingSink.write !== undefined) {\n    writeAlgorithm = chunk => underlyingSink.write!(chunk, controller);\n  } else {\n    writeAlgorithm = () => promiseResolvedWith(undefined);\n  }\n  if (underlyingSink.close !== undefined) {\n    closeAlgorithm = () => underlyingSink.close!();\n  } else {\n    closeAlgorithm = () => promiseResolvedWith(undefined);\n  }\n  if (underlyingSink.abort !== undefined) {\n    abortAlgorithm = reason => underlyingSink.abort!(reason);\n  } else {\n    abortAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  SetUpWritableStreamDefaultController(\n    stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm\n  );\n}\n\n// ClearAlgorithms may be called twice. Erroring the same stream in multiple ways will often result in redundant calls.\nfunction WritableStreamDefaultControllerClearAlgorithms(controller: WritableStreamDefaultController<any>) {\n  controller._writeAlgorithm = undefined!;\n  controller._closeAlgorithm = undefined!;\n  controller._abortAlgorithm = undefined!;\n  controller._strategySizeAlgorithm = undefined!;\n}\n\nfunction WritableStreamDefaultControllerClose<W>(controller: WritableStreamDefaultController<W>) {\n  EnqueueValueWithSize(controller, closeSentinel, 0);\n  WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize<W>(controller: WritableStreamDefaultController<W>,\n                                                        chunk: W): number {\n  try {\n    return controller._strategySizeAlgorithm(chunk);\n  } catch (chunkSizeE) {\n    WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n    return 1;\n  }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller: WritableStreamDefaultController<any>): number {\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite<W>(controller: WritableStreamDefaultController<W>,\n                                                 chunk: W,\n                                                 chunkSize: number) {\n  try {\n    EnqueueValueWithSize(controller, chunk, chunkSize);\n  } catch (enqueueE) {\n    WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n    return;\n  }\n\n  const stream = controller._controlledWritableStream;\n  if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === 'writable') {\n    const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n    WritableStreamUpdateBackpressure(stream, backpressure);\n  }\n\n  WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded<W>(controller: WritableStreamDefaultController<W>) {\n  const stream = controller._controlledWritableStream;\n\n  if (!controller._started) {\n    return;\n  }\n\n  if (stream._inFlightWriteRequest !== undefined) {\n    return;\n  }\n\n  const state = stream._state;\n  assert(state !== 'closed' && state !== 'errored');\n  if (state === 'erroring') {\n    WritableStreamFinishErroring(stream);\n    return;\n  }\n\n  if (controller._queue.length === 0) {\n    return;\n  }\n\n  const value = PeekQueueValue(controller);\n  if (value === closeSentinel) {\n    WritableStreamDefaultControllerProcessClose(controller);\n  } else {\n    WritableStreamDefaultControllerProcessWrite(controller, value);\n  }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller: WritableStreamDefaultController<any>, error: any) {\n  if (controller._controlledWritableStream._state === 'writable') {\n    WritableStreamDefaultControllerError(controller, error);\n  }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller: WritableStreamDefaultController<any>) {\n  const stream = controller._controlledWritableStream;\n\n  WritableStreamMarkCloseRequestInFlight(stream);\n\n  DequeueValue(controller);\n  assert(controller._queue.length === 0);\n\n  const sinkClosePromise = controller._closeAlgorithm();\n  WritableStreamDefaultControllerClearAlgorithms(controller);\n  uponPromise(\n    sinkClosePromise,\n    () => {\n      WritableStreamFinishInFlightClose(stream);\n      return null;\n    },\n    reason => {\n      WritableStreamFinishInFlightCloseWithError(stream, reason);\n      return null;\n    }\n  );\n}\n\nfunction WritableStreamDefaultControllerProcessWrite<W>(controller: WritableStreamDefaultController<W>, chunk: W) {\n  const stream = controller._controlledWritableStream;\n\n  WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n  const sinkWritePromise = controller._writeAlgorithm(chunk);\n  uponPromise(\n    sinkWritePromise,\n    () => {\n      WritableStreamFinishInFlightWrite(stream);\n\n      const state = stream._state;\n      assert(state === 'writable' || state === 'erroring');\n\n      DequeueValue(controller);\n\n      if (!WritableStreamCloseQueuedOrInFlight(stream) && state === 'writable') {\n        const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n        WritableStreamUpdateBackpressure(stream, backpressure);\n      }\n\n      WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n      return null;\n    },\n    reason => {\n      if (stream._state === 'writable') {\n        WritableStreamDefaultControllerClearAlgorithms(controller);\n      }\n      WritableStreamFinishInFlightWriteWithError(stream, reason);\n      return null;\n    }\n  );\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller: WritableStreamDefaultController<any>): boolean {\n  const desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n  return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller: WritableStreamDefaultController<any>, error: any) {\n  const stream = controller._controlledWritableStream;\n\n  assert(stream._state === 'writable');\n\n  WritableStreamDefaultControllerClearAlgorithms(controller);\n  WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name: string): TypeError {\n  return new TypeError(`WritableStream.prototype.${name} can only be used on a WritableStream`);\n}\n\n// Helper functions for the WritableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `WritableStreamDefaultController.prototype.${name} can only be used on a WritableStreamDefaultController`);\n}\n\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `WritableStreamDefaultWriter.prototype.${name} can only be used on a WritableStreamDefaultWriter`);\n}\n\nfunction defaultWriterLockException(name: string): TypeError {\n  return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer: WritableStreamDefaultWriter) {\n  writer._closedPromise = newPromise((resolve, reject) => {\n    writer._closedPromise_resolve = resolve;\n    writer._closedPromise_reject = reject;\n    writer._closedPromiseState = 'pending';\n  });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer: WritableStreamDefaultWriter, reason: any) {\n  defaultWriterClosedPromiseInitialize(writer);\n  defaultWriterClosedPromiseReject(writer, reason);\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer: WritableStreamDefaultWriter) {\n  defaultWriterClosedPromiseInitialize(writer);\n  defaultWriterClosedPromiseResolve(writer);\n}\n\nfunction defaultWriterClosedPromiseReject(writer: WritableStreamDefaultWriter, reason: any) {\n  if (writer._closedPromise_reject === undefined) {\n    return;\n  }\n  assert(writer._closedPromiseState === 'pending');\n\n  setPromiseIsHandledToTrue(writer._closedPromise);\n  writer._closedPromise_reject(reason);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer: WritableStreamDefaultWriter, reason: any) {\n  assert(writer._closedPromise_resolve === undefined);\n  assert(writer._closedPromise_reject === undefined);\n  assert(writer._closedPromiseState !== 'pending');\n\n  defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n}\n\nfunction defaultWriterClosedPromiseResolve(writer: WritableStreamDefaultWriter) {\n  if (writer._closedPromise_resolve === undefined) {\n    return;\n  }\n  assert(writer._closedPromiseState === 'pending');\n\n  writer._closedPromise_resolve(undefined);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer: WritableStreamDefaultWriter) {\n  writer._readyPromise = newPromise((resolve, reject) => {\n    writer._readyPromise_resolve = resolve;\n    writer._readyPromise_reject = reject;\n  });\n  writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer: WritableStreamDefaultWriter, reason: any) {\n  defaultWriterReadyPromiseInitialize(writer);\n  defaultWriterReadyPromiseReject(writer, reason);\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer: WritableStreamDefaultWriter) {\n  defaultWriterReadyPromiseInitialize(writer);\n  defaultWriterReadyPromiseResolve(writer);\n}\n\nfunction defaultWriterReadyPromiseReject(writer: WritableStreamDefaultWriter, reason: any) {\n  if (writer._readyPromise_reject === undefined) {\n    return;\n  }\n\n  setPromiseIsHandledToTrue(writer._readyPromise);\n  writer._readyPromise_reject(reason);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer: WritableStreamDefaultWriter) {\n  assert(writer._readyPromise_resolve === undefined);\n  assert(writer._readyPromise_reject === undefined);\n\n  defaultWriterReadyPromiseInitialize(writer);\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer: WritableStreamDefaultWriter, reason: any) {\n  assert(writer._readyPromise_resolve === undefined);\n  assert(writer._readyPromise_reject === undefined);\n\n  defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n}\n\nfunction defaultWriterReadyPromiseResolve(writer: WritableStreamDefaultWriter) {\n  if (writer._readyPromise_resolve === undefined) {\n    return;\n  }\n\n  writer._readyPromise_resolve(undefined);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'fulfilled';\n}\n","/// <reference lib=\"dom\" />\n\nfunction getGlobals(): typeof globalThis | undefined {\n  if (typeof globalThis !== 'undefined') {\n    return globalThis;\n  } else if (typeof self !== 'undefined') {\n    return self;\n  } else if (typeof global !== 'undefined') {\n    return global;\n  }\n  return undefined;\n}\n\nexport const globals = getGlobals();\n","/// <reference types=\"node\" />\nimport { globals } from '../globals';\nimport { setFunctionName } from '../lib/helpers/miscellaneous';\n\ninterface DOMException extends Error {\n  name: string;\n  message: string;\n}\n\ntype DOMExceptionConstructor = new (message?: string, name?: string) => DOMException;\n\nfunction isDOMExceptionConstructor(ctor: unknown): ctor is DOMExceptionConstructor {\n  if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n    return false;\n  }\n  if ((ctor as DOMExceptionConstructor).name !== 'DOMException') {\n    return false;\n  }\n  try {\n    new (ctor as DOMExceptionConstructor)();\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Support:\n * - Web browsers\n * - Node 18 and higher (https://github.com/nodejs/node/commit/e4b1fb5e6422c1ff151234bb9de792d45dd88d87)\n */\nfunction getFromGlobal(): DOMExceptionConstructor | undefined {\n  const ctor = globals?.DOMException;\n  return isDOMExceptionConstructor(ctor) ? ctor : undefined;\n}\n\n/**\n * Support:\n * - All platforms\n */\nfunction createPolyfill(): DOMExceptionConstructor {\n  // eslint-disable-next-line @typescript-eslint/no-shadow\n  const ctor = function DOMException(this: DOMException, message?: string, name?: string) {\n    this.message = message || '';\n    this.name = name || 'Error';\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  } as any;\n  setFunctionName(ctor, 'DOMException');\n  ctor.prototype = Object.create(Error.prototype);\n  Object.defineProperty(ctor.prototype, 'constructor', { value: ctor, writable: true, configurable: true });\n  return ctor;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nconst DOMException: DOMExceptionConstructor = getFromGlobal() || createPolyfill();\n\nexport { DOMException };\n","import { IsReadableStream, IsReadableStreamLocked, ReadableStream, ReadableStreamCancel } from '../readable-stream';\nimport { AcquireReadableStreamDefaultReader, ReadableStreamDefaultReaderRead } from './default-reader';\nimport { ReadableStreamReaderGenericRelease } from './generic-reader';\nimport {\n  AcquireWritableStreamDefaultWriter,\n  IsWritableStream,\n  IsWritableStreamLocked,\n  WritableStream,\n  WritableStreamAbort,\n  WritableStreamCloseQueuedOrInFlight,\n  WritableStreamDefaultWriterCloseWithErrorPropagation,\n  WritableStreamDefaultWriterRelease,\n  WritableStreamDefaultWriterWrite\n} from '../writable-stream';\nimport assert from '../../stub/assert';\nimport {\n  newPromise,\n  PerformPromiseThen,\n  promiseResolvedWith,\n  setPromiseIsHandledToTrue,\n  uponFulfillment,\n  uponPromise,\n  uponRejection\n} from '../helpers/webidl';\nimport { noop } from '../../utils';\nimport { type AbortSignal, isAbortSignal } from '../abort-signal';\nimport { DOMException } from '../../stub/dom-exception';\n\nexport function ReadableStreamPipeTo<T>(source: ReadableStream<T>,\n                                        dest: WritableStream<T>,\n                                        preventClose: boolean,\n                                        preventAbort: boolean,\n                                        preventCancel: boolean,\n                                        signal: AbortSignal | undefined): Promise<undefined> {\n  assert(IsReadableStream(source));\n  assert(IsWritableStream(dest));\n  assert(typeof preventClose === 'boolean');\n  assert(typeof preventAbort === 'boolean');\n  assert(typeof preventCancel === 'boolean');\n  assert(signal === undefined || isAbortSignal(signal));\n  assert(!IsReadableStreamLocked(source));\n  assert(!IsWritableStreamLocked(dest));\n\n  const reader = AcquireReadableStreamDefaultReader<T>(source);\n  const writer = AcquireWritableStreamDefaultWriter<T>(dest);\n\n  source._disturbed = true;\n\n  let shuttingDown = false;\n\n  // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n  let currentWrite = promiseResolvedWith<void>(undefined);\n\n  return newPromise((resolve, reject) => {\n    let abortAlgorithm: () => void;\n    if (signal !== undefined) {\n      abortAlgorithm = () => {\n        const error = signal.reason !== undefined ? signal.reason : new DOMException('Aborted', 'AbortError');\n        const actions: Array<() => Promise<void>> = [];\n        if (!preventAbort) {\n          actions.push(() => {\n            if (dest._state === 'writable') {\n              return WritableStreamAbort(dest, error);\n            }\n            return promiseResolvedWith(undefined);\n          });\n        }\n        if (!preventCancel) {\n          actions.push(() => {\n            if (source._state === 'readable') {\n              return ReadableStreamCancel(source, error);\n            }\n            return promiseResolvedWith(undefined);\n          });\n        }\n        shutdownWithAction(() => Promise.all(actions.map(action => action())), true, error);\n      };\n\n      if (signal.aborted) {\n        abortAlgorithm();\n        return;\n      }\n\n      signal.addEventListener('abort', abortAlgorithm);\n    }\n\n    // Using reader and writer, read all chunks from this and write them to dest\n    // - Backpressure must be enforced\n    // - Shutdown must stop all activity\n    function pipeLoop() {\n      return newPromise<void>((resolveLoop, rejectLoop) => {\n        function next(done: boolean) {\n          if (done) {\n            resolveLoop();\n          } else {\n            // Use `PerformPromiseThen` instead of `uponPromise` to avoid\n            // adding unnecessary `.catch(rethrowAssertionErrorRejection)` handlers\n            PerformPromiseThen(pipeStep(), next, rejectLoop);\n          }\n        }\n\n        next(false);\n      });\n    }\n\n    function pipeStep(): Promise<boolean> {\n      if (shuttingDown) {\n        return promiseResolvedWith(true);\n      }\n\n      return PerformPromiseThen(writer._readyPromise, () => {\n        return newPromise<boolean>((resolveRead, rejectRead) => {\n          ReadableStreamDefaultReaderRead(\n            reader,\n            {\n              _chunkSteps: chunk => {\n                currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), undefined, noop);\n                resolveRead(false);\n              },\n              _closeSteps: () => resolveRead(true),\n              _errorSteps: rejectRead\n            }\n          );\n        });\n      });\n    }\n\n    // Errors must be propagated forward\n    isOrBecomesErrored(source, reader._closedPromise, storedError => {\n      if (!preventAbort) {\n        shutdownWithAction(() => WritableStreamAbort(dest, storedError), true, storedError);\n      } else {\n        shutdown(true, storedError);\n      }\n      return null;\n    });\n\n    // Errors must be propagated backward\n    isOrBecomesErrored(dest, writer._closedPromise, storedError => {\n      if (!preventCancel) {\n        shutdownWithAction(() => ReadableStreamCancel(source, storedError), true, storedError);\n      } else {\n        shutdown(true, storedError);\n      }\n      return null;\n    });\n\n    // Closing must be propagated forward\n    isOrBecomesClosed(source, reader._closedPromise, () => {\n      if (!preventClose) {\n        shutdownWithAction(() => WritableStreamDefaultWriterCloseWithErrorPropagation(writer));\n      } else {\n        shutdown();\n      }\n      return null;\n    });\n\n    // Closing must be propagated backward\n    if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === 'closed') {\n      const destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n      if (!preventCancel) {\n        shutdownWithAction(() => ReadableStreamCancel(source, destClosed), true, destClosed);\n      } else {\n        shutdown(true, destClosed);\n      }\n    }\n\n    setPromiseIsHandledToTrue(pipeLoop());\n\n    function waitForWritesToFinish(): Promise<void> {\n      // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n      // for that too.\n      const oldCurrentWrite = currentWrite;\n      return PerformPromiseThen(\n        currentWrite,\n        () => oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined\n      );\n    }\n\n    function isOrBecomesErrored(stream: ReadableStream | WritableStream,\n                                promise: Promise<void>,\n                                action: (reason: any) => null) {\n      if (stream._state === 'errored') {\n        action(stream._storedError);\n      } else {\n        uponRejection(promise, action);\n      }\n    }\n\n    function isOrBecomesClosed(stream: ReadableStream | WritableStream, promise: Promise<void>, action: () => null) {\n      if (stream._state === 'closed') {\n        action();\n      } else {\n        uponFulfillment(promise, action);\n      }\n    }\n\n    function shutdownWithAction(action: () => Promise<unknown>, originalIsError?: boolean, originalError?: any) {\n      if (shuttingDown) {\n        return;\n      }\n      shuttingDown = true;\n\n      if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n        uponFulfillment(waitForWritesToFinish(), doTheRest);\n      } else {\n        doTheRest();\n      }\n\n      function doTheRest(): null {\n        uponPromise(\n          action(),\n          () => finalize(originalIsError, originalError),\n          newError => finalize(true, newError)\n        );\n        return null;\n      }\n    }\n\n    function shutdown(isError?: boolean, error?: any) {\n      if (shuttingDown) {\n        return;\n      }\n      shuttingDown = true;\n\n      if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n        uponFulfillment(waitForWritesToFinish(), () => finalize(isError, error));\n      } else {\n        finalize(isError, error);\n      }\n    }\n\n    function finalize(isError?: boolean, error?: any): null {\n      WritableStreamDefaultWriterRelease(writer);\n      ReadableStreamReaderGenericRelease(reader);\n\n      if (signal !== undefined) {\n        signal.removeEventListener('abort', abortAlgorithm);\n      }\n      if (isError) {\n        reject(error);\n      } else {\n        resolve(undefined);\n      }\n\n      return null;\n    }\n  });\n}\n","import type { QueuingStrategySizeCallback } from '../queuing-strategy';\nimport assert from '../../stub/assert';\nimport { DequeueValue, EnqueueValueWithSize, type QueuePair, ResetQueue } from '../abstract-ops/queue-with-sizes';\nimport {\n  ReadableStreamAddReadRequest,\n  ReadableStreamFulfillReadRequest,\n  ReadableStreamGetNumReadRequests,\n  type ReadRequest\n} from './default-reader';\nimport { SimpleQueue } from '../simple-queue';\nimport { IsReadableStreamLocked, ReadableStream, ReadableStreamClose, ReadableStreamError } from '../readable-stream';\nimport type { ValidatedUnderlyingSource } from './underlying-source';\nimport { setFunctionName, typeIsObject } from '../helpers/miscellaneous';\nimport { CancelSteps, PullSteps, ReleaseSteps } from '../abstract-ops/internal-methods';\nimport { promiseResolvedWith, uponPromise } from '../helpers/webidl';\n\n/**\n * Allows control of a {@link ReadableStream | readable stream}'s state and internal queue.\n *\n * @public\n */\nexport class ReadableStreamDefaultController<R> {\n  /** @internal */\n  _controlledReadableStream!: ReadableStream<R>;\n  /** @internal */\n  _queue!: SimpleQueue<QueuePair<R>>;\n  /** @internal */\n  _queueTotalSize!: number;\n  /** @internal */\n  _started!: boolean;\n  /** @internal */\n  _closeRequested!: boolean;\n  /** @internal */\n  _pullAgain!: boolean;\n  /** @internal */\n  _pulling !: boolean;\n  /** @internal */\n  _strategySizeAlgorithm!: QueuingStrategySizeCallback<R>;\n  /** @internal */\n  _strategyHWM!: number;\n  /** @internal */\n  _pullAlgorithm!: () => Promise<void>;\n  /** @internal */\n  _cancelAlgorithm!: (reason: any) => Promise<void>;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is\n   * over-full. An underlying source ought to use this information to determine when and how to apply backpressure.\n   */\n  get desiredSize(): number | null {\n    if (!IsReadableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('desiredSize');\n    }\n\n    return ReadableStreamDefaultControllerGetDesiredSize(this);\n  }\n\n  /**\n   * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from\n   * the stream, but once those are read, the stream will become closed.\n   */\n  close(): void {\n    if (!IsReadableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('close');\n    }\n\n    if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n      throw new TypeError('The stream is not in a state that permits close');\n    }\n\n    ReadableStreamDefaultControllerClose(this);\n  }\n\n  /**\n   * Enqueues the given chunk `chunk` in the controlled readable stream.\n   */\n  enqueue(chunk: R): void;\n  enqueue(chunk: R = undefined!): void {\n    if (!IsReadableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('enqueue');\n    }\n\n    if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n      throw new TypeError('The stream is not in a state that permits enqueue');\n    }\n\n    return ReadableStreamDefaultControllerEnqueue(this, chunk);\n  }\n\n  /**\n   * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n   */\n  error(e: any = undefined): void {\n    if (!IsReadableStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('error');\n    }\n\n    ReadableStreamDefaultControllerError(this, e);\n  }\n\n  /** @internal */\n  [CancelSteps](reason: any): Promise<void> {\n    ResetQueue(this);\n    const result = this._cancelAlgorithm(reason);\n    ReadableStreamDefaultControllerClearAlgorithms(this);\n    return result;\n  }\n\n  /** @internal */\n  [PullSteps](readRequest: ReadRequest<R>): void {\n    const stream = this._controlledReadableStream;\n\n    if (this._queue.length > 0) {\n      const chunk = DequeueValue(this);\n\n      if (this._closeRequested && this._queue.length === 0) {\n        ReadableStreamDefaultControllerClearAlgorithms(this);\n        ReadableStreamClose(stream);\n      } else {\n        ReadableStreamDefaultControllerCallPullIfNeeded(this);\n      }\n\n      readRequest._chunkSteps(chunk);\n    } else {\n      ReadableStreamAddReadRequest(stream, readRequest);\n      ReadableStreamDefaultControllerCallPullIfNeeded(this);\n    }\n  }\n\n  /** @internal */\n  [ReleaseSteps](): void {\n    // Do nothing.\n  }\n}\n\nObject.defineProperties(ReadableStreamDefaultController.prototype, {\n  close: { enumerable: true },\n  enqueue: { enumerable: true },\n  error: { enumerable: true },\n  desiredSize: { enumerable: true }\n});\nsetFunctionName(ReadableStreamDefaultController.prototype.close, 'close');\nsetFunctionName(ReadableStreamDefaultController.prototype.enqueue, 'enqueue');\nsetFunctionName(ReadableStreamDefaultController.prototype.error, 'error');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStreamDefaultController.prototype, Symbol.toStringTag, {\n    value: 'ReadableStreamDefaultController',\n    configurable: true\n  });\n}\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController<R = any>(x: any): x is ReadableStreamDefaultController<R> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n    return false;\n  }\n\n  return x instanceof ReadableStreamDefaultController;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller: ReadableStreamDefaultController<any>): void {\n  const shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n  if (!shouldPull) {\n    return;\n  }\n\n  if (controller._pulling) {\n    controller._pullAgain = true;\n    return;\n  }\n\n  assert(!controller._pullAgain);\n\n  controller._pulling = true;\n\n  const pullPromise = controller._pullAlgorithm();\n  uponPromise(\n    pullPromise,\n    () => {\n      controller._pulling = false;\n\n      if (controller._pullAgain) {\n        controller._pullAgain = false;\n        ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n      }\n\n      return null;\n    },\n    e => {\n      ReadableStreamDefaultControllerError(controller, e);\n      return null;\n    }\n  );\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller: ReadableStreamDefaultController<any>): boolean {\n  const stream = controller._controlledReadableStream;\n\n  if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n    return false;\n  }\n\n  if (!controller._started) {\n    return false;\n  }\n\n  if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n    return true;\n  }\n\n  const desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n  assert(desiredSize !== null);\n  if (desiredSize! > 0) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction ReadableStreamDefaultControllerClearAlgorithms(controller: ReadableStreamDefaultController<any>) {\n  controller._pullAlgorithm = undefined!;\n  controller._cancelAlgorithm = undefined!;\n  controller._strategySizeAlgorithm = undefined!;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nexport function ReadableStreamDefaultControllerClose(controller: ReadableStreamDefaultController<any>) {\n  if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n    return;\n  }\n\n  const stream = controller._controlledReadableStream;\n\n  controller._closeRequested = true;\n\n  if (controller._queue.length === 0) {\n    ReadableStreamDefaultControllerClearAlgorithms(controller);\n    ReadableStreamClose(stream);\n  }\n}\n\nexport function ReadableStreamDefaultControllerEnqueue<R>(\n  controller: ReadableStreamDefaultController<R>,\n  chunk: R\n): void {\n  if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n    return;\n  }\n\n  const stream = controller._controlledReadableStream;\n\n  if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n    ReadableStreamFulfillReadRequest(stream, chunk, false);\n  } else {\n    let chunkSize;\n    try {\n      chunkSize = controller._strategySizeAlgorithm(chunk);\n    } catch (chunkSizeE) {\n      ReadableStreamDefaultControllerError(controller, chunkSizeE);\n      throw chunkSizeE;\n    }\n\n    try {\n      EnqueueValueWithSize(controller, chunk, chunkSize);\n    } catch (enqueueE) {\n      ReadableStreamDefaultControllerError(controller, enqueueE);\n      throw enqueueE;\n    }\n  }\n\n  ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n}\n\nexport function ReadableStreamDefaultControllerError(controller: ReadableStreamDefaultController<any>, e: any) {\n  const stream = controller._controlledReadableStream;\n\n  if (stream._state !== 'readable') {\n    return;\n  }\n\n  ResetQueue(controller);\n\n  ReadableStreamDefaultControllerClearAlgorithms(controller);\n  ReadableStreamError(stream, e);\n}\n\nexport function ReadableStreamDefaultControllerGetDesiredSize(\n  controller: ReadableStreamDefaultController<any>\n): number | null {\n  const state = controller._controlledReadableStream._state;\n\n  if (state === 'errored') {\n    return null;\n  }\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\n// This is used in the implementation of TransformStream.\nexport function ReadableStreamDefaultControllerHasBackpressure(\n  controller: ReadableStreamDefaultController<any>\n): boolean {\n  if (ReadableStreamDefaultControllerShouldCallPull(controller)) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function ReadableStreamDefaultControllerCanCloseOrEnqueue(\n  controller: ReadableStreamDefaultController<any>\n): boolean {\n  const state = controller._controlledReadableStream._state;\n\n  if (!controller._closeRequested && state === 'readable') {\n    return true;\n  }\n\n  return false;\n}\n\nexport function SetUpReadableStreamDefaultController<R>(stream: ReadableStream<R>,\n                                                        controller: ReadableStreamDefaultController<R>,\n                                                        startAlgorithm: () => void | PromiseLike<void>,\n                                                        pullAlgorithm: () => Promise<void>,\n                                                        cancelAlgorithm: (reason: any) => Promise<void>,\n                                                        highWaterMark: number,\n                                                        sizeAlgorithm: QueuingStrategySizeCallback<R>) {\n  assert(stream._readableStreamController === undefined);\n\n  controller._controlledReadableStream = stream;\n\n  controller._queue = undefined!;\n  controller._queueTotalSize = undefined!;\n  ResetQueue(controller);\n\n  controller._started = false;\n  controller._closeRequested = false;\n  controller._pullAgain = false;\n  controller._pulling = false;\n\n  controller._strategySizeAlgorithm = sizeAlgorithm;\n  controller._strategyHWM = highWaterMark;\n\n  controller._pullAlgorithm = pullAlgorithm;\n  controller._cancelAlgorithm = cancelAlgorithm;\n\n  stream._readableStreamController = controller;\n\n  const startResult = startAlgorithm();\n  uponPromise(\n    promiseResolvedWith(startResult),\n    () => {\n      controller._started = true;\n\n      assert(!controller._pulling);\n      assert(!controller._pullAgain);\n\n      ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n      return null;\n    },\n    r => {\n      ReadableStreamDefaultControllerError(controller, r);\n      return null;\n    }\n  );\n}\n\nexport function SetUpReadableStreamDefaultControllerFromUnderlyingSource<R>(\n  stream: ReadableStream<R>,\n  underlyingSource: ValidatedUnderlyingSource<R>,\n  highWaterMark: number,\n  sizeAlgorithm: QueuingStrategySizeCallback<R>\n) {\n  const controller: ReadableStreamDefaultController<R> = Object.create(ReadableStreamDefaultController.prototype);\n\n  let startAlgorithm: () => void | PromiseLike<void>;\n  let pullAlgorithm: () => Promise<void>;\n  let cancelAlgorithm: (reason: any) => Promise<void>;\n\n  if (underlyingSource.start !== undefined) {\n    startAlgorithm = () => underlyingSource.start!(controller);\n  } else {\n    startAlgorithm = () => undefined;\n  }\n  if (underlyingSource.pull !== undefined) {\n    pullAlgorithm = () => underlyingSource.pull!(controller);\n  } else {\n    pullAlgorithm = () => promiseResolvedWith(undefined);\n  }\n  if (underlyingSource.cancel !== undefined) {\n    cancelAlgorithm = reason => underlyingSource.cancel!(reason);\n  } else {\n    cancelAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  SetUpReadableStreamDefaultController(\n    stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm\n  );\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `ReadableStreamDefaultController.prototype.${name} can only be used on a ReadableStreamDefaultController`);\n}\n","import {\n  CreateReadableByteStream,\n  CreateReadableStream,\n  type DefaultReadableStream,\n  IsReadableStream,\n  type ReadableByteStream,\n  ReadableStream,\n  ReadableStreamCancel,\n  type ReadableStreamReader\n} from '../readable-stream';\nimport { ReadableStreamReaderGenericRelease } from './generic-reader';\nimport {\n  AcquireReadableStreamDefaultReader,\n  IsReadableStreamDefaultReader,\n  ReadableStreamDefaultReaderRead,\n  type ReadRequest\n} from './default-reader';\nimport {\n  AcquireReadableStreamBYOBReader,\n  IsReadableStreamBYOBReader,\n  ReadableStreamBYOBReaderRead,\n  type ReadIntoRequest\n} from './byob-reader';\nimport assert from '../../stub/assert';\nimport { newPromise, promiseResolvedWith, queueMicrotask, uponRejection } from '../helpers/webidl';\nimport {\n  ReadableStreamDefaultControllerClose,\n  ReadableStreamDefaultControllerEnqueue,\n  ReadableStreamDefaultControllerError\n} from './default-controller';\nimport {\n  IsReadableByteStreamController,\n  ReadableByteStreamControllerClose,\n  ReadableByteStreamControllerEnqueue,\n  ReadableByteStreamControllerError,\n  ReadableByteStreamControllerGetBYOBRequest,\n  ReadableByteStreamControllerRespond,\n  ReadableByteStreamControllerRespondWithNewView\n} from './byte-stream-controller';\nimport { CreateArrayFromList } from '../abstract-ops/ecmascript';\nimport { CloneAsUint8Array } from '../abstract-ops/miscellaneous';\nimport type { NonShared } from '../helpers/array-buffer-view';\n\nexport function ReadableStreamTee<R>(stream: ReadableStream<R>,\n                                     cloneForBranch2: boolean): [ReadableStream<R>, ReadableStream<R>] {\n  assert(IsReadableStream(stream));\n  assert(typeof cloneForBranch2 === 'boolean');\n  if (IsReadableByteStreamController(stream._readableStreamController)) {\n    return ReadableByteStreamTee(stream as unknown as ReadableByteStream) as\n      unknown as [ReadableStream<R>, ReadableStream<R>];\n  }\n  return ReadableStreamDefaultTee(stream, cloneForBranch2);\n}\n\nexport function ReadableStreamDefaultTee<R>(\n  stream: ReadableStream<R>,\n  cloneForBranch2: boolean\n): [DefaultReadableStream<R>, DefaultReadableStream<R>] {\n  assert(IsReadableStream(stream));\n  assert(typeof cloneForBranch2 === 'boolean');\n\n  const reader = AcquireReadableStreamDefaultReader<R>(stream);\n\n  let reading = false;\n  let readAgain = false;\n  let canceled1 = false;\n  let canceled2 = false;\n  let reason1: any;\n  let reason2: any;\n  let branch1: DefaultReadableStream<R>;\n  let branch2: DefaultReadableStream<R>;\n\n  let resolveCancelPromise: (value: undefined | Promise<undefined>) => void;\n  const cancelPromise = newPromise<undefined>(resolve => {\n    resolveCancelPromise = resolve;\n  });\n\n  function pullAlgorithm(): Promise<void> {\n    if (reading) {\n      readAgain = true;\n      return promiseResolvedWith(undefined);\n    }\n\n    reading = true;\n\n    const readRequest: ReadRequest<R> = {\n      _chunkSteps: chunk => {\n        // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n        // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n        // successful synchronously-available reads get ahead of asynchronously-available errors.\n        queueMicrotask(() => {\n          readAgain = false;\n          const chunk1 = chunk;\n          const chunk2 = chunk;\n\n          // There is no way to access the cloning code right now in the reference implementation.\n          // If we add one then we'll need an implementation for serializable objects.\n          // if (!canceled2 && cloneForBranch2) {\n          //   chunk2 = StructuredDeserialize(StructuredSerialize(chunk2));\n          // }\n\n          if (!canceled1) {\n            ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, chunk1);\n          }\n          if (!canceled2) {\n            ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, chunk2);\n          }\n\n          reading = false;\n          if (readAgain) {\n            pullAlgorithm();\n          }\n        });\n      },\n      _closeSteps: () => {\n        reading = false;\n        if (!canceled1) {\n          ReadableStreamDefaultControllerClose(branch1._readableStreamController);\n        }\n        if (!canceled2) {\n          ReadableStreamDefaultControllerClose(branch2._readableStreamController);\n        }\n\n        if (!canceled1 || !canceled2) {\n          resolveCancelPromise(undefined);\n        }\n      },\n      _errorSteps: () => {\n        reading = false;\n      }\n    };\n    ReadableStreamDefaultReaderRead(reader, readRequest);\n\n    return promiseResolvedWith(undefined);\n  }\n\n  function cancel1Algorithm(reason: any): Promise<void> {\n    canceled1 = true;\n    reason1 = reason;\n    if (canceled2) {\n      const compositeReason = CreateArrayFromList([reason1, reason2]);\n      const cancelResult = ReadableStreamCancel(stream, compositeReason);\n      resolveCancelPromise(cancelResult);\n    }\n    return cancelPromise;\n  }\n\n  function cancel2Algorithm(reason: any): Promise<void> {\n    canceled2 = true;\n    reason2 = reason;\n    if (canceled1) {\n      const compositeReason = CreateArrayFromList([reason1, reason2]);\n      const cancelResult = ReadableStreamCancel(stream, compositeReason);\n      resolveCancelPromise(cancelResult);\n    }\n    return cancelPromise;\n  }\n\n  function startAlgorithm() {\n    // do nothing\n  }\n\n  branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n  branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n\n  uponRejection(reader._closedPromise, (r: any) => {\n    ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n    ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n    if (!canceled1 || !canceled2) {\n      resolveCancelPromise(undefined);\n    }\n    return null;\n  });\n\n  return [branch1, branch2];\n}\n\nexport function ReadableByteStreamTee(stream: ReadableByteStream): [ReadableByteStream, ReadableByteStream] {\n  assert(IsReadableStream(stream));\n  assert(IsReadableByteStreamController(stream._readableStreamController));\n\n  let reader: ReadableStreamReader<NonShared<Uint8Array>> = AcquireReadableStreamDefaultReader(stream);\n  let reading = false;\n  let readAgainForBranch1 = false;\n  let readAgainForBranch2 = false;\n  let canceled1 = false;\n  let canceled2 = false;\n  let reason1: any;\n  let reason2: any;\n  let branch1: ReadableByteStream;\n  let branch2: ReadableByteStream;\n\n  let resolveCancelPromise: (value: undefined | Promise<undefined>) => void;\n  const cancelPromise = newPromise<void>(resolve => {\n    resolveCancelPromise = resolve;\n  });\n\n  function forwardReaderError(thisReader: ReadableStreamReader<NonShared<Uint8Array>>) {\n    uponRejection(thisReader._closedPromise, r => {\n      if (thisReader !== reader) {\n        return null;\n      }\n      ReadableByteStreamControllerError(branch1._readableStreamController, r);\n      ReadableByteStreamControllerError(branch2._readableStreamController, r);\n      if (!canceled1 || !canceled2) {\n        resolveCancelPromise(undefined);\n      }\n      return null;\n    });\n  }\n\n  function pullWithDefaultReader() {\n    if (IsReadableStreamBYOBReader(reader)) {\n      assert(reader._readIntoRequests.length === 0);\n      ReadableStreamReaderGenericRelease(reader);\n\n      reader = AcquireReadableStreamDefaultReader(stream);\n      forwardReaderError(reader);\n    }\n\n    const readRequest: ReadRequest<NonShared<Uint8Array>> = {\n      _chunkSteps: chunk => {\n        // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n        // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n        // successful synchronously-available reads get ahead of asynchronously-available errors.\n        queueMicrotask(() => {\n          readAgainForBranch1 = false;\n          readAgainForBranch2 = false;\n\n          const chunk1 = chunk;\n          let chunk2 = chunk;\n          if (!canceled1 && !canceled2) {\n            try {\n              chunk2 = CloneAsUint8Array(chunk);\n            } catch (cloneE) {\n              ReadableByteStreamControllerError(branch1._readableStreamController, cloneE);\n              ReadableByteStreamControllerError(branch2._readableStreamController, cloneE);\n              resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n              return;\n            }\n          }\n\n          if (!canceled1) {\n            ReadableByteStreamControllerEnqueue(branch1._readableStreamController, chunk1);\n          }\n          if (!canceled2) {\n            ReadableByteStreamControllerEnqueue(branch2._readableStreamController, chunk2);\n          }\n\n          reading = false;\n          if (readAgainForBranch1) {\n            pull1Algorithm();\n          } else if (readAgainForBranch2) {\n            pull2Algorithm();\n          }\n        });\n      },\n      _closeSteps: () => {\n        reading = false;\n        if (!canceled1) {\n          ReadableByteStreamControllerClose(branch1._readableStreamController);\n        }\n        if (!canceled2) {\n          ReadableByteStreamControllerClose(branch2._readableStreamController);\n        }\n        if (branch1._readableStreamController._pendingPullIntos.length > 0) {\n          ReadableByteStreamControllerRespond(branch1._readableStreamController, 0);\n        }\n        if (branch2._readableStreamController._pendingPullIntos.length > 0) {\n          ReadableByteStreamControllerRespond(branch2._readableStreamController, 0);\n        }\n        if (!canceled1 || !canceled2) {\n          resolveCancelPromise(undefined);\n        }\n      },\n      _errorSteps: () => {\n        reading = false;\n      }\n    };\n    ReadableStreamDefaultReaderRead(reader, readRequest);\n  }\n\n  function pullWithBYOBReader(view: NonShared<ArrayBufferView>, forBranch2: boolean) {\n    if (IsReadableStreamDefaultReader<NonShared<Uint8Array>>(reader)) {\n      assert(reader._readRequests.length === 0);\n      ReadableStreamReaderGenericRelease(reader);\n\n      reader = AcquireReadableStreamBYOBReader(stream);\n      forwardReaderError(reader);\n    }\n\n    const byobBranch = forBranch2 ? branch2 : branch1;\n    const otherBranch = forBranch2 ? branch1 : branch2;\n\n    const readIntoRequest: ReadIntoRequest<NonShared<ArrayBufferView>> = {\n      _chunkSteps: chunk => {\n        // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n        // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n        // successful synchronously-available reads get ahead of asynchronously-available errors.\n        queueMicrotask(() => {\n          readAgainForBranch1 = false;\n          readAgainForBranch2 = false;\n\n          const byobCanceled = forBranch2 ? canceled2 : canceled1;\n          const otherCanceled = forBranch2 ? canceled1 : canceled2;\n\n          if (!otherCanceled) {\n            let clonedChunk;\n            try {\n              clonedChunk = CloneAsUint8Array(chunk);\n            } catch (cloneE) {\n              ReadableByteStreamControllerError(byobBranch._readableStreamController, cloneE);\n              ReadableByteStreamControllerError(otherBranch._readableStreamController, cloneE);\n              resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n              return;\n            }\n            if (!byobCanceled) {\n              ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n            }\n            ReadableByteStreamControllerEnqueue(otherBranch._readableStreamController, clonedChunk);\n          } else if (!byobCanceled) {\n            ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n          }\n\n          reading = false;\n          if (readAgainForBranch1) {\n            pull1Algorithm();\n          } else if (readAgainForBranch2) {\n            pull2Algorithm();\n          }\n        });\n      },\n      _closeSteps: chunk => {\n        reading = false;\n\n        const byobCanceled = forBranch2 ? canceled2 : canceled1;\n        const otherCanceled = forBranch2 ? canceled1 : canceled2;\n\n        if (!byobCanceled) {\n          ReadableByteStreamControllerClose(byobBranch._readableStreamController);\n        }\n        if (!otherCanceled) {\n          ReadableByteStreamControllerClose(otherBranch._readableStreamController);\n        }\n\n        if (chunk !== undefined) {\n          assert(chunk.byteLength === 0);\n\n          if (!byobCanceled) {\n            ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n          }\n          if (!otherCanceled && otherBranch._readableStreamController._pendingPullIntos.length > 0) {\n            ReadableByteStreamControllerRespond(otherBranch._readableStreamController, 0);\n          }\n        }\n\n        if (!byobCanceled || !otherCanceled) {\n          resolveCancelPromise(undefined);\n        }\n      },\n      _errorSteps: () => {\n        reading = false;\n      }\n    };\n    ReadableStreamBYOBReaderRead(reader, view, 1, readIntoRequest);\n  }\n\n  function pull1Algorithm(): Promise<void> {\n    if (reading) {\n      readAgainForBranch1 = true;\n      return promiseResolvedWith(undefined);\n    }\n\n    reading = true;\n\n    const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch1._readableStreamController);\n    if (byobRequest === null) {\n      pullWithDefaultReader();\n    } else {\n      pullWithBYOBReader(byobRequest._view!, false);\n    }\n\n    return promiseResolvedWith(undefined);\n  }\n\n  function pull2Algorithm(): Promise<void> {\n    if (reading) {\n      readAgainForBranch2 = true;\n      return promiseResolvedWith(undefined);\n    }\n\n    reading = true;\n\n    const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch2._readableStreamController);\n    if (byobRequest === null) {\n      pullWithDefaultReader();\n    } else {\n      pullWithBYOBReader(byobRequest._view!, true);\n    }\n\n    return promiseResolvedWith(undefined);\n  }\n\n  function cancel1Algorithm(reason: any): Promise<void> {\n    canceled1 = true;\n    reason1 = reason;\n    if (canceled2) {\n      const compositeReason = CreateArrayFromList([reason1, reason2]);\n      const cancelResult = ReadableStreamCancel(stream, compositeReason);\n      resolveCancelPromise(cancelResult);\n    }\n    return cancelPromise;\n  }\n\n  function cancel2Algorithm(reason: any): Promise<void> {\n    canceled2 = true;\n    reason2 = reason;\n    if (canceled1) {\n      const compositeReason = CreateArrayFromList([reason1, reason2]);\n      const cancelResult = ReadableStreamCancel(stream, compositeReason);\n      resolveCancelPromise(cancelResult);\n    }\n    return cancelPromise;\n  }\n\n  function startAlgorithm(): void {\n    return;\n  }\n\n  branch1 = CreateReadableByteStream(startAlgorithm, pull1Algorithm, cancel1Algorithm);\n  branch2 = CreateReadableByteStream(startAlgorithm, pull2Algorithm, cancel2Algorithm);\n\n  forwardReaderError(reader);\n\n  return [branch1, branch2];\n}\n","import { typeIsObject } from '../helpers/miscellaneous';\nimport type { ReadableStreamDefaultReadResult } from './default-reader';\n\n/**\n * A common interface for a `ReadadableStream` implementation.\n *\n * @public\n */\nexport interface ReadableStreamLike<R = any> {\n  readonly locked: boolean;\n\n  getReader(): ReadableStreamDefaultReaderLike<R>;\n}\n\n/**\n * A common interface for a `ReadableStreamDefaultReader` implementation.\n *\n * @public\n */\nexport interface ReadableStreamDefaultReaderLike<R = any> {\n  readonly closed: Promise<undefined>;\n\n  cancel(reason?: any): Promise<void>;\n\n  read(): Promise<ReadableStreamDefaultReadResult<R>>;\n\n  releaseLock(): void;\n}\n\nexport function isReadableStreamLike<R>(stream: unknown): stream is ReadableStreamLike<R> {\n  return typeIsObject(stream) && typeof (stream as ReadableStreamLike<R>).getReader !== 'undefined';\n}\n","import { CreateReadableStream, type DefaultReadableStream } from '../readable-stream';\nimport {\n  isReadableStreamLike,\n  type ReadableStreamDefaultReaderLike,\n  type ReadableStreamLike\n} from './readable-stream-like';\nimport { ReadableStreamDefaultControllerClose, ReadableStreamDefaultControllerEnqueue } from './default-controller';\nimport { GetIterator, GetMethod, IteratorComplete, IteratorNext, IteratorValue } from '../abstract-ops/ecmascript';\nimport { promiseRejectedWith, promiseResolvedWith, reflectCall, transformPromiseWith } from '../helpers/webidl';\nimport { typeIsObject } from '../helpers/miscellaneous';\nimport { noop } from '../../utils';\n\nexport function ReadableStreamFrom<R>(\n  source: Iterable<R> | AsyncIterable<R> | ReadableStreamLike<R>\n): DefaultReadableStream<R> {\n  if (isReadableStreamLike(source)) {\n    return ReadableStreamFromDefaultReader(source.getReader());\n  }\n  return ReadableStreamFromIterable(source);\n}\n\nexport function ReadableStreamFromIterable<R>(asyncIterable: Iterable<R> | AsyncIterable<R>): DefaultReadableStream<R> {\n  let stream: DefaultReadableStream<R>;\n  const iteratorRecord = GetIterator(asyncIterable, 'async');\n\n  const startAlgorithm = noop;\n\n  function pullAlgorithm(): Promise<void> {\n    let nextResult;\n    try {\n      nextResult = IteratorNext(iteratorRecord);\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    const nextPromise = promiseResolvedWith(nextResult);\n    return transformPromiseWith(nextPromise, iterResult => {\n      if (!typeIsObject(iterResult)) {\n        throw new TypeError('The promise returned by the iterator.next() method must fulfill with an object');\n      }\n      const done = IteratorComplete(iterResult);\n      if (done) {\n        ReadableStreamDefaultControllerClose(stream._readableStreamController);\n      } else {\n        const value = IteratorValue(iterResult);\n        ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value);\n      }\n    });\n  }\n\n  function cancelAlgorithm(reason: any): Promise<void> {\n    const iterator = iteratorRecord.iterator;\n    let returnMethod: (typeof iterator)['return'] | undefined;\n    try {\n      returnMethod = GetMethod(iterator, 'return');\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    if (returnMethod === undefined) {\n      return promiseResolvedWith(undefined);\n    }\n    let returnResult: IteratorResult<R> | Promise<IteratorResult<R>>;\n    try {\n      returnResult = reflectCall(returnMethod, iterator, [reason]);\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    const returnPromise = promiseResolvedWith(returnResult);\n    return transformPromiseWith(returnPromise, iterResult => {\n      if (!typeIsObject(iterResult)) {\n        throw new TypeError('The promise returned by the iterator.return() method must fulfill with an object');\n      }\n      return undefined;\n    });\n  }\n\n  stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0);\n  return stream;\n}\n\nexport function ReadableStreamFromDefaultReader<R>(\n  reader: ReadableStreamDefaultReaderLike<R>\n): DefaultReadableStream<R> {\n  let stream: DefaultReadableStream<R>;\n\n  const startAlgorithm = noop;\n\n  function pullAlgorithm(): Promise<void> {\n    let readPromise;\n    try {\n      readPromise = reader.read();\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n    return transformPromiseWith(readPromise, readResult => {\n      if (!typeIsObject(readResult)) {\n        throw new TypeError('The promise returned by the reader.read() method must fulfill with an object');\n      }\n      if (readResult.done) {\n        ReadableStreamDefaultControllerClose(stream._readableStreamController);\n      } else {\n        const value = readResult.value;\n        ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value);\n      }\n    });\n  }\n\n  function cancelAlgorithm(reason: any): Promise<void> {\n    try {\n      return promiseResolvedWith(reader.cancel(reason));\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n  }\n\n  stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0);\n  return stream;\n}\n","import { assertDictionary, assertFunction, convertUnsignedLongLongWithEnforceRange } from './basic';\nimport type {\n  ReadableStreamController,\n  UnderlyingByteSource,\n  UnderlyingDefaultOrByteSource,\n  UnderlyingDefaultOrByteSourcePullCallback,\n  UnderlyingDefaultOrByteSourceStartCallback,\n  UnderlyingSource,\n  UnderlyingSourceCancelCallback,\n  ValidatedUnderlyingDefaultOrByteSource\n} from '../readable-stream/underlying-source';\nimport { promiseCall, reflectCall } from '../helpers/webidl';\n\nexport function convertUnderlyingDefaultOrByteSource<R>(\n  source: UnderlyingSource<R> | UnderlyingByteSource | null,\n  context: string\n): ValidatedUnderlyingDefaultOrByteSource<R> {\n  assertDictionary(source, context);\n  const original = source as (UnderlyingDefaultOrByteSource<R> | null);\n  const autoAllocateChunkSize = original?.autoAllocateChunkSize;\n  const cancel = original?.cancel;\n  const pull = original?.pull;\n  const start = original?.start;\n  const type = original?.type;\n  return {\n    autoAllocateChunkSize: autoAllocateChunkSize === undefined ?\n      undefined :\n      convertUnsignedLongLongWithEnforceRange(\n        autoAllocateChunkSize,\n        `${context} has member 'autoAllocateChunkSize' that`\n      ),\n    cancel: cancel === undefined ?\n      undefined :\n      convertUnderlyingSourceCancelCallback(cancel, original!, `${context} has member 'cancel' that`),\n    pull: pull === undefined ?\n      undefined :\n      convertUnderlyingSourcePullCallback(pull, original!, `${context} has member 'pull' that`),\n    start: start === undefined ?\n      undefined :\n      convertUnderlyingSourceStartCallback(start, original!, `${context} has member 'start' that`),\n    type: type === undefined ? undefined : convertReadableStreamType(type, `${context} has member 'type' that`)\n  };\n}\n\nfunction convertUnderlyingSourceCancelCallback(\n  fn: UnderlyingSourceCancelCallback,\n  original: UnderlyingDefaultOrByteSource,\n  context: string\n): (reason: any) => Promise<void> {\n  assertFunction(fn, context);\n  return (reason: any) => promiseCall(fn, original, [reason]);\n}\n\nfunction convertUnderlyingSourcePullCallback<R>(\n  fn: UnderlyingDefaultOrByteSourcePullCallback<R>,\n  original: UnderlyingDefaultOrByteSource<R>,\n  context: string\n): (controller: ReadableStreamController<R>) => Promise<void> {\n  assertFunction(fn, context);\n  return (controller: ReadableStreamController<R>) => promiseCall(fn, original, [controller]);\n}\n\nfunction convertUnderlyingSourceStartCallback<R>(\n  fn: UnderlyingDefaultOrByteSourceStartCallback<R>,\n  original: UnderlyingDefaultOrByteSource<R>,\n  context: string\n): UnderlyingDefaultOrByteSourceStartCallback<R> {\n  assertFunction(fn, context);\n  return (controller: ReadableStreamController<R>) => reflectCall(fn, original, [controller]);\n}\n\nfunction convertReadableStreamType(type: string, context: string): 'bytes' {\n  type = `${type}`;\n  if (type !== 'bytes') {\n    throw new TypeError(`${context} '${type}' is not a valid enumeration value for ReadableStreamType`);\n  }\n  return type;\n}\n","import { assertDictionary } from './basic';\nimport type {\n  ReadableStreamIteratorOptions,\n  ValidatedReadableStreamIteratorOptions\n} from '../readable-stream/iterator-options';\n\nexport function convertIteratorOptions(options: ReadableStreamIteratorOptions | null | undefined,\n                                       context: string): ValidatedReadableStreamIteratorOptions {\n  assertDictionary(options, context);\n  const preventCancel = options?.preventCancel;\n  return { preventCancel: Boolean(preventCancel) };\n}\n","import { assertDictionary } from './basic';\nimport type { StreamPipeOptions, ValidatedStreamPipeOptions } from '../readable-stream/pipe-options';\nimport { type AbortSignal, isAbortSignal } from '../abort-signal';\n\nexport function convertPipeOptions(options: StreamPipeOptions | null | undefined,\n                                   context: string): ValidatedStreamPipeOptions {\n  assertDictionary(options, context);\n  const preventAbort = options?.preventAbort;\n  const preventCancel = options?.preventCancel;\n  const preventClose = options?.preventClose;\n  const signal = options?.signal;\n  if (signal !== undefined) {\n    assertAbortSignal(signal, `${context} has member 'signal' that`);\n  }\n  return {\n    preventAbort: Boolean(preventAbort),\n    preventCancel: Boolean(preventCancel),\n    preventClose: Boolean(preventClose),\n    signal\n  };\n}\n\nfunction assertAbortSignal(signal: unknown, context: string): asserts signal is AbortSignal {\n  if (!isAbortSignal(signal)) {\n    throw new TypeError(`${context} is not an AbortSignal.`);\n  }\n}\n","import { assertDictionary, assertRequiredField } from './basic';\nimport { ReadableStream } from '../readable-stream';\nimport { WritableStream } from '../writable-stream';\nimport { assertReadableStream } from './readable-stream';\nimport { assertWritableStream } from './writable-stream';\n\nexport function convertReadableWritablePair<RS extends ReadableStream, WS extends WritableStream>(\n  pair: { readable: RS; writable: WS } | null | undefined,\n  context: string\n): { readable: RS; writable: WS } {\n  assertDictionary(pair, context);\n\n  const readable = pair?.readable;\n  assertRequiredField(readable, 'readable', 'ReadableWritablePair');\n  assertReadableStream(readable, `${context} has member 'readable' that`);\n\n  const writable = pair?.writable;\n  assertRequiredField(writable, 'writable', 'ReadableWritablePair');\n  assertWritableStream(writable, `${context} has member 'writable' that`);\n\n  return { readable, writable };\n}\n","import assert from '../stub/assert';\nimport {\n  promiseRejectedWith,\n  promiseResolvedWith,\n  setPromiseIsHandledToTrue,\n  transformPromiseWith\n} from './helpers/webidl';\nimport type { QueuingStrategy, QueuingStrategySizeCallback } from './queuing-strategy';\nimport { AcquireReadableStreamAsyncIterator, type ReadableStreamAsyncIterator } from './readable-stream/async-iterator';\nimport { defaultReaderClosedPromiseReject, defaultReaderClosedPromiseResolve } from './readable-stream/generic-reader';\nimport {\n  AcquireReadableStreamDefaultReader,\n  IsReadableStreamDefaultReader,\n  ReadableStreamDefaultReader,\n  ReadableStreamDefaultReaderErrorReadRequests,\n  type ReadableStreamDefaultReadResult\n} from './readable-stream/default-reader';\nimport {\n  AcquireReadableStreamBYOBReader,\n  IsReadableStreamBYOBReader,\n  ReadableStreamBYOBReader,\n  ReadableStreamBYOBReaderErrorReadIntoRequests,\n  type ReadableStreamBYOBReadResult\n} from './readable-stream/byob-reader';\nimport { ReadableStreamPipeTo } from './readable-stream/pipe';\nimport { ReadableStreamTee } from './readable-stream/tee';\nimport { ReadableStreamFrom } from './readable-stream/from';\nimport { IsWritableStream, IsWritableStreamLocked, WritableStream } from './writable-stream';\nimport { SimpleQueue } from './simple-queue';\nimport {\n  ReadableByteStreamController,\n  ReadableStreamBYOBRequest,\n  SetUpReadableByteStreamController,\n  SetUpReadableByteStreamControllerFromUnderlyingSource\n} from './readable-stream/byte-stream-controller';\nimport {\n  ReadableStreamDefaultController,\n  SetUpReadableStreamDefaultController,\n  SetUpReadableStreamDefaultControllerFromUnderlyingSource\n} from './readable-stream/default-controller';\nimport type {\n  UnderlyingByteSource,\n  UnderlyingByteSourcePullCallback,\n  UnderlyingByteSourceStartCallback,\n  UnderlyingSource,\n  UnderlyingSourceCancelCallback,\n  UnderlyingSourcePullCallback,\n  UnderlyingSourceStartCallback\n} from './readable-stream/underlying-source';\nimport { noop } from '../utils';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { CreateArrayFromList } from './abstract-ops/ecmascript';\nimport { CancelSteps } from './abstract-ops/internal-methods';\nimport { IsNonNegativeNumber } from './abstract-ops/miscellaneous';\nimport { assertObject, assertRequiredArgument } from './validators/basic';\nimport { convertQueuingStrategy } from './validators/queuing-strategy';\nimport { ExtractHighWaterMark, ExtractSizeAlgorithm } from './abstract-ops/queuing-strategy';\nimport { convertUnderlyingDefaultOrByteSource } from './validators/underlying-source';\nimport type {\n  ReadableStreamBYOBReaderReadOptions,\n  ReadableStreamGetReaderOptions\n} from './readable-stream/reader-options';\nimport { convertReaderOptions } from './validators/reader-options';\nimport type { StreamPipeOptions, ValidatedStreamPipeOptions } from './readable-stream/pipe-options';\nimport type { ReadableStreamIteratorOptions } from './readable-stream/iterator-options';\nimport { convertIteratorOptions } from './validators/iterator-options';\nimport { convertPipeOptions } from './validators/pipe-options';\nimport type { ReadableWritablePair } from './readable-stream/readable-writable-pair';\nimport { convertReadableWritablePair } from './validators/readable-writable-pair';\nimport type { ReadableStreamDefaultReaderLike, ReadableStreamLike } from './readable-stream/readable-stream-like';\nimport type { NonShared } from './helpers/array-buffer-view';\n\nexport type DefaultReadableStream<R = any> = ReadableStream<R> & {\n  _readableStreamController: ReadableStreamDefaultController<R>\n};\n\nexport type ReadableByteStream = ReadableStream<NonShared<Uint8Array>> & {\n  _readableStreamController: ReadableByteStreamController\n};\n\ntype ReadableStreamState = 'readable' | 'closed' | 'errored';\n\n/**\n * A readable stream represents a source of data, from which you can read.\n *\n * @public\n */\nexport class ReadableStream<R = any> {\n  /** @internal */\n  _state!: ReadableStreamState;\n  /** @internal */\n  _reader: ReadableStreamReader<R> | undefined;\n  /** @internal */\n  _storedError: any;\n  /** @internal */\n  _disturbed!: boolean;\n  /** @internal */\n  _readableStreamController!: ReadableStreamDefaultController<R> | ReadableByteStreamController;\n\n  constructor(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number; size?: undefined });\n  constructor(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>);\n  constructor(rawUnderlyingSource: UnderlyingSource<R> | UnderlyingByteSource | null | undefined = {},\n              rawStrategy: QueuingStrategy<R> | null | undefined = {}) {\n    if (rawUnderlyingSource === undefined) {\n      rawUnderlyingSource = null;\n    } else {\n      assertObject(rawUnderlyingSource, 'First parameter');\n    }\n\n    const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n    const underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, 'First parameter');\n\n    InitializeReadableStream(this);\n\n    if (underlyingSource.type === 'bytes') {\n      if (strategy.size !== undefined) {\n        throw new RangeError('The strategy for a byte stream cannot have a size function');\n      }\n      const highWaterMark = ExtractHighWaterMark(strategy, 0);\n      SetUpReadableByteStreamControllerFromUnderlyingSource(\n        this as unknown as ReadableByteStream,\n        underlyingSource,\n        highWaterMark\n      );\n    } else {\n      assert(underlyingSource.type === undefined);\n      const sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n      const highWaterMark = ExtractHighWaterMark(strategy, 1);\n      SetUpReadableStreamDefaultControllerFromUnderlyingSource(\n        this,\n        underlyingSource,\n        highWaterMark,\n        sizeAlgorithm\n      );\n    }\n  }\n\n  /**\n   * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}.\n   */\n  get locked(): boolean {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('locked');\n    }\n\n    return IsReadableStreamLocked(this);\n  }\n\n  /**\n   * Cancels the stream, signaling a loss of interest in the stream by a consumer.\n   *\n   * The supplied `reason` argument will be given to the underlying source's {@link UnderlyingSource.cancel | cancel()}\n   * method, which might or might not use it.\n   */\n  cancel(reason: any = undefined): Promise<void> {\n    if (!IsReadableStream(this)) {\n      return promiseRejectedWith(streamBrandCheckException('cancel'));\n    }\n\n    if (IsReadableStreamLocked(this)) {\n      return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n    }\n\n    return ReadableStreamCancel(this, reason);\n  }\n\n  /**\n   * Creates a {@link ReadableStreamBYOBReader} and locks the stream to the new reader.\n   *\n   * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams,\n   * i.e. streams which were constructed specifically with the ability to handle \"bring your own buffer\" reading.\n   * The returned BYOB reader provides the ability to directly read individual chunks from the stream via its\n   * {@link ReadableStreamBYOBReader.read | read()} method, into developer-supplied buffers, allowing more precise\n   * control over allocation.\n   */\n  getReader({ mode }: { mode: 'byob' }): ReadableStreamBYOBReader;\n  /**\n   * Creates a {@link ReadableStreamDefaultReader} and locks the stream to the new reader.\n   * While the stream is locked, no other reader can be acquired until this one is released.\n   *\n   * This functionality is especially useful for creating abstractions that desire the ability to consume a stream\n   * in its entirety. By getting a reader for the stream, you can ensure nobody else can interleave reads with yours\n   * or cancel the stream, which would interfere with your abstraction.\n   */\n  getReader(): ReadableStreamDefaultReader<R>;\n  getReader(\n    rawOptions: ReadableStreamGetReaderOptions | null | undefined = undefined\n  ): ReadableStreamDefaultReader<R> | ReadableStreamBYOBReader {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('getReader');\n    }\n\n    const options = convertReaderOptions(rawOptions, 'First parameter');\n\n    if (options.mode === undefined) {\n      return AcquireReadableStreamDefaultReader(this);\n    }\n\n    assert(options.mode === 'byob');\n    return AcquireReadableStreamBYOBReader(this as unknown as ReadableByteStream);\n  }\n\n  /**\n   * Provides a convenient, chainable way of piping this readable stream through a transform stream\n   * (or any other `{ writable, readable }` pair). It simply {@link ReadableStream.pipeTo | pipes} the stream\n   * into the writable side of the supplied pair, and returns the readable side for further use.\n   *\n   * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n   */\n  pipeThrough<RS extends ReadableStream>(\n    transform: { readable: RS; writable: WritableStream<R> },\n    options?: StreamPipeOptions\n  ): RS;\n  pipeThrough<RS extends ReadableStream>(\n    rawTransform: { readable: RS; writable: WritableStream<R> } | null | undefined,\n    rawOptions: StreamPipeOptions | null | undefined = {}\n  ): RS {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('pipeThrough');\n    }\n    assertRequiredArgument(rawTransform, 1, 'pipeThrough');\n\n    const transform = convertReadableWritablePair(rawTransform, 'First parameter');\n    const options = convertPipeOptions(rawOptions, 'Second parameter');\n\n    if (IsReadableStreamLocked(this)) {\n      throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream');\n    }\n    if (IsWritableStreamLocked(transform.writable)) {\n      throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream');\n    }\n\n    const promise = ReadableStreamPipeTo(\n      this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal\n    );\n\n    setPromiseIsHandledToTrue(promise);\n\n    return transform.readable;\n  }\n\n  /**\n   * Pipes this readable stream to a given writable stream. The way in which the piping process behaves under\n   * various error conditions can be customized with a number of passed options. It returns a promise that fulfills\n   * when the piping process completes successfully, or rejects if any errors were encountered.\n   *\n   * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n   */\n  pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;\n  pipeTo(destination: WritableStream<R> | null | undefined,\n         rawOptions: StreamPipeOptions | null | undefined = {}): Promise<void> {\n    if (!IsReadableStream(this)) {\n      return promiseRejectedWith(streamBrandCheckException('pipeTo'));\n    }\n\n    if (destination === undefined) {\n      return promiseRejectedWith(`Parameter 1 is required in 'pipeTo'.`);\n    }\n    if (!IsWritableStream(destination)) {\n      return promiseRejectedWith(\n        new TypeError(`ReadableStream.prototype.pipeTo's first argument must be a WritableStream`)\n      );\n    }\n\n    let options: ValidatedStreamPipeOptions;\n    try {\n      options = convertPipeOptions(rawOptions, 'Second parameter');\n    } catch (e) {\n      return promiseRejectedWith(e);\n    }\n\n    if (IsReadableStreamLocked(this)) {\n      return promiseRejectedWith(\n        new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')\n      );\n    }\n    if (IsWritableStreamLocked(destination)) {\n      return promiseRejectedWith(\n        new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')\n      );\n    }\n\n    return ReadableStreamPipeTo<R>(\n      this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal\n    );\n  }\n\n  /**\n   * Tees this readable stream, returning a two-element array containing the two resulting branches as\n   * new {@link ReadableStream} instances.\n   *\n   * Teeing a stream will lock it, preventing any other consumer from acquiring a reader.\n   * To cancel the stream, cancel both of the resulting branches; a composite cancellation reason will then be\n   * propagated to the stream's underlying source.\n   *\n   * Note that the chunks seen in each branch will be the same object. If the chunks are not immutable,\n   * this could allow interference between the two branches.\n   */\n  tee(): [ReadableStream<R>, ReadableStream<R>] {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('tee');\n    }\n\n    const branches = ReadableStreamTee(this, false);\n    return CreateArrayFromList(branches);\n  }\n\n  /**\n   * Asynchronously iterates over the chunks in the stream's internal queue.\n   *\n   * Asynchronously iterating over the stream will lock it, preventing any other consumer from acquiring a reader.\n   * The lock will be released if the async iterator's {@link ReadableStreamAsyncIterator.return | return()} method\n   * is called, e.g. by breaking out of the loop.\n   *\n   * By default, calling the async iterator's {@link ReadableStreamAsyncIterator.return | return()} method will also\n   * cancel the stream. To prevent this, use the stream's {@link ReadableStream.values | values()} method, passing\n   * `true` for the `preventCancel` option.\n   */\n  values(options?: ReadableStreamIteratorOptions): ReadableStreamAsyncIterator<R>;\n  values(rawOptions: ReadableStreamIteratorOptions | null | undefined = undefined): ReadableStreamAsyncIterator<R> {\n    if (!IsReadableStream(this)) {\n      throw streamBrandCheckException('values');\n    }\n\n    const options = convertIteratorOptions(rawOptions, 'First parameter');\n    return AcquireReadableStreamAsyncIterator<R>(this, options.preventCancel);\n  }\n\n  /**\n   * {@inheritDoc ReadableStream.values}\n   */\n  [Symbol.asyncIterator]!: (options?: ReadableStreamIteratorOptions) => ReadableStreamAsyncIterator<R>;\n\n  /**\n   * Creates a new ReadableStream wrapping the provided iterable or async iterable.\n   *\n   * This can be used to adapt various kinds of objects into a readable stream,\n   * such as an array, an async generator, or a Node.js readable stream.\n   */\n  static from<R>(asyncIterable: Iterable<R> | AsyncIterable<R> | ReadableStreamLike<R>): ReadableStream<R> {\n    return ReadableStreamFrom(asyncIterable);\n  }\n}\n\nObject.defineProperties(ReadableStream, {\n  from: { enumerable: true }\n});\nObject.defineProperties(ReadableStream.prototype, {\n  cancel: { enumerable: true },\n  getReader: { enumerable: true },\n  pipeThrough: { enumerable: true },\n  pipeTo: { enumerable: true },\n  tee: { enumerable: true },\n  values: { enumerable: true },\n  locked: { enumerable: true }\n});\nsetFunctionName(ReadableStream.from, 'from');\nsetFunctionName(ReadableStream.prototype.cancel, 'cancel');\nsetFunctionName(ReadableStream.prototype.getReader, 'getReader');\nsetFunctionName(ReadableStream.prototype.pipeThrough, 'pipeThrough');\nsetFunctionName(ReadableStream.prototype.pipeTo, 'pipeTo');\nsetFunctionName(ReadableStream.prototype.tee, 'tee');\nsetFunctionName(ReadableStream.prototype.values, 'values');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ReadableStream.prototype, Symbol.toStringTag, {\n    value: 'ReadableStream',\n    configurable: true\n  });\n}\nif (typeof Symbol.asyncIterator === 'symbol') {\n  Object.defineProperty(ReadableStream.prototype, Symbol.asyncIterator, {\n    value: ReadableStream.prototype.values,\n    writable: true,\n    configurable: true\n  });\n}\n\nexport type {\n  ReadableStreamAsyncIterator,\n  ReadableStreamDefaultReadResult,\n  ReadableStreamBYOBReadResult,\n  ReadableStreamBYOBReaderReadOptions,\n  UnderlyingByteSource,\n  UnderlyingSource,\n  UnderlyingSourceStartCallback,\n  UnderlyingSourcePullCallback,\n  UnderlyingSourceCancelCallback,\n  UnderlyingByteSourceStartCallback,\n  UnderlyingByteSourcePullCallback,\n  StreamPipeOptions,\n  ReadableWritablePair,\n  ReadableStreamIteratorOptions,\n  ReadableStreamLike,\n  ReadableStreamDefaultReaderLike\n};\n\n// Abstract operations for the ReadableStream.\n\n// Throws if and only if startAlgorithm throws.\nexport function CreateReadableStream<R>(\n  startAlgorithm: () => void | PromiseLike<void>,\n  pullAlgorithm: () => Promise<void>,\n  cancelAlgorithm: (reason: any) => Promise<void>,\n  highWaterMark = 1,\n  sizeAlgorithm: QueuingStrategySizeCallback<R> = () => 1\n): DefaultReadableStream<R> {\n  assert(IsNonNegativeNumber(highWaterMark));\n\n  const stream: DefaultReadableStream<R> = Object.create(ReadableStream.prototype);\n  InitializeReadableStream(stream);\n\n  const controller: ReadableStreamDefaultController<R> = Object.create(ReadableStreamDefaultController.prototype);\n  SetUpReadableStreamDefaultController(\n    stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm\n  );\n\n  return stream;\n}\n\n// Throws if and only if startAlgorithm throws.\nexport function CreateReadableByteStream(\n  startAlgorithm: () => void | PromiseLike<void>,\n  pullAlgorithm: () => Promise<void>,\n  cancelAlgorithm: (reason: any) => Promise<void>\n): ReadableByteStream {\n  const stream: ReadableByteStream = Object.create(ReadableStream.prototype);\n  InitializeReadableStream(stream);\n\n  const controller: ReadableByteStreamController = Object.create(ReadableByteStreamController.prototype);\n  SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, undefined);\n\n  return stream;\n}\n\nfunction InitializeReadableStream(stream: ReadableStream) {\n  stream._state = 'readable';\n  stream._reader = undefined;\n  stream._storedError = undefined;\n  stream._disturbed = false;\n}\n\nexport function IsReadableStream(x: unknown): x is ReadableStream {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n    return false;\n  }\n\n  return x instanceof ReadableStream;\n}\n\nexport function IsReadableStreamDisturbed(stream: ReadableStream): boolean {\n  assert(IsReadableStream(stream));\n\n  return stream._disturbed;\n}\n\nexport function IsReadableStreamLocked(stream: ReadableStream): boolean {\n  assert(IsReadableStream(stream));\n\n  if (stream._reader === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\n// ReadableStream API exposed for controllers.\n\nexport function ReadableStreamCancel<R>(stream: ReadableStream<R>, reason: any): Promise<undefined> {\n  stream._disturbed = true;\n\n  if (stream._state === 'closed') {\n    return promiseResolvedWith(undefined);\n  }\n  if (stream._state === 'errored') {\n    return promiseRejectedWith(stream._storedError);\n  }\n\n  ReadableStreamClose(stream);\n\n  const reader = stream._reader;\n  if (reader !== undefined && IsReadableStreamBYOBReader(reader)) {\n    const readIntoRequests = reader._readIntoRequests;\n    reader._readIntoRequests = new SimpleQueue();\n    readIntoRequests.forEach(readIntoRequest => {\n      readIntoRequest._closeSteps(undefined);\n    });\n  }\n\n  const sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n  return transformPromiseWith(sourceCancelPromise, noop);\n}\n\nexport function ReadableStreamClose<R>(stream: ReadableStream<R>): void {\n  assert(stream._state === 'readable');\n\n  stream._state = 'closed';\n\n  const reader = stream._reader;\n\n  if (reader === undefined) {\n    return;\n  }\n\n  defaultReaderClosedPromiseResolve(reader);\n\n  if (IsReadableStreamDefaultReader<R>(reader)) {\n    const readRequests = reader._readRequests;\n    reader._readRequests = new SimpleQueue();\n    readRequests.forEach(readRequest => {\n      readRequest._closeSteps();\n    });\n  }\n}\n\nexport function ReadableStreamError<R>(stream: ReadableStream<R>, e: any): void {\n  assert(IsReadableStream(stream));\n  assert(stream._state === 'readable');\n\n  stream._state = 'errored';\n  stream._storedError = e;\n\n  const reader = stream._reader;\n\n  if (reader === undefined) {\n    return;\n  }\n\n  defaultReaderClosedPromiseReject(reader, e);\n\n  if (IsReadableStreamDefaultReader<R>(reader)) {\n    ReadableStreamDefaultReaderErrorReadRequests(reader, e);\n  } else {\n    assert(IsReadableStreamBYOBReader(reader));\n    ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e);\n  }\n}\n\n// Readers\n\nexport type ReadableStreamReader<R> = ReadableStreamDefaultReader<R> | ReadableStreamBYOBReader;\n\nexport {\n  ReadableStreamDefaultReader,\n  ReadableStreamBYOBReader\n};\n\n// Controllers\n\nexport {\n  ReadableStreamDefaultController,\n  ReadableStreamBYOBRequest,\n  ReadableByteStreamController\n};\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name: string): TypeError {\n  return new TypeError(`ReadableStream.prototype.${name} can only be used on a ReadableStream`);\n}\n","import type { QueuingStrategyInit } from '../queuing-strategy';\nimport { assertDictionary, assertRequiredField, convertUnrestrictedDouble } from './basic';\n\nexport function convertQueuingStrategyInit(init: QueuingStrategyInit | null | undefined,\n                                           context: string): QueuingStrategyInit {\n  assertDictionary(init, context);\n  const highWaterMark = init?.highWaterMark;\n  assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit');\n  return {\n    highWaterMark: convertUnrestrictedDouble(highWaterMark)\n  };\n}\n","import type { QueuingStrategy, QueuingStrategyInit } from './queuing-strategy';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { assertRequiredArgument } from './validators/basic';\nimport { convertQueuingStrategyInit } from './validators/queuing-strategy-init';\n\n// The size function must not have a prototype property nor be a constructor\nconst byteLengthSizeFunction = (chunk: ArrayBufferView): number => {\n  return chunk.byteLength;\n};\nsetFunctionName(byteLengthSizeFunction, 'size');\n\n/**\n * A queuing strategy that counts the number of bytes in each chunk.\n *\n * @public\n */\nexport default class ByteLengthQueuingStrategy implements QueuingStrategy<ArrayBufferView> {\n  /** @internal */\n  readonly _byteLengthQueuingStrategyHighWaterMark: number;\n\n  constructor(options: QueuingStrategyInit) {\n    assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy');\n    options = convertQueuingStrategyInit(options, 'First parameter');\n    this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark;\n  }\n\n  /**\n   * Returns the high water mark provided to the constructor.\n   */\n  get highWaterMark(): number {\n    if (!IsByteLengthQueuingStrategy(this)) {\n      throw byteLengthBrandCheckException('highWaterMark');\n    }\n    return this._byteLengthQueuingStrategyHighWaterMark;\n  }\n\n  /**\n   * Measures the size of `chunk` by returning the value of its `byteLength` property.\n   */\n  get size(): (chunk: ArrayBufferView) => number {\n    if (!IsByteLengthQueuingStrategy(this)) {\n      throw byteLengthBrandCheckException('size');\n    }\n    return byteLengthSizeFunction;\n  }\n}\n\nObject.defineProperties(ByteLengthQueuingStrategy.prototype, {\n  highWaterMark: { enumerable: true },\n  size: { enumerable: true }\n});\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(ByteLengthQueuingStrategy.prototype, Symbol.toStringTag, {\n    value: 'ByteLengthQueuingStrategy',\n    configurable: true\n  });\n}\n\n// Helper functions for the ByteLengthQueuingStrategy.\n\nfunction byteLengthBrandCheckException(name: string): TypeError {\n  return new TypeError(`ByteLengthQueuingStrategy.prototype.${name} can only be used on a ByteLengthQueuingStrategy`);\n}\n\nexport function IsByteLengthQueuingStrategy(x: any): x is ByteLengthQueuingStrategy {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_byteLengthQueuingStrategyHighWaterMark')) {\n    return false;\n  }\n\n  return x instanceof ByteLengthQueuingStrategy;\n}\n","import type { QueuingStrategy, QueuingStrategyInit } from './queuing-strategy';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { assertRequiredArgument } from './validators/basic';\nimport { convertQueuingStrategyInit } from './validators/queuing-strategy-init';\n\n// The size function must not have a prototype property nor be a constructor\nconst countSizeFunction = (): 1 => {\n  return 1;\n};\nsetFunctionName(countSizeFunction, 'size');\n\n/**\n * A queuing strategy that counts the number of chunks.\n *\n * @public\n */\nexport default class CountQueuingStrategy implements QueuingStrategy<any> {\n  /** @internal */\n  readonly _countQueuingStrategyHighWaterMark!: number;\n\n  constructor(options: QueuingStrategyInit) {\n    assertRequiredArgument(options, 1, 'CountQueuingStrategy');\n    options = convertQueuingStrategyInit(options, 'First parameter');\n    this._countQueuingStrategyHighWaterMark = options.highWaterMark;\n  }\n\n  /**\n   * Returns the high water mark provided to the constructor.\n   */\n  get highWaterMark(): number {\n    if (!IsCountQueuingStrategy(this)) {\n      throw countBrandCheckException('highWaterMark');\n    }\n    return this._countQueuingStrategyHighWaterMark;\n  }\n\n  /**\n   * Measures the size of `chunk` by always returning 1.\n   * This ensures that the total queue size is a count of the number of chunks in the queue.\n   */\n  get size(): (chunk: any) => 1 {\n    if (!IsCountQueuingStrategy(this)) {\n      throw countBrandCheckException('size');\n    }\n    return countSizeFunction;\n  }\n}\n\nObject.defineProperties(CountQueuingStrategy.prototype, {\n  highWaterMark: { enumerable: true },\n  size: { enumerable: true }\n});\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(CountQueuingStrategy.prototype, Symbol.toStringTag, {\n    value: 'CountQueuingStrategy',\n    configurable: true\n  });\n}\n\n// Helper functions for the CountQueuingStrategy.\n\nfunction countBrandCheckException(name: string): TypeError {\n  return new TypeError(`CountQueuingStrategy.prototype.${name} can only be used on a CountQueuingStrategy`);\n}\n\nexport function IsCountQueuingStrategy(x: any): x is CountQueuingStrategy {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_countQueuingStrategyHighWaterMark')) {\n    return false;\n  }\n\n  return x instanceof CountQueuingStrategy;\n}\n","import { assertDictionary, assertFunction } from './basic';\nimport { promiseCall, reflectCall } from '../helpers/webidl';\nimport type {\n  Transformer,\n  TransformerCancelCallback,\n  TransformerFlushCallback,\n  TransformerStartCallback,\n  TransformerTransformCallback,\n  ValidatedTransformer\n} from '../transform-stream/transformer';\nimport { TransformStreamDefaultController } from '../transform-stream';\n\nexport function convertTransformer<I, O>(original: Transformer<I, O> | null,\n                                         context: string): ValidatedTransformer<I, O> {\n  assertDictionary(original, context);\n  const cancel = original?.cancel;\n  const flush = original?.flush;\n  const readableType = original?.readableType;\n  const start = original?.start;\n  const transform = original?.transform;\n  const writableType = original?.writableType;\n  return {\n    cancel: cancel === undefined ?\n      undefined :\n      convertTransformerCancelCallback(cancel, original!, `${context} has member 'cancel' that`),\n    flush: flush === undefined ?\n      undefined :\n      convertTransformerFlushCallback(flush, original!, `${context} has member 'flush' that`),\n    readableType,\n    start: start === undefined ?\n      undefined :\n      convertTransformerStartCallback(start, original!, `${context} has member 'start' that`),\n    transform: transform === undefined ?\n      undefined :\n      convertTransformerTransformCallback(transform, original!, `${context} has member 'transform' that`),\n    writableType\n  };\n}\n\nfunction convertTransformerFlushCallback<I, O>(\n  fn: TransformerFlushCallback<O>,\n  original: Transformer<I, O>,\n  context: string\n): (controller: TransformStreamDefaultController<O>) => Promise<void> {\n  assertFunction(fn, context);\n  return (controller: TransformStreamDefaultController<O>) => promiseCall(fn, original, [controller]);\n}\n\nfunction convertTransformerStartCallback<I, O>(\n  fn: TransformerStartCallback<O>,\n  original: Transformer<I, O>,\n  context: string\n): TransformerStartCallback<O> {\n  assertFunction(fn, context);\n  return (controller: TransformStreamDefaultController<O>) => reflectCall(fn, original, [controller]);\n}\n\nfunction convertTransformerTransformCallback<I, O>(\n  fn: TransformerTransformCallback<I, O>,\n  original: Transformer<I, O>,\n  context: string\n): (chunk: I, controller: TransformStreamDefaultController<O>) => Promise<void> {\n  assertFunction(fn, context);\n  return (chunk: I, controller: TransformStreamDefaultController<O>) => promiseCall(fn, original, [chunk, controller]);\n}\n\nfunction convertTransformerCancelCallback<I, O>(\n  fn: TransformerCancelCallback,\n  original: Transformer<I, O>,\n  context: string\n): (reason: any) => Promise<void> {\n  assertFunction(fn, context);\n  return (reason: any) => promiseCall(fn, original, [reason]);\n}\n","import assert from '../stub/assert';\nimport {\n  newPromise,\n  promiseRejectedWith,\n  promiseResolvedWith,\n  setPromiseIsHandledToTrue,\n  transformPromiseWith,\n  uponPromise\n} from './helpers/webidl';\nimport { CreateReadableStream, type DefaultReadableStream, ReadableStream } from './readable-stream';\nimport {\n  ReadableStreamDefaultControllerCanCloseOrEnqueue,\n  ReadableStreamDefaultControllerClose,\n  ReadableStreamDefaultControllerEnqueue,\n  ReadableStreamDefaultControllerError,\n  ReadableStreamDefaultControllerGetDesiredSize,\n  ReadableStreamDefaultControllerHasBackpressure\n} from './readable-stream/default-controller';\nimport type { QueuingStrategy, QueuingStrategySizeCallback } from './queuing-strategy';\nimport { CreateWritableStream, WritableStream, WritableStreamDefaultControllerErrorIfNeeded } from './writable-stream';\nimport { setFunctionName, typeIsObject } from './helpers/miscellaneous';\nimport { IsNonNegativeNumber } from './abstract-ops/miscellaneous';\nimport { convertQueuingStrategy } from './validators/queuing-strategy';\nimport { ExtractHighWaterMark, ExtractSizeAlgorithm } from './abstract-ops/queuing-strategy';\nimport type {\n  Transformer,\n  TransformerCancelCallback,\n  TransformerFlushCallback,\n  TransformerStartCallback,\n  TransformerTransformCallback,\n  ValidatedTransformer\n} from './transform-stream/transformer';\nimport { convertTransformer } from './validators/transformer';\n\n// Class TransformStream\n\n/**\n * A transform stream consists of a pair of streams: a {@link WritableStream | writable stream},\n * known as its writable side, and a {@link ReadableStream | readable stream}, known as its readable side.\n * In a manner specific to the transform stream in question, writes to the writable side result in new data being\n * made available for reading from the readable side.\n *\n * @public\n */\nexport class TransformStream<I = any, O = any> {\n  /** @internal */\n  _writable!: WritableStream<I>;\n  /** @internal */\n  _readable!: DefaultReadableStream<O>;\n  /** @internal */\n  _backpressure!: boolean;\n  /** @internal */\n  _backpressureChangePromise!: Promise<void>;\n  /** @internal */\n  _backpressureChangePromise_resolve!: () => void;\n  /** @internal */\n  _transformStreamController!: TransformStreamDefaultController<O>;\n\n  constructor(\n    transformer?: Transformer<I, O>,\n    writableStrategy?: QueuingStrategy<I>,\n    readableStrategy?: QueuingStrategy<O>\n  );\n  constructor(rawTransformer: Transformer<I, O> | null | undefined = {},\n              rawWritableStrategy: QueuingStrategy<I> | null | undefined = {},\n              rawReadableStrategy: QueuingStrategy<O> | null | undefined = {}) {\n    if (rawTransformer === undefined) {\n      rawTransformer = null;\n    }\n\n    const writableStrategy = convertQueuingStrategy(rawWritableStrategy, 'Second parameter');\n    const readableStrategy = convertQueuingStrategy(rawReadableStrategy, 'Third parameter');\n\n    const transformer = convertTransformer(rawTransformer, 'First parameter');\n    if (transformer.readableType !== undefined) {\n      throw new RangeError('Invalid readableType specified');\n    }\n    if (transformer.writableType !== undefined) {\n      throw new RangeError('Invalid writableType specified');\n    }\n\n    const readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0);\n    const readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy);\n    const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);\n    const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);\n\n    let startPromise_resolve!: (value: void | PromiseLike<void>) => void;\n    const startPromise = newPromise<void>(resolve => {\n      startPromise_resolve = resolve;\n    });\n\n    InitializeTransformStream(\n      this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm\n    );\n    SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n\n    if (transformer.start !== undefined) {\n      startPromise_resolve(transformer.start(this._transformStreamController));\n    } else {\n      startPromise_resolve(undefined);\n    }\n  }\n\n  /**\n   * The readable side of the transform stream.\n   */\n  get readable(): ReadableStream<O> {\n    if (!IsTransformStream(this)) {\n      throw streamBrandCheckException('readable');\n    }\n\n    return this._readable;\n  }\n\n  /**\n   * The writable side of the transform stream.\n   */\n  get writable(): WritableStream<I> {\n    if (!IsTransformStream(this)) {\n      throw streamBrandCheckException('writable');\n    }\n\n    return this._writable;\n  }\n}\n\nObject.defineProperties(TransformStream.prototype, {\n  readable: { enumerable: true },\n  writable: { enumerable: true }\n});\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(TransformStream.prototype, Symbol.toStringTag, {\n    value: 'TransformStream',\n    configurable: true\n  });\n}\n\nexport type {\n  Transformer,\n  TransformerCancelCallback,\n  TransformerStartCallback,\n  TransformerFlushCallback,\n  TransformerTransformCallback\n};\n\n// Transform Stream Abstract Operations\n\nexport function CreateTransformStream<I, O>(startAlgorithm: () => void | PromiseLike<void>,\n                                            transformAlgorithm: (chunk: I) => Promise<void>,\n                                            flushAlgorithm: () => Promise<void>,\n                                            cancelAlgorithm: (reason: any) => Promise<void>,\n                                            writableHighWaterMark = 1,\n                                            writableSizeAlgorithm: QueuingStrategySizeCallback<I> = () => 1,\n                                            readableHighWaterMark = 0,\n                                            readableSizeAlgorithm: QueuingStrategySizeCallback<O> = () => 1) {\n  assert(IsNonNegativeNumber(writableHighWaterMark));\n  assert(IsNonNegativeNumber(readableHighWaterMark));\n\n  const stream: TransformStream<I, O> = Object.create(TransformStream.prototype);\n\n  let startPromise_resolve!: (value: void | PromiseLike<void>) => void;\n  const startPromise = newPromise<void>(resolve => {\n    startPromise_resolve = resolve;\n  });\n\n  InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark,\n                            readableSizeAlgorithm);\n\n  const controller: TransformStreamDefaultController<O> = Object.create(TransformStreamDefaultController.prototype);\n\n  SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm);\n\n  const startResult = startAlgorithm();\n  startPromise_resolve(startResult);\n  return stream;\n}\n\nfunction InitializeTransformStream<I, O>(stream: TransformStream<I, O>,\n                                         startPromise: Promise<void>,\n                                         writableHighWaterMark: number,\n                                         writableSizeAlgorithm: QueuingStrategySizeCallback<I>,\n                                         readableHighWaterMark: number,\n                                         readableSizeAlgorithm: QueuingStrategySizeCallback<O>) {\n  function startAlgorithm(): Promise<void> {\n    return startPromise;\n  }\n\n  function writeAlgorithm(chunk: I): Promise<void> {\n    return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n  }\n\n  function abortAlgorithm(reason: any): Promise<void> {\n    return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n  }\n\n  function closeAlgorithm(): Promise<void> {\n    return TransformStreamDefaultSinkCloseAlgorithm(stream);\n  }\n\n  stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm,\n                                          writableHighWaterMark, writableSizeAlgorithm);\n\n  function pullAlgorithm(): Promise<void> {\n    return TransformStreamDefaultSourcePullAlgorithm(stream);\n  }\n\n  function cancelAlgorithm(reason: any): Promise<void> {\n    return TransformStreamDefaultSourceCancelAlgorithm(stream, reason);\n  }\n\n  stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark,\n                                          readableSizeAlgorithm);\n\n  // The [[backpressure]] slot is set to undefined so that it can be initialised by TransformStreamSetBackpressure.\n  stream._backpressure = undefined!;\n  stream._backpressureChangePromise = undefined!;\n  stream._backpressureChangePromise_resolve = undefined!;\n  TransformStreamSetBackpressure(stream, true);\n\n  stream._transformStreamController = undefined!;\n}\n\nfunction IsTransformStream(x: unknown): x is TransformStream {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n    return false;\n  }\n\n  return x instanceof TransformStream;\n}\n\n// This is a no-op if both sides are already errored.\nfunction TransformStreamError(stream: TransformStream, e: any) {\n  ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n  TransformStreamErrorWritableAndUnblockWrite(stream, e);\n}\n\nfunction TransformStreamErrorWritableAndUnblockWrite(stream: TransformStream, e: any) {\n  TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n  WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\n  TransformStreamUnblockWrite(stream);\n}\n\nfunction TransformStreamUnblockWrite(stream: TransformStream) {\n  if (stream._backpressure) {\n    // Pretend that pull() was called to permit any pending write() calls to complete. TransformStreamSetBackpressure()\n    // cannot be called from enqueue() or pull() once the ReadableStream is errored, so this will will be the final time\n    // _backpressure is set.\n    TransformStreamSetBackpressure(stream, false);\n  }\n}\n\nfunction TransformStreamSetBackpressure(stream: TransformStream, backpressure: boolean) {\n  // Passes also when called during construction.\n  assert(stream._backpressure !== backpressure);\n\n  if (stream._backpressureChangePromise !== undefined) {\n    stream._backpressureChangePromise_resolve();\n  }\n\n  stream._backpressureChangePromise = newPromise(resolve => {\n    stream._backpressureChangePromise_resolve = resolve;\n  });\n\n  stream._backpressure = backpressure;\n}\n\n// Class TransformStreamDefaultController\n\n/**\n * Allows control of the {@link ReadableStream} and {@link WritableStream} of the associated {@link TransformStream}.\n *\n * @public\n */\nexport class TransformStreamDefaultController<O> {\n  /** @internal */\n  _controlledTransformStream: TransformStream<any, O>;\n  /** @internal */\n  _finishPromise: Promise<undefined> | undefined;\n  /** @internal */\n  _finishPromise_resolve?: (value?: undefined) => void;\n  /** @internal */\n  _finishPromise_reject?: (reason: any) => void;\n  /** @internal */\n  _transformAlgorithm: (chunk: any) => Promise<void>;\n  /** @internal */\n  _flushAlgorithm: () => Promise<void>;\n  /** @internal */\n  _cancelAlgorithm: (reason: any) => Promise<void>;\n\n  private constructor() {\n    throw new TypeError('Illegal constructor');\n  }\n\n  /**\n   * Returns the desired size to fill the readable side’s internal queue. It can be negative, if the queue is over-full.\n   */\n  get desiredSize(): number | null {\n    if (!IsTransformStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('desiredSize');\n    }\n\n    const readableController = this._controlledTransformStream._readable._readableStreamController;\n    return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n  }\n\n  /**\n   * Enqueues the given chunk `chunk` in the readable side of the controlled transform stream.\n   */\n  enqueue(chunk: O): void;\n  enqueue(chunk: O = undefined!): void {\n    if (!IsTransformStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('enqueue');\n    }\n\n    TransformStreamDefaultControllerEnqueue(this, chunk);\n  }\n\n  /**\n   * Errors both the readable side and the writable side of the controlled transform stream, making all future\n   * interactions with it fail with the given error `e`. Any chunks queued for transformation will be discarded.\n   */\n  error(reason: any = undefined): void {\n    if (!IsTransformStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('error');\n    }\n\n    TransformStreamDefaultControllerError(this, reason);\n  }\n\n  /**\n   * Closes the readable side and errors the writable side of the controlled transform stream. This is useful when the\n   * transformer only needs to consume a portion of the chunks written to the writable side.\n   */\n  terminate(): void {\n    if (!IsTransformStreamDefaultController(this)) {\n      throw defaultControllerBrandCheckException('terminate');\n    }\n\n    TransformStreamDefaultControllerTerminate(this);\n  }\n}\n\nObject.defineProperties(TransformStreamDefaultController.prototype, {\n  enqueue: { enumerable: true },\n  error: { enumerable: true },\n  terminate: { enumerable: true },\n  desiredSize: { enumerable: true }\n});\nsetFunctionName(TransformStreamDefaultController.prototype.enqueue, 'enqueue');\nsetFunctionName(TransformStreamDefaultController.prototype.error, 'error');\nsetFunctionName(TransformStreamDefaultController.prototype.terminate, 'terminate');\nif (typeof Symbol.toStringTag === 'symbol') {\n  Object.defineProperty(TransformStreamDefaultController.prototype, Symbol.toStringTag, {\n    value: 'TransformStreamDefaultController',\n    configurable: true\n  });\n}\n\n// Transform Stream Default Controller Abstract Operations\n\nfunction IsTransformStreamDefaultController<O = any>(x: any): x is TransformStreamDefaultController<O> {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n    return false;\n  }\n\n  return x instanceof TransformStreamDefaultController;\n}\n\nfunction SetUpTransformStreamDefaultController<I, O>(stream: TransformStream<I, O>,\n                                                     controller: TransformStreamDefaultController<O>,\n                                                     transformAlgorithm: (chunk: I) => Promise<void>,\n                                                     flushAlgorithm: () => Promise<void>,\n                                                     cancelAlgorithm: (reason: any) => Promise<void>) {\n  assert(IsTransformStream(stream));\n  assert(stream._transformStreamController === undefined);\n\n  controller._controlledTransformStream = stream;\n  stream._transformStreamController = controller;\n\n  controller._transformAlgorithm = transformAlgorithm;\n  controller._flushAlgorithm = flushAlgorithm;\n  controller._cancelAlgorithm = cancelAlgorithm;\n\n  controller._finishPromise = undefined;\n  controller._finishPromise_resolve = undefined;\n  controller._finishPromise_reject = undefined;\n}\n\nfunction SetUpTransformStreamDefaultControllerFromTransformer<I, O>(stream: TransformStream<I, O>,\n                                                                    transformer: ValidatedTransformer<I, O>) {\n  const controller: TransformStreamDefaultController<O> = Object.create(TransformStreamDefaultController.prototype);\n\n  let transformAlgorithm: (chunk: I) => Promise<void>;\n  let flushAlgorithm: () => Promise<void>;\n  let cancelAlgorithm: (reason: any) => Promise<void>;\n\n  if (transformer.transform !== undefined) {\n    transformAlgorithm = chunk => transformer.transform!(chunk, controller);\n  } else {\n    transformAlgorithm = chunk => {\n      try {\n        TransformStreamDefaultControllerEnqueue(controller, chunk as unknown as O);\n        return promiseResolvedWith(undefined);\n      } catch (transformResultE) {\n        return promiseRejectedWith(transformResultE);\n      }\n    };\n  }\n\n  if (transformer.flush !== undefined) {\n    flushAlgorithm = () => transformer.flush!(controller);\n  } else {\n    flushAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  if (transformer.cancel !== undefined) {\n    cancelAlgorithm = reason => transformer.cancel!(reason);\n  } else {\n    cancelAlgorithm = () => promiseResolvedWith(undefined);\n  }\n\n  SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm);\n}\n\nfunction TransformStreamDefaultControllerClearAlgorithms(controller: TransformStreamDefaultController<any>) {\n  controller._transformAlgorithm = undefined!;\n  controller._flushAlgorithm = undefined!;\n  controller._cancelAlgorithm = undefined!;\n}\n\nfunction TransformStreamDefaultControllerEnqueue<O>(controller: TransformStreamDefaultController<O>, chunk: O) {\n  const stream = controller._controlledTransformStream;\n  const readableController = stream._readable._readableStreamController;\n  if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) {\n    throw new TypeError('Readable side is not in a state that permits enqueue');\n  }\n\n  // We throttle transform invocations based on the backpressure of the ReadableStream, but we still\n  // accept TransformStreamDefaultControllerEnqueue() calls.\n\n  try {\n    ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n  } catch (e) {\n    // This happens when readableStrategy.size() throws.\n    TransformStreamErrorWritableAndUnblockWrite(stream, e);\n\n    throw stream._readable._storedError;\n  }\n\n  const backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n  if (backpressure !== stream._backpressure) {\n    assert(backpressure);\n    TransformStreamSetBackpressure(stream, true);\n  }\n}\n\nfunction TransformStreamDefaultControllerError(controller: TransformStreamDefaultController<any>, e: any) {\n  TransformStreamError(controller._controlledTransformStream, e);\n}\n\nfunction TransformStreamDefaultControllerPerformTransform<I, O>(controller: TransformStreamDefaultController<O>,\n                                                                chunk: I) {\n  const transformPromise = controller._transformAlgorithm(chunk);\n  return transformPromiseWith(transformPromise, undefined, r => {\n    TransformStreamError(controller._controlledTransformStream, r);\n    throw r;\n  });\n}\n\nfunction TransformStreamDefaultControllerTerminate<O>(controller: TransformStreamDefaultController<O>) {\n  const stream = controller._controlledTransformStream;\n  const readableController = stream._readable._readableStreamController;\n\n  ReadableStreamDefaultControllerClose(readableController);\n\n  const error = new TypeError('TransformStream terminated');\n  TransformStreamErrorWritableAndUnblockWrite(stream, error);\n}\n\n// TransformStreamDefaultSink Algorithms\n\nfunction TransformStreamDefaultSinkWriteAlgorithm<I, O>(stream: TransformStream<I, O>, chunk: I): Promise<void> {\n  assert(stream._writable._state === 'writable');\n\n  const controller = stream._transformStreamController;\n\n  if (stream._backpressure) {\n    const backpressureChangePromise = stream._backpressureChangePromise;\n    assert(backpressureChangePromise !== undefined);\n    return transformPromiseWith(backpressureChangePromise, () => {\n      const writable = stream._writable;\n      const state = writable._state;\n      if (state === 'erroring') {\n        throw writable._storedError;\n      }\n      assert(state === 'writable');\n      return TransformStreamDefaultControllerPerformTransform<I, O>(controller, chunk);\n    });\n  }\n\n  return TransformStreamDefaultControllerPerformTransform<I, O>(controller, chunk);\n}\n\nfunction TransformStreamDefaultSinkAbortAlgorithm<I, O>(stream: TransformStream<I, O>, reason: any): Promise<void> {\n  const controller = stream._transformStreamController;\n  if (controller._finishPromise !== undefined) {\n    return controller._finishPromise;\n  }\n\n  // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n  const readable = stream._readable;\n\n  // Assign the _finishPromise now so that if _cancelAlgorithm calls readable.cancel() internally,\n  // we don't run the _cancelAlgorithm again.\n  controller._finishPromise = newPromise((resolve, reject) => {\n    controller._finishPromise_resolve = resolve;\n    controller._finishPromise_reject = reject;\n  });\n\n  const cancelPromise = controller._cancelAlgorithm(reason);\n  TransformStreamDefaultControllerClearAlgorithms(controller);\n\n  uponPromise(cancelPromise, () => {\n    if (readable._state === 'errored') {\n      defaultControllerFinishPromiseReject(controller, readable._storedError);\n    } else {\n      ReadableStreamDefaultControllerError(readable._readableStreamController, reason);\n      defaultControllerFinishPromiseResolve(controller);\n    }\n    return null;\n  }, r => {\n    ReadableStreamDefaultControllerError(readable._readableStreamController, r);\n    defaultControllerFinishPromiseReject(controller, r);\n    return null;\n  });\n\n  return controller._finishPromise;\n}\n\nfunction TransformStreamDefaultSinkCloseAlgorithm<I, O>(stream: TransformStream<I, O>): Promise<void> {\n  const controller = stream._transformStreamController;\n  if (controller._finishPromise !== undefined) {\n    return controller._finishPromise;\n  }\n\n  // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n  const readable = stream._readable;\n\n  // Assign the _finishPromise now so that if _flushAlgorithm calls readable.cancel() internally,\n  // we don't also run the _cancelAlgorithm.\n  controller._finishPromise = newPromise((resolve, reject) => {\n    controller._finishPromise_resolve = resolve;\n    controller._finishPromise_reject = reject;\n  });\n\n  const flushPromise = controller._flushAlgorithm();\n  TransformStreamDefaultControllerClearAlgorithms(controller);\n\n  uponPromise(flushPromise, () => {\n    if (readable._state === 'errored') {\n      defaultControllerFinishPromiseReject(controller, readable._storedError);\n    } else {\n      ReadableStreamDefaultControllerClose(readable._readableStreamController);\n      defaultControllerFinishPromiseResolve(controller);\n    }\n    return null;\n  }, r => {\n    ReadableStreamDefaultControllerError(readable._readableStreamController, r);\n    defaultControllerFinishPromiseReject(controller, r);\n    return null;\n  });\n\n  return controller._finishPromise;\n}\n\n// TransformStreamDefaultSource Algorithms\n\nfunction TransformStreamDefaultSourcePullAlgorithm(stream: TransformStream): Promise<void> {\n  // Invariant. Enforced by the promises returned by start() and pull().\n  assert(stream._backpressure);\n\n  assert(stream._backpressureChangePromise !== undefined);\n\n  TransformStreamSetBackpressure(stream, false);\n\n  // Prevent the next pull() call until there is backpressure.\n  return stream._backpressureChangePromise;\n}\n\nfunction TransformStreamDefaultSourceCancelAlgorithm<I, O>(stream: TransformStream<I, O>, reason: any): Promise<void> {\n  const controller = stream._transformStreamController;\n  if (controller._finishPromise !== undefined) {\n    return controller._finishPromise;\n  }\n\n  // stream._writable cannot change after construction, so caching it across a call to user code is safe.\n  const writable = stream._writable;\n\n  // Assign the _finishPromise now so that if _flushAlgorithm calls writable.abort() or\n  // writable.cancel() internally, we don't run the _cancelAlgorithm again, or also run the\n  // _flushAlgorithm.\n  controller._finishPromise = newPromise((resolve, reject) => {\n    controller._finishPromise_resolve = resolve;\n    controller._finishPromise_reject = reject;\n  });\n\n  const cancelPromise = controller._cancelAlgorithm(reason);\n  TransformStreamDefaultControllerClearAlgorithms(controller);\n\n  uponPromise(cancelPromise, () => {\n    if (writable._state === 'errored') {\n      defaultControllerFinishPromiseReject(controller, writable._storedError);\n    } else {\n      WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, reason);\n      TransformStreamUnblockWrite(stream);\n      defaultControllerFinishPromiseResolve(controller);\n    }\n    return null;\n  }, r => {\n    WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, r);\n    TransformStreamUnblockWrite(stream);\n    defaultControllerFinishPromiseReject(controller, r);\n    return null;\n  });\n\n  return controller._finishPromise;\n}\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `TransformStreamDefaultController.prototype.${name} can only be used on a TransformStreamDefaultController`);\n}\n\nexport function defaultControllerFinishPromiseResolve(controller: TransformStreamDefaultController<any>) {\n  if (controller._finishPromise_resolve === undefined) {\n    return;\n  }\n\n  controller._finishPromise_resolve();\n  controller._finishPromise_resolve = undefined;\n  controller._finishPromise_reject = undefined;\n}\n\nexport function defaultControllerFinishPromiseReject(controller: TransformStreamDefaultController<any>, reason: any) {\n  if (controller._finishPromise_reject === undefined) {\n    return;\n  }\n\n  setPromiseIsHandledToTrue(controller._finishPromise!);\n  controller._finishPromise_reject(reason);\n  controller._finishPromise_resolve = undefined;\n  controller._finishPromise_reject = undefined;\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name: string): TypeError {\n  return new TypeError(\n    `TransformStream.prototype.${name} can only be used on a TransformStream`);\n}\n","/* c8 ignore start */\n// 64 KiB (same size chrome slice theirs blob into Uint8array's)\nconst POOL_SIZE = 65536\n\nif (!globalThis.ReadableStream) {\n  // `node:stream/web` got introduced in v16.5.0 as experimental\n  // and it's preferred over the polyfilled version. So we also\n  // suppress the warning that gets emitted by NodeJS for using it.\n  try {\n    const process = require('node:process')\n    const { emitWarning } = process\n    try {\n      process.emitWarning = () => {}\n      Object.assign(globalThis, require('node:stream/web'))\n      process.emitWarning = emitWarning\n    } catch (error) {\n      process.emitWarning = emitWarning\n      throw error\n    }\n  } catch (error) {\n    // fallback to polyfill implementation\n    Object.assign(globalThis, require('web-streams-polyfill/dist/ponyfill.es2018.js'))\n  }\n}\n\ntry {\n  // Don't use node: prefix for this, require+node: is not supported until node v14.14\n  // Only `import()` can use prefix in 12.20 and later\n  const { Blob } = require('buffer')\n  if (Blob && !Blob.prototype.stream) {\n    Blob.prototype.stream = function name (params) {\n      let position = 0\n      const blob = this\n\n      return new ReadableStream({\n        type: 'bytes',\n        async pull (ctrl) {\n          const chunk = blob.slice(position, Math.min(blob.size, position + POOL_SIZE))\n          const buffer = await chunk.arrayBuffer()\n          position += buffer.byteLength\n          ctrl.enqueue(new Uint8Array(buffer))\n\n          if (position === blob.size) {\n            ctrl.close()\n          }\n        }\n      })\n    }\n  }\n} catch (error) {}\n/* c8 ignore end */\n","/*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\nif (!globalThis.DOMException) {\n  try {\n    const { MessageChannel } = require('worker_threads'),\n    port = new MessageChannel().port1,\n    ab = new ArrayBuffer()\n    port.postMessage(ab, [ab, ab])\n  } catch (err) {\n    err.constructor.name === 'DOMException' && (\n      globalThis.DOMException = err.constructor\n    )\n  }\n}\n\nmodule.exports = globalThis.DOMException\n","/*! fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\n// TODO (jimmywarting): in the feature use conditional loading with top level await (requires 14.x)\n// Node has recently added whatwg stream into core\n\nimport './streams.cjs'\n\n// 64 KiB (same size chrome slice theirs blob into Uint8array's)\nconst POOL_SIZE = 65536\n\n/** @param {(Blob | Uint8Array)[]} parts */\nasync function * toIterator (parts, clone = true) {\n  for (const part of parts) {\n    if ('stream' in part) {\n      yield * (/** @type {AsyncIterableIterator<Uint8Array>} */ (part.stream()))\n    } else if (ArrayBuffer.isView(part)) {\n      if (clone) {\n        let position = part.byteOffset\n        const end = part.byteOffset + part.byteLength\n        while (position !== end) {\n          const size = Math.min(end - position, POOL_SIZE)\n          const chunk = part.buffer.slice(position, position + size)\n          position += chunk.byteLength\n          yield new Uint8Array(chunk)\n        }\n      } else {\n        yield part\n      }\n    /* c8 ignore next 10 */\n    } else {\n      // For blobs that have arrayBuffer but no stream method (nodes buffer.Blob)\n      let position = 0, b = (/** @type {Blob} */ (part))\n      while (position !== b.size) {\n        const chunk = b.slice(position, Math.min(b.size, position + POOL_SIZE))\n        const buffer = await chunk.arrayBuffer()\n        position += buffer.byteLength\n        yield new Uint8Array(buffer)\n      }\n    }\n  }\n}\n\nconst _Blob = class Blob {\n  /** @type {Array.<(Blob|Uint8Array)>} */\n  #parts = []\n  #type = ''\n  #size = 0\n  #endings = 'transparent'\n\n  /**\n   * The Blob() constructor returns a new Blob object. The content\n   * of the blob consists of the concatenation of the values given\n   * in the parameter array.\n   *\n   * @param {*} blobParts\n   * @param {{ type?: string, endings?: string }} [options]\n   */\n  constructor (blobParts = [], options = {}) {\n    if (typeof blobParts !== 'object' || blobParts === null) {\n      throw new TypeError('Failed to construct \\'Blob\\': The provided value cannot be converted to a sequence.')\n    }\n\n    if (typeof blobParts[Symbol.iterator] !== 'function') {\n      throw new TypeError('Failed to construct \\'Blob\\': The object must have a callable @@iterator property.')\n    }\n\n    if (typeof options !== 'object' && typeof options !== 'function') {\n      throw new TypeError('Failed to construct \\'Blob\\': parameter 2 cannot convert to dictionary.')\n    }\n\n    if (options === null) options = {}\n\n    const encoder = new TextEncoder()\n    for (const element of blobParts) {\n      let part\n      if (ArrayBuffer.isView(element)) {\n        part = new Uint8Array(element.buffer.slice(element.byteOffset, element.byteOffset + element.byteLength))\n      } else if (element instanceof ArrayBuffer) {\n        part = new Uint8Array(element.slice(0))\n      } else if (element instanceof Blob) {\n        part = element\n      } else {\n        part = encoder.encode(`${element}`)\n      }\n\n      this.#size += ArrayBuffer.isView(part) ? part.byteLength : part.size\n      this.#parts.push(part)\n    }\n\n    this.#endings = `${options.endings === undefined ? 'transparent' : options.endings}`\n    const type = options.type === undefined ? '' : String(options.type)\n    this.#type = /^[\\x20-\\x7E]*$/.test(type) ? type : ''\n  }\n\n  /**\n   * The Blob interface's size property returns the\n   * size of the Blob in bytes.\n   */\n  get size () {\n    return this.#size\n  }\n\n  /**\n   * The type property of a Blob object returns the MIME type of the file.\n   */\n  get type () {\n    return this.#type\n  }\n\n  /**\n   * The text() method in the Blob interface returns a Promise\n   * that resolves with a string containing the contents of\n   * the blob, interpreted as UTF-8.\n   *\n   * @return {Promise<string>}\n   */\n  async text () {\n    // More optimized than using this.arrayBuffer()\n    // that requires twice as much ram\n    const decoder = new TextDecoder()\n    let str = ''\n    for await (const part of toIterator(this.#parts, false)) {\n      str += decoder.decode(part, { stream: true })\n    }\n    // Remaining\n    str += decoder.decode()\n    return str\n  }\n\n  /**\n   * The arrayBuffer() method in the Blob interface returns a\n   * Promise that resolves with the contents of the blob as\n   * binary data contained in an ArrayBuffer.\n   *\n   * @return {Promise<ArrayBuffer>}\n   */\n  async arrayBuffer () {\n    // Easier way... Just a unnecessary overhead\n    // const view = new Uint8Array(this.size);\n    // await this.stream().getReader({mode: 'byob'}).read(view);\n    // return view.buffer;\n\n    const data = new Uint8Array(this.size)\n    let offset = 0\n    for await (const chunk of toIterator(this.#parts, false)) {\n      data.set(chunk, offset)\n      offset += chunk.length\n    }\n\n    return data.buffer\n  }\n\n  stream () {\n    const it = toIterator(this.#parts, true)\n\n    return new globalThis.ReadableStream({\n      // @ts-ignore\n      type: 'bytes',\n      async pull (ctrl) {\n        const chunk = await it.next()\n        chunk.done ? ctrl.close() : ctrl.enqueue(chunk.value)\n      },\n\n      async cancel () {\n        await it.return()\n      }\n    })\n  }\n\n  /**\n   * The Blob interface's slice() method creates and returns a\n   * new Blob object which contains data from a subset of the\n   * blob on which it's called.\n   *\n   * @param {number} [start]\n   * @param {number} [end]\n   * @param {string} [type]\n   */\n  slice (start = 0, end = this.size, type = '') {\n    const { size } = this\n\n    let relativeStart = start < 0 ? Math.max(size + start, 0) : Math.min(start, size)\n    let relativeEnd = end < 0 ? Math.max(size + end, 0) : Math.min(end, size)\n\n    const span = Math.max(relativeEnd - relativeStart, 0)\n    const parts = this.#parts\n    const blobParts = []\n    let added = 0\n\n    for (const part of parts) {\n      // don't add the overflow to new blobParts\n      if (added >= span) {\n        break\n      }\n\n      const size = ArrayBuffer.isView(part) ? part.byteLength : part.size\n      if (relativeStart && size <= relativeStart) {\n        // Skip the beginning and change the relative\n        // start & end position as we skip the unwanted parts\n        relativeStart -= size\n        relativeEnd -= size\n      } else {\n        let chunk\n        if (ArrayBuffer.isView(part)) {\n          chunk = part.subarray(relativeStart, Math.min(size, relativeEnd))\n          added += chunk.byteLength\n        } else {\n          chunk = part.slice(relativeStart, Math.min(size, relativeEnd))\n          added += chunk.size\n        }\n        relativeEnd -= size\n        blobParts.push(chunk)\n        relativeStart = 0 // All next sequential parts should start at 0\n      }\n    }\n\n    const blob = new Blob([], { type: String(type).toLowerCase() })\n    blob.#size = span\n    blob.#parts = blobParts\n\n    return blob\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'Blob'\n  }\n\n  static [Symbol.hasInstance] (object) {\n    return (\n      object &&\n      typeof object === 'object' &&\n      typeof object.constructor === 'function' &&\n      (\n        typeof object.stream === 'function' ||\n        typeof object.arrayBuffer === 'function'\n      ) &&\n      /^(Blob|File)$/.test(object[Symbol.toStringTag])\n    )\n  }\n}\n\nObject.defineProperties(_Blob.prototype, {\n  size: { enumerable: true },\n  type: { enumerable: true },\n  slice: { enumerable: true }\n})\n\n/** @type {typeof globalThis.Blob} */\nexport const Blob = _Blob\nexport default Blob\n","import Blob from './index.js'\n\nconst _File = class File extends Blob {\n  #lastModified = 0\n  #name = ''\n\n  /**\n   * @param {*[]} fileBits\n   * @param {string} fileName\n   * @param {{lastModified?: number, type?: string}} options\n   */// @ts-ignore\n  constructor (fileBits, fileName, options = {}) {\n    if (arguments.length < 2) {\n      throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`)\n    }\n    super(fileBits, options)\n\n    if (options === null) options = {}\n\n    // Simulate WebIDL type casting for NaN value in lastModified option.\n    const lastModified = options.lastModified === undefined ? Date.now() : Number(options.lastModified)\n    if (!Number.isNaN(lastModified)) {\n      this.#lastModified = lastModified\n    }\n\n    this.#name = String(fileName)\n  }\n\n  get name () {\n    return this.#name\n  }\n\n  get lastModified () {\n    return this.#lastModified\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'File'\n  }\n\n  static [Symbol.hasInstance] (object) {\n    return !!object && object instanceof Blob &&\n      /^(File)$/.test(object[Symbol.toStringTag])\n  }\n}\n\n/** @type {typeof globalThis.File} */// @ts-ignore\nexport const File = _File\nexport default File\n","/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\nimport C from 'fetch-blob'\nimport F from 'fetch-blob/file.js'\n\nvar {toStringTag:t,iterator:i,hasInstance:h}=Symbol,\nr=Math.random,\nm='append,set,get,getAll,delete,keys,values,entries,forEach,constructor'.split(','),\nf=(a,b,c)=>(a+='',/^(Blob|File)$/.test(b && b[t])?[(c=c!==void 0?c+'':b[t]=='File'?b.name:'blob',a),b.name!==c||b[t]=='blob'?new F([b],c,b):b]:[a,b+'']),\ne=(c,f)=>(f?c:c.replace(/\\r?\\n|\\r/g,'\\r\\n')).replace(/\\n/g,'%0A').replace(/\\r/g,'%0D').replace(/\"/g,'%22'),\nx=(n, a, e)=>{if(a.length<e){throw new TypeError(`Failed to execute '${n}' on 'FormData': ${e} arguments required, but only ${a.length} present.`)}}\n\nexport const File = F\n\n/** @type {typeof globalThis.FormData} */\nexport const FormData = class FormData {\n#d=[];\nconstructor(...a){if(a.length)throw new TypeError(`Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.`)}\nget [t]() {return 'FormData'}\n[i](){return this.entries()}\nstatic [h](o) {return o&&typeof o==='object'&&o[t]==='FormData'&&!m.some(m=>typeof o[m]!='function')}\nappend(...a){x('append',arguments,2);this.#d.push(f(...a))}\ndelete(a){x('delete',arguments,1);a+='';this.#d=this.#d.filter(([b])=>b!==a)}\nget(a){x('get',arguments,1);a+='';for(var b=this.#d,l=b.length,c=0;c<l;c++)if(b[c][0]===a)return b[c][1];return null}\ngetAll(a,b){x('getAll',arguments,1);b=[];a+='';this.#d.forEach(c=>c[0]===a&&b.push(c[1]));return b}\nhas(a){x('has',arguments,1);a+='';return this.#d.some(b=>b[0]===a)}\nforEach(a,b){x('forEach',arguments,1);for(var [c,d]of this)a.call(b,d,c,this)}\nset(...a){x('set',arguments,2);var b=[],c=!0;a=f(...a);this.#d.forEach(d=>{d[0]===a[0]?c&&(c=!b.push(a)):b.push(d)});c&&b.push(a);this.#d=b}\n*entries(){yield*this.#d}\n*keys(){for(var[a]of this)yield a}\n*values(){for(var[,a]of this)yield a}}\n\n/** @param {FormData} F */\nexport function formDataToBlob (F,B=C){\nvar b=`${r()}${r()}`.replace(/\\./g, '').slice(-28).padStart(32, '-'),c=[],p=`--${b}\\r\\nContent-Disposition: form-data; name=\"`\nF.forEach((v,n)=>typeof v=='string'\n?c.push(p+e(n)+`\"\\r\\n\\r\\n${v.replace(/\\r(?!\\n)|(?<!\\r)\\n/g, '\\r\\n')}\\r\\n`)\n:c.push(p+e(n)+`\"; filename=\"${e(v.name, 1)}\"\\r\\nContent-Type: ${v.type||\"application/octet-stream\"}\\r\\n\\r\\n`, v, '\\r\\n'))\nc.push(`--${b}--`)\nreturn new B(c,{type:\"multipart/form-data; boundary=\"+b})}\n","import { statSync, createReadStream, promises as fs } from 'node:fs'\nimport { basename } from 'node:path'\nimport DOMException from 'node-domexception'\n\nimport File from './file.js'\nimport Blob from './index.js'\n\nconst { stat } = fs\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n */\nconst blobFromSync = (path, type) => fromBlob(statSync(path), path, type)\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n * @returns {Promise<Blob>}\n */\nconst blobFrom = (path, type) => stat(path).then(stat => fromBlob(stat, path, type))\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n * @returns {Promise<File>}\n */\nconst fileFrom = (path, type) => stat(path).then(stat => fromFile(stat, path, type))\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n */\nconst fileFromSync = (path, type) => fromFile(statSync(path), path, type)\n\n// @ts-ignore\nconst fromBlob = (stat, path, type = '') => new Blob([new BlobDataItem({\n  path,\n  size: stat.size,\n  lastModified: stat.mtimeMs,\n  start: 0\n})], { type })\n\n// @ts-ignore\nconst fromFile = (stat, path, type = '') => new File([new BlobDataItem({\n  path,\n  size: stat.size,\n  lastModified: stat.mtimeMs,\n  start: 0\n})], basename(path), { type, lastModified: stat.mtimeMs })\n\n/**\n * This is a blob backed up by a file on the disk\n * with minium requirement. Its wrapped around a Blob as a blobPart\n * so you have no direct access to this.\n *\n * @private\n */\nclass BlobDataItem {\n  #path\n  #start\n\n  constructor (options) {\n    this.#path = options.path\n    this.#start = options.start\n    this.size = options.size\n    this.lastModified = options.lastModified\n  }\n\n  /**\n   * Slicing arguments is first validated and formatted\n   * to not be out of range by Blob.prototype.slice\n   */\n  slice (start, end) {\n    return new BlobDataItem({\n      path: this.#path,\n      lastModified: this.lastModified,\n      size: end - start,\n      start: this.#start + start\n    })\n  }\n\n  async * stream () {\n    const { mtimeMs } = await stat(this.#path)\n    if (mtimeMs > this.lastModified) {\n      throw new DOMException('The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.', 'NotReadableError')\n    }\n    yield * createReadStream(this.#path, {\n      start: this.#start,\n      end: this.#start + this.size - 1\n    })\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'Blob'\n  }\n}\n\nexport default blobFromSync\nexport { File, Blob, blobFrom, blobFromSync, fileFrom, fileFromSync }\n"]}