summaryrefslogtreecommitdiff
path: root/packages/webapi/mod.js
diff options
context:
space:
mode:
authorGravatar Nate Moore <natemoo-re@users.noreply.github.com> 2022-03-08 15:46:11 -0600
committerGravatar GitHub <noreply@github.com> 2022-03-08 15:46:11 -0600
commitd08ddaf5b933033564e1312df49ace8364033f79 (patch)
treecd35b7f32146a0762fb1ede3eb4551288f574c80 /packages/webapi/mod.js
parent2f7a4f8eaeac3e66fab64e24d05b803abf0d8804 (diff)
downloadastro-d08ddaf5b933033564e1312df49ace8364033f79.tar.gz
astro-d08ddaf5b933033564e1312df49ace8364033f79.tar.zst
astro-d08ddaf5b933033564e1312df49ace8364033f79.zip
Move from yarn to pnpm (#2455)
* chore: `yarn` => `pnpm` * docs: `yarn` => `pnpm` * chore(ci): yarn => pnpm * chore(ci): update pnpm cache path * fix: add missing deps * fix: add missing deps * test: add package.json to all test fixtures * chore: improve hoisting behavior * chore: move turbo into package.json * chore: update npmrc * fix: add missing `debug` dependency * chore: remove prepare script * test: fix new tests * fix: fully resolve renderer paths and `astro/internal` path * chore: update lockfile * chore: remove log * fix: resolve renderers in vite-plugin-jsx * fix: prefer public-hoist-pattern to shamefully-hoist * chore: ignore @babel/core peer warning * chore: update dependencies * test: add autoprefixer as explicit dep * chore: update `.npmrc` file in examples * chore: update dependencies * fix: resolve renderer dependencies in static build * fix: static build renderer resolution * chore: fix smoke tests * chore: hoist autoprefixer * chore: update lockfile * attempt: use full file:// path on Windows * attempt: use astro/internal * attempt: optimize astro/internal * attempt: expose ./internal.js * chore: add missing package.json files * attempt: resolve astro/internal path * chore: tidy package.json * chore: update lockfile * chore: update deps * chore: update deps * chore: yarn -> pnpm * attempt: explicit /@fs urls * attempt: explicit /@fs urls * chore: update all examples for pnpm * chore: fix hoisting for with-vite-plugin-pwa * chore(ci): fix sharp install * chore: update with-vite-plugin-pwa example * fix: pin vite-plugin-pwa to 0.11.11 * fix: add workbox-window to vite-plugin-pwa deps * refactor: use pnpm update --recursive Co-authored-by: JuanM04 <me@juanm04.com> * chore: yarn => pnpm * chore: yarn => pnpm * fix: update smoke test to skip examples which don't work in static build * update lockfile * chore: update .npmrc files * chore: update lockfile * fix: smoke script * chore: update .npmrc file * fix: return to shamefully-hoist (shamefully) * chore: update lockfile * fix(smoke): ignore scripts for smoke tests * fix: update example to disable renderers * chore: bump version * chore(ci): fix smoke tests * attempt: disable --frozen-lockfile for smoke tests * chore: update smoke test * chore: fix rebase issue * chore: update lockfile * fix: smoke tests * fix(ci): run external smoke tests first * fix(ci): run syntax * chore: update lockfile * fix(ci): ensure submodules are up-to-date * fix(ci): ensure submodules are up-to-date * chore: update lockfile * chore: update for webapi * chore: silence node:* warnings * chore: update deps * fix(ci): persist generated webapi assets * fix(ci): webapi build script * chore(ci): remove custom node caching * chore: keep turbo.json * chore: update turbo, ignore create-astro * chore: update deps * fix(ci): test command * chore(ci): update test script Co-authored-by: JuanM04 <me@juanm04.com>
Diffstat (limited to '')
-rw-r--r--packages/webapi/mod.js11848
-rw-r--r--packages/webapi/mod.js.map1
2 files changed, 0 insertions, 11849 deletions
diff --git a/packages/webapi/mod.js b/packages/webapi/mod.js
deleted file mode 100644
index 87945ef58..000000000
--- a/packages/webapi/mod.js
+++ /dev/null
@@ -1,11848 +0,0 @@
-import {
- setTimeout as setTimeout$1,
- clearTimeout as clearTimeout$1,
-} from 'node:timers'
-import http from 'node:http'
-import https from 'node:https'
-import zlib from 'node:zlib'
-import Stream, { PassThrough, pipeline as pipeline$1 } from 'node:stream'
-import { promisify, deprecate, types } from 'node:util'
-import { format as format$1 } from 'node:url'
-import { isIP } from 'node:net'
-import { performance } from 'node:perf_hooks'
-
-/** Returns the function bound to the given object. */
-const __function_bind = Function.bind.bind(Function.call)
-/** Returns the function called with the specified values. */
-Function.call.bind(Function.call)
-/** Returns whether an object has a property with the specified name. */
-const __object_hasOwnProperty = Function.call.bind(
- Object.prototype.hasOwnProperty
-)
-/** Returns a string representation of an object. */
-Function.call.bind(Object.prototype.toString)
-/** Returns whether the object prototype exists in another object. */
-const __object_isPrototypeOf = Function.call.bind(
- Object.prototype.isPrototypeOf
-)
-/** Current high resolution millisecond timestamp. */
-const __performance_now = performance.now
-/** Returns the string escaped for use inside regular expressions. */
-const __string_escapeRegExp = (value) =>
- value.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&')
-// @ts-ignore
-const INTERNALS$3 = new WeakMap()
-const internalsOf = (target, className, propName) => {
- const internals = INTERNALS$3.get(target)
- if (!internals)
- throw new TypeError(
- `${className}.${propName} can only be used on instances of ${className}`
- )
- return internals
-}
-const allowStringTag = (value) =>
- (value.prototype[Symbol.toStringTag] = value.name)
-/** Returns any kind of path as a posix path. */
-const pathToPosix = (pathname) =>
- String(pathname == null ? '' : pathname)
- .replace(
- // convert slashes
- /\\+/g,
- '/'
- )
- .replace(
- // prefix a slash to drive letters
- /^(?=[A-Za-z]:\/)/,
- '/'
- )
- .replace(
- // encode path characters
- /%/g,
- '%25'
- )
- .replace(/\n/g, '%0A')
- .replace(/\r/g, '%0D')
- .replace(/\t/g, '%09')
-
-class DOMException extends Error {
- constructor(message = '', name = 'Error') {
- super(message)
- this.code = 0
- this.name = name
- }
-}
-DOMException.INDEX_SIZE_ERR = 1
-DOMException.DOMSTRING_SIZE_ERR = 2
-DOMException.HIERARCHY_REQUEST_ERR = 3
-DOMException.WRONG_DOCUMENT_ERR = 4
-DOMException.INVALID_CHARACTER_ERR = 5
-DOMException.NO_DATA_ALLOWED_ERR = 6
-DOMException.NO_MODIFICATION_ALLOWED_ERR = 7
-DOMException.NOT_FOUND_ERR = 8
-DOMException.NOT_SUPPORTED_ERR = 9
-DOMException.INUSE_ATTRIBUTE_ERR = 10
-DOMException.INVALID_STATE_ERR = 11
-DOMException.SYNTAX_ERR = 12
-DOMException.INVALID_MODIFICATION_ERR = 13
-DOMException.NAMESPACE_ERR = 14
-DOMException.INVALID_ACCESS_ERR = 15
-DOMException.VALIDATION_ERR = 16
-DOMException.TYPE_MISMATCH_ERR = 17
-DOMException.SECURITY_ERR = 18
-DOMException.NETWORK_ERR = 19
-DOMException.ABORT_ERR = 20
-DOMException.URL_MISMATCH_ERR = 21
-DOMException.QUOTA_EXCEEDED_ERR = 22
-DOMException.TIMEOUT_ERR = 23
-DOMException.INVALID_NODE_TYPE_ERR = 24
-DOMException.DATA_CLONE_ERR = 25
-allowStringTag(DOMException)
-
-/**
- * Assert a condition.
- * @param condition The condition that it should satisfy.
- * @param message The error message.
- * @param args The arguments for replacing placeholders in the message.
- */
-function assertType(condition, message, ...args) {
- if (!condition) {
- throw new TypeError(format(message, args))
- }
-}
-/**
- * Convert a text and arguments to one string.
- * @param message The formating text
- * @param args The arguments.
- */
-function format(message, args) {
- let i = 0
- return message.replace(/%[os]/gu, () => anyToString(args[i++]))
-}
-/**
- * Convert a value to a string representation.
- * @param x The value to get the string representation.
- */
-function anyToString(x) {
- if (typeof x !== 'object' || x === null) {
- return String(x)
- }
- return Object.prototype.toString.call(x)
-}
-
-let currentErrorHandler
-/**
- * Print a error message.
- * @param maybeError The error object.
- */
-function reportError(maybeError) {
- try {
- const error =
- maybeError instanceof Error
- ? maybeError
- : new Error(anyToString(maybeError))
- // Call the user-defined error handler if exists.
- if (currentErrorHandler);
- // Dispatch an `error` event if this is on a browser.
- if (
- typeof dispatchEvent === 'function' &&
- typeof ErrorEvent === 'function'
- ) {
- dispatchEvent(new ErrorEvent('error', { error, message: error.message }))
- }
- // Emit an `uncaughtException` event if this is on Node.js.
- //istanbul ignore else
- else if (
- typeof process !== 'undefined' &&
- typeof process.emit === 'function'
- ) {
- process.emit('uncaughtException', error)
- return
- }
- // Otherwise, print the error.
- console.error(error)
- } catch (_a) {
- // ignore.
- }
-}
-
-let currentWarnHandler
-/**
- * The warning information.
- */
-class Warning {
- constructor(code, message) {
- this.code = code
- this.message = message
- }
- /**
- * Report this warning.
- * @param args The arguments of the warning.
- */
- warn(...args) {
- var _a
- try {
- // Call the user-defined warning handler if exists.
- if (currentWarnHandler);
- // Otherwise, print the warning.
- const stack = (
- (_a = new Error().stack) !== null && _a !== void 0 ? _a : ''
- ).replace(/^(?:.+?\n){2}/gu, '\n')
- console.warn(this.message, ...args, stack)
- } catch (_b) {
- // Ignore.
- }
- }
-}
-
-const InitEventWasCalledWhileDispatching = new Warning(
- 'W01',
- 'Unable to initialize event under dispatching.'
-)
-const FalsyWasAssignedToCancelBubble = new Warning(
- 'W02',
- "Assigning any falsy value to 'cancelBubble' property has no effect."
-)
-const TruthyWasAssignedToReturnValue = new Warning(
- 'W03',
- "Assigning any truthy value to 'returnValue' property has no effect."
-)
-const NonCancelableEventWasCanceled = new Warning(
- 'W04',
- 'Unable to preventDefault on non-cancelable events.'
-)
-const CanceledInPassiveListener = new Warning(
- 'W05',
- 'Unable to preventDefault inside passive event listener invocation.'
-)
-const EventListenerWasDuplicated = new Warning(
- 'W06',
- "An event listener wasn't added because it has been added already: %o, %o"
-)
-const OptionWasIgnored = new Warning(
- 'W07',
- "The %o option value was abandoned because the event listener wasn't added as duplicated."
-)
-const InvalidEventListener = new Warning(
- 'W08',
- "The 'callback' argument must be a function or an object that has 'handleEvent' method: %o"
-)
-const InvalidAttributeHandler = new Warning(
- 'W09',
- 'Event attribute handler must be a function: %o'
-)
-
-/*eslint-disable class-methods-use-this */
-/**
- * An implementation of `Event` interface, that wraps a given event object.
- * `EventTarget` shim can control the internal state of this `Event` objects.
- * @see https://dom.spec.whatwg.org/#event
- */
-class Event {
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-none
- */
- static get NONE() {
- return NONE
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-capturing_phase
- */
- static get CAPTURING_PHASE() {
- return CAPTURING_PHASE
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-at_target
- */
- static get AT_TARGET() {
- return AT_TARGET
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-bubbling_phase
- */
- static get BUBBLING_PHASE() {
- return BUBBLING_PHASE
- }
- /**
- * Initialize this event instance.
- * @param type The type of this event.
- * @param eventInitDict Options to initialize.
- * @see https://dom.spec.whatwg.org/#dom-event-event
- */
- constructor(type, eventInitDict) {
- Object.defineProperty(this, 'isTrusted', {
- value: false,
- enumerable: true,
- })
- const opts =
- eventInitDict !== null && eventInitDict !== void 0 ? eventInitDict : {}
- internalDataMap.set(this, {
- type: String(type),
- bubbles: Boolean(opts.bubbles),
- cancelable: Boolean(opts.cancelable),
- composed: Boolean(opts.composed),
- target: null,
- currentTarget: null,
- stopPropagationFlag: false,
- stopImmediatePropagationFlag: false,
- canceledFlag: false,
- inPassiveListenerFlag: false,
- dispatchFlag: false,
- timeStamp: Date.now(),
- })
- }
- /**
- * The type of this event.
- * @see https://dom.spec.whatwg.org/#dom-event-type
- */
- get type() {
- return $(this).type
- }
- /**
- * The event target of the current dispatching.
- * @see https://dom.spec.whatwg.org/#dom-event-target
- */
- get target() {
- return $(this).target
- }
- /**
- * The event target of the current dispatching.
- * @deprecated Use the `target` property instead.
- * @see https://dom.spec.whatwg.org/#dom-event-srcelement
- */
- get srcElement() {
- return $(this).target
- }
- /**
- * The event target of the current dispatching.
- * @see https://dom.spec.whatwg.org/#dom-event-currenttarget
- */
- get currentTarget() {
- return $(this).currentTarget
- }
- /**
- * The event target of the current dispatching.
- * This doesn't support node tree.
- * @see https://dom.spec.whatwg.org/#dom-event-composedpath
- */
- composedPath() {
- const currentTarget = $(this).currentTarget
- if (currentTarget) {
- return [currentTarget]
- }
- return []
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-none
- */
- get NONE() {
- return NONE
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-capturing_phase
- */
- get CAPTURING_PHASE() {
- return CAPTURING_PHASE
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-at_target
- */
- get AT_TARGET() {
- return AT_TARGET
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-bubbling_phase
- */
- get BUBBLING_PHASE() {
- return BUBBLING_PHASE
- }
- /**
- * The current event phase.
- * @see https://dom.spec.whatwg.org/#dom-event-eventphase
- */
- get eventPhase() {
- return $(this).dispatchFlag ? 2 : 0
- }
- /**
- * Stop event bubbling.
- * Because this shim doesn't support node tree, this merely changes the `cancelBubble` property value.
- * @see https://dom.spec.whatwg.org/#dom-event-stoppropagation
- */
- stopPropagation() {
- $(this).stopPropagationFlag = true
- }
- /**
- * `true` if event bubbling was stopped.
- * @deprecated
- * @see https://dom.spec.whatwg.org/#dom-event-cancelbubble
- */
- get cancelBubble() {
- return $(this).stopPropagationFlag
- }
- /**
- * Stop event bubbling if `true` is set.
- * @deprecated Use the `stopPropagation()` method instead.
- * @see https://dom.spec.whatwg.org/#dom-event-cancelbubble
- */
- set cancelBubble(value) {
- if (value) {
- $(this).stopPropagationFlag = true
- } else {
- FalsyWasAssignedToCancelBubble.warn()
- }
- }
- /**
- * Stop event bubbling and subsequent event listener callings.
- * @see https://dom.spec.whatwg.org/#dom-event-stopimmediatepropagation
- */
- stopImmediatePropagation() {
- const data = $(this)
- data.stopPropagationFlag = data.stopImmediatePropagationFlag = true
- }
- /**
- * `true` if this event will bubble.
- * @see https://dom.spec.whatwg.org/#dom-event-bubbles
- */
- get bubbles() {
- return $(this).bubbles
- }
- /**
- * `true` if this event can be canceled by the `preventDefault()` method.
- * @see https://dom.spec.whatwg.org/#dom-event-cancelable
- */
- get cancelable() {
- return $(this).cancelable
- }
- /**
- * `true` if the default behavior will act.
- * @deprecated Use the `defaultPrevented` proeprty instead.
- * @see https://dom.spec.whatwg.org/#dom-event-returnvalue
- */
- get returnValue() {
- return !$(this).canceledFlag
- }
- /**
- * Cancel the default behavior if `false` is set.
- * @deprecated Use the `preventDefault()` method instead.
- * @see https://dom.spec.whatwg.org/#dom-event-returnvalue
- */
- set returnValue(value) {
- if (!value) {
- setCancelFlag($(this))
- } else {
- TruthyWasAssignedToReturnValue.warn()
- }
- }
- /**
- * Cancel the default behavior.
- * @see https://dom.spec.whatwg.org/#dom-event-preventdefault
- */
- preventDefault() {
- setCancelFlag($(this))
- }
- /**
- * `true` if the default behavior was canceled.
- * @see https://dom.spec.whatwg.org/#dom-event-defaultprevented
- */
- get defaultPrevented() {
- return $(this).canceledFlag
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-composed
- */
- get composed() {
- return $(this).composed
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-istrusted
- */
- //istanbul ignore next
- get isTrusted() {
- return false
- }
- /**
- * @see https://dom.spec.whatwg.org/#dom-event-timestamp
- */
- get timeStamp() {
- return $(this).timeStamp
- }
- /**
- * @deprecated Don't use this method. The constructor did initialization.
- */
- initEvent(type, bubbles = false, cancelable = false) {
- const data = $(this)
- if (data.dispatchFlag) {
- InitEventWasCalledWhileDispatching.warn()
- return
- }
- internalDataMap.set(this, {
- ...data,
- type: String(type),
- bubbles: Boolean(bubbles),
- cancelable: Boolean(cancelable),
- target: null,
- currentTarget: null,
- stopPropagationFlag: false,
- stopImmediatePropagationFlag: false,
- canceledFlag: false,
- })
- }
-}
-//------------------------------------------------------------------------------
-// Helpers
-//------------------------------------------------------------------------------
-const NONE = 0
-const CAPTURING_PHASE = 1
-const AT_TARGET = 2
-const BUBBLING_PHASE = 3
-/**
- * Private data for event wrappers.
- */
-const internalDataMap = new WeakMap()
-/**
- * Get private data.
- * @param event The event object to get private data.
- * @param name The variable name to report.
- * @returns The private data of the event.
- */
-function $(event, name = 'this') {
- const retv = internalDataMap.get(event)
- assertType(
- retv != null,
- "'%s' must be an object that Event constructor created, but got another one: %o",
- name,
- event
- )
- return retv
-}
-/**
- * https://dom.spec.whatwg.org/#set-the-canceled-flag
- * @param data private data.
- */
-function setCancelFlag(data) {
- if (data.inPassiveListenerFlag) {
- CanceledInPassiveListener.warn()
- return
- }
- if (!data.cancelable) {
- NonCancelableEventWasCanceled.warn()
- return
- }
- data.canceledFlag = true
-}
-// Set enumerable
-Object.defineProperty(Event, 'NONE', { enumerable: true })
-Object.defineProperty(Event, 'CAPTURING_PHASE', { enumerable: true })
-Object.defineProperty(Event, 'AT_TARGET', { enumerable: true })
-Object.defineProperty(Event, 'BUBBLING_PHASE', { enumerable: true })
-const keys$1 = Object.getOwnPropertyNames(Event.prototype)
-for (let i = 0; i < keys$1.length; ++i) {
- if (keys$1[i] === 'constructor') {
- continue
- }
- Object.defineProperty(Event.prototype, keys$1[i], { enumerable: true })
-}
-
-/**
- * An implementation of `Event` interface, that wraps a given event object.
- * This class controls the internal state of `Event`.
- * @see https://dom.spec.whatwg.org/#interface-event
- */
-class EventWrapper extends Event {
- /**
- * Wrap a given event object to control states.
- * @param event The event-like object to wrap.
- */
- static wrap(event) {
- return new (getWrapperClassOf(event))(event)
- }
- constructor(event) {
- super(event.type, {
- bubbles: event.bubbles,
- cancelable: event.cancelable,
- composed: event.composed,
- })
- if (event.cancelBubble) {
- super.stopPropagation()
- }
- if (event.defaultPrevented) {
- super.preventDefault()
- }
- internalDataMap$1.set(this, { original: event })
- // Define accessors
- const keys = Object.keys(event)
- for (let i = 0; i < keys.length; ++i) {
- const key = keys[i]
- if (!(key in this)) {
- Object.defineProperty(this, key, defineRedirectDescriptor(event, key))
- }
- }
- }
- stopPropagation() {
- super.stopPropagation()
- const { original } = $$1(this)
- if ('stopPropagation' in original) {
- original.stopPropagation()
- }
- }
- get cancelBubble() {
- return super.cancelBubble
- }
- set cancelBubble(value) {
- super.cancelBubble = value
- const { original } = $$1(this)
- if ('cancelBubble' in original) {
- original.cancelBubble = value
- }
- }
- stopImmediatePropagation() {
- super.stopImmediatePropagation()
- const { original } = $$1(this)
- if ('stopImmediatePropagation' in original) {
- original.stopImmediatePropagation()
- }
- }
- get returnValue() {
- return super.returnValue
- }
- set returnValue(value) {
- super.returnValue = value
- const { original } = $$1(this)
- if ('returnValue' in original) {
- original.returnValue = value
- }
- }
- preventDefault() {
- super.preventDefault()
- const { original } = $$1(this)
- if ('preventDefault' in original) {
- original.preventDefault()
- }
- }
- get timeStamp() {
- const { original } = $$1(this)
- if ('timeStamp' in original) {
- return original.timeStamp
- }
- return super.timeStamp
- }
-}
-/**
- * Private data for event wrappers.
- */
-const internalDataMap$1 = new WeakMap()
-/**
- * Get private data.
- * @param event The event object to get private data.
- * @returns The private data of the event.
- */
-function $$1(event) {
- const retv = internalDataMap$1.get(event)
- assertType(retv != null, "'this' is expected an Event object, but got", event)
- return retv
-}
-/**
- * Cache for wrapper classes.
- * @type {WeakMap<Object, Function>}
- * @private
- */
-const wrapperClassCache = new WeakMap()
-// Make association for wrappers.
-wrapperClassCache.set(Object.prototype, EventWrapper)
-/**
- * Get the wrapper class of a given prototype.
- * @param originalEvent The event object to wrap.
- */
-function getWrapperClassOf(originalEvent) {
- const prototype = Object.getPrototypeOf(originalEvent)
- if (prototype == null) {
- return EventWrapper
- }
- let wrapper = wrapperClassCache.get(prototype)
- if (wrapper == null) {
- wrapper = defineWrapper(getWrapperClassOf(prototype), prototype)
- wrapperClassCache.set(prototype, wrapper)
- }
- return wrapper
-}
-/**
- * Define new wrapper class.
- * @param BaseEventWrapper The base wrapper class.
- * @param originalPrototype The prototype of the original event.
- */
-function defineWrapper(BaseEventWrapper, originalPrototype) {
- class CustomEventWrapper extends BaseEventWrapper {}
- const keys = Object.keys(originalPrototype)
- for (let i = 0; i < keys.length; ++i) {
- Object.defineProperty(
- CustomEventWrapper.prototype,
- keys[i],
- defineRedirectDescriptor(originalPrototype, keys[i])
- )
- }
- return CustomEventWrapper
-}
-/**
- * Get the property descriptor to redirect a given property.
- */
-function defineRedirectDescriptor(obj, key) {
- const d = Object.getOwnPropertyDescriptor(obj, key)
- return {
- get() {
- const original = $$1(this).original
- const value = original[key]
- if (typeof value === 'function') {
- return value.bind(original)
- }
- return value
- },
- set(value) {
- const original = $$1(this).original
- original[key] = value
- },
- configurable: d.configurable,
- enumerable: d.enumerable,
- }
-}
-
-/**
- * Create a new listener.
- * @param callback The callback function.
- * @param capture The capture flag.
- * @param passive The passive flag.
- * @param once The once flag.
- * @param signal The abort signal.
- * @param signalListener The abort event listener for the abort signal.
- */
-function createListener(
- callback,
- capture,
- passive,
- once,
- signal,
- signalListener
-) {
- return {
- callback,
- flags:
- (capture ? 1 /* Capture */ : 0) |
- (passive ? 2 /* Passive */ : 0) |
- (once ? 4 /* Once */ : 0),
- signal,
- signalListener,
- }
-}
-/**
- * Set the `removed` flag to the given listener.
- * @param listener The listener to check.
- */
-function setRemoved(listener) {
- listener.flags |= 8 /* Removed */
-}
-/**
- * Check if the given listener has the `capture` flag or not.
- * @param listener The listener to check.
- */
-function isCapture(listener) {
- return (listener.flags & 1) /* Capture */ === 1 /* Capture */
-}
-/**
- * Check if the given listener has the `passive` flag or not.
- * @param listener The listener to check.
- */
-function isPassive(listener) {
- return (listener.flags & 2) /* Passive */ === 2 /* Passive */
-}
-/**
- * Check if the given listener has the `once` flag or not.
- * @param listener The listener to check.
- */
-function isOnce(listener) {
- return (listener.flags & 4) /* Once */ === 4 /* Once */
-}
-/**
- * Check if the given listener has the `removed` flag or not.
- * @param listener The listener to check.
- */
-function isRemoved(listener) {
- return (listener.flags & 8) /* Removed */ === 8 /* Removed */
-}
-/**
- * Call an event listener.
- * @param listener The listener to call.
- * @param target The event target object for `thisArg`.
- * @param event The event object for the first argument.
- * @param attribute `true` if this callback is an event attribute handler.
- */
-function invokeCallback({ callback }, target, event) {
- try {
- if (typeof callback === 'function') {
- callback.call(target, event)
- } else if (typeof callback.handleEvent === 'function') {
- callback.handleEvent(event)
- }
- } catch (thrownError) {
- reportError(thrownError)
- }
-}
-
-/**
- * Find the index of given listener.
- * This returns `-1` if not found.
- * @param list The listener list.
- * @param callback The callback function to find.
- * @param capture The capture flag to find.
- */
-function findIndexOfListener({ listeners }, callback, capture) {
- for (let i = 0; i < listeners.length; ++i) {
- if (
- listeners[i].callback === callback &&
- isCapture(listeners[i]) === capture
- ) {
- return i
- }
- }
- return -1
-}
-/**
- * Add the given listener.
- * Does copy-on-write if needed.
- * @param list The listener list.
- * @param callback The callback function.
- * @param capture The capture flag.
- * @param passive The passive flag.
- * @param once The once flag.
- * @param signal The abort signal.
- */
-function addListener(list, callback, capture, passive, once, signal) {
- let signalListener
- if (signal) {
- signalListener = removeListener.bind(null, list, callback, capture)
- signal.addEventListener('abort', signalListener)
- }
- const listener = createListener(
- callback,
- capture,
- passive,
- once,
- signal,
- signalListener
- )
- if (list.cow) {
- list.cow = false
- list.listeners = [...list.listeners, listener]
- } else {
- list.listeners.push(listener)
- }
- return listener
-}
-/**
- * Remove a listener.
- * @param list The listener list.
- * @param callback The callback function to find.
- * @param capture The capture flag to find.
- * @returns `true` if it mutated the list directly.
- */
-function removeListener(list, callback, capture) {
- const index = findIndexOfListener(list, callback, capture)
- if (index !== -1) {
- return removeListenerAt(list, index)
- }
- return false
-}
-/**
- * Remove a listener.
- * @param list The listener list.
- * @param index The index of the target listener.
- * @param disableCow Disable copy-on-write if true.
- * @returns `true` if it mutated the `listeners` array directly.
- */
-function removeListenerAt(list, index, disableCow = false) {
- const listener = list.listeners[index]
- // Set the removed flag.
- setRemoved(listener)
- // Dispose the abort signal listener if exists.
- if (listener.signal) {
- listener.signal.removeEventListener('abort', listener.signalListener)
- }
- // Remove it from the array.
- if (list.cow && !disableCow) {
- list.cow = false
- list.listeners = list.listeners.filter((_, i) => i !== index)
- return false
- }
- list.listeners.splice(index, 1)
- return true
-}
-
-/**
- * Create a new `ListenerListMap` object.
- */
-function createListenerListMap() {
- return Object.create(null)
-}
-/**
- * Get the listener list of the given type.
- * If the listener list has not been initialized, initialize and return it.
- * @param listenerMap The listener list map.
- * @param type The event type to get.
- */
-function ensureListenerList(listenerMap, type) {
- var _a
- return (_a = listenerMap[type]) !== null && _a !== void 0
- ? _a
- : (listenerMap[type] = {
- attrCallback: undefined,
- attrListener: undefined,
- cow: false,
- listeners: [],
- })
-}
-
-/**
- * An implementation of the `EventTarget` interface.
- * @see https://dom.spec.whatwg.org/#eventtarget
- */
-class EventTarget {
- /**
- * Initialize this instance.
- */
- constructor() {
- internalDataMap$2.set(this, createListenerListMap())
- }
- // Implementation
- addEventListener(type0, callback0, options0) {
- const listenerMap = $$2(this)
- const { callback, capture, once, passive, signal, type } =
- normalizeAddOptions(type0, callback0, options0)
- if (
- callback == null ||
- (signal === null || signal === void 0 ? void 0 : signal.aborted)
- ) {
- return
- }
- const list = ensureListenerList(listenerMap, type)
- // Find existing listener.
- const i = findIndexOfListener(list, callback, capture)
- if (i !== -1) {
- warnDuplicate(list.listeners[i], passive, once, signal)
- return
- }
- // Add the new listener.
- addListener(list, callback, capture, passive, once, signal)
- }
- // Implementation
- removeEventListener(type0, callback0, options0) {
- const listenerMap = $$2(this)
- const { callback, capture, type } = normalizeOptions(
- type0,
- callback0,
- options0
- )
- const list = listenerMap[type]
- if (callback != null && list) {
- removeListener(list, callback, capture)
- }
- }
- // Implementation
- dispatchEvent(e) {
- const list = $$2(this)[String(e.type)]
- if (list == null) {
- return true
- }
- const event = e instanceof Event ? e : EventWrapper.wrap(e)
- const eventData = $(event, 'event')
- if (eventData.dispatchFlag) {
- throw new DOMException('This event has been in dispatching.')
- }
- eventData.dispatchFlag = true
- eventData.target = eventData.currentTarget = this
- if (!eventData.stopPropagationFlag) {
- const { cow, listeners } = list
- // Set copy-on-write flag.
- list.cow = true
- // Call listeners.
- for (let i = 0; i < listeners.length; ++i) {
- const listener = listeners[i]
- // Skip if removed.
- if (isRemoved(listener)) {
- continue
- }
- // Remove this listener if has the `once` flag.
- if (isOnce(listener) && removeListenerAt(list, i, !cow)) {
- // Because this listener was removed, the next index is the
- // same as the current value.
- i -= 1
- }
- // Call this listener with the `passive` flag.
- eventData.inPassiveListenerFlag = isPassive(listener)
- invokeCallback(listener, this, event)
- eventData.inPassiveListenerFlag = false
- // Stop if the `event.stopImmediatePropagation()` method was called.
- if (eventData.stopImmediatePropagationFlag) {
- break
- }
- }
- // Restore copy-on-write flag.
- if (!cow) {
- list.cow = false
- }
- }
- eventData.target = null
- eventData.currentTarget = null
- eventData.stopImmediatePropagationFlag = false
- eventData.stopPropagationFlag = false
- eventData.dispatchFlag = false
- return !eventData.canceledFlag
- }
-}
-/**
- * Internal data.
- */
-const internalDataMap$2 = new WeakMap()
-/**
- * Get private data.
- * @param target The event target object to get private data.
- * @param name The variable name to report.
- * @returns The private data of the event.
- */
-function $$2(target, name = 'this') {
- const retv = internalDataMap$2.get(target)
- assertType(
- retv != null,
- "'%s' must be an object that EventTarget constructor created, but got another one: %o",
- name,
- target
- )
- return retv
-}
-/**
- * Normalize options.
- * @param options The options to normalize.
- */
-function normalizeAddOptions(type, callback, options) {
- var _a
- assertCallback(callback)
- if (typeof options === 'object' && options !== null) {
- return {
- type: String(type),
- callback: callback !== null && callback !== void 0 ? callback : undefined,
- capture: Boolean(options.capture),
- passive: Boolean(options.passive),
- once: Boolean(options.once),
- signal: (_a = options.signal) !== null && _a !== void 0 ? _a : undefined,
- }
- }
- return {
- type: String(type),
- callback: callback !== null && callback !== void 0 ? callback : undefined,
- capture: Boolean(options),
- passive: false,
- once: false,
- signal: undefined,
- }
-}
-/**
- * Normalize options.
- * @param options The options to normalize.
- */
-function normalizeOptions(type, callback, options) {
- assertCallback(callback)
- if (typeof options === 'object' && options !== null) {
- return {
- type: String(type),
- callback: callback !== null && callback !== void 0 ? callback : undefined,
- capture: Boolean(options.capture),
- }
- }
- return {
- type: String(type),
- callback: callback !== null && callback !== void 0 ? callback : undefined,
- capture: Boolean(options),
- }
-}
-/**
- * Assert the type of 'callback' argument.
- * @param callback The callback to check.
- */
-function assertCallback(callback) {
- if (
- typeof callback === 'function' ||
- (typeof callback === 'object' &&
- callback !== null &&
- typeof callback.handleEvent === 'function')
- ) {
- return
- }
- if (callback == null || typeof callback === 'object') {
- InvalidEventListener.warn(callback)
- return
- }
- throw new TypeError(format(InvalidEventListener.message, [callback]))
-}
-/**
- * Print warning for duplicated.
- * @param listener The current listener that is duplicated.
- * @param passive The passive flag of the new duplicated listener.
- * @param once The once flag of the new duplicated listener.
- * @param signal The signal object of the new duplicated listener.
- */
-function warnDuplicate(listener, passive, once, signal) {
- EventListenerWasDuplicated.warn(
- isCapture(listener) ? 'capture' : 'bubble',
- listener.callback
- )
- if (isPassive(listener) !== passive) {
- OptionWasIgnored.warn('passive')
- }
- if (isOnce(listener) !== once) {
- OptionWasIgnored.warn('once')
- }
- if (listener.signal !== signal) {
- OptionWasIgnored.warn('signal')
- }
-}
-// Set enumerable
-const keys$1$1 = Object.getOwnPropertyNames(EventTarget.prototype)
-for (let i = 0; i < keys$1$1.length; ++i) {
- if (keys$1$1[i] === 'constructor') {
- continue
- }
- Object.defineProperty(EventTarget.prototype, keys$1$1[i], {
- enumerable: true,
- })
-}
-// Ensure `eventTarget instanceof window.EventTarget` is `true`.
-
-/**
- * Get the current value of a given event attribute.
- * @param target The `EventTarget` object to get.
- * @param type The event type.
- */
-function getEventAttributeValue(target, type) {
- var _a, _b
- const listMap = $$2(target, 'target')
- return (_b =
- (_a = listMap[type]) === null || _a === void 0
- ? void 0
- : _a.attrCallback) !== null && _b !== void 0
- ? _b
- : null
-}
-/**
- * Set an event listener to a given event attribute.
- * @param target The `EventTarget` object to set.
- * @param type The event type.
- * @param callback The event listener.
- */
-function setEventAttributeValue(target, type, callback) {
- if (callback != null && typeof callback !== 'function') {
- InvalidAttributeHandler.warn(callback)
- }
- if (
- typeof callback === 'function' ||
- (typeof callback === 'object' && callback !== null)
- ) {
- upsertEventAttributeListener(target, type, callback)
- } else {
- removeEventAttributeListener(target, type)
- }
-}
-//------------------------------------------------------------------------------
-// Helpers
-//------------------------------------------------------------------------------
-/**
- * Update or insert the given event attribute handler.
- * @param target The `EventTarget` object to set.
- * @param type The event type.
- * @param callback The event listener.
- */
-function upsertEventAttributeListener(target, type, callback) {
- const list = ensureListenerList($$2(target, 'target'), String(type))
- list.attrCallback = callback
- if (list.attrListener == null) {
- list.attrListener = addListener(
- list,
- defineEventAttributeCallback(list),
- false,
- false,
- false,
- undefined
- )
- }
-}
-/**
- * Remove the given event attribute handler.
- * @param target The `EventTarget` object to remove.
- * @param type The event type.
- * @param callback The event listener.
- */
-function removeEventAttributeListener(target, type) {
- const listMap = $$2(target, 'target')
- const list = listMap[String(type)]
- if (list && list.attrListener) {
- removeListener(list, list.attrListener.callback, false)
- list.attrCallback = list.attrListener = undefined
- }
-}
-/**
- * Define the callback function for the given listener list object.
- * It calls `attrCallback` property if the property value is a function.
- * @param list The `ListenerList` object.
- */
-function defineEventAttributeCallback(list) {
- return function (event) {
- const callback = list.attrCallback
- if (typeof callback === 'function') {
- callback.call(this, event)
- }
- }
-}
-/**
- * Define an event attribute.
- * @param target The `EventTarget` object to define an event attribute.
- * @param type The event type to define.
- * @param _eventClass Unused, but to infer `Event` class type.
- * @deprecated Use `getEventAttributeValue`/`setEventAttributeValue` pair on your derived class instead because of static analysis friendly.
- */
-function defineEventAttribute(target, type, _eventClass) {
- Object.defineProperty(target, `on${type}`, {
- get() {
- return getEventAttributeValue(this, type)
- },
- set(value) {
- setEventAttributeValue(this, type, value)
- },
- configurable: true,
- enumerable: true,
- })
-}
-
-/**
- * @author Toru Nagashima <https://github.com/mysticatea>
- * See LICENSE file in root directory for full license.
- */
-
-/**
- * The signal class.
- * @see https://dom.spec.whatwg.org/#abortsignal
- */
-class AbortSignal extends EventTarget {
- /**
- * AbortSignal cannot be constructed directly.
- */
- constructor() {
- super()
- throw new TypeError('AbortSignal cannot be constructed directly')
- }
- /**
- * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.
- */
- get aborted() {
- const aborted = abortedFlags.get(this)
- if (typeof aborted !== 'boolean') {
- throw new TypeError(
- `Expected 'this' to be an 'AbortSignal' object, but got ${
- this === null ? 'null' : typeof this
- }`
- )
- }
- return aborted
- }
-}
-defineEventAttribute(AbortSignal.prototype, 'abort')
-/**
- * Create an AbortSignal object.
- */
-function createAbortSignal() {
- const signal = Object.create(AbortSignal.prototype)
- EventTarget.call(signal)
- abortedFlags.set(signal, false)
- return signal
-}
-/**
- * Abort a given signal.
- */
-function abortSignal(signal) {
- if (abortedFlags.get(signal) !== false) {
- return
- }
- abortedFlags.set(signal, true)
- signal.dispatchEvent({ type: 'abort' })
-}
-/**
- * Aborted flag for each instances.
- */
-const abortedFlags = new WeakMap()
-// Properties should be enumerable.
-Object.defineProperties(AbortSignal.prototype, {
- aborted: { enumerable: true },
-})
-// `toString()` should return `"[object AbortSignal]"`
-if (typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol') {
- Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {
- configurable: true,
- value: 'AbortSignal',
- })
-}
-
-/**
- * The AbortController.
- * @see https://dom.spec.whatwg.org/#abortcontroller
- */
-class AbortController {
- /**
- * Initialize this controller.
- */
- constructor() {
- signals.set(this, createAbortSignal())
- }
- /**
- * Returns the `AbortSignal` object associated with this object.
- */
- get signal() {
- return getSignal(this)
- }
- /**
- * Abort and signal to any observers that the associated activity is to be aborted.
- */
- abort() {
- abortSignal(getSignal(this))
- }
-}
-/**
- * Associated signals.
- */
-const signals = new WeakMap()
-/**
- * Get the associated signal of a given controller.
- */
-function getSignal(controller) {
- const signal = signals.get(controller)
- if (signal == null) {
- throw new TypeError(
- `Expected 'this' to be an 'AbortController' object, but got ${
- controller === null ? 'null' : typeof controller
- }`
- )
- }
- return signal
-}
-// Properties should be enumerable.
-Object.defineProperties(AbortController.prototype, {
- signal: { enumerable: true },
- abort: { enumerable: true },
-})
-if (typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol') {
- Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {
- configurable: true,
- value: 'AbortController',
- })
-}
-
-const INTERNAL$2 = { tick: 0, pool: new Map() }
-function requestAnimationFrame(callback) {
- if (!INTERNAL$2.pool.size) {
- setTimeout$1(() => {
- const next = __performance_now()
- for (const func of INTERNAL$2.pool.values()) {
- func(next)
- }
- INTERNAL$2.pool.clear()
- }, 1000 / 16)
- }
- const func = __function_bind(callback, undefined)
- const tick = ++INTERNAL$2.tick
- INTERNAL$2.pool.set(tick, func)
- return tick
-}
-function cancelAnimationFrame(requestId) {
- const timeout = INTERNAL$2.pool.get(requestId)
- if (timeout) {
- clearTimeout$1(timeout)
- INTERNAL$2.pool.delete(requestId)
- }
-}
-
-function atob(data) {
- return Buffer.from(data, 'base64').toString('binary')
-}
-function btoa(data) {
- return Buffer.from(data, 'binary').toString('base64')
-}
-
-class Node extends EventTarget {
- append(...nodesOrDOMStrings) {}
- appendChild(childNode) {
- return childNode
- }
- after(...nodesOrDOMStrings) {}
- before(...nodesOrDOMStrings) {}
- prepend(...nodesOrDOMStrings) {}
- replaceChild(newChild, oldChild) {
- return oldChild
- }
- removeChild(childNode) {
- return childNode
- }
- get attributes() {
- return {}
- }
- get childNodes() {
- return []
- }
- get children() {
- return []
- }
- get ownerDocument() {
- return null
- }
- get nodeValue() {
- return ''
- }
- set nodeValue(value) {}
- get textContent() {
- return ''
- }
- set textContent(value) {}
- get previousElementSibling() {
- return null
- }
- get nextElementSibling() {
- return null
- }
- [Symbol.for('nodejs.util.inspect.custom')](depth, options) {
- return `${this.constructor.name}`
- }
-}
-class DocumentFragment extends Node {}
-class ShadowRoot extends DocumentFragment {
- get innerHTML() {
- return ''
- }
- set innerHTML(value) {}
-}
-const NodeFilter$1 = Object.assign(
- {
- NodeFilter() {
- throw new TypeError('Illegal constructor')
- },
- }.NodeFilter,
- {
- FILTER_ACCEPT: 1,
- FILTER_REJECT: 2,
- FILTER_SKIP: 3,
- SHOW_ALL: 4294967295,
- SHOW_ELEMENT: 1,
- SHOW_ATTRIBUTE: 2,
- SHOW_TEXT: 4,
- SHOW_CDATA_SECTION: 8,
- SHOW_ENTITY_REFERENCE: 16,
- SHOW_ENTITY: 32,
- SHOW_PROCESSING_INSTRUCTION: 64,
- SHOW_COMMENT: 128,
- SHOW_DOCUMENT: 256,
- SHOW_DOCUMENT_TYPE: 512,
- SHOW_DOCUMENT_FRAGMENT: 1024,
- SHOW_NOTATION: 2048,
- }
-)
-class NodeIterator$1 {
- nextNode() {
- return null
- }
- previousNode() {
- return null
- }
- get filter() {
- const internals = internalsOf(this, 'NodeIterator', 'filter')
- return internals.filter
- }
- get pointerBeforeReferenceNode() {
- const internals = internalsOf(
- this,
- 'NodeIterator',
- 'pointerBeforeReferenceNode'
- )
- return internals.pointerBeforeReferenceNode
- }
- get referenceNode() {
- const internals = internalsOf(this, 'NodeIterator', 'referenceNode')
- return internals.referenceNode
- }
- get root() {
- const internals = internalsOf(this, 'NodeIterator', 'root')
- return internals.root
- }
- get whatToShow() {
- const internals = internalsOf(this, 'NodeIterator', 'whatToShow')
- return internals.whatToShow
- }
-}
-allowStringTag(Node)
-allowStringTag(NodeIterator$1)
-allowStringTag(DocumentFragment)
-allowStringTag(ShadowRoot)
-
-class CharacterData extends Node {
- constructor(data) {
- INTERNALS$3.set(super(), {
- data: String(data),
- })
- }
- get data() {
- return internalsOf(this, 'CharacterData', 'data').data
- }
- get textContent() {
- return internalsOf(this, 'CharacterData', 'textContent').data
- }
-}
-class Comment extends CharacterData {}
-class Text extends CharacterData {
- get assignedSlot() {
- return null
- }
- get wholeText() {
- return internalsOf(this, 'CharacterData', 'textContent').data
- }
-}
-allowStringTag(CharacterData)
-allowStringTag(Text)
-allowStringTag(Comment)
-
-/**
- * web-streams-polyfill v3.2.0
- */
-/// <reference lib="es2015.symbol" />
-const SymbolPolyfill = Symbol
-
-/// <reference lib="dom" />
-function noop$1() {
- return undefined
-}
-
-function typeIsObject(x) {
- return (typeof x === 'object' && x !== null) || typeof x === 'function'
-}
-const rethrowAssertionErrorRejection = noop$1
-
-const originalPromise = Promise
-const originalPromiseThen = Promise.prototype.then
-const originalPromiseResolve = Promise.resolve.bind(originalPromise)
-const originalPromiseReject = Promise.reject.bind(originalPromise)
-function newPromise(executor) {
- return new originalPromise(executor)
-}
-function promiseResolvedWith(value) {
- return originalPromiseResolve(value)
-}
-function promiseRejectedWith(reason) {
- return originalPromiseReject(reason)
-}
-function PerformPromiseThen(promise, onFulfilled, onRejected) {
- // There doesn't appear to be any way to correctly emulate the behaviour from JavaScript, so this is just an
- // approximation.
- return originalPromiseThen.call(promise, onFulfilled, onRejected)
-}
-function uponPromise(promise, onFulfilled, onRejected) {
- PerformPromiseThen(
- PerformPromiseThen(promise, onFulfilled, onRejected),
- undefined,
- rethrowAssertionErrorRejection
- )
-}
-function uponFulfillment(promise, onFulfilled) {
- uponPromise(promise, onFulfilled)
-}
-function uponRejection(promise, onRejected) {
- uponPromise(promise, undefined, onRejected)
-}
-function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {
- return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler)
-}
-function setPromiseIsHandledToTrue(promise) {
- PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection)
-}
-function reflectCall(F, V, args) {
- if (typeof F !== 'function') {
- throw new TypeError('Argument is not a function')
- }
- return Function.prototype.apply.call(F, V, args)
-}
-function promiseCall(F, V, args) {
- try {
- return promiseResolvedWith(reflectCall(F, V, args))
- } catch (value) {
- return promiseRejectedWith(value)
- }
-}
-
-// Original from Chromium
-// https://chromium.googlesource.com/chromium/src/+/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/core/streams/SimpleQueue.js
-const QUEUE_MAX_ARRAY_SIZE = 16384
-/**
- * Simple queue structure.
- *
- * Avoids scalability issues with using a packed array directly by using
- * multiple arrays in a linked list and keeping the array size bounded.
- */
-class SimpleQueue {
- constructor() {
- this._cursor = 0
- this._size = 0
- // _front and _back are always defined.
- this._front = {
- _elements: [],
- _next: undefined,
- }
- this._back = this._front
- // The cursor is used to avoid calling Array.shift().
- // It contains the index of the front element of the array inside the
- // front-most node. It is always in the range [0, QUEUE_MAX_ARRAY_SIZE).
- this._cursor = 0
- // When there is only one node, size === elements.length - cursor.
- this._size = 0
- }
- get length() {
- return this._size
- }
- // For exception safety, this method is structured in order:
- // 1. Read state
- // 2. Calculate required state mutations
- // 3. Perform state mutations
- push(element) {
- const oldBack = this._back
- let newBack = oldBack
- if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {
- newBack = {
- _elements: [],
- _next: undefined,
- }
- }
- // push() is the mutation most likely to throw an exception, so it
- // goes first.
- oldBack._elements.push(element)
- if (newBack !== oldBack) {
- this._back = newBack
- oldBack._next = newBack
- }
- ++this._size
- }
- // Like push(), shift() follows the read -> calculate -> mutate pattern for
- // exception safety.
- shift() {
- // must not be called on an empty queue
- const oldFront = this._front
- let newFront = oldFront
- const oldCursor = this._cursor
- let newCursor = oldCursor + 1
- const elements = oldFront._elements
- const element = elements[oldCursor]
- if (newCursor === QUEUE_MAX_ARRAY_SIZE) {
- newFront = oldFront._next
- newCursor = 0
- }
- // No mutations before this point.
- --this._size
- this._cursor = newCursor
- if (oldFront !== newFront) {
- this._front = newFront
- }
- // Permit shifted element to be garbage collected.
- elements[oldCursor] = undefined
- return element
- }
- // The tricky thing about forEach() is that it can be called
- // re-entrantly. The queue may be mutated inside the callback. It is easy to
- // see that push() within the callback has no negative effects since the end
- // of the queue is checked for on every iteration. If shift() is called
- // repeatedly within the callback then the next iteration may return an
- // element that has been removed. In this case the callback will be called
- // with undefined values until we either "catch up" with elements that still
- // exist or reach the back of the queue.
- forEach(callback) {
- let i = this._cursor
- let node = this._front
- let elements = node._elements
- while (i !== elements.length || node._next !== undefined) {
- if (i === elements.length) {
- node = node._next
- elements = node._elements
- i = 0
- if (elements.length === 0) {
- break
- }
- }
- callback(elements[i])
- ++i
- }
- }
- // Return the element that would be returned if shift() was called now,
- // without modifying the queue.
- peek() {
- // must not be called on an empty queue
- const front = this._front
- const cursor = this._cursor
- return front._elements[cursor]
- }
-}
-
-function ReadableStreamReaderGenericInitialize(reader, stream) {
- reader._ownerReadableStream = stream
- stream._reader = reader
- if (stream._state === 'readable') {
- defaultReaderClosedPromiseInitialize(reader)
- } else if (stream._state === 'closed') {
- defaultReaderClosedPromiseInitializeAsResolved(reader)
- } else {
- defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError)
- }
-}
-// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state
-// check.
-function ReadableStreamReaderGenericCancel(reader, reason) {
- const stream = reader._ownerReadableStream
- return ReadableStreamCancel(stream, reason)
-}
-function ReadableStreamReaderGenericRelease(reader) {
- if (reader._ownerReadableStream._state === 'readable') {
- defaultReaderClosedPromiseReject(
- reader,
- new TypeError(
- `Reader was released and can no longer be used to monitor the stream's closedness`
- )
- )
- } else {
- defaultReaderClosedPromiseResetToRejected(
- reader,
- new TypeError(
- `Reader was released and can no longer be used to monitor the stream's closedness`
- )
- )
- }
- reader._ownerReadableStream._reader = undefined
- reader._ownerReadableStream = undefined
-}
-// Helper functions for the readers.
-function readerLockException(name) {
- return new TypeError('Cannot ' + name + ' a stream using a released reader')
-}
-// Helper functions for the ReadableStreamDefaultReader.
-function defaultReaderClosedPromiseInitialize(reader) {
- reader._closedPromise = newPromise((resolve, reject) => {
- reader._closedPromise_resolve = resolve
- reader._closedPromise_reject = reject
- })
-}
-function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {
- defaultReaderClosedPromiseInitialize(reader)
- defaultReaderClosedPromiseReject(reader, reason)
-}
-function defaultReaderClosedPromiseInitializeAsResolved(reader) {
- defaultReaderClosedPromiseInitialize(reader)
- defaultReaderClosedPromiseResolve(reader)
-}
-function defaultReaderClosedPromiseReject(reader, reason) {
- if (reader._closedPromise_reject === undefined) {
- return
- }
- setPromiseIsHandledToTrue(reader._closedPromise)
- reader._closedPromise_reject(reason)
- reader._closedPromise_resolve = undefined
- reader._closedPromise_reject = undefined
-}
-function defaultReaderClosedPromiseResetToRejected(reader, reason) {
- defaultReaderClosedPromiseInitializeAsRejected(reader, reason)
-}
-function defaultReaderClosedPromiseResolve(reader) {
- if (reader._closedPromise_resolve === undefined) {
- return
- }
- reader._closedPromise_resolve(undefined)
- reader._closedPromise_resolve = undefined
- reader._closedPromise_reject = undefined
-}
-
-const AbortSteps = SymbolPolyfill('[[AbortSteps]]')
-const ErrorSteps = SymbolPolyfill('[[ErrorSteps]]')
-const CancelSteps = SymbolPolyfill('[[CancelSteps]]')
-const PullSteps = SymbolPolyfill('[[PullSteps]]')
-
-/// <reference lib="es2015.core" />
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill
-const NumberIsFinite =
- Number.isFinite ||
- function (x) {
- return typeof x === 'number' && isFinite(x)
- }
-
-/// <reference lib="es2015.core" />
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc#Polyfill
-const MathTrunc =
- Math.trunc ||
- function (v) {
- return v < 0 ? Math.ceil(v) : Math.floor(v)
- }
-
-// https://heycam.github.io/webidl/#idl-dictionaries
-function isDictionary(x) {
- return typeof x === 'object' || typeof x === 'function'
-}
-function assertDictionary(obj, context) {
- if (obj !== undefined && !isDictionary(obj)) {
- throw new TypeError(`${context} is not an object.`)
- }
-}
-// https://heycam.github.io/webidl/#idl-callback-functions
-function assertFunction(x, context) {
- if (typeof x !== 'function') {
- throw new TypeError(`${context} is not a function.`)
- }
-}
-// https://heycam.github.io/webidl/#idl-object
-function isObject(x) {
- return (typeof x === 'object' && x !== null) || typeof x === 'function'
-}
-function assertObject(x, context) {
- if (!isObject(x)) {
- throw new TypeError(`${context} is not an object.`)
- }
-}
-function assertRequiredArgument(x, position, context) {
- if (x === undefined) {
- throw new TypeError(`Parameter ${position} is required in '${context}'.`)
- }
-}
-function assertRequiredField(x, field, context) {
- if (x === undefined) {
- throw new TypeError(`${field} is required in '${context}'.`)
- }
-}
-// https://heycam.github.io/webidl/#idl-unrestricted-double
-function convertUnrestrictedDouble(value) {
- return Number(value)
-}
-function censorNegativeZero(x) {
- return x === 0 ? 0 : x
-}
-function integerPart(x) {
- return censorNegativeZero(MathTrunc(x))
-}
-// https://heycam.github.io/webidl/#idl-unsigned-long-long
-function convertUnsignedLongLongWithEnforceRange(value, context) {
- const lowerBound = 0
- const upperBound = Number.MAX_SAFE_INTEGER
- let x = Number(value)
- x = censorNegativeZero(x)
- if (!NumberIsFinite(x)) {
- throw new TypeError(`${context} is not a finite number`)
- }
- x = integerPart(x)
- if (x < lowerBound || x > upperBound) {
- throw new TypeError(
- `${context} is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`
- )
- }
- if (!NumberIsFinite(x) || x === 0) {
- return 0
- }
- // TODO Use BigInt if supported?
- // let xBigInt = BigInt(integerPart(x));
- // xBigInt = BigInt.asUintN(64, xBigInt);
- // return Number(xBigInt);
- return x
-}
-
-function assertReadableStream(x, context) {
- if (!IsReadableStream(x)) {
- throw new TypeError(`${context} is not a ReadableStream.`)
- }
-}
-
-// Abstract operations for the ReadableStream.
-function AcquireReadableStreamDefaultReader(stream) {
- return new ReadableStreamDefaultReader(stream)
-}
-// ReadableStream API exposed for controllers.
-function ReadableStreamAddReadRequest(stream, readRequest) {
- stream._reader._readRequests.push(readRequest)
-}
-function ReadableStreamFulfillReadRequest(stream, chunk, done) {
- const reader = stream._reader
- const readRequest = reader._readRequests.shift()
- if (done) {
- readRequest._closeSteps()
- } else {
- readRequest._chunkSteps(chunk)
- }
-}
-function ReadableStreamGetNumReadRequests(stream) {
- return stream._reader._readRequests.length
-}
-function ReadableStreamHasDefaultReader(stream) {
- const reader = stream._reader
- if (reader === undefined) {
- return false
- }
- if (!IsReadableStreamDefaultReader(reader)) {
- return false
- }
- return true
-}
-/**
- * A default reader vended by a {@link ReadableStream}.
- *
- * @public
- */
-class ReadableStreamDefaultReader {
- constructor(stream) {
- assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader')
- assertReadableStream(stream, 'First parameter')
- if (IsReadableStreamLocked(stream)) {
- throw new TypeError(
- 'This stream has already been locked for exclusive reading by another reader'
- )
- }
- ReadableStreamReaderGenericInitialize(this, stream)
- this._readRequests = new SimpleQueue()
- }
- /**
- * Returns a promise that will be fulfilled when the stream becomes closed,
- * or rejected if the stream ever errors or the reader's lock is released before the stream finishes closing.
- */
- get closed() {
- if (!IsReadableStreamDefaultReader(this)) {
- return promiseRejectedWith(defaultReaderBrandCheckException('closed'))
- }
- return this._closedPromise
- }
- /**
- * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.
- */
- cancel(reason = undefined) {
- if (!IsReadableStreamDefaultReader(this)) {
- return promiseRejectedWith(defaultReaderBrandCheckException('cancel'))
- }
- if (this._ownerReadableStream === undefined) {
- return promiseRejectedWith(readerLockException('cancel'))
- }
- return ReadableStreamReaderGenericCancel(this, reason)
- }
- /**
- * Returns a promise that allows access to the next chunk from the stream's internal queue, if available.
- *
- * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.
- */
- read() {
- if (!IsReadableStreamDefaultReader(this)) {
- return promiseRejectedWith(defaultReaderBrandCheckException('read'))
- }
- if (this._ownerReadableStream === undefined) {
- return promiseRejectedWith(readerLockException('read from'))
- }
- let resolvePromise
- let rejectPromise
- const promise = newPromise((resolve, reject) => {
- resolvePromise = resolve
- rejectPromise = reject
- })
- const readRequest = {
- _chunkSteps: (chunk) => resolvePromise({ value: chunk, done: false }),
- _closeSteps: () => resolvePromise({ value: undefined, done: true }),
- _errorSteps: (e) => rejectPromise(e),
- }
- ReadableStreamDefaultReaderRead(this, readRequest)
- return promise
- }
- /**
- * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.
- * If the associated stream is errored when the lock is released, the reader will appear errored in the same way
- * from now on; otherwise, the reader will appear closed.
- *
- * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by
- * the reader's {@link ReadableStreamDefaultReader.read | read()} method has not yet been settled. Attempting to
- * do so will throw a `TypeError` and leave the reader locked to the stream.
- */
- releaseLock() {
- if (!IsReadableStreamDefaultReader(this)) {
- throw defaultReaderBrandCheckException('releaseLock')
- }
- if (this._ownerReadableStream === undefined) {
- return
- }
- if (this._readRequests.length > 0) {
- throw new TypeError(
- 'Tried to release a reader lock when that reader has pending read() calls un-settled'
- )
- }
- ReadableStreamReaderGenericRelease(this)
- }
-}
-Object.defineProperties(ReadableStreamDefaultReader.prototype, {
- cancel: { enumerable: true },
- read: { enumerable: true },
- releaseLock: { enumerable: true },
- closed: { enumerable: true },
-})
-// Abstract operations for the readers.
-function IsReadableStreamDefaultReader(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {
- return false
- }
- return x instanceof ReadableStreamDefaultReader
-}
-function ReadableStreamDefaultReaderRead(reader, readRequest) {
- const stream = reader._ownerReadableStream
- stream._disturbed = true
- if (stream._state === 'closed') {
- readRequest._closeSteps()
- } else if (stream._state === 'errored') {
- readRequest._errorSteps(stream._storedError)
- } else {
- stream._readableStreamController[PullSteps](readRequest)
- }
-}
-// Helper functions for the ReadableStreamDefaultReader.
-function defaultReaderBrandCheckException(name) {
- return new TypeError(
- `ReadableStreamDefaultReader.prototype.${name} can only be used on a ReadableStreamDefaultReader`
- )
-}
-
-/// <reference lib="es2018.asynciterable" />
-class ReadableStreamAsyncIteratorImpl {
- constructor(reader, preventCancel) {
- this._ongoingPromise = undefined
- this._isFinished = false
- this._reader = reader
- this._preventCancel = preventCancel
- }
- next() {
- const nextSteps = () => this._nextSteps()
- this._ongoingPromise = this._ongoingPromise
- ? transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps)
- : nextSteps()
- return this._ongoingPromise
- }
- return(value) {
- const returnSteps = () => this._returnSteps(value)
- return this._ongoingPromise
- ? transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps)
- : returnSteps()
- }
- _nextSteps() {
- if (this._isFinished) {
- return Promise.resolve({ value: undefined, done: true })
- }
- const reader = this._reader
- if (reader._ownerReadableStream === undefined) {
- return promiseRejectedWith(readerLockException('iterate'))
- }
- let resolvePromise
- let rejectPromise
- const promise = newPromise((resolve, reject) => {
- resolvePromise = resolve
- rejectPromise = reject
- })
- const readRequest = {
- _chunkSteps: (chunk) => {
- this._ongoingPromise = undefined
- // This needs to be delayed by one microtask, otherwise we stop pulling too early which breaks a test.
- // FIXME Is this a bug in the specification, or in the test?
- queueMicrotask(() => resolvePromise({ value: chunk, done: false }))
- },
- _closeSteps: () => {
- this._ongoingPromise = undefined
- this._isFinished = true
- ReadableStreamReaderGenericRelease(reader)
- resolvePromise({ value: undefined, done: true })
- },
- _errorSteps: (reason) => {
- this._ongoingPromise = undefined
- this._isFinished = true
- ReadableStreamReaderGenericRelease(reader)
- rejectPromise(reason)
- },
- }
- ReadableStreamDefaultReaderRead(reader, readRequest)
- return promise
- }
- _returnSteps(value) {
- if (this._isFinished) {
- return Promise.resolve({ value, done: true })
- }
- this._isFinished = true
- const reader = this._reader
- if (reader._ownerReadableStream === undefined) {
- return promiseRejectedWith(readerLockException('finish iterating'))
- }
- if (!this._preventCancel) {
- const result = ReadableStreamReaderGenericCancel(reader, value)
- ReadableStreamReaderGenericRelease(reader)
- return transformPromiseWith(result, () => ({ value, done: true }))
- }
- ReadableStreamReaderGenericRelease(reader)
- return promiseResolvedWith({ value, done: true })
- }
-}
-const ReadableStreamAsyncIteratorPrototype = {
- next() {
- if (!IsReadableStreamAsyncIterator(this)) {
- return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'))
- }
- return this._asyncIteratorImpl.next()
- },
- return(value) {
- if (!IsReadableStreamAsyncIterator(this)) {
- return promiseRejectedWith(
- streamAsyncIteratorBrandCheckException('return')
- )
- }
- return this._asyncIteratorImpl.return(value)
- },
-}
-// Abstract operations for the ReadableStream.
-function AcquireReadableStreamAsyncIterator(stream, preventCancel) {
- const reader = AcquireReadableStreamDefaultReader(stream)
- const impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel)
- const iterator = Object.create(ReadableStreamAsyncIteratorPrototype)
- iterator._asyncIteratorImpl = impl
- return iterator
-}
-function IsReadableStreamAsyncIterator(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) {
- return false
- }
- try {
- // noinspection SuspiciousTypeOfGuard
- return x._asyncIteratorImpl instanceof ReadableStreamAsyncIteratorImpl
- } catch (_a) {
- return false
- }
-}
-// Helper functions for the ReadableStream.
-function streamAsyncIteratorBrandCheckException(name) {
- return new TypeError(
- `ReadableStreamAsyncIterator.${name} can only be used on a ReadableSteamAsyncIterator`
- )
-}
-
-/// <reference lib="es2015.core" />
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Polyfill
-const NumberIsNaN =
- Number.isNaN ||
- function (x) {
- // eslint-disable-next-line no-self-compare
- return x !== x
- }
-
-function CreateArrayFromList(elements) {
- // We use arrays to represent lists, so this is basically a no-op.
- // Do a slice though just in case we happen to depend on the unique-ness.
- return elements.slice()
-}
-function CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) {
- new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset)
-}
-// Not implemented correctly
-function TransferArrayBuffer(O) {
- return O
-}
-// Not implemented correctly
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-function IsDetachedBuffer(O) {
- return false
-}
-function ArrayBufferSlice(buffer, begin, end) {
- // ArrayBuffer.prototype.slice is not available on IE10
- // https://www.caniuse.com/mdn-javascript_builtins_arraybuffer_slice
- if (buffer.slice) {
- return buffer.slice(begin, end)
- }
- const length = end - begin
- const slice = new ArrayBuffer(length)
- CopyDataBlockBytes(slice, 0, buffer, begin, length)
- return slice
-}
-
-function IsNonNegativeNumber(v) {
- if (typeof v !== 'number') {
- return false
- }
- if (NumberIsNaN(v)) {
- return false
- }
- if (v < 0) {
- return false
- }
- return true
-}
-function CloneAsUint8Array(O) {
- const buffer = ArrayBufferSlice(
- O.buffer,
- O.byteOffset,
- O.byteOffset + O.byteLength
- )
- return new Uint8Array(buffer)
-}
-
-function DequeueValue(container) {
- const pair = container._queue.shift()
- container._queueTotalSize -= pair.size
- if (container._queueTotalSize < 0) {
- container._queueTotalSize = 0
- }
- return pair.value
-}
-function EnqueueValueWithSize(container, value, size) {
- if (!IsNonNegativeNumber(size) || size === Infinity) {
- throw new RangeError('Size must be a finite, non-NaN, non-negative number.')
- }
- container._queue.push({ value, size })
- container._queueTotalSize += size
-}
-function PeekQueueValue(container) {
- const pair = container._queue.peek()
- return pair.value
-}
-function ResetQueue(container) {
- container._queue = new SimpleQueue()
- container._queueTotalSize = 0
-}
-
-/**
- * A pull-into request in a {@link ReadableByteStreamController}.
- *
- * @public
- */
-class ReadableStreamBYOBRequest {
- constructor() {
- throw new TypeError('Illegal constructor')
- }
- /**
- * Returns the view for writing in to, or `null` if the BYOB request has already been responded to.
- */
- get view() {
- if (!IsReadableStreamBYOBRequest(this)) {
- throw byobRequestBrandCheckException('view')
- }
- return this._view
- }
- respond(bytesWritten) {
- if (!IsReadableStreamBYOBRequest(this)) {
- throw byobRequestBrandCheckException('respond')
- }
- assertRequiredArgument(bytesWritten, 1, 'respond')
- bytesWritten = convertUnsignedLongLongWithEnforceRange(
- bytesWritten,
- 'First parameter'
- )
- if (this._associatedReadableByteStreamController === undefined) {
- throw new TypeError('This BYOB request has been invalidated')
- }
- if (IsDetachedBuffer(this._view.buffer));
- ReadableByteStreamControllerRespond(
- this._associatedReadableByteStreamController,
- bytesWritten
- )
- }
- respondWithNewView(view) {
- if (!IsReadableStreamBYOBRequest(this)) {
- throw byobRequestBrandCheckException('respondWithNewView')
- }
- assertRequiredArgument(view, 1, 'respondWithNewView')
- if (!ArrayBuffer.isView(view)) {
- throw new TypeError('You can only respond with array buffer views')
- }
- if (this._associatedReadableByteStreamController === undefined) {
- throw new TypeError('This BYOB request has been invalidated')
- }
- if (IsDetachedBuffer(view.buffer));
- ReadableByteStreamControllerRespondWithNewView(
- this._associatedReadableByteStreamController,
- view
- )
- }
-}
-Object.defineProperties(ReadableStreamBYOBRequest.prototype, {
- respond: { enumerable: true },
- respondWithNewView: { enumerable: true },
- view: { enumerable: true },
-})
-/**
- * Allows control of a {@link ReadableStream | readable byte stream}'s state and internal queue.
- *
- * @public
- */
-class ReadableByteStreamController {
- constructor() {
- throw new TypeError('Illegal constructor')
- }
- /**
- * Returns the current BYOB pull request, or `null` if there isn't one.
- */
- get byobRequest() {
- if (!IsReadableByteStreamController(this)) {
- throw byteStreamControllerBrandCheckException('byobRequest')
- }
- return ReadableByteStreamControllerGetBYOBRequest(this)
- }
- /**
- * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is
- * over-full. An underlying byte source ought to use this information to determine when and how to apply backpressure.
- */
- get desiredSize() {
- if (!IsReadableByteStreamController(this)) {
- throw byteStreamControllerBrandCheckException('desiredSize')
- }
- return ReadableByteStreamControllerGetDesiredSize(this)
- }
- /**
- * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from
- * the stream, but once those are read, the stream will become closed.
- */
- close() {
- if (!IsReadableByteStreamController(this)) {
- throw byteStreamControllerBrandCheckException('close')
- }
- if (this._closeRequested) {
- throw new TypeError(
- 'The stream has already been closed; do not close it again!'
- )
- }
- const state = this._controlledReadableByteStream._state
- if (state !== 'readable') {
- throw new TypeError(
- `The stream (in ${state} state) is not in the readable state and cannot be closed`
- )
- }
- ReadableByteStreamControllerClose(this)
- }
- enqueue(chunk) {
- if (!IsReadableByteStreamController(this)) {
- throw byteStreamControllerBrandCheckException('enqueue')
- }
- assertRequiredArgument(chunk, 1, 'enqueue')
- if (!ArrayBuffer.isView(chunk)) {
- throw new TypeError('chunk must be an array buffer view')
- }
- if (chunk.byteLength === 0) {
- throw new TypeError('chunk must have non-zero byteLength')
- }
- if (chunk.buffer.byteLength === 0) {
- throw new TypeError(`chunk's buffer must have non-zero byteLength`)
- }
- if (this._closeRequested) {
- throw new TypeError('stream is closed or draining')
- }
- const state = this._controlledReadableByteStream._state
- if (state !== 'readable') {
- throw new TypeError(
- `The stream (in ${state} state) is not in the readable state and cannot be enqueued to`
- )
- }
- ReadableByteStreamControllerEnqueue(this, chunk)
- }
- /**
- * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.
- */
- error(e = undefined) {
- if (!IsReadableByteStreamController(this)) {
- throw byteStreamControllerBrandCheckException('error')
- }
- ReadableByteStreamControllerError(this, e)
- }
- /** @internal */
- [CancelSteps](reason) {
- ReadableByteStreamControllerClearPendingPullIntos(this)
- ResetQueue(this)
- const result = this._cancelAlgorithm(reason)
- ReadableByteStreamControllerClearAlgorithms(this)
- return result
- }
- /** @internal */
- [PullSteps](readRequest) {
- const stream = this._controlledReadableByteStream
- if (this._queueTotalSize > 0) {
- const entry = this._queue.shift()
- this._queueTotalSize -= entry.byteLength
- ReadableByteStreamControllerHandleQueueDrain(this)
- const view = new Uint8Array(
- entry.buffer,
- entry.byteOffset,
- entry.byteLength
- )
- readRequest._chunkSteps(view)
- return
- }
- const autoAllocateChunkSize = this._autoAllocateChunkSize
- if (autoAllocateChunkSize !== undefined) {
- let buffer
- try {
- buffer = new ArrayBuffer(autoAllocateChunkSize)
- } catch (bufferE) {
- readRequest._errorSteps(bufferE)
- return
- }
- const pullIntoDescriptor = {
- buffer,
- bufferByteLength: autoAllocateChunkSize,
- byteOffset: 0,
- byteLength: autoAllocateChunkSize,
- bytesFilled: 0,
- elementSize: 1,
- viewConstructor: Uint8Array,
- readerType: 'default',
- }
- this._pendingPullIntos.push(pullIntoDescriptor)
- }
- ReadableStreamAddReadRequest(stream, readRequest)
- ReadableByteStreamControllerCallPullIfNeeded(this)
- }
-}
-Object.defineProperties(ReadableByteStreamController.prototype, {
- close: { enumerable: true },
- enqueue: { enumerable: true },
- error: { enumerable: true },
- byobRequest: { enumerable: true },
- desiredSize: { enumerable: true },
-})
-// Abstract operations for the ReadableByteStreamController.
-function IsReadableByteStreamController(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (
- !Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')
- ) {
- return false
- }
- return x instanceof ReadableByteStreamController
-}
-function IsReadableStreamBYOBRequest(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (
- !Object.prototype.hasOwnProperty.call(
- x,
- '_associatedReadableByteStreamController'
- )
- ) {
- return false
- }
- return x instanceof ReadableStreamBYOBRequest
-}
-function ReadableByteStreamControllerCallPullIfNeeded(controller) {
- const shouldPull = ReadableByteStreamControllerShouldCallPull(controller)
- if (!shouldPull) {
- return
- }
- if (controller._pulling) {
- controller._pullAgain = true
- return
- }
- controller._pulling = true
- // TODO: Test controller argument
- const pullPromise = controller._pullAlgorithm()
- uponPromise(
- pullPromise,
- () => {
- controller._pulling = false
- if (controller._pullAgain) {
- controller._pullAgain = false
- ReadableByteStreamControllerCallPullIfNeeded(controller)
- }
- },
- (e) => {
- ReadableByteStreamControllerError(controller, e)
- }
- )
-}
-function ReadableByteStreamControllerClearPendingPullIntos(controller) {
- ReadableByteStreamControllerInvalidateBYOBRequest(controller)
- controller._pendingPullIntos = new SimpleQueue()
-}
-function ReadableByteStreamControllerCommitPullIntoDescriptor(
- stream,
- pullIntoDescriptor
-) {
- let done = false
- if (stream._state === 'closed') {
- done = true
- }
- const filledView =
- ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor)
- if (pullIntoDescriptor.readerType === 'default') {
- ReadableStreamFulfillReadRequest(stream, filledView, done)
- } else {
- ReadableStreamFulfillReadIntoRequest(stream, filledView, done)
- }
-}
-function ReadableByteStreamControllerConvertPullIntoDescriptor(
- pullIntoDescriptor
-) {
- const bytesFilled = pullIntoDescriptor.bytesFilled
- const elementSize = pullIntoDescriptor.elementSize
- return new pullIntoDescriptor.viewConstructor(
- pullIntoDescriptor.buffer,
- pullIntoDescriptor.byteOffset,
- bytesFilled / elementSize
- )
-}
-function ReadableByteStreamControllerEnqueueChunkToQueue(
- controller,
- buffer,
- byteOffset,
- byteLength
-) {
- controller._queue.push({ buffer, byteOffset, byteLength })
- controller._queueTotalSize += byteLength
-}
-function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(
- controller,
- pullIntoDescriptor
-) {
- const elementSize = pullIntoDescriptor.elementSize
- const currentAlignedBytes =
- pullIntoDescriptor.bytesFilled -
- (pullIntoDescriptor.bytesFilled % elementSize)
- const maxBytesToCopy = Math.min(
- controller._queueTotalSize,
- pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled
- )
- const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy
- const maxAlignedBytes = maxBytesFilled - (maxBytesFilled % elementSize)
- let totalBytesToCopyRemaining = maxBytesToCopy
- let ready = false
- if (maxAlignedBytes > currentAlignedBytes) {
- totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled
- ready = true
- }
- const queue = controller._queue
- while (totalBytesToCopyRemaining > 0) {
- const headOfQueue = queue.peek()
- const bytesToCopy = Math.min(
- totalBytesToCopyRemaining,
- headOfQueue.byteLength
- )
- const destStart =
- pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled
- CopyDataBlockBytes(
- pullIntoDescriptor.buffer,
- destStart,
- headOfQueue.buffer,
- headOfQueue.byteOffset,
- bytesToCopy
- )
- if (headOfQueue.byteLength === bytesToCopy) {
- queue.shift()
- } else {
- headOfQueue.byteOffset += bytesToCopy
- headOfQueue.byteLength -= bytesToCopy
- }
- controller._queueTotalSize -= bytesToCopy
- ReadableByteStreamControllerFillHeadPullIntoDescriptor(
- controller,
- bytesToCopy,
- pullIntoDescriptor
- )
- totalBytesToCopyRemaining -= bytesToCopy
- }
- return ready
-}
-function ReadableByteStreamControllerFillHeadPullIntoDescriptor(
- controller,
- size,
- pullIntoDescriptor
-) {
- pullIntoDescriptor.bytesFilled += size
-}
-function ReadableByteStreamControllerHandleQueueDrain(controller) {
- if (controller._queueTotalSize === 0 && controller._closeRequested) {
- ReadableByteStreamControllerClearAlgorithms(controller)
- ReadableStreamClose(controller._controlledReadableByteStream)
- } else {
- ReadableByteStreamControllerCallPullIfNeeded(controller)
- }
-}
-function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {
- if (controller._byobRequest === null) {
- return
- }
- controller._byobRequest._associatedReadableByteStreamController = undefined
- controller._byobRequest._view = null
- controller._byobRequest = null
-}
-function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(
- controller
-) {
- while (controller._pendingPullIntos.length > 0) {
- if (controller._queueTotalSize === 0) {
- return
- }
- const pullIntoDescriptor = controller._pendingPullIntos.peek()
- if (
- ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(
- controller,
- pullIntoDescriptor
- )
- ) {
- ReadableByteStreamControllerShiftPendingPullInto(controller)
- ReadableByteStreamControllerCommitPullIntoDescriptor(
- controller._controlledReadableByteStream,
- pullIntoDescriptor
- )
- }
- }
-}
-function ReadableByteStreamControllerPullInto(
- controller,
- view,
- readIntoRequest
-) {
- const stream = controller._controlledReadableByteStream
- let elementSize = 1
- if (view.constructor !== DataView) {
- elementSize = view.constructor.BYTES_PER_ELEMENT
- }
- const ctor = view.constructor
- // try {
- const buffer = TransferArrayBuffer(view.buffer)
- // } catch (e) {
- // readIntoRequest._errorSteps(e);
- // return;
- // }
- const pullIntoDescriptor = {
- buffer,
- bufferByteLength: buffer.byteLength,
- byteOffset: view.byteOffset,
- byteLength: view.byteLength,
- bytesFilled: 0,
- elementSize,
- viewConstructor: ctor,
- readerType: 'byob',
- }
- if (controller._pendingPullIntos.length > 0) {
- controller._pendingPullIntos.push(pullIntoDescriptor)
- // No ReadableByteStreamControllerCallPullIfNeeded() call since:
- // - No change happens on desiredSize
- // - The source has already been notified of that there's at least 1 pending read(view)
- ReadableStreamAddReadIntoRequest(stream, readIntoRequest)
- return
- }
- if (stream._state === 'closed') {
- const emptyView = new ctor(
- pullIntoDescriptor.buffer,
- pullIntoDescriptor.byteOffset,
- 0
- )
- readIntoRequest._closeSteps(emptyView)
- return
- }
- if (controller._queueTotalSize > 0) {
- if (
- ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(
- controller,
- pullIntoDescriptor
- )
- ) {
- const filledView =
- ReadableByteStreamControllerConvertPullIntoDescriptor(
- pullIntoDescriptor
- )
- ReadableByteStreamControllerHandleQueueDrain(controller)
- readIntoRequest._chunkSteps(filledView)
- return
- }
- if (controller._closeRequested) {
- const e = new TypeError(
- 'Insufficient bytes to fill elements in the given buffer'
- )
- ReadableByteStreamControllerError(controller, e)
- readIntoRequest._errorSteps(e)
- return
- }
- }
- controller._pendingPullIntos.push(pullIntoDescriptor)
- ReadableStreamAddReadIntoRequest(stream, readIntoRequest)
- ReadableByteStreamControllerCallPullIfNeeded(controller)
-}
-function ReadableByteStreamControllerRespondInClosedState(
- controller,
- firstDescriptor
-) {
- const stream = controller._controlledReadableByteStream
- if (ReadableStreamHasBYOBReader(stream)) {
- while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {
- const pullIntoDescriptor =
- ReadableByteStreamControllerShiftPendingPullInto(controller)
- ReadableByteStreamControllerCommitPullIntoDescriptor(
- stream,
- pullIntoDescriptor
- )
- }
- }
-}
-function ReadableByteStreamControllerRespondInReadableState(
- controller,
- bytesWritten,
- pullIntoDescriptor
-) {
- ReadableByteStreamControllerFillHeadPullIntoDescriptor(
- controller,
- bytesWritten,
- pullIntoDescriptor
- )
- if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {
- return
- }
- ReadableByteStreamControllerShiftPendingPullInto(controller)
- const remainderSize =
- pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize
- if (remainderSize > 0) {
- const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled
- const remainder = ArrayBufferSlice(
- pullIntoDescriptor.buffer,
- end - remainderSize,
- end
- )
- ReadableByteStreamControllerEnqueueChunkToQueue(
- controller,
- remainder,
- 0,
- remainder.byteLength
- )
- }
- pullIntoDescriptor.bytesFilled -= remainderSize
- ReadableByteStreamControllerCommitPullIntoDescriptor(
- controller._controlledReadableByteStream,
- pullIntoDescriptor
- )
- ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller)
-}
-function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {
- const firstDescriptor = controller._pendingPullIntos.peek()
- ReadableByteStreamControllerInvalidateBYOBRequest(controller)
- const state = controller._controlledReadableByteStream._state
- if (state === 'closed') {
- ReadableByteStreamControllerRespondInClosedState(controller)
- } else {
- ReadableByteStreamControllerRespondInReadableState(
- controller,
- bytesWritten,
- firstDescriptor
- )
- }
- ReadableByteStreamControllerCallPullIfNeeded(controller)
-}
-function ReadableByteStreamControllerShiftPendingPullInto(controller) {
- const descriptor = controller._pendingPullIntos.shift()
- return descriptor
-}
-function ReadableByteStreamControllerShouldCallPull(controller) {
- const stream = controller._controlledReadableByteStream
- if (stream._state !== 'readable') {
- return false
- }
- if (controller._closeRequested) {
- return false
- }
- if (!controller._started) {
- return false
- }
- if (
- ReadableStreamHasDefaultReader(stream) &&
- ReadableStreamGetNumReadRequests(stream) > 0
- ) {
- return true
- }
- if (
- ReadableStreamHasBYOBReader(stream) &&
- ReadableStreamGetNumReadIntoRequests(stream) > 0
- ) {
- return true
- }
- const desiredSize = ReadableByteStreamControllerGetDesiredSize(controller)
- if (desiredSize > 0) {
- return true
- }
- return false
-}
-function ReadableByteStreamControllerClearAlgorithms(controller) {
- controller._pullAlgorithm = undefined
- controller._cancelAlgorithm = undefined
-}
-// A client of ReadableByteStreamController may use these functions directly to bypass state check.
-function ReadableByteStreamControllerClose(controller) {
- const stream = controller._controlledReadableByteStream
- if (controller._closeRequested || stream._state !== 'readable') {
- return
- }
- if (controller._queueTotalSize > 0) {
- controller._closeRequested = true
- return
- }
- if (controller._pendingPullIntos.length > 0) {
- const firstPendingPullInto = controller._pendingPullIntos.peek()
- if (firstPendingPullInto.bytesFilled > 0) {
- const e = new TypeError(
- 'Insufficient bytes to fill elements in the given buffer'
- )
- ReadableByteStreamControllerError(controller, e)
- throw e
- }
- }
- ReadableByteStreamControllerClearAlgorithms(controller)
- ReadableStreamClose(stream)
-}
-function ReadableByteStreamControllerEnqueue(controller, chunk) {
- const stream = controller._controlledReadableByteStream
- if (controller._closeRequested || stream._state !== 'readable') {
- return
- }
- const buffer = chunk.buffer
- const byteOffset = chunk.byteOffset
- const byteLength = chunk.byteLength
- const transferredBuffer = TransferArrayBuffer(buffer)
- if (controller._pendingPullIntos.length > 0) {
- const firstPendingPullInto = controller._pendingPullIntos.peek()
- if (IsDetachedBuffer(firstPendingPullInto.buffer));
- firstPendingPullInto.buffer = TransferArrayBuffer(
- firstPendingPullInto.buffer
- )
- }
- ReadableByteStreamControllerInvalidateBYOBRequest(controller)
- if (ReadableStreamHasDefaultReader(stream)) {
- if (ReadableStreamGetNumReadRequests(stream) === 0) {
- ReadableByteStreamControllerEnqueueChunkToQueue(
- controller,
- transferredBuffer,
- byteOffset,
- byteLength
- )
- } else {
- if (controller._pendingPullIntos.length > 0) {
- ReadableByteStreamControllerShiftPendingPullInto(controller)
- }
- const transferredView = new Uint8Array(
- transferredBuffer,
- byteOffset,
- byteLength
- )
- ReadableStreamFulfillReadRequest(stream, transferredView, false)
- }
- } else if (ReadableStreamHasBYOBReader(stream)) {
- // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.
- ReadableByteStreamControllerEnqueueChunkToQueue(
- controller,
- transferredBuffer,
- byteOffset,
- byteLength
- )
- ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller)
- } else {
- ReadableByteStreamControllerEnqueueChunkToQueue(
- controller,
- transferredBuffer,
- byteOffset,
- byteLength
- )
- }
- ReadableByteStreamControllerCallPullIfNeeded(controller)
-}
-function ReadableByteStreamControllerError(controller, e) {
- const stream = controller._controlledReadableByteStream
- if (stream._state !== 'readable') {
- return
- }
- ReadableByteStreamControllerClearPendingPullIntos(controller)
- ResetQueue(controller)
- ReadableByteStreamControllerClearAlgorithms(controller)
- ReadableStreamError(stream, e)
-}
-function ReadableByteStreamControllerGetBYOBRequest(controller) {
- if (
- controller._byobRequest === null &&
- controller._pendingPullIntos.length > 0
- ) {
- const firstDescriptor = controller._pendingPullIntos.peek()
- const view = new Uint8Array(
- firstDescriptor.buffer,
- firstDescriptor.byteOffset + firstDescriptor.bytesFilled,
- firstDescriptor.byteLength - firstDescriptor.bytesFilled
- )
- const byobRequest = Object.create(ReadableStreamBYOBRequest.prototype)
- SetUpReadableStreamBYOBRequest(byobRequest, controller, view)
- controller._byobRequest = byobRequest
- }
- return controller._byobRequest
-}
-function ReadableByteStreamControllerGetDesiredSize(controller) {
- const state = controller._controlledReadableByteStream._state
- if (state === 'errored') {
- return null
- }
- if (state === 'closed') {
- return 0
- }
- return controller._strategyHWM - controller._queueTotalSize
-}
-function ReadableByteStreamControllerRespond(controller, bytesWritten) {
- const firstDescriptor = controller._pendingPullIntos.peek()
- const state = controller._controlledReadableByteStream._state
- if (state === 'closed') {
- if (bytesWritten !== 0) {
- throw new TypeError(
- 'bytesWritten must be 0 when calling respond() on a closed stream'
- )
- }
- } else {
- if (bytesWritten === 0) {
- throw new TypeError(
- 'bytesWritten must be greater than 0 when calling respond() on a readable stream'
- )
- }
- if (
- firstDescriptor.bytesFilled + bytesWritten >
- firstDescriptor.byteLength
- ) {
- throw new RangeError('bytesWritten out of range')
- }
- }
- firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer)
- ReadableByteStreamControllerRespondInternal(controller, bytesWritten)
-}
-function ReadableByteStreamControllerRespondWithNewView(controller, view) {
- const firstDescriptor = controller._pendingPullIntos.peek()
- const state = controller._controlledReadableByteStream._state
- if (state === 'closed') {
- if (view.byteLength !== 0) {
- throw new TypeError(
- "The view's length must be 0 when calling respondWithNewView() on a closed stream"
- )
- }
- } else {
- if (view.byteLength === 0) {
- throw new TypeError(
- "The view's length must be greater than 0 when calling respondWithNewView() on a readable stream"
- )
- }
- }
- if (
- firstDescriptor.byteOffset + firstDescriptor.bytesFilled !==
- view.byteOffset
- ) {
- throw new RangeError(
- 'The region specified by view does not match byobRequest'
- )
- }
- if (firstDescriptor.bufferByteLength !== view.buffer.byteLength) {
- throw new RangeError(
- 'The buffer of view has different capacity than byobRequest'
- )
- }
- if (
- firstDescriptor.bytesFilled + view.byteLength >
- firstDescriptor.byteLength
- ) {
- throw new RangeError(
- 'The region specified by view is larger than byobRequest'
- )
- }
- const viewByteLength = view.byteLength
- firstDescriptor.buffer = TransferArrayBuffer(view.buffer)
- ReadableByteStreamControllerRespondInternal(controller, viewByteLength)
-}
-function SetUpReadableByteStreamController(
- stream,
- controller,
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm,
- highWaterMark,
- autoAllocateChunkSize
-) {
- controller._controlledReadableByteStream = stream
- controller._pullAgain = false
- controller._pulling = false
- controller._byobRequest = null
- // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.
- controller._queue = controller._queueTotalSize = undefined
- ResetQueue(controller)
- controller._closeRequested = false
- controller._started = false
- controller._strategyHWM = highWaterMark
- controller._pullAlgorithm = pullAlgorithm
- controller._cancelAlgorithm = cancelAlgorithm
- controller._autoAllocateChunkSize = autoAllocateChunkSize
- controller._pendingPullIntos = new SimpleQueue()
- stream._readableStreamController = controller
- const startResult = startAlgorithm()
- uponPromise(
- promiseResolvedWith(startResult),
- () => {
- controller._started = true
- ReadableByteStreamControllerCallPullIfNeeded(controller)
- },
- (r) => {
- ReadableByteStreamControllerError(controller, r)
- }
- )
-}
-function SetUpReadableByteStreamControllerFromUnderlyingSource(
- stream,
- underlyingByteSource,
- highWaterMark
-) {
- const controller = Object.create(ReadableByteStreamController.prototype)
- let startAlgorithm = () => undefined
- let pullAlgorithm = () => promiseResolvedWith(undefined)
- let cancelAlgorithm = () => promiseResolvedWith(undefined)
- if (underlyingByteSource.start !== undefined) {
- startAlgorithm = () => underlyingByteSource.start(controller)
- }
- if (underlyingByteSource.pull !== undefined) {
- pullAlgorithm = () => underlyingByteSource.pull(controller)
- }
- if (underlyingByteSource.cancel !== undefined) {
- cancelAlgorithm = (reason) => underlyingByteSource.cancel(reason)
- }
- const autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize
- if (autoAllocateChunkSize === 0) {
- throw new TypeError('autoAllocateChunkSize must be greater than 0')
- }
- SetUpReadableByteStreamController(
- stream,
- controller,
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm,
- highWaterMark,
- autoAllocateChunkSize
- )
-}
-function SetUpReadableStreamBYOBRequest(request, controller, view) {
- request._associatedReadableByteStreamController = controller
- request._view = view
-}
-// Helper functions for the ReadableStreamBYOBRequest.
-function byobRequestBrandCheckException(name) {
- return new TypeError(
- `ReadableStreamBYOBRequest.prototype.${name} can only be used on a ReadableStreamBYOBRequest`
- )
-}
-// Helper functions for the ReadableByteStreamController.
-function byteStreamControllerBrandCheckException(name) {
- return new TypeError(
- `ReadableByteStreamController.prototype.${name} can only be used on a ReadableByteStreamController`
- )
-}
-
-// Abstract operations for the ReadableStream.
-function AcquireReadableStreamBYOBReader(stream) {
- return new ReadableStreamBYOBReader(stream)
-}
-// ReadableStream API exposed for controllers.
-function ReadableStreamAddReadIntoRequest(stream, readIntoRequest) {
- stream._reader._readIntoRequests.push(readIntoRequest)
-}
-function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {
- const reader = stream._reader
- const readIntoRequest = reader._readIntoRequests.shift()
- if (done) {
- readIntoRequest._closeSteps(chunk)
- } else {
- readIntoRequest._chunkSteps(chunk)
- }
-}
-function ReadableStreamGetNumReadIntoRequests(stream) {
- return stream._reader._readIntoRequests.length
-}
-function ReadableStreamHasBYOBReader(stream) {
- const reader = stream._reader
- if (reader === undefined) {
- return false
- }
- if (!IsReadableStreamBYOBReader(reader)) {
- return false
- }
- return true
-}
-/**
- * A BYOB reader vended by a {@link ReadableStream}.
- *
- * @public
- */
-class ReadableStreamBYOBReader {
- constructor(stream) {
- assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader')
- assertReadableStream(stream, 'First parameter')
- if (IsReadableStreamLocked(stream)) {
- throw new TypeError(
- 'This stream has already been locked for exclusive reading by another reader'
- )
- }
- if (!IsReadableByteStreamController(stream._readableStreamController)) {
- throw new TypeError(
- 'Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' +
- 'source'
- )
- }
- ReadableStreamReaderGenericInitialize(this, stream)
- this._readIntoRequests = new SimpleQueue()
- }
- /**
- * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or
- * the reader's lock is released before the stream finishes closing.
- */
- get closed() {
- if (!IsReadableStreamBYOBReader(this)) {
- return promiseRejectedWith(byobReaderBrandCheckException('closed'))
- }
- return this._closedPromise
- }
- /**
- * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.
- */
- cancel(reason = undefined) {
- if (!IsReadableStreamBYOBReader(this)) {
- return promiseRejectedWith(byobReaderBrandCheckException('cancel'))
- }
- if (this._ownerReadableStream === undefined) {
- return promiseRejectedWith(readerLockException('cancel'))
- }
- return ReadableStreamReaderGenericCancel(this, reason)
- }
- /**
- * Attempts to reads bytes into view, and returns a promise resolved with the result.
- *
- * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.
- */
- read(view) {
- if (!IsReadableStreamBYOBReader(this)) {
- return promiseRejectedWith(byobReaderBrandCheckException('read'))
- }
- if (!ArrayBuffer.isView(view)) {
- return promiseRejectedWith(
- new TypeError('view must be an array buffer view')
- )
- }
- if (view.byteLength === 0) {
- return promiseRejectedWith(
- new TypeError('view must have non-zero byteLength')
- )
- }
- if (view.buffer.byteLength === 0) {
- return promiseRejectedWith(
- new TypeError(`view's buffer must have non-zero byteLength`)
- )
- }
- if (IsDetachedBuffer(view.buffer));
- if (this._ownerReadableStream === undefined) {
- return promiseRejectedWith(readerLockException('read from'))
- }
- let resolvePromise
- let rejectPromise
- const promise = newPromise((resolve, reject) => {
- resolvePromise = resolve
- rejectPromise = reject
- })
- const readIntoRequest = {
- _chunkSteps: (chunk) => resolvePromise({ value: chunk, done: false }),
- _closeSteps: (chunk) => resolvePromise({ value: chunk, done: true }),
- _errorSteps: (e) => rejectPromise(e),
- }
- ReadableStreamBYOBReaderRead(this, view, readIntoRequest)
- return promise
- }
- /**
- * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.
- * If the associated stream is errored when the lock is released, the reader will appear errored in the same way
- * from now on; otherwise, the reader will appear closed.
- *
- * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by
- * the reader's {@link ReadableStreamBYOBReader.read | read()} method has not yet been settled. Attempting to
- * do so will throw a `TypeError` and leave the reader locked to the stream.
- */
- releaseLock() {
- if (!IsReadableStreamBYOBReader(this)) {
- throw byobReaderBrandCheckException('releaseLock')
- }
- if (this._ownerReadableStream === undefined) {
- return
- }
- if (this._readIntoRequests.length > 0) {
- throw new TypeError(
- 'Tried to release a reader lock when that reader has pending read() calls un-settled'
- )
- }
- ReadableStreamReaderGenericRelease(this)
- }
-}
-Object.defineProperties(ReadableStreamBYOBReader.prototype, {
- cancel: { enumerable: true },
- read: { enumerable: true },
- releaseLock: { enumerable: true },
- closed: { enumerable: true },
-})
-// Abstract operations for the readers.
-function IsReadableStreamBYOBReader(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {
- return false
- }
- return x instanceof ReadableStreamBYOBReader
-}
-function ReadableStreamBYOBReaderRead(reader, view, readIntoRequest) {
- const stream = reader._ownerReadableStream
- stream._disturbed = true
- if (stream._state === 'errored') {
- readIntoRequest._errorSteps(stream._storedError)
- } else {
- ReadableByteStreamControllerPullInto(
- stream._readableStreamController,
- view,
- readIntoRequest
- )
- }
-}
-// Helper functions for the ReadableStreamBYOBReader.
-function byobReaderBrandCheckException(name) {
- return new TypeError(
- `ReadableStreamBYOBReader.prototype.${name} can only be used on a ReadableStreamBYOBReader`
- )
-}
-
-function ExtractHighWaterMark(strategy, defaultHWM) {
- const { highWaterMark } = strategy
- if (highWaterMark === undefined) {
- return defaultHWM
- }
- if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {
- throw new RangeError('Invalid highWaterMark')
- }
- return highWaterMark
-}
-function ExtractSizeAlgorithm(strategy) {
- const { size } = strategy
- if (!size) {
- return () => 1
- }
- return size
-}
-
-function convertQueuingStrategy(init, context) {
- assertDictionary(init, context)
- const highWaterMark =
- init === null || init === void 0 ? void 0 : init.highWaterMark
- const size = init === null || init === void 0 ? void 0 : init.size
- return {
- highWaterMark:
- highWaterMark === undefined
- ? undefined
- : convertUnrestrictedDouble(highWaterMark),
- size:
- size === undefined
- ? undefined
- : convertQueuingStrategySize(size, `${context} has member 'size' that`),
- }
-}
-function convertQueuingStrategySize(fn, context) {
- assertFunction(fn, context)
- return (chunk) => convertUnrestrictedDouble(fn(chunk))
-}
-
-function convertUnderlyingSink(original, context) {
- assertDictionary(original, context)
- const abort =
- original === null || original === void 0 ? void 0 : original.abort
- const close =
- original === null || original === void 0 ? void 0 : original.close
- const start =
- original === null || original === void 0 ? void 0 : original.start
- const type = original === null || original === void 0 ? void 0 : original.type
- const write =
- original === null || original === void 0 ? void 0 : original.write
- return {
- abort:
- abort === undefined
- ? undefined
- : convertUnderlyingSinkAbortCallback(
- abort,
- original,
- `${context} has member 'abort' that`
- ),
- close:
- close === undefined
- ? undefined
- : convertUnderlyingSinkCloseCallback(
- close,
- original,
- `${context} has member 'close' that`
- ),
- start:
- start === undefined
- ? undefined
- : convertUnderlyingSinkStartCallback(
- start,
- original,
- `${context} has member 'start' that`
- ),
- write:
- write === undefined
- ? undefined
- : convertUnderlyingSinkWriteCallback(
- write,
- original,
- `${context} has member 'write' that`
- ),
- type,
- }
-}
-function convertUnderlyingSinkAbortCallback(fn, original, context) {
- assertFunction(fn, context)
- return (reason) => promiseCall(fn, original, [reason])
-}
-function convertUnderlyingSinkCloseCallback(fn, original, context) {
- assertFunction(fn, context)
- return () => promiseCall(fn, original, [])
-}
-function convertUnderlyingSinkStartCallback(fn, original, context) {
- assertFunction(fn, context)
- return (controller) => reflectCall(fn, original, [controller])
-}
-function convertUnderlyingSinkWriteCallback(fn, original, context) {
- assertFunction(fn, context)
- return (chunk, controller) => promiseCall(fn, original, [chunk, controller])
-}
-
-function assertWritableStream(x, context) {
- if (!IsWritableStream(x)) {
- throw new TypeError(`${context} is not a WritableStream.`)
- }
-}
-
-function isAbortSignal$1(value) {
- if (typeof value !== 'object' || value === null) {
- return false
- }
- try {
- return typeof value.aborted === 'boolean'
- } catch (_a) {
- // AbortSignal.prototype.aborted throws if its brand check fails
- return false
- }
-}
-
-/**
- * A writable stream represents a destination for data, into which you can write.
- *
- * @public
- */
-class WritableStream {
- constructor(rawUnderlyingSink = {}, rawStrategy = {}) {
- if (rawUnderlyingSink === undefined) {
- rawUnderlyingSink = null
- } else {
- assertObject(rawUnderlyingSink, 'First parameter')
- }
- const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter')
- const underlyingSink = convertUnderlyingSink(
- rawUnderlyingSink,
- 'First parameter'
- )
- InitializeWritableStream(this)
- const type = underlyingSink.type
- if (type !== undefined) {
- throw new RangeError('Invalid type is specified')
- }
- const sizeAlgorithm = ExtractSizeAlgorithm(strategy)
- const highWaterMark = ExtractHighWaterMark(strategy, 1)
- SetUpWritableStreamDefaultControllerFromUnderlyingSink(
- this,
- underlyingSink,
- highWaterMark,
- sizeAlgorithm
- )
- }
- /**
- * Returns whether or not the writable stream is locked to a writer.
- */
- get locked() {
- if (!IsWritableStream(this)) {
- throw streamBrandCheckException$2('locked')
- }
- return IsWritableStreamLocked(this)
- }
- /**
- * Aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be
- * immediately moved to an errored state, with any queued-up writes discarded. This will also execute any abort
- * mechanism of the underlying sink.
- *
- * The returned promise will fulfill if the stream shuts down successfully, or reject if the underlying sink signaled
- * that there was an error doing so. Additionally, it will reject with a `TypeError` (without attempting to cancel
- * the stream) if the stream is currently locked.
- */
- abort(reason = undefined) {
- if (!IsWritableStream(this)) {
- return promiseRejectedWith(streamBrandCheckException$2('abort'))
- }
- if (IsWritableStreamLocked(this)) {
- return promiseRejectedWith(
- new TypeError('Cannot abort a stream that already has a writer')
- )
- }
- return WritableStreamAbort(this, reason)
- }
- /**
- * Closes the stream. The underlying sink will finish processing any previously-written chunks, before invoking its
- * close behavior. During this time any further attempts to write will fail (without erroring the stream).
- *
- * The method returns a promise that will fulfill if all remaining chunks are successfully written and the stream
- * successfully closes, or rejects if an error is encountered during this process. Additionally, it will reject with
- * a `TypeError` (without attempting to cancel the stream) if the stream is currently locked.
- */
- close() {
- if (!IsWritableStream(this)) {
- return promiseRejectedWith(streamBrandCheckException$2('close'))
- }
- if (IsWritableStreamLocked(this)) {
- return promiseRejectedWith(
- new TypeError('Cannot close a stream that already has a writer')
- )
- }
- if (WritableStreamCloseQueuedOrInFlight(this)) {
- return promiseRejectedWith(
- new TypeError('Cannot close an already-closing stream')
- )
- }
- return WritableStreamClose(this)
- }
- /**
- * Creates a {@link WritableStreamDefaultWriter | writer} and locks the stream to the new writer. While the stream
- * is locked, no other writer can be acquired until this one is released.
- *
- * This functionality is especially useful for creating abstractions that desire the ability to write to a stream
- * without interruption or interleaving. By getting a writer for the stream, you can ensure nobody else can write at
- * the same time, which would cause the resulting written data to be unpredictable and probably useless.
- */
- getWriter() {
- if (!IsWritableStream(this)) {
- throw streamBrandCheckException$2('getWriter')
- }
- return AcquireWritableStreamDefaultWriter(this)
- }
-}
-Object.defineProperties(WritableStream.prototype, {
- abort: { enumerable: true },
- close: { enumerable: true },
- getWriter: { enumerable: true },
- locked: { enumerable: true },
-})
-// Abstract operations for the WritableStream.
-function AcquireWritableStreamDefaultWriter(stream) {
- return new WritableStreamDefaultWriter(stream)
-}
-// Throws if and only if startAlgorithm throws.
-function CreateWritableStream(
- startAlgorithm,
- writeAlgorithm,
- closeAlgorithm,
- abortAlgorithm,
- highWaterMark = 1,
- sizeAlgorithm = () => 1
-) {
- const stream = Object.create(WritableStream.prototype)
- InitializeWritableStream(stream)
- const controller = Object.create(WritableStreamDefaultController.prototype)
- SetUpWritableStreamDefaultController(
- stream,
- controller,
- startAlgorithm,
- writeAlgorithm,
- closeAlgorithm,
- abortAlgorithm,
- highWaterMark,
- sizeAlgorithm
- )
- return stream
-}
-function InitializeWritableStream(stream) {
- stream._state = 'writable'
- // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is
- // 'erroring' or 'errored'. May be set to an undefined value.
- stream._storedError = undefined
- stream._writer = undefined
- // Initialize to undefined first because the constructor of the controller checks this
- // variable to validate the caller.
- stream._writableStreamController = undefined
- // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data
- // producer without waiting for the queued writes to finish.
- stream._writeRequests = new SimpleQueue()
- // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents
- // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.
- stream._inFlightWriteRequest = undefined
- // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer
- // has been detached.
- stream._closeRequest = undefined
- // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it
- // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.
- stream._inFlightCloseRequest = undefined
- // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.
- stream._pendingAbortRequest = undefined
- // The backpressure signal set by the controller.
- stream._backpressure = false
-}
-function IsWritableStream(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {
- return false
- }
- return x instanceof WritableStream
-}
-function IsWritableStreamLocked(stream) {
- if (stream._writer === undefined) {
- return false
- }
- return true
-}
-function WritableStreamAbort(stream, reason) {
- var _a
- if (stream._state === 'closed' || stream._state === 'errored') {
- return promiseResolvedWith(undefined)
- }
- stream._writableStreamController._abortReason = reason
- ;(_a = stream._writableStreamController._abortController) === null ||
- _a === void 0
- ? void 0
- : _a.abort()
- // TypeScript narrows the type of `stream._state` down to 'writable' | 'erroring',
- // but it doesn't know that signaling abort runs author code that might have changed the state.
- // Widen the type again by casting to WritableStreamState.
- const state = stream._state
- if (state === 'closed' || state === 'errored') {
- return promiseResolvedWith(undefined)
- }
- if (stream._pendingAbortRequest !== undefined) {
- return stream._pendingAbortRequest._promise
- }
- let wasAlreadyErroring = false
- if (state === 'erroring') {
- wasAlreadyErroring = true
- // reason will not be used, so don't keep a reference to it.
- reason = undefined
- }
- const promise = newPromise((resolve, reject) => {
- stream._pendingAbortRequest = {
- _promise: undefined,
- _resolve: resolve,
- _reject: reject,
- _reason: reason,
- _wasAlreadyErroring: wasAlreadyErroring,
- }
- })
- stream._pendingAbortRequest._promise = promise
- if (!wasAlreadyErroring) {
- WritableStreamStartErroring(stream, reason)
- }
- return promise
-}
-function WritableStreamClose(stream) {
- const state = stream._state
- if (state === 'closed' || state === 'errored') {
- return promiseRejectedWith(
- new TypeError(
- `The stream (in ${state} state) is not in the writable state and cannot be closed`
- )
- )
- }
- const promise = newPromise((resolve, reject) => {
- const closeRequest = {
- _resolve: resolve,
- _reject: reject,
- }
- stream._closeRequest = closeRequest
- })
- const writer = stream._writer
- if (writer !== undefined && stream._backpressure && state === 'writable') {
- defaultWriterReadyPromiseResolve(writer)
- }
- WritableStreamDefaultControllerClose(stream._writableStreamController)
- return promise
-}
-// WritableStream API exposed for controllers.
-function WritableStreamAddWriteRequest(stream) {
- const promise = newPromise((resolve, reject) => {
- const writeRequest = {
- _resolve: resolve,
- _reject: reject,
- }
- stream._writeRequests.push(writeRequest)
- })
- return promise
-}
-function WritableStreamDealWithRejection(stream, error) {
- const state = stream._state
- if (state === 'writable') {
- WritableStreamStartErroring(stream, error)
- return
- }
- WritableStreamFinishErroring(stream)
-}
-function WritableStreamStartErroring(stream, reason) {
- const controller = stream._writableStreamController
- stream._state = 'erroring'
- stream._storedError = reason
- const writer = stream._writer
- if (writer !== undefined) {
- WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason)
- }
- if (
- !WritableStreamHasOperationMarkedInFlight(stream) &&
- controller._started
- ) {
- WritableStreamFinishErroring(stream)
- }
-}
-function WritableStreamFinishErroring(stream) {
- stream._state = 'errored'
- stream._writableStreamController[ErrorSteps]()
- const storedError = stream._storedError
- stream._writeRequests.forEach((writeRequest) => {
- writeRequest._reject(storedError)
- })
- stream._writeRequests = new SimpleQueue()
- if (stream._pendingAbortRequest === undefined) {
- WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream)
- return
- }
- const abortRequest = stream._pendingAbortRequest
- stream._pendingAbortRequest = undefined
- if (abortRequest._wasAlreadyErroring) {
- abortRequest._reject(storedError)
- WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream)
- return
- }
- const promise = stream._writableStreamController[AbortSteps](
- abortRequest._reason
- )
- uponPromise(
- promise,
- () => {
- abortRequest._resolve()
- WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream)
- },
- (reason) => {
- abortRequest._reject(reason)
- WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream)
- }
- )
-}
-function WritableStreamFinishInFlightWrite(stream) {
- stream._inFlightWriteRequest._resolve(undefined)
- stream._inFlightWriteRequest = undefined
-}
-function WritableStreamFinishInFlightWriteWithError(stream, error) {
- stream._inFlightWriteRequest._reject(error)
- stream._inFlightWriteRequest = undefined
- WritableStreamDealWithRejection(stream, error)
-}
-function WritableStreamFinishInFlightClose(stream) {
- stream._inFlightCloseRequest._resolve(undefined)
- stream._inFlightCloseRequest = undefined
- const state = stream._state
- if (state === 'erroring') {
- // The error was too late to do anything, so it is ignored.
- stream._storedError = undefined
- if (stream._pendingAbortRequest !== undefined) {
- stream._pendingAbortRequest._resolve()
- stream._pendingAbortRequest = undefined
- }
- }
- stream._state = 'closed'
- const writer = stream._writer
- if (writer !== undefined) {
- defaultWriterClosedPromiseResolve(writer)
- }
-}
-function WritableStreamFinishInFlightCloseWithError(stream, error) {
- stream._inFlightCloseRequest._reject(error)
- stream._inFlightCloseRequest = undefined
- // Never execute sink abort() after sink close().
- if (stream._pendingAbortRequest !== undefined) {
- stream._pendingAbortRequest._reject(error)
- stream._pendingAbortRequest = undefined
- }
- WritableStreamDealWithRejection(stream, error)
-}
-// TODO(ricea): Fix alphabetical order.
-function WritableStreamCloseQueuedOrInFlight(stream) {
- if (
- stream._closeRequest === undefined &&
- stream._inFlightCloseRequest === undefined
- ) {
- return false
- }
- return true
-}
-function WritableStreamHasOperationMarkedInFlight(stream) {
- if (
- stream._inFlightWriteRequest === undefined &&
- stream._inFlightCloseRequest === undefined
- ) {
- return false
- }
- return true
-}
-function WritableStreamMarkCloseRequestInFlight(stream) {
- stream._inFlightCloseRequest = stream._closeRequest
- stream._closeRequest = undefined
-}
-function WritableStreamMarkFirstWriteRequestInFlight(stream) {
- stream._inFlightWriteRequest = stream._writeRequests.shift()
-}
-function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {
- if (stream._closeRequest !== undefined) {
- stream._closeRequest._reject(stream._storedError)
- stream._closeRequest = undefined
- }
- const writer = stream._writer
- if (writer !== undefined) {
- defaultWriterClosedPromiseReject(writer, stream._storedError)
- }
-}
-function WritableStreamUpdateBackpressure(stream, backpressure) {
- const writer = stream._writer
- if (writer !== undefined && backpressure !== stream._backpressure) {
- if (backpressure) {
- defaultWriterReadyPromiseReset(writer)
- } else {
- defaultWriterReadyPromiseResolve(writer)
- }
- }
- stream._backpressure = backpressure
-}
-/**
- * A default writer vended by a {@link WritableStream}.
- *
- * @public
- */
-class WritableStreamDefaultWriter {
- constructor(stream) {
- assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter')
- assertWritableStream(stream, 'First parameter')
- if (IsWritableStreamLocked(stream)) {
- throw new TypeError(
- 'This stream has already been locked for exclusive writing by another writer'
- )
- }
- this._ownerWritableStream = stream
- stream._writer = this
- const state = stream._state
- if (state === 'writable') {
- if (
- !WritableStreamCloseQueuedOrInFlight(stream) &&
- stream._backpressure
- ) {
- defaultWriterReadyPromiseInitialize(this)
- } else {
- defaultWriterReadyPromiseInitializeAsResolved(this)
- }
- defaultWriterClosedPromiseInitialize(this)
- } else if (state === 'erroring') {
- defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError)
- defaultWriterClosedPromiseInitialize(this)
- } else if (state === 'closed') {
- defaultWriterReadyPromiseInitializeAsResolved(this)
- defaultWriterClosedPromiseInitializeAsResolved(this)
- } else {
- const storedError = stream._storedError
- defaultWriterReadyPromiseInitializeAsRejected(this, storedError)
- defaultWriterClosedPromiseInitializeAsRejected(this, storedError)
- }
- }
- /**
- * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or
- * the writer’s lock is released before the stream finishes closing.
- */
- get closed() {
- if (!IsWritableStreamDefaultWriter(this)) {
- return promiseRejectedWith(defaultWriterBrandCheckException('closed'))
- }
- return this._closedPromise
- }
- /**
- * Returns the desired size to fill the stream’s internal queue. It can be negative, if the queue is over-full.
- * A producer can use this information to determine the right amount of data to write.
- *
- * It will be `null` if the stream cannot be successfully written to (due to either being errored, or having an abort
- * queued up). It will return zero if the stream is closed. And the getter will throw an exception if invoked when
- * the writer’s lock is released.
- */
- get desiredSize() {
- if (!IsWritableStreamDefaultWriter(this)) {
- throw defaultWriterBrandCheckException('desiredSize')
- }
- if (this._ownerWritableStream === undefined) {
- throw defaultWriterLockException('desiredSize')
- }
- return WritableStreamDefaultWriterGetDesiredSize(this)
- }
- /**
- * Returns a promise that will be fulfilled when the desired size to fill the stream’s internal queue transitions
- * from non-positive to positive, signaling that it is no longer applying backpressure. Once the desired size dips
- * back to zero or below, the getter will return a new promise that stays pending until the next transition.
- *
- * If the stream becomes errored or aborted, or the writer’s lock is released, the returned promise will become
- * rejected.
- */
- get ready() {
- if (!IsWritableStreamDefaultWriter(this)) {
- return promiseRejectedWith(defaultWriterBrandCheckException('ready'))
- }
- return this._readyPromise
- }
- /**
- * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}.
- */
- abort(reason = undefined) {
- if (!IsWritableStreamDefaultWriter(this)) {
- return promiseRejectedWith(defaultWriterBrandCheckException('abort'))
- }
- if (this._ownerWritableStream === undefined) {
- return promiseRejectedWith(defaultWriterLockException('abort'))
- }
- return WritableStreamDefaultWriterAbort(this, reason)
- }
- /**
- * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}.
- */
- close() {
- if (!IsWritableStreamDefaultWriter(this)) {
- return promiseRejectedWith(defaultWriterBrandCheckException('close'))
- }
- const stream = this._ownerWritableStream
- if (stream === undefined) {
- return promiseRejectedWith(defaultWriterLockException('close'))
- }
- if (WritableStreamCloseQueuedOrInFlight(stream)) {
- return promiseRejectedWith(
- new TypeError('Cannot close an already-closing stream')
- )
- }
- return WritableStreamDefaultWriterClose(this)
- }
- /**
- * Releases the writer’s lock on the corresponding stream. After the lock is released, the writer is no longer active.
- * If the associated stream is errored when the lock is released, the writer will appear errored in the same way from
- * now on; otherwise, the writer will appear closed.
- *
- * Note that the lock can still be released even if some ongoing writes have not yet finished (i.e. even if the
- * promises returned from previous calls to {@link WritableStreamDefaultWriter.write | write()} have not yet settled).
- * It’s not necessary to hold the lock on the writer for the duration of the write; the lock instead simply prevents
- * other producers from writing in an interleaved manner.
- */
- releaseLock() {
- if (!IsWritableStreamDefaultWriter(this)) {
- throw defaultWriterBrandCheckException('releaseLock')
- }
- const stream = this._ownerWritableStream
- if (stream === undefined) {
- return
- }
- WritableStreamDefaultWriterRelease(this)
- }
- write(chunk = undefined) {
- if (!IsWritableStreamDefaultWriter(this)) {
- return promiseRejectedWith(defaultWriterBrandCheckException('write'))
- }
- if (this._ownerWritableStream === undefined) {
- return promiseRejectedWith(defaultWriterLockException('write to'))
- }
- return WritableStreamDefaultWriterWrite(this, chunk)
- }
-}
-Object.defineProperties(WritableStreamDefaultWriter.prototype, {
- abort: { enumerable: true },
- close: { enumerable: true },
- releaseLock: { enumerable: true },
- write: { enumerable: true },
- closed: { enumerable: true },
- desiredSize: { enumerable: true },
- ready: { enumerable: true },
-})
-// Abstract operations for the WritableStreamDefaultWriter.
-function IsWritableStreamDefaultWriter(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {
- return false
- }
- return x instanceof WritableStreamDefaultWriter
-}
-// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.
-function WritableStreamDefaultWriterAbort(writer, reason) {
- const stream = writer._ownerWritableStream
- return WritableStreamAbort(stream, reason)
-}
-function WritableStreamDefaultWriterClose(writer) {
- const stream = writer._ownerWritableStream
- return WritableStreamClose(stream)
-}
-function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
- const stream = writer._ownerWritableStream
- const state = stream._state
- if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {
- return promiseResolvedWith(undefined)
- }
- if (state === 'errored') {
- return promiseRejectedWith(stream._storedError)
- }
- return WritableStreamDefaultWriterClose(writer)
-}
-function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {
- if (writer._closedPromiseState === 'pending') {
- defaultWriterClosedPromiseReject(writer, error)
- } else {
- defaultWriterClosedPromiseResetToRejected(writer, error)
- }
-}
-function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {
- if (writer._readyPromiseState === 'pending') {
- defaultWriterReadyPromiseReject(writer, error)
- } else {
- defaultWriterReadyPromiseResetToRejected(writer, error)
- }
-}
-function WritableStreamDefaultWriterGetDesiredSize(writer) {
- const stream = writer._ownerWritableStream
- const state = stream._state
- if (state === 'errored' || state === 'erroring') {
- return null
- }
- if (state === 'closed') {
- return 0
- }
- return WritableStreamDefaultControllerGetDesiredSize(
- stream._writableStreamController
- )
-}
-function WritableStreamDefaultWriterRelease(writer) {
- const stream = writer._ownerWritableStream
- const releasedError = new TypeError(
- `Writer was released and can no longer be used to monitor the stream's closedness`
- )
- WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError)
- // The state transitions to "errored" before the sink abort() method runs, but the writer.closed promise is not
- // rejected until afterwards. This means that simply testing state will not work.
- WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError)
- stream._writer = undefined
- writer._ownerWritableStream = undefined
-}
-function WritableStreamDefaultWriterWrite(writer, chunk) {
- const stream = writer._ownerWritableStream
- const controller = stream._writableStreamController
- const chunkSize = WritableStreamDefaultControllerGetChunkSize(
- controller,
- chunk
- )
- if (stream !== writer._ownerWritableStream) {
- return promiseRejectedWith(defaultWriterLockException('write to'))
- }
- const state = stream._state
- if (state === 'errored') {
- return promiseRejectedWith(stream._storedError)
- }
- if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {
- return promiseRejectedWith(
- new TypeError('The stream is closing or closed and cannot be written to')
- )
- }
- if (state === 'erroring') {
- return promiseRejectedWith(stream._storedError)
- }
- const promise = WritableStreamAddWriteRequest(stream)
- WritableStreamDefaultControllerWrite(controller, chunk, chunkSize)
- return promise
-}
-const closeSentinel = {}
-/**
- * Allows control of a {@link WritableStream | writable stream}'s state and internal queue.
- *
- * @public
- */
-class WritableStreamDefaultController {
- constructor() {
- throw new TypeError('Illegal constructor')
- }
- /**
- * The reason which was passed to `WritableStream.abort(reason)` when the stream was aborted.
- *
- * @deprecated
- * This property has been removed from the specification, see https://github.com/whatwg/streams/pull/1177.
- * Use {@link WritableStreamDefaultController.signal}'s `reason` instead.
- */
- get abortReason() {
- if (!IsWritableStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException$2('abortReason')
- }
- return this._abortReason
- }
- /**
- * An `AbortSignal` that can be used to abort the pending write or close operation when the stream is aborted.
- */
- get signal() {
- if (!IsWritableStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException$2('signal')
- }
- if (this._abortController === undefined) {
- // Older browsers or older Node versions may not support `AbortController` or `AbortSignal`.
- // We don't want to bundle and ship an `AbortController` polyfill together with our polyfill,
- // so instead we only implement support for `signal` if we find a global `AbortController` constructor.
- throw new TypeError(
- 'WritableStreamDefaultController.prototype.signal is not supported'
- )
- }
- return this._abortController.signal
- }
- /**
- * Closes the controlled writable stream, making all future interactions with it fail with the given error `e`.
- *
- * This method is rarely used, since usually it suffices to return a rejected promise from one of the underlying
- * sink's methods. However, it can be useful for suddenly shutting down a stream in response to an event outside the
- * normal lifecycle of interactions with the underlying sink.
- */
- error(e = undefined) {
- if (!IsWritableStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException$2('error')
- }
- const state = this._controlledWritableStream._state
- if (state !== 'writable') {
- // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so
- // just treat it as a no-op.
- return
- }
- WritableStreamDefaultControllerError(this, e)
- }
- /** @internal */
- [AbortSteps](reason) {
- const result = this._abortAlgorithm(reason)
- WritableStreamDefaultControllerClearAlgorithms(this)
- return result
- }
- /** @internal */
- [ErrorSteps]() {
- ResetQueue(this)
- }
-}
-Object.defineProperties(WritableStreamDefaultController.prototype, {
- abortReason: { enumerable: true },
- signal: { enumerable: true },
- error: { enumerable: true },
-})
-// Abstract operations implementing interface required by the WritableStream.
-function IsWritableStreamDefaultController(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {
- return false
- }
- return x instanceof WritableStreamDefaultController
-}
-function SetUpWritableStreamDefaultController(
- stream,
- controller,
- startAlgorithm,
- writeAlgorithm,
- closeAlgorithm,
- abortAlgorithm,
- highWaterMark,
- sizeAlgorithm
-) {
- controller._controlledWritableStream = stream
- stream._writableStreamController = controller
- // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.
- controller._queue = undefined
- controller._queueTotalSize = undefined
- ResetQueue(controller)
- controller._abortReason = undefined
- controller._abortController = new AbortController()
- controller._started = false
- controller._strategySizeAlgorithm = sizeAlgorithm
- controller._strategyHWM = highWaterMark
- controller._writeAlgorithm = writeAlgorithm
- controller._closeAlgorithm = closeAlgorithm
- controller._abortAlgorithm = abortAlgorithm
- const backpressure =
- WritableStreamDefaultControllerGetBackpressure(controller)
- WritableStreamUpdateBackpressure(stream, backpressure)
- const startResult = startAlgorithm()
- const startPromise = promiseResolvedWith(startResult)
- uponPromise(
- startPromise,
- () => {
- controller._started = true
- WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller)
- },
- (r) => {
- controller._started = true
- WritableStreamDealWithRejection(stream, r)
- }
- )
-}
-function SetUpWritableStreamDefaultControllerFromUnderlyingSink(
- stream,
- underlyingSink,
- highWaterMark,
- sizeAlgorithm
-) {
- const controller = Object.create(WritableStreamDefaultController.prototype)
- let startAlgorithm = () => undefined
- let writeAlgorithm = () => promiseResolvedWith(undefined)
- let closeAlgorithm = () => promiseResolvedWith(undefined)
- let abortAlgorithm = () => promiseResolvedWith(undefined)
- if (underlyingSink.start !== undefined) {
- startAlgorithm = () => underlyingSink.start(controller)
- }
- if (underlyingSink.write !== undefined) {
- writeAlgorithm = (chunk) => underlyingSink.write(chunk, controller)
- }
- if (underlyingSink.close !== undefined) {
- closeAlgorithm = () => underlyingSink.close()
- }
- if (underlyingSink.abort !== undefined) {
- abortAlgorithm = (reason) => underlyingSink.abort(reason)
- }
- SetUpWritableStreamDefaultController(
- stream,
- controller,
- startAlgorithm,
- writeAlgorithm,
- closeAlgorithm,
- abortAlgorithm,
- highWaterMark,
- sizeAlgorithm
- )
-}
-// ClearAlgorithms may be called twice. Erroring the same stream in multiple ways will often result in redundant calls.
-function WritableStreamDefaultControllerClearAlgorithms(controller) {
- controller._writeAlgorithm = undefined
- controller._closeAlgorithm = undefined
- controller._abortAlgorithm = undefined
- controller._strategySizeAlgorithm = undefined
-}
-function WritableStreamDefaultControllerClose(controller) {
- EnqueueValueWithSize(controller, closeSentinel, 0)
- WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller)
-}
-function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
- try {
- return controller._strategySizeAlgorithm(chunk)
- } catch (chunkSizeE) {
- WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE)
- return 1
- }
-}
-function WritableStreamDefaultControllerGetDesiredSize(controller) {
- return controller._strategyHWM - controller._queueTotalSize
-}
-function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
- try {
- EnqueueValueWithSize(controller, chunk, chunkSize)
- } catch (enqueueE) {
- WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE)
- return
- }
- const stream = controller._controlledWritableStream
- if (
- !WritableStreamCloseQueuedOrInFlight(stream) &&
- stream._state === 'writable'
- ) {
- const backpressure =
- WritableStreamDefaultControllerGetBackpressure(controller)
- WritableStreamUpdateBackpressure(stream, backpressure)
- }
- WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller)
-}
-// Abstract operations for the WritableStreamDefaultController.
-function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
- const stream = controller._controlledWritableStream
- if (!controller._started) {
- return
- }
- if (stream._inFlightWriteRequest !== undefined) {
- return
- }
- const state = stream._state
- if (state === 'erroring') {
- WritableStreamFinishErroring(stream)
- return
- }
- if (controller._queue.length === 0) {
- return
- }
- const value = PeekQueueValue(controller)
- if (value === closeSentinel) {
- WritableStreamDefaultControllerProcessClose(controller)
- } else {
- WritableStreamDefaultControllerProcessWrite(controller, value)
- }
-}
-function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
- if (controller._controlledWritableStream._state === 'writable') {
- WritableStreamDefaultControllerError(controller, error)
- }
-}
-function WritableStreamDefaultControllerProcessClose(controller) {
- const stream = controller._controlledWritableStream
- WritableStreamMarkCloseRequestInFlight(stream)
- DequeueValue(controller)
- const sinkClosePromise = controller._closeAlgorithm()
- WritableStreamDefaultControllerClearAlgorithms(controller)
- uponPromise(
- sinkClosePromise,
- () => {
- WritableStreamFinishInFlightClose(stream)
- },
- (reason) => {
- WritableStreamFinishInFlightCloseWithError(stream, reason)
- }
- )
-}
-function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
- const stream = controller._controlledWritableStream
- WritableStreamMarkFirstWriteRequestInFlight(stream)
- const sinkWritePromise = controller._writeAlgorithm(chunk)
- uponPromise(
- sinkWritePromise,
- () => {
- WritableStreamFinishInFlightWrite(stream)
- const state = stream._state
- DequeueValue(controller)
- if (
- !WritableStreamCloseQueuedOrInFlight(stream) &&
- state === 'writable'
- ) {
- const backpressure =
- WritableStreamDefaultControllerGetBackpressure(controller)
- WritableStreamUpdateBackpressure(stream, backpressure)
- }
- WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller)
- },
- (reason) => {
- if (stream._state === 'writable') {
- WritableStreamDefaultControllerClearAlgorithms(controller)
- }
- WritableStreamFinishInFlightWriteWithError(stream, reason)
- }
- )
-}
-function WritableStreamDefaultControllerGetBackpressure(controller) {
- const desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller)
- return desiredSize <= 0
-}
-// A client of WritableStreamDefaultController may use these functions directly to bypass state check.
-function WritableStreamDefaultControllerError(controller, error) {
- const stream = controller._controlledWritableStream
- WritableStreamDefaultControllerClearAlgorithms(controller)
- WritableStreamStartErroring(stream, error)
-}
-// Helper functions for the WritableStream.
-function streamBrandCheckException$2(name) {
- return new TypeError(
- `WritableStream.prototype.${name} can only be used on a WritableStream`
- )
-}
-// Helper functions for the WritableStreamDefaultController.
-function defaultControllerBrandCheckException$2(name) {
- return new TypeError(
- `WritableStreamDefaultController.prototype.${name} can only be used on a WritableStreamDefaultController`
- )
-}
-// Helper functions for the WritableStreamDefaultWriter.
-function defaultWriterBrandCheckException(name) {
- return new TypeError(
- `WritableStreamDefaultWriter.prototype.${name} can only be used on a WritableStreamDefaultWriter`
- )
-}
-function defaultWriterLockException(name) {
- return new TypeError('Cannot ' + name + ' a stream using a released writer')
-}
-function defaultWriterClosedPromiseInitialize(writer) {
- writer._closedPromise = newPromise((resolve, reject) => {
- writer._closedPromise_resolve = resolve
- writer._closedPromise_reject = reject
- writer._closedPromiseState = 'pending'
- })
-}
-function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {
- defaultWriterClosedPromiseInitialize(writer)
- defaultWriterClosedPromiseReject(writer, reason)
-}
-function defaultWriterClosedPromiseInitializeAsResolved(writer) {
- defaultWriterClosedPromiseInitialize(writer)
- defaultWriterClosedPromiseResolve(writer)
-}
-function defaultWriterClosedPromiseReject(writer, reason) {
- if (writer._closedPromise_reject === undefined) {
- return
- }
- setPromiseIsHandledToTrue(writer._closedPromise)
- writer._closedPromise_reject(reason)
- writer._closedPromise_resolve = undefined
- writer._closedPromise_reject = undefined
- writer._closedPromiseState = 'rejected'
-}
-function defaultWriterClosedPromiseResetToRejected(writer, reason) {
- defaultWriterClosedPromiseInitializeAsRejected(writer, reason)
-}
-function defaultWriterClosedPromiseResolve(writer) {
- if (writer._closedPromise_resolve === undefined) {
- return
- }
- writer._closedPromise_resolve(undefined)
- writer._closedPromise_resolve = undefined
- writer._closedPromise_reject = undefined
- writer._closedPromiseState = 'resolved'
-}
-function defaultWriterReadyPromiseInitialize(writer) {
- writer._readyPromise = newPromise((resolve, reject) => {
- writer._readyPromise_resolve = resolve
- writer._readyPromise_reject = reject
- })
- writer._readyPromiseState = 'pending'
-}
-function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {
- defaultWriterReadyPromiseInitialize(writer)
- defaultWriterReadyPromiseReject(writer, reason)
-}
-function defaultWriterReadyPromiseInitializeAsResolved(writer) {
- defaultWriterReadyPromiseInitialize(writer)
- defaultWriterReadyPromiseResolve(writer)
-}
-function defaultWriterReadyPromiseReject(writer, reason) {
- if (writer._readyPromise_reject === undefined) {
- return
- }
- setPromiseIsHandledToTrue(writer._readyPromise)
- writer._readyPromise_reject(reason)
- writer._readyPromise_resolve = undefined
- writer._readyPromise_reject = undefined
- writer._readyPromiseState = 'rejected'
-}
-function defaultWriterReadyPromiseReset(writer) {
- defaultWriterReadyPromiseInitialize(writer)
-}
-function defaultWriterReadyPromiseResetToRejected(writer, reason) {
- defaultWriterReadyPromiseInitializeAsRejected(writer, reason)
-}
-function defaultWriterReadyPromiseResolve(writer) {
- if (writer._readyPromise_resolve === undefined) {
- return
- }
- writer._readyPromise_resolve(undefined)
- writer._readyPromise_resolve = undefined
- writer._readyPromise_reject = undefined
- writer._readyPromiseState = 'fulfilled'
-}
-// eslint-disable-next-line no-redeclarelet DOMException$1=DOMException
-
-function ReadableStreamPipeTo(
- source,
- dest,
- preventClose,
- preventAbort,
- preventCancel,
- signal
-) {
- const reader = AcquireReadableStreamDefaultReader(source)
- const writer = AcquireWritableStreamDefaultWriter(dest)
- source._disturbed = true
- let shuttingDown = false
- // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.
- let currentWrite = promiseResolvedWith(undefined)
- return newPromise((resolve, reject) => {
- let abortAlgorithm
- if (signal !== undefined) {
- abortAlgorithm = () => {
- const error = new DOMException('Aborted', 'AbortError')
- const actions = []
- if (!preventAbort) {
- actions.push(() => {
- if (dest._state === 'writable') {
- return WritableStreamAbort(dest, error)
- }
- return promiseResolvedWith(undefined)
- })
- }
- if (!preventCancel) {
- actions.push(() => {
- if (source._state === 'readable') {
- return ReadableStreamCancel(source, error)
- }
- return promiseResolvedWith(undefined)
- })
- }
- shutdownWithAction(
- () => Promise.all(actions.map((action) => action())),
- true,
- error
- )
- }
- if (signal.aborted) {
- abortAlgorithm()
- return
- }
- signal.addEventListener('abort', abortAlgorithm)
- }
- // Using reader and writer, read all chunks from this and write them to dest
- // - Backpressure must be enforced
- // - Shutdown must stop all activity
- function pipeLoop() {
- return newPromise((resolveLoop, rejectLoop) => {
- function next(done) {
- if (done) {
- resolveLoop()
- } else {
- // Use `PerformPromiseThen` instead of `uponPromise` to avoid
- // adding unnecessary `.catch(rethrowAssertionErrorRejection)` handlers
- PerformPromiseThen(pipeStep(), next, rejectLoop)
- }
- }
- next(false)
- })
- }
- function pipeStep() {
- if (shuttingDown) {
- return promiseResolvedWith(true)
- }
- return PerformPromiseThen(writer._readyPromise, () => {
- return newPromise((resolveRead, rejectRead) => {
- ReadableStreamDefaultReaderRead(reader, {
- _chunkSteps: (chunk) => {
- currentWrite = PerformPromiseThen(
- WritableStreamDefaultWriterWrite(writer, chunk),
- undefined,
- noop$1
- )
- resolveRead(false)
- },
- _closeSteps: () => resolveRead(true),
- _errorSteps: rejectRead,
- })
- })
- })
- }
- // Errors must be propagated forward
- isOrBecomesErrored(source, reader._closedPromise, (storedError) => {
- if (!preventAbort) {
- shutdownWithAction(
- () => WritableStreamAbort(dest, storedError),
- true,
- storedError
- )
- } else {
- shutdown(true, storedError)
- }
- })
- // Errors must be propagated backward
- isOrBecomesErrored(dest, writer._closedPromise, (storedError) => {
- if (!preventCancel) {
- shutdownWithAction(
- () => ReadableStreamCancel(source, storedError),
- true,
- storedError
- )
- } else {
- shutdown(true, storedError)
- }
- })
- // Closing must be propagated forward
- isOrBecomesClosed(source, reader._closedPromise, () => {
- if (!preventClose) {
- shutdownWithAction(() =>
- WritableStreamDefaultWriterCloseWithErrorPropagation(writer)
- )
- } else {
- shutdown()
- }
- })
- // Closing must be propagated backward
- if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === 'closed') {
- const destClosed = new TypeError(
- 'the destination writable stream closed before all data could be piped to it'
- )
- if (!preventCancel) {
- shutdownWithAction(
- () => ReadableStreamCancel(source, destClosed),
- true,
- destClosed
- )
- } else {
- shutdown(true, destClosed)
- }
- }
- setPromiseIsHandledToTrue(pipeLoop())
- function waitForWritesToFinish() {
- // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait
- // for that too.
- const oldCurrentWrite = currentWrite
- return PerformPromiseThen(currentWrite, () =>
- oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined
- )
- }
- function isOrBecomesErrored(stream, promise, action) {
- if (stream._state === 'errored') {
- action(stream._storedError)
- } else {
- uponRejection(promise, action)
- }
- }
- function isOrBecomesClosed(stream, promise, action) {
- if (stream._state === 'closed') {
- action()
- } else {
- uponFulfillment(promise, action)
- }
- }
- function shutdownWithAction(action, originalIsError, originalError) {
- if (shuttingDown) {
- return
- }
- shuttingDown = true
- if (
- dest._state === 'writable' &&
- !WritableStreamCloseQueuedOrInFlight(dest)
- ) {
- uponFulfillment(waitForWritesToFinish(), doTheRest)
- } else {
- doTheRest()
- }
- function doTheRest() {
- uponPromise(
- action(),
- () => finalize(originalIsError, originalError),
- (newError) => finalize(true, newError)
- )
- }
- }
- function shutdown(isError, error) {
- if (shuttingDown) {
- return
- }
- shuttingDown = true
- if (
- dest._state === 'writable' &&
- !WritableStreamCloseQueuedOrInFlight(dest)
- ) {
- uponFulfillment(waitForWritesToFinish(), () => finalize(isError, error))
- } else {
- finalize(isError, error)
- }
- }
- function finalize(isError, error) {
- WritableStreamDefaultWriterRelease(writer)
- ReadableStreamReaderGenericRelease(reader)
- if (signal !== undefined) {
- signal.removeEventListener('abort', abortAlgorithm)
- }
- if (isError) {
- reject(error)
- } else {
- resolve(undefined)
- }
- }
- })
-}
-
-/**
- * Allows control of a {@link ReadableStream | readable stream}'s state and internal queue.
- *
- * @public
- */
-class ReadableStreamDefaultController {
- constructor() {
- throw new TypeError('Illegal constructor')
- }
- /**
- * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is
- * over-full. An underlying source ought to use this information to determine when and how to apply backpressure.
- */
- get desiredSize() {
- if (!IsReadableStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException$1('desiredSize')
- }
- return ReadableStreamDefaultControllerGetDesiredSize(this)
- }
- /**
- * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from
- * the stream, but once those are read, the stream will become closed.
- */
- close() {
- if (!IsReadableStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException$1('close')
- }
- if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {
- throw new TypeError('The stream is not in a state that permits close')
- }
- ReadableStreamDefaultControllerClose(this)
- }
- enqueue(chunk = undefined) {
- if (!IsReadableStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException$1('enqueue')
- }
- if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {
- throw new TypeError('The stream is not in a state that permits enqueue')
- }
- return ReadableStreamDefaultControllerEnqueue(this, chunk)
- }
- /**
- * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.
- */
- error(e = undefined) {
- if (!IsReadableStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException$1('error')
- }
- ReadableStreamDefaultControllerError(this, e)
- }
- /** @internal */
- [CancelSteps](reason) {
- ResetQueue(this)
- const result = this._cancelAlgorithm(reason)
- ReadableStreamDefaultControllerClearAlgorithms(this)
- return result
- }
- /** @internal */
- [PullSteps](readRequest) {
- const stream = this._controlledReadableStream
- if (this._queue.length > 0) {
- const chunk = DequeueValue(this)
- if (this._closeRequested && this._queue.length === 0) {
- ReadableStreamDefaultControllerClearAlgorithms(this)
- ReadableStreamClose(stream)
- } else {
- ReadableStreamDefaultControllerCallPullIfNeeded(this)
- }
- readRequest._chunkSteps(chunk)
- } else {
- ReadableStreamAddReadRequest(stream, readRequest)
- ReadableStreamDefaultControllerCallPullIfNeeded(this)
- }
- }
-}
-Object.defineProperties(ReadableStreamDefaultController.prototype, {
- close: { enumerable: true },
- enqueue: { enumerable: true },
- error: { enumerable: true },
- desiredSize: { enumerable: true },
-})
-// Abstract operations for the ReadableStreamDefaultController.
-function IsReadableStreamDefaultController(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {
- return false
- }
- return x instanceof ReadableStreamDefaultController
-}
-function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
- const shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller)
- if (!shouldPull) {
- return
- }
- if (controller._pulling) {
- controller._pullAgain = true
- return
- }
- controller._pulling = true
- const pullPromise = controller._pullAlgorithm()
- uponPromise(
- pullPromise,
- () => {
- controller._pulling = false
- if (controller._pullAgain) {
- controller._pullAgain = false
- ReadableStreamDefaultControllerCallPullIfNeeded(controller)
- }
- },
- (e) => {
- ReadableStreamDefaultControllerError(controller, e)
- }
- )
-}
-function ReadableStreamDefaultControllerShouldCallPull(controller) {
- const stream = controller._controlledReadableStream
- if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {
- return false
- }
- if (!controller._started) {
- return false
- }
- if (
- IsReadableStreamLocked(stream) &&
- ReadableStreamGetNumReadRequests(stream) > 0
- ) {
- return true
- }
- const desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller)
- if (desiredSize > 0) {
- return true
- }
- return false
-}
-function ReadableStreamDefaultControllerClearAlgorithms(controller) {
- controller._pullAlgorithm = undefined
- controller._cancelAlgorithm = undefined
- controller._strategySizeAlgorithm = undefined
-}
-// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.
-function ReadableStreamDefaultControllerClose(controller) {
- if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {
- return
- }
- const stream = controller._controlledReadableStream
- controller._closeRequested = true
- if (controller._queue.length === 0) {
- ReadableStreamDefaultControllerClearAlgorithms(controller)
- ReadableStreamClose(stream)
- }
-}
-function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
- if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {
- return
- }
- const stream = controller._controlledReadableStream
- if (
- IsReadableStreamLocked(stream) &&
- ReadableStreamGetNumReadRequests(stream) > 0
- ) {
- ReadableStreamFulfillReadRequest(stream, chunk, false)
- } else {
- let chunkSize
- try {
- chunkSize = controller._strategySizeAlgorithm(chunk)
- } catch (chunkSizeE) {
- ReadableStreamDefaultControllerError(controller, chunkSizeE)
- throw chunkSizeE
- }
- try {
- EnqueueValueWithSize(controller, chunk, chunkSize)
- } catch (enqueueE) {
- ReadableStreamDefaultControllerError(controller, enqueueE)
- throw enqueueE
- }
- }
- ReadableStreamDefaultControllerCallPullIfNeeded(controller)
-}
-function ReadableStreamDefaultControllerError(controller, e) {
- const stream = controller._controlledReadableStream
- if (stream._state !== 'readable') {
- return
- }
- ResetQueue(controller)
- ReadableStreamDefaultControllerClearAlgorithms(controller)
- ReadableStreamError(stream, e)
-}
-function ReadableStreamDefaultControllerGetDesiredSize(controller) {
- const state = controller._controlledReadableStream._state
- if (state === 'errored') {
- return null
- }
- if (state === 'closed') {
- return 0
- }
- return controller._strategyHWM - controller._queueTotalSize
-}
-// This is used in the implementation of TransformStream.
-function ReadableStreamDefaultControllerHasBackpressure(controller) {
- if (ReadableStreamDefaultControllerShouldCallPull(controller)) {
- return false
- }
- return true
-}
-function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {
- const state = controller._controlledReadableStream._state
- if (!controller._closeRequested && state === 'readable') {
- return true
- }
- return false
-}
-function SetUpReadableStreamDefaultController(
- stream,
- controller,
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm,
- highWaterMark,
- sizeAlgorithm
-) {
- controller._controlledReadableStream = stream
- controller._queue = undefined
- controller._queueTotalSize = undefined
- ResetQueue(controller)
- controller._started = false
- controller._closeRequested = false
- controller._pullAgain = false
- controller._pulling = false
- controller._strategySizeAlgorithm = sizeAlgorithm
- controller._strategyHWM = highWaterMark
- controller._pullAlgorithm = pullAlgorithm
- controller._cancelAlgorithm = cancelAlgorithm
- stream._readableStreamController = controller
- const startResult = startAlgorithm()
- uponPromise(
- promiseResolvedWith(startResult),
- () => {
- controller._started = true
- ReadableStreamDefaultControllerCallPullIfNeeded(controller)
- },
- (r) => {
- ReadableStreamDefaultControllerError(controller, r)
- }
- )
-}
-function SetUpReadableStreamDefaultControllerFromUnderlyingSource(
- stream,
- underlyingSource,
- highWaterMark,
- sizeAlgorithm
-) {
- const controller = Object.create(ReadableStreamDefaultController.prototype)
- let startAlgorithm = () => undefined
- let pullAlgorithm = () => promiseResolvedWith(undefined)
- let cancelAlgorithm = () => promiseResolvedWith(undefined)
- if (underlyingSource.start !== undefined) {
- startAlgorithm = () => underlyingSource.start(controller)
- }
- if (underlyingSource.pull !== undefined) {
- pullAlgorithm = () => underlyingSource.pull(controller)
- }
- if (underlyingSource.cancel !== undefined) {
- cancelAlgorithm = (reason) => underlyingSource.cancel(reason)
- }
- SetUpReadableStreamDefaultController(
- stream,
- controller,
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm,
- highWaterMark,
- sizeAlgorithm
- )
-}
-// Helper functions for the ReadableStreamDefaultController.
-function defaultControllerBrandCheckException$1(name) {
- return new TypeError(
- `ReadableStreamDefaultController.prototype.${name} can only be used on a ReadableStreamDefaultController`
- )
-}
-
-function ReadableStreamTee(stream, cloneForBranch2) {
- if (IsReadableByteStreamController(stream._readableStreamController)) {
- return ReadableByteStreamTee(stream)
- }
- return ReadableStreamDefaultTee(stream)
-}
-function ReadableStreamDefaultTee(stream, cloneForBranch2) {
- const reader = AcquireReadableStreamDefaultReader(stream)
- let reading = false
- let readAgain = false
- let canceled1 = false
- let canceled2 = false
- let reason1
- let reason2
- let branch1
- let branch2
- let resolveCancelPromise
- const cancelPromise = newPromise((resolve) => {
- resolveCancelPromise = resolve
- })
- function pullAlgorithm() {
- if (reading) {
- readAgain = true
- return promiseResolvedWith(undefined)
- }
- reading = true
- const readRequest = {
- _chunkSteps: (chunk) => {
- // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using
- // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let
- // successful synchronously-available reads get ahead of asynchronously-available errors.
- queueMicrotask(() => {
- readAgain = false
- const chunk1 = chunk
- const chunk2 = chunk
- // There is no way to access the cloning code right now in the reference implementation.
- // If we add one then we'll need an implementation for serializable objects.
- // if (!canceled2 && cloneForBranch2) {
- // chunk2 = StructuredDeserialize(StructuredSerialize(chunk2));
- // }
- if (!canceled1) {
- ReadableStreamDefaultControllerEnqueue(
- branch1._readableStreamController,
- chunk1
- )
- }
- if (!canceled2) {
- ReadableStreamDefaultControllerEnqueue(
- branch2._readableStreamController,
- chunk2
- )
- }
- reading = false
- if (readAgain) {
- pullAlgorithm()
- }
- })
- },
- _closeSteps: () => {
- reading = false
- if (!canceled1) {
- ReadableStreamDefaultControllerClose(
- branch1._readableStreamController
- )
- }
- if (!canceled2) {
- ReadableStreamDefaultControllerClose(
- branch2._readableStreamController
- )
- }
- if (!canceled1 || !canceled2) {
- resolveCancelPromise(undefined)
- }
- },
- _errorSteps: () => {
- reading = false
- },
- }
- ReadableStreamDefaultReaderRead(reader, readRequest)
- return promiseResolvedWith(undefined)
- }
- function cancel1Algorithm(reason) {
- canceled1 = true
- reason1 = reason
- if (canceled2) {
- const compositeReason = CreateArrayFromList([reason1, reason2])
- const cancelResult = ReadableStreamCancel(stream, compositeReason)
- resolveCancelPromise(cancelResult)
- }
- return cancelPromise
- }
- function cancel2Algorithm(reason) {
- canceled2 = true
- reason2 = reason
- if (canceled1) {
- const compositeReason = CreateArrayFromList([reason1, reason2])
- const cancelResult = ReadableStreamCancel(stream, compositeReason)
- resolveCancelPromise(cancelResult)
- }
- return cancelPromise
- }
- function startAlgorithm() {
- // do nothing
- }
- branch1 = CreateReadableStream(
- startAlgorithm,
- pullAlgorithm,
- cancel1Algorithm
- )
- branch2 = CreateReadableStream(
- startAlgorithm,
- pullAlgorithm,
- cancel2Algorithm
- )
- uponRejection(reader._closedPromise, (r) => {
- ReadableStreamDefaultControllerError(branch1._readableStreamController, r)
- ReadableStreamDefaultControllerError(branch2._readableStreamController, r)
- if (!canceled1 || !canceled2) {
- resolveCancelPromise(undefined)
- }
- })
- return [branch1, branch2]
-}
-function ReadableByteStreamTee(stream) {
- let reader = AcquireReadableStreamDefaultReader(stream)
- let reading = false
- let readAgainForBranch1 = false
- let readAgainForBranch2 = false
- let canceled1 = false
- let canceled2 = false
- let reason1
- let reason2
- let branch1
- let branch2
- let resolveCancelPromise
- const cancelPromise = newPromise((resolve) => {
- resolveCancelPromise = resolve
- })
- function forwardReaderError(thisReader) {
- uponRejection(thisReader._closedPromise, (r) => {
- if (thisReader !== reader) {
- return
- }
- ReadableByteStreamControllerError(branch1._readableStreamController, r)
- ReadableByteStreamControllerError(branch2._readableStreamController, r)
- if (!canceled1 || !canceled2) {
- resolveCancelPromise(undefined)
- }
- })
- }
- function pullWithDefaultReader() {
- if (IsReadableStreamBYOBReader(reader)) {
- ReadableStreamReaderGenericRelease(reader)
- reader = AcquireReadableStreamDefaultReader(stream)
- forwardReaderError(reader)
- }
- const readRequest = {
- _chunkSteps: (chunk) => {
- // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using
- // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let
- // successful synchronously-available reads get ahead of asynchronously-available errors.
- queueMicrotask(() => {
- readAgainForBranch1 = false
- readAgainForBranch2 = false
- const chunk1 = chunk
- let chunk2 = chunk
- if (!canceled1 && !canceled2) {
- try {
- chunk2 = CloneAsUint8Array(chunk)
- } catch (cloneE) {
- ReadableByteStreamControllerError(
- branch1._readableStreamController,
- cloneE
- )
- ReadableByteStreamControllerError(
- branch2._readableStreamController,
- cloneE
- )
- resolveCancelPromise(ReadableStreamCancel(stream, cloneE))
- return
- }
- }
- if (!canceled1) {
- ReadableByteStreamControllerEnqueue(
- branch1._readableStreamController,
- chunk1
- )
- }
- if (!canceled2) {
- ReadableByteStreamControllerEnqueue(
- branch2._readableStreamController,
- chunk2
- )
- }
- reading = false
- if (readAgainForBranch1) {
- pull1Algorithm()
- } else if (readAgainForBranch2) {
- pull2Algorithm()
- }
- })
- },
- _closeSteps: () => {
- reading = false
- if (!canceled1) {
- ReadableByteStreamControllerClose(branch1._readableStreamController)
- }
- if (!canceled2) {
- ReadableByteStreamControllerClose(branch2._readableStreamController)
- }
- if (branch1._readableStreamController._pendingPullIntos.length > 0) {
- ReadableByteStreamControllerRespond(
- branch1._readableStreamController,
- 0
- )
- }
- if (branch2._readableStreamController._pendingPullIntos.length > 0) {
- ReadableByteStreamControllerRespond(
- branch2._readableStreamController,
- 0
- )
- }
- if (!canceled1 || !canceled2) {
- resolveCancelPromise(undefined)
- }
- },
- _errorSteps: () => {
- reading = false
- },
- }
- ReadableStreamDefaultReaderRead(reader, readRequest)
- }
- function pullWithBYOBReader(view, forBranch2) {
- if (IsReadableStreamDefaultReader(reader)) {
- ReadableStreamReaderGenericRelease(reader)
- reader = AcquireReadableStreamBYOBReader(stream)
- forwardReaderError(reader)
- }
- const byobBranch = forBranch2 ? branch2 : branch1
- const otherBranch = forBranch2 ? branch1 : branch2
- const readIntoRequest = {
- _chunkSteps: (chunk) => {
- // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using
- // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let
- // successful synchronously-available reads get ahead of asynchronously-available errors.
- queueMicrotask(() => {
- readAgainForBranch1 = false
- readAgainForBranch2 = false
- const byobCanceled = forBranch2 ? canceled2 : canceled1
- const otherCanceled = forBranch2 ? canceled1 : canceled2
- if (!otherCanceled) {
- let clonedChunk
- try {
- clonedChunk = CloneAsUint8Array(chunk)
- } catch (cloneE) {
- ReadableByteStreamControllerError(
- byobBranch._readableStreamController,
- cloneE
- )
- ReadableByteStreamControllerError(
- otherBranch._readableStreamController,
- cloneE
- )
- resolveCancelPromise(ReadableStreamCancel(stream, cloneE))
- return
- }
- if (!byobCanceled) {
- ReadableByteStreamControllerRespondWithNewView(
- byobBranch._readableStreamController,
- chunk
- )
- }
- ReadableByteStreamControllerEnqueue(
- otherBranch._readableStreamController,
- clonedChunk
- )
- } else if (!byobCanceled) {
- ReadableByteStreamControllerRespondWithNewView(
- byobBranch._readableStreamController,
- chunk
- )
- }
- reading = false
- if (readAgainForBranch1) {
- pull1Algorithm()
- } else if (readAgainForBranch2) {
- pull2Algorithm()
- }
- })
- },
- _closeSteps: (chunk) => {
- reading = false
- const byobCanceled = forBranch2 ? canceled2 : canceled1
- const otherCanceled = forBranch2 ? canceled1 : canceled2
- if (!byobCanceled) {
- ReadableByteStreamControllerClose(
- byobBranch._readableStreamController
- )
- }
- if (!otherCanceled) {
- ReadableByteStreamControllerClose(
- otherBranch._readableStreamController
- )
- }
- if (chunk !== undefined) {
- if (!byobCanceled) {
- ReadableByteStreamControllerRespondWithNewView(
- byobBranch._readableStreamController,
- chunk
- )
- }
- if (
- !otherCanceled &&
- otherBranch._readableStreamController._pendingPullIntos.length > 0
- ) {
- ReadableByteStreamControllerRespond(
- otherBranch._readableStreamController,
- 0
- )
- }
- }
- if (!byobCanceled || !otherCanceled) {
- resolveCancelPromise(undefined)
- }
- },
- _errorSteps: () => {
- reading = false
- },
- }
- ReadableStreamBYOBReaderRead(reader, view, readIntoRequest)
- }
- function pull1Algorithm() {
- if (reading) {
- readAgainForBranch1 = true
- return promiseResolvedWith(undefined)
- }
- reading = true
- const byobRequest = ReadableByteStreamControllerGetBYOBRequest(
- branch1._readableStreamController
- )
- if (byobRequest === null) {
- pullWithDefaultReader()
- } else {
- pullWithBYOBReader(byobRequest._view, false)
- }
- return promiseResolvedWith(undefined)
- }
- function pull2Algorithm() {
- if (reading) {
- readAgainForBranch2 = true
- return promiseResolvedWith(undefined)
- }
- reading = true
- const byobRequest = ReadableByteStreamControllerGetBYOBRequest(
- branch2._readableStreamController
- )
- if (byobRequest === null) {
- pullWithDefaultReader()
- } else {
- pullWithBYOBReader(byobRequest._view, true)
- }
- return promiseResolvedWith(undefined)
- }
- function cancel1Algorithm(reason) {
- canceled1 = true
- reason1 = reason
- if (canceled2) {
- const compositeReason = CreateArrayFromList([reason1, reason2])
- const cancelResult = ReadableStreamCancel(stream, compositeReason)
- resolveCancelPromise(cancelResult)
- }
- return cancelPromise
- }
- function cancel2Algorithm(reason) {
- canceled2 = true
- reason2 = reason
- if (canceled1) {
- const compositeReason = CreateArrayFromList([reason1, reason2])
- const cancelResult = ReadableStreamCancel(stream, compositeReason)
- resolveCancelPromise(cancelResult)
- }
- return cancelPromise
- }
- function startAlgorithm() {
- return
- }
- branch1 = CreateReadableByteStream(
- startAlgorithm,
- pull1Algorithm,
- cancel1Algorithm
- )
- branch2 = CreateReadableByteStream(
- startAlgorithm,
- pull2Algorithm,
- cancel2Algorithm
- )
- forwardReaderError(reader)
- return [branch1, branch2]
-}
-
-function convertUnderlyingDefaultOrByteSource(source, context) {
- assertDictionary(source, context)
- const original = source
- const autoAllocateChunkSize =
- original === null || original === void 0
- ? void 0
- : original.autoAllocateChunkSize
- const cancel =
- original === null || original === void 0 ? void 0 : original.cancel
- const pull = original === null || original === void 0 ? void 0 : original.pull
- const start =
- original === null || original === void 0 ? void 0 : original.start
- const type = original === null || original === void 0 ? void 0 : original.type
- return {
- autoAllocateChunkSize:
- autoAllocateChunkSize === undefined
- ? undefined
- : convertUnsignedLongLongWithEnforceRange(
- autoAllocateChunkSize,
- `${context} has member 'autoAllocateChunkSize' that`
- ),
- cancel:
- cancel === undefined
- ? undefined
- : convertUnderlyingSourceCancelCallback(
- cancel,
- original,
- `${context} has member 'cancel' that`
- ),
- pull:
- pull === undefined
- ? undefined
- : convertUnderlyingSourcePullCallback(
- pull,
- original,
- `${context} has member 'pull' that`
- ),
- start:
- start === undefined
- ? undefined
- : convertUnderlyingSourceStartCallback(
- start,
- original,
- `${context} has member 'start' that`
- ),
- type:
- type === undefined
- ? undefined
- : convertReadableStreamType(type, `${context} has member 'type' that`),
- }
-}
-function convertUnderlyingSourceCancelCallback(fn, original, context) {
- assertFunction(fn, context)
- return (reason) => promiseCall(fn, original, [reason])
-}
-function convertUnderlyingSourcePullCallback(fn, original, context) {
- assertFunction(fn, context)
- return (controller) => promiseCall(fn, original, [controller])
-}
-function convertUnderlyingSourceStartCallback(fn, original, context) {
- assertFunction(fn, context)
- return (controller) => reflectCall(fn, original, [controller])
-}
-function convertReadableStreamType(type, context) {
- type = `${type}`
- if (type !== 'bytes') {
- throw new TypeError(
- `${context} '${type}' is not a valid enumeration value for ReadableStreamType`
- )
- }
- return type
-}
-
-function convertReaderOptions(options, context) {
- assertDictionary(options, context)
- const mode = options === null || options === void 0 ? void 0 : options.mode
- return {
- mode:
- mode === undefined
- ? undefined
- : convertReadableStreamReaderMode(
- mode,
- `${context} has member 'mode' that`
- ),
- }
-}
-function convertReadableStreamReaderMode(mode, context) {
- mode = `${mode}`
- if (mode !== 'byob') {
- throw new TypeError(
- `${context} '${mode}' is not a valid enumeration value for ReadableStreamReaderMode`
- )
- }
- return mode
-}
-
-function convertIteratorOptions(options, context) {
- assertDictionary(options, context)
- const preventCancel =
- options === null || options === void 0 ? void 0 : options.preventCancel
- return { preventCancel: Boolean(preventCancel) }
-}
-
-function convertPipeOptions(options, context) {
- assertDictionary(options, context)
- const preventAbort =
- options === null || options === void 0 ? void 0 : options.preventAbort
- const preventCancel =
- options === null || options === void 0 ? void 0 : options.preventCancel
- const preventClose =
- options === null || options === void 0 ? void 0 : options.preventClose
- const signal =
- options === null || options === void 0 ? void 0 : options.signal
- if (signal !== undefined) {
- assertAbortSignal(signal, `${context} has member 'signal' that`)
- }
- return {
- preventAbort: Boolean(preventAbort),
- preventCancel: Boolean(preventCancel),
- preventClose: Boolean(preventClose),
- signal,
- }
-}
-function assertAbortSignal(signal, context) {
- if (!isAbortSignal$1(signal)) {
- throw new TypeError(`${context} is not an AbortSignal.`)
- }
-}
-
-function convertReadableWritablePair(pair, context) {
- assertDictionary(pair, context)
- const readable = pair === null || pair === void 0 ? void 0 : pair.readable
- assertRequiredField(readable, 'readable', 'ReadableWritablePair')
- assertReadableStream(readable, `${context} has member 'readable' that`)
- const writable = pair === null || pair === void 0 ? void 0 : pair.writable
- assertRequiredField(writable, 'writable', 'ReadableWritablePair')
- assertWritableStream(writable, `${context} has member 'writable' that`)
- return { readable, writable }
-}
-
-/**
- * A readable stream represents a source of data, from which you can read.
- *
- * @public
- */
-class ReadableStream {
- constructor(rawUnderlyingSource = {}, rawStrategy = {}) {
- if (rawUnderlyingSource === undefined) {
- rawUnderlyingSource = null
- } else {
- assertObject(rawUnderlyingSource, 'First parameter')
- }
- const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter')
- const underlyingSource = convertUnderlyingDefaultOrByteSource(
- rawUnderlyingSource,
- 'First parameter'
- )
- InitializeReadableStream(this)
- if (underlyingSource.type === 'bytes') {
- if (strategy.size !== undefined) {
- throw new RangeError(
- 'The strategy for a byte stream cannot have a size function'
- )
- }
- const highWaterMark = ExtractHighWaterMark(strategy, 0)
- SetUpReadableByteStreamControllerFromUnderlyingSource(
- this,
- underlyingSource,
- highWaterMark
- )
- } else {
- const sizeAlgorithm = ExtractSizeAlgorithm(strategy)
- const highWaterMark = ExtractHighWaterMark(strategy, 1)
- SetUpReadableStreamDefaultControllerFromUnderlyingSource(
- this,
- underlyingSource,
- highWaterMark,
- sizeAlgorithm
- )
- }
- }
- /**
- * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}.
- */
- get locked() {
- if (!IsReadableStream(this)) {
- throw streamBrandCheckException$1('locked')
- }
- return IsReadableStreamLocked(this)
- }
- /**
- * Cancels the stream, signaling a loss of interest in the stream by a consumer.
- *
- * The supplied `reason` argument will be given to the underlying source's {@link UnderlyingSource.cancel | cancel()}
- * method, which might or might not use it.
- */
- cancel(reason = undefined) {
- if (!IsReadableStream(this)) {
- return promiseRejectedWith(streamBrandCheckException$1('cancel'))
- }
- if (IsReadableStreamLocked(this)) {
- return promiseRejectedWith(
- new TypeError('Cannot cancel a stream that already has a reader')
- )
- }
- return ReadableStreamCancel(this, reason)
- }
- getReader(rawOptions = undefined) {
- if (!IsReadableStream(this)) {
- throw streamBrandCheckException$1('getReader')
- }
- const options = convertReaderOptions(rawOptions, 'First parameter')
- if (options.mode === undefined) {
- return AcquireReadableStreamDefaultReader(this)
- }
- return AcquireReadableStreamBYOBReader(this)
- }
- pipeThrough(rawTransform, rawOptions = {}) {
- if (!IsReadableStream(this)) {
- throw streamBrandCheckException$1('pipeThrough')
- }
- assertRequiredArgument(rawTransform, 1, 'pipeThrough')
- const transform = convertReadableWritablePair(
- rawTransform,
- 'First parameter'
- )
- const options = convertPipeOptions(rawOptions, 'Second parameter')
- if (IsReadableStreamLocked(this)) {
- throw new TypeError(
- 'ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream'
- )
- }
- if (IsWritableStreamLocked(transform.writable)) {
- throw new TypeError(
- 'ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream'
- )
- }
- const promise = ReadableStreamPipeTo(
- this,
- transform.writable,
- options.preventClose,
- options.preventAbort,
- options.preventCancel,
- options.signal
- )
- setPromiseIsHandledToTrue(promise)
- return transform.readable
- }
- pipeTo(destination, rawOptions = {}) {
- if (!IsReadableStream(this)) {
- return promiseRejectedWith(streamBrandCheckException$1('pipeTo'))
- }
- if (destination === undefined) {
- return promiseRejectedWith(`Parameter 1 is required in 'pipeTo'.`)
- }
- if (!IsWritableStream(destination)) {
- return promiseRejectedWith(
- new TypeError(
- `ReadableStream.prototype.pipeTo's first argument must be a WritableStream`
- )
- )
- }
- let options
- try {
- options = convertPipeOptions(rawOptions, 'Second parameter')
- } catch (e) {
- return promiseRejectedWith(e)
- }
- if (IsReadableStreamLocked(this)) {
- return promiseRejectedWith(
- new TypeError(
- 'ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'
- )
- )
- }
- if (IsWritableStreamLocked(destination)) {
- return promiseRejectedWith(
- new TypeError(
- 'ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'
- )
- )
- }
- return ReadableStreamPipeTo(
- this,
- destination,
- options.preventClose,
- options.preventAbort,
- options.preventCancel,
- options.signal
- )
- }
- /**
- * Tees this readable stream, returning a two-element array containing the two resulting branches as
- * new {@link ReadableStream} instances.
- *
- * Teeing a stream will lock it, preventing any other consumer from acquiring a reader.
- * To cancel the stream, cancel both of the resulting branches; a composite cancellation reason will then be
- * propagated to the stream's underlying source.
- *
- * Note that the chunks seen in each branch will be the same object. If the chunks are not immutable,
- * this could allow interference between the two branches.
- */
- tee() {
- if (!IsReadableStream(this)) {
- throw streamBrandCheckException$1('tee')
- }
- const branches = ReadableStreamTee(this)
- return CreateArrayFromList(branches)
- }
- values(rawOptions = undefined) {
- if (!IsReadableStream(this)) {
- throw streamBrandCheckException$1('values')
- }
- const options = convertIteratorOptions(rawOptions, 'First parameter')
- return AcquireReadableStreamAsyncIterator(this, options.preventCancel)
- }
-}
-Object.defineProperties(ReadableStream.prototype, {
- cancel: { enumerable: true },
- getReader: { enumerable: true },
- pipeThrough: { enumerable: true },
- pipeTo: { enumerable: true },
- tee: { enumerable: true },
- values: { enumerable: true },
- locked: { enumerable: true },
-})
-// Abstract operations for the ReadableStream.
-// Throws if and only if startAlgorithm throws.
-function CreateReadableStream(
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm,
- highWaterMark = 1,
- sizeAlgorithm = () => 1
-) {
- const stream = Object.create(ReadableStream.prototype)
- InitializeReadableStream(stream)
- const controller = Object.create(ReadableStreamDefaultController.prototype)
- SetUpReadableStreamDefaultController(
- stream,
- controller,
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm,
- highWaterMark,
- sizeAlgorithm
- )
- return stream
-}
-// Throws if and only if startAlgorithm throws.
-function CreateReadableByteStream(
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm
-) {
- const stream = Object.create(ReadableStream.prototype)
- InitializeReadableStream(stream)
- const controller = Object.create(ReadableByteStreamController.prototype)
- SetUpReadableByteStreamController(
- stream,
- controller,
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm,
- 0,
- undefined
- )
- return stream
-}
-function InitializeReadableStream(stream) {
- stream._state = 'readable'
- stream._reader = undefined
- stream._storedError = undefined
- stream._disturbed = false
-}
-function IsReadableStream(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {
- return false
- }
- return x instanceof ReadableStream
-}
-function IsReadableStreamLocked(stream) {
- if (stream._reader === undefined) {
- return false
- }
- return true
-}
-// ReadableStream API exposed for controllers.
-function ReadableStreamCancel(stream, reason) {
- stream._disturbed = true
- if (stream._state === 'closed') {
- return promiseResolvedWith(undefined)
- }
- if (stream._state === 'errored') {
- return promiseRejectedWith(stream._storedError)
- }
- ReadableStreamClose(stream)
- const reader = stream._reader
- if (reader !== undefined && IsReadableStreamBYOBReader(reader)) {
- reader._readIntoRequests.forEach((readIntoRequest) => {
- readIntoRequest._closeSteps(undefined)
- })
- reader._readIntoRequests = new SimpleQueue()
- }
- const sourceCancelPromise =
- stream._readableStreamController[CancelSteps](reason)
- return transformPromiseWith(sourceCancelPromise, noop$1)
-}
-function ReadableStreamClose(stream) {
- stream._state = 'closed'
- const reader = stream._reader
- if (reader === undefined) {
- return
- }
- defaultReaderClosedPromiseResolve(reader)
- if (IsReadableStreamDefaultReader(reader)) {
- reader._readRequests.forEach((readRequest) => {
- readRequest._closeSteps()
- })
- reader._readRequests = new SimpleQueue()
- }
-}
-function ReadableStreamError(stream, e) {
- stream._state = 'errored'
- stream._storedError = e
- const reader = stream._reader
- if (reader === undefined) {
- return
- }
- defaultReaderClosedPromiseReject(reader, e)
- if (IsReadableStreamDefaultReader(reader)) {
- reader._readRequests.forEach((readRequest) => {
- readRequest._errorSteps(e)
- })
- reader._readRequests = new SimpleQueue()
- } else {
- reader._readIntoRequests.forEach((readIntoRequest) => {
- readIntoRequest._errorSteps(e)
- })
- reader._readIntoRequests = new SimpleQueue()
- }
-}
-// Helper functions for the ReadableStream.
-function streamBrandCheckException$1(name) {
- return new TypeError(
- `ReadableStream.prototype.${name} can only be used on a ReadableStream`
- )
-}
-
-function convertQueuingStrategyInit(init, context) {
- assertDictionary(init, context)
- const highWaterMark =
- init === null || init === void 0 ? void 0 : init.highWaterMark
- assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit')
- return {
- highWaterMark: convertUnrestrictedDouble(highWaterMark),
- }
-}
-
-// The size function must not have a prototype property nor be a constructor
-const byteLengthSizeFunction = (chunk) => {
- return chunk.byteLength
-}
-Object.defineProperty(byteLengthSizeFunction, 'name', {
- value: 'size',
- configurable: true,
-})
-/**
- * A queuing strategy that counts the number of bytes in each chunk.
- *
- * @public
- */
-class ByteLengthQueuingStrategy {
- constructor(options) {
- assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy')
- options = convertQueuingStrategyInit(options, 'First parameter')
- this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark
- }
- /**
- * Returns the high water mark provided to the constructor.
- */
- get highWaterMark() {
- if (!IsByteLengthQueuingStrategy(this)) {
- throw byteLengthBrandCheckException('highWaterMark')
- }
- return this._byteLengthQueuingStrategyHighWaterMark
- }
- /**
- * Measures the size of `chunk` by returning the value of its `byteLength` property.
- */
- get size() {
- if (!IsByteLengthQueuingStrategy(this)) {
- throw byteLengthBrandCheckException('size')
- }
- return byteLengthSizeFunction
- }
-}
-Object.defineProperties(ByteLengthQueuingStrategy.prototype, {
- highWaterMark: { enumerable: true },
- size: { enumerable: true },
-})
-// Helper functions for the ByteLengthQueuingStrategy.
-function byteLengthBrandCheckException(name) {
- return new TypeError(
- `ByteLengthQueuingStrategy.prototype.${name} can only be used on a ByteLengthQueuingStrategy`
- )
-}
-function IsByteLengthQueuingStrategy(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (
- !Object.prototype.hasOwnProperty.call(
- x,
- '_byteLengthQueuingStrategyHighWaterMark'
- )
- ) {
- return false
- }
- return x instanceof ByteLengthQueuingStrategy
-}
-
-// The size function must not have a prototype property nor be a constructor
-const countSizeFunction = () => {
- return 1
-}
-Object.defineProperty(countSizeFunction, 'name', {
- value: 'size',
- configurable: true,
-})
-/**
- * A queuing strategy that counts the number of chunks.
- *
- * @public
- */
-class CountQueuingStrategy {
- constructor(options) {
- assertRequiredArgument(options, 1, 'CountQueuingStrategy')
- options = convertQueuingStrategyInit(options, 'First parameter')
- this._countQueuingStrategyHighWaterMark = options.highWaterMark
- }
- /**
- * Returns the high water mark provided to the constructor.
- */
- get highWaterMark() {
- if (!IsCountQueuingStrategy(this)) {
- throw countBrandCheckException('highWaterMark')
- }
- return this._countQueuingStrategyHighWaterMark
- }
- /**
- * Measures the size of `chunk` by always returning 1.
- * This ensures that the total queue size is a count of the number of chunks in the queue.
- */
- get size() {
- if (!IsCountQueuingStrategy(this)) {
- throw countBrandCheckException('size')
- }
- return countSizeFunction
- }
-}
-Object.defineProperties(CountQueuingStrategy.prototype, {
- highWaterMark: { enumerable: true },
- size: { enumerable: true },
-})
-// Helper functions for the CountQueuingStrategy.
-function countBrandCheckException(name) {
- return new TypeError(
- `CountQueuingStrategy.prototype.${name} can only be used on a CountQueuingStrategy`
- )
-}
-function IsCountQueuingStrategy(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (
- !Object.prototype.hasOwnProperty.call(
- x,
- '_countQueuingStrategyHighWaterMark'
- )
- ) {
- return false
- }
- return x instanceof CountQueuingStrategy
-}
-
-function convertTransformer(original, context) {
- assertDictionary(original, context)
- const flush =
- original === null || original === void 0 ? void 0 : original.flush
- const readableType =
- original === null || original === void 0 ? void 0 : original.readableType
- const start =
- original === null || original === void 0 ? void 0 : original.start
- const transform =
- original === null || original === void 0 ? void 0 : original.transform
- const writableType =
- original === null || original === void 0 ? void 0 : original.writableType
- return {
- flush:
- flush === undefined
- ? undefined
- : convertTransformerFlushCallback(
- flush,
- original,
- `${context} has member 'flush' that`
- ),
- readableType,
- start:
- start === undefined
- ? undefined
- : convertTransformerStartCallback(
- start,
- original,
- `${context} has member 'start' that`
- ),
- transform:
- transform === undefined
- ? undefined
- : convertTransformerTransformCallback(
- transform,
- original,
- `${context} has member 'transform' that`
- ),
- writableType,
- }
-}
-function convertTransformerFlushCallback(fn, original, context) {
- assertFunction(fn, context)
- return (controller) => promiseCall(fn, original, [controller])
-}
-function convertTransformerStartCallback(fn, original, context) {
- assertFunction(fn, context)
- return (controller) => reflectCall(fn, original, [controller])
-}
-function convertTransformerTransformCallback(fn, original, context) {
- assertFunction(fn, context)
- return (chunk, controller) => promiseCall(fn, original, [chunk, controller])
-}
-
-// Class TransformStream
-/**
- * A transform stream consists of a pair of streams: a {@link WritableStream | writable stream},
- * known as its writable side, and a {@link ReadableStream | readable stream}, known as its readable side.
- * In a manner specific to the transform stream in question, writes to the writable side result in new data being
- * made available for reading from the readable side.
- *
- * @public
- */
-class TransformStream {
- constructor(
- rawTransformer = {},
- rawWritableStrategy = {},
- rawReadableStrategy = {}
- ) {
- if (rawTransformer === undefined) {
- rawTransformer = null
- }
- const writableStrategy = convertQueuingStrategy(
- rawWritableStrategy,
- 'Second parameter'
- )
- const readableStrategy = convertQueuingStrategy(
- rawReadableStrategy,
- 'Third parameter'
- )
- const transformer = convertTransformer(rawTransformer, 'First parameter')
- if (transformer.readableType !== undefined) {
- throw new RangeError('Invalid readableType specified')
- }
- if (transformer.writableType !== undefined) {
- throw new RangeError('Invalid writableType specified')
- }
- const readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0)
- const readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy)
- const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1)
- const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy)
- let startPromise_resolve
- const startPromise = newPromise((resolve) => {
- startPromise_resolve = resolve
- })
- InitializeTransformStream(
- this,
- startPromise,
- writableHighWaterMark,
- writableSizeAlgorithm,
- readableHighWaterMark,
- readableSizeAlgorithm
- )
- SetUpTransformStreamDefaultControllerFromTransformer(this, transformer)
- if (transformer.start !== undefined) {
- startPromise_resolve(transformer.start(this._transformStreamController))
- } else {
- startPromise_resolve(undefined)
- }
- }
- /**
- * The readable side of the transform stream.
- */
- get readable() {
- if (!IsTransformStream(this)) {
- throw streamBrandCheckException('readable')
- }
- return this._readable
- }
- /**
- * The writable side of the transform stream.
- */
- get writable() {
- if (!IsTransformStream(this)) {
- throw streamBrandCheckException('writable')
- }
- return this._writable
- }
-}
-Object.defineProperties(TransformStream.prototype, {
- readable: { enumerable: true },
- writable: { enumerable: true },
-})
-function InitializeTransformStream(
- stream,
- startPromise,
- writableHighWaterMark,
- writableSizeAlgorithm,
- readableHighWaterMark,
- readableSizeAlgorithm
-) {
- function startAlgorithm() {
- return startPromise
- }
- function writeAlgorithm(chunk) {
- return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk)
- }
- function abortAlgorithm(reason) {
- return TransformStreamDefaultSinkAbortAlgorithm(stream, reason)
- }
- function closeAlgorithm() {
- return TransformStreamDefaultSinkCloseAlgorithm(stream)
- }
- stream._writable = CreateWritableStream(
- startAlgorithm,
- writeAlgorithm,
- closeAlgorithm,
- abortAlgorithm,
- writableHighWaterMark,
- writableSizeAlgorithm
- )
- function pullAlgorithm() {
- return TransformStreamDefaultSourcePullAlgorithm(stream)
- }
- function cancelAlgorithm(reason) {
- TransformStreamErrorWritableAndUnblockWrite(stream, reason)
- return promiseResolvedWith(undefined)
- }
- stream._readable = CreateReadableStream(
- startAlgorithm,
- pullAlgorithm,
- cancelAlgorithm,
- readableHighWaterMark,
- readableSizeAlgorithm
- )
- // The [[backpressure]] slot is set to undefined so that it can be initialised by TransformStreamSetBackpressure.
- stream._backpressure = undefined
- stream._backpressureChangePromise = undefined
- stream._backpressureChangePromise_resolve = undefined
- TransformStreamSetBackpressure(stream, true)
- stream._transformStreamController = undefined
-}
-function IsTransformStream(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {
- return false
- }
- return x instanceof TransformStream
-}
-// This is a no-op if both sides are already errored.
-function TransformStreamError(stream, e) {
- ReadableStreamDefaultControllerError(
- stream._readable._readableStreamController,
- e
- )
- TransformStreamErrorWritableAndUnblockWrite(stream, e)
-}
-function TransformStreamErrorWritableAndUnblockWrite(stream, e) {
- TransformStreamDefaultControllerClearAlgorithms(
- stream._transformStreamController
- )
- WritableStreamDefaultControllerErrorIfNeeded(
- stream._writable._writableStreamController,
- e
- )
- if (stream._backpressure) {
- // Pretend that pull() was called to permit any pending write() calls to complete. TransformStreamSetBackpressure()
- // cannot be called from enqueue() or pull() once the ReadableStream is errored, so this will will be the final time
- // _backpressure is set.
- TransformStreamSetBackpressure(stream, false)
- }
-}
-function TransformStreamSetBackpressure(stream, backpressure) {
- // Passes also when called during construction.
- if (stream._backpressureChangePromise !== undefined) {
- stream._backpressureChangePromise_resolve()
- }
- stream._backpressureChangePromise = newPromise((resolve) => {
- stream._backpressureChangePromise_resolve = resolve
- })
- stream._backpressure = backpressure
-}
-// Class TransformStreamDefaultController
-/**
- * Allows control of the {@link ReadableStream} and {@link WritableStream} of the associated {@link TransformStream}.
- *
- * @public
- */
-class TransformStreamDefaultController {
- constructor() {
- throw new TypeError('Illegal constructor')
- }
- /**
- * Returns the desired size to fill the readable side’s internal queue. It can be negative, if the queue is over-full.
- */
- get desiredSize() {
- if (!IsTransformStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException('desiredSize')
- }
- const readableController =
- this._controlledTransformStream._readable._readableStreamController
- return ReadableStreamDefaultControllerGetDesiredSize(readableController)
- }
- enqueue(chunk = undefined) {
- if (!IsTransformStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException('enqueue')
- }
- TransformStreamDefaultControllerEnqueue(this, chunk)
- }
- /**
- * Errors both the readable side and the writable side of the controlled transform stream, making all future
- * interactions with it fail with the given error `e`. Any chunks queued for transformation will be discarded.
- */
- error(reason = undefined) {
- if (!IsTransformStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException('error')
- }
- TransformStreamDefaultControllerError(this, reason)
- }
- /**
- * Closes the readable side and errors the writable side of the controlled transform stream. This is useful when the
- * transformer only needs to consume a portion of the chunks written to the writable side.
- */
- terminate() {
- if (!IsTransformStreamDefaultController(this)) {
- throw defaultControllerBrandCheckException('terminate')
- }
- TransformStreamDefaultControllerTerminate(this)
- }
-}
-Object.defineProperties(TransformStreamDefaultController.prototype, {
- enqueue: { enumerable: true },
- error: { enumerable: true },
- terminate: { enumerable: true },
- desiredSize: { enumerable: true },
-})
-// Transform Stream Default Controller Abstract Operations
-function IsTransformStreamDefaultController(x) {
- if (!typeIsObject(x)) {
- return false
- }
- if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {
- return false
- }
- return x instanceof TransformStreamDefaultController
-}
-function SetUpTransformStreamDefaultController(
- stream,
- controller,
- transformAlgorithm,
- flushAlgorithm
-) {
- controller._controlledTransformStream = stream
- stream._transformStreamController = controller
- controller._transformAlgorithm = transformAlgorithm
- controller._flushAlgorithm = flushAlgorithm
-}
-function SetUpTransformStreamDefaultControllerFromTransformer(
- stream,
- transformer
-) {
- const controller = Object.create(TransformStreamDefaultController.prototype)
- let transformAlgorithm = (chunk) => {
- try {
- TransformStreamDefaultControllerEnqueue(controller, chunk)
- return promiseResolvedWith(undefined)
- } catch (transformResultE) {
- return promiseRejectedWith(transformResultE)
- }
- }
- let flushAlgorithm = () => promiseResolvedWith(undefined)
- if (transformer.transform !== undefined) {
- transformAlgorithm = (chunk) => transformer.transform(chunk, controller)
- }
- if (transformer.flush !== undefined) {
- flushAlgorithm = () => transformer.flush(controller)
- }
- SetUpTransformStreamDefaultController(
- stream,
- controller,
- transformAlgorithm,
- flushAlgorithm
- )
-}
-function TransformStreamDefaultControllerClearAlgorithms(controller) {
- controller._transformAlgorithm = undefined
- controller._flushAlgorithm = undefined
-}
-function TransformStreamDefaultControllerEnqueue(controller, chunk) {
- const stream = controller._controlledTransformStream
- const readableController = stream._readable._readableStreamController
- if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) {
- throw new TypeError('Readable side is not in a state that permits enqueue')
- }
- // We throttle transform invocations based on the backpressure of the ReadableStream, but we still
- // accept TransformStreamDefaultControllerEnqueue() calls.
- try {
- ReadableStreamDefaultControllerEnqueue(readableController, chunk)
- } catch (e) {
- // This happens when readableStrategy.size() throws.
- TransformStreamErrorWritableAndUnblockWrite(stream, e)
- throw stream._readable._storedError
- }
- const backpressure =
- ReadableStreamDefaultControllerHasBackpressure(readableController)
- if (backpressure !== stream._backpressure) {
- TransformStreamSetBackpressure(stream, true)
- }
-}
-function TransformStreamDefaultControllerError(controller, e) {
- TransformStreamError(controller._controlledTransformStream, e)
-}
-function TransformStreamDefaultControllerPerformTransform(controller, chunk) {
- const transformPromise = controller._transformAlgorithm(chunk)
- return transformPromiseWith(transformPromise, undefined, (r) => {
- TransformStreamError(controller._controlledTransformStream, r)
- throw r
- })
-}
-function TransformStreamDefaultControllerTerminate(controller) {
- const stream = controller._controlledTransformStream
- const readableController = stream._readable._readableStreamController
- ReadableStreamDefaultControllerClose(readableController)
- const error = new TypeError('TransformStream terminated')
- TransformStreamErrorWritableAndUnblockWrite(stream, error)
-}
-// TransformStreamDefaultSink Algorithms
-function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) {
- const controller = stream._transformStreamController
- if (stream._backpressure) {
- const backpressureChangePromise = stream._backpressureChangePromise
- return transformPromiseWith(backpressureChangePromise, () => {
- const writable = stream._writable
- const state = writable._state
- if (state === 'erroring') {
- throw writable._storedError
- }
- return TransformStreamDefaultControllerPerformTransform(controller, chunk)
- })
- }
- return TransformStreamDefaultControllerPerformTransform(controller, chunk)
-}
-function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) {
- // abort() is not called synchronously, so it is possible for abort() to be called when the stream is already
- // errored.
- TransformStreamError(stream, reason)
- return promiseResolvedWith(undefined)
-}
-function TransformStreamDefaultSinkCloseAlgorithm(stream) {
- // stream._readable cannot change after construction, so caching it across a call to user code is safe.
- const readable = stream._readable
- const controller = stream._transformStreamController
- const flushPromise = controller._flushAlgorithm()
- TransformStreamDefaultControllerClearAlgorithms(controller)
- // Return a promise that is fulfilled with undefined on success.
- return transformPromiseWith(
- flushPromise,
- () => {
- if (readable._state === 'errored') {
- throw readable._storedError
- }
- ReadableStreamDefaultControllerClose(readable._readableStreamController)
- },
- (r) => {
- TransformStreamError(stream, r)
- throw readable._storedError
- }
- )
-}
-// TransformStreamDefaultSource Algorithms
-function TransformStreamDefaultSourcePullAlgorithm(stream) {
- // Invariant. Enforced by the promises returned by start() and pull().
- TransformStreamSetBackpressure(stream, false)
- // Prevent the next pull() call until there is backpressure.
- return stream._backpressureChangePromise
-}
-// Helper functions for the TransformStreamDefaultController.
-function defaultControllerBrandCheckException(name) {
- return new TypeError(
- `TransformStreamDefaultController.prototype.${name} can only be used on a TransformStreamDefaultController`
- )
-}
-// Helper functions for the TransformStream.
-function streamBrandCheckException(name) {
- return new TypeError(
- `TransformStream.prototype.${name} can only be used on a TransformStream`
- )
-}
-
-/* c8 ignore start */
-// 64 KiB (same size chrome slice theirs blob into Uint8array's)
-const POOL_SIZE$1 = 65536
-
-try {
- // Don't use node: prefix for this, require+node: is not supported until node v14.14
- // Only `import()` can use prefix in 12.20 and later
- const { Blob } = require('buffer')
- if (Blob && !Blob.prototype.stream) {
- Blob.prototype.stream = function name(params) {
- let position = 0
- const blob = this
-
- return new ReadableStream({
- type: 'bytes',
- async pull(ctrl) {
- const chunk = blob.slice(
- position,
- Math.min(blob.size, position + POOL_SIZE$1)
- )
- const buffer = await chunk.arrayBuffer()
- position += buffer.byteLength
- ctrl.enqueue(new Uint8Array(buffer))
-
- if (position === blob.size) {
- ctrl.close()
- }
- },
- })
- }
- }
-} catch (error) {}
-/* c8 ignore end */
-
-// 64 KiB (same size chrome slice theirs blob into Uint8array's)
-const POOL_SIZE = 65536
-
-/** @param {(Blob | Uint8Array)[]} parts */
-async function* toIterator(parts, clone = true) {
- for (const part of parts) {
- if ('stream' in part) {
- yield* /** @type {AsyncIterableIterator<Uint8Array>} */ (part.stream())
- } else if (ArrayBuffer.isView(part)) {
- if (clone) {
- let position = part.byteOffset
- const end = part.byteOffset + part.byteLength
- while (position !== end) {
- const size = Math.min(end - position, POOL_SIZE)
- const chunk = part.buffer.slice(position, position + size)
- position += chunk.byteLength
- yield new Uint8Array(chunk)
- }
- } else {
- yield part
- }
- /* c8 ignore next 10 */
- } else {
- // For blobs that have arrayBuffer but no stream method (nodes buffer.Blob)
- let position = 0,
- b = /** @type {Blob} */ (part)
- while (position !== b.size) {
- const chunk = b.slice(position, Math.min(b.size, position + POOL_SIZE))
- const buffer = await chunk.arrayBuffer()
- position += buffer.byteLength
- yield new Uint8Array(buffer)
- }
- }
- }
-}
-
-const _Blob = class Blob {
- /** @type {Array.<(Blob|Uint8Array)>} */
- #parts = []
- #type = ''
- #size = 0
- #endings = 'transparent'
-
- /**
- * The Blob() constructor returns a new Blob object. The content
- * of the blob consists of the concatenation of the values given
- * in the parameter array.
- *
- * @param {*} blobParts
- * @param {{ type?: string, endings?: string }} [options]
- */
- constructor(blobParts = [], options = {}) {
- if (typeof blobParts !== 'object' || blobParts === null) {
- throw new TypeError(
- "Failed to construct 'Blob': The provided value cannot be converted to a sequence."
- )
- }
-
- if (typeof blobParts[Symbol.iterator] !== 'function') {
- throw new TypeError(
- "Failed to construct 'Blob': The object must have a callable @@iterator property."
- )
- }
-
- if (typeof options !== 'object' && typeof options !== 'function') {
- throw new TypeError(
- "Failed to construct 'Blob': parameter 2 cannot convert to dictionary."
- )
- }
-
- if (options === null) options = {}
-
- const encoder = new TextEncoder()
- for (const element of blobParts) {
- let part
- if (ArrayBuffer.isView(element)) {
- part = new Uint8Array(
- element.buffer.slice(
- element.byteOffset,
- element.byteOffset + element.byteLength
- )
- )
- } else if (element instanceof ArrayBuffer) {
- part = new Uint8Array(element.slice(0))
- } else if (element instanceof Blob) {
- part = element
- } else {
- part = encoder.encode(`${element}`)
- }
-
- this.#size += ArrayBuffer.isView(part) ? part.byteLength : part.size
- this.#parts.push(part)
- }
-
- this.#endings = `${
- options.endings === undefined ? 'transparent' : options.endings
- }`
- const type = options.type === undefined ? '' : String(options.type)
- this.#type = /^[\x20-\x7E]*$/.test(type) ? type : ''
- }
-
- /**
- * The Blob interface's size property returns the
- * size of the Blob in bytes.
- */
- get size() {
- return this.#size
- }
-
- /**
- * The type property of a Blob object returns the MIME type of the file.
- */
- get type() {
- return this.#type
- }
-
- /**
- * The text() method in the Blob interface returns a Promise
- * that resolves with a string containing the contents of
- * the blob, interpreted as UTF-8.
- *
- * @return {Promise<string>}
- */
- async text() {
- // More optimized than using this.arrayBuffer()
- // that requires twice as much ram
- const decoder = new TextDecoder()
- let str = ''
- for await (const part of toIterator(this.#parts, false)) {
- str += decoder.decode(part, { stream: true })
- }
- // Remaining
- str += decoder.decode()
- return str
- }
-
- /**
- * The arrayBuffer() method in the Blob interface returns a
- * Promise that resolves with the contents of the blob as
- * binary data contained in an ArrayBuffer.
- *
- * @return {Promise<ArrayBuffer>}
- */
- async arrayBuffer() {
- // Easier way... Just a unnecessary overhead
- // const view = new Uint8Array(this.size);
- // await this.stream().getReader({mode: 'byob'}).read(view);
- // return view.buffer;
-
- const data = new Uint8Array(this.size)
- let offset = 0
- for await (const chunk of toIterator(this.#parts, false)) {
- data.set(chunk, offset)
- offset += chunk.length
- }
-
- return data.buffer
- }
-
- stream() {
- const it = toIterator(this.#parts, true)
-
- return new ReadableStream({
- // @ts-ignore
- type: 'bytes',
- async pull(ctrl) {
- const chunk = await it.next()
- chunk.done ? ctrl.close() : ctrl.enqueue(chunk.value)
- },
-
- async cancel() {
- await it.return()
- },
- })
- }
-
- /**
- * The Blob interface's slice() method creates and returns a
- * new Blob object which contains data from a subset of the
- * blob on which it's called.
- *
- * @param {number} [start]
- * @param {number} [end]
- * @param {string} [type]
- */
- slice(start = 0, end = this.size, type = '') {
- const { size } = this
-
- let relativeStart =
- start < 0 ? Math.max(size + start, 0) : Math.min(start, size)
- let relativeEnd = end < 0 ? Math.max(size + end, 0) : Math.min(end, size)
-
- const span = Math.max(relativeEnd - relativeStart, 0)
- const parts = this.#parts
- const blobParts = []
- let added = 0
-
- for (const part of parts) {
- // don't add the overflow to new blobParts
- if (added >= span) {
- break
- }
-
- const size = ArrayBuffer.isView(part) ? part.byteLength : part.size
- if (relativeStart && size <= relativeStart) {
- // Skip the beginning and change the relative
- // start & end position as we skip the unwanted parts
- relativeStart -= size
- relativeEnd -= size
- } else {
- let chunk
- if (ArrayBuffer.isView(part)) {
- chunk = part.subarray(relativeStart, Math.min(size, relativeEnd))
- added += chunk.byteLength
- } else {
- chunk = part.slice(relativeStart, Math.min(size, relativeEnd))
- added += chunk.size
- }
- relativeEnd -= size
- blobParts.push(chunk)
- relativeStart = 0 // All next sequential parts should start at 0
- }
- }
-
- const blob = new Blob([], { type: String(type).toLowerCase() })
- blob.#size = span
- blob.#parts = blobParts
-
- return blob
- }
-
- get [Symbol.toStringTag]() {
- return 'Blob'
- }
-
- static [Symbol.hasInstance](object) {
- return (
- object &&
- typeof object === 'object' &&
- typeof object.constructor === 'function' &&
- (typeof object.stream === 'function' ||
- typeof object.arrayBuffer === 'function') &&
- /^(Blob|File)$/.test(object[Symbol.toStringTag])
- )
- }
-}
-
-Object.defineProperties(_Blob.prototype, {
- size: { enumerable: true },
- type: { enumerable: true },
- slice: { enumerable: true },
-})
-
-/** @type {typeof globalThis.Blob} */
-const Blob = _Blob
-
-const _File = class File extends Blob {
- #lastModified = 0
- #name = ''
-
- /**
- * @param {*[]} fileBits
- * @param {string} fileName
- * @param {{lastModified?: number, type?: string}} options
- */ // @ts-ignore
- constructor(fileBits, fileName, options = {}) {
- if (arguments.length < 2) {
- throw new TypeError(
- `Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`
- )
- }
- super(fileBits, options)
-
- if (options === null) options = {}
-
- // Simulate WebIDL type casting for NaN value in lastModified option.
- const lastModified =
- options.lastModified === undefined
- ? Date.now()
- : Number(options.lastModified)
- if (!Number.isNaN(lastModified)) {
- this.#lastModified = lastModified
- }
-
- this.#name = String(fileName)
- }
-
- get name() {
- return this.#name
- }
-
- get lastModified() {
- return this.#lastModified
- }
-
- get [Symbol.toStringTag]() {
- return 'File'
- }
-
- static [Symbol.hasInstance](object) {
- return (
- !!object &&
- object instanceof Blob &&
- /^(File)$/.test(object[Symbol.toStringTag])
- )
- }
-}
-
-/** @type {typeof globalThis.File} */ // @ts-ignore
-const File = _File
-
-class CustomEvent extends Event {
- constructor(type, params) {
- params = Object(params)
- super(type, params)
- if ('detail' in params) this.detail = params.detail
- }
-}
-allowStringTag(CustomEvent)
-
-class TreeWalker {
- parentNode() {
- return null
- }
- firstChild() {
- return null
- }
- lastChild() {
- return null
- }
- previousSibling() {
- return null
- }
- nextSibling() {
- return null
- }
- previousNode() {
- return null
- }
- nextNode() {
- return null
- }
- get currentNode() {
- const internals = internalsOf(this, 'TreeWalker', 'currentNode')
- return internals.currentNode
- }
- get root() {
- const internals = internalsOf(this, 'TreeWalker', 'root')
- return internals.root
- }
- get whatToShow() {
- const internals = internalsOf(this, 'TreeWalker', 'whatToShow')
- return internals.whatToShow
- }
-}
-allowStringTag(TreeWalker)
-
-const INTERNAL$1 = { tick: 0, pool: new Map() }
-function requestIdleCallback(callback) {
- if (!INTERNAL$1.pool.size) {
- setTimeout$1(() => {
- const next = __performance_now()
- for (const func of INTERNAL$1.pool.values()) {
- func(next)
- }
- INTERNAL$1.pool.clear()
- }, 1000 / 16)
- }
- const func = __function_bind(callback, undefined)
- const tick = ++INTERNAL$1.tick
- INTERNAL$1.pool.set(tick, func)
- return tick
-}
-function cancelIdleCallback(requestId) {
- const timeout = INTERNAL$1.pool.get(requestId)
- if (timeout) {
- clearTimeout$1(timeout)
- INTERNAL$1.pool.delete(requestId)
- }
-}
-
-/**
- * Returns a `Buffer` instance from the given data URI `uri`.
- *
- * @param {String} uri Data URI to turn into a Buffer instance
- * @returns {Buffer} Buffer instance from Data URI
- * @api public
- */
-function dataUriToBuffer(uri) {
- if (!/^data:/i.test(uri)) {
- throw new TypeError(
- '`uri` does not appear to be a Data URI (must begin with "data:")'
- )
- }
- // strip newlines
- uri = uri.replace(/\r?\n/g, '')
- // split the URI up into the "metadata" and the "data" portions
- const firstComma = uri.indexOf(',')
- if (firstComma === -1 || firstComma <= 4) {
- throw new TypeError('malformed data: URI')
- }
- // remove the "data:" scheme and parse the metadata
- const meta = uri.substring(5, firstComma).split(';')
- let charset = ''
- let base64 = false
- const type = meta[0] || 'text/plain'
- let typeFull = type
- for (let i = 1; i < meta.length; i++) {
- if (meta[i] === 'base64') {
- base64 = true
- } else {
- typeFull += `;${meta[i]}`
- if (meta[i].indexOf('charset=') === 0) {
- charset = meta[i].substring(8)
- }
- }
- }
- // defaults to US-ASCII only if type is not provided
- if (!meta[0] && !charset.length) {
- typeFull += ';charset=US-ASCII'
- charset = 'US-ASCII'
- }
- // get the encoded data portion and decode URI-encoded chars
- const encoding = base64 ? 'base64' : 'ascii'
- const data = unescape(uri.substring(firstComma + 1))
- const buffer = Buffer.from(data, encoding)
- // set `.type` and `.typeFull` properties to MIME type
- buffer.type = type
- buffer.typeFull = typeFull
- // set the `.charset` property
- buffer.charset = charset
- return buffer
-}
-
-/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
-
-var { toStringTag: t$1, iterator: i$1, hasInstance: h$1 } = Symbol,
- r$1 = Math.random,
- m$1 =
- 'append,set,get,getAll,delete,keys,values,entries,forEach,constructor'.split(
- ','
- ),
- f$2 = (a, b, c) => (
- (a += ''),
- /^(Blob|File)$/.test(b && b[t$1])
- ? [
- ((c = c !== void 0 ? c + '' : b[t$1] == 'File' ? b.name : 'blob'), a),
- b.name !== c || b[t$1] == 'blob' ? new File([b], c, b) : b,
- ]
- : [a, b + '']
- ),
- e$1 = (c, f) =>
- (f ? c : c.replace(/\r?\n|\r/g, '\r\n'))
- .replace(/\n/g, '%0A')
- .replace(/\r/g, '%0D')
- .replace(/"/g, '%22'),
- x$1 = (n, a, e) => {
- if (a.length < e) {
- throw new TypeError(
- `Failed to execute '${n}' on 'FormData': ${e} arguments required, but only ${a.length} present.`
- )
- }
- }
-
-/** @type {typeof globalThis.FormData} */
-const FormData = class FormData {
- #d = []
- constructor(...a) {
- if (a.length)
- throw new TypeError(
- `Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.`
- )
- }
- get [t$1]() {
- return 'FormData'
- }
- [i$1]() {
- return this.entries()
- }
- static [h$1](o) {
- return (
- o &&
- typeof o === 'object' &&
- o[t$1] === 'FormData' &&
- !m$1.some((m) => typeof o[m] != 'function')
- )
- }
- append(...a) {
- x$1('append', arguments, 2)
- this.#d.push(f$2(...a))
- }
- delete(a) {
- x$1('delete', arguments, 1)
- a += ''
- this.#d = this.#d.filter(([b]) => b !== a)
- }
- get(a) {
- x$1('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
- }
- getAll(a, b) {
- x$1('getAll', arguments, 1)
- b = []
- a += ''
- this.#d.forEach((c) => c[0] === a && b.push(c[1]))
- return b
- }
- has(a) {
- x$1('has', arguments, 1)
- a += ''
- return this.#d.some((b) => b[0] === a)
- }
- forEach(a, b) {
- x$1('forEach', arguments, 1)
- for (var [c, d] of this) a.call(b, d, c, this)
- }
- set(...a) {
- x$1('set', arguments, 2)
- var b = [],
- c = !0
- a = f$2(...a)
- this.#d.forEach((d) => {
- d[0] === a[0] ? c && (c = !b.push(a)) : b.push(d)
- })
- c && b.push(a)
- this.#d = b
- }
- *entries() {
- yield* this.#d
- }
- *keys() {
- for (var [a] of this) yield a
- }
- *values() {
- for (var [, a] of this) yield a
- }
-}
-
-/** @param {FormData} F */
-function formDataToBlob(F, B = Blob) {
- var b = `${r$1()}${r$1()}`.replace(/\./g, '').slice(-28).padStart(32, '-'),
- c = [],
- p = `--${b}\r\nContent-Disposition: form-data; name="`
- F.forEach((v, n) =>
- typeof v == 'string'
- ? c.push(
- p +
- e$1(n) +
- `"\r\n\r\n${v.replace(/\r(?!\n)|(?<!\r)\n/g, '\r\n')}\r\n`
- )
- : c.push(
- p +
- e$1(n) +
- `"; filename="${e$1(v.name, 1)}"\r\nContent-Type: ${
- v.type || 'application/octet-stream'
- }\r\n\r\n`,
- v,
- '\r\n'
- )
- )
- c.push(`--${b}--`)
- return new B(c, { type: 'multipart/form-data; boundary=' + b })
-}
-
-class FetchBaseError extends Error {
- constructor(message, type) {
- super(message)
- // Hide custom error implementation details from end-users
- Error.captureStackTrace(this, this.constructor)
-
- this.type = type
- }
-
- get name() {
- return this.constructor.name
- }
-
- get [Symbol.toStringTag]() {
- return this.constructor.name
- }
-}
-
-/**
- * @typedef {{ address?: string, code: string, dest?: string, errno: number, info?: object, message: string, path?: string, port?: number, syscall: string}} SystemError
- */
-
-/**
- * FetchError interface for operational errors
- */
-class FetchError extends FetchBaseError {
- /**
- * @param {string} message - Error message for human
- * @param {string} [type] - Error type for machine
- * @param {SystemError} [systemError] - For Node.js system error
- */
- constructor(message, type, systemError) {
- super(message, type)
- // When err.type is `system`, err.erroredSysCall contains system error and err.code contains system error code
- if (systemError) {
- // eslint-disable-next-line no-multi-assign
- this.code = this.errno = systemError.code
- this.erroredSysCall = systemError.syscall
- }
- }
-}
-
-/**
- * Is.js
- *
- * Object type checks.
- */
-
-const NAME = Symbol.toStringTag
-
-/**
- * Check if `obj` is a URLSearchParams object
- * ref: https://github.com/node-fetch/node-fetch/issues/296#issuecomment-307598143
- * @param {*} object - Object to check for
- * @return {boolean}
- */
-const isURLSearchParameters = (object) => {
- return (
- typeof object === 'object' &&
- typeof object.append === 'function' &&
- typeof object.delete === 'function' &&
- typeof object.get === 'function' &&
- typeof object.getAll === 'function' &&
- typeof object.has === 'function' &&
- typeof object.set === 'function' &&
- typeof object.sort === 'function' &&
- object[NAME] === 'URLSearchParams'
- )
-}
-
-/**
- * Check if `object` is a W3C `Blob` object (which `File` inherits from)
- * @param {*} object - Object to check for
- * @return {boolean}
- */
-const isBlob = (object) => {
- return (
- object &&
- typeof object === 'object' &&
- typeof object.arrayBuffer === 'function' &&
- typeof object.type === 'string' &&
- typeof object.stream === 'function' &&
- typeof object.constructor === 'function' &&
- /^(Blob|File)$/.test(object[NAME])
- )
-}
-
-/**
- * Check if `obj` is an instance of AbortSignal.
- * @param {*} object - Object to check for
- * @return {boolean}
- */
-const isAbortSignal = (object) => {
- return (
- typeof object === 'object' &&
- (object[NAME] === 'AbortSignal' || object[NAME] === 'EventTarget')
- )
-}
-
-/**
- * isDomainOrSubdomain reports whether sub is a subdomain (or exact match) of
- * the parent domain.
- *
- * Both domains must already be in canonical form.
- * @param {string|URL} original
- * @param {string|URL} destination
- */
-const isDomainOrSubdomain = (destination, original) => {
- const orig = new URL(original).hostname
- const dest = new URL(destination).hostname
-
- return orig === dest || orig.endsWith(`.${dest}`)
-}
-
-const pipeline = promisify(Stream.pipeline)
-const INTERNALS$2 = Symbol('Body internals')
-
-/**
- * Body mixin
- *
- * Ref: https://fetch.spec.whatwg.org/#body
- *
- * @param Stream body Readable stream
- * @param Object opts Response options
- * @return Void
- */
-class Body {
- constructor(body, { size = 0 } = {}) {
- let boundary = null
-
- if (body === null) {
- // Body is undefined or null
- body = null
- } else if (isURLSearchParameters(body)) {
- // Body is a URLSearchParams
- body = Buffer.from(body.toString())
- } else if (isBlob(body));
- else if (Buffer.isBuffer(body));
- else if (types.isAnyArrayBuffer(body)) {
- // Body is ArrayBuffer
- body = Buffer.from(body)
- } else if (ArrayBuffer.isView(body)) {
- // Body is ArrayBufferView
- body = Buffer.from(body.buffer, body.byteOffset, body.byteLength)
- } else if (body instanceof Stream);
- else if (body instanceof FormData) {
- // Body is FormData
- body = formDataToBlob(body)
- boundary = body.type.split('=')[1]
- } else {
- // None of the above
- // coerce to string then buffer
- body = Buffer.from(String(body))
- }
-
- let stream = body
-
- if (Buffer.isBuffer(body)) {
- stream = Stream.Readable.from(body)
- } else if (isBlob(body)) {
- stream = Stream.Readable.from(body.stream())
- }
-
- this[INTERNALS$2] = {
- body,
- stream,
- boundary,
- disturbed: false,
- error: null,
- }
- this.size = size
-
- if (body instanceof Stream) {
- body.on('error', (error_) => {
- const error =
- error_ instanceof FetchBaseError
- ? error_
- : new FetchError(
- `Invalid response body while trying to fetch ${this.url}: ${error_.message}`,
- 'system',
- error_
- )
- this[INTERNALS$2].error = error
- })
- }
- }
-
- get body() {
- return this[INTERNALS$2].stream
- }
-
- get bodyUsed() {
- return this[INTERNALS$2].disturbed
- }
-
- /**
- * Decode response as ArrayBuffer
- *
- * @return Promise
- */
- async arrayBuffer() {
- const { buffer, byteOffset, byteLength } = await consumeBody(this)
- return buffer.slice(byteOffset, byteOffset + byteLength)
- }
-
- async formData() {
- const ct = this.headers.get('content-type')
-
- if (ct.startsWith('application/x-www-form-urlencoded')) {
- const formData = new FormData()
- const parameters = new URLSearchParams(await this.text())
-
- for (const [name, value] of parameters) {
- formData.append(name, value)
- }
-
- return formData
- }
-
- const { toFormData } = await Promise.resolve().then(function () {
- return multipartParser
- })
- return toFormData(this.body, ct)
- }
-
- /**
- * Return raw response as Blob
- *
- * @return Promise
- */
- async blob() {
- const ct =
- (this.headers && this.headers.get('content-type')) ||
- (this[INTERNALS$2].body && this[INTERNALS$2].body.type) ||
- ''
- const buf = await this.arrayBuffer()
-
- return new Blob([buf], {
- type: ct,
- })
- }
-
- /**
- * Decode response as json
- *
- * @return Promise
- */
- async json() {
- const buffer = await consumeBody(this)
- return JSON.parse(buffer.toString())
- }
-
- /**
- * Decode response as text
- *
- * @return Promise
- */
- async text() {
- const buffer = await consumeBody(this)
- return buffer.toString()
- }
-
- /**
- * Decode response as buffer (non-spec api)
- *
- * @return Promise
- */
- buffer() {
- return consumeBody(this)
- }
-}
-
-// In browsers, all properties are enumerable.
-Object.defineProperties(Body.prototype, {
- body: { enumerable: true },
- bodyUsed: { enumerable: true },
- arrayBuffer: { enumerable: true },
- blob: { enumerable: true },
- json: { enumerable: true },
- text: { enumerable: true },
-})
-
-/**
- * Consume and convert an entire Body to a Buffer.
- *
- * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
- *
- * @return Promise
- */
-async function consumeBody(data) {
- if (data[INTERNALS$2].disturbed) {
- throw new TypeError(`body used already for: ${data.url}`)
- }
-
- data[INTERNALS$2].disturbed = true
-
- if (data[INTERNALS$2].error) {
- throw data[INTERNALS$2].error
- }
-
- const { body } = data
-
- // Body is null
- if (body === null) {
- return Buffer.alloc(0)
- }
-
- /* c8 ignore next 3 */
- if (!(body instanceof Stream)) {
- return Buffer.alloc(0)
- }
-
- // Body is stream
- // get ready to actually consume the body
- const accum = []
- let accumBytes = 0
-
- try {
- for await (const chunk of body) {
- if (data.size > 0 && accumBytes + chunk.length > data.size) {
- const error = new FetchError(
- `content size at ${data.url} over limit: ${data.size}`,
- 'max-size'
- )
- body.destroy(error)
- throw error
- }
-
- accumBytes += chunk.length
- accum.push(chunk)
- }
- } catch (error) {
- const error_ =
- error instanceof FetchBaseError
- ? error
- : new FetchError(
- `Invalid response body while trying to fetch ${data.url}: ${error.message}`,
- 'system',
- error
- )
- throw error_
- }
-
- if (body.readableEnded === true || body._readableState.ended === true) {
- try {
- if (accum.every((c) => typeof c === 'string')) {
- return Buffer.from(accum.join(''))
- }
-
- return Buffer.concat(accum, accumBytes)
- } catch (error) {
- throw new FetchError(
- `Could not create Buffer from response body for ${data.url}: ${error.message}`,
- 'system',
- error
- )
- }
- } else {
- throw new FetchError(
- `Premature close of server response while trying to fetch ${data.url}`
- )
- }
-}
-
-/**
- * Clone body given Res/Req instance
- *
- * @param Mixed instance Response or Request instance
- * @param String highWaterMark highWaterMark for both PassThrough body streams
- * @return Mixed
- */
-const clone = (instance, highWaterMark) => {
- let p1
- let p2
- let { body } = instance[INTERNALS$2]
-
- // Don't allow cloning a used body
- if (instance.bodyUsed) {
- throw new Error('cannot clone body after it is used')
- }
-
- // Check that body is a stream and not form-data object
- // note: we can't clone the form-data object without having it as a dependency
- if (body instanceof Stream && typeof body.getBoundary !== 'function') {
- // Tee instance body
- p1 = new PassThrough({ highWaterMark })
- p2 = new PassThrough({ highWaterMark })
- body.pipe(p1)
- body.pipe(p2)
- // Set instance body to teed body and return the other teed body
- instance[INTERNALS$2].stream = p1
- body = p2
- }
-
- return body
-}
-
-const getNonSpecFormDataBoundary = deprecate(
- (body) => body.getBoundary(),
- "form-data doesn't follow the spec and requires special treatment. Use alternative package",
- 'https://github.com/node-fetch/node-fetch/issues/1167'
-)
-
-/**
- * Performs the operation "extract a `Content-Type` value from |object|" as
- * specified in the specification:
- * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
- *
- * This function assumes that instance.body is present.
- *
- * @param {any} body Any options.body input
- * @returns {string | null}
- */
-const extractContentType = (body, request) => {
- // Body is null or undefined
- if (body === null) {
- return null
- }
-
- // Body is string
- if (typeof body === 'string') {
- return 'text/plain;charset=UTF-8'
- }
-
- // Body is a URLSearchParams
- if (isURLSearchParameters(body)) {
- return 'application/x-www-form-urlencoded;charset=UTF-8'
- }
-
- // Body is blob
- if (isBlob(body)) {
- return body.type || null
- }
-
- // Body is a Buffer (Buffer, ArrayBuffer or ArrayBufferView)
- if (
- Buffer.isBuffer(body) ||
- types.isAnyArrayBuffer(body) ||
- ArrayBuffer.isView(body)
- ) {
- return null
- }
-
- if (body instanceof FormData) {
- return `multipart/form-data; boundary=${request[INTERNALS$2].boundary}`
- }
-
- // Detect form data input from form-data module
- if (body && typeof body.getBoundary === 'function') {
- return `multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`
- }
-
- // Body is stream - can't really do much about this
- if (body instanceof Stream) {
- return null
- }
-
- // Body constructor defaults other things to string
- return 'text/plain;charset=UTF-8'
-}
-
-/**
- * The Fetch Standard treats this as if "total bytes" is a property on the body.
- * For us, we have to explicitly get it with a function.
- *
- * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
- *
- * @param {any} obj.body Body object from the Body instance.
- * @returns {number | null}
- */
-const getTotalBytes = (request) => {
- const { body } = request[INTERNALS$2]
-
- // Body is null or undefined
- if (body === null) {
- return 0
- }
-
- // Body is Blob
- if (isBlob(body)) {
- return body.size
- }
-
- // Body is Buffer
- if (Buffer.isBuffer(body)) {
- return body.length
- }
-
- // Detect form data input from form-data module
- if (body && typeof body.getLengthSync === 'function') {
- return body.hasKnownLength && body.hasKnownLength()
- ? body.getLengthSync()
- : null
- }
-
- // Body is stream
- return null
-}
-
-/**
- * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
- *
- * @param {Stream.Writable} dest The stream to write to.
- * @param obj.body Body object from the Body instance.
- * @returns {Promise<void>}
- */
-const writeToStream = async (dest, { body }) => {
- if (body === null) {
- // Body is null
- dest.end()
- } else {
- // Body is stream
- await pipeline(body, dest)
- }
-}
-
-/**
- * Headers.js
- *
- * Headers class offers convenient helpers
- */
-
-/* c8 ignore next 9 */
-const validateHeaderName =
- typeof http.validateHeaderName === 'function'
- ? http.validateHeaderName
- : (name) => {
- if (!/^[\^`\-\w!#$%&'*+.|~]+$/.test(name)) {
- const error = new TypeError(
- `Header name must be a valid HTTP token [${name}]`
- )
- Object.defineProperty(error, 'code', {
- value: 'ERR_INVALID_HTTP_TOKEN',
- })
- throw error
- }
- }
-
-/* c8 ignore next 9 */
-const validateHeaderValue =
- typeof http.validateHeaderValue === 'function'
- ? http.validateHeaderValue
- : (name, value) => {
- if (/[^\t\u0020-\u007E\u0080-\u00FF]/.test(value)) {
- const error = new TypeError(
- `Invalid character in header content ["${name}"]`
- )
- Object.defineProperty(error, 'code', { value: 'ERR_INVALID_CHAR' })
- throw error
- }
- }
-
-/**
- * @typedef {Headers | Record<string, string> | Iterable<readonly [string, string]> | Iterable<Iterable<string>>} HeadersInit
- */
-
-/**
- * This Fetch API interface allows you to perform various actions on HTTP request and response headers.
- * These actions include retrieving, setting, adding to, and removing.
- * A Headers object has an associated header list, which is initially empty and consists of zero or more name and value pairs.
- * You can add to this using methods like append() (see Examples.)
- * In all methods of this interface, header names are matched by case-insensitive byte sequence.
- *
- */
-class Headers extends URLSearchParams {
- /**
- * Headers class
- *
- * @constructor
- * @param {HeadersInit} [init] - Response headers
- */
- constructor(init) {
- // Validate and normalize init object in [name, value(s)][]
- /** @type {string[][]} */
- let result = []
- if (init instanceof Headers) {
- const raw = init.raw()
- for (const [name, values] of Object.entries(raw)) {
- result.push(...values.map((value) => [name, value]))
- }
- } else if (init == null);
- else if (typeof init === 'object' && !types.isBoxedPrimitive(init)) {
- const method = init[Symbol.iterator]
- // eslint-disable-next-line no-eq-null, eqeqeq
- if (method == null) {
- // Record<ByteString, ByteString>
- result.push(...Object.entries(init))
- } else {
- if (typeof method !== 'function') {
- throw new TypeError('Header pairs must be iterable')
- }
-
- // Sequence<sequence<ByteString>>
- // Note: per spec we have to first exhaust the lists then process them
- result = [...init]
- .map((pair) => {
- if (typeof pair !== 'object' || types.isBoxedPrimitive(pair)) {
- throw new TypeError('Each header pair must be an iterable object')
- }
-
- return [...pair]
- })
- .map((pair) => {
- if (pair.length !== 2) {
- throw new TypeError('Each header pair must be a name/value tuple')
- }
-
- return [...pair]
- })
- }
- } else {
- throw new TypeError(
- "Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)"
- )
- }
-
- // Validate and lowercase
- result =
- result.length > 0
- ? result.map(([name, value]) => {
- validateHeaderName(name)
- validateHeaderValue(name, String(value))
- return [String(name).toLowerCase(), String(value)]
- })
- : undefined
-
- super(result)
-
- // Returning a Proxy that will lowercase key names, validate parameters and sort keys
- // eslint-disable-next-line no-constructor-return
- return new Proxy(this, {
- get(target, p, receiver) {
- switch (p) {
- case 'append':
- case 'set':
- return (name, value) => {
- validateHeaderName(name)
- validateHeaderValue(name, String(value))
- return URLSearchParams.prototype[p].call(
- target,
- String(name).toLowerCase(),
- String(value)
- )
- }
-
- case 'delete':
- case 'has':
- case 'getAll':
- return (name) => {
- validateHeaderName(name)
- return URLSearchParams.prototype[p].call(
- target,
- String(name).toLowerCase()
- )
- }
-
- case 'keys':
- return () => {
- target.sort()
- return new Set(URLSearchParams.prototype.keys.call(target)).keys()
- }
-
- default:
- return Reflect.get(target, p, receiver)
- }
- },
- })
- /* c8 ignore next */
- }
-
- get [Symbol.toStringTag]() {
- return this.constructor.name
- }
-
- toString() {
- return Object.prototype.toString.call(this)
- }
-
- get(name) {
- const values = this.getAll(name)
- if (values.length === 0) {
- return null
- }
-
- let value = values.join(', ')
- if (/^content-encoding$/i.test(name)) {
- value = value.toLowerCase()
- }
-
- return value
- }
-
- forEach(callback, thisArg = undefined) {
- for (const name of this.keys()) {
- Reflect.apply(callback, thisArg, [this.get(name), name, this])
- }
- }
-
- *values() {
- for (const name of this.keys()) {
- yield this.get(name)
- }
- }
-
- /**
- * @type {() => IterableIterator<[string, string]>}
- */
- *entries() {
- for (const name of this.keys()) {
- yield [name, this.get(name)]
- }
- }
-
- [Symbol.iterator]() {
- return this.entries()
- }
-
- /**
- * Node-fetch non-spec method
- * returning all headers and their values as array
- * @returns {Record<string, string[]>}
- */
- raw() {
- return [...this.keys()].reduce((result, key) => {
- result[key] = this.getAll(key)
- return result
- }, {})
- }
-
- /**
- * For better console.log(headers) and also to convert Headers into Node.js Request compatible format
- */
- [Symbol.for('nodejs.util.inspect.custom')]() {
- return [...this.keys()].reduce((result, key) => {
- const values = this.getAll(key)
- // Http.request() only supports string as Host header.
- // This hack makes specifying custom Host header possible.
- if (key === 'host') {
- result[key] = values[0]
- } else {
- result[key] = values.length > 1 ? values : values[0]
- }
-
- return result
- }, {})
- }
-}
-
-/**
- * Re-shaping object for Web IDL tests
- * Only need to do it for overridden methods
- */
-Object.defineProperties(
- Headers.prototype,
- ['get', 'entries', 'forEach', 'values'].reduce((result, property) => {
- result[property] = { enumerable: true }
- return result
- }, {})
-)
-
-/**
- * Create a Headers object from an http.IncomingMessage.rawHeaders, ignoring those that do
- * not conform to HTTP grammar productions.
- * @param {import('http').IncomingMessage['rawHeaders']} headers
- */
-function fromRawHeaders(headers = []) {
- return new Headers(
- headers
- // Split into pairs
- .reduce((result, value, index, array) => {
- if (index % 2 === 0) {
- result.push(array.slice(index, index + 2))
- }
-
- return result
- }, [])
- .filter(([name, value]) => {
- try {
- validateHeaderName(name)
- validateHeaderValue(name, String(value))
- return true
- } catch {
- return false
- }
- })
- )
-}
-
-const redirectStatus = new Set([301, 302, 303, 307, 308])
-
-/**
- * Redirect code matching
- *
- * @param {number} code - Status code
- * @return {boolean}
- */
-const isRedirect = (code) => {
- return redirectStatus.has(code)
-}
-
-/**
- * Response.js
- *
- * Response class provides content decoding
- */
-
-const INTERNALS$1 = Symbol('Response internals')
-
-/**
- * Response class
- *
- * Ref: https://fetch.spec.whatwg.org/#response-class
- *
- * @param Stream body Readable stream
- * @param Object opts Response options
- * @return Void
- */
-class Response extends Body {
- constructor(body = null, options = {}) {
- super(body, options)
-
- // eslint-disable-next-line no-eq-null, eqeqeq, no-negated-condition
- const status = options.status != null ? options.status : 200
-
- const headers = new Headers(options.headers)
-
- if (body !== null && !headers.has('Content-Type')) {
- const contentType = extractContentType(body, this)
- if (contentType) {
- headers.append('Content-Type', contentType)
- }
- }
-
- this[INTERNALS$1] = {
- type: 'default',
- url: options.url,
- status,
- statusText: options.statusText || '',
- headers,
- counter: options.counter,
- highWaterMark: options.highWaterMark,
- }
- }
-
- get type() {
- return this[INTERNALS$1].type
- }
-
- get url() {
- return this[INTERNALS$1].url || ''
- }
-
- get status() {
- return this[INTERNALS$1].status
- }
-
- /**
- * Convenience property representing if the request ended normally
- */
- get ok() {
- return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300
- }
-
- get redirected() {
- return this[INTERNALS$1].counter > 0
- }
-
- get statusText() {
- return this[INTERNALS$1].statusText
- }
-
- get headers() {
- return this[INTERNALS$1].headers
- }
-
- get highWaterMark() {
- return this[INTERNALS$1].highWaterMark
- }
-
- /**
- * Clone this response
- *
- * @return Response
- */
- clone() {
- return new Response(clone(this, this.highWaterMark), {
- type: this.type,
- url: this.url,
- status: this.status,
- statusText: this.statusText,
- headers: this.headers,
- ok: this.ok,
- redirected: this.redirected,
- size: this.size,
- highWaterMark: this.highWaterMark,
- })
- }
-
- /**
- * @param {string} url The URL that the new response is to originate from.
- * @param {number} status An optional status code for the response (e.g., 302.)
- * @returns {Response} A Response object.
- */
- static redirect(url, status = 302) {
- if (!isRedirect(status)) {
- throw new RangeError(
- 'Failed to execute "redirect" on "response": Invalid status code'
- )
- }
-
- return new Response(null, {
- headers: {
- location: new URL(url).toString(),
- },
- status,
- })
- }
-
- static error() {
- const response = new Response(null, { status: 0, statusText: '' })
- response[INTERNALS$1].type = 'error'
- return response
- }
-
- get [Symbol.toStringTag]() {
- return 'Response'
- }
-}
-
-Object.defineProperties(Response.prototype, {
- type: { enumerable: true },
- url: { enumerable: true },
- status: { enumerable: true },
- ok: { enumerable: true },
- redirected: { enumerable: true },
- statusText: { enumerable: true },
- headers: { enumerable: true },
- clone: { enumerable: true },
-})
-
-const getSearch = (parsedURL) => {
- if (parsedURL.search) {
- return parsedURL.search
- }
-
- const lastOffset = parsedURL.href.length - 1
- const hash = parsedURL.hash || (parsedURL.href[lastOffset] === '#' ? '#' : '')
- return parsedURL.href[lastOffset - hash.length] === '?' ? '?' : ''
-}
-
-/**
- * @external URL
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/URL|URL}
- */
-
-/**
- * @module utils/referrer
- * @private
- */
-
-/**
- * @see {@link https://w3c.github.io/webappsec-referrer-policy/#strip-url|Referrer Policy §8.4. Strip url for use as a referrer}
- * @param {string} URL
- * @param {boolean} [originOnly=false]
- */
-function stripURLForUseAsAReferrer(url, originOnly = false) {
- // 1. If url is null, return no referrer.
- if (url == null) {
- // eslint-disable-line no-eq-null, eqeqeq
- return 'no-referrer'
- }
-
- url = new URL(url)
-
- // 2. If url's scheme is a local scheme, then return no referrer.
- if (/^(about|blob|data):$/.test(url.protocol)) {
- return 'no-referrer'
- }
-
- // 3. Set url's username to the empty string.
- url.username = ''
-
- // 4. Set url's password to null.
- // Note: `null` appears to be a mistake as this actually results in the password being `"null"`.
- url.password = ''
-
- // 5. Set url's fragment to null.
- // Note: `null` appears to be a mistake as this actually results in the fragment being `"#null"`.
- url.hash = ''
-
- // 6. If the origin-only flag is true, then:
- if (originOnly) {
- // 6.1. Set url's path to null.
- // Note: `null` appears to be a mistake as this actually results in the path being `"/null"`.
- url.pathname = ''
-
- // 6.2. Set url's query to null.
- // Note: `null` appears to be a mistake as this actually results in the query being `"?null"`.
- url.search = ''
- }
-
- // 7. Return url.
- return url
-}
-
-/**
- * @see {@link https://w3c.github.io/webappsec-referrer-policy/#enumdef-referrerpolicy|enum ReferrerPolicy}
- */
-const ReferrerPolicy = new Set([
- '',
- 'no-referrer',
- 'no-referrer-when-downgrade',
- 'same-origin',
- 'origin',
- 'strict-origin',
- 'origin-when-cross-origin',
- 'strict-origin-when-cross-origin',
- 'unsafe-url',
-])
-
-/**
- * @see {@link https://w3c.github.io/webappsec-referrer-policy/#default-referrer-policy|default referrer policy}
- */
-const DEFAULT_REFERRER_POLICY = 'strict-origin-when-cross-origin'
-
-/**
- * @see {@link https://w3c.github.io/webappsec-referrer-policy/#referrer-policies|Referrer Policy §3. Referrer Policies}
- * @param {string} referrerPolicy
- * @returns {string} referrerPolicy
- */
-function validateReferrerPolicy(referrerPolicy) {
- if (!ReferrerPolicy.has(referrerPolicy)) {
- throw new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`)
- }
-
- return referrerPolicy
-}
-
-/**
- * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy|Referrer Policy §3.2. Is origin potentially trustworthy?}
- * @param {external:URL} url
- * @returns `true`: "Potentially Trustworthy", `false`: "Not Trustworthy"
- */
-function isOriginPotentiallyTrustworthy(url) {
- // 1. If origin is an opaque origin, return "Not Trustworthy".
- // Not applicable
-
- // 2. Assert: origin is a tuple origin.
- // Not for implementations
-
- // 3. If origin's scheme is either "https" or "wss", return "Potentially Trustworthy".
- if (/^(http|ws)s:$/.test(url.protocol)) {
- return true
- }
-
- // 4. If origin's host component matches one of the CIDR notations 127.0.0.0/8 or ::1/128 [RFC4632], return "Potentially Trustworthy".
- const hostIp = url.host.replace(/(^\[)|(]$)/g, '')
- const hostIPVersion = isIP(hostIp)
-
- if (hostIPVersion === 4 && /^127\./.test(hostIp)) {
- return true
- }
-
- if (hostIPVersion === 6 && /^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)) {
- return true
- }
-
- // 5. If origin's host component is "localhost" or falls within ".localhost", and the user agent conforms to the name resolution rules in [let-localhost-be-localhost], return "Potentially Trustworthy".
- // We are returning FALSE here because we cannot ensure conformance to
- // let-localhost-be-loalhost (https://tools.ietf.org/html/draft-west-let-localhost-be-localhost)
- if (/^(.+\.)*localhost$/.test(url.host)) {
- return false
- }
-
- // 6. If origin's scheme component is file, return "Potentially Trustworthy".
- if (url.protocol === 'file:') {
- return true
- }
-
- // 7. If origin's scheme component is one which the user agent considers to be authenticated, return "Potentially Trustworthy".
- // Not supported
-
- // 8. If origin has been configured as a trustworthy origin, return "Potentially Trustworthy".
- // Not supported
-
- // 9. Return "Not Trustworthy".
- return false
-}
-
-/**
- * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-url-trustworthy|Referrer Policy §3.3. Is url potentially trustworthy?}
- * @param {external:URL} url
- * @returns `true`: "Potentially Trustworthy", `false`: "Not Trustworthy"
- */
-function isUrlPotentiallyTrustworthy(url) {
- // 1. If url is "about:blank" or "about:srcdoc", return "Potentially Trustworthy".
- if (/^about:(blank|srcdoc)$/.test(url)) {
- return true
- }
-
- // 2. If url's scheme is "data", return "Potentially Trustworthy".
- if (url.protocol === 'data:') {
- return true
- }
-
- // Note: The origin of blob: and filesystem: URLs is the origin of the context in which they were
- // created. Therefore, blobs created in a trustworthy origin will themselves be potentially
- // trustworthy.
- if (/^(blob|filesystem):$/.test(url.protocol)) {
- return true
- }
-
- // 3. Return the result of executing §3.2 Is origin potentially trustworthy? on url's origin.
- return isOriginPotentiallyTrustworthy(url)
-}
-
-/**
- * Modifies the referrerURL to enforce any extra security policy considerations.
- * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7
- * @callback module:utils/referrer~referrerURLCallback
- * @param {external:URL} referrerURL
- * @returns {external:URL} modified referrerURL
- */
-
-/**
- * Modifies the referrerOrigin to enforce any extra security policy considerations.
- * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7
- * @callback module:utils/referrer~referrerOriginCallback
- * @param {external:URL} referrerOrigin
- * @returns {external:URL} modified referrerOrigin
- */
-
-/**
- * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}
- * @param {Request} request
- * @param {object} o
- * @param {module:utils/referrer~referrerURLCallback} o.referrerURLCallback
- * @param {module:utils/referrer~referrerOriginCallback} o.referrerOriginCallback
- * @returns {external:URL} Request's referrer
- */
-function determineRequestsReferrer(
- request,
- { referrerURLCallback, referrerOriginCallback } = {}
-) {
- // There are 2 notes in the specification about invalid pre-conditions. We return null, here, for
- // these cases:
- // > Note: If request's referrer is "no-referrer", Fetch will not call into this algorithm.
- // > Note: If request's referrer policy is the empty string, Fetch will not call into this
- // > algorithm.
- if (request.referrer === 'no-referrer' || request.referrerPolicy === '') {
- return null
- }
-
- // 1. Let policy be request's associated referrer policy.
- const policy = request.referrerPolicy
-
- // 2. Let environment be request's client.
- // not applicable to node.js
-
- // 3. Switch on request's referrer:
- if (request.referrer === 'about:client') {
- return 'no-referrer'
- }
-
- // "a URL": Let referrerSource be request's referrer.
- const referrerSource = request.referrer
-
- // 4. Let request's referrerURL be the result of stripping referrerSource for use as a referrer.
- let referrerURL = stripURLForUseAsAReferrer(referrerSource)
-
- // 5. Let referrerOrigin be the result of stripping referrerSource for use as a referrer, with the
- // origin-only flag set to true.
- let referrerOrigin = stripURLForUseAsAReferrer(referrerSource, true)
-
- // 6. If the result of serializing referrerURL is a string whose length is greater than 4096, set
- // referrerURL to referrerOrigin.
- if (referrerURL.toString().length > 4096) {
- referrerURL = referrerOrigin
- }
-
- // 7. The user agent MAY alter referrerURL or referrerOrigin at this point to enforce arbitrary
- // policy considerations in the interests of minimizing data leakage. For example, the user
- // agent could strip the URL down to an origin, modify its host, replace it with an empty
- // string, etc.
- if (referrerURLCallback) {
- referrerURL = referrerURLCallback(referrerURL)
- }
-
- if (referrerOriginCallback) {
- referrerOrigin = referrerOriginCallback(referrerOrigin)
- }
-
- // 8.Execute the statements corresponding to the value of policy:
- const currentURL = new URL(request.url)
-
- switch (policy) {
- case 'no-referrer':
- return 'no-referrer'
-
- case 'origin':
- return referrerOrigin
-
- case 'unsafe-url':
- return referrerURL
-
- case 'strict-origin':
- // 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a
- // potentially trustworthy URL, then return no referrer.
- if (
- isUrlPotentiallyTrustworthy(referrerURL) &&
- !isUrlPotentiallyTrustworthy(currentURL)
- ) {
- return 'no-referrer'
- }
-
- // 2. Return referrerOrigin.
- return referrerOrigin.toString()
-
- case 'strict-origin-when-cross-origin':
- // 1. If the origin of referrerURL and the origin of request's current URL are the same, then
- // return referrerURL.
- if (referrerURL.origin === currentURL.origin) {
- return referrerURL
- }
-
- // 2. If referrerURL is a potentially trustworthy URL and request's current URL is not a
- // potentially trustworthy URL, then return no referrer.
- if (
- isUrlPotentiallyTrustworthy(referrerURL) &&
- !isUrlPotentiallyTrustworthy(currentURL)
- ) {
- return 'no-referrer'
- }
-
- // 3. Return referrerOrigin.
- return referrerOrigin
-
- case 'same-origin':
- // 1. If the origin of referrerURL and the origin of request's current URL are the same, then
- // return referrerURL.
- if (referrerURL.origin === currentURL.origin) {
- return referrerURL
- }
-
- // 2. Return no referrer.
- return 'no-referrer'
-
- case 'origin-when-cross-origin':
- // 1. If the origin of referrerURL and the origin of request's current URL are the same, then
- // return referrerURL.
- if (referrerURL.origin === currentURL.origin) {
- return referrerURL
- }
-
- // Return referrerOrigin.
- return referrerOrigin
-
- case 'no-referrer-when-downgrade':
- // 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a
- // potentially trustworthy URL, then return no referrer.
- if (
- isUrlPotentiallyTrustworthy(referrerURL) &&
- !isUrlPotentiallyTrustworthy(currentURL)
- ) {
- return 'no-referrer'
- }
-
- // 2. Return referrerURL.
- return referrerURL
-
- default:
- throw new TypeError(`Invalid referrerPolicy: ${policy}`)
- }
-}
-
-/**
- * @see {@link https://w3c.github.io/webappsec-referrer-policy/#parse-referrer-policy-from-header|Referrer Policy §8.1. Parse a referrer policy from a Referrer-Policy header}
- * @param {Headers} headers Response headers
- * @returns {string} policy
- */
-function parseReferrerPolicyFromHeader(headers) {
- // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy`
- // and response’s header list.
- const policyTokens = (headers.get('referrer-policy') || '').split(/[,\s]+/)
-
- // 2. Let policy be the empty string.
- let policy = ''
-
- // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty
- // string, then set policy to token.
- // Note: This algorithm loops over multiple policy values to allow deployment of new policy
- // values with fallbacks for older user agents, as described in § 11.1 Unknown Policy Values.
- for (const token of policyTokens) {
- if (token && ReferrerPolicy.has(token)) {
- policy = token
- }
- }
-
- // 4. Return policy.
- return policy
-}
-
-/**
- * Request.js
- *
- * Request class contains server only options
- *
- * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.
- */
-
-const INTERNALS = Symbol('Request internals')
-
-/**
- * Check if `obj` is an instance of Request.
- *
- * @param {*} object
- * @return {boolean}
- */
-const isRequest = (object) => {
- return typeof object === 'object' && typeof object[INTERNALS] === 'object'
-}
-
-const doBadDataWarn = deprecate(
- () => {},
- '.data is not a valid RequestInit property, use .body instead',
- 'https://github.com/node-fetch/node-fetch/issues/1000 (request)'
-)
-
-/**
- * Request class
- *
- * Ref: https://fetch.spec.whatwg.org/#request-class
- *
- * @param Mixed input Url or Request instance
- * @param Object init Custom options
- * @return Void
- */
-class Request extends Body {
- constructor(input, init = {}) {
- let parsedURL
-
- // Normalize input and force URL to be encoded as UTF-8 (https://github.com/node-fetch/node-fetch/issues/245)
- if (isRequest(input)) {
- parsedURL = new URL(input.url)
- } else {
- parsedURL = new URL(input)
- input = {}
- }
-
- if (parsedURL.username !== '' || parsedURL.password !== '') {
- throw new TypeError(`${parsedURL} is an url with embedded credentials.`)
- }
-
- let method = init.method || input.method || 'GET'
- method = method.toUpperCase()
-
- if ('data' in init) {
- doBadDataWarn()
- }
-
- // eslint-disable-next-line no-eq-null, eqeqeq
- if (
- (init.body != null || (isRequest(input) && input.body !== null)) &&
- (method === 'GET' || method === 'HEAD')
- ) {
- throw new TypeError('Request with GET/HEAD method cannot have body')
- }
-
- const inputBody = init.body
- ? init.body
- : isRequest(input) && input.body !== null
- ? clone(input)
- : null
-
- super(inputBody, {
- size: init.size || input.size || 0,
- })
-
- const headers = new Headers(init.headers || input.headers || {})
-
- if (inputBody !== null && !headers.has('Content-Type')) {
- const contentType = extractContentType(inputBody, this)
- if (contentType) {
- headers.set('Content-Type', contentType)
- }
- }
-
- let signal = isRequest(input) ? input.signal : null
- if ('signal' in init) {
- signal = init.signal
- }
-
- // eslint-disable-next-line no-eq-null, eqeqeq
- if (signal != null && !isAbortSignal(signal)) {
- throw new TypeError(
- 'Expected signal to be an instanceof AbortSignal or EventTarget'
- )
- }
-
- // §5.4, Request constructor steps, step 15.1
- // eslint-disable-next-line no-eq-null, eqeqeq
- let referrer = init.referrer == null ? input.referrer : init.referrer
- if (referrer === '') {
- // §5.4, Request constructor steps, step 15.2
- referrer = 'no-referrer'
- } else if (referrer) {
- // §5.4, Request constructor steps, step 15.3.1, 15.3.2
- const parsedReferrer = new URL(referrer)
- // §5.4, Request constructor steps, step 15.3.3, 15.3.4
- referrer = /^about:(\/\/)?client$/.test(parsedReferrer)
- ? 'client'
- : parsedReferrer
- } else {
- referrer = undefined
- }
-
- this[INTERNALS] = {
- method,
- redirect: init.redirect || input.redirect || 'follow',
- headers,
- parsedURL,
- signal,
- referrer,
- }
-
- // Node-fetch-only options
- this.follow =
- init.follow === undefined
- ? input.follow === undefined
- ? 20
- : input.follow
- : init.follow
- this.compress =
- init.compress === undefined
- ? input.compress === undefined
- ? true
- : input.compress
- : init.compress
- this.counter = init.counter || input.counter || 0
- this.agent = init.agent || input.agent
- this.highWaterMark = init.highWaterMark || input.highWaterMark || 16384
- this.insecureHTTPParser =
- init.insecureHTTPParser || input.insecureHTTPParser || false
-
- // §5.4, Request constructor steps, step 16.
- // Default is empty string per https://fetch.spec.whatwg.org/#concept-request-referrer-policy
- this.referrerPolicy = init.referrerPolicy || input.referrerPolicy || ''
- }
-
- /** @returns {string} */
- get method() {
- return this[INTERNALS].method
- }
-
- /** @returns {string} */
- get url() {
- return format$1(this[INTERNALS].parsedURL)
- }
-
- /** @returns {Headers} */
- get headers() {
- return this[INTERNALS].headers
- }
-
- get redirect() {
- return this[INTERNALS].redirect
- }
-
- /** @returns {AbortSignal} */
- get signal() {
- return this[INTERNALS].signal
- }
-
- // https://fetch.spec.whatwg.org/#dom-request-referrer
- get referrer() {
- if (this[INTERNALS].referrer === 'no-referrer') {
- return ''
- }
-
- if (this[INTERNALS].referrer === 'client') {
- return 'about:client'
- }
-
- if (this[INTERNALS].referrer) {
- return this[INTERNALS].referrer.toString()
- }
-
- return undefined
- }
-
- get referrerPolicy() {
- return this[INTERNALS].referrerPolicy
- }
-
- set referrerPolicy(referrerPolicy) {
- this[INTERNALS].referrerPolicy = validateReferrerPolicy(referrerPolicy)
- }
-
- /**
- * Clone this request
- *
- * @return Request
- */
- clone() {
- return new Request(this)
- }
-
- get [Symbol.toStringTag]() {
- return 'Request'
- }
-}
-
-Object.defineProperties(Request.prototype, {
- method: { enumerable: true },
- url: { enumerable: true },
- headers: { enumerable: true },
- redirect: { enumerable: true },
- clone: { enumerable: true },
- signal: { enumerable: true },
- referrer: { enumerable: true },
- referrerPolicy: { enumerable: true },
-})
-
-/**
- * Convert a Request to Node.js http request options.
- *
- * @param {Request} request - A Request instance
- * @return The options object to be passed to http.request
- */
-const getNodeRequestOptions = (request) => {
- const { parsedURL } = request[INTERNALS]
- const headers = new Headers(request[INTERNALS].headers)
-
- // Fetch step 1.3
- if (!headers.has('Accept')) {
- headers.set('Accept', '*/*')
- }
-
- // HTTP-network-or-cache fetch steps 2.4-2.7
- let contentLengthValue = null
- if (request.body === null && /^(post|put)$/i.test(request.method)) {
- contentLengthValue = '0'
- }
-
- if (request.body !== null) {
- const totalBytes = getTotalBytes(request)
- // Set Content-Length if totalBytes is a number (that is not NaN)
- if (typeof totalBytes === 'number' && !Number.isNaN(totalBytes)) {
- contentLengthValue = String(totalBytes)
- }
- }
-
- if (contentLengthValue) {
- headers.set('Content-Length', contentLengthValue)
- }
-
- // 4.1. Main fetch, step 2.6
- // > If request's referrer policy is the empty string, then set request's referrer policy to the
- // > default referrer policy.
- if (request.referrerPolicy === '') {
- request.referrerPolicy = DEFAULT_REFERRER_POLICY
- }
-
- // 4.1. Main fetch, step 2.7
- // > If request's referrer is not "no-referrer", set request's referrer to the result of invoking
- // > determine request's referrer.
- if (request.referrer && request.referrer !== 'no-referrer') {
- request[INTERNALS].referrer = determineRequestsReferrer(request)
- } else {
- request[INTERNALS].referrer = 'no-referrer'
- }
-
- // 4.5. HTTP-network-or-cache fetch, step 6.9
- // > If httpRequest's referrer is a URL, then append `Referer`/httpRequest's referrer, serialized
- // > and isomorphic encoded, to httpRequest's header list.
- if (request[INTERNALS].referrer instanceof URL) {
- headers.set('Referer', request.referrer)
- }
-
- // HTTP-network-or-cache fetch step 2.11
- if (!headers.has('User-Agent')) {
- headers.set('User-Agent', 'node-fetch')
- }
-
- // HTTP-network-or-cache fetch step 2.15
- if (request.compress && !headers.has('Accept-Encoding')) {
- headers.set('Accept-Encoding', 'gzip,deflate,br')
- }
-
- let { agent } = request
- if (typeof agent === 'function') {
- agent = agent(parsedURL)
- }
-
- if (!headers.has('Connection') && !agent) {
- headers.set('Connection', 'close')
- }
-
- // HTTP-network fetch step 4.2
- // chunked encoding is handled by Node.js
-
- const search = getSearch(parsedURL)
-
- // Pass the full URL directly to request(), but overwrite the following
- // options:
- const options = {
- // Overwrite search to retain trailing ? (issue #776)
- path: parsedURL.pathname + search,
- // The following options are not expressed in the URL
- method: request.method,
- headers: headers[Symbol.for('nodejs.util.inspect.custom')](),
- insecureHTTPParser: request.insecureHTTPParser,
- agent,
- }
-
- return {
- /** @type {URL} */
- parsedURL,
- options,
- }
-}
-
-/**
- * AbortError interface for cancelled requests
- */
-class AbortError extends FetchBaseError {
- constructor(message, type = 'aborted') {
- super(message, type)
- }
-}
-
-/**
- * Index.js
- *
- * a request API compatible with window.fetch
- *
- * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.
- */
-
-const supportedSchemas = new Set(['data:', 'http:', 'https:'])
-
-/**
- * Fetch function
- *
- * @param {string | URL | import('./request').default} url - Absolute url or Request instance
- * @param {*} [options_] - Fetch options
- * @return {Promise<import('./response').default>}
- */
-async function fetch$1(url, options_) {
- return new Promise((resolve, reject) => {
- // Build request object
- const request = new Request(url, options_)
- const { parsedURL, options } = getNodeRequestOptions(request)
- if (!supportedSchemas.has(parsedURL.protocol)) {
- throw new TypeError(
- `node-fetch cannot load ${url}. URL scheme "${parsedURL.protocol.replace(
- /:$/,
- ''
- )}" is not supported.`
- )
- }
-
- if (parsedURL.protocol === 'data:') {
- const data = dataUriToBuffer(request.url)
- const response = new Response(data, {
- headers: { 'Content-Type': data.typeFull },
- })
- resolve(response)
- return
- }
-
- // Wrap http.request into fetch
- const send = (parsedURL.protocol === 'https:' ? https : http).request
- const { signal } = request
- let response = null
-
- const abort = () => {
- const error = new AbortError('The operation was aborted.')
- reject(error)
- if (request.body && request.body instanceof Stream.Readable) {
- request.body.destroy(error)
- }
-
- if (!response || !response.body) {
- return
- }
-
- response.body.emit('error', error)
- }
-
- if (signal && signal.aborted) {
- abort()
- return
- }
-
- const abortAndFinalize = () => {
- abort()
- finalize()
- }
-
- // Send request
- const request_ = send(parsedURL.toString(), options)
-
- if (signal) {
- signal.addEventListener('abort', abortAndFinalize)
- }
-
- const finalize = () => {
- request_.abort()
- if (signal) {
- signal.removeEventListener('abort', abortAndFinalize)
- }
- }
-
- request_.on('error', (error) => {
- reject(
- new FetchError(
- `request to ${request.url} failed, reason: ${error.message}`,
- 'system',
- error
- )
- )
- finalize()
- })
-
- fixResponseChunkedTransferBadEnding(request_, (error) => {
- response.body.destroy(error)
- })
-
- /* c8 ignore next 18 */
- if (process.version < 'v14') {
- // Before Node.js 14, pipeline() does not fully support async iterators and does not always
- // properly handle when the socket close/end events are out of order.
- request_.on('socket', (s) => {
- let endedWithEventsCount
- s.prependListener('end', () => {
- endedWithEventsCount = s._eventsCount
- })
- s.prependListener('close', (hadError) => {
- // if end happened before close but the socket didn't emit an error, do it now
- if (response && endedWithEventsCount < s._eventsCount && !hadError) {
- const error = new Error('Premature close')
- error.code = 'ERR_STREAM_PREMATURE_CLOSE'
- response.body.emit('error', error)
- }
- })
- })
- }
-
- request_.on('response', (response_) => {
- request_.setTimeout(0)
- const headers = fromRawHeaders(response_.rawHeaders)
-
- // HTTP fetch step 5
- if (isRedirect(response_.statusCode)) {
- // HTTP fetch step 5.2
- const location = headers.get('Location')
-
- // HTTP fetch step 5.3
- let locationURL = null
- try {
- locationURL =
- location === null ? null : new URL(location, request.url)
- } catch {
- // error here can only be invalid URL in Location: header
- // do not throw when options.redirect == manual
- // let the user extract the errorneous redirect URL
- if (request.redirect !== 'manual') {
- reject(
- new FetchError(
- `uri requested responds with an invalid redirect URL: ${location}`,
- 'invalid-redirect'
- )
- )
- finalize()
- return
- }
- }
-
- // HTTP fetch step 5.5
- switch (request.redirect) {
- case 'error':
- reject(
- new FetchError(
- `uri requested responds with a redirect, redirect mode is set to error: ${request.url}`,
- 'no-redirect'
- )
- )
- finalize()
- return
- case 'manual':
- // Nothing to do
- break
- case 'follow': {
- // HTTP-redirect fetch step 2
- if (locationURL === null) {
- break
- }
-
- // HTTP-redirect fetch step 5
- if (request.counter >= request.follow) {
- reject(
- new FetchError(
- `maximum redirect reached at: ${request.url}`,
- 'max-redirect'
- )
- )
- finalize()
- return
- }
-
- // HTTP-redirect fetch step 6 (counter increment)
- // Create a new Request object.
- const requestOptions = {
- headers: new Headers(request.headers),
- follow: request.follow,
- counter: request.counter + 1,
- agent: request.agent,
- compress: request.compress,
- method: request.method,
- body: clone(request),
- signal: request.signal,
- size: request.size,
- referrer: request.referrer,
- referrerPolicy: request.referrerPolicy,
- }
-
- // when forwarding sensitive headers like "Authorization",
- // "WWW-Authenticate", and "Cookie" to untrusted targets,
- // headers will be ignored when following a redirect to a domain
- // that is not a subdomain match or exact match of the initial domain.
- // For example, a redirect from "foo.com" to either "foo.com" or "sub.foo.com"
- // will forward the sensitive headers, but a redirect to "bar.com" will not.
- if (!isDomainOrSubdomain(request.url, locationURL)) {
- for (const name of [
- 'authorization',
- 'www-authenticate',
- 'cookie',
- 'cookie2',
- ]) {
- requestOptions.headers.delete(name)
- }
- }
-
- // HTTP-redirect fetch step 9
- if (
- response_.statusCode !== 303 &&
- request.body &&
- options_.body instanceof Stream.Readable
- ) {
- reject(
- new FetchError(
- 'Cannot follow redirect with body being a readable stream',
- 'unsupported-redirect'
- )
- )
- finalize()
- return
- }
-
- // HTTP-redirect fetch step 11
- if (
- response_.statusCode === 303 ||
- ((response_.statusCode === 301 || response_.statusCode === 302) &&
- request.method === 'POST')
- ) {
- requestOptions.method = 'GET'
- requestOptions.body = undefined
- requestOptions.headers.delete('content-length')
- }
-
- // HTTP-redirect fetch step 14
- const responseReferrerPolicy =
- parseReferrerPolicyFromHeader(headers)
- if (responseReferrerPolicy) {
- requestOptions.referrerPolicy = responseReferrerPolicy
- }
-
- // HTTP-redirect fetch step 15
- resolve(fetch$1(new Request(locationURL, requestOptions)))
- finalize()
- return
- }
-
- default:
- return reject(
- new TypeError(
- `Redirect option '${request.redirect}' is not a valid value of RequestRedirect`
- )
- )
- }
- }
-
- // Prepare response
- if (signal) {
- response_.once('end', () => {
- signal.removeEventListener('abort', abortAndFinalize)
- })
- }
-
- let body = pipeline$1(response_, new PassThrough(), (error) => {
- if (error) {
- reject(error)
- }
- })
- // see https://github.com/nodejs/node/pull/29376
- /* c8 ignore next 3 */
- if (process.version < 'v12.10') {
- response_.on('aborted', abortAndFinalize)
- }
-
- const responseOptions = {
- url: request.url,
- status: response_.statusCode,
- statusText: response_.statusMessage,
- headers,
- size: request.size,
- counter: request.counter,
- highWaterMark: request.highWaterMark,
- }
-
- // HTTP-network fetch step 12.1.1.3
- const codings = headers.get('Content-Encoding')
-
- // HTTP-network fetch step 12.1.1.4: handle content codings
-
- // in following scenarios we ignore compression support
- // 1. compression support is disabled
- // 2. HEAD request
- // 3. no Content-Encoding header
- // 4. no content response (204)
- // 5. content not modified response (304)
- if (
- !request.compress ||
- request.method === 'HEAD' ||
- codings === null ||
- response_.statusCode === 204 ||
- response_.statusCode === 304
- ) {
- response = new Response(body, responseOptions)
- resolve(response)
- return
- }
-
- // For Node v6+
- // Be less strict when decoding compressed responses, since sometimes
- // servers send slightly invalid responses that are still accepted
- // by common browsers.
- // Always using Z_SYNC_FLUSH is what cURL does.
- const zlibOptions = {
- flush: zlib.Z_SYNC_FLUSH,
- finishFlush: zlib.Z_SYNC_FLUSH,
- }
-
- // For gzip
- if (codings === 'gzip' || codings === 'x-gzip') {
- body = pipeline$1(body, zlib.createGunzip(zlibOptions), (error) => {
- if (error) {
- reject(error)
- }
- })
- response = new Response(body, responseOptions)
- resolve(response)
- return
- }
-
- // For deflate
- if (codings === 'deflate' || codings === 'x-deflate') {
- // Handle the infamous raw deflate response from old servers
- // a hack for old IIS and Apache servers
- const raw = pipeline$1(response_, new PassThrough(), (error) => {
- if (error) {
- reject(error)
- }
- })
- raw.once('data', (chunk) => {
- // See http://stackoverflow.com/questions/37519828
- if ((chunk[0] & 0x0f) === 0x08) {
- body = pipeline$1(body, zlib.createInflate(), (error) => {
- if (error) {
- reject(error)
- }
- })
- } else {
- body = pipeline$1(body, zlib.createInflateRaw(), (error) => {
- if (error) {
- reject(error)
- }
- })
- }
-
- response = new Response(body, responseOptions)
- resolve(response)
- })
- raw.once('end', () => {
- // Some old IIS servers return zero-length OK deflate responses, so
- // 'data' is never emitted. See https://github.com/node-fetch/node-fetch/pull/903
- if (!response) {
- response = new Response(body, responseOptions)
- resolve(response)
- }
- })
- return
- }
-
- // For br
- if (codings === 'br') {
- body = pipeline$1(body, zlib.createBrotliDecompress(), (error) => {
- if (error) {
- reject(error)
- }
- })
- response = new Response(body, responseOptions)
- resolve(response)
- return
- }
-
- // Otherwise, use response as-is
- response = new Response(body, responseOptions)
- resolve(response)
- })
-
- // eslint-disable-next-line promise/prefer-await-to-then
- writeToStream(request_, request).catch(reject)
- })
-}
-
-function fixResponseChunkedTransferBadEnding(request, errorCallback) {
- const LAST_CHUNK = Buffer.from('0\r\n\r\n')
-
- let isChunkedTransfer = false
- let properLastChunkReceived = false
- let previousChunk
-
- request.on('response', (response) => {
- const { headers } = response
- isChunkedTransfer =
- headers['transfer-encoding'] === 'chunked' && !headers['content-length']
- })
-
- request.on('socket', (socket) => {
- const onSocketClose = () => {
- if (isChunkedTransfer && !properLastChunkReceived) {
- const error = new Error('Premature close')
- error.code = 'ERR_STREAM_PREMATURE_CLOSE'
- errorCallback(error)
- }
- }
-
- socket.prependListener('close', onSocketClose)
-
- request.on('abort', () => {
- socket.removeListener('close', onSocketClose)
- })
-
- socket.on('data', (buf) => {
- properLastChunkReceived = Buffer.compare(buf.slice(-5), LAST_CHUNK) === 0
-
- // Sometimes final 0-length chunk and end of message code are in separate packets
- if (!properLastChunkReceived && previousChunk) {
- properLastChunkReceived =
- Buffer.compare(previousChunk.slice(-3), LAST_CHUNK.slice(0, 3)) ===
- 0 && Buffer.compare(buf.slice(-2), LAST_CHUNK.slice(3)) === 0
- }
-
- previousChunk = buf
- })
- })
-}
-
-const fetch = {
- fetch(resource, init) {
- const resourceURL = new URL(
- __object_isPrototypeOf(Request.prototype, resource)
- ? resource.url
- : pathToPosix(resource),
- typeof Object(globalThis.process).cwd === 'function'
- ? 'file:' + pathToPosix(process.cwd()) + '/'
- : 'file:'
- )
- if (resourceURL.protocol.toLowerCase() === 'file:') {
- return import('node:fs').then((fs) => {
- try {
- const stats = fs.statSync(resourceURL)
- const body = fs.createReadStream(resourceURL)
- return new Response(body, {
- status: 200,
- statusText: '',
- headers: {
- 'content-length': String(stats.size),
- date: new Date().toUTCString(),
- 'last-modified': new Date(stats.mtimeMs).toUTCString(),
- },
- })
- } catch (error) {
- const body = new Stream.Readable()
- body._read = () => {}
- body.push(null)
- return new Response(body, {
- status: 404,
- statusText: '',
- headers: {
- date: new Date().toUTCString(),
- },
- })
- }
- })
- } else {
- return fetch$1(resource, init)
- }
- },
-}.fetch
-
-function u(u, D) {
- for (var t = 0; t < D.length; t++) {
- var F = D[t]
- ;(F.enumerable = F.enumerable || !1),
- (F.configurable = !0),
- 'value' in F && (F.writable = !0),
- Object.defineProperty(u, F.key, F)
- }
-}
-function D(D, t, F) {
- return t && u(D.prototype, t), F && u(D, F), D
-}
-function t(u, D) {
- ;(null == D || D > u.length) && (D = u.length)
- for (var t = 0, F = new Array(D); t < D; t++) F[t] = u[t]
- return F
-}
-function F$1(u, D) {
- var F =
- ('undefined' != typeof Symbol && u[Symbol.iterator]) || u['@@iterator']
- if (F) return (F = F.call(u)).next.bind(F)
- if (
- Array.isArray(u) ||
- (F = (function (u, D) {
- if (u) {
- if ('string' == typeof u) return t(u, D)
- var F = Object.prototype.toString.call(u).slice(8, -1)
- return (
- 'Object' === F && u.constructor && (F = u.constructor.name),
- 'Map' === F || 'Set' === F
- ? Array.from(u)
- : 'Arguments' === F ||
- /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F)
- ? t(u, D)
- : void 0
- )
- }
- })(u)) ||
- (D && u && 'number' == typeof u.length)
- ) {
- F && (u = F)
- var e = 0
- return function () {
- return e >= u.length ? { done: !0 } : { done: !1, value: u[e++] }
- }
- }
- throw new TypeError(
- 'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
- )
-}
-var e =
- /(?:[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/,
- C =
- /(?:[\$0-9A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u08D3-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA827\uA82C\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF50\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD47\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E-\uDC61\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B-\uDD43\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFE4\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]|\uDB40[\uDD00-\uDDEF])/
-function A$1(u, D) {
- return (D ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(u)
-}
-function E(u, D) {
- void 0 === D && (D = !1)
- for (var t = [], F = 0; F < u.length; ) {
- var E = u[F],
- n = function (e) {
- if (!D) throw new TypeError(e)
- t.push({ type: 'INVALID_CHAR', index: F, value: u[F++] })
- }
- if ('*' !== E)
- if ('+' !== E && '?' !== E)
- if ('\\' !== E)
- if ('{' !== E)
- if ('}' !== E)
- if (':' !== E)
- if ('(' !== E) t.push({ type: 'CHAR', index: F, value: u[F++] })
- else {
- var r = 1,
- i = '',
- s = F + 1,
- a = !1
- if ('?' === u[s]) {
- n('Pattern cannot start with "?" at ' + s)
- continue
- }
- for (; s < u.length; ) {
- if (!A$1(u[s], !1)) {
- n("Invalid character '" + u[s] + "' at " + s + '.'),
- (a = !0)
- break
- }
- if ('\\' !== u[s]) {
- if (')' === u[s]) {
- if (0 == --r) {
- s++
- break
- }
- } else if ('(' === u[s] && (r++, '?' !== u[s + 1])) {
- n('Capturing groups are not allowed at ' + s), (a = !0)
- break
- }
- i += u[s++]
- } else i += u[s++] + u[s++]
- }
- if (a) continue
- if (r) {
- n('Unbalanced pattern at ' + F)
- continue
- }
- if (!i) {
- n('Missing pattern at ' + F)
- continue
- }
- t.push({ type: 'PATTERN', index: F, value: i }), (F = s)
- }
- else {
- for (var B = '', o = F + 1; o < u.length; ) {
- var h = u.substr(o, 1)
- if (
- !((o === F + 1 && e.test(h)) || (o !== F + 1 && C.test(h)))
- )
- break
- B += u[o++]
- }
- if (!B) {
- n('Missing parameter name at ' + F)
- continue
- }
- t.push({ type: 'NAME', index: F, value: B }), (F = o)
- }
- else t.push({ type: 'CLOSE', index: F, value: u[F++] })
- else t.push({ type: 'OPEN', index: F, value: u[F++] })
- else t.push({ type: 'ESCAPED_CHAR', index: F++, value: u[F++] })
- else t.push({ type: 'MODIFIER', index: F, value: u[F++] })
- else t.push({ type: 'ASTERISK', index: F, value: u[F++] })
- }
- return t.push({ type: 'END', index: F, value: '' }), t
-}
-function n(u, D) {
- void 0 === D && (D = {})
- for (
- var t = E(u),
- F = D.prefixes,
- e = void 0 === F ? './' : F,
- C = '[^' + r(D.delimiter || '/#?') + ']+?',
- A = [],
- n = 0,
- i = 0,
- s = '',
- a = new Set(),
- B = function (u) {
- if (i < t.length && t[i].type === u) return t[i++].value
- },
- o = function () {
- return B('MODIFIER') || B('ASTERISK')
- },
- h = function (u) {
- var D = B(u)
- if (void 0 !== D) return D
- var F = t[i]
- throw new TypeError(
- 'Unexpected ' + F.type + ' at ' + F.index + ', expected ' + u
- )
- },
- p = function () {
- for (var u, D = ''; (u = B('CHAR') || B('ESCAPED_CHAR')); ) D += u
- return D
- },
- c =
- D.encodePart ||
- function (u) {
- return u
- };
- i < t.length;
-
- ) {
- var f = B('CHAR'),
- l = B('NAME'),
- m = B('PATTERN')
- if ((l || m || !B('ASTERISK') || (m = '.*'), l || m)) {
- var d = f || ''
- ;-1 === e.indexOf(d) && ((s += d), (d = '')),
- s && (A.push(c(s)), (s = ''))
- var g = l || n++
- if (a.has(g)) throw new TypeError("Duplicate name '" + g + "'.")
- a.add(g),
- A.push({
- name: g,
- prefix: c(d),
- suffix: '',
- pattern: m || C,
- modifier: o() || '',
- })
- } else {
- var x = f || B('ESCAPED_CHAR')
- if (x) s += x
- else if (B('OPEN')) {
- var S = p(),
- v = B('NAME') || '',
- y = B('PATTERN') || ''
- v || y || !B('ASTERISK') || (y = '.*')
- var R = p()
- h('CLOSE')
- var k = o() || ''
- if (!v && !y && !k) {
- s += S
- continue
- }
- if (!v && !y && !S) continue
- s && (A.push(c(s)), (s = '')),
- A.push({
- name: v || (y ? n++ : ''),
- pattern: v && !y ? C : y,
- prefix: c(S),
- suffix: c(R),
- modifier: k,
- })
- } else s && (A.push(c(s)), (s = '')), h('END')
- }
- }
- return A
-}
-function r(u) {
- return u.replace(/([.+*?^${}()[\]|/\\])/g, '\\$1')
-}
-function i(u) {
- return u && u.sensitive ? 'u' : 'ui'
-}
-function s$1(u, D, t) {
- void 0 === t && (t = {})
- for (
- var e,
- C = t.strict,
- A = void 0 !== C && C,
- E = t.start,
- n = void 0 === E || E,
- s = t.end,
- a = void 0 === s || s,
- B = t.encode,
- o =
- void 0 === B
- ? function (u) {
- return u
- }
- : B,
- h = '[' + r(t.endsWith || '') + ']|$',
- p = '[' + r(t.delimiter || '/#?') + ']',
- c = n ? '^' : '',
- f = F$1(u);
- !(e = f()).done;
-
- ) {
- var l = e.value
- if ('string' == typeof l) c += r(o(l))
- else {
- var m = r(o(l.prefix)),
- d = r(o(l.suffix))
- l.pattern
- ? (D && D.push(l),
- (c +=
- m || d
- ? '+' === l.modifier || '*' === l.modifier
- ? '(?:' +
- m +
- '((?:' +
- l.pattern +
- ')(?:' +
- d +
- m +
- '(?:' +
- l.pattern +
- '))*)' +
- d +
- ')' +
- ('*' === l.modifier ? '?' : '')
- : '(?:' + m + '(' + l.pattern + ')' + d + ')' + l.modifier
- : '+' === l.modifier || '*' === l.modifier
- ? '((?:' + l.pattern + ')' + l.modifier + ')'
- : '(' + l.pattern + ')' + l.modifier))
- : (c += '(?:' + m + d + ')' + l.modifier)
- }
- }
- if (a) A || (c += p + '?'), (c += t.endsWith ? '(?=' + h + ')' : '$')
- else {
- var g = u[u.length - 1],
- x = 'string' == typeof g ? p.indexOf(g[g.length - 1]) > -1 : void 0 === g
- A || (c += '(?:' + p + '(?=' + h + '))?'),
- x || (c += '(?=' + p + '|' + h + ')')
- }
- return new RegExp(c, i(t))
-}
-function a(u, D, t) {
- return u instanceof RegExp
- ? (function (u, D) {
- if (!D) return u
- for (
- var t = /\((?:\?<(.*?)>)?(?!\?)/g, F = 0, e = t.exec(u.source);
- e;
-
- )
- D.push({
- name: e[1] || F++,
- prefix: '',
- suffix: '',
- modifier: '',
- pattern: '',
- }),
- (e = t.exec(u.source))
- return u
- })(u, D)
- : Array.isArray(u)
- ? (function (u, D, t) {
- var F = u.map(function (u) {
- return a(u, D, t).source
- })
- return new RegExp('(?:' + F.join('|') + ')', i(t))
- })(u, D, t)
- : (function (u, D, t) {
- return s$1(n(u, t), D, t)
- })(u, D, t)
-}
-var B = { delimiter: '', prefixes: '', sensitive: !0, strict: !0 },
- o = { delimiter: '.', prefixes: '', sensitive: !0, strict: !0 },
- h = { delimiter: '/', prefixes: '/', sensitive: !0, strict: !0 }
-function p(u, D) {
- return u.startsWith(D) ? u.substring(D.length, u.length) : u
-}
-function c(u) {
- return !(
- !u ||
- u.length < 2 ||
- ('[' !== u[0] && (('\\' !== u[0] && '{' !== u[0]) || '[' !== u[1]))
- )
-}
-var f$1,
- l = ['ftp', 'file', 'http', 'https', 'ws', 'wss']
-function m(u) {
- if (!u) return !0
- for (var D, t = F$1(l); !(D = t()).done; ) if (u.test(D.value)) return !0
- return !1
-}
-function d(u) {
- switch (u) {
- case 'ws':
- case 'http':
- return '80'
- case 'wws':
- case 'https':
- return '443'
- case 'ftp':
- return '21'
- default:
- return ''
- }
-}
-function g(u) {
- if ('' === u) return u
- if (/^[-+.A-Za-z0-9]*$/.test(u)) return u.toLowerCase()
- throw new TypeError("Invalid protocol '" + u + "'.")
-}
-function x(u) {
- if ('' === u) return u
- var D = new URL('https://example.com')
- return (D.username = u), D.username
-}
-function S$1(u) {
- if ('' === u) return u
- var D = new URL('https://example.com')
- return (D.password = u), D.password
-}
-function v(u) {
- if ('' === u) return u
- if (/[\t\n\r #%/:<>?@[\]^\\|]/g.test(u))
- throw new TypeError("Invalid hostname '" + u + "'")
- var D = new URL('https://example.com')
- return (D.hostname = u), D.hostname
-}
-function y(u) {
- if ('' === u) return u
- if (/[^0-9a-fA-F[\]:]/g.test(u))
- throw new TypeError("Invalid IPv6 hostname '" + u + "'")
- return u.toLowerCase()
-}
-function R(u) {
- if ('' === u) return u
- if (/^[0-9]*$/.test(u) && parseInt(u) <= 65535) return u
- throw new TypeError("Invalid port '" + u + "'.")
-}
-function k(u) {
- if ('' === u) return u
- var D = new URL('https://example.com')
- return (
- (D.pathname = '/' !== u[0] ? '/-' + u : u),
- '/' !== u[0] ? D.pathname.substring(2, D.pathname.length) : D.pathname
- )
-}
-function w(u) {
- return '' === u ? u : new URL('data:' + u).pathname
-}
-function P(u) {
- if ('' === u) return u
- var D = new URL('https://example.com')
- return (D.search = u), D.search.substring(1, D.search.length)
-}
-function T(u) {
- if ('' === u) return u
- var D = new URL('https://example.com')
- return (D.hash = u), D.hash.substring(1, D.hash.length)
-}
-!(function (u) {
- ;(u[(u.INIT = 0)] = 'INIT'),
- (u[(u.PROTOCOL = 1)] = 'PROTOCOL'),
- (u[(u.AUTHORITY = 2)] = 'AUTHORITY'),
- (u[(u.USERNAME = 3)] = 'USERNAME'),
- (u[(u.PASSWORD = 4)] = 'PASSWORD'),
- (u[(u.HOSTNAME = 5)] = 'HOSTNAME'),
- (u[(u.PORT = 6)] = 'PORT'),
- (u[(u.PATHNAME = 7)] = 'PATHNAME'),
- (u[(u.SEARCH = 8)] = 'SEARCH'),
- (u[(u.HASH = 9)] = 'HASH'),
- (u[(u.DONE = 10)] = 'DONE')
-})(f$1 || (f$1 = {}))
-var b = (function () {
- function u(u) {
- ;(this.input = void 0),
- (this.tokenList = []),
- (this.internalResult = {}),
- (this.tokenIndex = 0),
- (this.tokenIncrement = 1),
- (this.componentStart = 0),
- (this.state = f$1.INIT),
- (this.groupDepth = 0),
- (this.hostnameIPv6BracketDepth = 0),
- (this.shouldTreatAsStandardURL = !1),
- (this.input = u)
- }
- var t = u.prototype
- return (
- (t.parse = function () {
- for (
- this.tokenList = E(this.input, !0);
- this.tokenIndex < this.tokenList.length;
- this.tokenIndex += this.tokenIncrement
- ) {
- if (
- ((this.tokenIncrement = 1),
- 'END' === this.tokenList[this.tokenIndex].type)
- ) {
- if (this.state === f$1.INIT) {
- this.rewind(),
- this.isHashPrefix()
- ? this.changeState(f$1.HASH, 1)
- : this.isSearchPrefix()
- ? (this.changeState(f$1.SEARCH, 1),
- (this.internalResult.hash = ''))
- : (this.changeState(f$1.PATHNAME, 0),
- (this.internalResult.search = ''),
- (this.internalResult.hash = ''))
- continue
- }
- if (this.state === f$1.AUTHORITY) {
- this.rewindAndSetState(f$1.HOSTNAME)
- continue
- }
- this.changeState(f$1.DONE, 0)
- break
- }
- if (this.groupDepth > 0) {
- if (!this.isGroupClose()) continue
- this.groupDepth -= 1
- }
- if (this.isGroupOpen()) this.groupDepth += 1
- else
- switch (this.state) {
- case f$1.INIT:
- this.isProtocolSuffix() &&
- ((this.internalResult.username = ''),
- (this.internalResult.password = ''),
- (this.internalResult.hostname = ''),
- (this.internalResult.port = ''),
- (this.internalResult.pathname = ''),
- (this.internalResult.search = ''),
- (this.internalResult.hash = ''),
- this.rewindAndSetState(f$1.PROTOCOL))
- break
- case f$1.PROTOCOL:
- if (this.isProtocolSuffix()) {
- this.computeShouldTreatAsStandardURL()
- var u = f$1.PATHNAME,
- D = 1
- this.shouldTreatAsStandardURL &&
- (this.internalResult.pathname = '/'),
- this.nextIsAuthoritySlashes()
- ? ((u = f$1.AUTHORITY), (D = 3))
- : this.shouldTreatAsStandardURL && (u = f$1.AUTHORITY),
- this.changeState(u, D)
- }
- break
- case f$1.AUTHORITY:
- this.isIdentityTerminator()
- ? this.rewindAndSetState(f$1.USERNAME)
- : (this.isPathnameStart() ||
- this.isSearchPrefix() ||
- this.isHashPrefix()) &&
- this.rewindAndSetState(f$1.HOSTNAME)
- break
- case f$1.USERNAME:
- this.isPasswordPrefix()
- ? this.changeState(f$1.PASSWORD, 1)
- : this.isIdentityTerminator() &&
- this.changeState(f$1.HOSTNAME, 1)
- break
- case f$1.PASSWORD:
- this.isIdentityTerminator() && this.changeState(f$1.HOSTNAME, 1)
- break
- case f$1.HOSTNAME:
- this.isIPv6Open()
- ? (this.hostnameIPv6BracketDepth += 1)
- : this.isIPv6Close() && (this.hostnameIPv6BracketDepth -= 1),
- this.isPortPrefix() && !this.hostnameIPv6BracketDepth
- ? this.changeState(f$1.PORT, 1)
- : this.isPathnameStart()
- ? this.changeState(f$1.PATHNAME, 0)
- : this.isSearchPrefix()
- ? this.changeState(f$1.SEARCH, 1)
- : this.isHashPrefix() && this.changeState(f$1.HASH, 1)
- break
- case f$1.PORT:
- this.isPathnameStart()
- ? this.changeState(f$1.PATHNAME, 0)
- : this.isSearchPrefix()
- ? this.changeState(f$1.SEARCH, 1)
- : this.isHashPrefix() && this.changeState(f$1.HASH, 1)
- break
- case f$1.PATHNAME:
- this.isSearchPrefix()
- ? this.changeState(f$1.SEARCH, 1)
- : this.isHashPrefix() && this.changeState(f$1.HASH, 1)
- break
- case f$1.SEARCH:
- this.isHashPrefix() && this.changeState(f$1.HASH, 1)
- }
- }
- }),
- (t.changeState = function (u, D) {
- switch (this.state) {
- case f$1.INIT:
- break
- case f$1.PROTOCOL:
- this.internalResult.protocol = this.makeComponentString()
- break
- case f$1.AUTHORITY:
- break
- case f$1.USERNAME:
- this.internalResult.username = this.makeComponentString()
- break
- case f$1.PASSWORD:
- this.internalResult.password = this.makeComponentString()
- break
- case f$1.HOSTNAME:
- this.internalResult.hostname = this.makeComponentString()
- break
- case f$1.PORT:
- this.internalResult.port = this.makeComponentString()
- break
- case f$1.PATHNAME:
- this.internalResult.pathname = this.makeComponentString()
- break
- case f$1.SEARCH:
- this.internalResult.search = this.makeComponentString()
- break
- case f$1.HASH:
- this.internalResult.hash = this.makeComponentString()
- }
- this.changeStateWithoutSettingComponent(u, D)
- }),
- (t.changeStateWithoutSettingComponent = function (u, D) {
- ;(this.state = u),
- (this.componentStart = this.tokenIndex + D),
- (this.tokenIndex += D),
- (this.tokenIncrement = 0)
- }),
- (t.rewind = function () {
- ;(this.tokenIndex = this.componentStart), (this.tokenIncrement = 0)
- }),
- (t.rewindAndSetState = function (u) {
- this.rewind(), (this.state = u)
- }),
- (t.safeToken = function (u) {
- return (
- u < 0 && (u = this.tokenList.length - u),
- u < this.tokenList.length
- ? this.tokenList[u]
- : this.tokenList[this.tokenList.length - 1]
- )
- }),
- (t.isNonSpecialPatternChar = function (u, D) {
- var t = this.safeToken(u)
- return (
- t.value === D &&
- ('CHAR' === t.type ||
- 'ESCAPED_CHAR' === t.type ||
- 'INVALID_CHAR' === t.type)
- )
- }),
- (t.isProtocolSuffix = function () {
- return this.isNonSpecialPatternChar(this.tokenIndex, ':')
- }),
- (t.nextIsAuthoritySlashes = function () {
- return (
- this.isNonSpecialPatternChar(this.tokenIndex + 1, '/') &&
- this.isNonSpecialPatternChar(this.tokenIndex + 2, '/')
- )
- }),
- (t.isIdentityTerminator = function () {
- return this.isNonSpecialPatternChar(this.tokenIndex, '@')
- }),
- (t.isPasswordPrefix = function () {
- return this.isNonSpecialPatternChar(this.tokenIndex, ':')
- }),
- (t.isPortPrefix = function () {
- return this.isNonSpecialPatternChar(this.tokenIndex, ':')
- }),
- (t.isPathnameStart = function () {
- return this.isNonSpecialPatternChar(this.tokenIndex, '/')
- }),
- (t.isSearchPrefix = function () {
- if (this.isNonSpecialPatternChar(this.tokenIndex, '?')) return !0
- if ('?' !== this.tokenList[this.tokenIndex].value) return !1
- var u = this.safeToken(this.tokenIndex - 1)
- return (
- 'NAME' !== u.type &&
- 'PATTERN' !== u.type &&
- 'CLOSE' !== u.type &&
- 'ASTERISK' !== u.type
- )
- }),
- (t.isHashPrefix = function () {
- return this.isNonSpecialPatternChar(this.tokenIndex, '#')
- }),
- (t.isGroupOpen = function () {
- return 'OPEN' == this.tokenList[this.tokenIndex].type
- }),
- (t.isGroupClose = function () {
- return 'CLOSE' == this.tokenList[this.tokenIndex].type
- }),
- (t.isIPv6Open = function () {
- return this.isNonSpecialPatternChar(this.tokenIndex, '[')
- }),
- (t.isIPv6Close = function () {
- return this.isNonSpecialPatternChar(this.tokenIndex, ']')
- }),
- (t.makeComponentString = function () {
- var u = this.tokenList[this.tokenIndex],
- D = this.safeToken(this.componentStart).index
- return this.input.substring(D, u.index)
- }),
- (t.computeShouldTreatAsStandardURL = function () {
- var u = {}
- Object.assign(u, B), (u.encodePart = g)
- var D = a(this.makeComponentString(), void 0, u)
- this.shouldTreatAsStandardURL = m(D)
- }),
- D(u, [
- {
- key: 'result',
- get: function () {
- return this.internalResult
- },
- },
- ]),
- u
- )
- })(),
- I = [
- 'protocol',
- 'username',
- 'password',
- 'hostname',
- 'port',
- 'pathname',
- 'search',
- 'hash',
- ]
-function O(u, D) {
- if ('string' != typeof u)
- throw new TypeError("parameter 1 is not of type 'string'.")
- var t = new URL(u, D)
- return {
- protocol: t.protocol.substring(0, t.protocol.length - 1),
- username: t.username,
- password: t.password,
- hostname: t.hostname,
- port: t.port,
- pathname: t.pathname,
- search: '' != t.search ? t.search.substring(1, t.search.length) : void 0,
- hash: '' != t.hash ? t.hash.substring(1, t.hash.length) : void 0,
- }
-}
-function H(u, D, t) {
- var F
- if ('string' == typeof D.baseURL)
- try {
- ;(F = new URL(D.baseURL)),
- (u.protocol = F.protocol
- ? F.protocol.substring(0, F.protocol.length - 1)
- : ''),
- (u.username = F.username),
- (u.password = F.password),
- (u.hostname = F.hostname),
- (u.port = F.port),
- (u.pathname = F.pathname),
- (u.search = F.search ? F.search.substring(1, F.search.length) : ''),
- (u.hash = F.hash ? F.hash.substring(1, F.hash.length) : '')
- } catch (u) {
- throw new TypeError("invalid baseURL '" + D.baseURL + "'.")
- }
- if (
- ('string' == typeof D.protocol &&
- (u.protocol = (function (u, D) {
- var t
- return (
- (u = (t = u).endsWith(':') ? t.substr(0, t.length - ':'.length) : t),
- D || '' === u ? u : g(u)
- )
- })(D.protocol, t)),
- 'string' == typeof D.username &&
- (u.username = (function (u, D) {
- if (D || '' === u) return u
- var t = new URL('https://example.com')
- return (t.username = u), t.username
- })(D.username, t)),
- 'string' == typeof D.password &&
- (u.password = (function (u, D) {
- if (D || '' === u) return u
- var t = new URL('https://example.com')
- return (t.password = u), t.password
- })(D.password, t)),
- 'string' == typeof D.hostname &&
- (u.hostname = (function (u, D) {
- return D || '' === u ? u : c(u) ? y(u) : v(u)
- })(D.hostname, t)),
- 'string' == typeof D.port &&
- (u.port = (function (u, D, t) {
- return d(D) === u && (u = ''), t || '' === u ? u : R(u)
- })(D.port, u.protocol, t)),
- 'string' == typeof D.pathname)
- ) {
- if (
- ((u.pathname = D.pathname),
- F &&
- !(function (u, D) {
- return !(
- !u.length ||
- ('/' !== u[0] &&
- (!D ||
- u.length < 2 ||
- ('\\' != u[0] && '{' != u[0]) ||
- '/' != u[1]))
- )
- })(u.pathname, t))
- ) {
- var e = F.pathname.lastIndexOf('/')
- e >= 0 && (u.pathname = F.pathname.substring(0, e + 1) + u.pathname)
- }
- u.pathname = (function (u, D, t) {
- if (t || '' === u) return u
- if (D && !l.includes(D)) return new URL(D + ':' + u).pathname
- var F = '/' == u[0]
- return (
- (u = new URL(F ? u : '/-' + u, 'https://example.com').pathname),
- F || (u = u.substring(2, u.length)),
- u
- )
- })(u.pathname, u.protocol, t)
- }
- return (
- 'string' == typeof D.search &&
- (u.search = (function (u, D) {
- if (((u = p(u, '?')), D || '' === u)) return u
- var t = new URL('https://example.com')
- return (
- (t.search = u), t.search ? t.search.substring(1, t.search.length) : ''
- )
- })(D.search, t)),
- 'string' == typeof D.hash &&
- (u.hash = (function (u, D) {
- if (((u = p(u, '#')), D || '' === u)) return u
- var t = new URL('https://example.com')
- return (t.hash = u), t.hash ? t.hash.substring(1, t.hash.length) : ''
- })(D.hash, t)),
- u
- )
-}
-function N(u) {
- return u.replace(/([+*?:{}()\\])/g, '\\$1')
-}
-function L(u, D) {
- for (
- var t =
- '[^' +
- (D.delimiter || '/#?').replace(/([.+*?^${}()[\]|/\\])/g, '\\$1') +
- ']+?',
- F =
- /(?:[\$0-9A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u08D3-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA827\uA82C\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF50\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD47\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E-\uDC61\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B-\uDD43\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFE4\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]|\uDB40[\uDD00-\uDDEF])/,
- e = '',
- C = 0;
- C < u.length;
- ++C
- ) {
- var A = u[C],
- E = C > 0 ? u[C - 1] : null,
- n = C < u.length - 1 ? u[C + 1] : null
- if ('string' != typeof A)
- if ('' !== A.pattern) {
- var r = 'number' != typeof A.name,
- i = void 0 !== D.prefixes ? D.prefixes : './',
- s =
- '' !== A.suffix ||
- ('' !== A.prefix &&
- (1 !== A.prefix.length || !i.includes(A.prefix)))
- s ||
- !r ||
- A.pattern !== t ||
- '' !== A.modifier ||
- !n ||
- n.prefix ||
- n.suffix ||
- (s =
- 'string' == typeof n
- ? F.test(n.length > 0 ? n[0] : '')
- : 'number' == typeof n.name),
- !s &&
- '' === A.prefix &&
- E &&
- 'string' == typeof E &&
- E.length > 0 &&
- (s = i.includes(E[E.length - 1])),
- s && (e += '{'),
- (e += N(A.prefix)),
- r && (e += ':' + A.name),
- '.*' === A.pattern
- ? (e +=
- r ||
- (E &&
- 'string' != typeof E &&
- !E.modifier &&
- !s &&
- '' === A.prefix)
- ? '(.*)'
- : '*')
- : A.pattern === t
- ? r || (e += '(' + t + ')')
- : (e += '(' + A.pattern + ')'),
- A.pattern === t &&
- r &&
- '' !== A.suffix &&
- F.test(A.suffix[0]) &&
- (e += '\\'),
- (e += N(A.suffix)),
- s && (e += '}'),
- (e += A.modifier)
- } else {
- if ('' === A.modifier) {
- e += N(A.prefix)
- continue
- }
- e += '{' + N(A.prefix) + '}' + A.modifier
- }
- else e += N(A)
- }
- return e
-}
-var U = (function () {
- function u(u, D) {
- void 0 === u && (u = {}),
- (this.pattern = void 0),
- (this.regexp = {}),
- (this.keys = {}),
- (this.component_pattern = {})
- try {
- if ('string' == typeof u) {
- var t = new b(u)
- if ((t.parse(), (u = t.result), D)) {
- if ('string' != typeof D)
- throw new TypeError("'baseURL' parameter is not of type 'string'.")
- u.baseURL = D
- } else if ('string' != typeof u.protocol)
- throw new TypeError(
- 'A base URL must be provided for a relative constructor string.'
- )
- } else if (D) throw new TypeError("parameter 1 is not of type 'string'.")
- if (!u || 'object' != typeof u)
- throw new TypeError(
- "parameter 1 is not of type 'string' and cannot convert to dictionary."
- )
- var e
- ;(this.pattern = H(
- {
- pathname: '*',
- protocol: '*',
- username: '*',
- password: '*',
- hostname: '*',
- port: '*',
- search: '*',
- hash: '*',
- },
- u,
- !0
- )),
- d(this.pattern.protocol) === this.pattern.port &&
- (this.pattern.port = '')
- for (var C, A = F$1(I); !(C = A()).done; )
- if ((e = C.value) in this.pattern) {
- var E = {},
- r = this.pattern[e]
- switch (((this.keys[e] = []), e)) {
- case 'protocol':
- Object.assign(E, B), (E.encodePart = g)
- break
- case 'username':
- Object.assign(E, B), (E.encodePart = x)
- break
- case 'password':
- Object.assign(E, B), (E.encodePart = S$1)
- break
- case 'hostname':
- Object.assign(E, o), (E.encodePart = c(r) ? y : v)
- break
- case 'port':
- Object.assign(E, B), (E.encodePart = R)
- break
- case 'pathname':
- m(this.regexp.protocol)
- ? (Object.assign(E, h), (E.encodePart = k))
- : (Object.assign(E, B), (E.encodePart = w))
- break
- case 'search':
- Object.assign(E, B), (E.encodePart = P)
- break
- case 'hash':
- Object.assign(E, B), (E.encodePart = T)
- }
- try {
- var i = n(r, E)
- ;(this.regexp[e] = s$1(i, this.keys[e], E)),
- (this.component_pattern[e] = L(i, E))
- } catch (u) {
- throw new TypeError(
- 'invalid ' + e + " pattern '" + this.pattern[e] + "'."
- )
- }
- }
- } catch (u) {
- throw new TypeError("Failed to construct 'URLPattern': " + u.message)
- }
- }
- var t = u.prototype
- return (
- (t.test = function (u, D) {
- void 0 === u && (u = {})
- var t,
- F = {
- pathname: '',
- protocol: '',
- username: '',
- password: '',
- hostname: '',
- port: '',
- search: '',
- hash: '',
- }
- if ('string' != typeof u && D)
- throw new TypeError("parameter 1 is not of type 'string'.")
- if (void 0 === u) return !1
- try {
- F = H(F, 'object' == typeof u ? u : O(u, D), !1)
- } catch (u) {
- return !1
- }
- for (t in this.pattern) if (!this.regexp[t].exec(F[t])) return !1
- return !0
- }),
- (t.exec = function (u, D) {
- void 0 === u && (u = {})
- var t = {
- pathname: '',
- protocol: '',
- username: '',
- password: '',
- hostname: '',
- port: '',
- search: '',
- hash: '',
- }
- if ('string' != typeof u && D)
- throw new TypeError("parameter 1 is not of type 'string'.")
- if (void 0 !== u) {
- try {
- t = H(t, 'object' == typeof u ? u : O(u, D), !1)
- } catch (u) {
- return null
- }
- var e,
- C = {}
- for (e in ((C.inputs = D ? [u, D] : [u]), this.pattern)) {
- var A = this.regexp[e].exec(t[e])
- if (!A) return null
- for (
- var E, n = {}, r = F$1(this.keys[e].entries());
- !(E = r()).done;
-
- ) {
- var i = E.value,
- s = i[1]
- ;('string' != typeof s.name && 'number' != typeof s.name) ||
- (n[s.name] = A[i[0] + 1] || '')
- }
- C[e] = { input: t[e] || '', groups: n }
- }
- return C
- }
- }),
- D(u, [
- {
- key: 'protocol',
- get: function () {
- return this.component_pattern.protocol
- },
- },
- {
- key: 'username',
- get: function () {
- return this.component_pattern.username
- },
- },
- {
- key: 'password',
- get: function () {
- return this.component_pattern.password
- },
- },
- {
- key: 'hostname',
- get: function () {
- return this.component_pattern.hostname
- },
- },
- {
- key: 'port',
- get: function () {
- return this.component_pattern.port
- },
- },
- {
- key: 'pathname',
- get: function () {
- return this.component_pattern.pathname
- },
- },
- {
- key: 'search',
- get: function () {
- return this.component_pattern.search
- },
- },
- {
- key: 'hash',
- get: function () {
- return this.component_pattern.hash
- },
- },
- ]),
- u
- )
-})()
-
-const INTERNAL = { tick: 0, pool: new Map() }
-function setTimeout(callback, delay = 0, ...args) {
- const func = __function_bind(callback, globalThis)
- const tick = ++INTERNAL.tick
- const timeout = setTimeout$1(func, delay, ...args)
- INTERNAL.pool.set(tick, timeout)
- return tick
-}
-function clearTimeout(timeoutId) {
- const timeout = INTERNAL.pool.get(timeoutId)
- if (timeout) {
- clearTimeout$1(timeout)
- INTERNAL.pool.delete(timeoutId)
- }
-}
-
-const PRIMITIVE = 0
-const ARRAY = 1
-const OBJECT = 2
-const DATE = 3
-const REGEXP = 4
-const MAP = 5
-const SET = 6
-const ERROR = 7
-const BIGINT = 8
-// export const SYMBOL = 9;
-
-const env = typeof self === 'object' ? self : globalThis
-
-const deserializer = ($, _) => {
- const as = (out, index) => {
- $.set(index, out)
- return out
- }
-
- const unpair = (index) => {
- if ($.has(index)) return $.get(index)
-
- const [type, value] = _[index]
- switch (type) {
- case PRIMITIVE:
- return as(value, index)
- case ARRAY: {
- const arr = as([], index)
- for (const index of value) arr.push(unpair(index))
- return arr
- }
- case OBJECT: {
- const object = as({}, index)
- for (const [key, index] of value) object[unpair(key)] = unpair(index)
- return object
- }
- case DATE:
- return as(new Date(value), index)
- case REGEXP: {
- const { source, flags } = value
- return as(new RegExp(source, flags), index)
- }
- case MAP: {
- const map = as(new Map(), index)
- for (const [key, index] of value) map.set(unpair(key), unpair(index))
- return map
- }
- case SET: {
- const set = as(new Set(), index)
- for (const index of value) set.add(unpair(index))
- return set
- }
- case ERROR: {
- const { name, message } = value
- return as(new env[name](message), index)
- }
- case BIGINT:
- return as(BigInt(value), index)
- case 'BigInt':
- return as(Object(BigInt(value)), index)
- }
- return as(new env[type](value), index)
- }
-
- return unpair
-}
-
-/**
- * @typedef {Array<string,any>} Record a type representation
- */
-
-/**
- * Returns a deserialized value from a serialized array of Records.
- * @param {Record[]} serialized a previously serialized value.
- * @returns {any}
- */
-const deserialize = (serialized) => deserializer(new Map(), serialized)(0)
-
-const EMPTY = ''
-
-const { toString } = {}
-const { keys } = Object
-
-const typeOf = (value) => {
- const type = typeof value
- if (type !== 'object' || !value) return [PRIMITIVE, type]
-
- const asString = toString.call(value).slice(8, -1)
- switch (asString) {
- case 'Array':
- return [ARRAY, EMPTY]
- case 'Object':
- return [OBJECT, EMPTY]
- case 'Date':
- return [DATE, EMPTY]
- case 'RegExp':
- return [REGEXP, EMPTY]
- case 'Map':
- return [MAP, EMPTY]
- case 'Set':
- return [SET, EMPTY]
- }
-
- if (asString.includes('Array')) return [ARRAY, asString]
-
- if (asString.includes('Error')) return [ERROR, asString]
-
- return [OBJECT, asString]
-}
-
-const shouldSkip = ([TYPE, type]) =>
- TYPE === PRIMITIVE && (type === 'function' || type === 'symbol')
-
-const serializer = (strict, json, $, _) => {
- const as = (out, value) => {
- const index = _.push(out) - 1
- $.set(value, index)
- return index
- }
-
- const pair = (value) => {
- if ($.has(value)) return $.get(value)
-
- let [TYPE, type] = typeOf(value)
- switch (TYPE) {
- case PRIMITIVE: {
- let entry = value
- switch (type) {
- case 'bigint':
- TYPE = BIGINT
- entry = value.toString()
- break
- case 'function':
- case 'symbol':
- if (strict) throw new TypeError('unable to serialize ' + type)
- entry = null
- break
- }
- return as([TYPE, entry], value)
- }
- case ARRAY: {
- if (type) return as([type, [...value]], value)
-
- const arr = []
- const index = as([TYPE, arr], value)
- for (const entry of value) arr.push(pair(entry))
- return index
- }
- case OBJECT: {
- if (type) {
- switch (type) {
- case 'BigInt':
- return as([type, value.toString()], value)
- case 'Boolean':
- case 'Number':
- case 'String':
- return as([type, value.valueOf()], value)
- }
- }
-
- if (json && 'toJSON' in value) return pair(value.toJSON())
-
- const entries = []
- const index = as([TYPE, entries], value)
- for (const key of keys(value)) {
- if (strict || !shouldSkip(typeOf(value[key])))
- entries.push([pair(key), pair(value[key])])
- }
- return index
- }
- case DATE:
- return as([TYPE, value.toISOString()], value)
- case REGEXP: {
- const { source, flags } = value
- return as([TYPE, { source, flags }], value)
- }
- case MAP: {
- const entries = []
- const index = as([TYPE, entries], value)
- for (const [key, entry] of value) {
- if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))
- entries.push([pair(key), pair(entry)])
- }
- return index
- }
- case SET: {
- const entries = []
- const index = as([TYPE, entries], value)
- for (const entry of value) {
- if (strict || !shouldSkip(typeOf(entry))) entries.push(pair(entry))
- }
- return index
- }
- }
-
- const { message } = value
- return as([TYPE, { name: type, message }], value)
- }
-
- return pair
-}
-
-/**
- * @typedef {Array<string,any>} Record a type representation
- */
-
-/**
- * Returns an array of serialized Records.
- * @param {any} value a serializable value.
- * @param {{lossy?: boolean}?} options an object with a `lossy` property that,
- * if `true`, will not throw errors on incompatible types, and behave more
- * like JSON stringify would behave. Symbol and Function will be discarded.
- * @returns {Record[]}
- */
-const serialize = (value, { json, lossy } = {}) => {
- const _ = []
- return serializer(!(json || lossy), !!json, new Map(), _)(value), _
-}
-
-var structuredClone = (any, options) => deserialize(serialize(any, options))
-
-class ImageData {
- constructor(arg0, arg1, ...args) {
- if (arguments.length < 2)
- throw new TypeError(
- `Failed to construct 'ImageData': 2 arguments required.`
- )
- /** Whether Uint8ClampedArray data is provided. */
- const hasData = __object_isPrototypeOf(Uint8ClampedArray.prototype, arg0)
- /** Image data, either provided or calculated. */
- const d = hasData
- ? arg0
- : new Uint8ClampedArray(
- asNumber(arg0, 'width') * asNumber(arg1, 'height') * 4
- )
- /** Image width. */
- const w = asNumber(hasData ? arg1 : arg0, 'width')
- /** Image height. */
- const h = d.length / w / 4
- /** Image color space. */
- const c = String(Object(hasData ? args[1] : args[0]).colorSpace || 'srgb')
- // throw if a provided height does not match the calculated height
- if (args.length && asNumber(args[0], 'height') !== h)
- throw new DOMException(
- 'height is not equal to (4 * width * height)',
- 'IndexSizeError'
- )
- // throw if a provided colorspace does not match a known colorspace
- if (c !== 'srgb' && c !== 'rec2020' && c !== 'display-p3')
- throw new TypeError('colorSpace is not known value')
- Object.defineProperty(this, 'data', {
- configurable: true,
- enumerable: true,
- value: d,
- })
- INTERNALS$3.set(this, { width: w, height: h, colorSpace: c })
- }
- get data() {
- internalsOf(this, 'ImageData', 'data')
- return Object.getOwnPropertyDescriptor(this, 'data').value
- }
- get width() {
- return internalsOf(this, 'ImageData', 'width').width
- }
- get height() {
- return internalsOf(this, 'ImageData', 'height').height
- }
-}
-allowStringTag(ImageData)
-/** Returns a coerced number, optionally throwing if the number is zero-ish. */
-const asNumber = (value, axis) => {
- value = Number(value) || 0
- if (value === 0)
- throw new TypeError(`The source ${axis} is zero or not a number.`)
- return value
-}
-
-class CanvasRenderingContext2D {
- get canvas() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'canvas').canvas
- }
- get direction() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'direction').direction
- }
- get fillStyle() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'fillStyle').fillStyle
- }
- get filter() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'filter').filter
- }
- get globalAlpha() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'globalAlpha')
- .globalAlpha
- }
- get globalCompositeOperation() {
- return internalsOf(
- this,
- 'CanvasRenderingContext2D',
- 'globalCompositeOperation'
- ).globalCompositeOperation
- }
- get font() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'font').font
- }
- get imageSmoothingEnabled() {
- return internalsOf(
- this,
- 'CanvasRenderingContext2D',
- 'imageSmoothingEnabled'
- ).imageSmoothingEnabled
- }
- get imageSmoothingQuality() {
- return internalsOf(
- this,
- 'CanvasRenderingContext2D',
- 'imageSmoothingQuality'
- ).imageSmoothingQuality
- }
- get lineCap() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'lineCap').lineCap
- }
- get lineDashOffset() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'lineDashOffset')
- .lineDashOffset
- }
- get lineJoin() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'lineJoin').lineJoin
- }
- get lineWidth() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'lineWidth').lineWidth
- }
- get miterLimit() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'miterLimit')
- .miterLimit
- }
- get strokeStyle() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'strokeStyle')
- .strokeStyle
- }
- get shadowOffsetX() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'shadowOffsetX')
- .shadowOffsetX
- }
- get shadowOffsetY() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'shadowOffsetY')
- .shadowOffsetY
- }
- get shadowBlur() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'shadowBlur')
- .shadowBlur
- }
- get shadowColor() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'shadowColor')
- .shadowColor
- }
- get textAlign() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'textAlign').textAlign
- }
- get textBaseline() {
- return internalsOf(this, 'CanvasRenderingContext2D', 'textBaseline')
- .textBaseline
- }
- arc() {}
- arcTo() {}
- beginPath() {}
- bezierCurveTo() {}
- clearRect() {}
- clip() {}
- closePath() {}
- createImageData(arg0, arg1) {
- /** Whether ImageData is provided. */
- const hasData = __object_isPrototypeOf(ImageData.prototype, arg0)
- const w = hasData ? arg0.width : arg0
- const h = hasData ? arg0.height : arg1
- const d = hasData ? arg0.data : new Uint8ClampedArray(w * h * 4)
- return new ImageData(d, w, h)
- }
- createLinearGradient() {}
- createPattern() {}
- createRadialGradient() {}
- drawFocusIfNeeded() {}
- drawImage() {}
- ellipse() {}
- fill() {}
- fillRect() {}
- fillText() {}
- getContextAttributes() {}
- getImageData() {}
- getLineDash() {}
- getTransform() {}
- isPointInPath() {}
- isPointInStroke() {}
- lineTo() {}
- measureText() {}
- moveTo() {}
- putImageData() {}
- quadraticCurveTo() {}
- rect() {}
- resetTransform() {}
- restore() {}
- rotate() {}
- save() {}
- scale() {}
- setLineDash() {}
- setTransform() {}
- stroke() {}
- strokeRect() {}
- strokeText() {}
- transform() {}
- translate() {}
-}
-allowStringTag(CanvasRenderingContext2D)
-const __createCanvasRenderingContext2D = (canvas) => {
- const renderingContext2D = Object.create(CanvasRenderingContext2D.prototype)
- INTERNALS$3.set(renderingContext2D, {
- canvas,
- direction: 'inherit',
- fillStyle: '#000',
- filter: 'none',
- font: '10px sans-serif',
- globalAlpha: 0,
- globalCompositeOperation: 'source-over',
- imageSmoothingEnabled: false,
- imageSmoothingQuality: 'high',
- lineCap: 'butt',
- lineDashOffset: 0.0,
- lineJoin: 'miter',
- lineWidth: 1.0,
- miterLimit: 10.0,
- shadowBlur: 0,
- shadowColor: '#000',
- shadowOffsetX: 0,
- shadowOffsetY: 0,
- strokeStyle: '#000',
- textAlign: 'start',
- textBaseline: 'alphabetic',
- })
- return renderingContext2D
-}
-
-class StyleSheet {}
-class CSSStyleSheet extends StyleSheet {
- async replace(text) {
- return new CSSStyleSheet()
- }
- replaceSync(text) {
- return new CSSStyleSheet()
- }
- get cssRules() {
- return []
- }
-}
-allowStringTag(StyleSheet)
-allowStringTag(CSSStyleSheet)
-
-class CustomElementRegistry {
- /** Defines a new custom element using the given tag name and HTMLElement constructor. */
- define(name, constructor, options) {
- const internals = internalsOf(this, 'CustomElementRegistry', 'define')
- name = String(name)
- if (/[A-Z]/.test(name))
- throw new SyntaxError(
- 'Custom element name cannot contain an uppercase ASCII letter'
- )
- if (!/^[a-z]/.test(name))
- throw new SyntaxError(
- 'Custom element name must have a lowercase ASCII letter as its first character'
- )
- if (!/-/.test(name))
- throw new SyntaxError('Custom element name must contain a hyphen')
- internals.constructorByName.set(name, constructor)
- internals.nameByConstructor.set(constructor, name)
- }
- /** Returns the constructor associated with the given tag name. */
- get(name) {
- const internals = internalsOf(this, 'CustomElementRegistry', 'get')
- name = String(name).toLowerCase()
- return internals.constructorByName.get(name)
- }
- getName(constructor) {
- const internals = internalsOf(this, 'CustomElementRegistry', 'getName')
- return internals.nameByConstructor.get(constructor)
- }
-}
-allowStringTag(CustomElementRegistry)
-const initCustomElementRegistry = (target, exclude) => {
- if (exclude.has('customElements')) return
- const CustomElementRegistry =
- target.CustomElementRegistry || globalThis.CustomElementRegistry
- const customElements = (target.customElements = Object.create(
- CustomElementRegistry.prototype
- ))
- INTERNALS$3.set(customElements, {
- constructorByName: new Map(),
- nameByConstructor: new Map(),
- })
-}
-
-class Element extends Node {
- hasAttribute(name) {
- return false
- }
- getAttribute(name) {
- return null
- }
- setAttribute(name, value) {}
- removeAttribute(name) {}
- attachShadow(init) {
- if (arguments.length < 1)
- throw new TypeError(
- `Failed to execute 'attachShadow' on 'Element': 1 argument required, but only 0 present.`
- )
- if (init !== Object(init))
- throw new TypeError(
- `Failed to execute 'attachShadow' on 'Element': The provided value is not of type 'ShadowRootInit'.`
- )
- if (init.mode !== 'open' && init.mode !== 'closed')
- throw new TypeError(
- `Failed to execute 'attachShadow' on 'Element': Failed to read the 'mode' property from 'ShadowRootInit': The provided value '${init.mode}' is not a valid enum value of type ShadowRootMode.`
- )
- const internals = internalsOf(this, 'Element', 'attachShadow')
- if (internals.shadowRoot) throw new Error('The operation is not supported.')
- internals.shadowInit = internals.shadowInit || {
- mode: init.mode,
- delegatesFocus: Boolean(init.delegatesFocus),
- }
- internals.shadowRoot =
- internals.shadowRoot ||
- (/^open$/.test(internals.shadowInit.mode)
- ? Object.setPrototypeOf(new EventTarget(), ShadowRoot.prototype)
- : null)
- return internals.shadowRoot
- }
- get assignedSlot() {
- return null
- }
- get innerHTML() {
- internalsOf(this, 'Element', 'innerHTML')
- return ''
- }
- set innerHTML(value) {
- internalsOf(this, 'Element', 'innerHTML')
- }
- get shadowRoot() {
- const internals = internalsOf(this, 'Element', 'shadowRoot')
- return Object(internals.shadowInit).mode === 'open'
- ? internals.shadowRoot
- : null
- }
- get localName() {
- return internalsOf(this, 'Element', 'localName').localName
- }
- get nodeName() {
- return internalsOf(this, 'Element', 'nodeName').localName.toUpperCase()
- }
- get tagName() {
- return internalsOf(this, 'Element', 'tagName').localName.toUpperCase()
- }
-}
-class HTMLElement extends Element {}
-class HTMLBodyElement extends HTMLElement {}
-class HTMLDivElement extends HTMLElement {}
-class HTMLHeadElement extends HTMLElement {}
-class HTMLHtmlElement extends HTMLElement {}
-class HTMLSpanElement extends HTMLElement {}
-class HTMLStyleElement extends HTMLElement {}
-class HTMLTemplateElement extends HTMLElement {}
-class HTMLUnknownElement extends HTMLElement {}
-allowStringTag(Element)
-allowStringTag(HTMLElement)
-allowStringTag(HTMLBodyElement)
-allowStringTag(HTMLDivElement)
-allowStringTag(HTMLHeadElement)
-allowStringTag(HTMLHtmlElement)
-allowStringTag(HTMLSpanElement)
-allowStringTag(HTMLStyleElement)
-allowStringTag(HTMLTemplateElement)
-allowStringTag(HTMLUnknownElement)
-
-class Document extends Node {
- createElement(name) {
- const internals = internalsOf(this, 'Document', 'createElement')
- const customElementInternals = INTERNALS$3.get(
- internals.target.customElements
- )
- name = String(name).toLowerCase()
- const TypeOfHTMLElement =
- internals.constructorByName.get(name) ||
- (customElementInternals &&
- customElementInternals.constructorByName.get(name)) ||
- HTMLUnknownElement
- const element = Object.setPrototypeOf(
- new EventTarget(),
- TypeOfHTMLElement.prototype
- )
- INTERNALS$3.set(element, {
- attributes: {},
- localName: name,
- ownerDocument: this,
- shadowInit: null,
- shadowRoot: null,
- })
- return element
- }
- createNodeIterator(root, whatToShow = NodeFilter.SHOW_ALL, filter) {
- const target = Object.create(NodeIterator.prototype)
- INTERNALS$3.set(target, {
- filter,
- pointerBeforeReferenceNode: false,
- referenceNode: root,
- root,
- whatToShow,
- })
- return target
- }
- createTextNode(data) {
- return new Text(data)
- }
- createTreeWalker(
- root,
- whatToShow = NodeFilter.SHOW_ALL,
- filter,
- expandEntityReferences
- ) {
- const target = Object.create(TreeWalker.prototype)
- INTERNALS$3.set(target, { filter, currentNode: root, root, whatToShow })
- return target
- }
- get adoptedStyleSheets() {
- return []
- }
- get styleSheets() {
- return []
- }
-}
-class HTMLDocument extends Document {}
-allowStringTag(Document)
-allowStringTag(HTMLDocument)
-const initDocument = (target, exclude) => {
- if (exclude.has('document')) return
- const EventTarget = target.EventTarget || globalThis.EventTarget
- const HTMLDocument = target.HTMLDocument || globalThis.HTMLDocument
- const document = (target.document = Object.setPrototypeOf(
- new EventTarget(),
- HTMLDocument.prototype
- ))
- INTERNALS$3.set(document, {
- target,
- constructorByName: new Map([
- ['body', target.HTMLBodyElement],
- ['canvas', target.HTMLCanvasElement],
- ['div', target.HTMLDivElement],
- ['head', target.HTMLHeadElement],
- ['html', target.HTMLHtmlElement],
- ['img', target.HTMLImageElement],
- ['span', target.HTMLSpanElement],
- ['style', target.HTMLStyleElement],
- ]),
- nameByConstructor: new Map(),
- })
- const initElement = (name, Class) => {
- const target = Object.setPrototypeOf(new EventTarget(), Class.prototype)
- INTERNALS$3.set(target, {
- attributes: {},
- localName: name,
- ownerDocument: document,
- shadowRoot: null,
- shadowInit: null,
- })
- return target
- }
- document.body = initElement('body', target.HTMLBodyElement)
- document.head = initElement('head', target.HTMLHeadElement)
- document.documentElement = initElement('html', target.HTMLHtmlElement)
-}
-
-class HTMLCanvasElement extends HTMLElement {
- get height() {
- return internalsOf(this, 'HTMLCanvasElement', 'height').height
- }
- set height(value) {
- internalsOf(this, 'HTMLCanvasElement', 'height').height = Number(value) || 0
- }
- get width() {
- return internalsOf(this, 'HTMLCanvasElement', 'width').width
- }
- set width(value) {
- internalsOf(this, 'HTMLCanvasElement', 'width').width = Number(value) || 0
- }
- captureStream() {
- return null
- }
- getContext(contextType) {
- const internals = internalsOf(this, 'HTMLCanvasElement', 'getContext')
- switch (contextType) {
- case '2d':
- if (internals.renderingContext2D) return internals.renderingContext2D
- internals.renderingContext2D = __createCanvasRenderingContext2D(this)
- return internals.renderingContext2D
- default:
- return null
- }
- }
- toBlob() {}
- toDataURL() {}
- transferControlToOffscreen() {}
-}
-allowStringTag(HTMLCanvasElement)
-
-class HTMLImageElement extends HTMLElement {
- get src() {
- return internalsOf(this, 'HTMLImageElement', 'src').src
- }
- set src(value) {
- const internals = internalsOf(this, 'HTMLImageElement', 'src')
- internals.src = String(value)
- }
-}
-allowStringTag(HTMLImageElement)
-
-function Image() {
- // @ts-ignore
- INTERNALS$3.set(this, {
- attributes: {},
- localName: 'img',
- innerHTML: '',
- shadowRoot: null,
- shadowInit: null,
- })
-}
-Image.prototype = HTMLImageElement.prototype
-
-class IntersectionObserver {
- disconnect() {}
- observe() {}
- takeRecords() {
- return []
- }
- unobserve() {}
-}
-class MutationObserver {
- disconnect() {}
- observe() {}
- takeRecords() {
- return []
- }
- unobserve() {}
-}
-class ResizeObserver {
- disconnect() {}
- observe() {}
- takeRecords() {
- return []
- }
- unobserve() {}
-}
-allowStringTag(MutationObserver)
-allowStringTag(IntersectionObserver)
-allowStringTag(ResizeObserver)
-
-class MediaQueryList extends EventTarget {
- get matches() {
- return internalsOf(this, 'MediaQueryList', 'matches').matches
- }
- get media() {
- return internalsOf(this, 'MediaQueryList', 'media').media
- }
-}
-allowStringTag(MediaQueryList)
-const initMediaQueryList = (target, exclude) => {
- if (exclude.has('MediaQueryList') || exclude.has('matchMedia')) return
- const EventTarget = target.EventTarget || globalThis.EventTarget
- const MediaQueryList = target.MediaQueryList || globalThis.MediaQueryList
- target.matchMedia = function matchMedia(media) {
- const mql = Object.setPrototypeOf(
- new EventTarget(),
- MediaQueryList.prototype
- )
- INTERNALS$3.set(mql, {
- matches: false,
- media,
- })
- return mql
- }
-}
-
-class OffscreenCanvas extends EventTarget {
- constructor(width, height) {
- super()
- if (arguments.length < 2)
- throw new TypeError(
- `Failed to construct 'OffscreenCanvas': 2 arguments required.`
- )
- width = Number(width) || 0
- height = Number(height) || 0
- INTERNALS$3.set(this, { width, height })
- }
- get height() {
- return internalsOf(this, 'OffscreenCanvas', 'height').height
- }
- set height(value) {
- internalsOf(this, 'OffscreenCanvas', 'height').height = Number(value) || 0
- }
- get width() {
- return internalsOf(this, 'OffscreenCanvas', 'width').width
- }
- set width(value) {
- internalsOf(this, 'OffscreenCanvas', 'width').width = Number(value) || 0
- }
- getContext(contextType) {
- const internals = internalsOf(this, 'HTMLCanvasElement', 'getContext')
- switch (contextType) {
- case '2d':
- if (internals.renderingContext2D) return internals.renderingContext2D
- internals.renderingContext2D = __createCanvasRenderingContext2D(this)
- return internals.renderingContext2D
- default:
- return null
- }
- }
- convertToBlob(options) {
- options = Object(options)
- Number(options.quality) || 0
- const type = getImageType(String(options.type).trim().toLowerCase())
- return Promise.resolve(new Blob([], { type }))
- }
-}
-allowStringTag(OffscreenCanvas)
-const getImageType = (type) =>
- type === 'image/avif' ||
- type === 'image/jpeg' ||
- type === 'image/png' ||
- type === 'image/webp'
- ? type
- : 'image/png'
-
-class Storage {
- clear() {
- internalsOf(this, 'Storage', 'clear').storage.clear()
- }
- getItem(key) {
- return getStringOrNull(
- internalsOf(this, 'Storage', 'getItem').storage.get(String(key))
- )
- }
- key(index) {
- return getStringOrNull(
- [...internalsOf(this, 'Storage', 'key').storage.keys()][
- Number(index) || 0
- ]
- )
- }
- removeItem(key) {
- internalsOf(this, 'Storage', 'getItem').storage.delete(String(key))
- }
- setItem(key, value) {
- internalsOf(this, 'Storage', 'getItem').storage.set(
- String(key),
- String(value)
- )
- }
- get length() {
- return internalsOf(this, 'Storage', 'size').storage.size
- }
-}
-const getStringOrNull = (value) => (typeof value === 'string' ? value : null)
-const initStorage = (target, exclude) => {
- if (exclude.has('Storage') || exclude.has('localStorage')) return
- target.localStorage = Object.create(Storage.prototype)
- const storageInternals = new Map()
- INTERNALS$3.set(target.localStorage, {
- storage: storageInternals,
- })
-}
-
-class Window extends EventTarget {
- get self() {
- return this
- }
- get top() {
- return this
- }
- get window() {
- return this
- }
- get innerHeight() {
- return 0
- }
- get innerWidth() {
- return 0
- }
- get scrollX() {
- return 0
- }
- get scrollY() {
- return 0
- }
-}
-allowStringTag(Window)
-const initWindow = (target, exclude) => {
- if (exclude.has('Window') || exclude.has('window')) return
- target.window = target
-}
-
-function alert(...messages) {
- console.log(...messages)
-}
-
-const hasOwn = {
- hasOwn(instance, property) {
- return __object_hasOwnProperty(instance, property)
- },
-}.hasOwn
-const initObject = (target, exclude) => {
- if (exclude.has('Object') || exclude.has('object') || exclude.has('hasOwn'))
- return
- const Class = target.Object || globalThis.Object
- Object.defineProperty(Class, 'hasOwn', {
- value: hasOwn,
- writable: true,
- enumerable: false,
- configurable: true,
- })
-}
-
-const any = {
- async any(iterable) {
- return Promise.all(
- [...iterable].map((promise) => {
- return new Promise((resolve, reject) =>
- Promise.resolve(promise).then(reject, resolve)
- )
- })
- ).then(
- (errors) => Promise.reject(errors),
- (value) => Promise.resolve(value)
- )
- },
-}.any
-const initPromise = (target, exclude) => {
- if (exclude.has('Promise') || exclude.has('any')) return
- const Class = target.Promise || globalThis.Promise
- if (!Class.any)
- Object.defineProperty(Class, 'any', {
- value: any,
- writable: true,
- enumerable: false,
- configurable: true,
- })
-}
-
-const at = {
- at(index) {
- index = Math.trunc(index) || 0
- if (index < 0) index += this.length
- if (index < 0 || index >= this.length) return undefined
- return this[index]
- },
-}.at
-const initRelativeIndexingMethod = (target, exclude) => {
- if (exclude.has('at')) return
- const Classes = []
- if (!exclude.has('TypedArray'))
- Classes.push(
- Object.getPrototypeOf(target.Int8Array || globalThis.Int8Array)
- )
- if (!exclude.has('Array')) Classes.push(target.Array || globalThis.Array)
- if (!exclude.has('String')) Classes.push(target.String || globalThis.String)
- for (const Class of Classes) {
- if (!Class.prototype.at)
- Object.defineProperty(Class.prototype, 'at', {
- value: at,
- writable: true,
- enumerable: false,
- configurable: true,
- })
- }
-}
-
-const replaceAll = {
- replaceAll(searchValue, replaceValue) {
- return __object_isPrototypeOf(RegExp.prototype, searchValue)
- ? this.replace(searchValue, replaceValue)
- : this.replace(
- new RegExp(__string_escapeRegExp(searchValue), 'g'),
- replaceValue
- )
- },
-}.replaceAll
-const initString = (target, exclude) => {
- if (exclude.has('String') || exclude.has('replaceAll')) return
- const Class = target.String || globalThis.String
- if (!Class.prototype.replaceAll)
- Object.defineProperty(Class.prototype, 'replaceAll', {
- value: replaceAll,
- writable: true,
- enumerable: false,
- configurable: true,
- })
-}
-
-const exclusionsForHTMLElement = [
- 'CustomElementsRegistry',
- 'HTMLElement',
- 'HTMLBodyElement',
- 'HTMLCanvasElement',
- 'HTMLDivElement',
- 'HTMLHeadElement',
- 'HTMLHtmlElement',
- 'HTMLImageElement',
- 'HTMLStyleElement',
- 'HTMLTemplateElement',
- 'HTMLUnknownElement',
- 'Image',
-]
-const exclusionsForElement = ['Element', ...exclusionsForHTMLElement]
-const exclusionsForDocument = [
- 'CustomElementsRegistry',
- 'Document',
- 'HTMLDocument',
- 'document',
- 'customElements',
-]
-const exclusionsForNode = [
- 'Node',
- 'DocumentFragment',
- 'ShadowRoot',
- ...exclusionsForDocument,
- ...exclusionsForElement,
-]
-const exclusionsForEventTarget = [
- 'AbortSignal',
- 'Event',
- 'CustomEvent',
- 'EventTarget',
- 'OffscreenCanvas',
- 'MediaQueryList',
- 'Window',
- ...exclusionsForNode,
-]
-const exclusionsForEvent = [
- 'AbortSignal',
- 'Event',
- 'CustomEvent',
- 'EventTarget',
- 'MediaQueryList',
- 'OffscreenCanvas',
- 'Window',
- ...exclusionsForNode,
-]
-const exclusions = {
- 'Blob+': ['Blob', 'File'],
- 'Document+': exclusionsForDocument,
- 'Element+': exclusionsForElement,
- 'Event+': exclusionsForEvent,
- 'EventTarget+': exclusionsForEventTarget,
- 'HTMLElement+': exclusionsForHTMLElement,
- 'Node+': exclusionsForNode,
- 'StyleSheet+': ['StyleSheet', 'CSSStyleSheet'],
-}
-
-const inheritence = {
- CSSStyleSheet: 'StyleSheet',
- CustomEvent: 'Event',
- DOMException: 'Error',
- Document: 'Node',
- DocumentFragment: 'Node',
- Element: 'Node',
- File: 'Blob',
- HTMLDocument: 'Document',
- HTMLElement: 'Element',
- HTMLBodyElement: 'HTMLElement',
- HTMLCanvasElement: 'HTMLElement',
- HTMLDivElement: 'HTMLElement',
- HTMLHeadElement: 'HTMLElement',
- HTMLHtmlElement: 'HTMLElement',
- HTMLImageElement: 'HTMLElement',
- HTMLSpanElement: 'HTMLElement',
- HTMLStyleElement: 'HTMLElement',
- HTMLTemplateElement: 'HTMLElement',
- HTMLUnknownElement: 'HTMLElement',
- Image: 'HTMLElement',
- MediaQueryList: 'EventTarget',
- Node: 'EventTarget',
- OffscreenCanvas: 'EventTarget',
- ShadowRoot: 'DocumentFragment',
- Window: 'EventTarget',
-}
-
-const polyfill = (target, options) => {
- const webAPIs = {
- AbortController,
- AbortSignal,
- Blob,
- ByteLengthQueuingStrategy,
- CanvasRenderingContext2D,
- CharacterData,
- Comment,
- CountQueuingStrategy,
- CSSStyleSheet,
- CustomElementRegistry,
- CustomEvent,
- Document,
- DocumentFragment,
- DOMException,
- Element,
- Event,
- EventTarget,
- File,
- FormData,
- HTMLDocument,
- HTMLElement,
- HTMLBodyElement,
- HTMLCanvasElement,
- HTMLDivElement,
- HTMLHeadElement,
- HTMLHtmlElement,
- HTMLImageElement,
- HTMLSpanElement,
- HTMLStyleElement,
- HTMLTemplateElement,
- HTMLUnknownElement,
- Headers,
- IntersectionObserver,
- Image,
- ImageData,
- MediaQueryList,
- MutationObserver,
- Node,
- NodeFilter: NodeFilter$1,
- NodeIterator: NodeIterator$1,
- OffscreenCanvas,
- ReadableByteStreamController,
- ReadableStream,
- ReadableStreamBYOBReader,
- ReadableStreamBYOBRequest,
- ReadableStreamDefaultController,
- ReadableStreamDefaultReader,
- Request,
- ResizeObserver,
- Response,
- ShadowRoot,
- Storage,
- StyleSheet,
- Text,
- TransformStream,
- TreeWalker,
- URLPattern: U,
- WritableStream,
- WritableStreamDefaultController,
- WritableStreamDefaultWriter,
- Window,
- alert,
- atob,
- btoa,
- cancelAnimationFrame,
- cancelIdleCallback,
- clearTimeout,
- fetch,
- requestAnimationFrame,
- requestIdleCallback,
- setTimeout,
- structuredClone,
- }
- // initialize exclude options
- const excludeOptions = new Set(
- typeof Object(options).exclude === 'string'
- ? String(Object(options).exclude).trim().split(/\s+/)
- : Array.isArray(Object(options).exclude)
- ? Object(options).exclude.reduce(
- (array, entry) =>
- array.splice(
- array.length,
- 0,
- ...(typeof entry === 'string' ? entry.trim().split(/\s+/) : [])
- ) && array,
- []
- )
- : []
- )
- // expand exclude options using exclusion shorthands
- for (const excludeOption of excludeOptions) {
- if (excludeOption in exclusions) {
- for (const exclusion of exclusions[excludeOption]) {
- excludeOptions.add(exclusion)
- }
- }
- }
- // apply each WebAPI
- for (const name of Object.keys(webAPIs)) {
- // skip WebAPIs that are excluded
- if (excludeOptions.has(name)) continue
- // skip WebAPIs that are built-in
- if (Object.hasOwnProperty.call(target, name)) continue
- // define WebAPIs on the target
- Object.defineProperty(target, name, {
- configurable: true,
- enumerable: true,
- writable: true,
- value: webAPIs[name],
- })
- }
- // ensure WebAPIs correctly inherit other WebAPIs
- for (const name of Object.keys(webAPIs)) {
- // skip WebAPIs that are excluded
- if (excludeOptions.has(name)) continue
- // skip WebAPIs that do not extend other WebAPIs
- if (!Object.hasOwnProperty.call(inheritence, name)) continue
- const Class = target[name]
- const Super = target[inheritence[name]]
- // skip WebAPIs that are not available
- if (!Class || !Super) continue
- // skip WebAPIs that are already inherited correctly
- if (Object.getPrototypeOf(Class.prototype) === Super.prototype) continue
- // define WebAPIs inheritence
- Object.setPrototypeOf(Class.prototype, Super.prototype)
- }
- if (
- !excludeOptions.has('HTMLDocument') &&
- !excludeOptions.has('HTMLElement')
- ) {
- initDocument(target, excludeOptions)
- if (!excludeOptions.has('CustomElementRegistry')) {
- initCustomElementRegistry(target, excludeOptions)
- }
- }
- initObject(target, excludeOptions)
- initMediaQueryList(target, excludeOptions)
- initPromise(target, excludeOptions)
- initRelativeIndexingMethod(target, excludeOptions)
- initStorage(target, excludeOptions)
- initString(target, excludeOptions)
- initWindow(target, excludeOptions)
- return target
-}
-polyfill.internals = (target, name) => {
- const init = {
- CustomElementRegistry: initCustomElementRegistry,
- Document: initDocument,
- MediaQueryList: initMediaQueryList,
- Object: initObject,
- Promise: initPromise,
- RelativeIndexingMethod: initRelativeIndexingMethod,
- Storage: initStorage,
- String: initString,
- Window: initWindow,
- }
- init[name](target, new Set())
- return target
-}
-
-let s = 0
-const S = {
- START_BOUNDARY: s++,
- HEADER_FIELD_START: s++,
- HEADER_FIELD: s++,
- HEADER_VALUE_START: s++,
- HEADER_VALUE: s++,
- HEADER_VALUE_ALMOST_DONE: s++,
- HEADERS_ALMOST_DONE: s++,
- PART_DATA_START: s++,
- PART_DATA: s++,
- END: s++,
-}
-
-let f = 1
-const F = {
- PART_BOUNDARY: f,
- LAST_BOUNDARY: (f *= 2),
-}
-
-const LF = 10
-const CR = 13
-const SPACE = 32
-const HYPHEN = 45
-const COLON = 58
-const A = 97
-const Z = 122
-
-const lower = (c) => c | 0x20
-
-const noop = () => {}
-
-class MultipartParser {
- /**
- * @param {string} boundary
- */
- constructor(boundary) {
- this.index = 0
- this.flags = 0
-
- this.onHeaderEnd = noop
- this.onHeaderField = noop
- this.onHeadersEnd = noop
- this.onHeaderValue = noop
- this.onPartBegin = noop
- this.onPartData = noop
- this.onPartEnd = noop
-
- this.boundaryChars = {}
-
- boundary = '\r\n--' + boundary
- const ui8a = new Uint8Array(boundary.length)
- for (let i = 0; i < boundary.length; i++) {
- ui8a[i] = boundary.charCodeAt(i)
- this.boundaryChars[ui8a[i]] = true
- }
-
- this.boundary = ui8a
- this.lookbehind = new Uint8Array(this.boundary.length + 8)
- this.state = S.START_BOUNDARY
- }
-
- /**
- * @param {Uint8Array} data
- */
- write(data) {
- let i = 0
- const length_ = data.length
- let previousIndex = this.index
- let { lookbehind, boundary, boundaryChars, index, state, flags } = this
- const boundaryLength = this.boundary.length
- const boundaryEnd = boundaryLength - 1
- const bufferLength = data.length
- let c
- let cl
-
- const mark = (name) => {
- this[name + 'Mark'] = i
- }
-
- const clear = (name) => {
- delete this[name + 'Mark']
- }
-
- const callback = (callbackSymbol, start, end, ui8a) => {
- if (start === undefined || start !== end) {
- this[callbackSymbol](ui8a && ui8a.subarray(start, end))
- }
- }
-
- const dataCallback = (name, clear) => {
- const markSymbol = name + 'Mark'
- if (!(markSymbol in this)) {
- return
- }
-
- if (clear) {
- callback(name, this[markSymbol], i, data)
- delete this[markSymbol]
- } else {
- callback(name, this[markSymbol], data.length, data)
- this[markSymbol] = 0
- }
- }
-
- for (i = 0; i < length_; i++) {
- c = data[i]
-
- switch (state) {
- case S.START_BOUNDARY:
- if (index === boundary.length - 2) {
- if (c === HYPHEN) {
- flags |= F.LAST_BOUNDARY
- } else if (c !== CR) {
- return
- }
-
- index++
- break
- } else if (index - 1 === boundary.length - 2) {
- if (flags & F.LAST_BOUNDARY && c === HYPHEN) {
- state = S.END
- flags = 0
- } else if (!(flags & F.LAST_BOUNDARY) && c === LF) {
- index = 0
- callback('onPartBegin')
- state = S.HEADER_FIELD_START
- } else {
- return
- }
-
- break
- }
-
- if (c !== boundary[index + 2]) {
- index = -2
- }
-
- if (c === boundary[index + 2]) {
- index++
- }
-
- break
- case S.HEADER_FIELD_START:
- state = S.HEADER_FIELD
- mark('onHeaderField')
- index = 0
- // falls through
- case S.HEADER_FIELD:
- if (c === CR) {
- clear('onHeaderField')
- state = S.HEADERS_ALMOST_DONE
- break
- }
-
- index++
- if (c === HYPHEN) {
- break
- }
-
- if (c === COLON) {
- if (index === 1) {
- // empty header field
- return
- }
-
- dataCallback('onHeaderField', true)
- state = S.HEADER_VALUE_START
- break
- }
-
- cl = lower(c)
- if (cl < A || cl > Z) {
- return
- }
-
- break
- case S.HEADER_VALUE_START:
- if (c === SPACE) {
- break
- }
-
- mark('onHeaderValue')
- state = S.HEADER_VALUE
- // falls through
- case S.HEADER_VALUE:
- if (c === CR) {
- dataCallback('onHeaderValue', true)
- callback('onHeaderEnd')
- state = S.HEADER_VALUE_ALMOST_DONE
- }
-
- break
- case S.HEADER_VALUE_ALMOST_DONE:
- if (c !== LF) {
- return
- }
-
- state = S.HEADER_FIELD_START
- break
- case S.HEADERS_ALMOST_DONE:
- if (c !== LF) {
- return
- }
-
- callback('onHeadersEnd')
- state = S.PART_DATA_START
- break
- case S.PART_DATA_START:
- state = S.PART_DATA
- mark('onPartData')
- // falls through
- case S.PART_DATA:
- previousIndex = index
-
- if (index === 0) {
- // boyer-moore derrived algorithm to safely skip non-boundary data
- i += boundaryEnd
- while (i < bufferLength && !(data[i] in boundaryChars)) {
- i += boundaryLength
- }
-
- i -= boundaryEnd
- c = data[i]
- }
-
- if (index < boundary.length) {
- if (boundary[index] === c) {
- if (index === 0) {
- dataCallback('onPartData', true)
- }
-
- index++
- } else {
- index = 0
- }
- } else if (index === boundary.length) {
- index++
- if (c === CR) {
- // CR = part boundary
- flags |= F.PART_BOUNDARY
- } else if (c === HYPHEN) {
- // HYPHEN = end boundary
- flags |= F.LAST_BOUNDARY
- } else {
- index = 0
- }
- } else if (index - 1 === boundary.length) {
- if (flags & F.PART_BOUNDARY) {
- index = 0
- if (c === LF) {
- // unset the PART_BOUNDARY flag
- flags &= ~F.PART_BOUNDARY
- callback('onPartEnd')
- callback('onPartBegin')
- state = S.HEADER_FIELD_START
- break
- }
- } else if (flags & F.LAST_BOUNDARY) {
- if (c === HYPHEN) {
- callback('onPartEnd')
- state = S.END
- flags = 0
- } else {
- index = 0
- }
- } else {
- index = 0
- }
- }
-
- if (index > 0) {
- // when matching a possible boundary, keep a lookbehind reference
- // in case it turns out to be a false lead
- lookbehind[index - 1] = c
- } else if (previousIndex > 0) {
- // if our boundary turned out to be rubbish, the captured lookbehind
- // belongs to partData
- const _lookbehind = new Uint8Array(
- lookbehind.buffer,
- lookbehind.byteOffset,
- lookbehind.byteLength
- )
- callback('onPartData', 0, previousIndex, _lookbehind)
- previousIndex = 0
- mark('onPartData')
-
- // reconsider the current character even so it interrupted the sequence
- // it could be the beginning of a new sequence
- i--
- }
-
- break
- case S.END:
- break
- default:
- throw new Error(`Unexpected state entered: ${state}`)
- }
- }
-
- dataCallback('onHeaderField')
- dataCallback('onHeaderValue')
- dataCallback('onPartData')
-
- // Update properties for the next call
- this.index = index
- this.state = state
- this.flags = flags
- }
-
- end() {
- if (
- (this.state === S.HEADER_FIELD_START && this.index === 0) ||
- (this.state === S.PART_DATA && this.index === this.boundary.length)
- ) {
- this.onPartEnd()
- } else if (this.state !== S.END) {
- throw new Error('MultipartParser.end(): stream ended unexpectedly')
- }
- }
-}
-
-function _fileName(headerValue) {
- // matches either a quoted-string or a token (RFC 2616 section 19.5.1)
- const m = headerValue.match(
- /\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i
- )
- if (!m) {
- return
- }
-
- const match = m[2] || m[3] || ''
- let filename = match.slice(match.lastIndexOf('\\') + 1)
- filename = filename.replace(/%22/g, '"')
- filename = filename.replace(/&#(\d{4});/g, (m, code) => {
- return String.fromCharCode(code)
- })
- return filename
-}
-
-async function toFormData(Body, ct) {
- if (!/multipart/i.test(ct)) {
- throw new TypeError('Failed to fetch')
- }
-
- const m = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i)
-
- if (!m) {
- throw new TypeError('no or bad content-type header, no multipart boundary')
- }
-
- const parser = new MultipartParser(m[1] || m[2])
-
- let headerField
- let headerValue
- let entryValue
- let entryName
- let contentType
- let filename
- const entryChunks = []
- const formData = new FormData()
-
- const onPartData = (ui8a) => {
- entryValue += decoder.decode(ui8a, { stream: true })
- }
-
- const appendToFile = (ui8a) => {
- entryChunks.push(ui8a)
- }
-
- const appendFileToFormData = () => {
- const file = new File(entryChunks, filename, { type: contentType })
- formData.append(entryName, file)
- }
-
- const appendEntryToFormData = () => {
- formData.append(entryName, entryValue)
- }
-
- const decoder = new TextDecoder('utf-8')
- decoder.decode()
-
- parser.onPartBegin = function () {
- parser.onPartData = onPartData
- parser.onPartEnd = appendEntryToFormData
-
- headerField = ''
- headerValue = ''
- entryValue = ''
- entryName = ''
- contentType = ''
- filename = null
- entryChunks.length = 0
- }
-
- parser.onHeaderField = function (ui8a) {
- headerField += decoder.decode(ui8a, { stream: true })
- }
-
- parser.onHeaderValue = function (ui8a) {
- headerValue += decoder.decode(ui8a, { stream: true })
- }
-
- parser.onHeaderEnd = function () {
- headerValue += decoder.decode()
- headerField = headerField.toLowerCase()
-
- if (headerField === 'content-disposition') {
- // matches either a quoted-string or a token (RFC 2616 section 19.5.1)
- const m = headerValue.match(
- /\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i
- )
-
- if (m) {
- entryName = m[2] || m[3] || ''
- }
-
- filename = _fileName(headerValue)
-
- if (filename) {
- parser.onPartData = appendToFile
- parser.onPartEnd = appendFileToFormData
- }
- } else if (headerField === 'content-type') {
- contentType = headerValue
- }
-
- headerValue = ''
- headerField = ''
- }
-
- for await (const chunk of Body) {
- parser.write(chunk)
- }
-
- parser.end()
-
- return formData
-}
-
-var multipartParser = /*#__PURE__*/ Object.freeze({
- __proto__: null,
- toFormData: toFormData,
-})
-
-export {
- AbortController,
- AbortSignal,
- Blob,
- ByteLengthQueuingStrategy,
- CSSStyleSheet,
- CanvasRenderingContext2D,
- CharacterData,
- Comment,
- CountQueuingStrategy,
- CustomElementRegistry,
- CustomEvent,
- DOMException,
- Document,
- DocumentFragment,
- Element,
- Event,
- EventTarget,
- File,
- FormData,
- HTMLBodyElement,
- HTMLCanvasElement,
- HTMLDivElement,
- HTMLDocument,
- HTMLElement,
- HTMLHeadElement,
- HTMLHtmlElement,
- HTMLImageElement,
- HTMLSpanElement,
- HTMLStyleElement,
- HTMLTemplateElement,
- HTMLUnknownElement,
- Headers,
- Image,
- ImageData,
- IntersectionObserver,
- MediaQueryList,
- MutationObserver,
- Node,
- NodeFilter$1 as NodeFilter,
- NodeIterator$1 as NodeIterator,
- OffscreenCanvas,
- ReadableByteStreamController,
- ReadableStream,
- ReadableStreamBYOBReader,
- ReadableStreamBYOBRequest,
- ReadableStreamDefaultController,
- ReadableStreamDefaultReader,
- Request,
- ResizeObserver,
- Response,
- ShadowRoot,
- StyleSheet,
- Text,
- TransformStream,
- TreeWalker,
- U as URLPattern,
- Window,
- WritableStream,
- WritableStreamDefaultController,
- WritableStreamDefaultWriter,
- alert,
- atob,
- btoa,
- cancelAnimationFrame,
- cancelIdleCallback,
- clearTimeout,
- fetch,
- pathToPosix,
- polyfill,
- requestAnimationFrame,
- requestIdleCallback,
- setTimeout,
- structuredClone,
-}
-//# sourceMappingURL=mod.js.map
diff --git a/packages/webapi/mod.js.map b/packages/webapi/mod.js.map
deleted file mode 100644
index 2f4d6c16d..000000000
--- a/packages/webapi/mod.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"mod.js","sources":["src/lib/utils.ts","src/lib/DOMException.ts","../../node_modules/event-target-shim/index.mjs","../../node_modules/abort-controller/dist/abort-controller.mjs","src/lib/AnimationFrame.ts","src/lib/Base64.ts","src/lib/Node.ts","src/lib/CharacterData.ts","../../node_modules/web-streams-polyfill/dist/ponyfill.es6.mjs","../../node_modules/fetch-blob/streams.cjs","../../node_modules/fetch-blob/index.js","../../node_modules/fetch-blob/file.js","src/lib/CustomEvent.ts","src/lib/TreeWalker.ts","src/lib/IdleCallback.ts","../../node_modules/data-uri-to-buffer/dist/index.js","../../node_modules/formdata-polyfill/esm.min.js","node_modules/node-fetch/src/errors/base.js","node_modules/node-fetch/src/errors/fetch-error.js","node_modules/node-fetch/src/utils/is.js","node_modules/node-fetch/src/body.js","node_modules/node-fetch/src/headers.js","node_modules/node-fetch/src/utils/is-redirect.js","node_modules/node-fetch/src/response.js","node_modules/node-fetch/src/utils/get-search.js","node_modules/node-fetch/src/utils/referrer.js","node_modules/node-fetch/src/request.js","node_modules/node-fetch/src/errors/abort-error.js","node_modules/node-fetch/src/index.js","src/lib/fetch.ts","../../node_modules/urlpattern-polyfill/dist/index.js","src/lib/Timeout.ts","../../node_modules/@ungap/structured-clone/esm/types.js","../../node_modules/@ungap/structured-clone/esm/deserialize.js","../../node_modules/@ungap/structured-clone/esm/serialize.js","src/lib/structuredClone.ts","src/lib/ImageData.ts","src/lib/CanvasRenderingContext2D.ts","src/lib/StyleSheet.ts","src/lib/CustomElementRegistry.ts","src/lib/Element.ts","src/lib/Document.ts","src/lib/HTMLCanvasElement.ts","src/lib/HTMLImageElement.ts","src/lib/Image.ts","src/lib/Observer.ts","src/lib/MediaQueryList.ts","src/lib/OffscreenCanvas.ts","src/lib/Storage.ts","src/lib/Window.ts","src/lib/Alert.ts","src/lib/Object.ts","src/lib/Promise.ts","src/lib/RelativeIndexingMethod.ts","src/lib/String.ts","src/exclusions.ts","src/inheritence.ts","src/polyfill.ts","node_modules/node-fetch/src/utils/multipart-parser.js"],"sourcesContent":[null,null,"/**\n * Assert a condition.\n * @param condition The condition that it should satisfy.\n * @param message The error message.\n * @param args The arguments for replacing placeholders in the message.\n */\nfunction assertType(condition, message, ...args) {\n if (!condition) {\n throw new TypeError(format(message, args));\n }\n}\n/**\n * Convert a text and arguments to one string.\n * @param message The formating text\n * @param args The arguments.\n */\nfunction format(message, args) {\n let i = 0;\n return message.replace(/%[os]/gu, () => anyToString(args[i++]));\n}\n/**\n * Convert a value to a string representation.\n * @param x The value to get the string representation.\n */\nfunction anyToString(x) {\n if (typeof x !== \"object\" || x === null) {\n return String(x);\n }\n return Object.prototype.toString.call(x);\n}\n\nlet currentErrorHandler;\n/**\n * Set the error handler.\n * @param value The error handler to set.\n */\nfunction setErrorHandler(value) {\n assertType(typeof value === \"function\" || value === undefined, \"The error handler must be a function or undefined, but got %o.\", value);\n currentErrorHandler = value;\n}\n/**\n * Print a error message.\n * @param maybeError The error object.\n */\nfunction reportError(maybeError) {\n try {\n const error = maybeError instanceof Error\n ? maybeError\n : new Error(anyToString(maybeError));\n // Call the user-defined error handler if exists.\n if (currentErrorHandler) {\n currentErrorHandler(error);\n return;\n }\n // Dispatch an `error` event if this is on a browser.\n if (typeof dispatchEvent === \"function\" &&\n typeof ErrorEvent === \"function\") {\n dispatchEvent(new ErrorEvent(\"error\", { error, message: error.message }));\n }\n // Emit an `uncaughtException` event if this is on Node.js.\n //istanbul ignore else\n else if (typeof process !== \"undefined\" &&\n typeof process.emit === \"function\") {\n process.emit(\"uncaughtException\", error);\n return;\n }\n // Otherwise, print the error.\n console.error(error);\n }\n catch (_a) {\n // ignore.\n }\n}\n\n/**\n * The global object.\n */\n//istanbul ignore next\nconst Global = typeof window !== \"undefined\"\n ? window\n : typeof self !== \"undefined\"\n ? self\n : typeof global !== \"undefined\"\n ? global\n : typeof globalThis !== \"undefined\"\n ? globalThis\n : undefined;\n\nlet currentWarnHandler;\n/**\n * Set the warning handler.\n * @param value The warning handler to set.\n */\nfunction setWarningHandler(value) {\n assertType(typeof value === \"function\" || value === undefined, \"The warning handler must be a function or undefined, but got %o.\", value);\n currentWarnHandler = value;\n}\n/**\n * The warning information.\n */\nclass Warning {\n constructor(code, message) {\n this.code = code;\n this.message = message;\n }\n /**\n * Report this warning.\n * @param args The arguments of the warning.\n */\n warn(...args) {\n var _a;\n try {\n // Call the user-defined warning handler if exists.\n if (currentWarnHandler) {\n currentWarnHandler({ ...this, args });\n return;\n }\n // Otherwise, print the warning.\n const stack = ((_a = new Error().stack) !== null && _a !== void 0 ? _a : \"\").replace(/^(?:.+?\\n){2}/gu, \"\\n\");\n console.warn(this.message, ...args, stack);\n }\n catch (_b) {\n // Ignore.\n }\n }\n}\n\nconst InitEventWasCalledWhileDispatching = new Warning(\"W01\", \"Unable to initialize event under dispatching.\");\nconst FalsyWasAssignedToCancelBubble = new Warning(\"W02\", \"Assigning any falsy value to 'cancelBubble' property has no effect.\");\nconst TruthyWasAssignedToReturnValue = new Warning(\"W03\", \"Assigning any truthy value to 'returnValue' property has no effect.\");\nconst NonCancelableEventWasCanceled = new Warning(\"W04\", \"Unable to preventDefault on non-cancelable events.\");\nconst CanceledInPassiveListener = new Warning(\"W05\", \"Unable to preventDefault inside passive event listener invocation.\");\nconst EventListenerWasDuplicated = new Warning(\"W06\", \"An event listener wasn't added because it has been added already: %o, %o\");\nconst OptionWasIgnored = new Warning(\"W07\", \"The %o option value was abandoned because the event listener wasn't added as duplicated.\");\nconst InvalidEventListener = new Warning(\"W08\", \"The 'callback' argument must be a function or an object that has 'handleEvent' method: %o\");\nconst InvalidAttributeHandler = new Warning(\"W09\", \"Event attribute handler must be a function: %o\");\n\n/*eslint-disable class-methods-use-this */\n/**\n * An implementation of `Event` interface, that wraps a given event object.\n * `EventTarget` shim can control the internal state of this `Event` objects.\n * @see https://dom.spec.whatwg.org/#event\n */\nclass Event {\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-none\n */\n static get NONE() {\n return NONE;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-capturing_phase\n */\n static get CAPTURING_PHASE() {\n return CAPTURING_PHASE;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-at_target\n */\n static get AT_TARGET() {\n return AT_TARGET;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-bubbling_phase\n */\n static get BUBBLING_PHASE() {\n return BUBBLING_PHASE;\n }\n /**\n * Initialize this event instance.\n * @param type The type of this event.\n * @param eventInitDict Options to initialize.\n * @see https://dom.spec.whatwg.org/#dom-event-event\n */\n constructor(type, eventInitDict) {\n Object.defineProperty(this, \"isTrusted\", {\n value: false,\n enumerable: true,\n });\n const opts = eventInitDict !== null && eventInitDict !== void 0 ? eventInitDict : {};\n internalDataMap.set(this, {\n type: String(type),\n bubbles: Boolean(opts.bubbles),\n cancelable: Boolean(opts.cancelable),\n composed: Boolean(opts.composed),\n target: null,\n currentTarget: null,\n stopPropagationFlag: false,\n stopImmediatePropagationFlag: false,\n canceledFlag: false,\n inPassiveListenerFlag: false,\n dispatchFlag: false,\n timeStamp: Date.now(),\n });\n }\n /**\n * The type of this event.\n * @see https://dom.spec.whatwg.org/#dom-event-type\n */\n get type() {\n return $(this).type;\n }\n /**\n * The event target of the current dispatching.\n * @see https://dom.spec.whatwg.org/#dom-event-target\n */\n get target() {\n return $(this).target;\n }\n /**\n * The event target of the current dispatching.\n * @deprecated Use the `target` property instead.\n * @see https://dom.spec.whatwg.org/#dom-event-srcelement\n */\n get srcElement() {\n return $(this).target;\n }\n /**\n * The event target of the current dispatching.\n * @see https://dom.spec.whatwg.org/#dom-event-currenttarget\n */\n get currentTarget() {\n return $(this).currentTarget;\n }\n /**\n * The event target of the current dispatching.\n * This doesn't support node tree.\n * @see https://dom.spec.whatwg.org/#dom-event-composedpath\n */\n composedPath() {\n const currentTarget = $(this).currentTarget;\n if (currentTarget) {\n return [currentTarget];\n }\n return [];\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-none\n */\n get NONE() {\n return NONE;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-capturing_phase\n */\n get CAPTURING_PHASE() {\n return CAPTURING_PHASE;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-at_target\n */\n get AT_TARGET() {\n return AT_TARGET;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-bubbling_phase\n */\n get BUBBLING_PHASE() {\n return BUBBLING_PHASE;\n }\n /**\n * The current event phase.\n * @see https://dom.spec.whatwg.org/#dom-event-eventphase\n */\n get eventPhase() {\n return $(this).dispatchFlag ? 2 : 0;\n }\n /**\n * Stop event bubbling.\n * Because this shim doesn't support node tree, this merely changes the `cancelBubble` property value.\n * @see https://dom.spec.whatwg.org/#dom-event-stoppropagation\n */\n stopPropagation() {\n $(this).stopPropagationFlag = true;\n }\n /**\n * `true` if event bubbling was stopped.\n * @deprecated\n * @see https://dom.spec.whatwg.org/#dom-event-cancelbubble\n */\n get cancelBubble() {\n return $(this).stopPropagationFlag;\n }\n /**\n * Stop event bubbling if `true` is set.\n * @deprecated Use the `stopPropagation()` method instead.\n * @see https://dom.spec.whatwg.org/#dom-event-cancelbubble\n */\n set cancelBubble(value) {\n if (value) {\n $(this).stopPropagationFlag = true;\n }\n else {\n FalsyWasAssignedToCancelBubble.warn();\n }\n }\n /**\n * Stop event bubbling and subsequent event listener callings.\n * @see https://dom.spec.whatwg.org/#dom-event-stopimmediatepropagation\n */\n stopImmediatePropagation() {\n const data = $(this);\n data.stopPropagationFlag = data.stopImmediatePropagationFlag = true;\n }\n /**\n * `true` if this event will bubble.\n * @see https://dom.spec.whatwg.org/#dom-event-bubbles\n */\n get bubbles() {\n return $(this).bubbles;\n }\n /**\n * `true` if this event can be canceled by the `preventDefault()` method.\n * @see https://dom.spec.whatwg.org/#dom-event-cancelable\n */\n get cancelable() {\n return $(this).cancelable;\n }\n /**\n * `true` if the default behavior will act.\n * @deprecated Use the `defaultPrevented` proeprty instead.\n * @see https://dom.spec.whatwg.org/#dom-event-returnvalue\n */\n get returnValue() {\n return !$(this).canceledFlag;\n }\n /**\n * Cancel the default behavior if `false` is set.\n * @deprecated Use the `preventDefault()` method instead.\n * @see https://dom.spec.whatwg.org/#dom-event-returnvalue\n */\n set returnValue(value) {\n if (!value) {\n setCancelFlag($(this));\n }\n else {\n TruthyWasAssignedToReturnValue.warn();\n }\n }\n /**\n * Cancel the default behavior.\n * @see https://dom.spec.whatwg.org/#dom-event-preventdefault\n */\n preventDefault() {\n setCancelFlag($(this));\n }\n /**\n * `true` if the default behavior was canceled.\n * @see https://dom.spec.whatwg.org/#dom-event-defaultprevented\n */\n get defaultPrevented() {\n return $(this).canceledFlag;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-composed\n */\n get composed() {\n return $(this).composed;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-istrusted\n */\n //istanbul ignore next\n get isTrusted() {\n return false;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-timestamp\n */\n get timeStamp() {\n return $(this).timeStamp;\n }\n /**\n * @deprecated Don't use this method. The constructor did initialization.\n */\n initEvent(type, bubbles = false, cancelable = false) {\n const data = $(this);\n if (data.dispatchFlag) {\n InitEventWasCalledWhileDispatching.warn();\n return;\n }\n internalDataMap.set(this, {\n ...data,\n type: String(type),\n bubbles: Boolean(bubbles),\n cancelable: Boolean(cancelable),\n target: null,\n currentTarget: null,\n stopPropagationFlag: false,\n stopImmediatePropagationFlag: false,\n canceledFlag: false,\n });\n }\n}\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\nconst NONE = 0;\nconst CAPTURING_PHASE = 1;\nconst AT_TARGET = 2;\nconst BUBBLING_PHASE = 3;\n/**\n * Private data for event wrappers.\n */\nconst internalDataMap = new WeakMap();\n/**\n * Get private data.\n * @param event The event object to get private data.\n * @param name The variable name to report.\n * @returns The private data of the event.\n */\nfunction $(event, name = \"this\") {\n const retv = internalDataMap.get(event);\n assertType(retv != null, \"'%s' must be an object that Event constructor created, but got another one: %o\", name, event);\n return retv;\n}\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data private data.\n */\nfunction setCancelFlag(data) {\n if (data.inPassiveListenerFlag) {\n CanceledInPassiveListener.warn();\n return;\n }\n if (!data.cancelable) {\n NonCancelableEventWasCanceled.warn();\n return;\n }\n data.canceledFlag = true;\n}\n// Set enumerable\nObject.defineProperty(Event, \"NONE\", { enumerable: true });\nObject.defineProperty(Event, \"CAPTURING_PHASE\", { enumerable: true });\nObject.defineProperty(Event, \"AT_TARGET\", { enumerable: true });\nObject.defineProperty(Event, \"BUBBLING_PHASE\", { enumerable: true });\nconst keys = Object.getOwnPropertyNames(Event.prototype);\nfor (let i = 0; i < keys.length; ++i) {\n if (keys[i] === \"constructor\") {\n continue;\n }\n Object.defineProperty(Event.prototype, keys[i], { enumerable: true });\n}\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof Global !== \"undefined\" && typeof Global.Event !== \"undefined\") {\n Object.setPrototypeOf(Event.prototype, Global.Event.prototype);\n}\n\n/**\n * Create a new InvalidStateError instance.\n * @param message The error message.\n */\nfunction createInvalidStateError(message) {\n if (Global.DOMException) {\n return new Global.DOMException(message, \"InvalidStateError\");\n }\n if (DOMException == null) {\n DOMException = class DOMException extends Error {\n constructor(msg) {\n super(msg);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, DOMException);\n }\n }\n // eslint-disable-next-line class-methods-use-this\n get code() {\n return 11;\n }\n // eslint-disable-next-line class-methods-use-this\n get name() {\n return \"InvalidStateError\";\n }\n };\n Object.defineProperties(DOMException.prototype, {\n code: { enumerable: true },\n name: { enumerable: true },\n });\n defineErrorCodeProperties(DOMException);\n defineErrorCodeProperties(DOMException.prototype);\n }\n return new DOMException(message);\n}\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\nlet DOMException;\nconst ErrorCodeMap = {\n INDEX_SIZE_ERR: 1,\n DOMSTRING_SIZE_ERR: 2,\n HIERARCHY_REQUEST_ERR: 3,\n WRONG_DOCUMENT_ERR: 4,\n INVALID_CHARACTER_ERR: 5,\n NO_DATA_ALLOWED_ERR: 6,\n NO_MODIFICATION_ALLOWED_ERR: 7,\n NOT_FOUND_ERR: 8,\n NOT_SUPPORTED_ERR: 9,\n INUSE_ATTRIBUTE_ERR: 10,\n INVALID_STATE_ERR: 11,\n SYNTAX_ERR: 12,\n INVALID_MODIFICATION_ERR: 13,\n NAMESPACE_ERR: 14,\n INVALID_ACCESS_ERR: 15,\n VALIDATION_ERR: 16,\n TYPE_MISMATCH_ERR: 17,\n SECURITY_ERR: 18,\n NETWORK_ERR: 19,\n ABORT_ERR: 20,\n URL_MISMATCH_ERR: 21,\n QUOTA_EXCEEDED_ERR: 22,\n TIMEOUT_ERR: 23,\n INVALID_NODE_TYPE_ERR: 24,\n DATA_CLONE_ERR: 25,\n};\nfunction defineErrorCodeProperties(obj) {\n const keys = Object.keys(ErrorCodeMap);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const value = ErrorCodeMap[key];\n Object.defineProperty(obj, key, {\n get() {\n return value;\n },\n configurable: true,\n enumerable: true,\n });\n }\n}\n\n/**\n * An implementation of `Event` interface, that wraps a given event object.\n * This class controls the internal state of `Event`.\n * @see https://dom.spec.whatwg.org/#interface-event\n */\nclass EventWrapper extends Event {\n /**\n * Wrap a given event object to control states.\n * @param event The event-like object to wrap.\n */\n static wrap(event) {\n return new (getWrapperClassOf(event))(event);\n }\n constructor(event) {\n super(event.type, {\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n composed: event.composed,\n });\n if (event.cancelBubble) {\n super.stopPropagation();\n }\n if (event.defaultPrevented) {\n super.preventDefault();\n }\n internalDataMap$1.set(this, { original: event });\n // Define accessors\n const keys = Object.keys(event);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in this)) {\n Object.defineProperty(this, key, defineRedirectDescriptor(event, key));\n }\n }\n }\n stopPropagation() {\n super.stopPropagation();\n const { original } = $$1(this);\n if (\"stopPropagation\" in original) {\n original.stopPropagation();\n }\n }\n get cancelBubble() {\n return super.cancelBubble;\n }\n set cancelBubble(value) {\n super.cancelBubble = value;\n const { original } = $$1(this);\n if (\"cancelBubble\" in original) {\n original.cancelBubble = value;\n }\n }\n stopImmediatePropagation() {\n super.stopImmediatePropagation();\n const { original } = $$1(this);\n if (\"stopImmediatePropagation\" in original) {\n original.stopImmediatePropagation();\n }\n }\n get returnValue() {\n return super.returnValue;\n }\n set returnValue(value) {\n super.returnValue = value;\n const { original } = $$1(this);\n if (\"returnValue\" in original) {\n original.returnValue = value;\n }\n }\n preventDefault() {\n super.preventDefault();\n const { original } = $$1(this);\n if (\"preventDefault\" in original) {\n original.preventDefault();\n }\n }\n get timeStamp() {\n const { original } = $$1(this);\n if (\"timeStamp\" in original) {\n return original.timeStamp;\n }\n return super.timeStamp;\n }\n}\n/**\n * Private data for event wrappers.\n */\nconst internalDataMap$1 = new WeakMap();\n/**\n * Get private data.\n * @param event The event object to get private data.\n * @returns The private data of the event.\n */\nfunction $$1(event) {\n const retv = internalDataMap$1.get(event);\n assertType(retv != null, \"'this' is expected an Event object, but got\", event);\n return retv;\n}\n/**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\nconst wrapperClassCache = new WeakMap();\n// Make association for wrappers.\nwrapperClassCache.set(Object.prototype, EventWrapper);\nif (typeof Global !== \"undefined\" && typeof Global.Event !== \"undefined\") {\n wrapperClassCache.set(Global.Event.prototype, EventWrapper);\n}\n/**\n * Get the wrapper class of a given prototype.\n * @param originalEvent The event object to wrap.\n */\nfunction getWrapperClassOf(originalEvent) {\n const prototype = Object.getPrototypeOf(originalEvent);\n if (prototype == null) {\n return EventWrapper;\n }\n let wrapper = wrapperClassCache.get(prototype);\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapperClassOf(prototype), prototype);\n wrapperClassCache.set(prototype, wrapper);\n }\n return wrapper;\n}\n/**\n * Define new wrapper class.\n * @param BaseEventWrapper The base wrapper class.\n * @param originalPrototype The prototype of the original event.\n */\nfunction defineWrapper(BaseEventWrapper, originalPrototype) {\n class CustomEventWrapper extends BaseEventWrapper {\n }\n const keys = Object.keys(originalPrototype);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(CustomEventWrapper.prototype, keys[i], defineRedirectDescriptor(originalPrototype, keys[i]));\n }\n return CustomEventWrapper;\n}\n/**\n * Get the property descriptor to redirect a given property.\n */\nfunction defineRedirectDescriptor(obj, key) {\n const d = Object.getOwnPropertyDescriptor(obj, key);\n return {\n get() {\n const original = $$1(this).original;\n const value = original[key];\n if (typeof value === \"function\") {\n return value.bind(original);\n }\n return value;\n },\n set(value) {\n const original = $$1(this).original;\n original[key] = value;\n },\n configurable: d.configurable,\n enumerable: d.enumerable,\n };\n}\n\n/**\n * Create a new listener.\n * @param callback The callback function.\n * @param capture The capture flag.\n * @param passive The passive flag.\n * @param once The once flag.\n * @param signal The abort signal.\n * @param signalListener The abort event listener for the abort signal.\n */\nfunction createListener(callback, capture, passive, once, signal, signalListener) {\n return {\n callback,\n flags: (capture ? 1 /* Capture */ : 0) |\n (passive ? 2 /* Passive */ : 0) |\n (once ? 4 /* Once */ : 0),\n signal,\n signalListener,\n };\n}\n/**\n * Set the `removed` flag to the given listener.\n * @param listener The listener to check.\n */\nfunction setRemoved(listener) {\n listener.flags |= 8 /* Removed */;\n}\n/**\n * Check if the given listener has the `capture` flag or not.\n * @param listener The listener to check.\n */\nfunction isCapture(listener) {\n return (listener.flags & 1 /* Capture */) === 1 /* Capture */;\n}\n/**\n * Check if the given listener has the `passive` flag or not.\n * @param listener The listener to check.\n */\nfunction isPassive(listener) {\n return (listener.flags & 2 /* Passive */) === 2 /* Passive */;\n}\n/**\n * Check if the given listener has the `once` flag or not.\n * @param listener The listener to check.\n */\nfunction isOnce(listener) {\n return (listener.flags & 4 /* Once */) === 4 /* Once */;\n}\n/**\n * Check if the given listener has the `removed` flag or not.\n * @param listener The listener to check.\n */\nfunction isRemoved(listener) {\n return (listener.flags & 8 /* Removed */) === 8 /* Removed */;\n}\n/**\n * Call an event listener.\n * @param listener The listener to call.\n * @param target The event target object for `thisArg`.\n * @param event The event object for the first argument.\n * @param attribute `true` if this callback is an event attribute handler.\n */\nfunction invokeCallback({ callback }, target, event) {\n try {\n if (typeof callback === \"function\") {\n callback.call(target, event);\n }\n else if (typeof callback.handleEvent === \"function\") {\n callback.handleEvent(event);\n }\n }\n catch (thrownError) {\n reportError(thrownError);\n }\n}\n\n/**\n * Find the index of given listener.\n * This returns `-1` if not found.\n * @param list The listener list.\n * @param callback The callback function to find.\n * @param capture The capture flag to find.\n */\nfunction findIndexOfListener({ listeners }, callback, capture) {\n for (let i = 0; i < listeners.length; ++i) {\n if (listeners[i].callback === callback &&\n isCapture(listeners[i]) === capture) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Add the given listener.\n * Does copy-on-write if needed.\n * @param list The listener list.\n * @param callback The callback function.\n * @param capture The capture flag.\n * @param passive The passive flag.\n * @param once The once flag.\n * @param signal The abort signal.\n */\nfunction addListener(list, callback, capture, passive, once, signal) {\n let signalListener;\n if (signal) {\n signalListener = removeListener.bind(null, list, callback, capture);\n signal.addEventListener(\"abort\", signalListener);\n }\n const listener = createListener(callback, capture, passive, once, signal, signalListener);\n if (list.cow) {\n list.cow = false;\n list.listeners = [...list.listeners, listener];\n }\n else {\n list.listeners.push(listener);\n }\n return listener;\n}\n/**\n * Remove a listener.\n * @param list The listener list.\n * @param callback The callback function to find.\n * @param capture The capture flag to find.\n * @returns `true` if it mutated the list directly.\n */\nfunction removeListener(list, callback, capture) {\n const index = findIndexOfListener(list, callback, capture);\n if (index !== -1) {\n return removeListenerAt(list, index);\n }\n return false;\n}\n/**\n * Remove a listener.\n * @param list The listener list.\n * @param index The index of the target listener.\n * @param disableCow Disable copy-on-write if true.\n * @returns `true` if it mutated the `listeners` array directly.\n */\nfunction removeListenerAt(list, index, disableCow = false) {\n const listener = list.listeners[index];\n // Set the removed flag.\n setRemoved(listener);\n // Dispose the abort signal listener if exists.\n if (listener.signal) {\n listener.signal.removeEventListener(\"abort\", listener.signalListener);\n }\n // Remove it from the array.\n if (list.cow && !disableCow) {\n list.cow = false;\n list.listeners = list.listeners.filter((_, i) => i !== index);\n return false;\n }\n list.listeners.splice(index, 1);\n return true;\n}\n\n/**\n * Create a new `ListenerListMap` object.\n */\nfunction createListenerListMap() {\n return Object.create(null);\n}\n/**\n * Get the listener list of the given type.\n * If the listener list has not been initialized, initialize and return it.\n * @param listenerMap The listener list map.\n * @param type The event type to get.\n */\nfunction ensureListenerList(listenerMap, type) {\n var _a;\n return ((_a = listenerMap[type]) !== null && _a !== void 0 ? _a : (listenerMap[type] = {\n attrCallback: undefined,\n attrListener: undefined,\n cow: false,\n listeners: [],\n }));\n}\n\n/**\n * An implementation of the `EventTarget` interface.\n * @see https://dom.spec.whatwg.org/#eventtarget\n */\nclass EventTarget {\n /**\n * Initialize this instance.\n */\n constructor() {\n internalDataMap$2.set(this, createListenerListMap());\n }\n // Implementation\n addEventListener(type0, callback0, options0) {\n const listenerMap = $$2(this);\n const { callback, capture, once, passive, signal, type, } = normalizeAddOptions(type0, callback0, options0);\n if (callback == null || (signal === null || signal === void 0 ? void 0 : signal.aborted)) {\n return;\n }\n const list = ensureListenerList(listenerMap, type);\n // Find existing listener.\n const i = findIndexOfListener(list, callback, capture);\n if (i !== -1) {\n warnDuplicate(list.listeners[i], passive, once, signal);\n return;\n }\n // Add the new listener.\n addListener(list, callback, capture, passive, once, signal);\n }\n // Implementation\n removeEventListener(type0, callback0, options0) {\n const listenerMap = $$2(this);\n const { callback, capture, type } = normalizeOptions(type0, callback0, options0);\n const list = listenerMap[type];\n if (callback != null && list) {\n removeListener(list, callback, capture);\n }\n }\n // Implementation\n dispatchEvent(e) {\n const list = $$2(this)[String(e.type)];\n if (list == null) {\n return true;\n }\n const event = e instanceof Event ? e : EventWrapper.wrap(e);\n const eventData = $(event, \"event\");\n if (eventData.dispatchFlag) {\n throw createInvalidStateError(\"This event has been in dispatching.\");\n }\n eventData.dispatchFlag = true;\n eventData.target = eventData.currentTarget = this;\n if (!eventData.stopPropagationFlag) {\n const { cow, listeners } = list;\n // Set copy-on-write flag.\n list.cow = true;\n // Call listeners.\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n // Skip if removed.\n if (isRemoved(listener)) {\n continue;\n }\n // Remove this listener if has the `once` flag.\n if (isOnce(listener) && removeListenerAt(list, i, !cow)) {\n // Because this listener was removed, the next index is the\n // same as the current value.\n i -= 1;\n }\n // Call this listener with the `passive` flag.\n eventData.inPassiveListenerFlag = isPassive(listener);\n invokeCallback(listener, this, event);\n eventData.inPassiveListenerFlag = false;\n // Stop if the `event.stopImmediatePropagation()` method was called.\n if (eventData.stopImmediatePropagationFlag) {\n break;\n }\n }\n // Restore copy-on-write flag.\n if (!cow) {\n list.cow = false;\n }\n }\n eventData.target = null;\n eventData.currentTarget = null;\n eventData.stopImmediatePropagationFlag = false;\n eventData.stopPropagationFlag = false;\n eventData.dispatchFlag = false;\n return !eventData.canceledFlag;\n }\n}\n/**\n * Internal data.\n */\nconst internalDataMap$2 = new WeakMap();\n/**\n * Get private data.\n * @param target The event target object to get private data.\n * @param name The variable name to report.\n * @returns The private data of the event.\n */\nfunction $$2(target, name = \"this\") {\n const retv = internalDataMap$2.get(target);\n assertType(retv != null, \"'%s' must be an object that EventTarget constructor created, but got another one: %o\", name, target);\n return retv;\n}\n/**\n * Normalize options.\n * @param options The options to normalize.\n */\nfunction normalizeAddOptions(type, callback, options) {\n var _a;\n assertCallback(callback);\n if (typeof options === \"object\" && options !== null) {\n return {\n type: String(type),\n callback: callback !== null && callback !== void 0 ? callback : undefined,\n capture: Boolean(options.capture),\n passive: Boolean(options.passive),\n once: Boolean(options.once),\n signal: (_a = options.signal) !== null && _a !== void 0 ? _a : undefined,\n };\n }\n return {\n type: String(type),\n callback: callback !== null && callback !== void 0 ? callback : undefined,\n capture: Boolean(options),\n passive: false,\n once: false,\n signal: undefined,\n };\n}\n/**\n * Normalize options.\n * @param options The options to normalize.\n */\nfunction normalizeOptions(type, callback, options) {\n assertCallback(callback);\n if (typeof options === \"object\" && options !== null) {\n return {\n type: String(type),\n callback: callback !== null && callback !== void 0 ? callback : undefined,\n capture: Boolean(options.capture),\n };\n }\n return {\n type: String(type),\n callback: callback !== null && callback !== void 0 ? callback : undefined,\n capture: Boolean(options),\n };\n}\n/**\n * Assert the type of 'callback' argument.\n * @param callback The callback to check.\n */\nfunction assertCallback(callback) {\n if (typeof callback === \"function\" ||\n (typeof callback === \"object\" &&\n callback !== null &&\n typeof callback.handleEvent === \"function\")) {\n return;\n }\n if (callback == null || typeof callback === \"object\") {\n InvalidEventListener.warn(callback);\n return;\n }\n throw new TypeError(format(InvalidEventListener.message, [callback]));\n}\n/**\n * Print warning for duplicated.\n * @param listener The current listener that is duplicated.\n * @param passive The passive flag of the new duplicated listener.\n * @param once The once flag of the new duplicated listener.\n * @param signal The signal object of the new duplicated listener.\n */\nfunction warnDuplicate(listener, passive, once, signal) {\n EventListenerWasDuplicated.warn(isCapture(listener) ? \"capture\" : \"bubble\", listener.callback);\n if (isPassive(listener) !== passive) {\n OptionWasIgnored.warn(\"passive\");\n }\n if (isOnce(listener) !== once) {\n OptionWasIgnored.warn(\"once\");\n }\n if (listener.signal !== signal) {\n OptionWasIgnored.warn(\"signal\");\n }\n}\n// Set enumerable\nconst keys$1 = Object.getOwnPropertyNames(EventTarget.prototype);\nfor (let i = 0; i < keys$1.length; ++i) {\n if (keys$1[i] === \"constructor\") {\n continue;\n }\n Object.defineProperty(EventTarget.prototype, keys$1[i], { enumerable: true });\n}\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (typeof Global !== \"undefined\" &&\n typeof Global.EventTarget !== \"undefined\") {\n Object.setPrototypeOf(EventTarget.prototype, Global.EventTarget.prototype);\n}\n\n/**\n * Get the current value of a given event attribute.\n * @param target The `EventTarget` object to get.\n * @param type The event type.\n */\nfunction getEventAttributeValue(target, type) {\n var _a, _b;\n const listMap = $$2(target, \"target\");\n return (_b = (_a = listMap[type]) === null || _a === void 0 ? void 0 : _a.attrCallback) !== null && _b !== void 0 ? _b : null;\n}\n/**\n * Set an event listener to a given event attribute.\n * @param target The `EventTarget` object to set.\n * @param type The event type.\n * @param callback The event listener.\n */\nfunction setEventAttributeValue(target, type, callback) {\n if (callback != null && typeof callback !== \"function\") {\n InvalidAttributeHandler.warn(callback);\n }\n if (typeof callback === \"function\" ||\n (typeof callback === \"object\" && callback !== null)) {\n upsertEventAttributeListener(target, type, callback);\n }\n else {\n removeEventAttributeListener(target, type);\n }\n}\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n/**\n * Update or insert the given event attribute handler.\n * @param target The `EventTarget` object to set.\n * @param type The event type.\n * @param callback The event listener.\n */\nfunction upsertEventAttributeListener(target, type, callback) {\n const list = ensureListenerList($$2(target, \"target\"), String(type));\n list.attrCallback = callback;\n if (list.attrListener == null) {\n list.attrListener = addListener(list, defineEventAttributeCallback(list), false, false, false, undefined);\n }\n}\n/**\n * Remove the given event attribute handler.\n * @param target The `EventTarget` object to remove.\n * @param type The event type.\n * @param callback The event listener.\n */\nfunction removeEventAttributeListener(target, type) {\n const listMap = $$2(target, \"target\");\n const list = listMap[String(type)];\n if (list && list.attrListener) {\n removeListener(list, list.attrListener.callback, false);\n list.attrCallback = list.attrListener = undefined;\n }\n}\n/**\n * Define the callback function for the given listener list object.\n * It calls `attrCallback` property if the property value is a function.\n * @param list The `ListenerList` object.\n */\nfunction defineEventAttributeCallback(list) {\n return function (event) {\n const callback = list.attrCallback;\n if (typeof callback === \"function\") {\n callback.call(this, event);\n }\n };\n}\n\n/**\n * Define an `EventTarget` class that has event attibutes.\n * @param types The types to define event attributes.\n * @deprecated Use `getEventAttributeValue`/`setEventAttributeValue` pair on your derived class instead because of static analysis friendly.\n */\nfunction defineCustomEventTarget(...types) {\n class CustomEventTarget extends EventTarget {\n }\n for (let i = 0; i < types.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, types[i]);\n }\n return CustomEventTarget;\n}\n/**\n * Define an event attribute.\n * @param target The `EventTarget` object to define an event attribute.\n * @param type The event type to define.\n * @param _eventClass Unused, but to infer `Event` class type.\n * @deprecated Use `getEventAttributeValue`/`setEventAttributeValue` pair on your derived class instead because of static analysis friendly.\n */\nfunction defineEventAttribute(target, type, _eventClass) {\n Object.defineProperty(target, `on${type}`, {\n get() {\n return getEventAttributeValue(this, type);\n },\n set(value) {\n setEventAttributeValue(this, type, value);\n },\n configurable: true,\n enumerable: true,\n });\n}\n\nexport default EventTarget;\nexport { Event, EventTarget, defineCustomEventTarget, defineEventAttribute, getEventAttributeValue, setErrorHandler, setEventAttributeValue, setWarningHandler };\n//# sourceMappingURL=index.mjs.map\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\nimport { EventTarget, defineEventAttribute } from 'event-target-shim';\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nclass AbortSignal extends EventTarget {\n /**\n * AbortSignal cannot be constructed directly.\n */\n constructor() {\n super();\n throw new TypeError(\"AbortSignal cannot be constructed directly\");\n }\n /**\n * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n */\n get aborted() {\n const aborted = abortedFlags.get(this);\n if (typeof aborted !== \"boolean\") {\n throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? \"null\" : typeof this}`);\n }\n return aborted;\n }\n}\ndefineEventAttribute(AbortSignal.prototype, \"abort\");\n/**\n * Create an AbortSignal object.\n */\nfunction createAbortSignal() {\n const signal = Object.create(AbortSignal.prototype);\n EventTarget.call(signal);\n abortedFlags.set(signal, false);\n return signal;\n}\n/**\n * Abort a given signal.\n */\nfunction abortSignal(signal) {\n if (abortedFlags.get(signal) !== false) {\n return;\n }\n abortedFlags.set(signal, true);\n signal.dispatchEvent({ type: \"abort\" });\n}\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap();\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n aborted: { enumerable: true },\n});\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortSignal\",\n });\n}\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nclass AbortController {\n /**\n * Initialize this controller.\n */\n constructor() {\n signals.set(this, createAbortSignal());\n }\n /**\n * Returns the `AbortSignal` object associated with this object.\n */\n get signal() {\n return getSignal(this);\n }\n /**\n * Abort and signal to any observers that the associated activity is to be aborted.\n */\n abort() {\n abortSignal(getSignal(this));\n }\n}\n/**\n * Associated signals.\n */\nconst signals = new WeakMap();\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller) {\n const signal = signals.get(controller);\n if (signal == null) {\n throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? \"null\" : typeof controller}`);\n }\n return signal;\n}\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n signal: { enumerable: true },\n abort: { enumerable: true },\n});\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortController\",\n });\n}\n\nexport default AbortController;\nexport { AbortController, AbortSignal };\n//# sourceMappingURL=abort-controller.mjs.map\n",null,null,null,null,"/**\n * web-streams-polyfill v3.2.0\n */\n/// <reference lib=\"es2015.symbol\" />\nconst SymbolPolyfill = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ?\n Symbol :\n description => `Symbol(${description})`;\n\n/// <reference lib=\"dom\" />\nfunction noop() {\n return undefined;\n}\nfunction getGlobals() {\n if (typeof self !== 'undefined') {\n return self;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n else if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n}\nconst globals = getGlobals();\n\nfunction typeIsObject(x) {\n return (typeof x === 'object' && x !== null) || typeof x === 'function';\n}\nconst rethrowAssertionErrorRejection = noop;\n\nconst originalPromise = Promise;\nconst originalPromiseThen = Promise.prototype.then;\nconst originalPromiseResolve = Promise.resolve.bind(originalPromise);\nconst originalPromiseReject = Promise.reject.bind(originalPromise);\nfunction newPromise(executor) {\n return new originalPromise(executor);\n}\nfunction promiseResolvedWith(value) {\n return originalPromiseResolve(value);\n}\nfunction promiseRejectedWith(reason) {\n return originalPromiseReject(reason);\n}\nfunction PerformPromiseThen(promise, onFulfilled, onRejected) {\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);\n}\nfunction uponPromise(promise, onFulfilled, onRejected) {\n PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection);\n}\nfunction uponFulfillment(promise, onFulfilled) {\n uponPromise(promise, onFulfilled);\n}\nfunction uponRejection(promise, onRejected) {\n uponPromise(promise, undefined, onRejected);\n}\nfunction transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {\n return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n}\nfunction setPromiseIsHandledToTrue(promise) {\n PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n}\nconst queueMicrotask = (() => {\n const globalQueueMicrotask = globals && globals.queueMicrotask;\n if (typeof globalQueueMicrotask === 'function') {\n return globalQueueMicrotask;\n }\n const resolvedPromise = promiseResolvedWith(undefined);\n return (fn) => PerformPromiseThen(resolvedPromise, fn);\n})();\nfunction reflectCall(F, V, args) {\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}\nfunction promiseCall(F, V, args) {\n try {\n return promiseResolvedWith(reflectCall(F, V, args));\n }\n catch (value) {\n return promiseRejectedWith(value);\n }\n}\n\n// Original from Chromium\n// https://chromium.googlesource.com/chromium/src/+/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/core/streams/SimpleQueue.js\nconst QUEUE_MAX_ARRAY_SIZE = 16384;\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 */\nclass SimpleQueue {\n constructor() {\n this._cursor = 0;\n this._size = 0;\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 get length() {\n return this._size;\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) {\n const oldBack = this._back;\n let newBack = oldBack;\n if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n newBack = {\n _elements: [],\n _next: undefined\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 // Like push(), shift() follows the read -> calculate -> mutate pattern for\n // exception safety.\n shift() { // must not be called on an empty queue\n const oldFront = this._front;\n let newFront = oldFront;\n const oldCursor = this._cursor;\n let newCursor = oldCursor + 1;\n const elements = oldFront._elements;\n const element = elements[oldCursor];\n if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n newFront = oldFront._next;\n newCursor = 0;\n }\n // No mutations before this point.\n --this._size;\n this._cursor = newCursor;\n if (oldFront !== newFront) {\n this._front = newFront;\n }\n // Permit shifted element to be garbage collected.\n elements[oldCursor] = undefined;\n return element;\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) {\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 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 // Return the element that would be returned if shift() was called now,\n // without modifying the queue.\n peek() { // must not be called on an empty queue\n const front = this._front;\n const cursor = this._cursor;\n return front._elements[cursor];\n }\n}\n\nfunction ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n }\n else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n }\n else {\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n }\n}\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\nfunction ReadableStreamReaderGenericCancel(reader, reason) {\n const stream = reader._ownerReadableStream;\n return ReadableStreamCancel(stream, reason);\n}\nfunction ReadableStreamReaderGenericRelease(reader) {\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));\n }\n else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));\n }\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n}\n// Helper functions for the readers.\nfunction readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n// Helper functions for the ReadableStreamDefaultReader.\nfunction defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = newPromise((resolve, reject) => {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n}\nfunction defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseReject(reader, reason);\n}\nfunction defaultReaderClosedPromiseInitializeAsResolved(reader) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseResolve(reader);\n}\nfunction defaultReaderClosedPromiseReject(reader, reason) {\n if (reader._closedPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(reader._closedPromise);\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\nfunction defaultReaderClosedPromiseResetToRejected(reader, reason) {\n defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n}\nfunction defaultReaderClosedPromiseResolve(reader) {\n if (reader._closedPromise_resolve === undefined) {\n return;\n }\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nconst AbortSteps = SymbolPolyfill('[[AbortSteps]]');\nconst ErrorSteps = SymbolPolyfill('[[ErrorSteps]]');\nconst CancelSteps = SymbolPolyfill('[[CancelSteps]]');\nconst PullSteps = SymbolPolyfill('[[PullSteps]]');\n\n/// <reference lib=\"es2015.core\" />\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill\nconst NumberIsFinite = Number.isFinite || function (x) {\n return typeof x === 'number' && isFinite(x);\n};\n\n/// <reference lib=\"es2015.core\" />\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc#Polyfill\nconst MathTrunc = Math.trunc || function (v) {\n return v < 0 ? Math.ceil(v) : Math.floor(v);\n};\n\n// https://heycam.github.io/webidl/#idl-dictionaries\nfunction isDictionary(x) {\n return typeof x === 'object' || typeof x === 'function';\n}\nfunction assertDictionary(obj, context) {\n if (obj !== undefined && !isDictionary(obj)) {\n throw new TypeError(`${context} is not an object.`);\n }\n}\n// https://heycam.github.io/webidl/#idl-callback-functions\nfunction assertFunction(x, context) {\n if (typeof x !== 'function') {\n throw new TypeError(`${context} is not a function.`);\n }\n}\n// https://heycam.github.io/webidl/#idl-object\nfunction isObject(x) {\n return (typeof x === 'object' && x !== null) || typeof x === 'function';\n}\nfunction assertObject(x, context) {\n if (!isObject(x)) {\n throw new TypeError(`${context} is not an object.`);\n }\n}\nfunction assertRequiredArgument(x, position, context) {\n if (x === undefined) {\n throw new TypeError(`Parameter ${position} is required in '${context}'.`);\n }\n}\nfunction assertRequiredField(x, field, context) {\n if (x === undefined) {\n throw new TypeError(`${field} is required in '${context}'.`);\n }\n}\n// https://heycam.github.io/webidl/#idl-unrestricted-double\nfunction convertUnrestrictedDouble(value) {\n return Number(value);\n}\nfunction censorNegativeZero(x) {\n return x === 0 ? 0 : x;\n}\nfunction integerPart(x) {\n return censorNegativeZero(MathTrunc(x));\n}\n// https://heycam.github.io/webidl/#idl-unsigned-long-long\nfunction convertUnsignedLongLongWithEnforceRange(value, context) {\n const lowerBound = 0;\n const upperBound = Number.MAX_SAFE_INTEGER;\n let x = Number(value);\n x = censorNegativeZero(x);\n if (!NumberIsFinite(x)) {\n throw new TypeError(`${context} is not a finite number`);\n }\n x = integerPart(x);\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(`${context} is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`);\n }\n if (!NumberIsFinite(x) || x === 0) {\n return 0;\n }\n // TODO Use BigInt if supported?\n // let xBigInt = BigInt(integerPart(x));\n // xBigInt = BigInt.asUintN(64, xBigInt);\n // return Number(xBigInt);\n return x;\n}\n\nfunction assertReadableStream(x, context) {\n if (!IsReadableStream(x)) {\n throw new TypeError(`${context} is not a ReadableStream.`);\n }\n}\n\n// Abstract operations for the ReadableStream.\nfunction AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n}\n// ReadableStream API exposed for controllers.\nfunction ReadableStreamAddReadRequest(stream, readRequest) {\n stream._reader._readRequests.push(readRequest);\n}\nfunction ReadableStreamFulfillReadRequest(stream, chunk, done) {\n const reader = stream._reader;\n const readRequest = reader._readRequests.shift();\n if (done) {\n readRequest._closeSteps();\n }\n else {\n readRequest._chunkSteps(chunk);\n }\n}\nfunction ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n}\nfunction ReadableStreamHasDefaultReader(stream) {\n const reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamDefaultReader(reader)) {\n return false;\n }\n return true;\n}\n/**\n * A default reader vended by a {@link ReadableStream}.\n *\n * @public\n */\nclass ReadableStreamDefaultReader {\n constructor(stream) {\n assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader');\n assertReadableStream(stream, 'First parameter');\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readRequests = new SimpleQueue();\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() {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n }\n /**\n * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n */\n cancel(reason = undefined) {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\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() {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n let resolvePromise;\n let rejectPromise;\n const promise = newPromise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n const readRequest = {\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 * 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() {\n if (!IsReadableStreamDefaultReader(this)) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n }\n}\nObject.defineProperties(ReadableStreamDefaultReader.prototype, {\n cancel: { enumerable: true },\n read: { enumerable: true },\n releaseLock: { enumerable: true },\n closed: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamDefaultReader.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamDefaultReader',\n configurable: true\n });\n}\n// Abstract operations for the readers.\nfunction IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n return x instanceof ReadableStreamDefaultReader;\n}\nfunction ReadableStreamDefaultReaderRead(reader, readRequest) {\n const stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'closed') {\n readRequest._closeSteps();\n }\n else if (stream._state === 'errored') {\n readRequest._errorSteps(stream._storedError);\n }\n else {\n stream._readableStreamController[PullSteps](readRequest);\n }\n}\n// Helper functions for the ReadableStreamDefaultReader.\nfunction defaultReaderBrandCheckException(name) {\n return new TypeError(`ReadableStreamDefaultReader.prototype.${name} can only be used on a ReadableStreamDefaultReader`);\n}\n\n/// <reference lib=\"es2018.asynciterable\" />\nlet AsyncIteratorPrototype;\nif (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n // We're running inside a ES2018+ environment, but we're compiling to an older syntax.\n // We cannot access %AsyncIteratorPrototype% without non-ES2018 syntax, but we can re-create it.\n AsyncIteratorPrototype = {\n // 25.1.3.1 %AsyncIteratorPrototype% [ @@asyncIterator ] ( )\n // https://tc39.github.io/ecma262/#sec-asynciteratorprototype-asynciterator\n [SymbolPolyfill.asyncIterator]() {\n return this;\n }\n };\n Object.defineProperty(AsyncIteratorPrototype, SymbolPolyfill.asyncIterator, { enumerable: false });\n}\n\n/// <reference lib=\"es2018.asynciterable\" />\nclass ReadableStreamAsyncIteratorImpl {\n constructor(reader, preventCancel) {\n this._ongoingPromise = undefined;\n this._isFinished = false;\n this._reader = reader;\n this._preventCancel = preventCancel;\n }\n next() {\n const nextSteps = () => this._nextSteps();\n this._ongoingPromise = this._ongoingPromise ?\n transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) :\n nextSteps();\n return this._ongoingPromise;\n }\n return(value) {\n const returnSteps = () => this._returnSteps(value);\n return this._ongoingPromise ?\n transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) :\n returnSteps();\n }\n _nextSteps() {\n if (this._isFinished) {\n return Promise.resolve({ value: undefined, done: true });\n }\n const reader = this._reader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('iterate'));\n }\n let resolvePromise;\n let rejectPromise;\n const promise = newPromise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n const readRequest = {\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 _returnSteps(value) {\n if (this._isFinished) {\n return Promise.resolve({ value, done: true });\n }\n this._isFinished = true;\n const reader = this._reader;\n if (reader._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('finish iterating'));\n }\n if (!this._preventCancel) {\n const result = ReadableStreamReaderGenericCancel(reader, value);\n ReadableStreamReaderGenericRelease(reader);\n return transformPromiseWith(result, () => ({ value, done: true }));\n }\n ReadableStreamReaderGenericRelease(reader);\n return promiseResolvedWith({ value, done: true });\n }\n}\nconst ReadableStreamAsyncIteratorPrototype = {\n next() {\n if (!IsReadableStreamAsyncIterator(this)) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n }\n return this._asyncIteratorImpl.next();\n },\n return(value) {\n if (!IsReadableStreamAsyncIterator(this)) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('return'));\n }\n return this._asyncIteratorImpl.return(value);\n }\n};\nif (AsyncIteratorPrototype !== undefined) {\n Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n}\n// Abstract operations for the ReadableStream.\nfunction AcquireReadableStreamAsyncIterator(stream, preventCancel) {\n const reader = AcquireReadableStreamDefaultReader(stream);\n const impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel);\n const iterator = Object.create(ReadableStreamAsyncIteratorPrototype);\n iterator._asyncIteratorImpl = impl;\n return iterator;\n}\nfunction IsReadableStreamAsyncIterator(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) {\n return false;\n }\n try {\n // noinspection SuspiciousTypeOfGuard\n return x._asyncIteratorImpl instanceof\n ReadableStreamAsyncIteratorImpl;\n }\n catch (_a) {\n return false;\n }\n}\n// Helper functions for the ReadableStream.\nfunction streamAsyncIteratorBrandCheckException(name) {\n return new TypeError(`ReadableStreamAsyncIterator.${name} can only be used on a ReadableSteamAsyncIterator`);\n}\n\n/// <reference lib=\"es2015.core\" />\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Polyfill\nconst NumberIsNaN = Number.isNaN || function (x) {\n // eslint-disable-next-line no-self-compare\n return x !== x;\n};\n\nfunction CreateArrayFromList(elements) {\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();\n}\nfunction CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n}\n// Not implemented correctly\nfunction TransferArrayBuffer(O) {\n return O;\n}\n// Not implemented correctly\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction IsDetachedBuffer(O) {\n return false;\n}\nfunction ArrayBufferSlice(buffer, begin, end) {\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\nfunction IsNonNegativeNumber(v) {\n if (typeof v !== 'number') {\n return false;\n }\n if (NumberIsNaN(v)) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n return true;\n}\nfunction CloneAsUint8Array(O) {\n const buffer = ArrayBufferSlice(O.buffer, O.byteOffset, O.byteOffset + O.byteLength);\n return new Uint8Array(buffer);\n}\n\nfunction DequeueValue(container) {\n const pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n return pair.value;\n}\nfunction EnqueueValueWithSize(container, value, size) {\n if (!IsNonNegativeNumber(size) || size === Infinity) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n container._queue.push({ value, size });\n container._queueTotalSize += size;\n}\nfunction PeekQueueValue(container) {\n const pair = container._queue.peek();\n return pair.value;\n}\nfunction ResetQueue(container) {\n container._queue = new SimpleQueue();\n container._queueTotalSize = 0;\n}\n\n/**\n * A pull-into request in a {@link ReadableByteStreamController}.\n *\n * @public\n */\nclass ReadableStreamBYOBRequest {\n constructor() {\n throw new TypeError('Illegal constructor');\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() {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('view');\n }\n return this._view;\n }\n respond(bytesWritten) {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('respond');\n }\n assertRequiredArgument(bytesWritten, 1, 'respond');\n bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, 'First parameter');\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(this._view.buffer)) ;\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n }\n respondWithNewView(view) {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('respondWithNewView');\n }\n assertRequiredArgument(view, 1, 'respondWithNewView');\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(view.buffer)) ;\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n }\n}\nObject.defineProperties(ReadableStreamBYOBRequest.prototype, {\n respond: { enumerable: true },\n respondWithNewView: { enumerable: true },\n view: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamBYOBRequest.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamBYOBRequest',\n configurable: true\n });\n}\n/**\n * Allows control of a {@link ReadableStream | readable byte stream}'s state and internal queue.\n *\n * @public\n */\nclass ReadableByteStreamController {\n constructor() {\n throw new TypeError('Illegal constructor');\n }\n /**\n * Returns the current BYOB pull request, or `null` if there isn't one.\n */\n get byobRequest() {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n return ReadableByteStreamControllerGetBYOBRequest(this);\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() {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n return ReadableByteStreamControllerGetDesiredSize(this);\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() {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('close');\n }\n if (this._closeRequested) {\n throw new TypeError('The stream has already been closed; do not close it again!');\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 ReadableByteStreamControllerClose(this);\n }\n enqueue(chunk) {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('enqueue');\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 if (this._closeRequested) {\n throw new TypeError('stream is closed or draining');\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 ReadableByteStreamControllerEnqueue(this, chunk);\n }\n /**\n * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n */\n error(e = undefined) {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('error');\n }\n ReadableByteStreamControllerError(this, e);\n }\n /** @internal */\n [CancelSteps](reason) {\n ReadableByteStreamControllerClearPendingPullIntos(this);\n ResetQueue(this);\n const result = this._cancelAlgorithm(reason);\n ReadableByteStreamControllerClearAlgorithms(this);\n return result;\n }\n /** @internal */\n [PullSteps](readRequest) {\n const stream = this._controlledReadableByteStream;\n if (this._queueTotalSize > 0) {\n const entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n ReadableByteStreamControllerHandleQueueDrain(this);\n const view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n readRequest._chunkSteps(view);\n return;\n }\n const autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n let buffer;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n }\n catch (bufferE) {\n readRequest._errorSteps(bufferE);\n return;\n }\n const pullIntoDescriptor = {\n buffer,\n bufferByteLength: autoAllocateChunkSize,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n viewConstructor: Uint8Array,\n readerType: 'default'\n };\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n ReadableStreamAddReadRequest(stream, readRequest);\n ReadableByteStreamControllerCallPullIfNeeded(this);\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});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableByteStreamController.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableByteStreamController',\n configurable: true\n });\n}\n// Abstract operations for the ReadableByteStreamController.\nfunction IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n return false;\n }\n return x instanceof ReadableByteStreamController;\n}\nfunction IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n return x instanceof ReadableStreamBYOBRequest;\n}\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller) {\n const shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (!shouldPull) {\n return;\n }\n if (controller._pulling) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n // TODO: Test controller argument\n const pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, () => {\n controller._pulling = false;\n if (controller._pullAgain) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, e => {\n ReadableByteStreamControllerError(controller, e);\n });\n}\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = new SimpleQueue();\n}\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n let done = false;\n if (stream._state === 'closed') {\n done = true;\n }\n const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n }\n else {\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n}\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n const bytesFilled = pullIntoDescriptor.bytesFilled;\n const elementSize = pullIntoDescriptor.elementSize;\n return new pullIntoDescriptor.viewConstructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n}\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({ buffer, byteOffset, byteLength });\n controller._queueTotalSize += byteLength;\n}\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n const elementSize = pullIntoDescriptor.elementSize;\n const currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n const maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n const maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n let totalBytesToCopyRemaining = maxBytesToCopy;\n let ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n const queue = controller._queue;\n while (totalBytesToCopyRemaining > 0) {\n const headOfQueue = queue.peek();\n const bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n const destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n }\n else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n return ready;\n}\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n pullIntoDescriptor.bytesFilled += size;\n}\nfunction ReadableByteStreamControllerHandleQueueDrain(controller) {\n if (controller._queueTotalSize === 0 && controller._closeRequested) {\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(controller._controlledReadableByteStream);\n }\n else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n}\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === null) {\n return;\n }\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = null;\n controller._byobRequest = null;\n}\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n const pullIntoDescriptor = controller._pendingPullIntos.peek();\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n }\n }\n}\nfunction ReadableByteStreamControllerPullInto(controller, view, readIntoRequest) {\n const stream = controller._controlledReadableByteStream;\n let elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n const ctor = view.constructor;\n // try {\n const buffer = TransferArrayBuffer(view.buffer);\n // } catch (e) {\n // readIntoRequest._errorSteps(e);\n // return;\n // }\n const pullIntoDescriptor = {\n buffer,\n bufferByteLength: buffer.byteLength,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize,\n viewConstructor: ctor,\n readerType: 'byob'\n };\n if (controller._pendingPullIntos.length > 0) {\n controller._pendingPullIntos.push(pullIntoDescriptor);\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 ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n return;\n }\n if (stream._state === 'closed') {\n const emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n readIntoRequest._closeSteps(emptyView);\n return;\n }\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n ReadableByteStreamControllerHandleQueueDrain(controller);\n readIntoRequest._chunkSteps(filledView);\n return;\n }\n if (controller._closeRequested) {\n const e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n readIntoRequest._errorSteps(e);\n return;\n }\n }\n controller._pendingPullIntos.push(pullIntoDescriptor);\n ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\nfunction ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\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}\nfunction ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n return;\n }\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n const remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n const remainder = ArrayBufferSlice(pullIntoDescriptor.buffer, end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\nfunction ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n const firstDescriptor = controller._pendingPullIntos.peek();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n const state = controller._controlledReadableByteStream._state;\n if (state === 'closed') {\n ReadableByteStreamControllerRespondInClosedState(controller);\n }\n else {\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\nfunction ReadableByteStreamControllerShiftPendingPullInto(controller) {\n const descriptor = controller._pendingPullIntos.shift();\n return descriptor;\n}\nfunction ReadableByteStreamControllerShouldCallPull(controller) {\n const stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return false;\n }\n if (controller._closeRequested) {\n return false;\n }\n if (!controller._started) {\n return false;\n }\n if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n const desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n}\nfunction ReadableByteStreamControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n}\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\nfunction ReadableByteStreamControllerClose(controller) {\n const stream = controller._controlledReadableByteStream;\n if (controller._closeRequested || stream._state !== 'readable') {\n return;\n }\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n return;\n }\n if (controller._pendingPullIntos.length > 0) {\n const firstPendingPullInto = controller._pendingPullIntos.peek();\n if (firstPendingPullInto.bytesFilled > 0) {\n const e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n throw e;\n }\n }\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n}\nfunction ReadableByteStreamControllerEnqueue(controller, chunk) {\n const stream = controller._controlledReadableByteStream;\n if (controller._closeRequested || stream._state !== 'readable') {\n return;\n }\n const buffer = chunk.buffer;\n const byteOffset = chunk.byteOffset;\n const byteLength = chunk.byteLength;\n const transferredBuffer = TransferArrayBuffer(buffer);\n if (controller._pendingPullIntos.length > 0) {\n const firstPendingPullInto = controller._pendingPullIntos.peek();\n if (IsDetachedBuffer(firstPendingPullInto.buffer)) ;\n firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer);\n }\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n if (ReadableStreamHasDefaultReader(stream)) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n else {\n if (controller._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n }\n const transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\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 }\n else {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n}\nfunction ReadableByteStreamControllerError(controller, e) {\n const stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return;\n }\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n ResetQueue(controller);\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n}\nfunction ReadableByteStreamControllerGetBYOBRequest(controller) {\n if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) {\n const firstDescriptor = controller._pendingPullIntos.peek();\n const view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n const byobRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n SetUpReadableStreamBYOBRequest(byobRequest, controller, view);\n controller._byobRequest = byobRequest;\n }\n return controller._byobRequest;\n}\nfunction ReadableByteStreamControllerGetDesiredSize(controller) {\n const state = controller._controlledReadableByteStream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n}\nfunction ReadableByteStreamControllerRespond(controller, bytesWritten) {\n const firstDescriptor = controller._pendingPullIntos.peek();\n const state = controller._controlledReadableByteStream._state;\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 }\n else {\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 firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\nfunction ReadableByteStreamControllerRespondWithNewView(controller, view) {\n const firstDescriptor = controller._pendingPullIntos.peek();\n const state = controller._controlledReadableByteStream._state;\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 }\n else {\n if (view.byteLength === 0) {\n throw new TypeError('The view\\'s length must be greater than 0 when calling respondWithNewView() on a readable stream');\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 const viewByteLength = view.byteLength;\n firstDescriptor.buffer = TransferArrayBuffer(view.buffer);\n ReadableByteStreamControllerRespondInternal(controller, viewByteLength);\n}\nfunction SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) {\n controller._controlledReadableByteStream = stream;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._byobRequest = null;\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 controller._closeRequested = false;\n controller._started = false;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n controller._autoAllocateChunkSize = autoAllocateChunkSize;\n controller._pendingPullIntos = new SimpleQueue();\n stream._readableStreamController = controller;\n const startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), () => {\n controller._started = true;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, r => {\n ReadableByteStreamControllerError(controller, r);\n });\n}\nfunction SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) {\n const controller = Object.create(ReadableByteStreamController.prototype);\n let startAlgorithm = () => undefined;\n let pullAlgorithm = () => promiseResolvedWith(undefined);\n let cancelAlgorithm = () => promiseResolvedWith(undefined);\n if (underlyingByteSource.start !== undefined) {\n startAlgorithm = () => underlyingByteSource.start(controller);\n }\n if (underlyingByteSource.pull !== undefined) {\n pullAlgorithm = () => underlyingByteSource.pull(controller);\n }\n if (underlyingByteSource.cancel !== undefined) {\n cancelAlgorithm = reason => underlyingByteSource.cancel(reason);\n }\n const autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize === 0) {\n throw new TypeError('autoAllocateChunkSize must be greater than 0');\n }\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize);\n}\nfunction SetUpReadableStreamBYOBRequest(request, controller, view) {\n request._associatedReadableByteStreamController = controller;\n request._view = view;\n}\n// Helper functions for the ReadableStreamBYOBRequest.\nfunction byobRequestBrandCheckException(name) {\n return new TypeError(`ReadableStreamBYOBRequest.prototype.${name} can only be used on a ReadableStreamBYOBRequest`);\n}\n// Helper functions for the ReadableByteStreamController.\nfunction byteStreamControllerBrandCheckException(name) {\n return new TypeError(`ReadableByteStreamController.prototype.${name} can only be used on a ReadableByteStreamController`);\n}\n\n// Abstract operations for the ReadableStream.\nfunction AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n}\n// ReadableStream API exposed for controllers.\nfunction ReadableStreamAddReadIntoRequest(stream, readIntoRequest) {\n stream._reader._readIntoRequests.push(readIntoRequest);\n}\nfunction ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n const reader = stream._reader;\n const readIntoRequest = reader._readIntoRequests.shift();\n if (done) {\n readIntoRequest._closeSteps(chunk);\n }\n else {\n readIntoRequest._chunkSteps(chunk);\n }\n}\nfunction ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n}\nfunction ReadableStreamHasBYOBReader(stream) {\n const reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamBYOBReader(reader)) {\n return false;\n }\n return true;\n}\n/**\n * A BYOB reader vended by a {@link ReadableStream}.\n *\n * @public\n */\nclass ReadableStreamBYOBReader {\n constructor(stream) {\n assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader');\n assertReadableStream(stream, 'First parameter');\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\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 ReadableStreamReaderGenericInitialize(this, stream);\n this._readIntoRequests = new SimpleQueue();\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() {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n }\n /**\n * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n */\n cancel(reason = undefined) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\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(view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('read'));\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 if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n let resolvePromise;\n let rejectPromise;\n const promise = newPromise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n const readIntoRequest = {\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, readIntoRequest);\n return promise;\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() {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n ReadableStreamReaderGenericRelease(this);\n }\n}\nObject.defineProperties(ReadableStreamBYOBReader.prototype, {\n cancel: { enumerable: true },\n read: { enumerable: true },\n releaseLock: { enumerable: true },\n closed: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamBYOBReader.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamBYOBReader',\n configurable: true\n });\n}\n// Abstract operations for the readers.\nfunction IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n return x instanceof ReadableStreamBYOBReader;\n}\nfunction ReadableStreamBYOBReaderRead(reader, view, readIntoRequest) {\n const stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'errored') {\n readIntoRequest._errorSteps(stream._storedError);\n }\n else {\n ReadableByteStreamControllerPullInto(stream._readableStreamController, view, readIntoRequest);\n }\n}\n// Helper functions for the ReadableStreamBYOBReader.\nfunction byobReaderBrandCheckException(name) {\n return new TypeError(`ReadableStreamBYOBReader.prototype.${name} can only be used on a ReadableStreamBYOBReader`);\n}\n\nfunction ExtractHighWaterMark(strategy, defaultHWM) {\n const { highWaterMark } = strategy;\n if (highWaterMark === undefined) {\n return defaultHWM;\n }\n if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('Invalid highWaterMark');\n }\n return highWaterMark;\n}\nfunction ExtractSizeAlgorithm(strategy) {\n const { size } = strategy;\n if (!size) {\n return () => 1;\n }\n return size;\n}\n\nfunction convertQueuingStrategy(init, context) {\n assertDictionary(init, context);\n const highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark;\n const size = init === null || init === void 0 ? void 0 : 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}\nfunction convertQueuingStrategySize(fn, context) {\n assertFunction(fn, context);\n return chunk => convertUnrestrictedDouble(fn(chunk));\n}\n\nfunction convertUnderlyingSink(original, context) {\n assertDictionary(original, context);\n const abort = original === null || original === void 0 ? void 0 : original.abort;\n const close = original === null || original === void 0 ? void 0 : original.close;\n const start = original === null || original === void 0 ? void 0 : original.start;\n const type = original === null || original === void 0 ? void 0 : original.type;\n const write = original === null || original === void 0 ? void 0 : 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}\nfunction convertUnderlyingSinkAbortCallback(fn, original, context) {\n assertFunction(fn, context);\n return (reason) => promiseCall(fn, original, [reason]);\n}\nfunction convertUnderlyingSinkCloseCallback(fn, original, context) {\n assertFunction(fn, context);\n return () => promiseCall(fn, original, []);\n}\nfunction convertUnderlyingSinkStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => reflectCall(fn, original, [controller]);\n}\nfunction convertUnderlyingSinkWriteCallback(fn, original, context) {\n assertFunction(fn, context);\n return (chunk, controller) => promiseCall(fn, original, [chunk, controller]);\n}\n\nfunction assertWritableStream(x, context) {\n if (!IsWritableStream(x)) {\n throw new TypeError(`${context} is not a WritableStream.`);\n }\n}\n\nfunction isAbortSignal(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n try {\n return typeof value.aborted === 'boolean';\n }\n catch (_a) {\n // AbortSignal.prototype.aborted throws if its brand check fails\n return false;\n }\n}\nconst supportsAbortController = typeof AbortController === 'function';\n/**\n * Construct a new AbortController, if supported by the platform.\n *\n * @internal\n */\nfunction createAbortController() {\n if (supportsAbortController) {\n return new AbortController();\n }\n return undefined;\n}\n\n/**\n * A writable stream represents a destination for data, into which you can write.\n *\n * @public\n */\nclass WritableStream {\n constructor(rawUnderlyingSink = {}, rawStrategy = {}) {\n if (rawUnderlyingSink === undefined) {\n rawUnderlyingSink = null;\n }\n else {\n assertObject(rawUnderlyingSink, 'First parameter');\n }\n const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n const underlyingSink = convertUnderlyingSink(rawUnderlyingSink, 'First parameter');\n InitializeWritableStream(this);\n const type = underlyingSink.type;\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n const sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n const highWaterMark = ExtractHighWaterMark(strategy, 1);\n SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n }\n /**\n * Returns whether or not the writable stream is locked to a writer.\n */\n get locked() {\n if (!IsWritableStream(this)) {\n throw streamBrandCheckException$2('locked');\n }\n return IsWritableStreamLocked(this);\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 = undefined) {\n if (!IsWritableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$2('abort'));\n }\n if (IsWritableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n }\n return WritableStreamAbort(this, reason);\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$2('close'));\n }\n if (IsWritableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n }\n if (WritableStreamCloseQueuedOrInFlight(this)) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamClose(this);\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() {\n if (!IsWritableStream(this)) {\n throw streamBrandCheckException$2('getWriter');\n }\n return AcquireWritableStreamDefaultWriter(this);\n }\n}\nObject.defineProperties(WritableStream.prototype, {\n abort: { enumerable: true },\n close: { enumerable: true },\n getWriter: { enumerable: true },\n locked: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStream',\n configurable: true\n });\n}\n// Abstract operations for the WritableStream.\nfunction AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n}\n// Throws if and only if startAlgorithm throws.\nfunction CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) {\n const stream = Object.create(WritableStream.prototype);\n InitializeWritableStream(stream);\n const controller = Object.create(WritableStreamDefaultController.prototype);\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n}\nfunction InitializeWritableStream(stream) {\n stream._state = 'writable';\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 stream._writer = undefined;\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n stream._writableStreamController = undefined;\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 // 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 // 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 // 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 // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n stream._pendingAbortRequest = undefined;\n // The backpressure signal set by the controller.\n stream._backpressure = false;\n}\nfunction IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n return x instanceof WritableStream;\n}\nfunction IsWritableStreamLocked(stream) {\n if (stream._writer === undefined) {\n return false;\n }\n return true;\n}\nfunction WritableStreamAbort(stream, reason) {\n var _a;\n if (stream._state === 'closed' || stream._state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n stream._writableStreamController._abortReason = reason;\n (_a = stream._writableStreamController._abortController) === null || _a === void 0 ? void 0 : _a.abort();\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;\n if (state === 'closed' || state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n if (stream._pendingAbortRequest !== undefined) {\n return stream._pendingAbortRequest._promise;\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 const promise = newPromise((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 if (!wasAlreadyErroring) {\n WritableStreamStartErroring(stream, reason);\n }\n return promise;\n}\nfunction WritableStreamClose(stream) {\n const state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseRejectedWith(new TypeError(`The stream (in ${state} state) is not in the writable state and cannot be closed`));\n }\n const promise = newPromise((resolve, reject) => {\n const closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._closeRequest = closeRequest;\n });\n const writer = stream._writer;\n if (writer !== undefined && stream._backpressure && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n return promise;\n}\n// WritableStream API exposed for controllers.\nfunction WritableStreamAddWriteRequest(stream) {\n const promise = newPromise((resolve, reject) => {\n const writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._writeRequests.push(writeRequest);\n });\n return promise;\n}\nfunction WritableStreamDealWithRejection(stream, error) {\n const state = stream._state;\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n WritableStreamFinishErroring(stream);\n}\nfunction WritableStreamStartErroring(stream, reason) {\n const controller = stream._writableStreamController;\n stream._state = 'erroring';\n stream._storedError = reason;\n const writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) {\n WritableStreamFinishErroring(stream);\n }\n}\nfunction WritableStreamFinishErroring(stream) {\n stream._state = 'errored';\n stream._writableStreamController[ErrorSteps]();\n const storedError = stream._storedError;\n stream._writeRequests.forEach(writeRequest => {\n writeRequest._reject(storedError);\n });\n stream._writeRequests = new SimpleQueue();\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n const abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n if (abortRequest._wasAlreadyErroring) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n const promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n uponPromise(promise, () => {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, (reason) => {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n}\nfunction WritableStreamFinishInFlightWrite(stream) {\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n}\nfunction WritableStreamFinishInFlightWriteWithError(stream, error) {\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n WritableStreamDealWithRejection(stream, error);\n}\nfunction WritableStreamFinishInFlightClose(stream) {\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n const state = stream._state;\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 stream._state = 'closed';\n const writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n}\nfunction WritableStreamFinishInFlightCloseWithError(stream, error) {\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\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// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n}\nfunction WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n}\nfunction WritableStreamMarkCloseRequestInFlight(stream) {\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n}\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream) {\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n if (stream._closeRequest !== undefined) {\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}\nfunction WritableStreamUpdateBackpressure(stream, backpressure) {\n const writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure) {\n defaultWriterReadyPromiseReset(writer);\n }\n else {\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n stream._backpressure = backpressure;\n}\n/**\n * A default writer vended by a {@link WritableStream}.\n *\n * @public\n */\nclass WritableStreamDefaultWriter {\n constructor(stream) {\n assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter');\n assertWritableStream(stream, 'First parameter');\n if (IsWritableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n this._ownerWritableStream = stream;\n stream._writer = this;\n const state = stream._state;\n if (state === 'writable') {\n if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) {\n defaultWriterReadyPromiseInitialize(this);\n }\n else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n defaultWriterClosedPromiseInitialize(this);\n }\n else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n defaultWriterClosedPromiseInitialize(this);\n }\n else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n }\n else {\n const storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\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() {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n }\n return this._closedPromise;\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() {\n if (!IsWritableStreamDefaultWriter(this)) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n return WritableStreamDefaultWriterGetDesiredSize(this);\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() {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n }\n return this._readyPromise;\n }\n /**\n * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}.\n */\n abort(reason = undefined) {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('abort'));\n }\n return WritableStreamDefaultWriterAbort(this, reason);\n }\n /**\n * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}.\n */\n close() {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n }\n const stream = this._ownerWritableStream;\n if (stream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('close'));\n }\n if (WritableStreamCloseQueuedOrInFlight(stream)) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamDefaultWriterClose(this);\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() {\n if (!IsWritableStreamDefaultWriter(this)) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n const stream = this._ownerWritableStream;\n if (stream === undefined) {\n return;\n }\n WritableStreamDefaultWriterRelease(this);\n }\n write(chunk = undefined) {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n return WritableStreamDefaultWriterWrite(this, chunk);\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});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStreamDefaultWriter.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStreamDefaultWriter',\n configurable: true\n });\n}\n// Abstract operations for the WritableStreamDefaultWriter.\nfunction IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n return x instanceof WritableStreamDefaultWriter;\n}\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\nfunction WritableStreamDefaultWriterAbort(writer, reason) {\n const stream = writer._ownerWritableStream;\n return WritableStreamAbort(stream, reason);\n}\nfunction WritableStreamDefaultWriterClose(writer) {\n const stream = writer._ownerWritableStream;\n return WritableStreamClose(stream);\n}\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n const stream = writer._ownerWritableStream;\n const state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return WritableStreamDefaultWriterClose(writer);\n}\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n }\n else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n}\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n }\n else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n}\nfunction WritableStreamDefaultWriterGetDesiredSize(writer) {\n const stream = writer._ownerWritableStream;\n const state = stream._state;\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\nfunction WritableStreamDefaultWriterRelease(writer) {\n const stream = writer._ownerWritableStream;\n const releasedError = new TypeError(`Writer was released and can no longer be used to monitor the stream's closedness`);\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\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 stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n}\nfunction WritableStreamDefaultWriterWrite(writer, chunk) {\n const stream = writer._ownerWritableStream;\n const controller = stream._writableStreamController;\n const chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n if (stream !== writer._ownerWritableStream) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\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 const promise = WritableStreamAddWriteRequest(stream);\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n return promise;\n}\nconst closeSentinel = {};\n/**\n * Allows control of a {@link WritableStream | writable stream}'s state and internal queue.\n *\n * @public\n */\nclass WritableStreamDefaultController {\n constructor() {\n throw new TypeError('Illegal constructor');\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() {\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('abortReason');\n }\n return this._abortReason;\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() {\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('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 * 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 = undefined) {\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('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 WritableStreamDefaultControllerError(this, e);\n }\n /** @internal */\n [AbortSteps](reason) {\n const result = this._abortAlgorithm(reason);\n WritableStreamDefaultControllerClearAlgorithms(this);\n return result;\n }\n /** @internal */\n [ErrorSteps]() {\n ResetQueue(this);\n }\n}\nObject.defineProperties(WritableStreamDefaultController.prototype, {\n abortReason: { enumerable: true },\n signal: { enumerable: true },\n error: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(WritableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'WritableStreamDefaultController',\n configurable: true\n });\n}\n// Abstract operations implementing interface required by the WritableStream.\nfunction IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n return false;\n }\n return x instanceof WritableStreamDefaultController;\n}\nfunction SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledWritableStream = stream;\n stream._writableStreamController = controller;\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 controller._abortReason = undefined;\n controller._abortController = createAbortController();\n controller._started = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._writeAlgorithm = writeAlgorithm;\n controller._closeAlgorithm = closeAlgorithm;\n controller._abortAlgorithm = abortAlgorithm;\n const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n const startResult = startAlgorithm();\n const startPromise = promiseResolvedWith(startResult);\n uponPromise(startPromise, () => {\n controller._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, r => {\n controller._started = true;\n WritableStreamDealWithRejection(stream, r);\n });\n}\nfunction SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) {\n const controller = Object.create(WritableStreamDefaultController.prototype);\n let startAlgorithm = () => undefined;\n let writeAlgorithm = () => promiseResolvedWith(undefined);\n let closeAlgorithm = () => promiseResolvedWith(undefined);\n let abortAlgorithm = () => promiseResolvedWith(undefined);\n if (underlyingSink.start !== undefined) {\n startAlgorithm = () => underlyingSink.start(controller);\n }\n if (underlyingSink.write !== undefined) {\n writeAlgorithm = chunk => underlyingSink.write(chunk, controller);\n }\n if (underlyingSink.close !== undefined) {\n closeAlgorithm = () => underlyingSink.close();\n }\n if (underlyingSink.abort !== undefined) {\n abortAlgorithm = reason => underlyingSink.abort(reason);\n }\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n}\n// ClearAlgorithms may be called twice. Erroring the same stream in multiple ways will often result in redundant calls.\nfunction WritableStreamDefaultControllerClearAlgorithms(controller) {\n controller._writeAlgorithm = undefined;\n controller._closeAlgorithm = undefined;\n controller._abortAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n}\nfunction WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, closeSentinel, 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\nfunction WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n try {\n return controller._strategySizeAlgorithm(chunk);\n }\n catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n}\nfunction WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n}\nfunction WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n }\n catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n const stream = controller._controlledWritableStream;\n if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === 'writable') {\n const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n// Abstract operations for the WritableStreamDefaultController.\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n const stream = controller._controlledWritableStream;\n if (!controller._started) {\n return;\n }\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n const state = stream._state;\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n if (controller._queue.length === 0) {\n return;\n }\n const value = PeekQueueValue(controller);\n if (value === closeSentinel) {\n WritableStreamDefaultControllerProcessClose(controller);\n }\n else {\n WritableStreamDefaultControllerProcessWrite(controller, value);\n }\n}\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n}\nfunction WritableStreamDefaultControllerProcessClose(controller) {\n const stream = controller._controlledWritableStream;\n WritableStreamMarkCloseRequestInFlight(stream);\n DequeueValue(controller);\n const sinkClosePromise = controller._closeAlgorithm();\n WritableStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(sinkClosePromise, () => {\n WritableStreamFinishInFlightClose(stream);\n }, reason => {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n });\n}\nfunction WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n const stream = controller._controlledWritableStream;\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n const sinkWritePromise = controller._writeAlgorithm(chunk);\n uponPromise(sinkWritePromise, () => {\n WritableStreamFinishInFlightWrite(stream);\n const state = stream._state;\n DequeueValue(controller);\n if (!WritableStreamCloseQueuedOrInFlight(stream) && state === 'writable') {\n const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, reason => {\n if (stream._state === 'writable') {\n WritableStreamDefaultControllerClearAlgorithms(controller);\n }\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n });\n}\nfunction WritableStreamDefaultControllerGetBackpressure(controller) {\n const desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n}\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\nfunction WritableStreamDefaultControllerError(controller, error) {\n const stream = controller._controlledWritableStream;\n WritableStreamDefaultControllerClearAlgorithms(controller);\n WritableStreamStartErroring(stream, error);\n}\n// Helper functions for the WritableStream.\nfunction streamBrandCheckException$2(name) {\n return new TypeError(`WritableStream.prototype.${name} can only be used on a WritableStream`);\n}\n// Helper functions for the WritableStreamDefaultController.\nfunction defaultControllerBrandCheckException$2(name) {\n return new TypeError(`WritableStreamDefaultController.prototype.${name} can only be used on a WritableStreamDefaultController`);\n}\n// Helper functions for the WritableStreamDefaultWriter.\nfunction defaultWriterBrandCheckException(name) {\n return new TypeError(`WritableStreamDefaultWriter.prototype.${name} can only be used on a WritableStreamDefaultWriter`);\n}\nfunction defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\nfunction defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = newPromise((resolve, reject) => {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n}\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseReject(writer, reason);\n}\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseResolve(writer);\n}\nfunction defaultWriterClosedPromiseReject(writer, reason) {\n if (writer._closedPromise_reject === undefined) {\n return;\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}\nfunction defaultWriterClosedPromiseResetToRejected(writer, reason) {\n defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n}\nfunction defaultWriterClosedPromiseResolve(writer) {\n if (writer._closedPromise_resolve === undefined) {\n return;\n }\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\nfunction defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = newPromise((resolve, reject) => {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseReject(writer, reason);\n}\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseResolve(writer);\n}\nfunction defaultWriterReadyPromiseReject(writer, reason) {\n if (writer._readyPromise_reject === undefined) {\n return;\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}\nfunction defaultWriterReadyPromiseReset(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n}\nfunction defaultWriterReadyPromiseResetToRejected(writer, reason) {\n defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n}\nfunction defaultWriterReadyPromiseResolve(writer) {\n if (writer._readyPromise_resolve === undefined) {\n return;\n }\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\n/// <reference lib=\"dom\" />\nconst NativeDOMException = typeof DOMException !== 'undefined' ? DOMException : undefined;\n\n/// <reference types=\"node\" />\nfunction isDOMExceptionConstructor(ctor) {\n if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n return false;\n }\n try {\n new ctor();\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction createDOMExceptionPolyfill() {\n // eslint-disable-next-line no-shadow\n const ctor = function DOMException(message, name) {\n this.message = message || '';\n this.name = name || 'Error';\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n };\n ctor.prototype = Object.create(Error.prototype);\n Object.defineProperty(ctor.prototype, 'constructor', { value: ctor, writable: true, configurable: true });\n return ctor;\n}\n// eslint-disable-next-line no-redeclare\nconst DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill();\n\nfunction ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) {\n const reader = AcquireReadableStreamDefaultReader(source);\n const writer = AcquireWritableStreamDefaultWriter(dest);\n source._disturbed = true;\n let shuttingDown = false;\n // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n let currentWrite = promiseResolvedWith(undefined);\n return newPromise((resolve, reject) => {\n let abortAlgorithm;\n if (signal !== undefined) {\n abortAlgorithm = () => {\n const error = new DOMException$1('Aborted', 'AbortError');\n const actions = [];\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 if (signal.aborted) {\n abortAlgorithm();\n return;\n }\n signal.addEventListener('abort', abortAlgorithm);\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((resolveLoop, rejectLoop) => {\n function next(done) {\n if (done) {\n resolveLoop();\n }\n else {\n // Use `PerformPromiseThen` instead of `uponPromise` to avoid\n // adding unnecessary `.catch(rethrowAssertionErrorRejection)` handlers\n PerformPromiseThen(pipeStep(), next, rejectLoop);\n }\n }\n next(false);\n });\n }\n function pipeStep() {\n if (shuttingDown) {\n return promiseResolvedWith(true);\n }\n return PerformPromiseThen(writer._readyPromise, () => {\n return newPromise((resolveRead, rejectRead) => {\n ReadableStreamDefaultReaderRead(reader, {\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 // Errors must be propagated forward\n isOrBecomesErrored(source, reader._closedPromise, storedError => {\n if (!preventAbort) {\n shutdownWithAction(() => WritableStreamAbort(dest, storedError), true, storedError);\n }\n else {\n shutdown(true, storedError);\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 }\n else {\n shutdown(true, storedError);\n }\n });\n // Closing must be propagated forward\n isOrBecomesClosed(source, reader._closedPromise, () => {\n if (!preventClose) {\n shutdownWithAction(() => WritableStreamDefaultWriterCloseWithErrorPropagation(writer));\n }\n else {\n shutdown();\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 if (!preventCancel) {\n shutdownWithAction(() => ReadableStreamCancel(source, destClosed), true, destClosed);\n }\n else {\n shutdown(true, destClosed);\n }\n }\n setPromiseIsHandledToTrue(pipeLoop());\n function waitForWritesToFinish() {\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(currentWrite, () => oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined);\n }\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n }\n else {\n uponRejection(promise, action);\n }\n }\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n }\n else {\n uponFulfillment(promise, action);\n }\n }\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n uponFulfillment(waitForWritesToFinish(), doTheRest);\n }\n else {\n doTheRest();\n }\n function doTheRest() {\n uponPromise(action(), () => finalize(originalIsError, originalError), newError => finalize(true, newError));\n }\n }\n function shutdown(isError, error) {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n uponFulfillment(waitForWritesToFinish(), () => finalize(isError, error));\n }\n else {\n finalize(isError, error);\n }\n }\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n if (signal !== undefined) {\n signal.removeEventListener('abort', abortAlgorithm);\n }\n if (isError) {\n reject(error);\n }\n else {\n resolve(undefined);\n }\n }\n });\n}\n\n/**\n * Allows control of a {@link ReadableStream | readable stream}'s state and internal queue.\n *\n * @public\n */\nclass ReadableStreamDefaultController {\n constructor() {\n throw new TypeError('Illegal constructor');\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() {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('desiredSize');\n }\n return ReadableStreamDefaultControllerGetDesiredSize(this);\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() {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('close');\n }\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n throw new TypeError('The stream is not in a state that permits close');\n }\n ReadableStreamDefaultControllerClose(this);\n }\n enqueue(chunk = undefined) {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('enqueue');\n }\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n throw new TypeError('The stream is not in a state that permits enqueue');\n }\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n }\n /**\n * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n */\n error(e = undefined) {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('error');\n }\n ReadableStreamDefaultControllerError(this, e);\n }\n /** @internal */\n [CancelSteps](reason) {\n ResetQueue(this);\n const result = this._cancelAlgorithm(reason);\n ReadableStreamDefaultControllerClearAlgorithms(this);\n return result;\n }\n /** @internal */\n [PullSteps](readRequest) {\n const stream = this._controlledReadableStream;\n if (this._queue.length > 0) {\n const chunk = DequeueValue(this);\n if (this._closeRequested && this._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(this);\n ReadableStreamClose(stream);\n }\n else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n readRequest._chunkSteps(chunk);\n }\n else {\n ReadableStreamAddReadRequest(stream, readRequest);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n }\n}\nObject.defineProperties(ReadableStreamDefaultController.prototype, {\n close: { enumerable: true },\n enqueue: { enumerable: true },\n error: { enumerable: true },\n desiredSize: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStreamDefaultController',\n configurable: true\n });\n}\n// Abstract operations for the ReadableStreamDefaultController.\nfunction IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n return false;\n }\n return x instanceof ReadableStreamDefaultController;\n}\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n const shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (!shouldPull) {\n return;\n }\n if (controller._pulling) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n const pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, () => {\n controller._pulling = false;\n if (controller._pullAgain) {\n controller._pullAgain = false;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n }, e => {\n ReadableStreamDefaultControllerError(controller, e);\n });\n}\nfunction ReadableStreamDefaultControllerShouldCallPull(controller) {\n const stream = controller._controlledReadableStream;\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return false;\n }\n if (!controller._started) {\n return false;\n }\n if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n const desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n}\nfunction ReadableStreamDefaultControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n}\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\nfunction ReadableStreamDefaultControllerClose(controller) {\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return;\n }\n const stream = controller._controlledReadableStream;\n controller._closeRequested = true;\n if (controller._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n}\nfunction ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return;\n }\n const stream = controller._controlledReadableStream;\n if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n }\n else {\n let chunkSize;\n try {\n chunkSize = controller._strategySizeAlgorithm(chunk);\n }\n catch (chunkSizeE) {\n ReadableStreamDefaultControllerError(controller, chunkSizeE);\n throw chunkSizeE;\n }\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n }\n catch (enqueueE) {\n ReadableStreamDefaultControllerError(controller, enqueueE);\n throw enqueueE;\n }\n }\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n}\nfunction ReadableStreamDefaultControllerError(controller, e) {\n const stream = controller._controlledReadableStream;\n if (stream._state !== 'readable') {\n return;\n }\n ResetQueue(controller);\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n}\nfunction ReadableStreamDefaultControllerGetDesiredSize(controller) {\n const state = controller._controlledReadableStream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n}\n// This is used in the implementation of TransformStream.\nfunction ReadableStreamDefaultControllerHasBackpressure(controller) {\n if (ReadableStreamDefaultControllerShouldCallPull(controller)) {\n return false;\n }\n return true;\n}\nfunction ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {\n const state = controller._controlledReadableStream._state;\n if (!controller._closeRequested && state === 'readable') {\n return true;\n }\n return false;\n}\nfunction SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledReadableStream = stream;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._closeRequested = false;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n stream._readableStreamController = controller;\n const startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), () => {\n controller._started = true;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, r => {\n ReadableStreamDefaultControllerError(controller, r);\n });\n}\nfunction SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) {\n const controller = Object.create(ReadableStreamDefaultController.prototype);\n let startAlgorithm = () => undefined;\n let pullAlgorithm = () => promiseResolvedWith(undefined);\n let cancelAlgorithm = () => promiseResolvedWith(undefined);\n if (underlyingSource.start !== undefined) {\n startAlgorithm = () => underlyingSource.start(controller);\n }\n if (underlyingSource.pull !== undefined) {\n pullAlgorithm = () => underlyingSource.pull(controller);\n }\n if (underlyingSource.cancel !== undefined) {\n cancelAlgorithm = reason => underlyingSource.cancel(reason);\n }\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n}\n// Helper functions for the ReadableStreamDefaultController.\nfunction defaultControllerBrandCheckException$1(name) {\n return new TypeError(`ReadableStreamDefaultController.prototype.${name} can only be used on a ReadableStreamDefaultController`);\n}\n\nfunction ReadableStreamTee(stream, cloneForBranch2) {\n if (IsReadableByteStreamController(stream._readableStreamController)) {\n return ReadableByteStreamTee(stream);\n }\n return ReadableStreamDefaultTee(stream);\n}\nfunction ReadableStreamDefaultTee(stream, cloneForBranch2) {\n const reader = AcquireReadableStreamDefaultReader(stream);\n let reading = false;\n let readAgain = false;\n let canceled1 = false;\n let canceled2 = false;\n let reason1;\n let reason2;\n let branch1;\n let branch2;\n let resolveCancelPromise;\n const cancelPromise = newPromise(resolve => {\n resolveCancelPromise = resolve;\n });\n function pullAlgorithm() {\n if (reading) {\n readAgain = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n const readRequest = {\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 // 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 if (!canceled1) {\n ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, chunk1);\n }\n if (!canceled2) {\n ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, chunk2);\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 if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n },\n _errorSteps: () => {\n reading = false;\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\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 function cancel2Algorithm(reason) {\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 function startAlgorithm() {\n // do nothing\n }\n branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n uponRejection(reader._closedPromise, (r) => {\n ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n });\n return [branch1, branch2];\n}\nfunction ReadableByteStreamTee(stream) {\n let reader = 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;\n let reason2;\n let branch1;\n let branch2;\n let resolveCancelPromise;\n const cancelPromise = newPromise(resolve => {\n resolveCancelPromise = resolve;\n });\n function forwardReaderError(thisReader) {\n uponRejection(thisReader._closedPromise, r => {\n if (thisReader !== reader) {\n return;\n }\n ReadableByteStreamControllerError(branch1._readableStreamController, r);\n ReadableByteStreamControllerError(branch2._readableStreamController, r);\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n });\n }\n function pullWithDefaultReader() {\n if (IsReadableStreamBYOBReader(reader)) {\n ReadableStreamReaderGenericRelease(reader);\n reader = AcquireReadableStreamDefaultReader(stream);\n forwardReaderError(reader);\n }\n const readRequest = {\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 const chunk1 = chunk;\n let chunk2 = chunk;\n if (!canceled1 && !canceled2) {\n try {\n chunk2 = CloneAsUint8Array(chunk);\n }\n catch (cloneE) {\n ReadableByteStreamControllerError(branch1._readableStreamController, cloneE);\n ReadableByteStreamControllerError(branch2._readableStreamController, cloneE);\n resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n return;\n }\n }\n if (!canceled1) {\n ReadableByteStreamControllerEnqueue(branch1._readableStreamController, chunk1);\n }\n if (!canceled2) {\n ReadableByteStreamControllerEnqueue(branch2._readableStreamController, chunk2);\n }\n reading = false;\n if (readAgainForBranch1) {\n pull1Algorithm();\n }\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 function pullWithBYOBReader(view, forBranch2) {\n if (IsReadableStreamDefaultReader(reader)) {\n ReadableStreamReaderGenericRelease(reader);\n reader = AcquireReadableStreamBYOBReader(stream);\n forwardReaderError(reader);\n }\n const byobBranch = forBranch2 ? branch2 : branch1;\n const otherBranch = forBranch2 ? branch1 : branch2;\n const readIntoRequest = {\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 const byobCanceled = forBranch2 ? canceled2 : canceled1;\n const otherCanceled = forBranch2 ? canceled1 : canceled2;\n if (!otherCanceled) {\n let clonedChunk;\n try {\n clonedChunk = CloneAsUint8Array(chunk);\n }\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 }\n else if (!byobCanceled) {\n ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n }\n reading = false;\n if (readAgainForBranch1) {\n pull1Algorithm();\n }\n else if (readAgainForBranch2) {\n pull2Algorithm();\n }\n });\n },\n _closeSteps: chunk => {\n reading = false;\n const byobCanceled = forBranch2 ? canceled2 : canceled1;\n const otherCanceled = forBranch2 ? canceled1 : canceled2;\n if (!byobCanceled) {\n ReadableByteStreamControllerClose(byobBranch._readableStreamController);\n }\n if (!otherCanceled) {\n ReadableByteStreamControllerClose(otherBranch._readableStreamController);\n }\n if (chunk !== undefined) {\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 if (!byobCanceled || !otherCanceled) {\n resolveCancelPromise(undefined);\n }\n },\n _errorSteps: () => {\n reading = false;\n }\n };\n ReadableStreamBYOBReaderRead(reader, view, readIntoRequest);\n }\n function pull1Algorithm() {\n if (reading) {\n readAgainForBranch1 = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch1._readableStreamController);\n if (byobRequest === null) {\n pullWithDefaultReader();\n }\n else {\n pullWithBYOBReader(byobRequest._view, false);\n }\n return promiseResolvedWith(undefined);\n }\n function pull2Algorithm() {\n if (reading) {\n readAgainForBranch2 = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch2._readableStreamController);\n if (byobRequest === null) {\n pullWithDefaultReader();\n }\n else {\n pullWithBYOBReader(byobRequest._view, true);\n }\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\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 function cancel2Algorithm(reason) {\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 function startAlgorithm() {\n return;\n }\n branch1 = CreateReadableByteStream(startAlgorithm, pull1Algorithm, cancel1Algorithm);\n branch2 = CreateReadableByteStream(startAlgorithm, pull2Algorithm, cancel2Algorithm);\n forwardReaderError(reader);\n return [branch1, branch2];\n}\n\nfunction convertUnderlyingDefaultOrByteSource(source, context) {\n assertDictionary(source, context);\n const original = source;\n const autoAllocateChunkSize = original === null || original === void 0 ? void 0 : original.autoAllocateChunkSize;\n const cancel = original === null || original === void 0 ? void 0 : original.cancel;\n const pull = original === null || original === void 0 ? void 0 : original.pull;\n const start = original === null || original === void 0 ? void 0 : original.start;\n const type = original === null || original === void 0 ? void 0 : original.type;\n return {\n autoAllocateChunkSize: autoAllocateChunkSize === undefined ?\n undefined :\n convertUnsignedLongLongWithEnforceRange(autoAllocateChunkSize, `${context} has member 'autoAllocateChunkSize' that`),\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}\nfunction convertUnderlyingSourceCancelCallback(fn, original, context) {\n assertFunction(fn, context);\n return (reason) => promiseCall(fn, original, [reason]);\n}\nfunction convertUnderlyingSourcePullCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => promiseCall(fn, original, [controller]);\n}\nfunction convertUnderlyingSourceStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => reflectCall(fn, original, [controller]);\n}\nfunction convertReadableStreamType(type, context) {\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\nfunction convertReaderOptions(options, context) {\n assertDictionary(options, context);\n const mode = options === null || options === void 0 ? void 0 : options.mode;\n return {\n mode: mode === undefined ? undefined : convertReadableStreamReaderMode(mode, `${context} has member 'mode' that`)\n };\n}\nfunction convertReadableStreamReaderMode(mode, context) {\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\nfunction convertIteratorOptions(options, context) {\n assertDictionary(options, context);\n const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;\n return { preventCancel: Boolean(preventCancel) };\n}\n\nfunction convertPipeOptions(options, context) {\n assertDictionary(options, context);\n const preventAbort = options === null || options === void 0 ? void 0 : options.preventAbort;\n const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;\n const preventClose = options === null || options === void 0 ? void 0 : options.preventClose;\n const signal = options === null || options === void 0 ? void 0 : 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}\nfunction assertAbortSignal(signal, context) {\n if (!isAbortSignal(signal)) {\n throw new TypeError(`${context} is not an AbortSignal.`);\n }\n}\n\nfunction convertReadableWritablePair(pair, context) {\n assertDictionary(pair, context);\n const readable = pair === null || pair === void 0 ? void 0 : pair.readable;\n assertRequiredField(readable, 'readable', 'ReadableWritablePair');\n assertReadableStream(readable, `${context} has member 'readable' that`);\n const writable = pair === null || pair === void 0 ? void 0 : pair.writable;\n assertRequiredField(writable, 'writable', 'ReadableWritablePair');\n assertWritableStream(writable, `${context} has member 'writable' that`);\n return { readable, writable };\n}\n\n/**\n * A readable stream represents a source of data, from which you can read.\n *\n * @public\n */\nclass ReadableStream {\n constructor(rawUnderlyingSource = {}, rawStrategy = {}) {\n if (rawUnderlyingSource === undefined) {\n rawUnderlyingSource = null;\n }\n else {\n assertObject(rawUnderlyingSource, 'First parameter');\n }\n const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n const underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, 'First parameter');\n InitializeReadableStream(this);\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(this, underlyingSource, highWaterMark);\n }\n else {\n const sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n const highWaterMark = ExtractHighWaterMark(strategy, 1);\n SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm);\n }\n }\n /**\n * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}.\n */\n get locked() {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('locked');\n }\n return IsReadableStreamLocked(this);\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 = undefined) {\n if (!IsReadableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$1('cancel'));\n }\n if (IsReadableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n return ReadableStreamCancel(this, reason);\n }\n getReader(rawOptions = undefined) {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('getReader');\n }\n const options = convertReaderOptions(rawOptions, 'First parameter');\n if (options.mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n return AcquireReadableStreamBYOBReader(this);\n }\n pipeThrough(rawTransform, rawOptions = {}) {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('pipeThrough');\n }\n assertRequiredArgument(rawTransform, 1, 'pipeThrough');\n const transform = convertReadableWritablePair(rawTransform, 'First parameter');\n const options = convertPipeOptions(rawOptions, 'Second parameter');\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 const promise = ReadableStreamPipeTo(this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal);\n setPromiseIsHandledToTrue(promise);\n return transform.readable;\n }\n pipeTo(destination, rawOptions = {}) {\n if (!IsReadableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$1('pipeTo'));\n }\n if (destination === undefined) {\n return promiseRejectedWith(`Parameter 1 is required in 'pipeTo'.`);\n }\n if (!IsWritableStream(destination)) {\n return promiseRejectedWith(new TypeError(`ReadableStream.prototype.pipeTo's first argument must be a WritableStream`));\n }\n let options;\n try {\n options = convertPipeOptions(rawOptions, 'Second parameter');\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n if (IsReadableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(destination)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n return ReadableStreamPipeTo(this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal);\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() {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('tee');\n }\n const branches = ReadableStreamTee(this);\n return CreateArrayFromList(branches);\n }\n values(rawOptions = undefined) {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('values');\n }\n const options = convertIteratorOptions(rawOptions, 'First parameter');\n return AcquireReadableStreamAsyncIterator(this, options.preventCancel);\n }\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});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'ReadableStream',\n configurable: true\n });\n}\nif (typeof SymbolPolyfill.asyncIterator === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, SymbolPolyfill.asyncIterator, {\n value: ReadableStream.prototype.values,\n writable: true,\n configurable: true\n });\n}\n// Abstract operations for the ReadableStream.\n// Throws if and only if startAlgorithm throws.\nfunction CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) {\n const stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n const controller = Object.create(ReadableStreamDefaultController.prototype);\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n}\n// Throws if and only if startAlgorithm throws.\nfunction CreateReadableByteStream(startAlgorithm, pullAlgorithm, cancelAlgorithm) {\n const stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n const controller = Object.create(ReadableByteStreamController.prototype);\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, undefined);\n return stream;\n}\nfunction InitializeReadableStream(stream) {\n stream._state = 'readable';\n stream._reader = undefined;\n stream._storedError = undefined;\n stream._disturbed = false;\n}\nfunction IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n return x instanceof ReadableStream;\n}\nfunction IsReadableStreamLocked(stream) {\n if (stream._reader === undefined) {\n return false;\n }\n return true;\n}\n// ReadableStream API exposed for controllers.\nfunction ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n if (stream._state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n ReadableStreamClose(stream);\n const reader = stream._reader;\n if (reader !== undefined && IsReadableStreamBYOBReader(reader)) {\n reader._readIntoRequests.forEach(readIntoRequest => {\n readIntoRequest._closeSteps(undefined);\n });\n reader._readIntoRequests = new SimpleQueue();\n }\n const sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n return transformPromiseWith(sourceCancelPromise, noop);\n}\nfunction ReadableStreamClose(stream) {\n stream._state = 'closed';\n const reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n defaultReaderClosedPromiseResolve(reader);\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(readRequest => {\n readRequest._closeSteps();\n });\n reader._readRequests = new SimpleQueue();\n }\n}\nfunction ReadableStreamError(stream, e) {\n stream._state = 'errored';\n stream._storedError = e;\n const reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n defaultReaderClosedPromiseReject(reader, e);\n if (IsReadableStreamDefaultReader(reader)) {\n reader._readRequests.forEach(readRequest => {\n readRequest._errorSteps(e);\n });\n reader._readRequests = new SimpleQueue();\n }\n else {\n reader._readIntoRequests.forEach(readIntoRequest => {\n readIntoRequest._errorSteps(e);\n });\n reader._readIntoRequests = new SimpleQueue();\n }\n}\n// Helper functions for the ReadableStream.\nfunction streamBrandCheckException$1(name) {\n return new TypeError(`ReadableStream.prototype.${name} can only be used on a ReadableStream`);\n}\n\nfunction convertQueuingStrategyInit(init, context) {\n assertDictionary(init, context);\n const highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark;\n assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit');\n return {\n highWaterMark: convertUnrestrictedDouble(highWaterMark)\n };\n}\n\n// The size function must not have a prototype property nor be a constructor\nconst byteLengthSizeFunction = (chunk) => {\n return chunk.byteLength;\n};\nObject.defineProperty(byteLengthSizeFunction, 'name', {\n value: 'size',\n configurable: true\n});\n/**\n * A queuing strategy that counts the number of bytes in each chunk.\n *\n * @public\n */\nclass ByteLengthQueuingStrategy {\n constructor(options) {\n assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy');\n options = convertQueuingStrategyInit(options, 'First parameter');\n this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark;\n }\n /**\n * Returns the high water mark provided to the constructor.\n */\n get highWaterMark() {\n if (!IsByteLengthQueuingStrategy(this)) {\n throw byteLengthBrandCheckException('highWaterMark');\n }\n return this._byteLengthQueuingStrategyHighWaterMark;\n }\n /**\n * Measures the size of `chunk` by returning the value of its `byteLength` property.\n */\n get size() {\n if (!IsByteLengthQueuingStrategy(this)) {\n throw byteLengthBrandCheckException('size');\n }\n return byteLengthSizeFunction;\n }\n}\nObject.defineProperties(ByteLengthQueuingStrategy.prototype, {\n highWaterMark: { enumerable: true },\n size: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(ByteLengthQueuingStrategy.prototype, SymbolPolyfill.toStringTag, {\n value: 'ByteLengthQueuingStrategy',\n configurable: true\n });\n}\n// Helper functions for the ByteLengthQueuingStrategy.\nfunction byteLengthBrandCheckException(name) {\n return new TypeError(`ByteLengthQueuingStrategy.prototype.${name} can only be used on a ByteLengthQueuingStrategy`);\n}\nfunction IsByteLengthQueuingStrategy(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_byteLengthQueuingStrategyHighWaterMark')) {\n return false;\n }\n return x instanceof ByteLengthQueuingStrategy;\n}\n\n// The size function must not have a prototype property nor be a constructor\nconst countSizeFunction = () => {\n return 1;\n};\nObject.defineProperty(countSizeFunction, 'name', {\n value: 'size',\n configurable: true\n});\n/**\n * A queuing strategy that counts the number of chunks.\n *\n * @public\n */\nclass CountQueuingStrategy {\n constructor(options) {\n assertRequiredArgument(options, 1, 'CountQueuingStrategy');\n options = convertQueuingStrategyInit(options, 'First parameter');\n this._countQueuingStrategyHighWaterMark = options.highWaterMark;\n }\n /**\n * Returns the high water mark provided to the constructor.\n */\n get highWaterMark() {\n if (!IsCountQueuingStrategy(this)) {\n throw countBrandCheckException('highWaterMark');\n }\n return this._countQueuingStrategyHighWaterMark;\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() {\n if (!IsCountQueuingStrategy(this)) {\n throw countBrandCheckException('size');\n }\n return countSizeFunction;\n }\n}\nObject.defineProperties(CountQueuingStrategy.prototype, {\n highWaterMark: { enumerable: true },\n size: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(CountQueuingStrategy.prototype, SymbolPolyfill.toStringTag, {\n value: 'CountQueuingStrategy',\n configurable: true\n });\n}\n// Helper functions for the CountQueuingStrategy.\nfunction countBrandCheckException(name) {\n return new TypeError(`CountQueuingStrategy.prototype.${name} can only be used on a CountQueuingStrategy`);\n}\nfunction IsCountQueuingStrategy(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_countQueuingStrategyHighWaterMark')) {\n return false;\n }\n return x instanceof CountQueuingStrategy;\n}\n\nfunction convertTransformer(original, context) {\n assertDictionary(original, context);\n const flush = original === null || original === void 0 ? void 0 : original.flush;\n const readableType = original === null || original === void 0 ? void 0 : original.readableType;\n const start = original === null || original === void 0 ? void 0 : original.start;\n const transform = original === null || original === void 0 ? void 0 : original.transform;\n const writableType = original === null || original === void 0 ? void 0 : original.writableType;\n return {\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}\nfunction convertTransformerFlushCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => promiseCall(fn, original, [controller]);\n}\nfunction convertTransformerStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => reflectCall(fn, original, [controller]);\n}\nfunction convertTransformerTransformCallback(fn, original, context) {\n assertFunction(fn, context);\n return (chunk, controller) => promiseCall(fn, original, [chunk, controller]);\n}\n\n// Class TransformStream\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 */\nclass TransformStream {\n constructor(rawTransformer = {}, rawWritableStrategy = {}, rawReadableStrategy = {}) {\n if (rawTransformer === undefined) {\n rawTransformer = null;\n }\n const writableStrategy = convertQueuingStrategy(rawWritableStrategy, 'Second parameter');\n const readableStrategy = convertQueuingStrategy(rawReadableStrategy, 'Third parameter');\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 const readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0);\n const readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy);\n const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);\n const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);\n let startPromise_resolve;\n const startPromise = newPromise(resolve => {\n startPromise_resolve = resolve;\n });\n InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n if (transformer.start !== undefined) {\n startPromise_resolve(transformer.start(this._transformStreamController));\n }\n else {\n startPromise_resolve(undefined);\n }\n }\n /**\n * The readable side of the transform stream.\n */\n get readable() {\n if (!IsTransformStream(this)) {\n throw streamBrandCheckException('readable');\n }\n return this._readable;\n }\n /**\n * The writable side of the transform stream.\n */\n get writable() {\n if (!IsTransformStream(this)) {\n throw streamBrandCheckException('writable');\n }\n return this._writable;\n }\n}\nObject.defineProperties(TransformStream.prototype, {\n readable: { enumerable: true },\n writable: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(TransformStream.prototype, SymbolPolyfill.toStringTag, {\n value: 'TransformStream',\n configurable: true\n });\n}\nfunction InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) {\n function startAlgorithm() {\n return startPromise;\n }\n function writeAlgorithm(chunk) {\n return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n }\n function abortAlgorithm(reason) {\n return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n }\n function closeAlgorithm() {\n return TransformStreamDefaultSinkCloseAlgorithm(stream);\n }\n stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm);\n function pullAlgorithm() {\n return TransformStreamDefaultSourcePullAlgorithm(stream);\n }\n function cancelAlgorithm(reason) {\n TransformStreamErrorWritableAndUnblockWrite(stream, reason);\n return promiseResolvedWith(undefined);\n }\n stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\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 stream._transformStreamController = undefined;\n}\nfunction IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n return x instanceof TransformStream;\n}\n// This is a no-op if both sides are already errored.\nfunction TransformStreamError(stream, e) {\n ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n}\nfunction TransformStreamErrorWritableAndUnblockWrite(stream, e) {\n TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\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}\nfunction TransformStreamSetBackpressure(stream, backpressure) {\n // Passes also when called during construction.\n if (stream._backpressureChangePromise !== undefined) {\n stream._backpressureChangePromise_resolve();\n }\n stream._backpressureChangePromise = newPromise(resolve => {\n stream._backpressureChangePromise_resolve = resolve;\n });\n stream._backpressure = backpressure;\n}\n// Class TransformStreamDefaultController\n/**\n * Allows control of the {@link ReadableStream} and {@link WritableStream} of the associated {@link TransformStream}.\n *\n * @public\n */\nclass TransformStreamDefaultController {\n constructor() {\n throw new TypeError('Illegal constructor');\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() {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n const readableController = this._controlledTransformStream._readable._readableStreamController;\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n }\n enqueue(chunk = undefined) {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n TransformStreamDefaultControllerEnqueue(this, chunk);\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 = undefined) {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('error');\n }\n TransformStreamDefaultControllerError(this, reason);\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() {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('terminate');\n }\n TransformStreamDefaultControllerTerminate(this);\n }\n}\nObject.defineProperties(TransformStreamDefaultController.prototype, {\n enqueue: { enumerable: true },\n error: { enumerable: true },\n terminate: { enumerable: true },\n desiredSize: { enumerable: true }\n});\nif (typeof SymbolPolyfill.toStringTag === 'symbol') {\n Object.defineProperty(TransformStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {\n value: 'TransformStreamDefaultController',\n configurable: true\n });\n}\n// Transform Stream Default Controller Abstract Operations\nfunction IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n return x instanceof TransformStreamDefaultController;\n}\nfunction SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) {\n controller._controlledTransformStream = stream;\n stream._transformStreamController = controller;\n controller._transformAlgorithm = transformAlgorithm;\n controller._flushAlgorithm = flushAlgorithm;\n}\nfunction SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) {\n const controller = Object.create(TransformStreamDefaultController.prototype);\n let transformAlgorithm = (chunk) => {\n try {\n TransformStreamDefaultControllerEnqueue(controller, chunk);\n return promiseResolvedWith(undefined);\n }\n catch (transformResultE) {\n return promiseRejectedWith(transformResultE);\n }\n };\n let flushAlgorithm = () => promiseResolvedWith(undefined);\n if (transformer.transform !== undefined) {\n transformAlgorithm = chunk => transformer.transform(chunk, controller);\n }\n if (transformer.flush !== undefined) {\n flushAlgorithm = () => transformer.flush(controller);\n }\n SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm);\n}\nfunction TransformStreamDefaultControllerClearAlgorithms(controller) {\n controller._transformAlgorithm = undefined;\n controller._flushAlgorithm = undefined;\n}\nfunction TransformStreamDefaultControllerEnqueue(controller, chunk) {\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 // We throttle transform invocations based on the backpressure of the ReadableStream, but we still\n // accept TransformStreamDefaultControllerEnqueue() calls.\n try {\n ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n }\n catch (e) {\n // This happens when readableStrategy.size() throws.\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n throw stream._readable._storedError;\n }\n const backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n if (backpressure !== stream._backpressure) {\n TransformStreamSetBackpressure(stream, true);\n }\n}\nfunction TransformStreamDefaultControllerError(controller, e) {\n TransformStreamError(controller._controlledTransformStream, e);\n}\nfunction TransformStreamDefaultControllerPerformTransform(controller, chunk) {\n const transformPromise = controller._transformAlgorithm(chunk);\n return transformPromiseWith(transformPromise, undefined, r => {\n TransformStreamError(controller._controlledTransformStream, r);\n throw r;\n });\n}\nfunction TransformStreamDefaultControllerTerminate(controller) {\n const stream = controller._controlledTransformStream;\n const readableController = stream._readable._readableStreamController;\n ReadableStreamDefaultControllerClose(readableController);\n const error = new TypeError('TransformStream terminated');\n TransformStreamErrorWritableAndUnblockWrite(stream, error);\n}\n// TransformStreamDefaultSink Algorithms\nfunction TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) {\n const controller = stream._transformStreamController;\n if (stream._backpressure) {\n const backpressureChangePromise = stream._backpressureChangePromise;\n return transformPromiseWith(backpressureChangePromise, () => {\n const writable = stream._writable;\n const state = writable._state;\n if (state === 'erroring') {\n throw writable._storedError;\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n });\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n}\nfunction TransformStreamDefaultSinkAbortAlgorithm(stream, reason) {\n // abort() is not called synchronously, so it is possible for abort() to be called when the stream is already\n // errored.\n TransformStreamError(stream, reason);\n return promiseResolvedWith(undefined);\n}\nfunction TransformStreamDefaultSinkCloseAlgorithm(stream) {\n // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n const readable = stream._readable;\n const controller = stream._transformStreamController;\n const flushPromise = controller._flushAlgorithm();\n TransformStreamDefaultControllerClearAlgorithms(controller);\n // Return a promise that is fulfilled with undefined on success.\n return transformPromiseWith(flushPromise, () => {\n if (readable._state === 'errored') {\n throw readable._storedError;\n }\n ReadableStreamDefaultControllerClose(readable._readableStreamController);\n }, r => {\n TransformStreamError(stream, r);\n throw readable._storedError;\n });\n}\n// TransformStreamDefaultSource Algorithms\nfunction TransformStreamDefaultSourcePullAlgorithm(stream) {\n // Invariant. Enforced by the promises returned by start() and pull().\n TransformStreamSetBackpressure(stream, false);\n // Prevent the next pull() call until there is backpressure.\n return stream._backpressureChangePromise;\n}\n// Helper functions for the TransformStreamDefaultController.\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError(`TransformStreamDefaultController.prototype.${name} can only be used on a TransformStreamDefaultController`);\n}\n// Helper functions for the TransformStream.\nfunction streamBrandCheckException(name) {\n return new TypeError(`TransformStream.prototype.${name} can only be used on a TransformStream`);\n}\n\nexport { ByteLengthQueuingStrategy, CountQueuingStrategy, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, TransformStream, TransformStreamDefaultController, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter };\n//# sourceMappingURL=ponyfill.es6.mjs.map\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","/*! 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",null,null,null,"/**\n * Returns a `Buffer` instance from the given data URI `uri`.\n *\n * @param {String} uri Data URI to turn into a Buffer instance\n * @returns {Buffer} Buffer instance from Data URI\n * @api public\n */\nexport function dataUriToBuffer(uri) {\n if (!/^data:/i.test(uri)) {\n throw new TypeError('`uri` does not appear to be a Data URI (must begin with \"data:\")');\n }\n // strip newlines\n uri = uri.replace(/\\r?\\n/g, '');\n // split the URI up into the \"metadata\" and the \"data\" portions\n const firstComma = uri.indexOf(',');\n if (firstComma === -1 || firstComma <= 4) {\n throw new TypeError('malformed data: URI');\n }\n // remove the \"data:\" scheme and parse the metadata\n const meta = uri.substring(5, firstComma).split(';');\n let charset = '';\n let base64 = false;\n const type = meta[0] || 'text/plain';\n let typeFull = type;\n for (let i = 1; i < meta.length; i++) {\n if (meta[i] === 'base64') {\n base64 = true;\n }\n else {\n typeFull += `;${meta[i]}`;\n if (meta[i].indexOf('charset=') === 0) {\n charset = meta[i].substring(8);\n }\n }\n }\n // defaults to US-ASCII only if type is not provided\n if (!meta[0] && !charset.length) {\n typeFull += ';charset=US-ASCII';\n charset = 'US-ASCII';\n }\n // get the encoded data portion and decode URI-encoded chars\n const encoding = base64 ? 'base64' : 'ascii';\n const data = unescape(uri.substring(firstComma + 1));\n const buffer = Buffer.from(data, encoding);\n // set `.type` and `.typeFull` properties to MIME type\n buffer.type = type;\n buffer.typeFull = typeFull;\n // set the `.charset` property\n buffer.charset = charset;\n return buffer;\n}\nexport default dataUriToBuffer;\n//# sourceMappingURL=index.js.map","/*! 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","export class FetchBaseError extends Error {\n\tconstructor(message, type) {\n\t\tsuper(message);\n\t\t// Hide custom error implementation details from end-users\n\t\tError.captureStackTrace(this, this.constructor);\n\n\t\tthis.type = type;\n\t}\n\n\tget name() {\n\t\treturn this.constructor.name;\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.name;\n\t}\n}\n","\nimport {FetchBaseError} from './base.js';\n\n/**\n * @typedef {{ address?: string, code: string, dest?: string, errno: number, info?: object, message: string, path?: string, port?: number, syscall: string}} SystemError\n*/\n\n/**\n * FetchError interface for operational errors\n */\nexport class FetchError extends FetchBaseError {\n\t/**\n\t * @param {string} message - Error message for human\n\t * @param {string} [type] - Error type for machine\n\t * @param {SystemError} [systemError] - For Node.js system error\n\t */\n\tconstructor(message, type, systemError) {\n\t\tsuper(message, type);\n\t\t// When err.type is `system`, err.erroredSysCall contains system error and err.code contains system error code\n\t\tif (systemError) {\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\tthis.code = this.errno = systemError.code;\n\t\t\tthis.erroredSysCall = systemError.syscall;\n\t\t}\n\t}\n}\n","/**\n * Is.js\n *\n * Object type checks.\n */\n\nconst NAME = Symbol.toStringTag;\n\n/**\n * Check if `obj` is a URLSearchParams object\n * ref: https://github.com/node-fetch/node-fetch/issues/296#issuecomment-307598143\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isURLSearchParameters = object => {\n\treturn (\n\t\ttypeof object === 'object' &&\n\t\ttypeof object.append === 'function' &&\n\t\ttypeof object.delete === 'function' &&\n\t\ttypeof object.get === 'function' &&\n\t\ttypeof object.getAll === 'function' &&\n\t\ttypeof object.has === 'function' &&\n\t\ttypeof object.set === 'function' &&\n\t\ttypeof object.sort === 'function' &&\n\t\tobject[NAME] === 'URLSearchParams'\n\t);\n};\n\n/**\n * Check if `object` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isBlob = object => {\n\treturn (\n\t\tobject &&\n\t\ttypeof object === 'object' &&\n\t\ttypeof object.arrayBuffer === 'function' &&\n\t\ttypeof object.type === 'string' &&\n\t\ttypeof object.stream === 'function' &&\n\t\ttypeof object.constructor === 'function' &&\n\t\t/^(Blob|File)$/.test(object[NAME])\n\t);\n};\n\n/**\n * Check if `obj` is an instance of AbortSignal.\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isAbortSignal = object => {\n\treturn (\n\t\ttypeof object === 'object' && (\n\t\t\tobject[NAME] === 'AbortSignal' ||\n\t\t\tobject[NAME] === 'EventTarget'\n\t\t)\n\t);\n};\n\n/**\n * isDomainOrSubdomain reports whether sub is a subdomain (or exact match) of\n * the parent domain.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nexport const isDomainOrSubdomain = (destination, original) => {\n\tconst orig = new URL(original).hostname;\n\tconst dest = new URL(destination).hostname;\n\n\treturn orig === dest || orig.endsWith(`.${dest}`);\n};\n","\n/**\n * Body.js\n *\n * Body interface provides common methods for Request and Response\n */\n\nimport Stream, {PassThrough} from 'node:stream';\nimport {types, deprecate, promisify} from 'node:util';\nimport {Buffer} from 'node:buffer';\n\nimport Blob from 'fetch-blob';\nimport {FormData, formDataToBlob} from 'formdata-polyfill/esm.min.js';\n\nimport {FetchError} from './errors/fetch-error.js';\nimport {FetchBaseError} from './errors/base.js';\nimport {isBlob, isURLSearchParameters} from './utils/is.js';\n\nconst pipeline = promisify(Stream.pipeline);\nconst INTERNALS = Symbol('Body internals');\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nexport default class Body {\n\tconstructor(body, {\n\t\tsize = 0\n\t} = {}) {\n\t\tlet boundary = null;\n\n\t\tif (body === null) {\n\t\t\t// Body is undefined or null\n\t\t\tbody = null;\n\t\t} else if (isURLSearchParameters(body)) {\n\t\t\t// Body is a URLSearchParams\n\t\t\tbody = Buffer.from(body.toString());\n\t\t} else if (isBlob(body)) {\n\t\t\t// Body is blob\n\t\t} else if (Buffer.isBuffer(body)) {\n\t\t\t// Body is Buffer\n\t\t} else if (types.isAnyArrayBuffer(body)) {\n\t\t\t// Body is ArrayBuffer\n\t\t\tbody = Buffer.from(body);\n\t\t} else if (ArrayBuffer.isView(body)) {\n\t\t\t// Body is ArrayBufferView\n\t\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t\t} else if (body instanceof Stream) {\n\t\t\t// Body is stream\n\t\t} else if (body instanceof FormData) {\n\t\t\t// Body is FormData\n\t\t\tbody = formDataToBlob(body);\n\t\t\tboundary = body.type.split('=')[1];\n\t\t} else {\n\t\t\t// None of the above\n\t\t\t// coerce to string then buffer\n\t\t\tbody = Buffer.from(String(body));\n\t\t}\n\n\t\tlet stream = body;\n\n\t\tif (Buffer.isBuffer(body)) {\n\t\t\tstream = Stream.Readable.from(body);\n\t\t} else if (isBlob(body)) {\n\t\t\tstream = Stream.Readable.from(body.stream());\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\tbody,\n\t\t\tstream,\n\t\t\tboundary,\n\t\t\tdisturbed: false,\n\t\t\terror: null\n\t\t};\n\t\tthis.size = size;\n\n\t\tif (body instanceof Stream) {\n\t\t\tbody.on('error', error_ => {\n\t\t\t\tconst error = error_ instanceof FetchBaseError ?\n\t\t\t\t\terror_ :\n\t\t\t\t\tnew FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`, 'system', error_);\n\t\t\t\tthis[INTERNALS].error = error;\n\t\t\t});\n\t\t}\n\t}\n\n\tget body() {\n\t\treturn this[INTERNALS].stream;\n\t}\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t}\n\n\t/**\n\t * Decode response as ArrayBuffer\n\t *\n\t * @return Promise\n\t */\n\tasync arrayBuffer() {\n\t\tconst {buffer, byteOffset, byteLength} = await consumeBody(this);\n\t\treturn buffer.slice(byteOffset, byteOffset + byteLength);\n\t}\n\n\tasync formData() {\n\t\tconst ct = this.headers.get('content-type');\n\n\t\tif (ct.startsWith('application/x-www-form-urlencoded')) {\n\t\t\tconst formData = new FormData();\n\t\t\tconst parameters = new URLSearchParams(await this.text());\n\n\t\t\tfor (const [name, value] of parameters) {\n\t\t\t\tformData.append(name, value);\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\tconst {toFormData} = await import('./utils/multipart-parser.js');\n\t\treturn toFormData(this.body, ct);\n\t}\n\n\t/**\n\t * Return raw response as Blob\n\t *\n\t * @return Promise\n\t */\n\tasync blob() {\n\t\tconst ct = (this.headers && this.headers.get('content-type')) || (this[INTERNALS].body && this[INTERNALS].body.type) || '';\n\t\tconst buf = await this.arrayBuffer();\n\n\t\treturn new Blob([buf], {\n\t\t\ttype: ct\n\t\t});\n\t}\n\n\t/**\n\t * Decode response as json\n\t *\n\t * @return Promise\n\t */\n\tasync json() {\n\t\tconst buffer = await consumeBody(this);\n\t\treturn JSON.parse(buffer.toString());\n\t}\n\n\t/**\n\t * Decode response as text\n\t *\n\t * @return Promise\n\t */\n\tasync text() {\n\t\tconst buffer = await consumeBody(this);\n\t\treturn buffer.toString();\n\t}\n\n\t/**\n\t * Decode response as buffer (non-spec api)\n\t *\n\t * @return Promise\n\t */\n\tbuffer() {\n\t\treturn consumeBody(this);\n\t}\n}\n\nBody.prototype.buffer = deprecate(Body.prototype.buffer, 'Please use \\'response.arrayBuffer()\\' instead of \\'response.buffer()\\'', 'node-fetch#buffer');\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: {enumerable: true},\n\tbodyUsed: {enumerable: true},\n\tarrayBuffer: {enumerable: true},\n\tblob: {enumerable: true},\n\tjson: {enumerable: true},\n\ttext: {enumerable: true},\n\tdata: {get: deprecate(() => {},\n\t\t'data doesn\\'t exist, use json(), text(), arrayBuffer(), or body instead',\n\t\t'https://github.com/node-fetch/node-fetch/issues/1000 (response)')}\n});\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nasync function consumeBody(data) {\n\tif (data[INTERNALS].disturbed) {\n\t\tthrow new TypeError(`body used already for: ${data.url}`);\n\t}\n\n\tdata[INTERNALS].disturbed = true;\n\n\tif (data[INTERNALS].error) {\n\t\tthrow data[INTERNALS].error;\n\t}\n\n\tconst {body} = data;\n\n\t// Body is null\n\tif (body === null) {\n\t\treturn Buffer.alloc(0);\n\t}\n\n\t/* c8 ignore next 3 */\n\tif (!(body instanceof Stream)) {\n\t\treturn Buffer.alloc(0);\n\t}\n\n\t// Body is stream\n\t// get ready to actually consume the body\n\tconst accum = [];\n\tlet accumBytes = 0;\n\n\ttry {\n\t\tfor await (const chunk of body) {\n\t\t\tif (data.size > 0 && accumBytes + chunk.length > data.size) {\n\t\t\t\tconst error = new FetchError(`content size at ${data.url} over limit: ${data.size}`, 'max-size');\n\t\t\t\tbody.destroy(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t}\n\t} catch (error) {\n\t\tconst error_ = error instanceof FetchBaseError ? error : new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`, 'system', error);\n\t\tthrow error_;\n\t}\n\n\tif (body.readableEnded === true || body._readableState.ended === true) {\n\t\ttry {\n\t\t\tif (accum.every(c => typeof c === 'string')) {\n\t\t\t\treturn Buffer.from(accum.join(''));\n\t\t\t}\n\n\t\t\treturn Buffer.concat(accum, accumBytes);\n\t\t} catch (error) {\n\t\t\tthrow new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`, 'system', error);\n\t\t}\n\t} else {\n\t\tthrow new FetchError(`Premature close of server response while trying to fetch ${data.url}`);\n\t}\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @param String highWaterMark highWaterMark for both PassThrough body streams\n * @return Mixed\n */\nexport const clone = (instance, highWaterMark) => {\n\tlet p1;\n\tlet p2;\n\tlet {body} = instance[INTERNALS];\n\n\t// Don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// Check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif ((body instanceof Stream) && (typeof body.getBoundary !== 'function')) {\n\t\t// Tee instance body\n\t\tp1 = new PassThrough({highWaterMark});\n\t\tp2 = new PassThrough({highWaterMark});\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// Set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].stream = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n};\n\nconst getNonSpecFormDataBoundary = deprecate(\n\tbody => body.getBoundary(),\n\t'form-data doesn\\'t follow the spec and requires special treatment. Use alternative package',\n\t'https://github.com/node-fetch/node-fetch/issues/1167'\n);\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param {any} body Any options.body input\n * @returns {string | null}\n */\nexport const extractContentType = (body, request) => {\n\t// Body is null or undefined\n\tif (body === null) {\n\t\treturn null;\n\t}\n\n\t// Body is string\n\tif (typeof body === 'string') {\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n\n\t// Body is a URLSearchParams\n\tif (isURLSearchParameters(body)) {\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t}\n\n\t// Body is blob\n\tif (isBlob(body)) {\n\t\treturn body.type || null;\n\t}\n\n\t// Body is a Buffer (Buffer, ArrayBuffer or ArrayBufferView)\n\tif (Buffer.isBuffer(body) || types.isAnyArrayBuffer(body) || ArrayBuffer.isView(body)) {\n\t\treturn null;\n\t}\n\n\tif (body instanceof FormData) {\n\t\treturn `multipart/form-data; boundary=${request[INTERNALS].boundary}`;\n\t}\n\n\t// Detect form data input from form-data module\n\tif (body && typeof body.getBoundary === 'function') {\n\t\treturn `multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`;\n\t}\n\n\t// Body is stream - can't really do much about this\n\tif (body instanceof Stream) {\n\t\treturn null;\n\t}\n\n\t// Body constructor defaults other things to string\n\treturn 'text/plain;charset=UTF-8';\n};\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param {any} obj.body Body object from the Body instance.\n * @returns {number | null}\n */\nexport const getTotalBytes = request => {\n\tconst {body} = request[INTERNALS];\n\n\t// Body is null or undefined\n\tif (body === null) {\n\t\treturn 0;\n\t}\n\n\t// Body is Blob\n\tif (isBlob(body)) {\n\t\treturn body.size;\n\t}\n\n\t// Body is Buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn body.length;\n\t}\n\n\t// Detect form data input from form-data module\n\tif (body && typeof body.getLengthSync === 'function') {\n\t\treturn body.hasKnownLength && body.hasKnownLength() ? body.getLengthSync() : null;\n\t}\n\n\t// Body is stream\n\treturn null;\n};\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param {Stream.Writable} dest The stream to write to.\n * @param obj.body Body object from the Body instance.\n * @returns {Promise<void>}\n */\nexport const writeToStream = async (dest, {body}) => {\n\tif (body === null) {\n\t\t// Body is null\n\t\tdest.end();\n\t} else {\n\t\t// Body is stream\n\t\tawait pipeline(body, dest);\n\t}\n};\n","/**\n * Headers.js\n *\n * Headers class offers convenient helpers\n */\n\nimport {types} from 'node:util';\nimport http from 'node:http';\n\n/* c8 ignore next 9 */\nconst validateHeaderName = typeof http.validateHeaderName === 'function' ?\n\thttp.validateHeaderName :\n\tname => {\n\t\tif (!/^[\\^`\\-\\w!#$%&'*+.|~]+$/.test(name)) {\n\t\t\tconst error = new TypeError(`Header name must be a valid HTTP token [${name}]`);\n\t\t\tObject.defineProperty(error, 'code', {value: 'ERR_INVALID_HTTP_TOKEN'});\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/* c8 ignore next 9 */\nconst validateHeaderValue = typeof http.validateHeaderValue === 'function' ?\n\thttp.validateHeaderValue :\n\t(name, value) => {\n\t\tif (/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/.test(value)) {\n\t\t\tconst error = new TypeError(`Invalid character in header content [\"${name}\"]`);\n\t\t\tObject.defineProperty(error, 'code', {value: 'ERR_INVALID_CHAR'});\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/**\n * @typedef {Headers | Record<string, string> | Iterable<readonly [string, string]> | Iterable<Iterable<string>>} HeadersInit\n */\n\n/**\n * This Fetch API interface allows you to perform various actions on HTTP request and response headers.\n * These actions include retrieving, setting, adding to, and removing.\n * A Headers object has an associated header list, which is initially empty and consists of zero or more name and value pairs.\n * You can add to this using methods like append() (see Examples.)\n * In all methods of this interface, header names are matched by case-insensitive byte sequence.\n *\n */\nexport default class Headers extends URLSearchParams {\n\t/**\n\t * Headers class\n\t *\n\t * @constructor\n\t * @param {HeadersInit} [init] - Response headers\n\t */\n\tconstructor(init) {\n\t\t// Validate and normalize init object in [name, value(s)][]\n\t\t/** @type {string[][]} */\n\t\tlet result = [];\n\t\tif (init instanceof Headers) {\n\t\t\tconst raw = init.raw();\n\t\t\tfor (const [name, values] of Object.entries(raw)) {\n\t\t\t\tresult.push(...values.map(value => [name, value]));\n\t\t\t}\n\t\t} else if (init == null) { // eslint-disable-line no-eq-null, eqeqeq\n\t\t\t// No op\n\t\t} else if (typeof init === 'object' && !types.isBoxedPrimitive(init)) {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\t\tif (method == null) {\n\t\t\t\t// Record<ByteString, ByteString>\n\t\t\t\tresult.push(...Object.entries(init));\n\t\t\t} else {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// Sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tresult = [...init]\n\t\t\t\t\t.map(pair => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof pair !== 'object' || types.isBoxedPrimitive(pair)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthrow new TypeError('Each header pair must be an iterable object');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn [...pair];\n\t\t\t\t\t}).map(pair => {\n\t\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn [...pair];\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Failed to construct \\'Headers\\': The provided value is not of type \\'(sequence<sequence<ByteString>> or record<ByteString, ByteString>)');\n\t\t}\n\n\t\t// Validate and lowercase\n\t\tresult =\n\t\t\tresult.length > 0 ?\n\t\t\t\tresult.map(([name, value]) => {\n\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\treturn [String(name).toLowerCase(), String(value)];\n\t\t\t\t}) :\n\t\t\t\tundefined;\n\n\t\tsuper(result);\n\n\t\t// Returning a Proxy that will lowercase key names, validate parameters and sort keys\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn new Proxy(this, {\n\t\t\tget(target, p, receiver) {\n\t\t\t\tswitch (p) {\n\t\t\t\t\tcase 'append':\n\t\t\t\t\tcase 'set':\n\t\t\t\t\t\treturn (name, value) => {\n\t\t\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\t\t\treturn URLSearchParams.prototype[p].call(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tString(name).toLowerCase(),\n\t\t\t\t\t\t\t\tString(value)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\tcase 'has':\n\t\t\t\t\tcase 'getAll':\n\t\t\t\t\t\treturn name => {\n\t\t\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\t\t\treturn URLSearchParams.prototype[p].call(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tString(name).toLowerCase()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase 'keys':\n\t\t\t\t\t\treturn () => {\n\t\t\t\t\t\t\ttarget.sort();\n\t\t\t\t\t\t\treturn new Set(URLSearchParams.prototype.keys.call(target)).keys();\n\t\t\t\t\t\t};\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn Reflect.get(target, p, receiver);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t/* c8 ignore next */\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.name;\n\t}\n\n\ttoString() {\n\t\treturn Object.prototype.toString.call(this);\n\t}\n\n\tget(name) {\n\t\tconst values = this.getAll(name);\n\t\tif (values.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet value = values.join(', ');\n\t\tif (/^content-encoding$/i.test(name)) {\n\t\t\tvalue = value.toLowerCase();\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tforEach(callback, thisArg = undefined) {\n\t\tfor (const name of this.keys()) {\n\t\t\tReflect.apply(callback, thisArg, [this.get(name), name, this]);\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const name of this.keys()) {\n\t\t\tyield this.get(name);\n\t\t}\n\t}\n\n\t/**\n\t * @type {() => IterableIterator<[string, string]>}\n\t */\n\t* entries() {\n\t\tfor (const name of this.keys()) {\n\t\t\tyield [name, this.get(name)];\n\t\t}\n\t}\n\n\t[Symbol.iterator]() {\n\t\treturn this.entries();\n\t}\n\n\t/**\n\t * Node-fetch non-spec method\n\t * returning all headers and their values as array\n\t * @returns {Record<string, string[]>}\n\t */\n\traw() {\n\t\treturn [...this.keys()].reduce((result, key) => {\n\t\t\tresult[key] = this.getAll(key);\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\t/**\n\t * For better console.log(headers) and also to convert Headers into Node.js Request compatible format\n\t */\n\t[Symbol.for('nodejs.util.inspect.custom')]() {\n\t\treturn [...this.keys()].reduce((result, key) => {\n\t\t\tconst values = this.getAll(key);\n\t\t\t// Http.request() only supports string as Host header.\n\t\t\t// This hack makes specifying custom Host header possible.\n\t\t\tif (key === 'host') {\n\t\t\t\tresult[key] = values[0];\n\t\t\t} else {\n\t\t\t\tresult[key] = values.length > 1 ? values : values[0];\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}, {});\n\t}\n}\n\n/**\n * Re-shaping object for Web IDL tests\n * Only need to do it for overridden methods\n */\nObject.defineProperties(\n\tHeaders.prototype,\n\t['get', 'entries', 'forEach', 'values'].reduce((result, property) => {\n\t\tresult[property] = {enumerable: true};\n\t\treturn result;\n\t}, {})\n);\n\n/**\n * Create a Headers object from an http.IncomingMessage.rawHeaders, ignoring those that do\n * not conform to HTTP grammar productions.\n * @param {import('http').IncomingMessage['rawHeaders']} headers\n */\nexport function fromRawHeaders(headers = []) {\n\treturn new Headers(\n\t\theaders\n\t\t\t// Split into pairs\n\t\t\t.reduce((result, value, index, array) => {\n\t\t\t\tif (index % 2 === 0) {\n\t\t\t\t\tresult.push(array.slice(index, index + 2));\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t\t.filter(([name, value]) => {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\treturn true;\n\t\t\t\t} catch {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t})\n\n\t);\n}\n","const redirectStatus = new Set([301, 302, 303, 307, 308]);\n\n/**\n * Redirect code matching\n *\n * @param {number} code - Status code\n * @return {boolean}\n */\nexport const isRedirect = code => {\n\treturn redirectStatus.has(code);\n};\n","/**\n * Response.js\n *\n * Response class provides content decoding\n */\n\nimport Headers from './headers.js';\nimport Body, {clone, extractContentType} from './body.js';\nimport {isRedirect} from './utils/is-redirect.js';\n\nconst INTERNALS = Symbol('Response internals');\n\n/**\n * Response class\n *\n * Ref: https://fetch.spec.whatwg.org/#response-class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nexport default class Response extends Body {\n\tconstructor(body = null, options = {}) {\n\t\tsuper(body, options);\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq, no-negated-condition\n\t\tconst status = options.status != null ? options.status : 200;\n\n\t\tconst headers = new Headers(options.headers);\n\n\t\tif (body !== null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body, this);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\ttype: 'default',\n\t\t\turl: options.url,\n\t\t\tstatus,\n\t\t\tstatusText: options.statusText || '',\n\t\t\theaders,\n\t\t\tcounter: options.counter,\n\t\t\thighWaterMark: options.highWaterMark\n\t\t};\n\t}\n\n\tget type() {\n\t\treturn this[INTERNALS].type;\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS].status;\n\t}\n\n\t/**\n\t * Convenience property representing if the request ended normally\n\t */\n\tget ok() {\n\t\treturn this[INTERNALS].status >= 200 && this[INTERNALS].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS].headers;\n\t}\n\n\tget highWaterMark() {\n\t\treturn this[INTERNALS].highWaterMark;\n\t}\n\n\t/**\n\t * Clone this response\n\t *\n\t * @return Response\n\t */\n\tclone() {\n\t\treturn new Response(clone(this, this.highWaterMark), {\n\t\t\ttype: this.type,\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected,\n\t\t\tsize: this.size,\n\t\t\thighWaterMark: this.highWaterMark\n\t\t});\n\t}\n\n\t/**\n\t * @param {string} url The URL that the new response is to originate from.\n\t * @param {number} status An optional status code for the response (e.g., 302.)\n\t * @returns {Response} A Response object.\n\t */\n\tstatic redirect(url, status = 302) {\n\t\tif (!isRedirect(status)) {\n\t\t\tthrow new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n\t\t}\n\n\t\treturn new Response(null, {\n\t\t\theaders: {\n\t\t\t\tlocation: new URL(url).toString()\n\t\t\t},\n\t\t\tstatus\n\t\t});\n\t}\n\n\tstatic error() {\n\t\tconst response = new Response(null, {status: 0, statusText: ''});\n\t\tresponse[INTERNALS].type = 'error';\n\t\treturn response;\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'Response';\n\t}\n}\n\nObject.defineProperties(Response.prototype, {\n\ttype: {enumerable: true},\n\turl: {enumerable: true},\n\tstatus: {enumerable: true},\n\tok: {enumerable: true},\n\tredirected: {enumerable: true},\n\tstatusText: {enumerable: true},\n\theaders: {enumerable: true},\n\tclone: {enumerable: true}\n});\n","export const getSearch = parsedURL => {\n\tif (parsedURL.search) {\n\t\treturn parsedURL.search;\n\t}\n\n\tconst lastOffset = parsedURL.href.length - 1;\n\tconst hash = parsedURL.hash || (parsedURL.href[lastOffset] === '#' ? '#' : '');\n\treturn parsedURL.href[lastOffset - hash.length] === '?' ? '?' : '';\n};\n","import {isIP} from 'node:net';\n\n/**\n * @external URL\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/URL|URL}\n */\n\n/**\n * @module utils/referrer\n * @private\n */\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#strip-url|Referrer Policy §8.4. Strip url for use as a referrer}\n * @param {string} URL\n * @param {boolean} [originOnly=false]\n */\nexport function stripURLForUseAsAReferrer(url, originOnly = false) {\n\t// 1. If url is null, return no referrer.\n\tif (url == null) { // eslint-disable-line no-eq-null, eqeqeq\n\t\treturn 'no-referrer';\n\t}\n\n\turl = new URL(url);\n\n\t// 2. If url's scheme is a local scheme, then return no referrer.\n\tif (/^(about|blob|data):$/.test(url.protocol)) {\n\t\treturn 'no-referrer';\n\t}\n\n\t// 3. Set url's username to the empty string.\n\turl.username = '';\n\n\t// 4. Set url's password to null.\n\t// Note: `null` appears to be a mistake as this actually results in the password being `\"null\"`.\n\turl.password = '';\n\n\t// 5. Set url's fragment to null.\n\t// Note: `null` appears to be a mistake as this actually results in the fragment being `\"#null\"`.\n\turl.hash = '';\n\n\t// 6. If the origin-only flag is true, then:\n\tif (originOnly) {\n\t\t// 6.1. Set url's path to null.\n\t\t// Note: `null` appears to be a mistake as this actually results in the path being `\"/null\"`.\n\t\turl.pathname = '';\n\n\t\t// 6.2. Set url's query to null.\n\t\t// Note: `null` appears to be a mistake as this actually results in the query being `\"?null\"`.\n\t\turl.search = '';\n\t}\n\n\t// 7. Return url.\n\treturn url;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#enumdef-referrerpolicy|enum ReferrerPolicy}\n */\nexport const ReferrerPolicy = new Set([\n\t'',\n\t'no-referrer',\n\t'no-referrer-when-downgrade',\n\t'same-origin',\n\t'origin',\n\t'strict-origin',\n\t'origin-when-cross-origin',\n\t'strict-origin-when-cross-origin',\n\t'unsafe-url'\n]);\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#default-referrer-policy|default referrer policy}\n */\nexport const DEFAULT_REFERRER_POLICY = 'strict-origin-when-cross-origin';\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#referrer-policies|Referrer Policy §3. Referrer Policies}\n * @param {string} referrerPolicy\n * @returns {string} referrerPolicy\n */\nexport function validateReferrerPolicy(referrerPolicy) {\n\tif (!ReferrerPolicy.has(referrerPolicy)) {\n\t\tthrow new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);\n\t}\n\n\treturn referrerPolicy;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy|Referrer Policy §3.2. Is origin potentially trustworthy?}\n * @param {external:URL} url\n * @returns `true`: \"Potentially Trustworthy\", `false`: \"Not Trustworthy\"\n */\nexport function isOriginPotentiallyTrustworthy(url) {\n\t// 1. If origin is an opaque origin, return \"Not Trustworthy\".\n\t// Not applicable\n\n\t// 2. Assert: origin is a tuple origin.\n\t// Not for implementations\n\n\t// 3. If origin's scheme is either \"https\" or \"wss\", return \"Potentially Trustworthy\".\n\tif (/^(http|ws)s:$/.test(url.protocol)) {\n\t\treturn true;\n\t}\n\n\t// 4. If origin's host component matches one of the CIDR notations 127.0.0.0/8 or ::1/128 [RFC4632], return \"Potentially Trustworthy\".\n\tconst hostIp = url.host.replace(/(^\\[)|(]$)/g, '');\n\tconst hostIPVersion = isIP(hostIp);\n\n\tif (hostIPVersion === 4 && /^127\\./.test(hostIp)) {\n\t\treturn true;\n\t}\n\n\tif (hostIPVersion === 6 && /^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)) {\n\t\treturn true;\n\t}\n\n\t// 5. If origin's host component is \"localhost\" or falls within \".localhost\", and the user agent conforms to the name resolution rules in [let-localhost-be-localhost], return \"Potentially Trustworthy\".\n\t// We are returning FALSE here because we cannot ensure conformance to\n\t// let-localhost-be-loalhost (https://tools.ietf.org/html/draft-west-let-localhost-be-localhost)\n\tif (/^(.+\\.)*localhost$/.test(url.host)) {\n\t\treturn false;\n\t}\n\n\t// 6. If origin's scheme component is file, return \"Potentially Trustworthy\".\n\tif (url.protocol === 'file:') {\n\t\treturn true;\n\t}\n\n\t// 7. If origin's scheme component is one which the user agent considers to be authenticated, return \"Potentially Trustworthy\".\n\t// Not supported\n\n\t// 8. If origin has been configured as a trustworthy origin, return \"Potentially Trustworthy\".\n\t// Not supported\n\n\t// 9. Return \"Not Trustworthy\".\n\treturn false;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-url-trustworthy|Referrer Policy §3.3. Is url potentially trustworthy?}\n * @param {external:URL} url\n * @returns `true`: \"Potentially Trustworthy\", `false`: \"Not Trustworthy\"\n */\nexport function isUrlPotentiallyTrustworthy(url) {\n\t// 1. If url is \"about:blank\" or \"about:srcdoc\", return \"Potentially Trustworthy\".\n\tif (/^about:(blank|srcdoc)$/.test(url)) {\n\t\treturn true;\n\t}\n\n\t// 2. If url's scheme is \"data\", return \"Potentially Trustworthy\".\n\tif (url.protocol === 'data:') {\n\t\treturn true;\n\t}\n\n\t// Note: The origin of blob: and filesystem: URLs is the origin of the context in which they were\n\t// created. Therefore, blobs created in a trustworthy origin will themselves be potentially\n\t// trustworthy.\n\tif (/^(blob|filesystem):$/.test(url.protocol)) {\n\t\treturn true;\n\t}\n\n\t// 3. Return the result of executing §3.2 Is origin potentially trustworthy? on url's origin.\n\treturn isOriginPotentiallyTrustworthy(url);\n}\n\n/**\n * Modifies the referrerURL to enforce any extra security policy considerations.\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7\n * @callback module:utils/referrer~referrerURLCallback\n * @param {external:URL} referrerURL\n * @returns {external:URL} modified referrerURL\n */\n\n/**\n * Modifies the referrerOrigin to enforce any extra security policy considerations.\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7\n * @callback module:utils/referrer~referrerOriginCallback\n * @param {external:URL} referrerOrigin\n * @returns {external:URL} modified referrerOrigin\n */\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}\n * @param {Request} request\n * @param {object} o\n * @param {module:utils/referrer~referrerURLCallback} o.referrerURLCallback\n * @param {module:utils/referrer~referrerOriginCallback} o.referrerOriginCallback\n * @returns {external:URL} Request's referrer\n */\nexport function determineRequestsReferrer(request, {referrerURLCallback, referrerOriginCallback} = {}) {\n\t// There are 2 notes in the specification about invalid pre-conditions. We return null, here, for\n\t// these cases:\n\t// > Note: If request's referrer is \"no-referrer\", Fetch will not call into this algorithm.\n\t// > Note: If request's referrer policy is the empty string, Fetch will not call into this\n\t// > algorithm.\n\tif (request.referrer === 'no-referrer' || request.referrerPolicy === '') {\n\t\treturn null;\n\t}\n\n\t// 1. Let policy be request's associated referrer policy.\n\tconst policy = request.referrerPolicy;\n\n\t// 2. Let environment be request's client.\n\t// not applicable to node.js\n\n\t// 3. Switch on request's referrer:\n\tif (request.referrer === 'about:client') {\n\t\treturn 'no-referrer';\n\t}\n\n\t// \"a URL\": Let referrerSource be request's referrer.\n\tconst referrerSource = request.referrer;\n\n\t// 4. Let request's referrerURL be the result of stripping referrerSource for use as a referrer.\n\tlet referrerURL = stripURLForUseAsAReferrer(referrerSource);\n\n\t// 5. Let referrerOrigin be the result of stripping referrerSource for use as a referrer, with the\n\t// origin-only flag set to true.\n\tlet referrerOrigin = stripURLForUseAsAReferrer(referrerSource, true);\n\n\t// 6. If the result of serializing referrerURL is a string whose length is greater than 4096, set\n\t// referrerURL to referrerOrigin.\n\tif (referrerURL.toString().length > 4096) {\n\t\treferrerURL = referrerOrigin;\n\t}\n\n\t// 7. The user agent MAY alter referrerURL or referrerOrigin at this point to enforce arbitrary\n\t// policy considerations in the interests of minimizing data leakage. For example, the user\n\t// agent could strip the URL down to an origin, modify its host, replace it with an empty\n\t// string, etc.\n\tif (referrerURLCallback) {\n\t\treferrerURL = referrerURLCallback(referrerURL);\n\t}\n\n\tif (referrerOriginCallback) {\n\t\treferrerOrigin = referrerOriginCallback(referrerOrigin);\n\t}\n\n\t// 8.Execute the statements corresponding to the value of policy:\n\tconst currentURL = new URL(request.url);\n\n\tswitch (policy) {\n\t\tcase 'no-referrer':\n\t\t\treturn 'no-referrer';\n\n\t\tcase 'origin':\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'unsafe-url':\n\t\t\treturn referrerURL;\n\n\t\tcase 'strict-origin':\n\t\t\t// 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 2. Return referrerOrigin.\n\t\t\treturn referrerOrigin.toString();\n\n\t\tcase 'strict-origin-when-cross-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// 2. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 3. Return referrerOrigin.\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'same-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// 2. Return no referrer.\n\t\t\treturn 'no-referrer';\n\n\t\tcase 'origin-when-cross-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// Return referrerOrigin.\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'no-referrer-when-downgrade':\n\t\t\t// 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 2. Return referrerURL.\n\t\t\treturn referrerURL;\n\n\t\tdefault:\n\t\t\tthrow new TypeError(`Invalid referrerPolicy: ${policy}`);\n\t}\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#parse-referrer-policy-from-header|Referrer Policy §8.1. Parse a referrer policy from a Referrer-Policy header}\n * @param {Headers} headers Response headers\n * @returns {string} policy\n */\nexport function parseReferrerPolicyFromHeader(headers) {\n\t// 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy`\n\t// and response’s header list.\n\tconst policyTokens = (headers.get('referrer-policy') || '').split(/[,\\s]+/);\n\n\t// 2. Let policy be the empty string.\n\tlet policy = '';\n\n\t// 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty\n\t// string, then set policy to token.\n\t// Note: This algorithm loops over multiple policy values to allow deployment of new policy\n\t// values with fallbacks for older user agents, as described in § 11.1 Unknown Policy Values.\n\tfor (const token of policyTokens) {\n\t\tif (token && ReferrerPolicy.has(token)) {\n\t\t\tpolicy = token;\n\t\t}\n\t}\n\n\t// 4. Return policy.\n\treturn policy;\n}\n","/**\n * Request.js\n *\n * Request class contains server only options\n *\n * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.\n */\n\nimport {format as formatUrl} from 'node:url';\nimport {deprecate} from 'node:util';\nimport Headers from './headers.js';\nimport Body, {clone, extractContentType, getTotalBytes} from './body.js';\nimport {isAbortSignal} from './utils/is.js';\nimport {getSearch} from './utils/get-search.js';\nimport {\n\tvalidateReferrerPolicy, determineRequestsReferrer, DEFAULT_REFERRER_POLICY\n} from './utils/referrer.js';\n\nconst INTERNALS = Symbol('Request internals');\n\n/**\n * Check if `obj` is an instance of Request.\n *\n * @param {*} object\n * @return {boolean}\n */\nconst isRequest = object => {\n\treturn (\n\t\ttypeof object === 'object' &&\n\t\ttypeof object[INTERNALS] === 'object'\n\t);\n};\n\nconst doBadDataWarn = deprecate(() => {},\n\t'.data is not a valid RequestInit property, use .body instead',\n\t'https://github.com/node-fetch/node-fetch/issues/1000 (request)');\n\n/**\n * Request class\n *\n * Ref: https://fetch.spec.whatwg.org/#request-class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nexport default class Request extends Body {\n\tconstructor(input, init = {}) {\n\t\tlet parsedURL;\n\n\t\t// Normalize input and force URL to be encoded as UTF-8 (https://github.com/node-fetch/node-fetch/issues/245)\n\t\tif (isRequest(input)) {\n\t\t\tparsedURL = new URL(input.url);\n\t\t} else {\n\t\t\tparsedURL = new URL(input);\n\t\t\tinput = {};\n\t\t}\n\n\t\tif (parsedURL.username !== '' || parsedURL.password !== '') {\n\t\t\tthrow new TypeError(`${parsedURL} is an url with embedded credentials.`);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ('data' in init) {\n\t\t\tdoBadDataWarn();\n\t\t}\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tif ((init.body != null || (isRequest(input) && input.body !== null)) &&\n\t\t\t(method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tconst inputBody = init.body ?\n\t\t\tinit.body :\n\t\t\t(isRequest(input) && input.body !== null ?\n\t\t\t\tclone(input) :\n\t\t\t\tnull);\n\n\t\tsuper(inputBody, {\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody !== null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody, this);\n\t\t\tif (contentType) {\n\t\t\t\theaders.set('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ?\n\t\t\tinput.signal :\n\t\t\tnull;\n\t\tif ('signal' in init) {\n\t\t\tsignal = init.signal;\n\t\t}\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal or EventTarget');\n\t\t}\n\n\t\t// §5.4, Request constructor steps, step 15.1\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tlet referrer = init.referrer == null ? input.referrer : init.referrer;\n\t\tif (referrer === '') {\n\t\t\t// §5.4, Request constructor steps, step 15.2\n\t\t\treferrer = 'no-referrer';\n\t\t} else if (referrer) {\n\t\t\t// §5.4, Request constructor steps, step 15.3.1, 15.3.2\n\t\t\tconst parsedReferrer = new URL(referrer);\n\t\t\t// §5.4, Request constructor steps, step 15.3.3, 15.3.4\n\t\t\treferrer = /^about:(\\/\\/)?client$/.test(parsedReferrer) ? 'client' : parsedReferrer;\n\t\t} else {\n\t\t\treferrer = undefined;\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal,\n\t\t\treferrer\n\t\t};\n\n\t\t// Node-fetch-only options\n\t\tthis.follow = init.follow === undefined ? (input.follow === undefined ? 20 : input.follow) : init.follow;\n\t\tthis.compress = init.compress === undefined ? (input.compress === undefined ? true : input.compress) : init.compress;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t\tthis.highWaterMark = init.highWaterMark || input.highWaterMark || 16384;\n\t\tthis.insecureHTTPParser = init.insecureHTTPParser || input.insecureHTTPParser || false;\n\n\t\t// §5.4, Request constructor steps, step 16.\n\t\t// Default is empty string per https://fetch.spec.whatwg.org/#concept-request-referrer-policy\n\t\tthis.referrerPolicy = init.referrerPolicy || input.referrerPolicy || '';\n\t}\n\n\t/** @returns {string} */\n\tget method() {\n\t\treturn this[INTERNALS].method;\n\t}\n\n\t/** @returns {string} */\n\tget url() {\n\t\treturn formatUrl(this[INTERNALS].parsedURL);\n\t}\n\n\t/** @returns {Headers} */\n\tget headers() {\n\t\treturn this[INTERNALS].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS].redirect;\n\t}\n\n\t/** @returns {AbortSignal} */\n\tget signal() {\n\t\treturn this[INTERNALS].signal;\n\t}\n\n\t// https://fetch.spec.whatwg.org/#dom-request-referrer\n\tget referrer() {\n\t\tif (this[INTERNALS].referrer === 'no-referrer') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (this[INTERNALS].referrer === 'client') {\n\t\t\treturn 'about:client';\n\t\t}\n\n\t\tif (this[INTERNALS].referrer) {\n\t\t\treturn this[INTERNALS].referrer.toString();\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tget referrerPolicy() {\n\t\treturn this[INTERNALS].referrerPolicy;\n\t}\n\n\tset referrerPolicy(referrerPolicy) {\n\t\tthis[INTERNALS].referrerPolicy = validateReferrerPolicy(referrerPolicy);\n\t}\n\n\t/**\n\t * Clone this request\n\t *\n\t * @return Request\n\t */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'Request';\n\t}\n}\n\nObject.defineProperties(Request.prototype, {\n\tmethod: {enumerable: true},\n\turl: {enumerable: true},\n\theaders: {enumerable: true},\n\tredirect: {enumerable: true},\n\tclone: {enumerable: true},\n\tsignal: {enumerable: true},\n\treferrer: {enumerable: true},\n\treferrerPolicy: {enumerable: true}\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param {Request} request - A Request instance\n * @return The options object to be passed to http.request\n */\nexport const getNodeRequestOptions = request => {\n\tconst {parsedURL} = request[INTERNALS];\n\tconst headers = new Headers(request[INTERNALS].headers);\n\n\t// Fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body === null && /^(post|put)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\n\tif (request.body !== null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\t// Set Content-Length if totalBytes is a number (that is not NaN)\n\t\tif (typeof totalBytes === 'number' && !Number.isNaN(totalBytes)) {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// 4.1. Main fetch, step 2.6\n\t// > If request's referrer policy is the empty string, then set request's referrer policy to the\n\t// > default referrer policy.\n\tif (request.referrerPolicy === '') {\n\t\trequest.referrerPolicy = DEFAULT_REFERRER_POLICY;\n\t}\n\n\t// 4.1. Main fetch, step 2.7\n\t// > If request's referrer is not \"no-referrer\", set request's referrer to the result of invoking\n\t// > determine request's referrer.\n\tif (request.referrer && request.referrer !== 'no-referrer') {\n\t\trequest[INTERNALS].referrer = determineRequestsReferrer(request);\n\t} else {\n\t\trequest[INTERNALS].referrer = 'no-referrer';\n\t}\n\n\t// 4.5. HTTP-network-or-cache fetch, step 6.9\n\t// > If httpRequest's referrer is a URL, then append `Referer`/httpRequest's referrer, serialized\n\t// > and isomorphic encoded, to httpRequest's header list.\n\tif (request[INTERNALS].referrer instanceof URL) {\n\t\theaders.set('Referer', request.referrer);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate,br');\n\t}\n\n\tlet {agent} = request;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\tconst search = getSearch(parsedURL);\n\n\t// Pass the full URL directly to request(), but overwrite the following\n\t// options:\n\tconst options = {\n\t\t// Overwrite search to retain trailing ? (issue #776)\n\t\tpath: parsedURL.pathname + search,\n\t\t// The following options are not expressed in the URL\n\t\tmethod: request.method,\n\t\theaders: headers[Symbol.for('nodejs.util.inspect.custom')](),\n\t\tinsecureHTTPParser: request.insecureHTTPParser,\n\t\tagent\n\t};\n\n\treturn {\n\t\t/** @type {URL} */\n\t\tparsedURL,\n\t\toptions\n\t};\n};\n","import {FetchBaseError} from './base.js';\n\n/**\n * AbortError interface for cancelled requests\n */\nexport class AbortError extends FetchBaseError {\n\tconstructor(message, type = 'aborted') {\n\t\tsuper(message, type);\n\t}\n}\n","/**\n * Index.js\n *\n * a request API compatible with window.fetch\n *\n * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.\n */\n\nimport http from 'node:http';\nimport https from 'node:https';\nimport zlib from 'node:zlib';\nimport Stream, {PassThrough, pipeline as pump} from 'node:stream';\nimport {Buffer} from 'node:buffer';\n\nimport dataUriToBuffer from 'data-uri-to-buffer';\n\nimport {writeToStream, clone} from './body.js';\nimport Response from './response.js';\nimport Headers, {fromRawHeaders} from './headers.js';\nimport Request, {getNodeRequestOptions} from './request.js';\nimport {FetchError} from './errors/fetch-error.js';\nimport {AbortError} from './errors/abort-error.js';\nimport {isRedirect} from './utils/is-redirect.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\nimport {isDomainOrSubdomain} from './utils/is.js';\nimport {parseReferrerPolicyFromHeader} from './utils/referrer.js';\nimport {\n\tBlob,\n\tFile,\n\tfileFromSync,\n\tfileFrom,\n\tblobFromSync,\n\tblobFrom\n} from 'fetch-blob/from.js';\n\nexport {FormData, Headers, Request, Response, FetchError, AbortError, isRedirect};\nexport {Blob, File, fileFromSync, fileFrom, blobFromSync, blobFrom};\n\nconst supportedSchemas = new Set(['data:', 'http:', 'https:']);\n\n/**\n * Fetch function\n *\n * @param {string | URL | import('./request').default} url - Absolute url or Request instance\n * @param {*} [options_] - Fetch options\n * @return {Promise<import('./response').default>}\n */\nexport default async function fetch(url, options_) {\n\treturn new Promise((resolve, reject) => {\n\t\t// Build request object\n\t\tconst request = new Request(url, options_);\n\t\tconst {parsedURL, options} = getNodeRequestOptions(request);\n\t\tif (!supportedSchemas.has(parsedURL.protocol)) {\n\t\t\tthrow new TypeError(`node-fetch cannot load ${url}. URL scheme \"${parsedURL.protocol.replace(/:$/, '')}\" is not supported.`);\n\t\t}\n\n\t\tif (parsedURL.protocol === 'data:') {\n\t\t\tconst data = dataUriToBuffer(request.url);\n\t\t\tconst response = new Response(data, {headers: {'Content-Type': data.typeFull}});\n\t\t\tresolve(response);\n\t\t\treturn;\n\t\t}\n\n\t\t// Wrap http.request into fetch\n\t\tconst send = (parsedURL.protocol === 'https:' ? https : http).request;\n\t\tconst {signal} = request;\n\t\tlet response = null;\n\n\t\tconst abort = () => {\n\t\t\tconst error = new AbortError('The operation was aborted.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\n\t\t\tif (!response || !response.body) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = () => {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// Send request\n\t\tconst request_ = send(parsedURL.toString(), options);\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tconst finalize = () => {\n\t\t\trequest_.abort();\n\t\t\tif (signal) {\n\t\t\t\tsignal.removeEventListener('abort', abortAndFinalize);\n\t\t\t}\n\t\t};\n\n\t\trequest_.on('error', error => {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`, 'system', error));\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(request_, error => {\n\t\t\tresponse.body.destroy(error);\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (process.version < 'v14') {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\trequest_.on('socket', s => {\n\t\t\t\tlet endedWithEventsCount;\n\t\t\t\ts.prependListener('end', () => {\n\t\t\t\t\tendedWithEventsCount = s._eventsCount;\n\t\t\t\t});\n\t\t\t\ts.prependListener('close', hadError => {\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && endedWithEventsCount < s._eventsCount && !hadError) {\n\t\t\t\t\t\tconst error = new Error('Premature close');\n\t\t\t\t\t\terror.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\trequest_.on('response', response_ => {\n\t\t\trequest_.setTimeout(0);\n\t\t\tconst headers = fromRawHeaders(response_.rawHeaders);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (isRedirect(response_.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL(location, request.url);\n\t\t\t\t} catch {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// Nothing to do\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow': {\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOptions = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: clone(request),\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\tsize: request.size,\n\t\t\t\t\t\t\treferrer: request.referrer,\n\t\t\t\t\t\t\treferrerPolicy: request.referrerPolicy\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// when forwarding sensitive headers like \"Authorization\",\n\t\t\t\t\t\t// \"WWW-Authenticate\", and \"Cookie\" to untrusted targets,\n\t\t\t\t\t\t// headers will be ignored when following a redirect to a domain\n\t\t\t\t\t\t// that is not a subdomain match or exact match of the initial domain.\n\t\t\t\t\t\t// For example, a redirect from \"foo.com\" to either \"foo.com\" or \"sub.foo.com\"\n\t\t\t\t\t\t// will forward the sensitive headers, but a redirect to \"bar.com\" will not.\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOptions.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (response_.statusCode !== 303 && request.body && options_.body instanceof Stream.Readable) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (response_.statusCode === 303 || ((response_.statusCode === 301 || response_.statusCode === 302) && request.method === 'POST')) {\n\t\t\t\t\t\t\trequestOptions.method = 'GET';\n\t\t\t\t\t\t\trequestOptions.body = undefined;\n\t\t\t\t\t\t\trequestOptions.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 14\n\t\t\t\t\t\tconst responseReferrerPolicy = parseReferrerPolicyFromHeader(headers);\n\t\t\t\t\t\tif (responseReferrerPolicy) {\n\t\t\t\t\t\t\trequestOptions.referrerPolicy = responseReferrerPolicy;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOptions)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Prepare response\n\t\t\tif (signal) {\n\t\t\t\tresponse_.once('end', () => {\n\t\t\t\t\tsignal.removeEventListener('abort', abortAndFinalize);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet body = pump(response_, new PassThrough(), error => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// see https://github.com/nodejs/node/pull/29376\n\t\t\t/* c8 ignore next 3 */\n\t\t\tif (process.version < 'v12.10') {\n\t\t\t\tresponse_.on('aborted', abortAndFinalize);\n\t\t\t}\n\n\t\t\tconst responseOptions = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: response_.statusCode,\n\t\t\t\tstatusText: response_.statusMessage,\n\t\t\t\theaders,\n\t\t\t\tsize: request.size,\n\t\t\t\tcounter: request.counter,\n\t\t\t\thighWaterMark: request.highWaterMark\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || response_.statusCode === 204 || response_.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// For gzip\n\t\t\tif (codings === 'gzip' || codings === 'x-gzip') {\n\t\t\t\tbody = pump(body, zlib.createGunzip(zlibOptions), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For deflate\n\t\t\tif (codings === 'deflate' || codings === 'x-deflate') {\n\t\t\t\t// Handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = pump(response_, new PassThrough(), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\traw.once('data', chunk => {\n\t\t\t\t\t// See http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = pump(body, zlib.createInflate(), error => {\n\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = pump(body, zlib.createInflateRaw(), error => {\n\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.once('end', () => {\n\t\t\t\t\t// Some old IIS servers return zero-length OK deflate responses, so\n\t\t\t\t\t// 'data' is never emitted. See https://github.com/node-fetch/node-fetch/pull/903\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For br\n\t\t\tif (codings === 'br') {\n\t\t\t\tbody = pump(body, zlib.createBrotliDecompress(), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise, use response as-is\n\t\t\tresponse = new Response(body, responseOptions);\n\t\t\tresolve(response);\n\t\t});\n\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\twriteToStream(request_, request).catch(reject);\n\t});\n}\n\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tconst LAST_CHUNK = Buffer.from('0\\r\\n\\r\\n');\n\n\tlet isChunkedTransfer = false;\n\tlet properLastChunkReceived = false;\n\tlet previousChunk;\n\n\trequest.on('response', response => {\n\t\tconst {headers} = response;\n\t\tisChunkedTransfer = headers['transfer-encoding'] === 'chunked' && !headers['content-length'];\n\t});\n\n\trequest.on('socket', socket => {\n\t\tconst onSocketClose = () => {\n\t\t\tif (isChunkedTransfer && !properLastChunkReceived) {\n\t\t\t\tconst error = new Error('Premature close');\n\t\t\t\terror.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\terrorCallback(error);\n\t\t\t}\n\t\t};\n\n\t\tsocket.prependListener('close', onSocketClose);\n\n\t\trequest.on('abort', () => {\n\t\t\tsocket.removeListener('close', onSocketClose);\n\t\t});\n\n\t\tsocket.on('data', buf => {\n\t\t\tproperLastChunkReceived = Buffer.compare(buf.slice(-5), LAST_CHUNK) === 0;\n\n\t\t\t// Sometimes final 0-length chunk and end of message code are in separate packets\n\t\t\tif (!properLastChunkReceived && previousChunk) {\n\t\t\t\tproperLastChunkReceived = (\n\t\t\t\t\tBuffer.compare(previousChunk.slice(-3), LAST_CHUNK.slice(0, 3)) === 0 &&\n\t\t\t\t\tBuffer.compare(buf.slice(-2), LAST_CHUNK.slice(3)) === 0\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tpreviousChunk = buf;\n\t\t});\n\t});\n}\n",null,"function u(u,D){for(var t=0;t<D.length;t++){var F=D[t];F.enumerable=F.enumerable||!1,F.configurable=!0,\"value\"in F&&(F.writable=!0),Object.defineProperty(u,F.key,F)}}function D(D,t,F){return t&&u(D.prototype,t),F&&u(D,F),D}function t(u,D){(null==D||D>u.length)&&(D=u.length);for(var t=0,F=new Array(D);t<D;t++)F[t]=u[t];return F}function F(u,D){var F=\"undefined\"!=typeof Symbol&&u[Symbol.iterator]||u[\"@@iterator\"];if(F)return(F=F.call(u)).next.bind(F);if(Array.isArray(u)||(F=function(u,D){if(u){if(\"string\"==typeof u)return t(u,D);var F=Object.prototype.toString.call(u).slice(8,-1);return\"Object\"===F&&u.constructor&&(F=u.constructor.name),\"Map\"===F||\"Set\"===F?Array.from(u):\"Arguments\"===F||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F)?t(u,D):void 0}}(u))||D&&u&&\"number\"==typeof u.length){F&&(u=F);var e=0;return function(){return e>=u.length?{done:!0}:{done:!1,value:u[e++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var e=/(?:[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDEC0-\\uDEEB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/,C=/(?:[\\$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u08D3-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1ABF\\u1AC0\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA827\\uA82C\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDD30-\\uDD39\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF50\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCE9\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]|\\uDB40[\\uDD00-\\uDDEF])/;function A(u,D){return(D?/^[\\x00-\\xFF]*$/:/^[\\x00-\\x7F]*$/).test(u)}function E(u,D){void 0===D&&(D=!1);for(var t=[],F=0;F<u.length;){var E=u[F],n=function(e){if(!D)throw new TypeError(e);t.push({type:\"INVALID_CHAR\",index:F,value:u[F++]})};if(\"*\"!==E)if(\"+\"!==E&&\"?\"!==E)if(\"\\\\\"!==E)if(\"{\"!==E)if(\"}\"!==E)if(\":\"!==E)if(\"(\"!==E)t.push({type:\"CHAR\",index:F,value:u[F++]});else{var r=1,i=\"\",s=F+1,a=!1;if(\"?\"===u[s]){n('Pattern cannot start with \"?\" at '+s);continue}for(;s<u.length;){if(!A(u[s],!1)){n(\"Invalid character '\"+u[s]+\"' at \"+s+\".\"),a=!0;break}if(\"\\\\\"!==u[s]){if(\")\"===u[s]){if(0==--r){s++;break}}else if(\"(\"===u[s]&&(r++,\"?\"!==u[s+1])){n(\"Capturing groups are not allowed at \"+s),a=!0;break}i+=u[s++]}else i+=u[s++]+u[s++]}if(a)continue;if(r){n(\"Unbalanced pattern at \"+F);continue}if(!i){n(\"Missing pattern at \"+F);continue}t.push({type:\"PATTERN\",index:F,value:i}),F=s}else{for(var B=\"\",o=F+1;o<u.length;){var h=u.substr(o,1);if(!(o===F+1&&e.test(h)||o!==F+1&&C.test(h)))break;B+=u[o++]}if(!B){n(\"Missing parameter name at \"+F);continue}t.push({type:\"NAME\",index:F,value:B}),F=o}else t.push({type:\"CLOSE\",index:F,value:u[F++]});else t.push({type:\"OPEN\",index:F,value:u[F++]});else t.push({type:\"ESCAPED_CHAR\",index:F++,value:u[F++]});else t.push({type:\"MODIFIER\",index:F,value:u[F++]});else t.push({type:\"ASTERISK\",index:F,value:u[F++]})}return t.push({type:\"END\",index:F,value:\"\"}),t}function n(u,D){void 0===D&&(D={});for(var t=E(u),F=D.prefixes,e=void 0===F?\"./\":F,C=\"[^\"+r(D.delimiter||\"/#?\")+\"]+?\",A=[],n=0,i=0,s=\"\",a=new Set,B=function(u){if(i<t.length&&t[i].type===u)return t[i++].value},o=function(){return B(\"MODIFIER\")||B(\"ASTERISK\")},h=function(u){var D=B(u);if(void 0!==D)return D;var F=t[i];throw new TypeError(\"Unexpected \"+F.type+\" at \"+F.index+\", expected \"+u)},p=function(){for(var u,D=\"\";u=B(\"CHAR\")||B(\"ESCAPED_CHAR\");)D+=u;return D},c=D.encodePart||function(u){return u};i<t.length;){var f=B(\"CHAR\"),l=B(\"NAME\"),m=B(\"PATTERN\");if(l||m||!B(\"ASTERISK\")||(m=\".*\"),l||m){var d=f||\"\";-1===e.indexOf(d)&&(s+=d,d=\"\"),s&&(A.push(c(s)),s=\"\");var g=l||n++;if(a.has(g))throw new TypeError(\"Duplicate name '\"+g+\"'.\");a.add(g),A.push({name:g,prefix:c(d),suffix:\"\",pattern:m||C,modifier:o()||\"\"})}else{var x=f||B(\"ESCAPED_CHAR\");if(x)s+=x;else if(B(\"OPEN\")){var S=p(),v=B(\"NAME\")||\"\",y=B(\"PATTERN\")||\"\";v||y||!B(\"ASTERISK\")||(y=\".*\");var R=p();h(\"CLOSE\");var k=o()||\"\";if(!v&&!y&&!k){s+=S;continue}if(!v&&!y&&!S)continue;s&&(A.push(c(s)),s=\"\"),A.push({name:v||(y?n++:\"\"),pattern:v&&!y?C:y,prefix:c(S),suffix:c(R),modifier:k})}else s&&(A.push(c(s)),s=\"\"),h(\"END\")}}return A}function r(u){return u.replace(/([.+*?^${}()[\\]|/\\\\])/g,\"\\\\$1\")}function i(u){return u&&u.sensitive?\"u\":\"ui\"}function s(u,D,t){void 0===t&&(t={});for(var e,C=t.strict,A=void 0!==C&&C,E=t.start,n=void 0===E||E,s=t.end,a=void 0===s||s,B=t.encode,o=void 0===B?function(u){return u}:B,h=\"[\"+r(t.endsWith||\"\")+\"]|$\",p=\"[\"+r(t.delimiter||\"/#?\")+\"]\",c=n?\"^\":\"\",f=F(u);!(e=f()).done;){var l=e.value;if(\"string\"==typeof l)c+=r(o(l));else{var m=r(o(l.prefix)),d=r(o(l.suffix));l.pattern?(D&&D.push(l),c+=m||d?\"+\"===l.modifier||\"*\"===l.modifier?\"(?:\"+m+\"((?:\"+l.pattern+\")(?:\"+d+m+\"(?:\"+l.pattern+\"))*)\"+d+\")\"+(\"*\"===l.modifier?\"?\":\"\"):\"(?:\"+m+\"(\"+l.pattern+\")\"+d+\")\"+l.modifier:\"+\"===l.modifier||\"*\"===l.modifier?\"((?:\"+l.pattern+\")\"+l.modifier+\")\":\"(\"+l.pattern+\")\"+l.modifier):c+=\"(?:\"+m+d+\")\"+l.modifier}}if(a)A||(c+=p+\"?\"),c+=t.endsWith?\"(?=\"+h+\")\":\"$\";else{var g=u[u.length-1],x=\"string\"==typeof g?p.indexOf(g[g.length-1])>-1:void 0===g;A||(c+=\"(?:\"+p+\"(?=\"+h+\"))?\"),x||(c+=\"(?=\"+p+\"|\"+h+\")\")}return new RegExp(c,i(t))}function a(u,D,t){return u instanceof RegExp?function(u,D){if(!D)return u;for(var t=/\\((?:\\?<(.*?)>)?(?!\\?)/g,F=0,e=t.exec(u.source);e;)D.push({name:e[1]||F++,prefix:\"\",suffix:\"\",modifier:\"\",pattern:\"\"}),e=t.exec(u.source);return u}(u,D):Array.isArray(u)?function(u,D,t){var F=u.map(function(u){return a(u,D,t).source});return new RegExp(\"(?:\"+F.join(\"|\")+\")\",i(t))}(u,D,t):function(u,D,t){return s(n(u,t),D,t)}(u,D,t)}var B={delimiter:\"\",prefixes:\"\",sensitive:!0,strict:!0},o={delimiter:\".\",prefixes:\"\",sensitive:!0,strict:!0},h={delimiter:\"/\",prefixes:\"/\",sensitive:!0,strict:!0};function p(u,D){return u.startsWith(D)?u.substring(D.length,u.length):u}function c(u){return!(!u||u.length<2||\"[\"!==u[0]&&(\"\\\\\"!==u[0]&&\"{\"!==u[0]||\"[\"!==u[1]))}var f,l=[\"ftp\",\"file\",\"http\",\"https\",\"ws\",\"wss\"];function m(u){if(!u)return!0;for(var D,t=F(l);!(D=t()).done;)if(u.test(D.value))return!0;return!1}function d(u){switch(u){case\"ws\":case\"http\":return\"80\";case\"wws\":case\"https\":return\"443\";case\"ftp\":return\"21\";default:return\"\"}}function g(u){if(\"\"===u)return u;if(/^[-+.A-Za-z0-9]*$/.test(u))return u.toLowerCase();throw new TypeError(\"Invalid protocol '\"+u+\"'.\")}function x(u){if(\"\"===u)return u;var D=new URL(\"https://example.com\");return D.username=u,D.username}function S(u){if(\"\"===u)return u;var D=new URL(\"https://example.com\");return D.password=u,D.password}function v(u){if(\"\"===u)return u;if(/[\\t\\n\\r #%/:<>?@[\\]^\\\\|]/g.test(u))throw new TypeError(\"Invalid hostname '\"+u+\"'\");var D=new URL(\"https://example.com\");return D.hostname=u,D.hostname}function y(u){if(\"\"===u)return u;if(/[^0-9a-fA-F[\\]:]/g.test(u))throw new TypeError(\"Invalid IPv6 hostname '\"+u+\"'\");return u.toLowerCase()}function R(u){if(\"\"===u)return u;if(/^[0-9]*$/.test(u)&&parseInt(u)<=65535)return u;throw new TypeError(\"Invalid port '\"+u+\"'.\")}function k(u){if(\"\"===u)return u;var D=new URL(\"https://example.com\");return D.pathname=\"/\"!==u[0]?\"/-\"+u:u,\"/\"!==u[0]?D.pathname.substring(2,D.pathname.length):D.pathname}function w(u){return\"\"===u?u:new URL(\"data:\"+u).pathname}function P(u){if(\"\"===u)return u;var D=new URL(\"https://example.com\");return D.search=u,D.search.substring(1,D.search.length)}function T(u){if(\"\"===u)return u;var D=new URL(\"https://example.com\");return D.hash=u,D.hash.substring(1,D.hash.length)}!function(u){u[u.INIT=0]=\"INIT\",u[u.PROTOCOL=1]=\"PROTOCOL\",u[u.AUTHORITY=2]=\"AUTHORITY\",u[u.USERNAME=3]=\"USERNAME\",u[u.PASSWORD=4]=\"PASSWORD\",u[u.HOSTNAME=5]=\"HOSTNAME\",u[u.PORT=6]=\"PORT\",u[u.PATHNAME=7]=\"PATHNAME\",u[u.SEARCH=8]=\"SEARCH\",u[u.HASH=9]=\"HASH\",u[u.DONE=10]=\"DONE\"}(f||(f={}));var b=function(){function u(u){this.input=void 0,this.tokenList=[],this.internalResult={},this.tokenIndex=0,this.tokenIncrement=1,this.componentStart=0,this.state=f.INIT,this.groupDepth=0,this.hostnameIPv6BracketDepth=0,this.shouldTreatAsStandardURL=!1,this.input=u}var t=u.prototype;return t.parse=function(){for(this.tokenList=E(this.input,!0);this.tokenIndex<this.tokenList.length;this.tokenIndex+=this.tokenIncrement){if(this.tokenIncrement=1,\"END\"===this.tokenList[this.tokenIndex].type){if(this.state===f.INIT){this.rewind(),this.isHashPrefix()?this.changeState(f.HASH,1):this.isSearchPrefix()?(this.changeState(f.SEARCH,1),this.internalResult.hash=\"\"):(this.changeState(f.PATHNAME,0),this.internalResult.search=\"\",this.internalResult.hash=\"\");continue}if(this.state===f.AUTHORITY){this.rewindAndSetState(f.HOSTNAME);continue}this.changeState(f.DONE,0);break}if(this.groupDepth>0){if(!this.isGroupClose())continue;this.groupDepth-=1}if(this.isGroupOpen())this.groupDepth+=1;else switch(this.state){case f.INIT:this.isProtocolSuffix()&&(this.internalResult.username=\"\",this.internalResult.password=\"\",this.internalResult.hostname=\"\",this.internalResult.port=\"\",this.internalResult.pathname=\"\",this.internalResult.search=\"\",this.internalResult.hash=\"\",this.rewindAndSetState(f.PROTOCOL));break;case f.PROTOCOL:if(this.isProtocolSuffix()){this.computeShouldTreatAsStandardURL();var u=f.PATHNAME,D=1;this.shouldTreatAsStandardURL&&(this.internalResult.pathname=\"/\"),this.nextIsAuthoritySlashes()?(u=f.AUTHORITY,D=3):this.shouldTreatAsStandardURL&&(u=f.AUTHORITY),this.changeState(u,D)}break;case f.AUTHORITY:this.isIdentityTerminator()?this.rewindAndSetState(f.USERNAME):(this.isPathnameStart()||this.isSearchPrefix()||this.isHashPrefix())&&this.rewindAndSetState(f.HOSTNAME);break;case f.USERNAME:this.isPasswordPrefix()?this.changeState(f.PASSWORD,1):this.isIdentityTerminator()&&this.changeState(f.HOSTNAME,1);break;case f.PASSWORD:this.isIdentityTerminator()&&this.changeState(f.HOSTNAME,1);break;case f.HOSTNAME:this.isIPv6Open()?this.hostnameIPv6BracketDepth+=1:this.isIPv6Close()&&(this.hostnameIPv6BracketDepth-=1),this.isPortPrefix()&&!this.hostnameIPv6BracketDepth?this.changeState(f.PORT,1):this.isPathnameStart()?this.changeState(f.PATHNAME,0):this.isSearchPrefix()?this.changeState(f.SEARCH,1):this.isHashPrefix()&&this.changeState(f.HASH,1);break;case f.PORT:this.isPathnameStart()?this.changeState(f.PATHNAME,0):this.isSearchPrefix()?this.changeState(f.SEARCH,1):this.isHashPrefix()&&this.changeState(f.HASH,1);break;case f.PATHNAME:this.isSearchPrefix()?this.changeState(f.SEARCH,1):this.isHashPrefix()&&this.changeState(f.HASH,1);break;case f.SEARCH:this.isHashPrefix()&&this.changeState(f.HASH,1)}}},t.changeState=function(u,D){switch(this.state){case f.INIT:break;case f.PROTOCOL:this.internalResult.protocol=this.makeComponentString();break;case f.AUTHORITY:break;case f.USERNAME:this.internalResult.username=this.makeComponentString();break;case f.PASSWORD:this.internalResult.password=this.makeComponentString();break;case f.HOSTNAME:this.internalResult.hostname=this.makeComponentString();break;case f.PORT:this.internalResult.port=this.makeComponentString();break;case f.PATHNAME:this.internalResult.pathname=this.makeComponentString();break;case f.SEARCH:this.internalResult.search=this.makeComponentString();break;case f.HASH:this.internalResult.hash=this.makeComponentString()}this.changeStateWithoutSettingComponent(u,D)},t.changeStateWithoutSettingComponent=function(u,D){this.state=u,this.componentStart=this.tokenIndex+D,this.tokenIndex+=D,this.tokenIncrement=0},t.rewind=function(){this.tokenIndex=this.componentStart,this.tokenIncrement=0},t.rewindAndSetState=function(u){this.rewind(),this.state=u},t.safeToken=function(u){return u<0&&(u=this.tokenList.length-u),u<this.tokenList.length?this.tokenList[u]:this.tokenList[this.tokenList.length-1]},t.isNonSpecialPatternChar=function(u,D){var t=this.safeToken(u);return t.value===D&&(\"CHAR\"===t.type||\"ESCAPED_CHAR\"===t.type||\"INVALID_CHAR\"===t.type)},t.isProtocolSuffix=function(){return this.isNonSpecialPatternChar(this.tokenIndex,\":\")},t.nextIsAuthoritySlashes=function(){return this.isNonSpecialPatternChar(this.tokenIndex+1,\"/\")&&this.isNonSpecialPatternChar(this.tokenIndex+2,\"/\")},t.isIdentityTerminator=function(){return this.isNonSpecialPatternChar(this.tokenIndex,\"@\")},t.isPasswordPrefix=function(){return this.isNonSpecialPatternChar(this.tokenIndex,\":\")},t.isPortPrefix=function(){return this.isNonSpecialPatternChar(this.tokenIndex,\":\")},t.isPathnameStart=function(){return this.isNonSpecialPatternChar(this.tokenIndex,\"/\")},t.isSearchPrefix=function(){if(this.isNonSpecialPatternChar(this.tokenIndex,\"?\"))return!0;if(\"?\"!==this.tokenList[this.tokenIndex].value)return!1;var u=this.safeToken(this.tokenIndex-1);return\"NAME\"!==u.type&&\"PATTERN\"!==u.type&&\"CLOSE\"!==u.type&&\"ASTERISK\"!==u.type},t.isHashPrefix=function(){return this.isNonSpecialPatternChar(this.tokenIndex,\"#\")},t.isGroupOpen=function(){return\"OPEN\"==this.tokenList[this.tokenIndex].type},t.isGroupClose=function(){return\"CLOSE\"==this.tokenList[this.tokenIndex].type},t.isIPv6Open=function(){return this.isNonSpecialPatternChar(this.tokenIndex,\"[\")},t.isIPv6Close=function(){return this.isNonSpecialPatternChar(this.tokenIndex,\"]\")},t.makeComponentString=function(){var u=this.tokenList[this.tokenIndex],D=this.safeToken(this.componentStart).index;return this.input.substring(D,u.index)},t.computeShouldTreatAsStandardURL=function(){var u={};Object.assign(u,B),u.encodePart=g;var D=a(this.makeComponentString(),void 0,u);this.shouldTreatAsStandardURL=m(D)},D(u,[{key:\"result\",get:function(){return this.internalResult}}]),u}(),I=[\"protocol\",\"username\",\"password\",\"hostname\",\"port\",\"pathname\",\"search\",\"hash\"];function O(u,D){if(\"string\"!=typeof u)throw new TypeError(\"parameter 1 is not of type 'string'.\");var t=new URL(u,D);return{protocol:t.protocol.substring(0,t.protocol.length-1),username:t.username,password:t.password,hostname:t.hostname,port:t.port,pathname:t.pathname,search:\"\"!=t.search?t.search.substring(1,t.search.length):void 0,hash:\"\"!=t.hash?t.hash.substring(1,t.hash.length):void 0}}function H(u,D,t){var F;if(\"string\"==typeof D.baseURL)try{F=new URL(D.baseURL),u.protocol=F.protocol?F.protocol.substring(0,F.protocol.length-1):\"\",u.username=F.username,u.password=F.password,u.hostname=F.hostname,u.port=F.port,u.pathname=F.pathname,u.search=F.search?F.search.substring(1,F.search.length):\"\",u.hash=F.hash?F.hash.substring(1,F.hash.length):\"\"}catch(u){throw new TypeError(\"invalid baseURL '\"+D.baseURL+\"'.\")}if(\"string\"==typeof D.protocol&&(u.protocol=function(u,D){var t;return u=(t=u).endsWith(\":\")?t.substr(0,t.length-\":\".length):t,D||\"\"===u?u:g(u)}(D.protocol,t)),\"string\"==typeof D.username&&(u.username=function(u,D){if(D||\"\"===u)return u;var t=new URL(\"https://example.com\");return t.username=u,t.username}(D.username,t)),\"string\"==typeof D.password&&(u.password=function(u,D){if(D||\"\"===u)return u;var t=new URL(\"https://example.com\");return t.password=u,t.password}(D.password,t)),\"string\"==typeof D.hostname&&(u.hostname=function(u,D){return D||\"\"===u?u:c(u)?y(u):v(u)}(D.hostname,t)),\"string\"==typeof D.port&&(u.port=function(u,D,t){return d(D)===u&&(u=\"\"),t||\"\"===u?u:R(u)}(D.port,u.protocol,t)),\"string\"==typeof D.pathname){if(u.pathname=D.pathname,F&&!function(u,D){return!(!u.length||\"/\"!==u[0]&&(!D||u.length<2||\"\\\\\"!=u[0]&&\"{\"!=u[0]||\"/\"!=u[1]))}(u.pathname,t)){var e=F.pathname.lastIndexOf(\"/\");e>=0&&(u.pathname=F.pathname.substring(0,e+1)+u.pathname)}u.pathname=function(u,D,t){if(t||\"\"===u)return u;if(D&&!l.includes(D))return new URL(D+\":\"+u).pathname;var F=\"/\"==u[0];return u=new URL(F?u:\"/-\"+u,\"https://example.com\").pathname,F||(u=u.substring(2,u.length)),u}(u.pathname,u.protocol,t)}return\"string\"==typeof D.search&&(u.search=function(u,D){if(u=p(u,\"?\"),D||\"\"===u)return u;var t=new URL(\"https://example.com\");return t.search=u,t.search?t.search.substring(1,t.search.length):\"\"}(D.search,t)),\"string\"==typeof D.hash&&(u.hash=function(u,D){if(u=p(u,\"#\"),D||\"\"===u)return u;var t=new URL(\"https://example.com\");return t.hash=u,t.hash?t.hash.substring(1,t.hash.length):\"\"}(D.hash,t)),u}function N(u){return u.replace(/([+*?:{}()\\\\])/g,\"\\\\$1\")}function L(u,D){for(var t=\"[^\"+(D.delimiter||\"/#?\").replace(/([.+*?^${}()[\\]|/\\\\])/g,\"\\\\$1\")+\"]+?\",F=/(?:[\\$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u08D3-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1ABF\\u1AC0\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA827\\uA82C\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDD30-\\uDD39\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF50\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCE9\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]|\\uDB40[\\uDD00-\\uDDEF])/,e=\"\",C=0;C<u.length;++C){var A=u[C],E=C>0?u[C-1]:null,n=C<u.length-1?u[C+1]:null;if(\"string\"!=typeof A)if(\"\"!==A.pattern){var r=\"number\"!=typeof A.name,i=void 0!==D.prefixes?D.prefixes:\"./\",s=\"\"!==A.suffix||\"\"!==A.prefix&&(1!==A.prefix.length||!i.includes(A.prefix));s||!r||A.pattern!==t||\"\"!==A.modifier||!n||n.prefix||n.suffix||(s=\"string\"==typeof n?F.test(n.length>0?n[0]:\"\"):\"number\"==typeof n.name),!s&&\"\"===A.prefix&&E&&\"string\"==typeof E&&E.length>0&&(s=i.includes(E[E.length-1])),s&&(e+=\"{\"),e+=N(A.prefix),r&&(e+=\":\"+A.name),\".*\"===A.pattern?e+=r||E&&\"string\"!=typeof E&&!E.modifier&&!s&&\"\"===A.prefix?\"(.*)\":\"*\":A.pattern===t?r||(e+=\"(\"+t+\")\"):e+=\"(\"+A.pattern+\")\",A.pattern===t&&r&&\"\"!==A.suffix&&F.test(A.suffix[0])&&(e+=\"\\\\\"),e+=N(A.suffix),s&&(e+=\"}\"),e+=A.modifier}else{if(\"\"===A.modifier){e+=N(A.prefix);continue}e+=\"{\"+N(A.prefix)+\"}\"+A.modifier}else e+=N(A)}return e}var U=function(){function u(u,D){void 0===u&&(u={}),this.pattern=void 0,this.regexp={},this.keys={},this.component_pattern={};try{if(\"string\"==typeof u){var t=new b(u);if(t.parse(),u=t.result,D){if(\"string\"!=typeof D)throw new TypeError(\"'baseURL' parameter is not of type 'string'.\");u.baseURL=D}else if(\"string\"!=typeof u.protocol)throw new TypeError(\"A base URL must be provided for a relative constructor string.\")}else if(D)throw new TypeError(\"parameter 1 is not of type 'string'.\");if(!u||\"object\"!=typeof u)throw new TypeError(\"parameter 1 is not of type 'string' and cannot convert to dictionary.\");var e;this.pattern=H({pathname:\"*\",protocol:\"*\",username:\"*\",password:\"*\",hostname:\"*\",port:\"*\",search:\"*\",hash:\"*\"},u,!0),d(this.pattern.protocol)===this.pattern.port&&(this.pattern.port=\"\");for(var C,A=F(I);!(C=A()).done;)if((e=C.value)in this.pattern){var E={},r=this.pattern[e];switch(this.keys[e]=[],e){case\"protocol\":Object.assign(E,B),E.encodePart=g;break;case\"username\":Object.assign(E,B),E.encodePart=x;break;case\"password\":Object.assign(E,B),E.encodePart=S;break;case\"hostname\":Object.assign(E,o),E.encodePart=c(r)?y:v;break;case\"port\":Object.assign(E,B),E.encodePart=R;break;case\"pathname\":m(this.regexp.protocol)?(Object.assign(E,h),E.encodePart=k):(Object.assign(E,B),E.encodePart=w);break;case\"search\":Object.assign(E,B),E.encodePart=P;break;case\"hash\":Object.assign(E,B),E.encodePart=T}try{var i=n(r,E);this.regexp[e]=s(i,this.keys[e],E),this.component_pattern[e]=L(i,E)}catch(u){throw new TypeError(\"invalid \"+e+\" pattern '\"+this.pattern[e]+\"'.\")}}}catch(u){throw new TypeError(\"Failed to construct 'URLPattern': \"+u.message)}}var t=u.prototype;return t.test=function(u,D){void 0===u&&(u={});var t,F={pathname:\"\",protocol:\"\",username:\"\",password:\"\",hostname:\"\",port:\"\",search:\"\",hash:\"\"};if(\"string\"!=typeof u&&D)throw new TypeError(\"parameter 1 is not of type 'string'.\");if(void 0===u)return!1;try{F=H(F,\"object\"==typeof u?u:O(u,D),!1)}catch(u){return!1}for(t in this.pattern)if(!this.regexp[t].exec(F[t]))return!1;return!0},t.exec=function(u,D){void 0===u&&(u={});var t={pathname:\"\",protocol:\"\",username:\"\",password:\"\",hostname:\"\",port:\"\",search:\"\",hash:\"\"};if(\"string\"!=typeof u&&D)throw new TypeError(\"parameter 1 is not of type 'string'.\");if(void 0!==u){try{t=H(t,\"object\"==typeof u?u:O(u,D),!1)}catch(u){return null}var e,C={};for(e in C.inputs=D?[u,D]:[u],this.pattern){var A=this.regexp[e].exec(t[e]);if(!A)return null;for(var E,n={},r=F(this.keys[e].entries());!(E=r()).done;){var i=E.value,s=i[1];\"string\"!=typeof s.name&&\"number\"!=typeof s.name||(n[s.name]=A[i[0]+1]||\"\")}C[e]={input:t[e]||\"\",groups:n}}return C}},D(u,[{key:\"protocol\",get:function(){return this.component_pattern.protocol}},{key:\"username\",get:function(){return this.component_pattern.username}},{key:\"password\",get:function(){return this.component_pattern.password}},{key:\"hostname\",get:function(){return this.component_pattern.hostname}},{key:\"port\",get:function(){return this.component_pattern.port}},{key:\"pathname\",get:function(){return this.component_pattern.pathname}},{key:\"search\",get:function(){return this.component_pattern.search}},{key:\"hash\",get:function(){return this.component_pattern.hash}}]),u}();export{U as URLPattern};\n//# sourceMappingURL=index.js.map\n",null,"export const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n PRIMITIVE, ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n PRIMITIVE, ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{lossy?: boolean}?} options an object with a `lossy` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import {File} from 'fetch-blob/from.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\n\nlet s = 0;\nconst S = {\n\tSTART_BOUNDARY: s++,\n\tHEADER_FIELD_START: s++,\n\tHEADER_FIELD: s++,\n\tHEADER_VALUE_START: s++,\n\tHEADER_VALUE: s++,\n\tHEADER_VALUE_ALMOST_DONE: s++,\n\tHEADERS_ALMOST_DONE: s++,\n\tPART_DATA_START: s++,\n\tPART_DATA: s++,\n\tEND: s++\n};\n\nlet f = 1;\nconst F = {\n\tPART_BOUNDARY: f,\n\tLAST_BOUNDARY: f *= 2\n};\n\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst HYPHEN = 45;\nconst COLON = 58;\nconst A = 97;\nconst Z = 122;\n\nconst lower = c => c | 0x20;\n\nconst noop = () => {};\n\nclass MultipartParser {\n\t/**\n\t * @param {string} boundary\n\t */\n\tconstructor(boundary) {\n\t\tthis.index = 0;\n\t\tthis.flags = 0;\n\n\t\tthis.onHeaderEnd = noop;\n\t\tthis.onHeaderField = noop;\n\t\tthis.onHeadersEnd = noop;\n\t\tthis.onHeaderValue = noop;\n\t\tthis.onPartBegin = noop;\n\t\tthis.onPartData = noop;\n\t\tthis.onPartEnd = noop;\n\n\t\tthis.boundaryChars = {};\n\n\t\tboundary = '\\r\\n--' + boundary;\n\t\tconst ui8a = new Uint8Array(boundary.length);\n\t\tfor (let i = 0; i < boundary.length; i++) {\n\t\t\tui8a[i] = boundary.charCodeAt(i);\n\t\t\tthis.boundaryChars[ui8a[i]] = true;\n\t\t}\n\n\t\tthis.boundary = ui8a;\n\t\tthis.lookbehind = new Uint8Array(this.boundary.length + 8);\n\t\tthis.state = S.START_BOUNDARY;\n\t}\n\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\twrite(data) {\n\t\tlet i = 0;\n\t\tconst length_ = data.length;\n\t\tlet previousIndex = this.index;\n\t\tlet {lookbehind, boundary, boundaryChars, index, state, flags} = this;\n\t\tconst boundaryLength = this.boundary.length;\n\t\tconst boundaryEnd = boundaryLength - 1;\n\t\tconst bufferLength = data.length;\n\t\tlet c;\n\t\tlet cl;\n\n\t\tconst mark = name => {\n\t\t\tthis[name + 'Mark'] = i;\n\t\t};\n\n\t\tconst clear = name => {\n\t\t\tdelete this[name + 'Mark'];\n\t\t};\n\n\t\tconst callback = (callbackSymbol, start, end, ui8a) => {\n\t\t\tif (start === undefined || start !== end) {\n\t\t\t\tthis[callbackSymbol](ui8a && ui8a.subarray(start, end));\n\t\t\t}\n\t\t};\n\n\t\tconst dataCallback = (name, clear) => {\n\t\t\tconst markSymbol = name + 'Mark';\n\t\t\tif (!(markSymbol in this)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (clear) {\n\t\t\t\tcallback(name, this[markSymbol], i, data);\n\t\t\t\tdelete this[markSymbol];\n\t\t\t} else {\n\t\t\t\tcallback(name, this[markSymbol], data.length, data);\n\t\t\t\tthis[markSymbol] = 0;\n\t\t\t}\n\t\t};\n\n\t\tfor (i = 0; i < length_; i++) {\n\t\t\tc = data[i];\n\n\t\t\tswitch (state) {\n\t\t\t\tcase S.START_BOUNDARY:\n\t\t\t\t\tif (index === boundary.length - 2) {\n\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else if (c !== CR) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (index - 1 === boundary.length - 2) {\n\t\t\t\t\t\tif (flags & F.LAST_BOUNDARY && c === HYPHEN) {\n\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t} else if (!(flags & F.LAST_BOUNDARY) && c === LF) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c !== boundary[index + 2]) {\n\t\t\t\t\t\tindex = -2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === boundary[index + 2]) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_FIELD_START:\n\t\t\t\t\tstate = S.HEADER_FIELD;\n\t\t\t\t\tmark('onHeaderField');\n\t\t\t\t\tindex = 0;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_FIELD:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tclear('onHeaderField');\n\t\t\t\t\t\tstate = S.HEADERS_ALMOST_DONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tindex++;\n\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === COLON) {\n\t\t\t\t\t\tif (index === 1) {\n\t\t\t\t\t\t\t// empty header field\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataCallback('onHeaderField', true);\n\t\t\t\t\t\tstate = S.HEADER_VALUE_START;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcl = lower(c);\n\t\t\t\t\tif (cl < A || cl > Z) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_START:\n\t\t\t\t\tif (c === SPACE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tmark('onHeaderValue');\n\t\t\t\t\tstate = S.HEADER_VALUE;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_VALUE:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tdataCallback('onHeaderValue', true);\n\t\t\t\t\t\tcallback('onHeaderEnd');\n\t\t\t\t\t\tstate = S.HEADER_VALUE_ALMOST_DONE;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADERS_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback('onHeadersEnd');\n\t\t\t\t\tstate = S.PART_DATA_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.PART_DATA_START:\n\t\t\t\t\tstate = S.PART_DATA;\n\t\t\t\t\tmark('onPartData');\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.PART_DATA:\n\t\t\t\t\tpreviousIndex = index;\n\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t// boyer-moore derrived algorithm to safely skip non-boundary data\n\t\t\t\t\t\ti += boundaryEnd;\n\t\t\t\t\t\twhile (i < bufferLength && !(data[i] in boundaryChars)) {\n\t\t\t\t\t\t\ti += boundaryLength;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ti -= boundaryEnd;\n\t\t\t\t\t\tc = data[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index < boundary.length) {\n\t\t\t\t\t\tif (boundary[index] === c) {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\tdataCallback('onPartData', true);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index === boundary.length) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\t\t// CR = part boundary\n\t\t\t\t\t\t\tflags |= F.PART_BOUNDARY;\n\t\t\t\t\t\t} else if (c === HYPHEN) {\n\t\t\t\t\t\t\t// HYPHEN = end boundary\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index - 1 === boundary.length) {\n\t\t\t\t\t\tif (flags & F.PART_BOUNDARY) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tif (c === LF) {\n\t\t\t\t\t\t\t\t// unset the PART_BOUNDARY flag\n\t\t\t\t\t\t\t\tflags &= ~F.PART_BOUNDARY;\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (flags & F.LAST_BOUNDARY) {\n\t\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t// when matching a possible boundary, keep a lookbehind reference\n\t\t\t\t\t\t// in case it turns out to be a false lead\n\t\t\t\t\t\tlookbehind[index - 1] = c;\n\t\t\t\t\t} else if (previousIndex > 0) {\n\t\t\t\t\t\t// if our boundary turned out to be rubbish, the captured lookbehind\n\t\t\t\t\t\t// belongs to partData\n\t\t\t\t\t\tconst _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);\n\t\t\t\t\t\tcallback('onPartData', 0, previousIndex, _lookbehind);\n\t\t\t\t\t\tpreviousIndex = 0;\n\t\t\t\t\t\tmark('onPartData');\n\n\t\t\t\t\t\t// reconsider the current character even so it interrupted the sequence\n\t\t\t\t\t\t// it could be the beginning of a new sequence\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.END:\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected state entered: ${state}`);\n\t\t\t}\n\t\t}\n\n\t\tdataCallback('onHeaderField');\n\t\tdataCallback('onHeaderValue');\n\t\tdataCallback('onPartData');\n\n\t\t// Update properties for the next call\n\t\tthis.index = index;\n\t\tthis.state = state;\n\t\tthis.flags = flags;\n\t}\n\n\tend() {\n\t\tif ((this.state === S.HEADER_FIELD_START && this.index === 0) ||\n\t\t\t(this.state === S.PART_DATA && this.index === this.boundary.length)) {\n\t\t\tthis.onPartEnd();\n\t\t} else if (this.state !== S.END) {\n\t\t\tthrow new Error('MultipartParser.end(): stream ended unexpectedly');\n\t\t}\n\t}\n}\n\nfunction _fileName(headerValue) {\n\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\tconst m = headerValue.match(/\\bfilename=(\"(.*?)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))($|;\\s)/i);\n\tif (!m) {\n\t\treturn;\n\t}\n\n\tconst match = m[2] || m[3] || '';\n\tlet filename = match.slice(match.lastIndexOf('\\\\') + 1);\n\tfilename = filename.replace(/%22/g, '\"');\n\tfilename = filename.replace(/&#(\\d{4});/g, (m, code) => {\n\t\treturn String.fromCharCode(code);\n\t});\n\treturn filename;\n}\n\nexport async function toFormData(Body, ct) {\n\tif (!/multipart/i.test(ct)) {\n\t\tthrow new TypeError('Failed to fetch');\n\t}\n\n\tconst m = ct.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n\n\tif (!m) {\n\t\tthrow new TypeError('no or bad content-type header, no multipart boundary');\n\t}\n\n\tconst parser = new MultipartParser(m[1] || m[2]);\n\n\tlet headerField;\n\tlet headerValue;\n\tlet entryValue;\n\tlet entryName;\n\tlet contentType;\n\tlet filename;\n\tconst entryChunks = [];\n\tconst formData = new FormData();\n\n\tconst onPartData = ui8a => {\n\t\tentryValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tconst appendToFile = ui8a => {\n\t\tentryChunks.push(ui8a);\n\t};\n\n\tconst appendFileToFormData = () => {\n\t\tconst file = new File(entryChunks, filename, {type: contentType});\n\t\tformData.append(entryName, file);\n\t};\n\n\tconst appendEntryToFormData = () => {\n\t\tformData.append(entryName, entryValue);\n\t};\n\n\tconst decoder = new TextDecoder('utf-8');\n\tdecoder.decode();\n\n\tparser.onPartBegin = function () {\n\t\tparser.onPartData = onPartData;\n\t\tparser.onPartEnd = appendEntryToFormData;\n\n\t\theaderField = '';\n\t\theaderValue = '';\n\t\tentryValue = '';\n\t\tentryName = '';\n\t\tcontentType = '';\n\t\tfilename = null;\n\t\tentryChunks.length = 0;\n\t};\n\n\tparser.onHeaderField = function (ui8a) {\n\t\theaderField += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderValue = function (ui8a) {\n\t\theaderValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderEnd = function () {\n\t\theaderValue += decoder.decode();\n\t\theaderField = headerField.toLowerCase();\n\n\t\tif (headerField === 'content-disposition') {\n\t\t\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\t\t\tconst m = headerValue.match(/\\bname=(\"([^\"]*)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))/i);\n\n\t\t\tif (m) {\n\t\t\t\tentryName = m[2] || m[3] || '';\n\t\t\t}\n\n\t\t\tfilename = _fileName(headerValue);\n\n\t\t\tif (filename) {\n\t\t\t\tparser.onPartData = appendToFile;\n\t\t\t\tparser.onPartEnd = appendFileToFormData;\n\t\t\t}\n\t\t} else if (headerField === 'content-type') {\n\t\t\tcontentType = headerValue;\n\t\t}\n\n\t\theaderValue = '';\n\t\theaderField = '';\n\t};\n\n\tfor await (const chunk of Body) {\n\t\tparser.write(chunk);\n\t}\n\n\tparser.end();\n\n\treturn formData;\n}\n"],"names":["INTERNALS","_.allowStringTag","keys","keys$1","INTERNAL","nodeSetTimeout","_.__performance_now","_.__function_bind","nodeClearTimeout","NodeFilter","NodeIterator","_.internalsOf","_.INTERNALS","noop","isAbortSignal","POOL_SIZE","globalThis.ReadableStream","t","i","h","r","m","f","F","e","x","C","formatUrl","fetch","pump","_.__object_isPrototypeOf","_.pathToPosix","nodeFetch","A","s","S","_.__object_hasOwnProperty","_.__string_escapeRegExp","URLPattern"],"mappings":"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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,E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"} \ No newline at end of file