@swan-admin/swan-web-component 1.0.72 → 1.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Header-Bf7ClSfT.js +32 -0
- package/dist/Header-Bf7ClSfT.js.map +1 -0
- package/dist/Header-C65iSMsF.js +32 -0
- package/dist/Header-C65iSMsF.js.map +1 -0
- package/dist/LoadingScreen-C9vDF8N6.js +12 -0
- package/dist/LoadingScreen-C9vDF8N6.js.map +1 -0
- package/dist/LoadingScreen-CDhtnDGT.js +12 -0
- package/dist/LoadingScreen-CDhtnDGT.js.map +1 -0
- package/dist/LoadingScreen-DFKUWqQS.js +12 -0
- package/dist/LoadingScreen-DFKUWqQS.js.map +1 -0
- package/dist/LoadingScreen-DGyU-r8n.js +12 -0
- package/dist/LoadingScreen-DGyU-r8n.js.map +1 -0
- package/dist/bodyScan.d.ts +2 -2
- package/dist/bodyScan.js +2 -2
- package/dist/bodyScan.js.map +1 -1
- package/dist/bodyScan.mjs +2 -2
- package/dist/bodyScan.mjs.map +1 -1
- package/dist/createSvgIcon-CSumJvXf.js +2 -0
- package/dist/createSvgIcon-CSumJvXf.js.map +1 -0
- package/dist/createSvgIcon-KYNE9Cmr.js +2 -0
- package/dist/createSvgIcon-KYNE9Cmr.js.map +1 -0
- package/dist/faceScan.d.ts +2 -2
- package/dist/faceScan.js +1 -1
- package/dist/faceScan.js.map +1 -1
- package/dist/faceScan.mjs +1 -1
- package/dist/faceScan.mjs.map +1 -1
- package/dist/index-B23Mlqqj.js +5068 -0
- package/dist/index-B23Mlqqj.js.map +1 -0
- package/dist/index-CenJi_ia.js +4686 -0
- package/dist/index-CenJi_ia.js.map +1 -0
- package/dist/index-D0NFHRX9.js +5068 -0
- package/dist/index-D0NFHRX9.js.map +1 -0
- package/dist/index-slG-fgu8.js +4684 -0
- package/dist/index-slG-fgu8.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/interfaces-C9CQpzhP.d.ts +142 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingScreen-DFKUWqQS.js","sources":["../../node_modules/@mui/material/esm/Slide/Slide.js","../../node_modules/@mui/material/esm/Drawer/drawerClasses.js","../../node_modules/@mui/material/esm/Drawer/Drawer.js","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/core/AxiosError.js","../../node_modules/axios/lib/helpers/toFormData.js","../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/defaults/transitional.js","../../node_modules/axios/lib/platform/browser/index.js","../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../node_modules/axios/lib/platform/common/utils.js","../../node_modules/axios/lib/platform/index.js","../../node_modules/axios/lib/helpers/formDataToJSON.js","../../node_modules/axios/lib/defaults/index.js","../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/core/AxiosHeaders.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/cancel/CanceledError.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/progressEventReducer.js","../../node_modules/axios/lib/helpers/speedometer.js","../../node_modules/axios/lib/helpers/throttle.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/helpers/resolveConfig.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/helpers/parseProtocol.js","../../node_modules/axios/lib/helpers/composeSignals.js","../../node_modules/axios/lib/helpers/trackStream.js","../../node_modules/axios/lib/adapters/fetch.js","../../node_modules/axios/lib/adapters/adapters.js","../../node_modules/axios/lib/helpers/null.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/env/data.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../node_modules/axios/lib/axios.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/index.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/constants.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/enum.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/utils.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/auth.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/custom.js","../../node_modules/@uppy/utils/lib/Translator.js","../../node_modules/namespace-emitter/index.js","../../node_modules/lodash/isObject.js","../../node_modules/lodash/_root.js","../../node_modules/lodash/_freeGlobal.js","../../node_modules/lodash/_baseTrim.js","../../node_modules/lodash/_trimmedEndIndex.js","../../node_modules/lodash/_Symbol.js","../../node_modules/lodash/_baseGetTag.js","../../node_modules/lodash/_getRawTag.js","../../node_modules/lodash/_objectToString.js","../../node_modules/lodash/isSymbol.js","../../node_modules/lodash/isObjectLike.js","../../node_modules/lodash/debounce.js","../../node_modules/lodash/now.js","../../node_modules/lodash/toNumber.js","../../node_modules/lodash/throttle.js","../../node_modules/@uppy/store-default/lib/index.js","../../node_modules/@uppy/utils/lib/getFileNameAndExtension.js","../../node_modules/@uppy/utils/lib/mimeTypes.js","../../node_modules/@uppy/utils/lib/getFileType.js","../../node_modules/@uppy/utils/lib/generateFileID.js","../../node_modules/@uppy/core/lib/supportsUploadProgress.js","../../node_modules/@uppy/utils/lib/getTimeStamp.js","../../node_modules/@uppy/core/lib/loggers.js","../../node_modules/@transloadit/prettier-bytes/dist/prettierBytes.js","../../node_modules/wildcard/index.js","../../node_modules/mime-match/index.js","../../node_modules/@uppy/core/lib/Restricter.js","../../node_modules/@uppy/core/lib/locale.js","../../node_modules/@uppy/core/lib/Uppy.js","../../node_modules/@uppy/core/lib/getFileName.js","../../node_modules/@uppy/core/node_modules/nanoid/non-secure/index.js","../../node_modules/@uppy/core/lib/BasePlugin.js","../../node_modules/@uppy/utils/lib/UserFacingApiError.js","../../node_modules/retry/lib/retry.js","../../node_modules/retry/lib/retry_operation.js","../../node_modules/retry/index.js","../../node_modules/is-network-error/index.js","../../node_modules/p-retry/index.js","../../node_modules/@uppy/utils/lib/NetworkError.js","../../node_modules/@uppy/utils/lib/hasProperty.js","../../node_modules/@uppy/utils/lib/ErrorWithCause.js","../../node_modules/@uppy/utils/lib/emitSocketProgress.js","../../node_modules/@uppy/companion-client/lib/AuthError.js","../../node_modules/@uppy/companion-client/lib/RequestClient.js","../../node_modules/@uppy/utils/lib/fetchWithNetworkError.js","../../node_modules/@uppy/utils/lib/getSocketHost.js","../../node_modules/@uppy/core/lib/EventManager.js","../../node_modules/@uppy/utils/lib/RateLimitedQueue.js","../../node_modules/@uppy/utils/lib/AbortController.js","../../node_modules/@uppy/aws-s3-multipart/lib/MultipartUploader.js","../../node_modules/@uppy/aws-s3-multipart/lib/utils.js","../../node_modules/@uppy/aws-s3-multipart/lib/createSignedURL.js","../../node_modules/@uppy/aws-s3-multipart/lib/HTTPCommunicationQueue.js","../../node_modules/@uppy/aws-s3-multipart/lib/index.js","../../node_modules/@uppy/utils/lib/fileFilters.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/fileUpload.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/measurement.js","../../node_modules/engine.io-parser/build/esm/commons.js","../../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../../node_modules/engine.io-parser/build/esm/index.js","../../node_modules/@socket.io/component-emitter/lib/esm/index.js","../../node_modules/engine.io-client/build/esm/globals.js","../../node_modules/engine.io-client/build/esm/util.js","../../node_modules/engine.io-client/build/esm/transport.js","../../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../../node_modules/engine.io-client/build/esm/transports/polling.js","../../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../../node_modules/engine.io-client/build/esm/transports/websocket.js","../../node_modules/engine.io-client/build/esm/transports/index.js","../../node_modules/engine.io-client/build/esm/transports/webtransport.js","../../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../../node_modules/engine.io-client/build/esm/socket.js","../../node_modules/socket.io-parser/build/esm/is-binary.js","../../node_modules/socket.io-parser/build/esm/binary.js","../../node_modules/socket.io-parser/build/esm/index.js","../../node_modules/socket.io-client/build/esm/on.js","../../node_modules/socket.io-client/build/esm/socket.js","../../node_modules/socket.io-client/build/esm/contrib/backo2.js","../../node_modules/socket.io-client/build/esm/manager.js","../../node_modules/socket.io-client/build/esm/index.js","../../node_modules/socket.io-client/build/esm/url.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/poseDetection.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/tryOn.js","../../node_modules/@swan-admin/swan-ai-measurements/dist/esm/index.js","../src/utils/service/swanService.ts","../src/utils/service/speechService.ts","../src/components/LoadingScreen.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport debounce from \"../utils/debounce.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { useTheme } from \"../zero-styled/index.js\";\nimport { reflow, getTransitionProps } from \"../transitions/utils.js\";\nimport { ownerWindow } from \"../utils/index.js\";\n\n// Translate the node so it can't be seen on the screen.\n// Later, we're going to translate the node back to its original location with `none`.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getTranslateValue(direction, node, resolvedContainer) {\n const rect = node.getBoundingClientRect();\n const containerRect = resolvedContainer && resolvedContainer.getBoundingClientRect();\n const containerWindow = ownerWindow(node);\n let transform;\n if (node.fakeTransform) {\n transform = node.fakeTransform;\n } else {\n const computedStyle = containerWindow.getComputedStyle(node);\n transform = computedStyle.getPropertyValue('-webkit-transform') || computedStyle.getPropertyValue('transform');\n }\n let offsetX = 0;\n let offsetY = 0;\n if (transform && transform !== 'none' && typeof transform === 'string') {\n const transformValues = transform.split('(')[1].split(')')[0].split(',');\n offsetX = parseInt(transformValues[4], 10);\n offsetY = parseInt(transformValues[5], 10);\n }\n if (direction === 'left') {\n if (containerRect) {\n return `translateX(${containerRect.right + offsetX - rect.left}px)`;\n }\n return `translateX(${containerWindow.innerWidth + offsetX - rect.left}px)`;\n }\n if (direction === 'right') {\n if (containerRect) {\n return `translateX(-${rect.right - containerRect.left - offsetX}px)`;\n }\n return `translateX(-${rect.left + rect.width - offsetX}px)`;\n }\n if (direction === 'up') {\n if (containerRect) {\n return `translateY(${containerRect.bottom + offsetY - rect.top}px)`;\n }\n return `translateY(${containerWindow.innerHeight + offsetY - rect.top}px)`;\n }\n\n // direction === 'down'\n if (containerRect) {\n return `translateY(-${rect.top - containerRect.top + rect.height - offsetY}px)`;\n }\n return `translateY(-${rect.top + rect.height - offsetY}px)`;\n}\nfunction resolveContainer(containerPropProp) {\n return typeof containerPropProp === 'function' ? containerPropProp() : containerPropProp;\n}\nexport function setTranslateValue(direction, node, containerProp) {\n const resolvedContainer = resolveContainer(containerProp);\n const transform = getTranslateValue(direction, node, resolvedContainer);\n if (transform) {\n node.style.webkitTransform = transform;\n node.style.transform = transform;\n }\n}\n\n/**\n * The Slide transition is used by the [Drawer](/material-ui/react-drawer/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Slide = /*#__PURE__*/React.forwardRef(function Slide(props, ref) {\n const theme = useTheme();\n const defaultEasing = {\n enter: theme.transitions.easing.easeOut,\n exit: theme.transitions.easing.sharp\n };\n const defaultTimeout = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n const {\n addEndListener,\n appear = true,\n children,\n container: containerProp,\n direction = 'down',\n easing: easingProp = defaultEasing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = defaultTimeout,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition,\n ...other\n } = props;\n const childrenRef = React.useRef(null);\n const handleRef = useForkRef(getReactElementRef(children), childrenRef, ref);\n const normalizedTransitionCallback = callback => isAppearing => {\n if (callback) {\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (isAppearing === undefined) {\n callback(childrenRef.current);\n } else {\n callback(childrenRef.current, isAppearing);\n }\n }\n };\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n setTranslateValue(direction, node, containerProp);\n reflow(node);\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const transitionProps = getTransitionProps({\n timeout,\n style,\n easing: easingProp\n }, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', {\n ...transitionProps\n });\n node.style.transition = theme.transitions.create('transform', {\n ...transitionProps\n });\n node.style.webkitTransform = 'none';\n node.style.transform = 'none';\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const transitionProps = getTransitionProps({\n timeout,\n style,\n easing: easingProp\n }, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', transitionProps);\n node.style.transition = theme.transitions.create('transform', transitionProps);\n setTranslateValue(direction, node, containerProp);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(node => {\n // No need for transitions when the component is hidden\n node.style.webkitTransition = '';\n node.style.transition = '';\n if (onExited) {\n onExited(node);\n }\n });\n const handleAddEndListener = next => {\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(childrenRef.current, next);\n }\n };\n const updatePosition = React.useCallback(() => {\n if (childrenRef.current) {\n setTranslateValue(direction, childrenRef.current, containerProp);\n }\n }, [direction, containerProp]);\n React.useEffect(() => {\n // Skip configuration where the position is screen size invariant.\n if (inProp || direction === 'down' || direction === 'right') {\n return undefined;\n }\n const handleResize = debounce(() => {\n if (childrenRef.current) {\n setTranslateValue(direction, childrenRef.current, containerProp);\n }\n });\n const containerWindow = ownerWindow(childrenRef.current);\n containerWindow.addEventListener('resize', handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n };\n }, [direction, inProp, containerProp]);\n React.useEffect(() => {\n if (!inProp) {\n // We need to update the position of the drawer when the direction change and\n // when it's hidden.\n updatePosition();\n }\n }, [inProp, updatePosition]);\n return /*#__PURE__*/_jsx(TransitionComponent, {\n nodeRef: childrenRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n appear: appear,\n in: inProp,\n timeout: timeout,\n ...other,\n children: (state, {\n ownerState,\n ...restChildProps\n }) => {\n return /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef,\n style: {\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined,\n ...style,\n ...children.props.style\n },\n ...restChildProps\n });\n }\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Slide.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * An HTML element, or a function that returns one.\n * It's used to set the container the Slide is transitioning from.\n */\n container: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n if (props.open) {\n const resolvedContainer = resolveContainer(props.container);\n if (resolvedContainer && resolvedContainer.nodeType === 1) {\n const box = resolvedContainer.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `container` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedContainer || typeof resolvedContainer.getBoundingClientRect !== 'function' || resolvedContainer.contextElement != null && resolvedContainer.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `container` prop provided to the component is invalid.', 'It should be an HTML element instance.'].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * Direction the child node will enter from.\n * @default 'down'\n */\n direction: PropTypes.oneOf(['down', 'left', 'right', 'up']),\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n * @default {\n * enter: theme.transitions.easing.easeOut,\n * exit: theme.transitions.easing.sharp,\n * }\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: theme.transitions.duration.enteringScreen,\n * exit: theme.transitions.duration.leavingScreen,\n * }\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Slide;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDrawerUtilityClass(slot) {\n return generateUtilityClass('MuiDrawer', slot);\n}\nconst drawerClasses = generateUtilityClasses('MuiDrawer', ['root', 'docked', 'paper', 'anchorLeft', 'anchorRight', 'anchorTop', 'anchorBottom', 'paperAnchorLeft', 'paperAnchorRight', 'paperAnchorTop', 'paperAnchorBottom', 'paperAnchorDockedLeft', 'paperAnchorDockedRight', 'paperAnchorDockedTop', 'paperAnchorDockedBottom', 'modal']);\nexport default drawerClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport Modal from \"../Modal/index.js\";\nimport Slide from \"../Slide/index.js\";\nimport Paper from \"../Paper/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled, useTheme } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getDrawerUtilityClass } from \"./drawerClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { mergeSlotProps } from \"../utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, (ownerState.variant === 'permanent' || ownerState.variant === 'persistent') && styles.docked, styles.modal];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n anchor,\n variant\n } = ownerState;\n const slots = {\n root: ['root', `anchor${capitalize(anchor)}`],\n docked: [(variant === 'permanent' || variant === 'persistent') && 'docked'],\n modal: ['modal'],\n paper: ['paper', `paperAnchor${capitalize(anchor)}`, variant !== 'temporary' && `paperAnchorDocked${capitalize(anchor)}`]\n };\n return composeClasses(slots, getDrawerUtilityClass, classes);\n};\nconst DrawerRoot = styled(Modal, {\n name: 'MuiDrawer',\n slot: 'Root',\n overridesResolver\n})(memoTheme(({\n theme\n}) => ({\n zIndex: (theme.vars || theme).zIndex.drawer\n})));\nconst DrawerDockedRoot = styled('div', {\n shouldForwardProp: rootShouldForwardProp,\n name: 'MuiDrawer',\n slot: 'Docked',\n skipVariantsResolver: false,\n overridesResolver\n})({\n flex: '0 0 auto'\n});\nconst DrawerPaper = styled(Paper, {\n name: 'MuiDrawer',\n slot: 'Paper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.paper, styles[`paperAnchor${capitalize(ownerState.anchor)}`], ownerState.variant !== 'temporary' && styles[`paperAnchorDocked${capitalize(ownerState.anchor)}`]];\n }\n})(memoTheme(({\n theme\n}) => ({\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n flex: '1 0 auto',\n zIndex: (theme.vars || theme).zIndex.drawer,\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n // temporary style\n position: 'fixed',\n top: 0,\n // We disable the focus ring for mouse, touch and keyboard users.\n // At some point, it would be better to keep it for keyboard users.\n // :focus-ring CSS pseudo-class will help.\n outline: 0,\n variants: [{\n props: {\n anchor: 'left'\n },\n style: {\n left: 0\n }\n }, {\n props: {\n anchor: 'top'\n },\n style: {\n top: 0,\n left: 0,\n right: 0,\n height: 'auto',\n maxHeight: '100%'\n }\n }, {\n props: {\n anchor: 'right'\n },\n style: {\n right: 0\n }\n }, {\n props: {\n anchor: 'bottom'\n },\n style: {\n top: 'auto',\n left: 0,\n bottom: 0,\n right: 0,\n height: 'auto',\n maxHeight: '100%'\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchor === 'left' && ownerState.variant !== 'temporary',\n style: {\n borderRight: `1px solid ${(theme.vars || theme).palette.divider}`\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchor === 'top' && ownerState.variant !== 'temporary',\n style: {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchor === 'right' && ownerState.variant !== 'temporary',\n style: {\n borderLeft: `1px solid ${(theme.vars || theme).palette.divider}`\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.anchor === 'bottom' && ownerState.variant !== 'temporary',\n style: {\n borderTop: `1px solid ${(theme.vars || theme).palette.divider}`\n }\n }]\n})));\nconst oppositeDirection = {\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up'\n};\nexport function isHorizontal(anchor) {\n return ['left', 'right'].includes(anchor);\n}\nexport function getAnchor({\n direction\n}, anchor) {\n return direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;\n}\n\n/**\n * The props of the [Modal](/material-ui/api/modal/) component are available\n * when `variant=\"temporary\"` is set.\n */\nconst Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiDrawer'\n });\n const theme = useTheme();\n const isRtl = useRtl();\n const defaultTransitionDuration = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n const {\n anchor: anchorProp = 'left',\n BackdropProps,\n children,\n className,\n elevation = 16,\n hideBackdrop = false,\n ModalProps: {\n BackdropProps: BackdropPropsProp,\n ...ModalProps\n } = {},\n onClose,\n open = false,\n PaperProps = {},\n SlideProps,\n // eslint-disable-next-line react/prop-types\n TransitionComponent,\n transitionDuration = defaultTransitionDuration,\n variant = 'temporary',\n slots = {},\n slotProps = {},\n ...other\n } = props;\n\n // Let's assume that the Drawer will always be rendered on user space.\n // We use this state is order to skip the appear transition during the\n // initial mount of the component.\n const mounted = React.useRef(false);\n React.useEffect(() => {\n mounted.current = true;\n }, []);\n const anchorInvariant = getAnchor({\n direction: isRtl ? 'rtl' : 'ltr'\n }, anchorProp);\n const anchor = anchorProp;\n const ownerState = {\n ...props,\n anchor,\n elevation,\n open,\n variant,\n ...other\n };\n const classes = useUtilityClasses(ownerState);\n const externalForwardedProps = {\n slots: {\n transition: TransitionComponent,\n ...slots\n },\n slotProps: {\n paper: PaperProps,\n transition: SlideProps,\n ...slotProps,\n backdrop: mergeSlotProps(slotProps.backdrop || {\n ...BackdropProps,\n ...BackdropPropsProp\n }, {\n transitionDuration\n })\n }\n };\n const [RootSlot, rootSlotProps] = useSlot('root', {\n ref,\n elementType: DrawerRoot,\n className: clsx(classes.root, classes.modal, className),\n shouldForwardComponentProp: true,\n ownerState,\n externalForwardedProps: {\n ...externalForwardedProps,\n ...other,\n ...ModalProps\n },\n additionalProps: {\n open,\n onClose,\n hideBackdrop,\n slots: {\n backdrop: externalForwardedProps.slots.backdrop\n },\n slotProps: {\n backdrop: externalForwardedProps.slotProps.backdrop\n }\n }\n });\n const [PaperSlot, paperSlotProps] = useSlot('paper', {\n elementType: DrawerPaper,\n shouldForwardComponentProp: true,\n className: clsx(classes.paper, PaperProps.className),\n ownerState,\n externalForwardedProps,\n additionalProps: {\n elevation: variant === 'temporary' ? elevation : 0,\n square: true,\n ...(variant === 'temporary' && {\n role: 'dialog',\n 'aria-modal': 'true'\n })\n }\n });\n const [DockedSlot, dockedSlotProps] = useSlot('docked', {\n elementType: DrawerDockedRoot,\n ref,\n className: clsx(classes.root, classes.docked, className),\n ownerState,\n externalForwardedProps,\n additionalProps: other // pass `other` here because `DockedSlot` is also a root slot for some variants\n });\n const [TransitionSlot, transitionSlotProps] = useSlot('transition', {\n elementType: Slide,\n ownerState,\n externalForwardedProps,\n additionalProps: {\n in: open,\n direction: oppositeDirection[anchorInvariant],\n timeout: transitionDuration,\n appear: mounted.current\n }\n });\n const drawer = /*#__PURE__*/_jsx(PaperSlot, {\n ...paperSlotProps,\n children: children\n });\n if (variant === 'permanent') {\n return /*#__PURE__*/_jsx(DockedSlot, {\n ...dockedSlotProps,\n children: drawer\n });\n }\n const slidingDrawer = /*#__PURE__*/_jsx(TransitionSlot, {\n ...transitionSlotProps,\n children: drawer\n });\n if (variant === 'persistent') {\n return /*#__PURE__*/_jsx(DockedSlot, {\n ...dockedSlotProps,\n children: slidingDrawer\n });\n }\n\n // variant === temporary\n return /*#__PURE__*/_jsx(RootSlot, {\n ...rootSlotProps,\n children: slidingDrawer\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Drawer.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Side from which the drawer will appear.\n * @default 'left'\n */\n anchor: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),\n /**\n * @ignore\n */\n BackdropProps: PropTypes.object,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The elevation of the drawer.\n * @default 16\n */\n elevation: integerPropType,\n /**\n * If `true`, the backdrop is not rendered.\n * @default false\n */\n hideBackdrop: PropTypes.bool,\n /**\n * Props applied to the [`Modal`](https://mui.com/material-ui/api/modal/) element.\n * @default {}\n */\n ModalProps: PropTypes.object,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n * @default false\n */\n open: PropTypes.bool,\n /**\n * Props applied to the [`Paper`](https://mui.com/material-ui/api/paper/) element.\n * @deprecated use the `slotProps.paper` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n * @default {}\n */\n PaperProps: PropTypes.object,\n /**\n * Props applied to the [`Slide`](https://mui.com/material-ui/api/slide/) element.\n * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n SlideProps: PropTypes.object,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n docked: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n paper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n transition: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n backdrop: PropTypes.elementType,\n docked: PropTypes.elementType,\n paper: PropTypes.elementType,\n root: PropTypes.elementType,\n transition: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: theme.transitions.duration.enteringScreen,\n * exit: theme.transitions.duration.leavingScreen,\n * }\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * The variant to use.\n * @default 'temporary'\n */\n variant: PropTypes.oneOf(['permanent', 'persistent', 'temporary'])\n} : void 0;\nexport default Drawer;","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters\n};\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.13.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","export const STAGING_URL = {\n APP_AUTH_BASE_URL: \"https://staging.api.swanvision.ai\",\n APP_BASE_WEBSOCKET_URL: \"wss://staging.wsnotify.api.swanvision.ai\",\n APP_POSE_DETECTION_WEBSOCKET_URL: \"https://posedetect-service-staging.ft2a64raup4pg.us-east-1.cs.amazonlightsail.com\",\n};\nexport const PROD_URL = {\n APP_AUTH_BASE_URL: \"https://api.swanvision.ai\",\n APP_BASE_WEBSOCKET_URL: \"wss://wsnotify.api.swanvision.ai\",\n APP_POSE_DETECTION_WEBSOCKET_URL: \"https://posedetect-service.uvcn97hn133d6.eu-west-1.cs.amazonlightsail.com\",\n};\nexport const DEV_URL = {\n APP_AUTH_BASE_URL: \"https://develop.api.swanvision.ai\",\n APP_BASE_WEBSOCKET_URL: \"wss://develop.wsnotify.api.swanvision.ai\",\n APP_POSE_DETECTION_WEBSOCKET_URL: \"https://posedetect-service-staging.ft2a64raup4pg.us-east-1.cs.amazonlightsail.com\",\n};\nexport const URLS = {\n dev: DEV_URL,\n staging: STAGING_URL,\n prod: PROD_URL\n};\nexport const FILE_UPLOAD_ENDPOINT = {\n UPLOAD_START: \"/upload/start\",\n UPLOAD_COMPLETE: \"/upload/complete\",\n UPLOAD_SIGN_PART: \"/upload/signpart\",\n UPLOAD_ABORT: \"/upload/abort\",\n};\nexport const APP_AUTH_BASE_URL = \"APP_AUTH_BASE_URL\";\nexport const APP_BASE_WEBSOCKET_URL = \"APP_BASE_WEBSOCKET_URL\";\nexport const APP_POSE_DETECTION_WEBSOCKET_URL = \"APP_POSE_DETECTION_WEBSOCKET_URL\";\nexport const API_ENDPOINTS = {\n GET_USER_DETAIL: \"/user\",\n REGISTER_USER: \"/auth/register\",\n VERIFY_USER: \"/auth/verify\",\n ADD_USER: \"/user\",\n CUSTOM_CUSTOMER: \"/customers/custom\",\n CREATE_CUSTOMER: \"/customers\",\n MODEL: \"/model\",\n TRY_ON_SCAN: \"/tryon/scan\",\n TRY_ON_IMAGE_UPLOAD: \"/tryon/user-image-urls/upload\",\n TRY_ON_IMAGE_DOWNLOAD: \"/tryon/user-image-urls/download\",\n TRY_ON_IMAGE_URLS: \"/tryon/user-image-urls\",\n TRY_ON_RESULT_IMAGE_DOWNLOAD: \"/tryon/result-image-urls/download\",\n TRY_ON: \"/tryon\",\n AUTH: \"/auth\",\n SCANNING: \"/scanning\",\n RECOMMENDATION: \"/recommendation\",\n TRY_ON_SHARE: \"/tryon/share\",\n DEVICE_INFO: \"/deviceinfo\",\n TRY_ON_PRODUCT_IMAGE_ELIGIBILTY: \"/tryon/product-image-eligibility\"\n};\nexport const requiredMetaData = [\"gender\", \"focal_length\", \"height\", \"customer_store_url\", \"callback_url\", \"clothes_fit\"];\nexport const requiredFaceScanMetaData = [\"gender\", \"focal_length\", \"customer_store_url\", \"scan_type\", \"callback_url\", \"face_scan_id\"];\nexport const REQUIRED_MESSAGE = \"Please verify required parameters\";\nexport const REQUIRED_MESSAGE_FOR_META_DATA = \"Please verify required parameters in meta data\";\nexport const REQUIRED_ERROR_MESSAGE_INVALID_EMAIL = \"Invalid Email\";\nexport const CHUNK_SIZE = 5 * 1024 * 1024;\n","export var URLType;\n(function (URLType) {\n URLType[\"DEV\"] = \"dev\";\n URLType[\"STAGING\"] = \"staging\";\n URLType[\"PROD\"] = \"prod\";\n})(URLType || (URLType = {}));\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport axios from \"axios\";\nimport { APP_AUTH_BASE_URL, URLS, requiredMetaData } from \"./constants.js\";\nimport { URLType } from \"./enum.js\";\nexport function fetchData(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const { path, body, queryParams, baseUrl = APP_AUTH_BASE_URL, apiKey = \"\", throwError = false, headers = { \"X-Api-Key\": apiKey, \"Content-Type\": \"application/json\" }, urlType = URLType.PROD, } = options;\n const apiUrl = `${getUrl({ urlName: baseUrl, urlType })}${path}${queryParams ? `?${new URLSearchParams(queryParams)}` : \"\"}`;\n try {\n const res = yield axios.post(apiUrl, body, { headers });\n if (res.status >= 200 && res.status < 300) {\n return res.data;\n }\n console.error(`Error: Unexpected response status ${res.status}`);\n if (throwError) {\n throw new Error(`Failed to upload`);\n }\n return {};\n }\n catch (error) {\n console.error(error, \"while uploading\");\n if (throwError) {\n throw new Error(`Failed to upload: ${(error === null || error === void 0 ? void 0 : error.message) || \"something went wrong\"}`);\n }\n return {};\n }\n });\n}\nexport function checkParameters(...args) {\n for (const element of args) {\n if (!element) {\n return false;\n }\n }\n return true;\n}\nexport function checkMetaDataValue(arr) {\n if (!checkValues(arr, requiredMetaData)) {\n return false;\n }\n let correctFormat = false;\n for (const obj of arr) {\n if (obj.callback_url && obj.callback_url.startsWith(\"https\")) {\n correctFormat = true;\n }\n }\n if (!correctFormat) {\n return false;\n }\n return true;\n}\nexport const checkValues = (arr, requiredMetaData) => {\n for (const key of requiredMetaData) {\n let hasRequiredKey = false;\n for (const obj of arr) {\n if (Object.prototype.hasOwnProperty.call(obj, key) &&\n obj[key] !== undefined &&\n obj[key] !== null &&\n obj[key] !== \"\" &&\n typeof obj[key] !== \"number\") {\n hasRequiredKey = true;\n break;\n }\n }\n if (!hasRequiredKey) {\n return false;\n }\n }\n return true;\n};\nexport const addScanType = (arr, scan_id, email) => {\n const scanType = arr.find((el) => el.scan_type);\n if (!scanType) {\n arr.push({ scan_type: \"clothing_scan\" });\n }\n arr.push({ scan_id });\n arr.push({ email });\n return arr;\n};\nexport function getFileChunks(file, chunkSize = 5 * 1024 * 1024) {\n const totalSize = file.size;\n const chunks = [];\n let start = 0;\n while (start < totalSize) {\n chunks.push(file.slice(start, start + chunkSize));\n start += chunkSize;\n }\n return chunks;\n}\nexport const getUrl = ({ urlName, urlType = URLType.PROD }) => {\n return URLS[urlType][urlName];\n};\nexport const isValidEmail = (email) => {\n const checkEmailValidation = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return checkEmailValidation.test(email);\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Auth_socketRef, _Auth_accessKey, _Auth_urlType;\nimport axios from \"axios\";\nimport { API_ENDPOINTS, APP_AUTH_BASE_URL, APP_BASE_WEBSOCKET_URL, REQUIRED_MESSAGE } from \"./constants.js\";\nimport { checkParameters, getUrl } from \"./utils.js\";\nimport { URLType } from \"./enum.js\";\nclass Auth {\n constructor(accessKey, urlType = URLType.PROD) {\n _Auth_socketRef.set(this, void 0);\n _Auth_accessKey.set(this, void 0);\n _Auth_urlType.set(this, void 0);\n __classPrivateFieldSet(this, _Auth_accessKey, accessKey, \"f\");\n __classPrivateFieldSet(this, _Auth_urlType, urlType, \"f\");\n }\n registerUser({ email, appVerifyUrl, gender, height, username }) {\n if (!checkParameters(email, appVerifyUrl)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n let body = { username, email, appVerifyUrl };\n if (gender && height) {\n body = Object.assign(Object.assign({}, body), { attributes: { gender, height } });\n }\n return axios.post(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _Auth_urlType, \"f\") })}${API_ENDPOINTS.REGISTER_USER}`, body, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Auth_accessKey, \"f\") },\n });\n }\n verifyToken(token) {\n if (!checkParameters(token)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.post(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _Auth_urlType, \"f\") })}${API_ENDPOINTS.VERIFY_USER}`, null, {\n params: { token },\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Auth_accessKey, \"f\") },\n });\n }\n addUser({ scanId, email, name, height, gender, offsetMarketingConsent }) {\n if (!checkParameters(scanId, email, height, gender)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.post(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _Auth_urlType, \"f\") })}${API_ENDPOINTS.ADD_USER}`, { scan_id: scanId, email, name, offsetMarketingConsent, attributes: JSON.stringify({ height, gender }) }, { headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Auth_accessKey, \"f\") } });\n }\n getUserDetail(email) {\n if (!checkParameters(email)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.get(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _Auth_urlType, \"f\") })}${API_ENDPOINTS.GET_USER_DETAIL}/${email}`, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Auth_accessKey, \"f\") },\n });\n }\n handleAuthSocket({ email, scanId, onError, onSuccess, onClose, onOpen }) {\n if (!checkParameters(email, scanId)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n if (__classPrivateFieldGet(this, _Auth_socketRef, \"f\"))\n __classPrivateFieldGet(this, _Auth_socketRef, \"f\").close();\n __classPrivateFieldSet(this, _Auth_socketRef, new WebSocket(`${getUrl({ urlName: APP_BASE_WEBSOCKET_URL, urlType: __classPrivateFieldGet(this, _Auth_urlType, \"f\") })}${API_ENDPOINTS.AUTH}`), \"f\");\n const detailObj = { email, scanId };\n if (__classPrivateFieldGet(this, _Auth_socketRef, \"f\")) {\n __classPrivateFieldGet(this, _Auth_socketRef, \"f\").onopen = () => {\n var _a;\n (_a = __classPrivateFieldGet(this, _Auth_socketRef, \"f\")) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify(detailObj));\n onOpen === null || onOpen === void 0 ? void 0 : onOpen();\n };\n __classPrivateFieldGet(this, _Auth_socketRef, \"f\").onmessage = (event) => {\n let data;\n try {\n data = JSON.parse(event.data);\n }\n catch (error) {\n console.log(data, error, \"noy correct format for data\");\n return;\n }\n data = JSON.parse(event.data);\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(data);\n };\n __classPrivateFieldGet(this, _Auth_socketRef, \"f\").onclose = () => {\n onClose === null || onClose === void 0 ? void 0 : onClose();\n };\n __classPrivateFieldGet(this, _Auth_socketRef, \"f\").onerror = (event) => {\n onError === null || onError === void 0 ? void 0 : onError(event);\n };\n }\n }\n}\n_Auth_socketRef = new WeakMap(), _Auth_accessKey = new WeakMap(), _Auth_urlType = new WeakMap();\nexport default Auth;\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Custom_accessKey, _Custom_urlType;\nimport axios from \"axios\";\nimport { API_ENDPOINTS, APP_AUTH_BASE_URL, REQUIRED_MESSAGE } from \"./constants.js\";\nimport { checkParameters, getUrl } from \"./utils.js\";\nimport { URLType } from \"./enum.js\";\nclass Custom {\n constructor(accessKey, urlType = URLType.PROD) {\n _Custom_accessKey.set(this, void 0);\n _Custom_urlType.set(this, void 0);\n this.getCustomCustomerConfig = (store_url) => {\n if (checkParameters(store_url) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.get(`${getUrl({\n urlName: APP_AUTH_BASE_URL,\n urlType: __classPrivateFieldGet(this, _Custom_urlType, \"f\"),\n })}${API_ENDPOINTS.CUSTOM_CUSTOMER}`, {\n params: { store_url },\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Custom_accessKey, \"f\") },\n });\n };\n this.getModelUrl = (id) => {\n if (checkParameters(id) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.get(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _Custom_urlType, \"f\") })}${API_ENDPOINTS.MODEL}/${id}`, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Custom_accessKey, \"f\") },\n });\n };\n __classPrivateFieldSet(this, _Custom_accessKey, accessKey, \"f\");\n __classPrivateFieldSet(this, _Custom_urlType, urlType, \"f\");\n }\n createCustomer(payload) {\n if (checkParameters(payload.name, payload.storeUrl, payload.email, payload.location) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.post(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _Custom_urlType, \"f\") })}${API_ENDPOINTS.CREATE_CUSTOMER}`, Object.assign(Object.assign({}, payload), { headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Custom_accessKey, \"f\") } }));\n }\n}\n_Custom_accessKey = new WeakMap(), _Custom_urlType = new WeakMap();\nexport default Custom;\n","function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n// We're using a generic because languages have different plural rules.\n\n// eslint-disable-next-line no-use-before-define\n\nfunction insertReplacement(source, rx, replacement) {\n const newParts = [];\n source.forEach(chunk => {\n // When the source contains multiple placeholders for interpolation,\n // we should ignore chunks that are not strings, because those\n // can be JSX objects and will be otherwise incorrectly turned into strings.\n // Without this condition we’d get this: [object Object] hello [object Object] my <button>\n if (typeof chunk !== 'string') {\n return newParts.push(chunk);\n }\n return rx[Symbol.split](chunk).forEach((raw, i, list) => {\n if (raw !== '') {\n newParts.push(raw);\n }\n\n // Interlace with the `replacement` value\n if (i < list.length - 1) {\n newParts.push(replacement);\n }\n });\n });\n return newParts;\n}\n\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param phrase that needs interpolation, with placeholders\n * @param options with values that will be used to replace placeholders\n */\nfunction interpolate(phrase, options) {\n const dollarRegex = /\\$/g;\n const dollarBillsYall = '$$$$';\n let interpolated = [phrase];\n if (options == null) return interpolated;\n for (const arg of Object.keys(options)) {\n if (arg !== '_') {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n let replacement = options[arg];\n if (typeof replacement === 'string') {\n replacement = dollarRegex[Symbol.replace](replacement, dollarBillsYall);\n }\n // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n interpolated = insertReplacement(interpolated, new RegExp(`%\\\\{${arg}\\\\}`, 'g'), replacement);\n }\n }\n return interpolated;\n}\nconst defaultOnMissingKey = key => {\n throw new Error(`missing string: ${key}`);\n};\n\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\nvar _onMissingKey = /*#__PURE__*/_classPrivateFieldLooseKey(\"onMissingKey\");\nvar _apply = /*#__PURE__*/_classPrivateFieldLooseKey(\"apply\");\nexport default class Translator {\n constructor(locales, _temp) {\n let {\n onMissingKey = defaultOnMissingKey\n } = _temp === void 0 ? {} : _temp;\n Object.defineProperty(this, _apply, {\n value: _apply2\n });\n Object.defineProperty(this, _onMissingKey, {\n writable: true,\n value: void 0\n });\n this.locale = {\n strings: {},\n pluralize(n) {\n if (n === 1) {\n return 0;\n }\n return 1;\n }\n };\n if (Array.isArray(locales)) {\n locales.forEach(_classPrivateFieldLooseBase(this, _apply)[_apply], this);\n } else {\n _classPrivateFieldLooseBase(this, _apply)[_apply](locales);\n }\n _classPrivateFieldLooseBase(this, _onMissingKey)[_onMissingKey] = onMissingKey;\n }\n /**\n * Public translate method\n *\n * @param key\n * @param options with values that will be used later to replace placeholders in string\n * @returns string translated (and interpolated)\n */\n translate(key, options) {\n return this.translateArray(key, options).join('');\n }\n\n /**\n * Get a translation and return the translated and interpolated parts as an array.\n *\n * @returns The translated and interpolated parts, in order.\n */\n translateArray(key, options) {\n let string = this.locale.strings[key];\n if (string == null) {\n _classPrivateFieldLooseBase(this, _onMissingKey)[_onMissingKey](key);\n string = key;\n }\n const hasPluralForms = typeof string === 'object';\n if (hasPluralForms) {\n if (options && typeof options.smart_count !== 'undefined') {\n const plural = this.locale.pluralize(options.smart_count);\n return interpolate(string[plural], options);\n }\n throw new Error('Attempted to use a string with plural forms, but no value was given for %{smart_count}');\n }\n if (typeof string !== 'string') {\n throw new Error(`string was not a string`);\n }\n return interpolate(string, options);\n }\n}\nfunction _apply2(locale) {\n if (!(locale != null && locale.strings)) {\n return;\n }\n const prevLocale = this.locale;\n Object.assign(this.locale, {\n strings: {\n ...prevLocale.strings,\n ...locale.strings\n },\n pluralize: locale.pluralize || prevLocale.pluralize\n });\n}","/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n* console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n* console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n var emitter = {}\n var _fns = emitter._fns = {}\n\n /**\n * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n * @name emit\n * @param {String} event – the name of the event, with optional namespace\n * @param {...*} data – up to 6 arguments that are passed to the event listener\n * @example\n * emitter.emit('example')\n * emitter.emit('demo:test')\n * emitter.emit('data', { example: true}, 'a string', 1)\n */\n emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n var toEmit = getListeners(event)\n\n if (toEmit.length) {\n emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n }\n }\n\n /**\n * Create en event listener.\n * @name on\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.on('example', function () {})\n * emitter.on('demo', function () {})\n */\n emitter.on = function on (event, fn) {\n if (!_fns[event]) {\n _fns[event] = []\n }\n\n _fns[event].push(fn)\n }\n\n /**\n * Create en event listener that fires once.\n * @name once\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.once('example', function () {})\n * emitter.once('demo', function () {})\n */\n emitter.once = function once (event, fn) {\n function one () {\n fn.apply(this, arguments)\n emitter.off(event, one)\n }\n this.on(event, one)\n }\n\n /**\n * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n * @name off\n * @param {String} event\n * @param {Function} [fn] – the specific handler\n * @example\n * emitter.off('example')\n * emitter.off('demo', function () {})\n */\n emitter.off = function off (event, fn) {\n var keep = []\n\n if (event && fn) {\n var fns = this._fns[event]\n var i = 0\n var l = fns ? fns.length : 0\n\n for (i; i < l; i++) {\n if (fns[i] !== fn) {\n keep.push(fns[i])\n }\n }\n }\n\n keep.length ? this._fns[event] = keep : delete this._fns[event]\n }\n\n function getListeners (e) {\n var out = _fns[e] ? _fns[e] : []\n var idx = e.indexOf(':')\n var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n var keys = Object.keys(_fns)\n var i = 0\n var l = keys.length\n\n for (i; i < l; i++) {\n var key = keys[i]\n if (key === '*') {\n out = out.concat(_fns[key])\n }\n\n if (args.length === 2 && args[0] === key) {\n out = out.concat(_fns[key])\n break\n }\n }\n\n return out\n }\n\n function emitAll (e, fns, args) {\n var i = 0\n var l = fns.length\n\n for (i; i < l; i++) {\n if (!fns[i]) break\n fns[i].event = e\n fns[i].apply(fns[i], args)\n }\n }\n\n return emitter\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"3.2.2\"\n};\nvar _callbacks = /*#__PURE__*/_classPrivateFieldLooseKey(\"callbacks\");\nvar _publish = /*#__PURE__*/_classPrivateFieldLooseKey(\"publish\");\n/**\n * Default store that keeps state in a simple object.\n */\nclass DefaultStore {\n constructor() {\n Object.defineProperty(this, _publish, {\n value: _publish2\n });\n this.state = {};\n Object.defineProperty(this, _callbacks, {\n writable: true,\n value: new Set()\n });\n }\n getState() {\n return this.state;\n }\n setState(patch) {\n const prevState = {\n ...this.state\n };\n const nextState = {\n ...this.state,\n ...patch\n };\n this.state = nextState;\n _classPrivateFieldLooseBase(this, _publish)[_publish](prevState, nextState, patch);\n }\n subscribe(listener) {\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].add(listener);\n return () => {\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].delete(listener);\n };\n }\n}\nfunction _publish2() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].forEach(listener => {\n listener(...args);\n });\n}\nDefaultStore.VERSION = packageJson.version;\nexport default DefaultStore;","/**\n * Takes a full filename string and returns an object {name, extension}\n */\nexport default function getFileNameAndExtension(fullFileName) {\n const lastDot = fullFileName.lastIndexOf('.');\n // these count as no extension: \"no-dot\", \"trailing-dot.\"\n if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n return {\n name: fullFileName,\n extension: undefined\n };\n }\n return {\n name: fullFileName.slice(0, lastDot),\n extension: fullFileName.slice(lastDot + 1)\n };\n}","// ___Why not add the mime-types package?\n// It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n// https://github.com/jshttp/mime-db/blob/master/db.json\n\nexport default {\n __proto__: null,\n md: 'text/markdown',\n markdown: 'text/markdown',\n mp4: 'video/mp4',\n mp3: 'audio/mp3',\n svg: 'image/svg+xml',\n jpg: 'image/jpeg',\n png: 'image/png',\n webp: 'image/webp',\n gif: 'image/gif',\n heic: 'image/heic',\n heif: 'image/heif',\n yaml: 'text/yaml',\n yml: 'text/yaml',\n csv: 'text/csv',\n tsv: 'text/tab-separated-values',\n tab: 'text/tab-separated-values',\n avi: 'video/x-msvideo',\n mks: 'video/x-matroska',\n mkv: 'video/x-matroska',\n mov: 'video/quicktime',\n dicom: 'application/dicom',\n doc: 'application/msword',\n docm: 'application/vnd.ms-word.document.macroenabled.12',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n dot: 'application/msword',\n dotm: 'application/vnd.ms-word.template.macroenabled.12',\n dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n xla: 'application/vnd.ms-excel',\n xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n xlc: 'application/vnd.ms-excel',\n xlf: 'application/x-xliff+xml',\n xlm: 'application/vnd.ms-excel',\n xls: 'application/vnd.ms-excel',\n xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n xlt: 'application/vnd.ms-excel',\n xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n xlw: 'application/vnd.ms-excel',\n txt: 'text/plain',\n text: 'text/plain',\n conf: 'text/plain',\n log: 'text/plain',\n pdf: 'application/pdf',\n zip: 'application/zip',\n '7z': 'application/x-7z-compressed',\n rar: 'application/x-rar-compressed',\n tar: 'application/x-tar',\n gz: 'application/gzip',\n dmg: 'application/x-apple-diskimage'\n};","import getFileNameAndExtension from \"./getFileNameAndExtension.js\";\nimport mimeTypes from \"./mimeTypes.js\";\nexport default function getFileType(file) {\n var _getFileNameAndExtens;\n if (file.type) return file.type;\n const fileExtension = file.name ? (_getFileNameAndExtens = getFileNameAndExtension(file.name).extension) == null ? void 0 : _getFileNameAndExtens.toLowerCase() : null;\n if (fileExtension && fileExtension in mimeTypes) {\n // else, see if we can map extension to a mime type\n return mimeTypes[fileExtension];\n }\n // if all fails, fall back to a generic byte stream type\n return 'application/octet-stream';\n}","import getFileType from \"./getFileType.js\";\nfunction encodeCharacter(character) {\n return character.charCodeAt(0).toString(32);\n}\nfunction encodeFilename(name) {\n let suffix = '';\n return name.replace(/[^A-Z0-9]/gi, character => {\n suffix += `-${encodeCharacter(character)}`;\n return '/';\n }) + suffix;\n}\n\n/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n */\nexport default function generateFileID(file, instanceId) {\n // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n // is slower! simple string concatenation is fast\n\n let id = instanceId || 'uppy';\n if (typeof file.name === 'string') {\n id += `-${encodeFilename(file.name.toLowerCase())}`;\n }\n if (file.type !== undefined) {\n id += `-${file.type}`;\n }\n if (file.meta && typeof file.meta.relativePath === 'string') {\n id += `-${encodeFilename(file.meta.relativePath.toLowerCase())}`;\n }\n if (file.data.size !== undefined) {\n id += `-${file.data.size}`;\n }\n if (file.data.lastModified !== undefined) {\n id += `-${file.data.lastModified}`;\n }\n return id;\n}\n\n// If the provider has a stable, unique ID, then we can use that to identify the file.\n// Then we don't have to generate our own ID, and we can add the same file many times if needed (different path)\nfunction hasFileStableId(file) {\n if (!file.isRemote || !file.remote) return false;\n // These are the providers that it seems like have stable IDs for their files. The other's I haven't checked yet.\n const stableIdProviders = new Set(['box', 'dropbox', 'drive', 'facebook', 'unsplash']);\n return stableIdProviders.has(file.remote.provider);\n}\nexport function getSafeFileId(file, instanceId) {\n if (hasFileStableId(file)) return file.id;\n const fileType = getFileType(file);\n return generateFileID({\n ...file,\n type: fileType\n }, instanceId);\n}","// Edge 15.x does not fire 'progress' events on uploads.\n// See https://github.com/transloadit/uppy/issues/945\n// And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/\nexport default function supportsUploadProgress(userAgent) {\n // Allow passing in userAgent for tests\n if (userAgent == null && typeof navigator !== 'undefined') {\n // eslint-disable-next-line no-param-reassign\n userAgent = navigator.userAgent;\n }\n // Assume it works because basically everything supports progress events.\n if (!userAgent) return true;\n const m = /Edge\\/(\\d+\\.\\d+)/.exec(userAgent);\n if (!m) return true;\n const edgeVersion = m[1];\n const version = edgeVersion.split('.', 2);\n const major = parseInt(version[0], 10);\n const minor = parseInt(version[1], 10);\n\n // Worked before:\n // Edge 40.15063.0.0\n // Microsoft EdgeHTML 15.15063\n if (major < 15 || major === 15 && minor < 15063) {\n return true;\n }\n\n // Fixed in:\n // Microsoft EdgeHTML 18.18218\n if (major > 18 || major === 18 && minor >= 18218) {\n return true;\n }\n\n // other versions don't work.\n return false;\n}","/**\n * Adds zero to strings shorter than two characters.\n */\nfunction pad(number) {\n return number < 10 ? `0${number}` : number.toString();\n}\n\n/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n */\nexport default function getTimeStamp() {\n const date = new Date();\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n return `${hours}:${minutes}:${seconds}`;\n}","/* eslint-disable no-console */\nimport getTimeStamp from '@uppy/utils/lib/getTimeStamp';\n\n// Swallow all logs, except errors.\n// default if logger is not set or debug: false\nconst justErrorsLogger = {\n debug: () => {},\n warn: () => {},\n error: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n }\n};\n\n// Print logs to console with namespace + timestamp,\n// set by logger: Uppy.debugLogger or debug: true\nconst debugLogger = {\n debug: function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return console.debug(`[Uppy] [${getTimeStamp()}]`, ...args);\n },\n warn: function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return console.warn(`[Uppy] [${getTimeStamp()}]`, ...args);\n },\n error: function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n }\n};\nexport { justErrorsLogger, debugLogger };","\"use strict\";\nmodule.exports = function prettierBytes(input) {\n if (typeof input !== 'number' || Number.isNaN(input)) {\n throw new TypeError(`Expected a number, got ${typeof input}`);\n }\n const neg = input < 0;\n let num = Math.abs(input);\n if (neg) {\n num = -num;\n }\n if (num === 0) {\n return '0 B';\n }\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1);\n const value = Number(num / 1024 ** exponent);\n const unit = units[exponent];\n return `${value >= 10 || value % 1 === 0 ? Math.round(value) : value.toFixed(1)} ${unit}`;\n};\n//# sourceMappingURL=prettierBytes.js.map","/* jshint node: true */\n'use strict';\n\n/**\n # wildcard\n\n Very simple wildcard matching, which is designed to provide the same\n functionality that is found in the\n [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n ## Usage\n\n It works with strings:\n\n <<< examples/strings.js\n\n Arrays:\n\n <<< examples/arrays.js\n\n Objects (matching against keys):\n\n <<< examples/objects.js\n\n While the library works in Node, if you are are looking for file-based\n wildcard matching then you should have a look at:\n\n <https://github.com/isaacs/node-glob>\n**/\n\nfunction WildcardMatcher(text, separator) {\n this.text = text = text || '';\n this.hasWild = ~text.indexOf('*');\n this.separator = separator;\n this.parts = text.split(separator);\n}\n\nWildcardMatcher.prototype.match = function(input) {\n var matches = true;\n var parts = this.parts;\n var ii;\n var partsCount = parts.length;\n var testParts;\n\n if (typeof input == 'string' || input instanceof String) {\n if (!this.hasWild && this.text != input) {\n matches = false;\n } else {\n testParts = (input || '').split(this.separator);\n for (ii = 0; matches && ii < partsCount; ii++) {\n if (parts[ii] === '*') {\n continue;\n } else if (ii < testParts.length) {\n matches = parts[ii] === testParts[ii];\n } else {\n matches = false;\n }\n }\n\n // If matches, then return the component parts\n matches = matches && testParts;\n }\n }\n else if (typeof input.splice == 'function') {\n matches = [];\n\n for (ii = input.length; ii--; ) {\n if (this.match(input[ii])) {\n matches[matches.length] = input[ii];\n }\n }\n }\n else if (typeof input == 'object') {\n matches = {};\n\n for (var key in input) {\n if (this.match(key)) {\n matches[key] = input[key];\n }\n }\n }\n\n return matches;\n};\n\nmodule.exports = function(text, test, separator) {\n var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n if (typeof test != 'undefined') {\n return matcher.match(test);\n }\n\n return matcher;\n};\n","var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n # mime-match\n\n A simple function to checker whether a target mime type matches a mime-type\n pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n ## Example Usage\n\n <<< example.js\n\n**/\nmodule.exports = function(target, pattern) {\n function test(pattern) {\n var result = wildcard(pattern, target, reMimePartSplit);\n\n // ensure that we have a valid mime type (should have two parts)\n return result && result.length >= 2;\n }\n\n return pattern ? test(pattern.split(';')[0]) : test;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable max-classes-per-file, class-methods-use-this */\nimport prettierBytes from '@transloadit/prettier-bytes';\n// @ts-ignore untyped\nimport match from 'mime-match';\n\n/**\n * The minimal required properties to be present from UppyFile in order to validate it.\n */\n\nconst defaultOptions = {\n maxFileSize: null,\n minFileSize: null,\n maxTotalFileSize: null,\n maxNumberOfFiles: null,\n minNumberOfFiles: null,\n allowedFileTypes: null,\n requiredMetaFields: []\n};\nclass RestrictionError extends Error {\n constructor(message, opts) {\n var _opts$isUserFacing;\n super(message);\n this.isRestriction = true;\n this.isUserFacing = (_opts$isUserFacing = opts == null ? void 0 : opts.isUserFacing) != null ? _opts$isUserFacing : true;\n if (opts != null && opts.file) {\n this.file = opts.file; // only some restriction errors are related to a particular file\n }\n }\n}\nclass Restricter {\n constructor(getOpts, getI18n) {\n this.getI18n = getI18n;\n this.getOpts = () => {\n var _opts$restrictions;\n const opts = getOpts();\n if (((_opts$restrictions = opts.restrictions) == null ? void 0 : _opts$restrictions.allowedFileTypes) != null && !Array.isArray(opts.restrictions.allowedFileTypes)) {\n throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n }\n return opts;\n };\n }\n\n // Because these operations are slow, we cannot run them for every file (if we are adding multiple files)\n validateAggregateRestrictions(existingFiles, addingFiles) {\n const {\n maxTotalFileSize,\n maxNumberOfFiles\n } = this.getOpts().restrictions;\n if (maxNumberOfFiles) {\n const nonGhostFiles = existingFiles.filter(f => !f.isGhost);\n if (nonGhostFiles.length + addingFiles.length > maxNumberOfFiles) {\n throw new RestrictionError(`${this.getI18n()('youCanOnlyUploadX', {\n smart_count: maxNumberOfFiles\n })}`);\n }\n }\n if (maxTotalFileSize) {\n const totalFilesSize = [...existingFiles, ...addingFiles].reduce((total, f) => {\n var _f$size;\n return total + ((_f$size = f.size) != null ? _f$size : 0);\n }, 0);\n if (totalFilesSize > maxTotalFileSize) {\n throw new RestrictionError(this.getI18n()('aggregateExceedsSize', {\n sizeAllowed: prettierBytes(maxTotalFileSize),\n size: prettierBytes(totalFilesSize)\n }));\n }\n }\n }\n validateSingleFile(file) {\n const {\n maxFileSize,\n minFileSize,\n allowedFileTypes\n } = this.getOpts().restrictions;\n if (allowedFileTypes) {\n const isCorrectFileType = allowedFileTypes.some(type => {\n // check if this is a mime-type\n if (type.includes('/')) {\n if (!file.type) return false;\n return match(file.type.replace(/;.*?$/, ''), type);\n }\n\n // otherwise this is likely an extension\n if (type[0] === '.' && file.extension) {\n return file.extension.toLowerCase() === type.slice(1).toLowerCase();\n }\n return false;\n });\n if (!isCorrectFileType) {\n const allowedFileTypesString = allowedFileTypes.join(', ');\n throw new RestrictionError(this.getI18n()('youCanOnlyUploadFileTypes', {\n types: allowedFileTypesString\n }), {\n file\n });\n }\n }\n\n // We can't check maxFileSize if the size is unknown.\n if (maxFileSize && file.size != null && file.size > maxFileSize) {\n throw new RestrictionError(this.getI18n()('exceedsSize', {\n size: prettierBytes(maxFileSize),\n file: file.name\n }), {\n file\n });\n }\n\n // We can't check minFileSize if the size is unknown.\n if (minFileSize && file.size != null && file.size < minFileSize) {\n throw new RestrictionError(this.getI18n()('inferiorSize', {\n size: prettierBytes(minFileSize)\n }), {\n file\n });\n }\n }\n validate(existingFiles, addingFiles) {\n addingFiles.forEach(addingFile => {\n this.validateSingleFile(addingFile);\n });\n this.validateAggregateRestrictions(existingFiles, addingFiles);\n }\n validateMinNumberOfFiles(files) {\n const {\n minNumberOfFiles\n } = this.getOpts().restrictions;\n if (minNumberOfFiles && Object.keys(files).length < minNumberOfFiles) {\n throw new RestrictionError(this.getI18n()('youHaveToAtLeastSelectX', {\n smart_count: minNumberOfFiles\n }));\n }\n }\n getMissingRequiredMetaFields(file) {\n const error = new RestrictionError(this.getI18n()('missingRequiredMetaFieldOnFile', {\n fileName: file.name\n }));\n const {\n requiredMetaFields\n } = this.getOpts().restrictions;\n const missingFields = [];\n for (const field of requiredMetaFields) {\n if (!Object.hasOwn(file.meta, field) || file.meta[field] === '') {\n missingFields.push(field);\n }\n }\n return {\n missingFields,\n error\n };\n }\n}\nexport { Restricter, defaultOptions, RestrictionError };","export default {\n strings: {\n addBulkFilesFailed: {\n 0: 'Failed to add %{smart_count} file due to an internal error',\n 1: 'Failed to add %{smart_count} files due to internal errors'\n },\n youCanOnlyUploadX: {\n 0: 'You can only upload %{smart_count} file',\n 1: 'You can only upload %{smart_count} files'\n },\n youHaveToAtLeastSelectX: {\n 0: 'You have to select at least %{smart_count} file',\n 1: 'You have to select at least %{smart_count} files'\n },\n aggregateExceedsSize: 'You selected %{size} of files, but maximum allowed size is %{sizeAllowed}',\n exceedsSize: '%{file} exceeds maximum allowed size of %{size}',\n missingRequiredMetaField: 'Missing required meta fields',\n missingRequiredMetaFieldOnFile: 'Missing required meta fields in %{fileName}',\n inferiorSize: 'This file is smaller than the allowed size of %{size}',\n youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n noMoreFilesAllowed: 'Cannot add more files',\n noDuplicates: \"Cannot add the duplicate file '%{fileName}', it already exists\",\n companionError: 'Connection with Companion failed',\n authAborted: 'Authentication aborted',\n companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n failedToUpload: 'Failed to upload %{file}',\n noInternetConnection: 'No Internet connection',\n connectedToInternet: 'Connected to the Internet',\n // Strings for remote providers\n noFilesFound: 'You have no files or folders here',\n noSearchResults: 'Unfortunately, there are no results for this search',\n selectX: {\n 0: 'Select %{smart_count}',\n 1: 'Select %{smart_count}'\n },\n allFilesFromFolderNamed: 'All files from folder %{name}',\n openFolderNamed: 'Open folder %{name}',\n cancel: 'Cancel',\n logOut: 'Log out',\n filter: 'Filter',\n resetFilter: 'Reset filter',\n loading: 'Loading...',\n loadedXFiles: 'Loaded %{numFiles} files',\n authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n authenticateWith: 'Connect to %{pluginName}',\n signInWithGoogle: 'Sign in with Google',\n searchImages: 'Search for images',\n enterTextToSearch: 'Enter text to search for images',\n search: 'Search',\n resetSearch: 'Reset search',\n emptyFolderAdded: 'No files were added from empty folder',\n addedNumFiles: 'Added %{numFiles} file(s)',\n folderAlreadyAdded: 'The folder \"%{folder}\" was already added',\n folderAdded: {\n 0: 'Added %{smart_count} file from %{folder}',\n 1: 'Added %{smart_count} files from %{folder}'\n },\n additionalRestrictionsFailed: '%{count} additional restrictions were not fulfilled',\n unnamed: 'Unnamed'\n }\n};","let _Symbol$for, _Symbol$for2;\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n/* eslint-disable max-classes-per-file */\n/* global AggregateError */\n\nimport Translator from '@uppy/utils/lib/Translator';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\nimport ee from 'namespace-emitter';\nimport { nanoid } from 'nanoid/non-secure';\nimport throttle from 'lodash/throttle.js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore store-default types not always available on that branch\nimport DefaultStore from '@uppy/store-default';\nimport getFileType from '@uppy/utils/lib/getFileType';\nimport getFileNameAndExtension from '@uppy/utils/lib/getFileNameAndExtension';\nimport { getSafeFileId } from '@uppy/utils/lib/generateFileID';\nimport supportsUploadProgress from \"./supportsUploadProgress.js\";\nimport getFileName from \"./getFileName.js\";\nimport { justErrorsLogger, debugLogger } from \"./loggers.js\";\nimport { Restricter, defaultOptions as defaultRestrictionOptions, RestrictionError } from \"./Restricter.js\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"3.13.1\"\n};\nimport locale from \"./locale.js\";\n\n/*\n * UnknownProviderPlugin can be any Companion plugin (such as Google Drive).\n * As the plugins are passed around throughout Uppy we need a generic type for this.\n * It may seems like duplication, but this type safe. Changing the type of `storage`\n * will error in the `Provider` class of @uppy/companion-client and vice versa.\n *\n * Note that this is the *plugin* class, not a version of the `Provider` class.\n * `Provider` does operate on Companion plugins with `uppy.getPlugin()`.\n */\n\n/*\n * UnknownSearchProviderPlugin can be any search Companion plugin (such as Unsplash).\n * As the plugins are passed around throughout Uppy we need a generic type for this.\n * It may seems like duplication, but this type safe. Changing the type of `title`\n * will error in the `SearchProvider` class of @uppy/companion-client and vice versa.\n *\n * Note that this is the *plugin* class, not a version of the `SearchProvider` class.\n * `SearchProvider` does operate on Companion plugins with `uppy.getPlugin()`.\n */\n\n// TODO: can we use namespaces in other plugins to populate this?\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\n\n// The user facing type for UppyOptions used in uppy.setOptions()\n\n/** @deprecated */\n\nconst defaultUploadState = {\n totalProgress: 0,\n allowNewUpload: true,\n error: null,\n recoveredState: null\n};\n\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\nvar _plugins = /*#__PURE__*/_classPrivateFieldLooseKey(\"plugins\");\nvar _restricter = /*#__PURE__*/_classPrivateFieldLooseKey(\"restricter\");\nvar _storeUnsubscribe = /*#__PURE__*/_classPrivateFieldLooseKey(\"storeUnsubscribe\");\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\nvar _preProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"preProcessors\");\nvar _uploaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploaders\");\nvar _postProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"postProcessors\");\nvar _informAndEmit = /*#__PURE__*/_classPrivateFieldLooseKey(\"informAndEmit\");\nvar _checkRequiredMetaFieldsOnFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFieldsOnFile\");\nvar _checkRequiredMetaFields = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFields\");\nvar _assertNewUploadAllowed = /*#__PURE__*/_classPrivateFieldLooseKey(\"assertNewUploadAllowed\");\nvar _transformFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"transformFile\");\nvar _startIfAutoProceed = /*#__PURE__*/_classPrivateFieldLooseKey(\"startIfAutoProceed\");\nvar _checkAndUpdateFileState = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkAndUpdateFileState\");\nvar _addListeners = /*#__PURE__*/_classPrivateFieldLooseKey(\"addListeners\");\nvar _updateOnlineStatus = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateOnlineStatus\");\nvar _requestClientById = /*#__PURE__*/_classPrivateFieldLooseKey(\"requestClientById\");\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\nvar _getUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUpload\");\nvar _removeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"removeUpload\");\nvar _runUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"runUpload\");\n_Symbol$for = Symbol.for('uppy test: getPlugins');\n_Symbol$for2 = Symbol.for('uppy test: createUpload');\nexport class Uppy {\n /**\n * Instantiate Uppy\n */\n constructor(_opts) {\n /**\n * Run an upload. This picks up where it left off in case the upload is being restored.\n */\n Object.defineProperty(this, _runUpload, {\n value: _runUpload2\n });\n /**\n * Remove an upload, eg. if it has been canceled or completed.\n *\n */\n Object.defineProperty(this, _removeUpload, {\n value: _removeUpload2\n });\n Object.defineProperty(this, _getUpload, {\n value: _getUpload2\n });\n /**\n * Create an upload for a bunch of files.\n *\n */\n Object.defineProperty(this, _createUpload, {\n value: _createUpload2\n });\n /**\n * Registers listeners for all global actions, like:\n * `error`, `file-removed`, `upload-progress`\n */\n Object.defineProperty(this, _addListeners, {\n value: _addListeners2\n });\n Object.defineProperty(this, _checkAndUpdateFileState, {\n value: _checkAndUpdateFileState2\n });\n // Schedule an upload if `autoProceed` is enabled.\n Object.defineProperty(this, _startIfAutoProceed, {\n value: _startIfAutoProceed2\n });\n /**\n * Create a file state object based on user-provided `addFile()` options.\n */\n Object.defineProperty(this, _transformFile, {\n value: _transformFile2\n });\n Object.defineProperty(this, _assertNewUploadAllowed, {\n value: _assertNewUploadAllowed2\n });\n Object.defineProperty(this, _checkRequiredMetaFields, {\n value: _checkRequiredMetaFields2\n });\n Object.defineProperty(this, _checkRequiredMetaFieldsOnFile, {\n value: _checkRequiredMetaFieldsOnFile2\n });\n Object.defineProperty(this, _informAndEmit, {\n value: _informAndEmit2\n });\n Object.defineProperty(this, _plugins, {\n writable: true,\n value: Object.create(null)\n });\n Object.defineProperty(this, _restricter, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _storeUnsubscribe, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _emitter, {\n writable: true,\n value: ee()\n });\n Object.defineProperty(this, _preProcessors, {\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, _uploaders, {\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, _postProcessors, {\n writable: true,\n value: new Set()\n });\n this.scheduledAutoProceed = null;\n this.wasOffline = false;\n // ___Why throttle at 500ms?\n // - We must throttle at >250ms for superfocus in Dashboard to work well\n // (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n // [Practical Check]: if thottle is at 100ms, then if you are uploading a file,\n // and click 'ADD MORE FILES', - focus won't activate in Firefox.\n // - We must throttle at around >500ms to avoid performance lags.\n // [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n // todo when uploading multiple files, this will cause problems because they share the same throttle,\n // meaning some files might never get their progress reported (eaten up by progress events from other files)\n this.calculateProgress = throttle((file, data) => {\n const fileInState = this.getFile(file == null ? void 0 : file.id);\n if (file == null || !fileInState) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n if (fileInState.progress.percentage === 100) {\n this.log(`Not setting progress for a file that has been already uploaded: ${file.id}`);\n return;\n }\n\n // bytesTotal may be null or zero; in that case we can't divide by it\n const canHavePercentage = Number.isFinite(data.bytesTotal) && data.bytesTotal > 0;\n this.setFileState(file.id, {\n progress: {\n ...fileInState.progress,\n bytesUploaded: data.bytesUploaded,\n bytesTotal: data.bytesTotal,\n percentage: canHavePercentage ? Math.round(data.bytesUploaded / data.bytesTotal * 100) : 0\n }\n });\n this.calculateTotalProgress();\n }, 500, {\n leading: true,\n trailing: true\n });\n Object.defineProperty(this, _updateOnlineStatus, {\n writable: true,\n value: this.updateOnlineStatus.bind(this)\n });\n // We need to store request clients by a unique ID, so we can share RequestClient instances across files\n // this allows us to do rate limiting and synchronous operations like refreshing provider tokens\n // example: refreshing tokens: if each file has their own requestclient,\n // we don't have any way to synchronize all requests in order to\n // - block all requests\n // - refresh the token\n // - unblock all requests and allow them to run with a the new access token\n // back when we had a requestclient per file, once an access token expired,\n // all 6 files would go ahead and refresh the token at the same time\n // (calling /refresh-token up to 6 times), which will probably fail for some providers\n Object.defineProperty(this, _requestClientById, {\n writable: true,\n value: new Map()\n });\n this.defaultLocale = locale;\n const defaultOptions = {\n id: 'uppy',\n autoProceed: false,\n allowMultipleUploadBatches: true,\n debug: false,\n restrictions: defaultRestrictionOptions,\n meta: {},\n onBeforeFileAdded: (file, files) => !Object.hasOwn(files, file.id),\n onBeforeUpload: files => files,\n store: new DefaultStore(),\n logger: justErrorsLogger,\n infoTimeout: 5000\n };\n const merged = {\n ...defaultOptions,\n ..._opts\n };\n // Merge default options with the ones set by user,\n // making sure to merge restrictions too\n this.opts = {\n ...merged,\n restrictions: {\n ...defaultOptions.restrictions,\n ...(_opts && _opts.restrictions)\n }\n };\n\n // Support debug: true for backwards-compatability, unless logger is set in opts\n // opts instead of this.opts to avoid comparing objects — we set logger: justErrorsLogger in defaultOptions\n if (_opts && _opts.logger && _opts.debug) {\n this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n } else if (_opts && _opts.debug) {\n this.opts.logger = debugLogger;\n }\n this.log(`Using Core v${Uppy.VERSION}`);\n this.i18nInit();\n this.store = this.opts.store;\n this.setState({\n ...defaultUploadState,\n plugins: {},\n files: {},\n currentUploads: {},\n capabilities: {\n uploadProgress: supportsUploadProgress(),\n individualCancellation: true,\n resumableUploads: false\n },\n meta: {\n ...this.opts.meta\n },\n info: []\n });\n _classPrivateFieldLooseBase(this, _restricter)[_restricter] = new Restricter(() => this.opts, () => this.i18n);\n _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe] = this.store.subscribe(\n // eslint-disable-next-line\n // @ts-ignore Store is incorrectly typed\n (prevState, nextState, patch) => {\n // eslint-disable-next-line\n // @ts-ignore Store is incorrectly typed\n this.emit('state-update', prevState, nextState, patch);\n this.updateAll(nextState);\n });\n\n // Exposing uppy object on window for debugging and testing\n if (this.opts.debug && typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Mutating the global object for debug purposes\n window[this.opts.id] = this;\n }\n _classPrivateFieldLooseBase(this, _addListeners)[_addListeners]();\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].emit(event, ...args);\n }\n on(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, callback);\n return this;\n }\n once(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].once(event, callback);\n return this;\n }\n off(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, callback);\n return this;\n }\n\n /**\n * Iterate on all plugins and run `update` on them.\n * Called each time state changes.\n *\n */\n updateAll(state) {\n this.iteratePlugins(plugin => {\n plugin.update(state);\n });\n }\n\n /**\n * Updates state with a patch\n */\n setState(patch) {\n // eslint-disable-next-line\n // @ts-ignore Store is incorrectly typed\n this.store.setState(patch);\n }\n\n /**\n * Returns current state.\n */\n getState() {\n // eslint-disable-next-line\n // @ts-ignore Store is incorrectly typed\n return this.store.getState();\n }\n patchFilesState(filesWithNewState) {\n const existingFilesState = this.getState().files;\n this.setState({\n files: {\n ...existingFilesState,\n ...Object.fromEntries(Object.entries(filesWithNewState).map(_ref => {\n let [fileID, newFileState] = _ref;\n return [fileID, {\n ...existingFilesState[fileID],\n ...newFileState\n }];\n }))\n }\n });\n }\n\n /**\n * Shorthand to set state for a specific file.\n */\n setFileState(fileID, state) {\n if (!this.getState().files[fileID]) {\n throw new Error(`Can’t set state for ${fileID} (the file could have been removed)`);\n }\n this.patchFilesState({\n [fileID]: state\n });\n }\n i18nInit() {\n const onMissingKey = key => this.log(`Missing i18n string: ${key}`, 'error');\n const translator = new Translator([this.defaultLocale, this.opts.locale], {\n onMissingKey\n });\n this.i18n = translator.translate.bind(translator);\n this.i18nArray = translator.translateArray.bind(translator);\n this.locale = translator.locale;\n }\n setOptions(newOpts) {\n this.opts = {\n ...this.opts,\n ...newOpts,\n restrictions: {\n ...this.opts.restrictions,\n ...(newOpts == null ? void 0 : newOpts.restrictions)\n }\n };\n if (newOpts.meta) {\n this.setMeta(newOpts.meta);\n }\n this.i18nInit();\n if (newOpts.locale) {\n this.iteratePlugins(plugin => {\n plugin.setOptions(newOpts);\n });\n }\n\n // Note: this is not the preact `setState`, it's an internal function that has the same name.\n this.setState(undefined); // so that UI re-renders with new options\n }\n\n // todo next major: remove\n resetProgress() {\n const defaultProgress = {\n percentage: 0,\n bytesUploaded: 0,\n uploadComplete: false,\n uploadStarted: null\n };\n const files = {\n ...this.getState().files\n };\n const updatedFiles = {};\n Object.keys(files).forEach(fileID => {\n updatedFiles[fileID] = {\n ...files[fileID],\n progress: {\n ...files[fileID].progress,\n ...defaultProgress\n }\n };\n });\n this.setState({\n files: updatedFiles,\n ...defaultUploadState\n });\n this.emit('reset-progress');\n }\n\n // @todo next major: rename to `clear()`, make it also cancel ongoing uploads\n // or throw and say you need to cancel manually\n clearUploadedFiles() {\n const {\n capabilities,\n currentUploads\n } = this.getState();\n if (Object.keys(currentUploads).length > 0 && !capabilities.individualCancellation) {\n throw new Error('The installed uploader plugin does not allow removing files during an upload.');\n }\n this.setState({\n ...defaultUploadState,\n files: {}\n });\n }\n addPreProcessor(fn) {\n _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].add(fn);\n }\n removePreProcessor(fn) {\n return _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].delete(fn);\n }\n addPostProcessor(fn) {\n _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].add(fn);\n }\n removePostProcessor(fn) {\n return _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].delete(fn);\n }\n addUploader(fn) {\n _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].add(fn);\n }\n removeUploader(fn) {\n return _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].delete(fn);\n }\n setMeta(data) {\n const updatedMeta = {\n ...this.getState().meta,\n ...data\n };\n const updatedFiles = {\n ...this.getState().files\n };\n Object.keys(updatedFiles).forEach(fileID => {\n updatedFiles[fileID] = {\n ...updatedFiles[fileID],\n meta: {\n ...updatedFiles[fileID].meta,\n ...data\n }\n };\n });\n this.log('Adding metadata:');\n this.log(data);\n this.setState({\n meta: updatedMeta,\n files: updatedFiles\n });\n }\n setFileMeta(fileID, data) {\n const updatedFiles = {\n ...this.getState().files\n };\n if (!updatedFiles[fileID]) {\n this.log('Was trying to set metadata for a file that has been removed: ', fileID);\n return;\n }\n const newMeta = {\n ...updatedFiles[fileID].meta,\n ...data\n };\n updatedFiles[fileID] = {\n ...updatedFiles[fileID],\n meta: newMeta\n };\n this.setState({\n files: updatedFiles\n });\n }\n\n /**\n * Get a file object.\n */\n getFile(fileID) {\n return this.getState().files[fileID];\n }\n\n /**\n * Get all files in an array.\n */\n getFiles() {\n const {\n files\n } = this.getState();\n return Object.values(files);\n }\n getFilesByIds(ids) {\n return ids.map(id => this.getFile(id));\n }\n getObjectOfFilesPerState() {\n const {\n files: filesObject,\n totalProgress,\n error\n } = this.getState();\n const files = Object.values(filesObject);\n const inProgressFiles = [];\n const newFiles = [];\n const startedFiles = [];\n const uploadStartedFiles = [];\n const pausedFiles = [];\n const completeFiles = [];\n const erroredFiles = [];\n const inProgressNotPausedFiles = [];\n const processingFiles = [];\n for (const file of files) {\n const {\n progress\n } = file;\n if (!progress.uploadComplete && progress.uploadStarted) {\n inProgressFiles.push(file);\n if (!file.isPaused) {\n inProgressNotPausedFiles.push(file);\n }\n }\n if (!progress.uploadStarted) {\n newFiles.push(file);\n }\n if (progress.uploadStarted || progress.preprocess || progress.postprocess) {\n startedFiles.push(file);\n }\n if (progress.uploadStarted) {\n uploadStartedFiles.push(file);\n }\n if (file.isPaused) {\n pausedFiles.push(file);\n }\n if (progress.uploadComplete) {\n completeFiles.push(file);\n }\n if (file.error) {\n erroredFiles.push(file);\n }\n if (progress.preprocess || progress.postprocess) {\n processingFiles.push(file);\n }\n }\n return {\n newFiles,\n startedFiles,\n uploadStartedFiles,\n pausedFiles,\n completeFiles,\n erroredFiles,\n inProgressFiles,\n inProgressNotPausedFiles,\n processingFiles,\n isUploadStarted: uploadStartedFiles.length > 0,\n isAllComplete: totalProgress === 100 && completeFiles.length === files.length && processingFiles.length === 0,\n isAllErrored: !!error && erroredFiles.length === files.length,\n isAllPaused: inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length,\n isUploadInProgress: inProgressFiles.length > 0,\n isSomeGhost: files.some(file => file.isGhost)\n };\n }\n validateRestrictions(file, files) {\n if (files === void 0) {\n files = this.getFiles();\n }\n try {\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validate(files, [file]);\n } catch (err) {\n return err;\n }\n return null;\n }\n checkIfFileAlreadyExists(fileID) {\n const {\n files\n } = this.getState();\n if (files[fileID] && !files[fileID].isGhost) {\n return true;\n }\n return false;\n }\n /**\n * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n * try to guess file type in a clever way, check file against restrictions,\n * and start an upload if `autoProceed === true`.\n */\n addFile(file) {\n _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](file);\n const {\n nextFilesState,\n validFilesToAdd,\n errors\n } = _classPrivateFieldLooseBase(this, _checkAndUpdateFileState)[_checkAndUpdateFileState]([file]);\n const restrictionErrors = errors.filter(error => error.isRestriction);\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](restrictionErrors);\n if (errors.length > 0) throw errors[0];\n this.setState({\n files: nextFilesState\n });\n const [firstValidFileToAdd] = validFilesToAdd;\n this.emit('file-added', firstValidFileToAdd);\n this.emit('files-added', validFilesToAdd);\n this.log(`Added file: ${firstValidFileToAdd.name}, ${firstValidFileToAdd.id}, mime type: ${firstValidFileToAdd.type}`);\n _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n return firstValidFileToAdd.id;\n }\n\n /**\n * Add multiple files to `state.files`. See the `addFile()` documentation.\n *\n * If an error occurs while adding a file, it is logged and the user is notified.\n * This is good for UI plugins, but not for programmatic use.\n * Programmatic users should usually still use `addFile()` on individual files.\n */\n addFiles(fileDescriptors) {\n _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed]();\n const {\n nextFilesState,\n validFilesToAdd,\n errors\n } = _classPrivateFieldLooseBase(this, _checkAndUpdateFileState)[_checkAndUpdateFileState](fileDescriptors);\n const restrictionErrors = errors.filter(error => error.isRestriction);\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](restrictionErrors);\n const nonRestrictionErrors = errors.filter(error => !error.isRestriction);\n if (nonRestrictionErrors.length > 0) {\n let message = 'Multiple errors occurred while adding files:\\n';\n nonRestrictionErrors.forEach(subError => {\n message += `\\n * ${subError.message}`;\n });\n this.info({\n message: this.i18n('addBulkFilesFailed', {\n smart_count: nonRestrictionErrors.length\n }),\n details: message\n }, 'error', this.opts.infoTimeout);\n if (typeof AggregateError === 'function') {\n throw new AggregateError(nonRestrictionErrors, message);\n } else {\n const err = new Error(message);\n // @ts-expect-error fallback when AggregateError is not available\n err.errors = nonRestrictionErrors;\n throw err;\n }\n }\n\n // OK, we haven't thrown an error, we can start updating state and emitting events now:\n\n this.setState({\n files: nextFilesState\n });\n validFilesToAdd.forEach(file => {\n this.emit('file-added', file);\n });\n this.emit('files-added', validFilesToAdd);\n if (validFilesToAdd.length > 5) {\n this.log(`Added batch of ${validFilesToAdd.length} files`);\n } else {\n Object.values(validFilesToAdd).forEach(file => {\n this.log(`Added file: ${file.name}\\n id: ${file.id}\\n type: ${file.type}`);\n });\n }\n if (validFilesToAdd.length > 0) {\n _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n }\n }\n removeFiles(fileIDs, reason) {\n const {\n files,\n currentUploads\n } = this.getState();\n const updatedFiles = {\n ...files\n };\n const updatedUploads = {\n ...currentUploads\n };\n const removedFiles = Object.create(null);\n fileIDs.forEach(fileID => {\n if (files[fileID]) {\n removedFiles[fileID] = files[fileID];\n delete updatedFiles[fileID];\n }\n });\n\n // Remove files from the `fileIDs` list in each upload.\n function fileIsNotRemoved(uploadFileID) {\n return removedFiles[uploadFileID] === undefined;\n }\n Object.keys(updatedUploads).forEach(uploadID => {\n const newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved);\n\n // Remove the upload if no files are associated with it anymore.\n if (newFileIDs.length === 0) {\n delete updatedUploads[uploadID];\n return;\n }\n const {\n capabilities\n } = this.getState();\n if (newFileIDs.length !== currentUploads[uploadID].fileIDs.length && !capabilities.individualCancellation) {\n throw new Error('The installed uploader plugin does not allow removing files during an upload.');\n }\n updatedUploads[uploadID] = {\n ...currentUploads[uploadID],\n fileIDs: newFileIDs\n };\n });\n const stateUpdate = {\n currentUploads: updatedUploads,\n files: updatedFiles\n };\n\n // If all files were removed - allow new uploads,\n // and clear recoveredState\n if (Object.keys(updatedFiles).length === 0) {\n stateUpdate.allowNewUpload = true;\n stateUpdate.error = null;\n stateUpdate.recoveredState = null;\n }\n this.setState(stateUpdate);\n this.calculateTotalProgress();\n const removedFileIDs = Object.keys(removedFiles);\n removedFileIDs.forEach(fileID => {\n this.emit('file-removed', removedFiles[fileID], reason);\n });\n if (removedFileIDs.length > 5) {\n this.log(`Removed ${removedFileIDs.length} files`);\n } else {\n this.log(`Removed files: ${removedFileIDs.join(', ')}`);\n }\n }\n removeFile(fileID, reason) {\n this.removeFiles([fileID], reason);\n }\n pauseResume(fileID) {\n if (!this.getState().capabilities.resumableUploads || this.getFile(fileID).progress.uploadComplete) {\n return undefined;\n }\n const wasPaused = this.getFile(fileID).isPaused || false;\n const isPaused = !wasPaused;\n this.setFileState(fileID, {\n isPaused\n });\n this.emit('upload-pause', fileID, isPaused);\n return isPaused;\n }\n pauseAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: true\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('pause-all');\n }\n resumeAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: false,\n error: null\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('resume-all');\n }\n retryAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const filesToRetry = Object.keys(updatedFiles).filter(file => {\n return updatedFiles[file].error;\n });\n filesToRetry.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: false,\n error: null\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles,\n error: null\n });\n this.emit('retry-all', filesToRetry);\n if (filesToRetry.length === 0) {\n return Promise.resolve({\n successful: [],\n failed: []\n });\n }\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](filesToRetry, {\n forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n });\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n cancelAll(_temp) {\n let {\n reason = 'user'\n } = _temp === void 0 ? {} : _temp;\n this.emit('cancel-all', {\n reason\n });\n\n // Only remove existing uploads if user is canceling\n if (reason === 'user') {\n const {\n files\n } = this.getState();\n const fileIDs = Object.keys(files);\n if (fileIDs.length) {\n this.removeFiles(fileIDs, 'cancel-all');\n }\n this.setState(defaultUploadState);\n // todo should we call this.emit('reset-progress') like we do for resetProgress?\n }\n }\n retryUpload(fileID) {\n this.setFileState(fileID, {\n error: null,\n isPaused: false\n });\n this.emit('upload-retry', fileID);\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]([fileID], {\n forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n });\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n logout() {\n this.iteratePlugins(plugin => {\n var _provider;\n ;\n (_provider = plugin.provider) == null || _provider.logout == null || _provider.logout();\n });\n }\n calculateTotalProgress() {\n // calculate total progress, using the number of files currently uploading,\n // multiplied by 100 and the summ of individual progress of each file\n const files = this.getFiles();\n const inProgress = files.filter(file => {\n return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n });\n if (inProgress.length === 0) {\n this.emit('progress', 0);\n this.setState({\n totalProgress: 0\n });\n return;\n }\n const sizedFiles = inProgress.filter(file => file.progress.bytesTotal != null);\n const unsizedFiles = inProgress.filter(file => file.progress.bytesTotal == null);\n if (sizedFiles.length === 0) {\n const progressMax = inProgress.length * 100;\n const currentProgress = unsizedFiles.reduce((acc, file) => {\n return acc + file.progress.percentage;\n }, 0);\n const totalProgress = Math.round(currentProgress / progressMax * 100);\n this.setState({\n totalProgress\n });\n return;\n }\n let totalSize = sizedFiles.reduce((acc, file) => {\n var _file$progress$bytesT;\n return acc + ((_file$progress$bytesT = file.progress.bytesTotal) != null ? _file$progress$bytesT : 0);\n }, 0);\n const averageSize = totalSize / sizedFiles.length;\n totalSize += averageSize * unsizedFiles.length;\n let uploadedSize = 0;\n sizedFiles.forEach(file => {\n uploadedSize += file.progress.bytesUploaded;\n });\n unsizedFiles.forEach(file => {\n uploadedSize += averageSize * (file.progress.percentage || 0) / 100;\n });\n let totalProgress = totalSize === 0 ? 0 : Math.round(uploadedSize / totalSize * 100);\n\n // hot fix, because:\n // uploadedSize ended up larger than totalSize, resulting in 1325% total\n if (totalProgress > 100) {\n totalProgress = 100;\n }\n this.setState({\n totalProgress\n });\n this.emit('progress', totalProgress);\n }\n updateOnlineStatus() {\n var _window$navigator$onL;\n const online = (_window$navigator$onL = window.navigator.onLine) != null ? _window$navigator$onL : true;\n if (!online) {\n this.emit('is-offline');\n this.info(this.i18n('noInternetConnection'), 'error', 0);\n this.wasOffline = true;\n } else {\n this.emit('is-online');\n if (this.wasOffline) {\n this.emit('back-online');\n this.info(this.i18n('connectedToInternet'), 'success', 3000);\n this.wasOffline = false;\n }\n }\n }\n getID() {\n return this.opts.id;\n }\n\n /**\n * Registers a plugin with Core.\n */\n use(Plugin, opts) {\n if (typeof Plugin !== 'function') {\n const msg = `Expected a plugin class, but got ${Plugin === null ? 'null' : typeof Plugin}.` + ' Please verify that the plugin was imported and spelled correctly.';\n throw new TypeError(msg);\n }\n\n // Instantiate\n const plugin = new Plugin(this, opts);\n const pluginId = plugin.id;\n if (!pluginId) {\n throw new Error('Your plugin must have an id');\n }\n if (!plugin.type) {\n throw new Error('Your plugin must have a type');\n }\n const existsPluginAlready = this.getPlugin(pluginId);\n if (existsPluginAlready) {\n const msg = `Already found a plugin named '${existsPluginAlready.id}'. ` + `Tried to use: '${pluginId}'.\\n` + 'Uppy plugins must have unique `id` options. See https://uppy.io/docs/plugins/#id.';\n throw new Error(msg);\n }\n\n // @ts-expect-error does exist\n if (Plugin.VERSION) {\n // @ts-expect-error does exist\n this.log(`Using ${pluginId} v${Plugin.VERSION}`);\n }\n if (plugin.type in _classPrivateFieldLooseBase(this, _plugins)[_plugins]) {\n _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type].push(plugin);\n } else {\n _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type] = [plugin];\n }\n plugin.install();\n this.emit('plugin-added', plugin);\n return this;\n }\n\n /**\n * Find one Plugin by name.\n */\n getPlugin(id) {\n for (const plugins of Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins])) {\n const foundPlugin = plugins.find(plugin => plugin.id === id);\n if (foundPlugin != null) return foundPlugin;\n }\n return undefined;\n }\n [_Symbol$for](type) {\n return _classPrivateFieldLooseBase(this, _plugins)[_plugins][type];\n }\n\n /**\n * Iterate through all `use`d plugins.\n *\n */\n iteratePlugins(method) {\n Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins]).flat(1).forEach(method);\n }\n\n /**\n * Uninstall and remove a plugin.\n *\n * @param {object} instance The plugin instance to remove.\n */\n removePlugin(instance) {\n this.log(`Removing plugin ${instance.id}`);\n this.emit('plugin-remove', instance);\n if (instance.uninstall) {\n instance.uninstall();\n }\n const list = _classPrivateFieldLooseBase(this, _plugins)[_plugins][instance.type];\n // list.indexOf failed here, because Vue3 converted the plugin instance\n // to a Proxy object, which failed the strict comparison test:\n // obj !== objProxy\n const index = list.findIndex(item => item.id === instance.id);\n if (index !== -1) {\n list.splice(index, 1);\n }\n const state = this.getState();\n const updatedState = {\n plugins: {\n ...state.plugins,\n [instance.id]: undefined\n }\n };\n this.setState(updatedState);\n }\n\n /**\n * Uninstall all plugins and close down this Uppy instance.\n */\n // @todo next major: rename to `destroy`.\n // Cancel local uploads, cancel remote uploads, DON'T cancel assemblies\n // document that if you do want to cancel assemblies, you need to call smth manually.\n // Potentially remove reason, as it’s confusing, just come up with a default behaviour.\n close(_temp2) {\n let {\n reason\n } = _temp2 === void 0 ? {} : _temp2;\n this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`);\n this.cancelAll({\n reason\n });\n _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe]();\n this.iteratePlugins(plugin => {\n this.removePlugin(plugin);\n });\n if (typeof window !== 'undefined' && window.removeEventListener) {\n window.removeEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n window.removeEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n }\n }\n hideInfo() {\n const {\n info\n } = this.getState();\n this.setState({\n info: info.slice(1)\n });\n this.emit('info-hidden');\n }\n\n /**\n * Set info message in `state.info`, so that UI plugins like `Informer`\n * can display the message.\n */\n info(message, type, duration) {\n if (type === void 0) {\n type = 'info';\n }\n if (duration === void 0) {\n duration = 3000;\n }\n const isComplexMessage = typeof message === 'object';\n this.setState({\n info: [...this.getState().info, {\n type,\n message: isComplexMessage ? message.message : message,\n details: isComplexMessage ? message.details : null\n }]\n });\n setTimeout(() => this.hideInfo(), duration);\n this.emit('info-visible');\n }\n\n /**\n * Passes messages to a function, provided in `opts.logger`.\n * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n */\n log(message, type) {\n const {\n logger\n } = this.opts;\n switch (type) {\n case 'error':\n logger.error(message);\n break;\n case 'warning':\n logger.warn(message);\n break;\n default:\n logger.debug(message);\n break;\n }\n }\n registerRequestClient(id, client) {\n _classPrivateFieldLooseBase(this, _requestClientById)[_requestClientById].set(id, client);\n }\n\n /** @protected */\n getRequestClientForFile(file) {\n if (!file.remote) throw new Error(`Tried to get RequestClient for a non-remote file ${file.id}`);\n const requestClient = _classPrivateFieldLooseBase(this, _requestClientById)[_requestClientById].get(file.remote.requestClientId);\n if (requestClient == null) throw new Error(`requestClientId \"${file.remote.requestClientId}\" not registered for file \"${file.id}\"`);\n return requestClient;\n }\n\n /**\n * Restore an upload by its ID.\n */\n restore(uploadID) {\n this.log(`Core: attempting to restore upload \"${uploadID}\"`);\n if (!this.getState().currentUploads[uploadID]) {\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n return Promise.reject(new Error('Nonexistent upload'));\n }\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n [_Symbol$for2]() {\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/47595\n return _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](...arguments);\n }\n /**\n * Add data to an upload's result object.\n */\n addResultData(uploadID, data) {\n if (!_classPrivateFieldLooseBase(this, _getUpload)[_getUpload](uploadID)) {\n this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n return;\n }\n const {\n currentUploads\n } = this.getState();\n const currentUpload = {\n ...currentUploads[uploadID],\n result: {\n ...currentUploads[uploadID].result,\n ...data\n }\n };\n this.setState({\n currentUploads: {\n ...currentUploads,\n [uploadID]: currentUpload\n }\n });\n }\n /**\n * Start an upload for all the files that are not currently being uploaded.\n */\n upload() {\n var _classPrivateFieldLoo;\n if (!((_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _plugins)[_plugins]['uploader']) != null && _classPrivateFieldLoo.length)) {\n this.log('No uploader type plugins are used', 'warning');\n }\n let {\n files\n } = this.getState();\n const onBeforeUploadResult = this.opts.onBeforeUpload(files);\n if (onBeforeUploadResult === false) {\n return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n }\n if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n files = onBeforeUploadResult;\n // Updating files in state, because uploader plugins receive file IDs,\n // and then fetch the actual file object from state\n this.setState({\n files\n });\n }\n return Promise.resolve().then(() => _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateMinNumberOfFiles(files)).catch(err => {\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([err]);\n throw err;\n }).then(() => {\n if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFields)[_checkRequiredMetaFields](files)) {\n throw new RestrictionError(this.i18n('missingRequiredMetaField'));\n }\n }).catch(err => {\n // Doing this in a separate catch because we already emited and logged\n // all the errors in `checkRequiredMetaFields` so we only throw a generic\n // missing fields error here.\n throw err;\n }).then(() => {\n const {\n currentUploads\n } = this.getState();\n // get a list of files that are currently assigned to uploads\n const currentlyUploadingFiles = Object.values(currentUploads).flatMap(curr => curr.fileIDs);\n const waitingFileIDs = [];\n Object.keys(files).forEach(fileID => {\n const file = this.getFile(fileID);\n // if the file hasn't started uploading and hasn't already been assigned to an upload..\n if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n waitingFileIDs.push(file.id);\n }\n });\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](waitingFileIDs);\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }).catch(err => {\n this.emit('error', err);\n this.log(err, 'error');\n throw err;\n });\n }\n}\nfunction _informAndEmit2(errors) {\n for (const error of errors) {\n if (error.isRestriction) {\n this.emit('restriction-failed', error.file, error);\n } else {\n this.emit('error', error, error.file);\n }\n this.log(error, 'warning');\n }\n const userFacingErrors = errors.filter(error => error.isUserFacing);\n\n // don't flood the user: only show the first 4 toasts\n const maxNumToShow = 4;\n const firstErrors = userFacingErrors.slice(0, maxNumToShow);\n const additionalErrors = userFacingErrors.slice(maxNumToShow);\n firstErrors.forEach(_ref2 => {\n let {\n message,\n details = ''\n } = _ref2;\n this.info({\n message,\n details\n }, 'error', this.opts.infoTimeout);\n });\n if (additionalErrors.length > 0) {\n this.info({\n message: this.i18n('additionalRestrictionsFailed', {\n count: additionalErrors.length\n })\n });\n }\n}\nfunction _checkRequiredMetaFieldsOnFile2(file) {\n const {\n missingFields,\n error\n } = _classPrivateFieldLooseBase(this, _restricter)[_restricter].getMissingRequiredMetaFields(file);\n if (missingFields.length > 0) {\n this.setFileState(file.id, {\n missingRequiredMetaFields: missingFields\n });\n this.log(error.message);\n this.emit('restriction-failed', file, error);\n return false;\n }\n return true;\n}\nfunction _checkRequiredMetaFields2(files) {\n let success = true;\n for (const file of Object.values(files)) {\n if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file)) {\n success = false;\n }\n }\n return success;\n}\nfunction _assertNewUploadAllowed2(file) {\n const {\n allowNewUpload\n } = this.getState();\n if (allowNewUpload === false) {\n const error = new RestrictionError(this.i18n('noMoreFilesAllowed'), {\n file\n });\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([error]);\n throw error;\n }\n}\nfunction _transformFile2(fileDescriptorOrFile) {\n // Uppy expects files in { name, type, size, data } format.\n // If the actual File object is passed from input[type=file] or drag-drop,\n // we normalize it to match Uppy file object\n const file = fileDescriptorOrFile instanceof File ? {\n name: fileDescriptorOrFile.name,\n type: fileDescriptorOrFile.type,\n size: fileDescriptorOrFile.size,\n data: fileDescriptorOrFile\n } : fileDescriptorOrFile;\n const fileType = getFileType(file);\n const fileName = getFileName(fileType, file);\n const fileExtension = getFileNameAndExtension(fileName).extension;\n const id = getSafeFileId(file, this.getID());\n const meta = file.meta || {};\n meta.name = fileName;\n meta.type = fileType;\n\n // `null` means the size is unknown.\n const size = Number.isFinite(file.data.size) ? file.data.size : null;\n return {\n source: file.source || '',\n id,\n name: fileName,\n extension: fileExtension || '',\n meta: {\n ...this.getState().meta,\n ...meta\n },\n type: fileType,\n data: file.data,\n progress: {\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: size,\n uploadComplete: false,\n uploadStarted: null\n },\n size,\n isGhost: false,\n isRemote: file.isRemote || false,\n // TODO: this should not be a string\n // @ts-expect-error wrong\n remote: file.remote || '',\n preview: file.preview\n };\n}\nfunction _startIfAutoProceed2() {\n if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n this.scheduledAutoProceed = setTimeout(() => {\n this.scheduledAutoProceed = null;\n this.upload().catch(err => {\n if (!err.isRestriction) {\n this.log(err.stack || err.message || err);\n }\n });\n }, 4);\n }\n}\nfunction _checkAndUpdateFileState2(filesToAdd) {\n const {\n files: existingFiles\n } = this.getState();\n\n // create a copy of the files object only once\n const nextFilesState = {\n ...existingFiles\n };\n const validFilesToAdd = [];\n const errors = [];\n for (const fileToAdd of filesToAdd) {\n try {\n var _existingFiles$newFil;\n let newFile = _classPrivateFieldLooseBase(this, _transformFile)[_transformFile](fileToAdd);\n\n // If a file has been recovered (Golden Retriever), but we were unable to recover its data (probably too large),\n // users are asked to re-select these half-recovered files and then this method will be called again.\n // In order to keep the progress, meta and everything else, we keep the existing file,\n // but we replace `data`, and we remove `isGhost`, because the file is no longer a ghost now\n const isGhost = (_existingFiles$newFil = existingFiles[newFile.id]) == null ? void 0 : _existingFiles$newFil.isGhost;\n if (isGhost) {\n const existingFileState = existingFiles[newFile.id];\n newFile = {\n ...existingFileState,\n isGhost: false,\n data: fileToAdd.data\n };\n this.log(`Replaced the blob in the restored ghost file: ${newFile.name}, ${newFile.id}`);\n }\n const onBeforeFileAddedResult = this.opts.onBeforeFileAdded(newFile, nextFilesState);\n if (!onBeforeFileAddedResult && this.checkIfFileAlreadyExists(newFile.id)) {\n throw new RestrictionError(this.i18n('noDuplicates', {\n fileName: newFile.name\n }), {\n file: fileToAdd\n });\n }\n\n // Pass through reselected files from Golden Retriever\n if (onBeforeFileAddedResult === false && !isGhost) {\n // Don’t show UI info for this error, as it should be done by the developer\n throw new RestrictionError('Cannot add the file because onBeforeFileAdded returned false.', {\n isUserFacing: false,\n file: fileToAdd\n });\n } else if (typeof onBeforeFileAddedResult === 'object' && onBeforeFileAddedResult !== null) {\n newFile = onBeforeFileAddedResult;\n }\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateSingleFile(newFile);\n\n // need to add it to the new local state immediately, so we can use the state to validate the next files too\n nextFilesState[newFile.id] = newFile;\n validFilesToAdd.push(newFile);\n } catch (err) {\n errors.push(err);\n }\n }\n try {\n // need to run this separately because it's much more slow, so if we run it inside the for-loop it will be very slow\n // when many files are added\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateAggregateRestrictions(Object.values(existingFiles), validFilesToAdd);\n } catch (err) {\n errors.push(err);\n\n // If we have any aggregate error, don't allow adding this batch\n return {\n nextFilesState: existingFiles,\n validFilesToAdd: [],\n errors\n };\n }\n return {\n nextFilesState,\n validFilesToAdd,\n errors\n };\n}\nfunction _addListeners2() {\n // Type inference only works for inline functions so we have to type it again\n const errorHandler = (error, file, response) => {\n let errorMsg = error.message || 'Unknown error';\n if (error.details) {\n errorMsg += ` ${error.details}`;\n }\n this.setState({\n error: errorMsg\n });\n if (file != null && file.id in this.getState().files) {\n this.setFileState(file.id, {\n error: errorMsg,\n response\n });\n }\n };\n this.on('error', errorHandler);\n this.on('upload-error', (file, error, response) => {\n errorHandler(error, file, response);\n if (typeof error === 'object' && error.message) {\n var _file$name;\n this.log(error.message, 'error');\n const newError = new Error(this.i18n('failedToUpload', {\n file: (_file$name = file == null ? void 0 : file.name) != null ? _file$name : ''\n })); // we may want a new custom error here\n newError.isUserFacing = true; // todo maybe don't do this with all errors?\n newError.details = error.message;\n if (error.details) {\n newError.details += ` ${error.details}`;\n }\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([newError]);\n } else {\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([error]);\n }\n });\n let uploadStalledWarningRecentlyEmitted = null;\n this.on('upload-stalled', (error, files) => {\n const {\n message\n } = error;\n const details = files.map(file => file.meta.name).join(', ');\n if (!uploadStalledWarningRecentlyEmitted) {\n this.info({\n message,\n details\n }, 'warning', this.opts.infoTimeout);\n uploadStalledWarningRecentlyEmitted = setTimeout(() => {\n uploadStalledWarningRecentlyEmitted = null;\n }, this.opts.infoTimeout);\n }\n this.log(`${message} ${details}`.trim(), 'warning');\n });\n this.on('upload', () => {\n this.setState({\n error: null\n });\n });\n const onUploadStarted = files => {\n const filesFiltered = files.filter(file => {\n const exists = file != null && this.getFile(file.id);\n if (!exists) this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return exists;\n });\n const filesState = Object.fromEntries(filesFiltered.map(file => [file.id, {\n progress: {\n uploadStarted: Date.now(),\n uploadComplete: false,\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: file.size\n }\n }]));\n this.patchFilesState(filesState);\n };\n this.on('upload-start', files => {\n files.forEach(file => {\n // todo backward compat, remove this event in a next major\n this.emit('upload-started', file);\n });\n onUploadStarted(files);\n });\n this.on('upload-progress', this.calculateProgress);\n this.on('upload-success', (file, uploadResp) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const currentProgress = this.getFile(file.id).progress;\n this.setFileState(file.id, {\n progress: {\n ...currentProgress,\n postprocess: _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].size > 0 ? {\n mode: 'indeterminate'\n } : undefined,\n uploadComplete: true,\n percentage: 100,\n bytesUploaded: currentProgress.bytesTotal\n },\n response: uploadResp,\n uploadURL: uploadResp.uploadURL,\n isPaused: false\n });\n\n // Remote providers sometimes don't tell us the file size,\n // but we can know how many bytes we uploaded once the upload is complete.\n if (file.size == null) {\n this.setFileState(file.id, {\n size: uploadResp.bytesUploaded || currentProgress.bytesTotal\n });\n }\n this.calculateTotalProgress();\n });\n this.on('preprocess-progress', (file, progress) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n this.setFileState(file.id, {\n progress: {\n ...this.getFile(file.id).progress,\n preprocess: progress\n }\n });\n });\n this.on('preprocess-complete', file => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const files = {\n ...this.getState().files\n };\n files[file.id] = {\n ...files[file.id],\n progress: {\n ...files[file.id].progress\n }\n };\n delete files[file.id].progress.preprocess;\n this.setState({\n files\n });\n });\n this.on('postprocess-progress', (file, progress) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n this.setFileState(file.id, {\n progress: {\n ...this.getState().files[file.id].progress,\n postprocess: progress\n }\n });\n });\n this.on('postprocess-complete', file => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const files = {\n ...this.getState().files\n };\n files[file.id] = {\n ...files[file.id],\n progress: {\n ...files[file.id].progress\n }\n };\n delete files[file.id].progress.postprocess;\n this.setState({\n files\n });\n });\n this.on('restored', () => {\n // Files may have changed--ensure progress is still accurate.\n this.calculateTotalProgress();\n });\n\n // @ts-expect-error should fix itself when dashboard it typed (also this doesn't belong here)\n this.on('dashboard:file-edit-complete', file => {\n if (file) {\n _classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file);\n }\n });\n\n // show informer if offline\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n window.addEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n setTimeout(_classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus], 3000);\n }\n}\nfunction _createUpload2(fileIDs, opts) {\n if (opts === void 0) {\n opts = {};\n }\n // uppy.retryAll sets this to true — when retrying we want to ignore `allowNewUpload: false`\n const {\n forceAllowNewUpload = false\n } = opts;\n const {\n allowNewUpload,\n currentUploads\n } = this.getState();\n if (!allowNewUpload && !forceAllowNewUpload) {\n throw new Error('Cannot create a new upload: already uploading.');\n }\n const uploadID = nanoid();\n this.emit('upload', {\n id: uploadID,\n fileIDs\n });\n this.setState({\n allowNewUpload: this.opts.allowMultipleUploadBatches !== false && this.opts.allowMultipleUploads !== false,\n currentUploads: {\n ...currentUploads,\n [uploadID]: {\n fileIDs,\n step: 0,\n result: {}\n }\n }\n });\n return uploadID;\n}\nfunction _getUpload2(uploadID) {\n const {\n currentUploads\n } = this.getState();\n return currentUploads[uploadID];\n}\nfunction _removeUpload2(uploadID) {\n const currentUploads = {\n ...this.getState().currentUploads\n };\n delete currentUploads[uploadID];\n this.setState({\n currentUploads\n });\n}\nasync function _runUpload2(uploadID) {\n const getCurrentUpload = () => {\n const {\n currentUploads\n } = this.getState();\n return currentUploads[uploadID];\n };\n let currentUpload = getCurrentUpload();\n const steps = [..._classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors], ..._classPrivateFieldLooseBase(this, _uploaders)[_uploaders], ..._classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors]];\n try {\n for (let step = currentUpload.step || 0; step < steps.length; step++) {\n if (!currentUpload) {\n break;\n }\n const fn = steps[step];\n this.setState({\n currentUploads: {\n ...this.getState().currentUploads,\n [uploadID]: {\n ...currentUpload,\n step\n }\n }\n });\n const {\n fileIDs\n } = currentUpload;\n\n // TODO give this the `updatedUpload` object as its only parameter maybe?\n // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n await fn(fileIDs, uploadID);\n\n // Update currentUpload value in case it was modified asynchronously.\n currentUpload = getCurrentUpload();\n }\n } catch (err) {\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n throw err;\n }\n\n // Set result data.\n if (currentUpload) {\n // Mark postprocessing step as complete if necessary; this addresses a case where we might get\n // stuck in the postprocessing UI while the upload is fully complete.\n // If the postprocessing steps do not do any work, they may not emit postprocessing events at\n // all, and never mark the postprocessing as complete. This is fine on its own but we\n // introduced code in the @uppy/core upload-success handler to prepare postprocessing progress\n // state if any postprocessors are registered. That is to avoid a \"flash of completed state\"\n // before the postprocessing plugins can emit events.\n //\n // So, just in case an upload with postprocessing plugins *has* completed *without* emitting\n // postprocessing completion, we do it instead.\n currentUpload.fileIDs.forEach(fileID => {\n const file = this.getFile(fileID);\n if (file && file.progress.postprocess) {\n this.emit('postprocess-complete', file);\n }\n });\n const files = currentUpload.fileIDs.map(fileID => this.getFile(fileID));\n const successful = files.filter(file => !file.error);\n const failed = files.filter(file => file.error);\n this.addResultData(uploadID, {\n successful,\n failed,\n uploadID\n });\n\n // Update currentUpload value in case it was modified asynchronously.\n currentUpload = getCurrentUpload();\n }\n // Emit completion events.\n // This is in a separate function so that the `currentUploads` variable\n // always refers to the latest state. In the handler right above it refers\n // to an outdated object without the `.result` property.\n let result;\n if (currentUpload) {\n result = currentUpload.result;\n this.emit('complete', result);\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n }\n if (result == null) {\n this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n }\n return result;\n}\nUppy.VERSION = packageJson.version;\nexport default Uppy;","export default function getFileName(fileType, fileDescriptor) {\n if (fileDescriptor.name) {\n return fileDescriptor.name;\n }\n if (fileType.split('/')[0] === 'image') {\n return `${fileType.split('/')[0]}.${fileType.split('/')[1]}`;\n }\n return 'noname';\n}","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nexport let nanoid = (size = 21) => {\n let id = ''\n let i = size\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n","/* eslint-disable class-methods-use-this */\n\n/**\n * Core plugin logic that all plugins share.\n *\n * BasePlugin does not contain DOM rendering so it can be used for plugins\n * without a user interface.\n *\n * See `Plugin` for the extended version with Preact rendering for interfaces.\n */\n\nimport Translator from '@uppy/utils/lib/Translator';\n\n/**\n * DefinePluginOpts marks all of the passed AlwaysDefinedKeys as “required” or “always defined”.\n */\n\nexport default class BasePlugin {\n constructor(uppy, opts) {\n this.uppy = uppy;\n this.opts = opts != null ? opts : {};\n }\n getPluginState() {\n const {\n plugins\n } = this.uppy.getState();\n return (plugins == null ? void 0 : plugins[this.id]) || {};\n }\n setPluginState(update) {\n const {\n plugins\n } = this.uppy.getState();\n this.uppy.setState({\n plugins: {\n ...plugins,\n [this.id]: {\n ...plugins[this.id],\n ...update\n }\n }\n });\n }\n setOptions(newOpts) {\n this.opts = {\n ...this.opts,\n ...newOpts\n };\n this.setPluginState(undefined); // so that UI re-renders with new options\n this.i18nInit();\n }\n i18nInit() {\n const translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = translator.translate.bind(translator);\n this.i18nArray = translator.translateArray.bind(translator);\n this.setPluginState(undefined); // so that UI re-renders and we see the updated locale\n }\n\n /**\n * Extendable methods\n * ==================\n * These methods are here to serve as an overview of the extendable methods as well as\n * making them not conditional in use, such as `if (this.afterUpdate)`.\n */\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTarget(plugin) {\n throw new Error(\"Extend the addTarget method to add your plugin to another plugin's target\");\n }\n install() {}\n uninstall() {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n update(state) {}\n\n // Called after every state update, after everything's mounted. Debounced.\n afterUpdate() {}\n}","class UserFacingApiError extends Error {\n constructor() {\n super(...arguments);\n this.name = 'UserFacingApiError';\n }\n}\nexport default UserFacingApiError;","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","module.exports = require('./lib/retry');","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n\t' A network error occurred.', // Bun (WebKit)\n\t'Network connection lost', // Cloudflare Workers (fetch)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\tconst {message, stack} = error;\n\n\t// Safari 17+ has generic message but no stack for network errors\n\tif (message === 'Load failed') {\n\t\treturn stack === undefined\n\t\t\t// Sentry adds its own stack trace to the fetch error, so also check for that\n\t\t\t|| '__sentry_captured__' in error;\n\t}\n\n\t// Deno network errors start with specific text\n\tif (message.startsWith('error sending request for url')) {\n\t\treturn true;\n\t}\n\n\t// Standard network error messages\n\treturn errorMessages.has(message);\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {...options};\n\t\toptions.onFailedAttempt ??= () => {};\n\t\toptions.shouldRetry ??= () => true;\n\t\toptions.retries ??= 10;\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tdecorateErrorWithCounts(error, attemptNumber, options);\n\n\t\t\t\t\tif (!(await options.shouldRetry(error))) {\n\t\t\t\t\t\toperation.stop();\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(error);\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","class NetworkError extends Error {\n constructor(error, xhr) {\n if (xhr === void 0) {\n xhr = null;\n }\n super(`This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.`);\n this.cause = error;\n this.isNetworkError = true;\n this.request = xhr;\n }\n}\nexport default NetworkError;","export default function has(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}","import hasProperty from \"./hasProperty.js\";\nclass ErrorWithCause extends Error {\n constructor(message, options) {\n super(message);\n this.cause = options == null ? void 0 : options.cause;\n if (this.cause && hasProperty(this.cause, 'isNetworkError')) {\n this.isNetworkError = this.cause.isNetworkError;\n } else {\n this.isNetworkError = false;\n }\n }\n}\nexport default ErrorWithCause;","import throttle from 'lodash/throttle.js';\nfunction emitSocketProgress(uploader, progressData, file) {\n const {\n progress,\n bytesUploaded,\n bytesTotal\n } = progressData;\n if (progress) {\n uploader.uppy.log(`Upload progress: ${progress}`);\n uploader.uppy.emit('upload-progress', file, {\n // @ts-expect-error todo remove in next major\n uploader,\n bytesUploaded,\n bytesTotal\n });\n }\n}\nexport default throttle(emitSocketProgress, 300, {\n leading: true,\n trailing: true\n});","'use strict';\n\nclass AuthError extends Error {\n constructor() {\n super('Authorization required');\n this.name = 'AuthError';\n\n // we use a property because of instanceof is unsafe:\n // https://github.com/transloadit/uppy/pull/4619#discussion_r1406225982\n this.isAuthError = true;\n }\n}\nexport default AuthError;","let _Symbol$for;\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\nimport UserFacingApiError from '@uppy/utils/lib/UserFacingApiError';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport pRetry, { AbortError } from 'p-retry';\nimport fetchWithNetworkError from '@uppy/utils/lib/fetchWithNetworkError';\nimport ErrorWithCause from '@uppy/utils/lib/ErrorWithCause';\nimport emitSocketProgress from '@uppy/utils/lib/emitSocketProgress';\nimport getSocketHost from '@uppy/utils/lib/getSocketHost';\nimport AuthError from \"./AuthError.js\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"3.8.2\"\n};\n// Remove the trailing slash so we can always safely append /xyz.\nfunction stripSlash(url) {\n return url.replace(/\\/$/, '');\n}\nconst retryCount = 10; // set to a low number, like 2 to test manual user retries\nconst socketActivityTimeoutMs = 5 * 60 * 1000; // set to a low number like 10000 to test this\n\nexport const authErrorStatusCode = 401;\nclass HttpError extends Error {\n constructor(_ref) {\n let {\n statusCode,\n message\n } = _ref;\n super(message);\n this.name = 'HttpError';\n this.statusCode = statusCode;\n }\n}\nasync function handleJSONResponse(res) {\n if (res.status === authErrorStatusCode) {\n throw new AuthError();\n }\n if (res.ok) {\n return res.json();\n }\n let errMsg = `Failed request with status: ${res.status}. ${res.statusText}`;\n let errData;\n try {\n errData = await res.json();\n if (errData.message) errMsg = `${errMsg} message: ${errData.message}`;\n if (errData.requestId) errMsg = `${errMsg} request-Id: ${errData.requestId}`;\n } catch (cause) {\n // if the response contains invalid JSON, let's ignore the error data\n throw new Error(errMsg, {\n cause\n });\n }\n if (res.status >= 400 && res.status <= 499 && errData.message) {\n throw new UserFacingApiError(errData.message);\n }\n throw new HttpError({\n statusCode: res.status,\n message: errMsg\n });\n}\nvar _companionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"companionHeaders\");\nvar _getUrl = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUrl\");\nvar _requestSocketToken = /*#__PURE__*/_classPrivateFieldLooseKey(\"requestSocketToken\");\nvar _awaitRemoteFileUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"awaitRemoteFileUpload\");\n_Symbol$for = Symbol.for('uppy test: getCompanionHeaders');\nexport default class RequestClient {\n constructor(uppy, opts) {\n /**\n * This method will ensure a websocket for the specified file and returns a promise that resolves\n * when the file has finished downloading, or rejects if it fails.\n * It will retry if the websocket gets disconnected\n */\n Object.defineProperty(this, _awaitRemoteFileUpload, {\n value: _awaitRemoteFileUpload2\n });\n Object.defineProperty(this, _getUrl, {\n value: _getUrl2\n });\n Object.defineProperty(this, _companionHeaders, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _requestSocketToken, {\n writable: true,\n value: async _ref2 => {\n var _file$remote;\n let {\n file,\n postBody,\n signal\n } = _ref2;\n if (((_file$remote = file.remote) == null ? void 0 : _file$remote.url) == null) {\n throw new Error('Cannot connect to an undefined URL');\n }\n const res = await this.post(file.remote.url, {\n ...file.remote.body,\n ...postBody\n }, {\n signal\n });\n return res.token;\n }\n });\n this.uppy = uppy;\n this.opts = opts;\n this.onReceiveResponse = this.onReceiveResponse.bind(this);\n // TODO: Remove optional chaining\n _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = opts == null ? void 0 : opts.companionHeaders;\n }\n setCompanionHeaders(headers) {\n _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = headers;\n }\n [_Symbol$for]() {\n return _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders];\n }\n get hostname() {\n const {\n companion\n } = this.uppy.getState();\n const host = this.opts.companionUrl;\n return stripSlash(companion && companion[host] ? companion[host] : host);\n }\n async headers(emptyBody) {\n if (emptyBody === void 0) {\n emptyBody = false;\n }\n const defaultHeaders = {\n Accept: 'application/json',\n ...(emptyBody ? undefined : {\n // Passing those headers on requests with no data forces browsers to first make a preflight request.\n 'Content-Type': 'application/json'\n })\n };\n return {\n ...defaultHeaders,\n ..._classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders]\n };\n }\n onReceiveResponse(res) {\n const {\n headers\n } = res;\n const state = this.uppy.getState();\n const companion = state.companion || {};\n const host = this.opts.companionUrl;\n\n // Store the self-identified domain name for the Companion instance we just hit.\n if (headers.has('i-am') && headers.get('i-am') !== companion[host]) {\n this.uppy.setState({\n companion: {\n ...companion,\n [host]: headers.get('i-am')\n }\n });\n }\n }\n async request(_ref3) {\n let {\n path,\n method = 'GET',\n data,\n skipPostResponse,\n signal\n } = _ref3;\n try {\n const headers = await this.headers(!data);\n const response = await fetchWithNetworkError(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n method,\n signal,\n headers,\n credentials: this.opts.companionCookiesRule || 'same-origin',\n body: data ? JSON.stringify(data) : null\n });\n if (!skipPostResponse) this.onReceiveResponse(response);\n return await handleJSONResponse(response);\n } catch (err) {\n // pass these through\n if (err.isAuthError || err.name === 'UserFacingApiError' || err.name === 'AbortError') throw err;\n throw new ErrorWithCause(`Could not ${method} ${_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path)}`, {\n cause: err\n });\n }\n }\n async get(path, options) {\n // TODO: remove boolean support for options that was added for backward compatibility.\n // eslint-disable-next-line no-param-reassign\n if (typeof options === 'boolean') options = {\n skipPostResponse: options\n };\n return this.request({\n ...options,\n path\n });\n }\n async post(path, data, options) {\n // TODO: remove boolean support for options that was added for backward compatibility.\n // eslint-disable-next-line no-param-reassign\n if (typeof options === 'boolean') options = {\n skipPostResponse: options\n };\n return this.request({\n ...options,\n path,\n method: 'POST',\n data\n });\n }\n async delete(path, data, options) {\n // TODO: remove boolean support for options that was added for backward compatibility.\n // eslint-disable-next-line no-param-reassign\n if (typeof options === 'boolean') options = {\n skipPostResponse: options\n };\n return this.request({\n ...options,\n path,\n method: 'DELETE',\n data\n });\n }\n\n /**\n * Remote uploading consists of two steps:\n * 1. #requestSocketToken which starts the download/upload in companion and returns a unique token for the upload.\n * Then companion will halt the upload until:\n * 2. #awaitRemoteFileUpload is called, which will open/ensure a websocket connection towards companion, with the\n * previously generated token provided. It returns a promise that will resolve/reject once the file has finished\n * uploading or is otherwise done (failed, canceled)\n */\n async uploadRemoteFile(file, reqBody, options) {\n var _this = this;\n try {\n const {\n signal,\n getQueue\n } = options || {};\n return await pRetry(async () => {\n var _this$uppy$getFile;\n // if we already have a serverToken, assume that we are resuming the existing server upload id\n const existingServerToken = (_this$uppy$getFile = this.uppy.getFile(file.id)) == null ? void 0 : _this$uppy$getFile.serverToken;\n if (existingServerToken != null) {\n this.uppy.log(`Connecting to exiting websocket ${existingServerToken}`);\n return _classPrivateFieldLooseBase(this, _awaitRemoteFileUpload)[_awaitRemoteFileUpload]({\n file,\n queue: getQueue(),\n signal\n });\n }\n const queueRequestSocketToken = getQueue().wrapPromiseFunction(async function () {\n try {\n return await _classPrivateFieldLooseBase(_this, _requestSocketToken)[_requestSocketToken](...arguments);\n } catch (outerErr) {\n // throwing AbortError will cause p-retry to stop retrying\n if (outerErr.isAuthError) throw new AbortError(outerErr);\n if (outerErr.cause == null) throw outerErr;\n const err = outerErr.cause;\n const isRetryableHttpError = () => [408, 409, 429, 418, 423].includes(err.statusCode) || err.statusCode >= 500 && err.statusCode <= 599 && ![501, 505].includes(err.statusCode);\n if (err.name === 'HttpError' && !isRetryableHttpError()) throw new AbortError(err);\n\n // p-retry will retry most other errors,\n // but it will not retry TypeError (except network error TypeErrors)\n throw err;\n }\n }, {\n priority: -1\n });\n const serverToken = await queueRequestSocketToken({\n file,\n postBody: reqBody,\n signal\n }).abortOn(signal);\n if (!this.uppy.getFile(file.id)) return undefined; // has file since been removed?\n\n this.uppy.setFileState(file.id, {\n serverToken\n });\n return _classPrivateFieldLooseBase(this, _awaitRemoteFileUpload)[_awaitRemoteFileUpload]({\n file: this.uppy.getFile(file.id),\n // re-fetching file because it might have changed in the meantime\n queue: getQueue(),\n signal\n });\n }, {\n retries: retryCount,\n signal,\n onFailedAttempt: err => this.uppy.log(`Retrying upload due to: ${err.message}`, 'warning')\n });\n } catch (err) {\n // this is a bit confusing, but note that an error with the `name` prop set to 'AbortError' (from AbortController)\n // is not the same as `p-retry` `AbortError`\n if (err.name === 'AbortError') {\n // The file upload was aborted, it’s not an error\n return undefined;\n }\n this.uppy.emit('upload-error', file, err);\n throw err;\n }\n }\n}\nfunction _getUrl2(url) {\n if (/^(https?:|)\\/\\//.test(url)) {\n return url;\n }\n return `${this.hostname}/${url}`;\n}\nasync function _awaitRemoteFileUpload2(_ref4) {\n let {\n file,\n queue,\n signal\n } = _ref4;\n let removeEventHandlers;\n const {\n capabilities\n } = this.uppy.getState();\n try {\n return await new Promise((resolve, reject) => {\n const token = file.serverToken;\n const host = getSocketHost(file.remote.companionUrl);\n let socket;\n let socketAbortController;\n let activityTimeout;\n let {\n isPaused\n } = file;\n const socketSend = (action, payload) => {\n if (socket == null || socket.readyState !== socket.OPEN) {\n var _socket;\n this.uppy.log(`Cannot send \"${action}\" to socket ${file.id} because the socket state was ${String((_socket = socket) == null ? void 0 : _socket.readyState)}`, 'warning');\n return;\n }\n socket.send(JSON.stringify({\n action,\n payload: payload != null ? payload : {}\n }));\n };\n function sendState() {\n if (!capabilities.resumableUploads) return;\n if (isPaused) socketSend('pause');else socketSend('resume');\n }\n const createWebsocket = async () => {\n if (socketAbortController) socketAbortController.abort();\n socketAbortController = new AbortController();\n const onFatalError = err => {\n var _socketAbortControlle;\n // Remove the serverToken so that a new one will be created for the retry.\n this.uppy.setFileState(file.id, {\n serverToken: null\n });\n (_socketAbortControlle = socketAbortController) == null || _socketAbortControlle.abort == null || _socketAbortControlle.abort();\n reject(err);\n };\n\n // todo instead implement the ability for users to cancel / retry *currently uploading files* in the UI\n function resetActivityTimeout() {\n clearTimeout(activityTimeout);\n if (isPaused) return;\n activityTimeout = setTimeout(() => onFatalError(new Error('Timeout waiting for message from Companion socket')), socketActivityTimeoutMs);\n }\n try {\n await queue.wrapPromiseFunction(async () => {\n const reconnectWebsocket = async () =>\n // eslint-disable-next-line promise/param-names\n new Promise((_, rejectSocket) => {\n socket = new WebSocket(`${host}/api/${token}`);\n resetActivityTimeout();\n socket.addEventListener('close', () => {\n socket = undefined;\n rejectSocket(new Error('Socket closed unexpectedly'));\n });\n socket.addEventListener('error', error => {\n var _socket2;\n this.uppy.log(`Companion socket error ${JSON.stringify(error)}, closing socket`, 'warning');\n (_socket2 = socket) == null || _socket2.close(); // will 'close' event to be emitted\n });\n socket.addEventListener('open', () => {\n sendState();\n });\n socket.addEventListener('message', e => {\n resetActivityTimeout();\n try {\n const {\n action,\n payload\n } = JSON.parse(e.data);\n switch (action) {\n case 'progress':\n {\n emitSocketProgress(this, payload, this.uppy.getFile(file.id));\n break;\n }\n case 'success':\n {\n var _payload$response, _payload$response$sta, _payload$response2, _socketAbortControlle2;\n // payload.response is sent from companion for xhr-upload (aka uploadMultipart in companion) and\n // s3 multipart (aka uploadS3Multipart)\n // but not for tus/transloadit (aka uploadTus)\n // responseText is a string which may or may not be in JSON format\n // this means that an upload destination of xhr or s3 multipart MUST respond with valid JSON\n // to companion, or the JSON.parse will crash\n const text = (_payload$response = payload.response) == null ? void 0 : _payload$response.responseText;\n this.uppy.emit('upload-success', this.uppy.getFile(file.id), {\n uploadURL: payload.url,\n status: (_payload$response$sta = (_payload$response2 = payload.response) == null ? void 0 : _payload$response2.status) != null ? _payload$response$sta : 200,\n body: text ? JSON.parse(text) : undefined\n });\n (_socketAbortControlle2 = socketAbortController) == null || _socketAbortControlle2.abort == null || _socketAbortControlle2.abort();\n resolve();\n break;\n }\n case 'error':\n {\n const {\n message\n } = payload.error;\n throw Object.assign(new Error(message), {\n cause: payload.error\n });\n }\n default:\n this.uppy.log(`Companion socket unknown action ${action}`, 'warning');\n }\n } catch (err) {\n onFatalError(err);\n }\n });\n const closeSocket = () => {\n this.uppy.log(`Closing socket ${file.id}`, 'info');\n clearTimeout(activityTimeout);\n if (socket) socket.close();\n socket = undefined;\n };\n socketAbortController.signal.addEventListener('abort', () => {\n closeSocket();\n });\n });\n await pRetry(reconnectWebsocket, {\n retries: retryCount,\n signal: socketAbortController.signal,\n onFailedAttempt: () => {\n if (socketAbortController.signal.aborted) return; // don't log in this case\n this.uppy.log(`Retrying websocket ${file.id}`, 'info');\n }\n });\n })().abortOn(socketAbortController.signal);\n } catch (err) {\n if (socketAbortController.signal.aborted) return;\n onFatalError(err);\n }\n };\n const pause = newPausedState => {\n if (!capabilities.resumableUploads) return;\n isPaused = newPausedState;\n if (socket) sendState();\n if (newPausedState) {\n var _socketAbortControlle3;\n // Remove this file from the queue so another file can start in its place.\n (_socketAbortControlle3 = socketAbortController) == null || _socketAbortControlle3.abort == null || _socketAbortControlle3.abort(); // close socket to free up the request for other uploads\n } else {\n // Resuming an upload should be queued, else you could pause and then\n // resume a queued upload to make it skip the queue.\n createWebsocket();\n }\n };\n const onFileRemove = targetFile => {\n var _socketAbortControlle4;\n if (!capabilities.individualCancellation) return;\n if (targetFile.id !== file.id) return;\n socketSend('cancel');\n (_socketAbortControlle4 = socketAbortController) == null || _socketAbortControlle4.abort == null || _socketAbortControlle4.abort();\n this.uppy.log(`upload ${file.id} was removed`, 'info');\n resolve();\n };\n const onCancelAll = _ref5 => {\n var _socketAbortControlle5;\n let {\n reason\n } = _ref5;\n if (reason === 'user') {\n socketSend('cancel');\n }\n (_socketAbortControlle5 = socketAbortController) == null || _socketAbortControlle5.abort == null || _socketAbortControlle5.abort();\n this.uppy.log(`upload ${file.id} was canceled`, 'info');\n resolve();\n };\n const onFilePausedChange = (targetFileId, newPausedState) => {\n if (targetFileId !== file.id) return;\n pause(newPausedState);\n };\n const onPauseAll = () => pause(true);\n const onResumeAll = () => pause(false);\n this.uppy.on('file-removed', onFileRemove);\n this.uppy.on('cancel-all', onCancelAll);\n this.uppy.on('upload-pause', onFilePausedChange);\n this.uppy.on('pause-all', onPauseAll);\n this.uppy.on('resume-all', onResumeAll);\n removeEventHandlers = () => {\n this.uppy.off('file-removed', onFileRemove);\n this.uppy.off('cancel-all', onCancelAll);\n this.uppy.off('upload-pause', onFilePausedChange);\n this.uppy.off('pause-all', onPauseAll);\n this.uppy.off('resume-all', onResumeAll);\n };\n signal.addEventListener('abort', () => {\n var _socketAbortControlle6;\n (_socketAbortControlle6 = socketAbortController) == null || _socketAbortControlle6.abort();\n });\n createWebsocket();\n });\n } finally {\n // @ts-expect-error used before defined\n removeEventHandlers == null || removeEventHandlers();\n }\n}\nRequestClient.VERSION = packageJson.version;","import NetworkError from \"./NetworkError.js\";\n\n/**\n * Wrapper around window.fetch that throws a NetworkError when appropriate\n */\nexport default function fetchWithNetworkError() {\n return fetch(...arguments).catch(err => {\n if (err.name === 'AbortError') {\n throw err;\n } else {\n throw new NetworkError(err);\n }\n });\n}","export default function getSocketHost(url) {\n var _regex$exec;\n // get the host domain\n const regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/i;\n const host = (_regex$exec = regex.exec(url)) == null ? void 0 : _regex$exec[1];\n const socketProtocol = /^http:\\/\\//i.test(url) ? 'ws' : 'wss';\n return `${socketProtocol}://${host}`;\n}","function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\nvar _uppy = /*#__PURE__*/_classPrivateFieldLooseKey(\"uppy\");\nvar _events = /*#__PURE__*/_classPrivateFieldLooseKey(\"events\");\n/**\n * Create a wrapper around an event emitter with a `remove` method to remove\n * all events that were added using the wrapped emitter.\n */\nexport default class EventManager {\n constructor(uppy) {\n Object.defineProperty(this, _uppy, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _events, {\n writable: true,\n value: []\n });\n _classPrivateFieldLooseBase(this, _uppy)[_uppy] = uppy;\n }\n\n /** @deprecated */\n\n on(event, fn) {\n _classPrivateFieldLooseBase(this, _events)[_events].push([event, fn]);\n return _classPrivateFieldLooseBase(this, _uppy)[_uppy].on(event, fn);\n }\n remove() {\n for (const [event, fn] of _classPrivateFieldLooseBase(this, _events)[_events].splice(0)) {\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].off(event, fn);\n }\n }\n onFilePause(fileID, cb) {\n this.on('upload-pause', (targetFileID, isPaused) => {\n if (fileID === targetFileID) {\n cb(isPaused);\n }\n });\n }\n onFileRemove(fileID, cb) {\n this.on('file-removed', file => {\n if (fileID === file.id) cb(file.id);\n });\n }\n onPause(fileID, cb) {\n this.on('upload-pause', (targetFileID, isPaused) => {\n if (fileID === targetFileID) {\n // const isPaused = this.#uppy.pauseResume(fileID)\n cb(isPaused);\n }\n });\n }\n onRetry(fileID, cb) {\n this.on('upload-retry', targetFileID => {\n if (fileID === targetFileID) {\n cb();\n }\n });\n }\n onRetryAll(fileID, cb) {\n this.on('retry-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n onPauseAll(fileID, cb) {\n this.on('pause-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n onCancelAll(fileID, eventHandler) {\n var _this = this;\n this.on('cancel-all', function () {\n if (!_classPrivateFieldLooseBase(_this, _uppy)[_uppy].getFile(fileID)) return;\n eventHandler(...arguments);\n });\n }\n onResumeAll(fileID, cb) {\n this.on('resume-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n}","function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\nfunction createCancelError(cause) {\n return new Error('Cancelled', {\n cause\n });\n}\nfunction abortOn(signal) {\n if (signal != null) {\n var _this$then;\n const abortPromise = () => this.abort(signal.reason);\n signal.addEventListener('abort', abortPromise, {\n once: true\n });\n const removeAbortListener = () => {\n signal.removeEventListener('abort', abortPromise);\n };\n (_this$then = this.then) == null || _this$then.call(this, removeAbortListener, removeAbortListener);\n }\n return this;\n}\nvar _activeRequests = /*#__PURE__*/_classPrivateFieldLooseKey(\"activeRequests\");\nvar _queuedHandlers = /*#__PURE__*/_classPrivateFieldLooseKey(\"queuedHandlers\");\nvar _paused = /*#__PURE__*/_classPrivateFieldLooseKey(\"paused\");\nvar _pauseTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"pauseTimer\");\nvar _downLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"downLimit\");\nvar _upperLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"upperLimit\");\nvar _rateLimitingTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"rateLimitingTimer\");\nvar _call = /*#__PURE__*/_classPrivateFieldLooseKey(\"call\");\nvar _queueNext = /*#__PURE__*/_classPrivateFieldLooseKey(\"queueNext\");\nvar _next = /*#__PURE__*/_classPrivateFieldLooseKey(\"next\");\nvar _queue = /*#__PURE__*/_classPrivateFieldLooseKey(\"queue\");\nvar _dequeue = /*#__PURE__*/_classPrivateFieldLooseKey(\"dequeue\");\nvar _resume = /*#__PURE__*/_classPrivateFieldLooseKey(\"resume\");\nvar _increaseLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"increaseLimit\");\nexport class RateLimitedQueue {\n constructor(limit) {\n Object.defineProperty(this, _dequeue, {\n value: _dequeue2\n });\n Object.defineProperty(this, _queue, {\n value: _queue2\n });\n Object.defineProperty(this, _next, {\n value: _next2\n });\n Object.defineProperty(this, _queueNext, {\n value: _queueNext2\n });\n Object.defineProperty(this, _call, {\n value: _call2\n });\n Object.defineProperty(this, _activeRequests, {\n writable: true,\n value: 0\n });\n Object.defineProperty(this, _queuedHandlers, {\n writable: true,\n value: []\n });\n Object.defineProperty(this, _paused, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _pauseTimer, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _downLimit, {\n writable: true,\n value: 1\n });\n Object.defineProperty(this, _upperLimit, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _rateLimitingTimer, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _resume, {\n writable: true,\n value: () => this.resume()\n });\n Object.defineProperty(this, _increaseLimit, {\n writable: true,\n value: () => {\n if (_classPrivateFieldLooseBase(this, _paused)[_paused]) {\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 0);\n return;\n }\n _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = this.limit;\n this.limit = Math.ceil((_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] + _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]) / 2);\n for (let i = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]; i <= this.limit; i++) {\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n if (_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] - _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] > 3) {\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 2000);\n } else {\n _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = Math.floor(_classPrivateFieldLooseBase(this, _downLimit)[_downLimit] / 2);\n }\n }\n });\n if (typeof limit !== 'number' || limit === 0) {\n this.limit = Infinity;\n } else {\n this.limit = limit;\n }\n }\n run(fn, queueOptions) {\n if (!_classPrivateFieldLooseBase(this, _paused)[_paused] && _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] < this.limit) {\n return _classPrivateFieldLooseBase(this, _call)[_call](fn);\n }\n return _classPrivateFieldLooseBase(this, _queue)[_queue](fn, queueOptions);\n }\n wrapSyncFunction(fn, queueOptions) {\n var _this = this;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const queuedRequest = _this.run(() => {\n fn(...args);\n queueMicrotask(() => queuedRequest.done());\n return () => {};\n }, queueOptions);\n return {\n abortOn,\n abort() {\n queuedRequest.abort();\n }\n };\n };\n }\n wrapPromiseFunction(fn, queueOptions) {\n var _this2 = this;\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let queuedRequest;\n const outerPromise = new Promise((resolve, reject) => {\n queuedRequest = _this2.run(() => {\n let cancelError;\n let innerPromise;\n try {\n innerPromise = Promise.resolve(fn(...args));\n } catch (err) {\n innerPromise = Promise.reject(err);\n }\n innerPromise.then(result => {\n if (cancelError) {\n reject(cancelError);\n } else {\n queuedRequest.done();\n resolve(result);\n }\n }, err => {\n if (cancelError) {\n reject(cancelError);\n } else {\n queuedRequest.done();\n reject(err);\n }\n });\n return cause => {\n cancelError = createCancelError(cause);\n };\n }, queueOptions);\n });\n outerPromise.abort = cause => {\n queuedRequest.abort(cause);\n };\n outerPromise.abortOn = abortOn;\n return outerPromise;\n };\n }\n resume() {\n _classPrivateFieldLooseBase(this, _paused)[_paused] = false;\n clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n for (let i = 0; i < this.limit; i++) {\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n }\n /**\n * Freezes the queue for a while or indefinitely.\n *\n * @param {number | null } [duration] Duration for the pause to happen, in milliseconds.\n * If omitted, the queue won't resume automatically.\n */\n pause(duration) {\n if (duration === void 0) {\n duration = null;\n }\n _classPrivateFieldLooseBase(this, _paused)[_paused] = true;\n clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n if (duration != null) {\n _classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer] = setTimeout(_classPrivateFieldLooseBase(this, _resume)[_resume], duration);\n }\n }\n\n /**\n * Pauses the queue for a duration, and lower the limit of concurrent requests\n * when the queue resumes. When the queue resumes, it tries to progressively\n * increase the limit in `this.#increaseLimit` until another call is made to\n * `this.rateLimit`.\n * Call this function when using the RateLimitedQueue for network requests and\n * the remote server responds with 429 HTTP code.\n *\n * @param {number} duration in milliseconds.\n */\n rateLimit(duration) {\n clearTimeout(_classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer]);\n this.pause(duration);\n if (this.limit > 1 && Number.isFinite(this.limit)) {\n _classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] = this.limit - 1;\n this.limit = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit];\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], duration);\n }\n }\n get isPaused() {\n return _classPrivateFieldLooseBase(this, _paused)[_paused];\n }\n}\nfunction _call2(fn) {\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] += 1;\n let done = false;\n let cancelActive;\n try {\n cancelActive = fn();\n } catch (err) {\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n throw err;\n }\n return {\n abort: cause => {\n if (done) return;\n done = true;\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n cancelActive == null || cancelActive(cause);\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n },\n done: () => {\n if (done) return;\n done = true;\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n };\n}\nfunction _queueNext2() {\n // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n // one by one without continuously _advancing_ it (and starting new tasks before immediately\n // aborting them)\n queueMicrotask(() => _classPrivateFieldLooseBase(this, _next)[_next]());\n}\nfunction _next2() {\n if (_classPrivateFieldLooseBase(this, _paused)[_paused] || _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] >= this.limit) {\n return;\n }\n if (_classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].length === 0) {\n return;\n }\n\n // Dispatch the next request, and update the abort/done handlers\n // so that cancelling it does the Right Thing (and doesn't just try\n // to dequeue an already-running request).\n const next = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].shift();\n if (next == null) {\n throw new Error('Invariant violation: next is null');\n }\n const handler = _classPrivateFieldLooseBase(this, _call)[_call](next.fn);\n next.abort = handler.abort;\n next.done = handler.done;\n}\nfunction _queue2(fn, options) {\n const handler = {\n fn,\n priority: (options == null ? void 0 : options.priority) || 0,\n abort: () => {\n _classPrivateFieldLooseBase(this, _dequeue)[_dequeue](handler);\n },\n done: () => {\n throw new Error('Cannot mark a queued request as done: this indicates a bug');\n }\n };\n const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].findIndex(other => {\n return handler.priority > other.priority;\n });\n if (index === -1) {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].push(handler);\n } else {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 0, handler);\n }\n return handler;\n}\nfunction _dequeue2(handler) {\n const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].indexOf(handler);\n if (index !== -1) {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 1);\n }\n}\nexport const internalRateLimitedQueue = Symbol('__queue');","import hasOwnProperty from \"./hasProperty.js\";\n/**\n * Little AbortController proxy module so we can swap out the implementation easily later.\n */\nexport const {\n AbortController\n} = globalThis;\nexport const {\n AbortSignal\n} = globalThis;\nexport const createAbortError = function (message, options) {\n if (message === void 0) {\n message = 'Aborted';\n }\n const err = new DOMException(message, 'AbortError');\n if (options != null && hasOwnProperty(options, 'cause')) {\n Object.defineProperty(err, 'cause', {\n // @ts-expect-error TS is drunk\n __proto__: null,\n configurable: true,\n writable: true,\n value: options.cause\n });\n }\n return err;\n};","function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\nimport { AbortController } from '@uppy/utils/lib/AbortController';\nconst MB = 1024 * 1024;\nconst defaultOptions = {\n getChunkSize(file) {\n return Math.ceil(file.size / 10000);\n },\n onProgress() {},\n onPartComplete() {},\n onSuccess() {},\n onError(err) {\n throw err;\n }\n};\nfunction ensureInt(value) {\n if (typeof value === 'string') {\n // @ts-expect-error TS is not able to recognize it's fine.\n return parseInt(value, 10);\n }\n if (typeof value === 'number') {\n // @ts-expect-error TS is not able to recognize it's fine.\n return value;\n }\n throw new TypeError('Expected a number');\n}\nexport const pausingUploadReason = Symbol('pausing upload, not an actual error');\n\n/**\n * A MultipartUploader instance is used per file upload to determine whether a\n * upload should be done as multipart or as a regular S3 upload\n * (based on the user-provided `shouldUseMultipart` option value) and to manage\n * the chunk splitting.\n */\nvar _abortController = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortController\");\nvar _chunks = /*#__PURE__*/_classPrivateFieldLooseKey(\"chunks\");\nvar _chunkState = /*#__PURE__*/_classPrivateFieldLooseKey(\"chunkState\");\nvar _data = /*#__PURE__*/_classPrivateFieldLooseKey(\"data\");\nvar _file = /*#__PURE__*/_classPrivateFieldLooseKey(\"file\");\nvar _uploadHasStarted = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadHasStarted\");\nvar _onError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onError\");\nvar _onSuccess = /*#__PURE__*/_classPrivateFieldLooseKey(\"onSuccess\");\nvar _shouldUseMultipart = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldUseMultipart\");\nvar _isRestoring = /*#__PURE__*/_classPrivateFieldLooseKey(\"isRestoring\");\nvar _onReject = /*#__PURE__*/_classPrivateFieldLooseKey(\"onReject\");\nvar _maxMultipartParts = /*#__PURE__*/_classPrivateFieldLooseKey(\"maxMultipartParts\");\nvar _minPartSize = /*#__PURE__*/_classPrivateFieldLooseKey(\"minPartSize\");\nvar _initChunks = /*#__PURE__*/_classPrivateFieldLooseKey(\"initChunks\");\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\nvar _resumeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"resumeUpload\");\nvar _onPartProgress = /*#__PURE__*/_classPrivateFieldLooseKey(\"onPartProgress\");\nvar _onPartComplete = /*#__PURE__*/_classPrivateFieldLooseKey(\"onPartComplete\");\nvar _abortUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortUpload\");\nclass MultipartUploader {\n constructor(data, options) {\n var _this$options, _this$options$getChun;\n Object.defineProperty(this, _abortUpload, {\n value: _abortUpload2\n });\n Object.defineProperty(this, _resumeUpload, {\n value: _resumeUpload2\n });\n Object.defineProperty(this, _createUpload, {\n value: _createUpload2\n });\n // initChunks checks the user preference for using multipart uploads (opts.shouldUseMultipart)\n // and calculates the optimal part size. When using multipart part uploads every part except for the last has\n // to be at least 5 MB and there can be no more than 10K parts.\n // This means we sometimes need to change the preferred part size from the user in order to meet these requirements.\n Object.defineProperty(this, _initChunks, {\n value: _initChunks2\n });\n Object.defineProperty(this, _abortController, {\n writable: true,\n value: new AbortController()\n });\n Object.defineProperty(this, _chunks, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _chunkState, {\n writable: true,\n value: void 0\n });\n /**\n * The (un-chunked) data to upload.\n */\n Object.defineProperty(this, _data, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _file, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _uploadHasStarted, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _onError, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _onSuccess, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _shouldUseMultipart, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _isRestoring, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _onReject, {\n writable: true,\n value: err => (err == null ? void 0 : err.cause) === pausingUploadReason ? null : _classPrivateFieldLooseBase(this, _onError)[_onError](err)\n });\n Object.defineProperty(this, _maxMultipartParts, {\n writable: true,\n value: 10000\n });\n Object.defineProperty(this, _minPartSize, {\n writable: true,\n value: 5 * MB\n });\n Object.defineProperty(this, _onPartProgress, {\n writable: true,\n value: index => ev => {\n if (!ev.lengthComputable) return;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].uploaded = ensureInt(ev.loaded);\n const totalUploaded = _classPrivateFieldLooseBase(this, _chunkState)[_chunkState].reduce((n, c) => n + c.uploaded, 0);\n this.options.onProgress(totalUploaded, _classPrivateFieldLooseBase(this, _data)[_data].size);\n }\n });\n Object.defineProperty(this, _onPartComplete, {\n writable: true,\n value: index => etag => {\n // This avoids the net::ERR_OUT_OF_MEMORY in Chromium Browsers.\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][index] = null;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].etag = etag;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].done = true;\n const part = {\n PartNumber: index + 1,\n ETag: etag\n };\n this.options.onPartComplete(part);\n }\n });\n this.options = {\n ...defaultOptions,\n ...options\n };\n // Use default `getChunkSize` if it was null or something\n (_this$options$getChun = (_this$options = this.options).getChunkSize) != null ? _this$options$getChun : _this$options.getChunkSize = defaultOptions.getChunkSize;\n _classPrivateFieldLooseBase(this, _data)[_data] = data;\n _classPrivateFieldLooseBase(this, _file)[_file] = options.file;\n _classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess] = this.options.onSuccess;\n _classPrivateFieldLooseBase(this, _onError)[_onError] = this.options.onError;\n _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart] = this.options.shouldUseMultipart;\n\n // When we are restoring an upload, we already have an UploadId and a Key. Otherwise\n // we need to call `createMultipartUpload` to get an `uploadId` and a `key`.\n // Non-multipart uploads are not restorable.\n _classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring] = options.uploadId && options.key;\n _classPrivateFieldLooseBase(this, _initChunks)[_initChunks]();\n }\n start() {\n if (_classPrivateFieldLooseBase(this, _uploadHasStarted)[_uploadHasStarted]) {\n if (!_classPrivateFieldLooseBase(this, _abortController)[_abortController].signal.aborted) _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort(pausingUploadReason);\n _classPrivateFieldLooseBase(this, _abortController)[_abortController] = new AbortController();\n _classPrivateFieldLooseBase(this, _resumeUpload)[_resumeUpload]();\n } else if (_classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring]) {\n this.options.companionComm.restoreUploadFile(_classPrivateFieldLooseBase(this, _file)[_file], {\n uploadId: this.options.uploadId,\n key: this.options.key\n });\n _classPrivateFieldLooseBase(this, _resumeUpload)[_resumeUpload]();\n } else {\n _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]();\n }\n }\n pause() {\n _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort(pausingUploadReason);\n // Swap it out for a new controller, because this instance may be resumed later.\n _classPrivateFieldLooseBase(this, _abortController)[_abortController] = new AbortController();\n }\n abort(opts) {\n if (opts != null && opts.really) _classPrivateFieldLooseBase(this, _abortUpload)[_abortUpload]();else this.pause();\n }\n\n // TODO: remove this in the next major\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n get chunkState() {\n return _classPrivateFieldLooseBase(this, _chunkState)[_chunkState];\n }\n}\nfunction _initChunks2() {\n const fileSize = _classPrivateFieldLooseBase(this, _data)[_data].size;\n const shouldUseMultipart = typeof _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart] === 'function' ? _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart](_classPrivateFieldLooseBase(this, _file)[_file]) : Boolean(_classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart]);\n if (shouldUseMultipart && fileSize > _classPrivateFieldLooseBase(this, _minPartSize)[_minPartSize]) {\n // At least 5MB per request:\n let chunkSize = Math.max(this.options.getChunkSize(_classPrivateFieldLooseBase(this, _data)[_data]), _classPrivateFieldLooseBase(this, _minPartSize)[_minPartSize]);\n let arraySize = Math.floor(fileSize / chunkSize);\n\n // At most 10k requests per file:\n if (arraySize > _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts]) {\n arraySize = _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts];\n chunkSize = fileSize / _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts];\n }\n _classPrivateFieldLooseBase(this, _chunks)[_chunks] = Array(arraySize);\n for (let offset = 0, j = 0; offset < fileSize; offset += chunkSize, j++) {\n const end = Math.min(fileSize, offset + chunkSize);\n\n // Defer data fetching/slicing until we actually need the data, because it's slow if we have a lot of files\n const getData = () => {\n const i2 = offset;\n return _classPrivateFieldLooseBase(this, _data)[_data].slice(i2, end);\n };\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j] = {\n getData,\n onProgress: _classPrivateFieldLooseBase(this, _onPartProgress)[_onPartProgress](j),\n onComplete: _classPrivateFieldLooseBase(this, _onPartComplete)[_onPartComplete](j),\n shouldUseMultipart\n };\n if (_classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring]) {\n const size = offset + chunkSize > fileSize ? fileSize - offset : chunkSize;\n // setAsUploaded is called by listPart, to keep up-to-date the\n // quantity of data that is left to actually upload.\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j].setAsUploaded = () => {\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j] = null;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][j].uploaded = size;\n };\n }\n }\n } else {\n _classPrivateFieldLooseBase(this, _chunks)[_chunks] = [{\n getData: () => _classPrivateFieldLooseBase(this, _data)[_data],\n onProgress: _classPrivateFieldLooseBase(this, _onPartProgress)[_onPartProgress](0),\n onComplete: _classPrivateFieldLooseBase(this, _onPartComplete)[_onPartComplete](0),\n shouldUseMultipart\n }];\n }\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState] = _classPrivateFieldLooseBase(this, _chunks)[_chunks].map(() => ({\n uploaded: 0\n }));\n}\nfunction _createUpload2() {\n this.options.companionComm.uploadFile(_classPrivateFieldLooseBase(this, _file)[_file], _classPrivateFieldLooseBase(this, _chunks)[_chunks], _classPrivateFieldLooseBase(this, _abortController)[_abortController].signal).then(_classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess], _classPrivateFieldLooseBase(this, _onReject)[_onReject]);\n _classPrivateFieldLooseBase(this, _uploadHasStarted)[_uploadHasStarted] = true;\n}\nfunction _resumeUpload2() {\n this.options.companionComm.resumeUploadFile(_classPrivateFieldLooseBase(this, _file)[_file], _classPrivateFieldLooseBase(this, _chunks)[_chunks], _classPrivateFieldLooseBase(this, _abortController)[_abortController].signal).then(_classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess], _classPrivateFieldLooseBase(this, _onReject)[_onReject]);\n}\nfunction _abortUpload2() {\n _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort();\n this.options.companionComm.abortFileUpload(_classPrivateFieldLooseBase(this, _file)[_file]).catch(err => this.options.log(err));\n}\nexport default MultipartUploader;","import { createAbortError } from '@uppy/utils/lib/AbortController';\nexport function throwIfAborted(signal) {\n if (signal != null && signal.aborted) {\n throw createAbortError('The operation was aborted', {\n cause: signal.reason\n });\n }\n}","/**\n * Create a canonical request by concatenating the following strings, separated\n * by newline characters. This helps ensure that the signature that you\n * calculate and the signature that AWS calculates can match.\n *\n * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#create-canonical-request\n *\n * @param param0\n * @param param0.method – The HTTP method.\n * @param param0.CanonicalUri – The URI-encoded version of the absolute\n * path component URL (everything between the host and the question mark\n * character (?) that starts the query string parameters). If the absolute path\n * is empty, use a forward slash character (/).\n * @param param0.CanonicalQueryString – The URL-encoded query string\n * parameters, separated by ampersands (&). Percent-encode reserved characters,\n * including the space character. Encode names and values separately. If there\n * are empty parameters, append the equals sign to the parameter name before\n * encoding. After encoding, sort the parameters alphabetically by key name. If\n * there is no query string, use an empty string (\"\").\n * @param param0.SignedHeaders – The request headers,\n * that will be signed, and their values, separated by newline characters.\n * For the values, trim any leading or trailing spaces, convert sequential\n * spaces to a single space, and separate the values for a multi-value header\n * using commas. You must include the host header (HTTP/1.1), and any x-amz-*\n * headers in the signature. You can optionally include other standard headers\n * in the signature, such as content-type.\n * @param param0.HashedPayload – A string created using the payload in\n * the body of the HTTP request as input to a hash function. This string uses\n * lowercase hexadecimal characters. If the payload is empty, use an empty\n * string as the input to the hash function.\n */\nfunction createCanonicalRequest(_ref) {\n let {\n method = 'PUT',\n CanonicalUri = '/',\n CanonicalQueryString = '',\n SignedHeaders,\n HashedPayload\n } = _ref;\n const headerKeys = Object.keys(SignedHeaders).map(k => k.toLowerCase()).sort();\n return [method, CanonicalUri, CanonicalQueryString, ...headerKeys.map(k => `${k}:${SignedHeaders[k]}`), '', headerKeys.join(';'), HashedPayload].join('\\n');\n}\nconst ec = new TextEncoder();\nconst algorithm = {\n name: 'HMAC',\n hash: 'SHA-256'\n};\nasync function digest(data) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.digest(algorithm.hash, ec.encode(data));\n}\nasync function generateHmacKey(secret) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.importKey('raw', typeof secret === 'string' ? ec.encode(secret) : secret, algorithm, false, ['sign']);\n}\nfunction arrayBufferToHexString(arrayBuffer) {\n const byteArray = new Uint8Array(arrayBuffer);\n let hexString = '';\n for (let i = 0; i < byteArray.length; i++) {\n hexString += byteArray[i].toString(16).padStart(2, '0');\n }\n return hexString;\n}\nasync function hash(key, data) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.sign(algorithm, await generateHmacKey(key), ec.encode(data));\n}\n\n/**\n * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html\n */\nexport default async function createSignedURL(_ref2) {\n let {\n accountKey,\n accountSecret,\n sessionToken,\n bucketName,\n Key,\n Region,\n expires,\n uploadId,\n partNumber\n } = _ref2;\n const Service = 's3';\n const host = `${bucketName}.${Service}.${Region}.amazonaws.com`;\n /**\n * List of char out of `encodeURI()` is taken from ECMAScript spec.\n * Note that the `/` character is purposefully not included in list below.\n *\n * @see https://tc39.es/ecma262/#sec-encodeuri-uri\n */\n const CanonicalUri = `/${encodeURI(Key).replace(/[;?:@&=+$,#!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`)}`;\n const payload = 'UNSIGNED-PAYLOAD';\n const requestDateTime = new Date().toISOString().replace(/[-:]|\\.\\d+/g, ''); // YYYYMMDDTHHMMSSZ\n const date = requestDateTime.slice(0, 8); // YYYYMMDD\n const scope = `${date}/${Region}/${Service}/aws4_request`;\n const url = new URL(`https://${host}${CanonicalUri}`);\n // N.B.: URL search params needs to be added in the ASCII order\n url.searchParams.set('X-Amz-Algorithm', 'AWS4-HMAC-SHA256');\n url.searchParams.set('X-Amz-Content-Sha256', payload);\n url.searchParams.set('X-Amz-Credential', `${accountKey}/${scope}`);\n url.searchParams.set('X-Amz-Date', requestDateTime);\n url.searchParams.set('X-Amz-Expires', expires);\n // We are signing on the client, so we expect there's going to be a session token:\n url.searchParams.set('X-Amz-Security-Token', sessionToken);\n url.searchParams.set('X-Amz-SignedHeaders', 'host');\n // Those two are present only for Multipart Uploads:\n if (partNumber) url.searchParams.set('partNumber', partNumber);\n if (uploadId) url.searchParams.set('uploadId', uploadId);\n url.searchParams.set('x-id', partNumber && uploadId ? 'UploadPart' : 'PutObject');\n\n // Step 1: Create a canonical request\n const canonical = createCanonicalRequest({\n CanonicalUri,\n CanonicalQueryString: url.search.slice(1),\n SignedHeaders: {\n host\n },\n HashedPayload: payload\n });\n\n // Step 2: Create a hash of the canonical request\n const hashedCanonical = arrayBufferToHexString(await digest(canonical));\n\n // Step 3: Create a string to sign\n const stringToSign = [`AWS4-HMAC-SHA256`,\n // The algorithm used to create the hash of the canonical request.\n requestDateTime,\n // The date and time used in the credential scope.\n scope,\n // The credential scope. This restricts the resulting signature to the specified Region and service.\n hashedCanonical // The hash of the canonical request.\n ].join('\\n');\n\n // Step 4: Calculate the signature\n const kDate = await hash(`AWS4${accountSecret}`, date);\n const kRegion = await hash(kDate, Region);\n const kService = await hash(kRegion, Service);\n const kSigning = await hash(kService, 'aws4_request');\n const signature = arrayBufferToHexString(await hash(kSigning, stringToSign));\n\n // Step 5: Add the signature to the request\n url.searchParams.set('X-Amz-Signature', signature);\n return url;\n}","function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\nimport { pausingUploadReason } from \"./MultipartUploader.js\";\nimport { throwIfAborted } from \"./utils.js\";\nfunction removeMetadataFromURL(urlString) {\n const urlObject = new URL(urlString);\n urlObject.search = '';\n urlObject.hash = '';\n return urlObject.href;\n}\nvar _abortMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortMultipartUpload\");\nvar _cache = /*#__PURE__*/_classPrivateFieldLooseKey(\"cache\");\nvar _createMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createMultipartUpload\");\nvar _fetchSignature = /*#__PURE__*/_classPrivateFieldLooseKey(\"fetchSignature\");\nvar _getUploadParameters = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUploadParameters\");\nvar _listParts = /*#__PURE__*/_classPrivateFieldLooseKey(\"listParts\");\nvar _previousRetryDelay = /*#__PURE__*/_classPrivateFieldLooseKey(\"previousRetryDelay\");\nvar _requests = /*#__PURE__*/_classPrivateFieldLooseKey(\"requests\");\nvar _retryDelays = /*#__PURE__*/_classPrivateFieldLooseKey(\"retryDelays\");\nvar _sendCompletionRequest = /*#__PURE__*/_classPrivateFieldLooseKey(\"sendCompletionRequest\");\nvar _setS3MultipartState = /*#__PURE__*/_classPrivateFieldLooseKey(\"setS3MultipartState\");\nvar _uploadPartBytes = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadPartBytes\");\nvar _getFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"getFile\");\nvar _shouldRetry = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldRetry\");\nvar _nonMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"nonMultipartUpload\");\nexport class HTTPCommunicationQueue {\n constructor(_requests2, options, setS3MultipartState, getFile) {\n Object.defineProperty(this, _nonMultipartUpload, {\n value: _nonMultipartUpload2\n });\n Object.defineProperty(this, _shouldRetry, {\n value: _shouldRetry2\n });\n Object.defineProperty(this, _abortMultipartUpload, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _cache, {\n writable: true,\n value: new WeakMap()\n });\n Object.defineProperty(this, _createMultipartUpload, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _fetchSignature, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _getUploadParameters, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _listParts, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _previousRetryDelay, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _requests, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _retryDelays, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _sendCompletionRequest, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _setS3MultipartState, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _uploadPartBytes, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _getFile, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldLooseBase(this, _requests)[_requests] = _requests2;\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState] = setS3MultipartState;\n _classPrivateFieldLooseBase(this, _getFile)[_getFile] = getFile;\n this.setOptions(options);\n }\n setOptions(options) {\n const requests = _classPrivateFieldLooseBase(this, _requests)[_requests];\n if ('abortMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _abortMultipartUpload)[_abortMultipartUpload] = requests.wrapPromiseFunction(options.abortMultipartUpload, {\n priority: 1\n });\n }\n if ('createMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _createMultipartUpload)[_createMultipartUpload] = requests.wrapPromiseFunction(options.createMultipartUpload, {\n priority: -1\n });\n }\n if ('signPart' in options) {\n _classPrivateFieldLooseBase(this, _fetchSignature)[_fetchSignature] = requests.wrapPromiseFunction(options.signPart);\n }\n if ('listParts' in options) {\n _classPrivateFieldLooseBase(this, _listParts)[_listParts] = requests.wrapPromiseFunction(options.listParts);\n }\n if ('completeMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest] = requests.wrapPromiseFunction(options.completeMultipartUpload, {\n priority: 1\n });\n }\n if ('retryDelays' in options) {\n var _options$retryDelays;\n _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays] = (_options$retryDelays = options.retryDelays) != null ? _options$retryDelays : [];\n }\n if ('uploadPartBytes' in options) {\n _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes] = requests.wrapPromiseFunction(options.uploadPartBytes, {\n priority: Infinity\n });\n }\n if ('getUploadParameters' in options) {\n _classPrivateFieldLooseBase(this, _getUploadParameters)[_getUploadParameters] = requests.wrapPromiseFunction(options.getUploadParameters);\n }\n }\n async getUploadId(file, signal) {\n let cachedResult;\n // As the cache is updated asynchronously, there could be a race condition\n // where we just miss a new result so we loop here until we get nothing back,\n // at which point it's out turn to create a new cache entry.\n // eslint-disable-next-line no-cond-assign\n while ((cachedResult = _classPrivateFieldLooseBase(this, _cache)[_cache].get(file.data)) != null) {\n try {\n return await cachedResult;\n } catch {\n // In case of failure, we want to ignore the cached error.\n // At this point, either there's a new cached value, or we'll exit the loop a create a new one.\n }\n }\n const promise = _classPrivateFieldLooseBase(this, _createMultipartUpload)[_createMultipartUpload](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), signal);\n const abortPromise = () => {\n promise.abort(signal.reason);\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n };\n signal.addEventListener('abort', abortPromise, {\n once: true\n });\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, promise);\n promise.then(async result => {\n signal.removeEventListener('abort', abortPromise);\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState](file, result);\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, result);\n }, () => {\n signal.removeEventListener('abort', abortPromise);\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n });\n return promise;\n }\n async abortFileUpload(file) {\n const result = _classPrivateFieldLooseBase(this, _cache)[_cache].get(file.data);\n if (result == null) {\n // If the createMultipartUpload request never was made, we don't\n // need to send the abortMultipartUpload request.\n return;\n }\n // Remove the cache entry right away for follow-up requests do not try to\n // use the soon-to-be aborted cached values.\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState](file, Object.create(null));\n let awaitedResult;\n try {\n awaitedResult = await result;\n } catch {\n // If the cached result rejects, there's nothing to abort.\n return;\n }\n await _classPrivateFieldLooseBase(this, _abortMultipartUpload)[_abortMultipartUpload](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), awaitedResult);\n }\n async uploadFile(file, chunks, signal) {\n throwIfAborted(signal);\n if (chunks.length === 1 && !chunks[0].shouldUseMultipart) {\n return _classPrivateFieldLooseBase(this, _nonMultipartUpload)[_nonMultipartUpload](file, chunks[0], signal);\n }\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n throwIfAborted(signal);\n try {\n const parts = await Promise.all(chunks.map((chunk, i) => this.uploadChunk(file, i + 1, chunk, signal)));\n throwIfAborted(signal);\n return await _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n key,\n uploadId,\n parts,\n signal\n }, signal).abortOn(signal);\n } catch (err) {\n if ((err == null ? void 0 : err.cause) !== pausingUploadReason && (err == null ? void 0 : err.name) !== 'AbortError') {\n // We purposefully don't wait for the promise and ignore its status,\n // because we want the error `err` to bubble up ASAP to report it to the\n // user. A failure to abort is not that big of a deal anyway.\n this.abortFileUpload(file);\n }\n throw err;\n }\n }\n restoreUploadFile(file, uploadIdAndKey) {\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, uploadIdAndKey);\n }\n async resumeUploadFile(file, chunks, signal) {\n throwIfAborted(signal);\n if (chunks.length === 1 && chunks[0] != null && !chunks[0].shouldUseMultipart) {\n return _classPrivateFieldLooseBase(this, _nonMultipartUpload)[_nonMultipartUpload](file, chunks[0], signal);\n }\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n throwIfAborted(signal);\n const alreadyUploadedParts = await _classPrivateFieldLooseBase(this, _listParts)[_listParts](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n uploadId,\n key,\n signal\n }, signal).abortOn(signal);\n throwIfAborted(signal);\n const parts = await Promise.all(chunks.map((chunk, i) => {\n const partNumber = i + 1;\n const alreadyUploadedInfo = alreadyUploadedParts.find(_ref => {\n let {\n PartNumber\n } = _ref;\n return PartNumber === partNumber;\n });\n if (alreadyUploadedInfo == null) {\n return this.uploadChunk(file, partNumber, chunk, signal);\n }\n // Already uploaded chunks are set to null. If we are restoring the upload, we need to mark it as already uploaded.\n chunk == null || chunk.setAsUploaded == null || chunk.setAsUploaded();\n return {\n PartNumber: partNumber,\n ETag: alreadyUploadedInfo.ETag\n };\n }));\n throwIfAborted(signal);\n return _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n key,\n uploadId,\n parts,\n signal\n }, signal).abortOn(signal);\n }\n async uploadChunk(file, partNumber, chunk, signal) {\n throwIfAborted(signal);\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n const signatureRetryIterator = _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays].values();\n const chunkRetryIterator = _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays].values();\n const shouldRetrySignature = () => {\n const next = signatureRetryIterator.next();\n if (next == null || next.done) {\n return null;\n }\n return next.value;\n };\n for (;;) {\n throwIfAborted(signal);\n const chunkData = chunk.getData();\n const {\n onProgress,\n onComplete\n } = chunk;\n let signature;\n try {\n signature = await _classPrivateFieldLooseBase(this, _fetchSignature)[_fetchSignature](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n uploadId,\n key,\n partNumber,\n body: chunkData,\n signal\n }).abortOn(signal);\n } catch (err) {\n const timeout = shouldRetrySignature();\n if (timeout == null || signal.aborted) {\n throw err;\n }\n await new Promise(resolve => setTimeout(resolve, timeout));\n // eslint-disable-next-line no-continue\n continue;\n }\n throwIfAborted(signal);\n try {\n return {\n PartNumber: partNumber,\n ...(await _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes]({\n signature,\n body: chunkData,\n size: chunkData.size,\n onProgress,\n onComplete,\n signal\n }).abortOn(signal))\n };\n } catch (err) {\n if (!(await _classPrivateFieldLooseBase(this, _shouldRetry)[_shouldRetry](err, chunkRetryIterator))) throw err;\n }\n }\n }\n}\nasync function _shouldRetry2(err, retryDelayIterator) {\n var _err$source;\n const requests = _classPrivateFieldLooseBase(this, _requests)[_requests];\n const status = err == null || (_err$source = err.source) == null ? void 0 : _err$source.status;\n\n // TODO: this retry logic is taken out of Tus. We should have a centralized place for retrying,\n // perhaps the rate limited queue, and dedupe all plugins with that.\n if (status == null) {\n return false;\n }\n if (status === 403 && err.message === 'Request has expired') {\n if (!requests.isPaused) {\n // We don't want to exhaust the retryDelayIterator as long as there are\n // more than one request in parallel, to give slower connection a chance\n // to catch up with the expiry set in Companion.\n if (requests.limit === 1 || _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay] == null) {\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n // If there are more than 1 request done in parallel, the RLQ limit is\n // decreased and the failed request is requeued after waiting for a bit.\n // If there is only one request in parallel, the limit can't be\n // decreased, so we iterate over `retryDelayIterator` as we do for\n // other failures.\n // `#previousRetryDelay` caches the value so we can re-use it next time.\n _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay] = next.value;\n }\n // No need to stop the other requests, we just want to lower the limit.\n requests.rateLimit(0);\n await new Promise(resolve => setTimeout(resolve, _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay]));\n }\n } else if (status === 429) {\n // HTTP 429 Too Many Requests => to avoid the whole download to fail, pause all requests.\n if (!requests.isPaused) {\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n requests.rateLimit(next.value);\n }\n } else if (status > 400 && status < 500 && status !== 409) {\n // HTTP 4xx, the server won't send anything, it's doesn't make sense to retry\n return false;\n } else if (typeof navigator !== 'undefined' && navigator.onLine === false) {\n // The navigator is offline, let's wait for it to come back online.\n if (!requests.isPaused) {\n requests.pause();\n window.addEventListener('online', () => {\n requests.resume();\n }, {\n once: true\n });\n }\n } else {\n // Other error code means the request can be retried later.\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n await new Promise(resolve => setTimeout(resolve, next.value));\n }\n return true;\n}\nasync function _nonMultipartUpload2(file, chunk, signal) {\n const {\n method = 'POST',\n url,\n fields,\n headers\n } = await _classPrivateFieldLooseBase(this, _getUploadParameters)[_getUploadParameters](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n signal\n }).abortOn(signal);\n let body;\n const data = chunk.getData();\n if (method.toUpperCase() === 'POST') {\n const formData = new FormData();\n Object.entries(fields).forEach(_ref2 => {\n let [key, value] = _ref2;\n return formData.set(key, value);\n });\n formData.set('file', data);\n body = formData;\n } else {\n body = data;\n }\n const {\n onProgress,\n onComplete\n } = chunk;\n const result = await _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes]({\n signature: {\n url,\n headers,\n method\n },\n body,\n size: data.size,\n onProgress,\n onComplete,\n signal\n }).abortOn(signal);\n return 'location' in result ? result : {\n location: removeMetadataFromURL(url),\n ...result\n };\n}","let _Symbol$for;\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\nimport BasePlugin from '@uppy/core/lib/BasePlugin.js';\nimport { RequestClient } from '@uppy/companion-client';\nimport EventManager from '@uppy/core/lib/EventManager.js';\nimport { RateLimitedQueue } from '@uppy/utils/lib/RateLimitedQueue';\nimport { filterNonFailedFiles, filterFilesToEmitUploadStarted } from '@uppy/utils/lib/fileFilters';\nimport { createAbortError } from '@uppy/utils/lib/AbortController';\nimport MultipartUploader from \"./MultipartUploader.js\";\nimport { throwIfAborted } from \"./utils.js\";\nimport createSignedURL from \"./createSignedURL.js\";\nimport { HTTPCommunicationQueue } from \"./HTTPCommunicationQueue.js\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"3.12.0\"\n};\nfunction assertServerError(res) {\n if (res != null && res.error) {\n const error = new Error(res.message);\n Object.assign(error, res.error);\n throw error;\n }\n return res;\n}\n/**\n * Computes the expiry time for a request signed with temporary credentials. If\n * no expiration was provided, or an invalid value (e.g. in the past) is\n * provided, undefined is returned. This function assumes the client clock is in\n * sync with the remote server, which is a requirement for the signature to be\n * validated for AWS anyway.\n */\nfunction getExpiry(credentials) {\n const expirationDate = credentials.Expiration;\n if (expirationDate) {\n const timeUntilExpiry = Math.floor((new Date(expirationDate) - Date.now()) / 1000);\n if (timeUntilExpiry > 9) {\n return timeUntilExpiry;\n }\n }\n return undefined;\n}\nfunction getAllowedMetadata(_ref) {\n let {\n meta,\n allowedMetaFields,\n querify = false\n } = _ref;\n const metaFields = allowedMetaFields != null ? allowedMetaFields : Object.keys(meta);\n if (!meta) return {};\n return Object.fromEntries(metaFields.filter(key => meta[key] != null).map(key => {\n const realKey = querify ? `metadata[${key}]` : key;\n const value = String(meta[key]);\n return [realKey, value];\n }));\n}\n\n/** @deprecated Use signPart instead */\n\nconst defaultOptions = {\n // TODO: null here means “include all”, [] means include none.\n // This is inconsistent with @uppy/aws-s3 and @uppy/transloadit\n allowedMetaFields: null,\n limit: 6,\n getTemporarySecurityCredentials: false,\n shouldUseMultipart: file => file.size !== 0,\n // TODO: Switch default to:\n // eslint-disable-next-line no-bitwise\n // shouldUseMultipart: (file) => file.size >> 10 >> 10 > 100,\n retryDelays: [0, 1000, 3000, 5000],\n companionHeaders: {}\n};\nvar _companionCommunicationQueue = /*#__PURE__*/_classPrivateFieldLooseKey(\"companionCommunicationQueue\");\nvar _client = /*#__PURE__*/_classPrivateFieldLooseKey(\"client\");\nvar _cachedTemporaryCredentials = /*#__PURE__*/_classPrivateFieldLooseKey(\"cachedTemporaryCredentials\");\nvar _getTemporarySecurityCredentials = /*#__PURE__*/_classPrivateFieldLooseKey(\"getTemporarySecurityCredentials\");\nvar _setS3MultipartState = /*#__PURE__*/_classPrivateFieldLooseKey(\"setS3MultipartState\");\nvar _getFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"getFile\");\nvar _uploadLocalFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadLocalFile\");\nvar _getCompanionClientArgs = /*#__PURE__*/_classPrivateFieldLooseKey(\"getCompanionClientArgs\");\nvar _upload = /*#__PURE__*/_classPrivateFieldLooseKey(\"upload\");\nvar _setCompanionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"setCompanionHeaders\");\nvar _setResumableUploadsCapability = /*#__PURE__*/_classPrivateFieldLooseKey(\"setResumableUploadsCapability\");\nvar _resetResumableCapability = /*#__PURE__*/_classPrivateFieldLooseKey(\"resetResumableCapability\");\n_Symbol$for = Symbol.for('uppy test: getClient');\nexport default class AwsS3Multipart extends BasePlugin {\n constructor(uppy, opts) {\n var _rateLimitedQueue;\n super(uppy, {\n ...defaultOptions,\n uploadPartBytes: AwsS3Multipart.uploadPartBytes,\n createMultipartUpload: null,\n listParts: null,\n abortMultipartUpload: null,\n completeMultipartUpload: null,\n signPart: null,\n getUploadParameters: null,\n ...opts\n });\n // We need the `as any` here because of the dynamic default options.\n // eslint-disable-next-line class-methods-use-this\n Object.defineProperty(this, _getCompanionClientArgs, {\n value: _getCompanionClientArgs2\n });\n Object.defineProperty(this, _uploadLocalFile, {\n value: _uploadLocalFile2\n });\n Object.defineProperty(this, _getTemporarySecurityCredentials, {\n value: _getTemporarySecurityCredentials2\n });\n Object.defineProperty(this, _companionCommunicationQueue, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _client, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _cachedTemporaryCredentials, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _setS3MultipartState, {\n writable: true,\n value: (file, _ref2) => {\n let {\n key,\n uploadId\n } = _ref2;\n const cFile = this.uppy.getFile(file.id);\n if (cFile == null) {\n // file was removed from store\n return;\n }\n this.uppy.setFileState(file.id, {\n s3Multipart: {\n ...cFile.s3Multipart,\n key,\n uploadId\n }\n });\n }\n });\n Object.defineProperty(this, _getFile, {\n writable: true,\n value: file => {\n return this.uppy.getFile(file.id) || file;\n }\n });\n Object.defineProperty(this, _upload, {\n writable: true,\n value: async fileIDs => {\n if (fileIDs.length === 0) return undefined;\n const files = this.uppy.getFilesByIds(fileIDs);\n const filesFiltered = filterNonFailedFiles(files);\n const filesToEmit = filterFilesToEmitUploadStarted(filesFiltered);\n this.uppy.emit('upload-start', filesToEmit);\n const promises = filesFiltered.map(file => {\n if (file.isRemote) {\n const getQueue = () => this.requests;\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](false);\n const controller = new AbortController();\n const removedHandler = removedFile => {\n if (removedFile.id === file.id) controller.abort();\n };\n this.uppy.on('file-removed', removedHandler);\n const uploadPromise = this.uppy.getRequestClientForFile(file).uploadRemoteFile(file, _classPrivateFieldLooseBase(this, _getCompanionClientArgs)[_getCompanionClientArgs](file), {\n signal: controller.signal,\n getQueue\n });\n this.requests.wrapSyncFunction(() => {\n this.uppy.off('file-removed', removedHandler);\n }, {\n priority: -1\n })();\n return uploadPromise;\n }\n return _classPrivateFieldLooseBase(this, _uploadLocalFile)[_uploadLocalFile](file);\n });\n const upload = await Promise.all(promises);\n // After the upload is done, another upload may happen with only local files.\n // We reset the capability so that the next upload can use resumable uploads.\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n return upload;\n }\n });\n Object.defineProperty(this, _setCompanionHeaders, {\n writable: true,\n value: () => {\n _classPrivateFieldLooseBase(this, _client)[_client].setCompanionHeaders(this.opts.companionHeaders);\n }\n });\n Object.defineProperty(this, _setResumableUploadsCapability, {\n writable: true,\n value: boolean => {\n const {\n capabilities\n } = this.uppy.getState();\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n resumableUploads: boolean\n }\n });\n }\n });\n Object.defineProperty(this, _resetResumableCapability, {\n writable: true,\n value: () => {\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n }\n });\n this.type = 'uploader';\n this.id = this.opts.id || 'AwsS3Multipart';\n // @ts-expect-error TODO: remove unused\n this.title = 'AWS S3 Multipart';\n // TODO: only initiate `RequestClient` is `companionUrl` is defined.\n _classPrivateFieldLooseBase(this, _client)[_client] = new RequestClient(uppy, opts);\n const dynamicDefaultOptions = {\n createMultipartUpload: this.createMultipartUpload,\n listParts: this.listParts,\n abortMultipartUpload: this.abortMultipartUpload,\n completeMultipartUpload: this.completeMultipartUpload,\n signPart: opts != null && opts.getTemporarySecurityCredentials ? this.createSignedURL : this.signPart,\n getUploadParameters: opts != null && opts.getTemporarySecurityCredentials ? this.createSignedURL : this.getUploadParameters\n };\n for (const key of Object.keys(dynamicDefaultOptions)) {\n if (this.opts[key] == null) {\n this.opts[key] = dynamicDefaultOptions[key].bind(this);\n }\n }\n if ((opts == null ? void 0 : opts.prepareUploadParts) != null && opts.signPart == null) {\n this.opts.signPart = async (file, _ref3) => {\n let {\n uploadId,\n key,\n partNumber,\n body,\n signal\n } = _ref3;\n const {\n presignedUrls,\n headers\n } = await opts.prepareUploadParts(file, {\n uploadId,\n key,\n parts: [{\n number: partNumber,\n chunk: body\n }],\n signal\n });\n return {\n url: presignedUrls == null ? void 0 : presignedUrls[partNumber],\n headers: headers == null ? void 0 : headers[partNumber]\n };\n };\n }\n\n /**\n * Simultaneous upload limiting is shared across all uploads with this plugin.\n *\n * @type {RateLimitedQueue}\n */\n this.requests = (_rateLimitedQueue = this.opts.rateLimitedQueue) != null ? _rateLimitedQueue : new RateLimitedQueue(this.opts.limit);\n _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue] = new HTTPCommunicationQueue(this.requests, this.opts, _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState], _classPrivateFieldLooseBase(this, _getFile)[_getFile]);\n this.uploaders = Object.create(null);\n this.uploaderEvents = Object.create(null);\n this.uploaderSockets = Object.create(null);\n }\n [_Symbol$for]() {\n return _classPrivateFieldLooseBase(this, _client)[_client];\n }\n setOptions(newOptions) {\n _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue].setOptions(newOptions);\n super.setOptions(newOptions);\n _classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]();\n }\n\n /**\n * Clean up all references for a file's upload: the MultipartUploader instance,\n * any events related to the file, and the Companion WebSocket connection.\n *\n * Set `opts.abort` to tell S3 that the multipart upload is cancelled and must be removed.\n * This should be done when the user cancels the upload, not when the upload is completed or errored.\n */\n resetUploaderReferences(fileID, opts) {\n if (this.uploaders[fileID]) {\n this.uploaders[fileID].abort({\n really: (opts == null ? void 0 : opts.abort) || false\n });\n this.uploaders[fileID] = null;\n }\n if (this.uploaderEvents[fileID]) {\n this.uploaderEvents[fileID].remove();\n this.uploaderEvents[fileID] = null;\n }\n if (this.uploaderSockets[fileID]) {\n // @ts-expect-error TODO: remove this block in the next major\n this.uploaderSockets[fileID].close();\n // @ts-expect-error TODO: remove this block in the next major\n this.uploaderSockets[fileID] = null;\n }\n }\n\n // TODO: make this a private method in the next major\n assertHost(method) {\n if (!this.opts.companionUrl) {\n throw new Error(`Expected a \\`companionUrl\\` option containing a Companion address, or if you are not using Companion, a custom \\`${method}\\` implementation.`);\n }\n }\n createMultipartUpload(file, signal) {\n this.assertHost('createMultipartUpload');\n throwIfAborted(signal);\n const metadata = getAllowedMetadata({\n meta: file.meta,\n allowedMetaFields: this.opts.allowedMetaFields\n });\n return _classPrivateFieldLooseBase(this, _client)[_client].post('s3/multipart', {\n filename: file.name,\n type: file.type,\n metadata\n }, {\n signal\n }).then(assertServerError);\n }\n listParts(file, _ref4, oldSignal) {\n var _signal;\n let {\n key,\n uploadId,\n signal\n } = _ref4;\n (_signal = signal) != null ? _signal : signal = oldSignal; // eslint-disable-line no-param-reassign\n this.assertHost('listParts');\n throwIfAborted(signal);\n const filename = encodeURIComponent(key);\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/multipart/${uploadId}?key=${filename}`, {\n signal\n }).then(assertServerError);\n }\n completeMultipartUpload(file, _ref5, oldSignal) {\n var _signal2;\n let {\n key,\n uploadId,\n parts,\n signal\n } = _ref5;\n (_signal2 = signal) != null ? _signal2 : signal = oldSignal; // eslint-disable-line no-param-reassign\n this.assertHost('completeMultipartUpload');\n throwIfAborted(signal);\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n return _classPrivateFieldLooseBase(this, _client)[_client].post(`s3/multipart/${uploadIdEnc}/complete?key=${filename}`, {\n parts\n }, {\n signal\n }).then(assertServerError);\n }\n async createSignedURL(file, options) {\n const data = await _classPrivateFieldLooseBase(this, _getTemporarySecurityCredentials)[_getTemporarySecurityCredentials](options);\n const expires = getExpiry(data.credentials) || 604800; // 604 800 is the max value accepted by AWS.\n\n const {\n uploadId,\n key,\n partNumber\n } = options;\n\n // Return an object in the correct shape.\n return {\n method: 'PUT',\n expires,\n fields: {},\n url: `${await createSignedURL({\n accountKey: data.credentials.AccessKeyId,\n accountSecret: data.credentials.SecretAccessKey,\n sessionToken: data.credentials.SessionToken,\n expires,\n bucketName: data.bucket,\n Region: data.region,\n Key: key != null ? key : `${crypto.randomUUID()}-${file.name}`,\n uploadId,\n partNumber\n })}`,\n // Provide content type header required by S3\n headers: {\n 'Content-Type': file.type\n }\n };\n }\n signPart(file, _ref6) {\n let {\n uploadId,\n key,\n partNumber,\n signal\n } = _ref6;\n this.assertHost('signPart');\n throwIfAborted(signal);\n if (uploadId == null || key == null || partNumber == null) {\n throw new Error('Cannot sign without a key, an uploadId, and a partNumber');\n }\n const filename = encodeURIComponent(key);\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/multipart/${uploadId}/${partNumber}?key=${filename}`, {\n signal\n }).then(assertServerError);\n }\n abortMultipartUpload(file, _ref7,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n oldSignal // TODO: remove in next major\n ) {\n var _signal3;\n let {\n key,\n uploadId,\n signal\n } = _ref7;\n (_signal3 = signal) != null ? _signal3 : signal = oldSignal; // eslint-disable-line no-param-reassign\n this.assertHost('abortMultipartUpload');\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n return _classPrivateFieldLooseBase(this, _client)[_client].delete(`s3/multipart/${uploadIdEnc}?key=${filename}`, undefined, {\n signal\n }).then(assertServerError);\n }\n getUploadParameters(file, options) {\n const {\n meta\n } = file;\n const {\n type,\n name: filename\n } = meta;\n const metadata = getAllowedMetadata({\n meta,\n allowedMetaFields: this.opts.allowedMetaFields,\n querify: true\n });\n const query = new URLSearchParams({\n filename,\n type,\n ...metadata\n });\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/params?${query}`, options);\n }\n static async uploadPartBytes(_ref8) {\n let {\n signature: {\n url,\n expires,\n headers,\n method = 'PUT'\n },\n body,\n size = body.size,\n onProgress,\n onComplete,\n signal\n } = _ref8;\n throwIfAborted(signal);\n if (url == null) {\n throw new Error('Cannot upload to an undefined URL');\n }\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (headers) {\n Object.keys(headers).forEach(key => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n xhr.responseType = 'text';\n if (typeof expires === 'number') {\n xhr.timeout = expires * 1000;\n }\n function onabort() {\n xhr.abort();\n }\n function cleanup() {\n signal == null || signal.removeEventListener('abort', onabort);\n }\n signal == null || signal.addEventListener('abort', onabort);\n xhr.upload.addEventListener('progress', ev => {\n onProgress(ev);\n });\n xhr.addEventListener('abort', () => {\n cleanup();\n reject(createAbortError());\n });\n xhr.addEventListener('timeout', () => {\n cleanup();\n const error = new Error('Request has expired');\n error.source = {\n status: 403\n };\n reject(error);\n });\n xhr.addEventListener('load', () => {\n cleanup();\n if (xhr.status === 403 && xhr.responseText.includes('<Message>Request has expired</Message>')) {\n const error = new Error('Request has expired');\n error.source = xhr;\n reject(error);\n return;\n }\n if (xhr.status < 200 || xhr.status >= 300) {\n const error = new Error('Non 2xx');\n error.source = xhr;\n reject(error);\n return;\n }\n\n // todo make a proper onProgress API (breaking change)\n onProgress == null || onProgress({\n loaded: size,\n lengthComputable: true\n });\n\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#examples\n const arr = xhr.getAllResponseHeaders().trim().split(/[\\r\\n]+/);\n // @ts-expect-error null is allowed to avoid inherited properties\n const headersMap = {\n __proto__: null\n };\n for (const line of arr) {\n const parts = line.split(': ');\n const header = parts.shift();\n const value = parts.join(': ');\n headersMap[header] = value;\n }\n const {\n etag,\n location\n } = headersMap;\n if (method.toUpperCase() === 'POST' && location === null) {\n // Not being able to read the Location header is not a fatal error.\n // eslint-disable-next-line no-console\n console.warn('AwsS3/Multipart: Could not read the Location header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.');\n }\n if (etag === null) {\n reject(new Error('AwsS3/Multipart: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.'));\n return;\n }\n onComplete == null || onComplete(etag);\n resolve({\n ...headersMap,\n ETag: etag // keep capitalised ETag for backwards compatiblity\n });\n });\n xhr.addEventListener('error', ev => {\n cleanup();\n const error = new Error('Unknown error');\n error.source = ev.target;\n reject(error);\n });\n xhr.send(body);\n });\n }\n install() {\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n this.uppy.addPreProcessor(_classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]);\n this.uppy.addUploader(_classPrivateFieldLooseBase(this, _upload)[_upload]);\n this.uppy.on('cancel-all', _classPrivateFieldLooseBase(this, _resetResumableCapability)[_resetResumableCapability]);\n }\n uninstall() {\n this.uppy.removePreProcessor(_classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]);\n this.uppy.removeUploader(_classPrivateFieldLooseBase(this, _upload)[_upload]);\n this.uppy.off('cancel-all', _classPrivateFieldLooseBase(this, _resetResumableCapability)[_resetResumableCapability]);\n }\n}\nasync function _getTemporarySecurityCredentials2(options) {\n throwIfAborted(options == null ? void 0 : options.signal);\n if (_classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] == null) {\n // We do not await it just yet, so concurrent calls do not try to override it:\n if (this.opts.getTemporarySecurityCredentials === true) {\n this.assertHost('getTemporarySecurityCredentials');\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = _classPrivateFieldLooseBase(this, _client)[_client].get('s3/sts', options).then(assertServerError);\n } else {\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = this.opts.getTemporarySecurityCredentials(options);\n }\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = await _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials];\n setTimeout(() => {\n // At half the time left before expiration, we clear the cache. That's\n // an arbitrary tradeoff to limit the number of requests made to the\n // remote while limiting the risk of using an expired token in case the\n // clocks are not exactly synced.\n // The HTTP cache should be configured to ensure a client doesn't request\n // more tokens than it needs, but this timeout provides a second layer of\n // security in case the HTTP cache is disabled or misconfigured.\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = null;\n }, (getExpiry(_classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials].credentials) || 0) * 500);\n }\n return _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials];\n}\nfunction _uploadLocalFile2(file) {\n var _this = this;\n return new Promise((resolve, reject) => {\n const onProgress = (bytesUploaded, bytesTotal) => {\n this.uppy.emit('upload-progress', this.uppy.getFile(file.id), {\n // @ts-expect-error TODO: figure out if we need this\n uploader: this,\n bytesUploaded,\n bytesTotal\n });\n };\n const onError = err => {\n this.uppy.log(err);\n this.uppy.emit('upload-error', file, err);\n this.resetUploaderReferences(file.id);\n reject(err);\n };\n const onSuccess = result => {\n const uploadResp = {\n body: {\n ...result\n },\n status: 200,\n uploadURL: result.location\n };\n this.resetUploaderReferences(file.id);\n this.uppy.emit('upload-success', _classPrivateFieldLooseBase(this, _getFile)[_getFile](file), uploadResp);\n if (result.location) {\n this.uppy.log(`Download ${file.name} from ${result.location}`);\n }\n resolve();\n };\n const upload = new MultipartUploader(file.data, {\n // .bind to pass the file object to each handler.\n companionComm: _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue],\n log: function () {\n return _this.uppy.log(...arguments);\n },\n getChunkSize: this.opts.getChunkSize ? this.opts.getChunkSize.bind(this) : null,\n onProgress,\n onError,\n onSuccess,\n onPartComplete: part => {\n this.uppy.emit('s3-multipart:part-uploaded', _classPrivateFieldLooseBase(this, _getFile)[_getFile](file), part);\n },\n file,\n shouldUseMultipart: this.opts.shouldUseMultipart,\n ...file.s3Multipart\n });\n this.uploaders[file.id] = upload;\n const eventManager = new EventManager(this.uppy);\n this.uploaderEvents[file.id] = eventManager;\n eventManager.onFileRemove(file.id, removed => {\n upload.abort();\n this.resetUploaderReferences(file.id, {\n abort: true\n });\n resolve(`upload ${removed} was removed`);\n });\n eventManager.onCancelAll(file.id, options => {\n if ((options == null ? void 0 : options.reason) === 'user') {\n upload.abort();\n this.resetUploaderReferences(file.id, {\n abort: true\n });\n }\n resolve(`upload ${file.id} was canceled`);\n });\n eventManager.onFilePause(file.id, isPaused => {\n if (isPaused) {\n upload.pause();\n } else {\n upload.start();\n }\n });\n eventManager.onPauseAll(file.id, () => {\n upload.pause();\n });\n eventManager.onResumeAll(file.id, () => {\n upload.start();\n });\n upload.start();\n });\n}\nfunction _getCompanionClientArgs2(file) {\n var _file$remote;\n return {\n ...((_file$remote = file.remote) == null ? void 0 : _file$remote.body),\n protocol: 's3-multipart',\n size: file.data.size,\n metadata: file.meta\n };\n}\nAwsS3Multipart.VERSION = packageJson.version;","export function filterNonFailedFiles(files) {\n const hasError = file => 'error' in file && !!file.error;\n return files.filter(file => !hasError(file));\n}\n\n// Don't double-emit upload-started for Golden Retriever-restored files that were already started\nexport function filterFilesToEmitUploadStarted(files) {\n return files.filter(file => {\n var _file$progress;\n return !((_file$progress = file.progress) != null && _file$progress.uploadStarted) || !file.isRestored;\n });\n}","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar _FileUpload_instances, _FileUpload_uppyIns, _FileUpload_accessKey, _FileUpload_urlType, _FileUpload_uppyFileUploader;\nimport axios from \"axios\";\nimport { REQUIRED_MESSAGE, REQUIRED_MESSAGE_FOR_META_DATA, FILE_UPLOAD_ENDPOINT, APP_AUTH_BASE_URL, REQUIRED_ERROR_MESSAGE_INVALID_EMAIL, API_ENDPOINTS, CHUNK_SIZE, requiredFaceScanMetaData } from \"./constants.js\";\nimport { addScanType, checkMetaDataValue, checkParameters, checkValues, fetchData, getFileChunks, getUrl, isValidEmail } from \"./utils.js\";\nimport Uppy from \"@uppy/core\";\nimport AwsS3Multipart from \"@uppy/aws-s3-multipart\";\nimport { URLType } from \"./enum.js\";\nclass FileUpload {\n constructor(accessKey, urlType = URLType.PROD) {\n _FileUpload_instances.add(this);\n _FileUpload_uppyIns.set(this, void 0);\n _FileUpload_accessKey.set(this, void 0);\n _FileUpload_urlType.set(this, void 0);\n __classPrivateFieldSet(this, _FileUpload_accessKey, accessKey, \"f\");\n __classPrivateFieldSet(this, _FileUpload_urlType, urlType, \"f\");\n }\n uploadFileFrontend(_a) {\n return __awaiter(this, arguments, void 0, function* ({ file, arrayMetaData, scanId, email, callBack }) {\n if (!checkParameters(file, arrayMetaData, scanId, email)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n if (!isValidEmail(email.trim())) {\n throw new Error(REQUIRED_ERROR_MESSAGE_INVALID_EMAIL);\n }\n if (!checkMetaDataValue(arrayMetaData)) {\n throw new Error(REQUIRED_MESSAGE_FOR_META_DATA);\n }\n arrayMetaData = addScanType(arrayMetaData, scanId, email);\n return __classPrivateFieldGet(this, _FileUpload_instances, \"m\", _FileUpload_uppyFileUploader).call(this, { callBack, arrayMetaData, scanId, email, file });\n });\n }\n faceScanFileUploader(_a) {\n return __awaiter(this, arguments, void 0, function* ({ file, arrayMetaData, objectKey, email, callBack }) {\n if (!checkParameters(file, arrayMetaData, objectKey, email)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n if (!isValidEmail(email.trim())) {\n throw new Error(REQUIRED_ERROR_MESSAGE_INVALID_EMAIL);\n }\n if (!checkValues(arrayMetaData, requiredFaceScanMetaData)) {\n throw new Error(REQUIRED_MESSAGE_FOR_META_DATA);\n }\n arrayMetaData.push({ email });\n return __classPrivateFieldGet(this, _FileUpload_instances, \"m\", _FileUpload_uppyFileUploader).call(this, { callBack, arrayMetaData, objectKey, email, file });\n });\n }\n uploadFile(_a) {\n return __awaiter(this, arguments, void 0, function* ({ file, arrayMetaData, scanId, email }) {\n if (!checkParameters(file, arrayMetaData, scanId, email)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n if (!isValidEmail(email.trim())) {\n throw new Error(REQUIRED_ERROR_MESSAGE_INVALID_EMAIL);\n }\n if (!checkMetaDataValue(arrayMetaData)) {\n throw new Error(REQUIRED_MESSAGE_FOR_META_DATA);\n }\n arrayMetaData = addScanType(arrayMetaData, scanId, email);\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n var _b;\n try {\n const res = yield fetchData({\n path: FILE_UPLOAD_ENDPOINT.UPLOAD_START,\n apiKey: __classPrivateFieldGet(this, _FileUpload_accessKey, \"f\"),\n urlType: __classPrivateFieldGet(this, _FileUpload_urlType, \"f\"),\n body: {\n objectKey: file.name,\n contentType: file.type,\n objectMetadata: arrayMetaData,\n },\n throwError: true,\n });\n const totalChunks = getFileChunks(file);\n const parts = [];\n for (let i = 0; i < totalChunks.length; i++) {\n const data = yield fetchData({\n path: FILE_UPLOAD_ENDPOINT.UPLOAD_SIGN_PART,\n apiKey: __classPrivateFieldGet(this, _FileUpload_accessKey, \"f\"),\n urlType: __classPrivateFieldGet(this, _FileUpload_urlType, \"f\"),\n body: {\n objectKey: res === null || res === void 0 ? void 0 : res.key,\n uploadId: res === null || res === void 0 ? void 0 : res.uploadId,\n partNumber: i + 1,\n },\n throwError: true,\n });\n const val = yield axios.put(data === null || data === void 0 ? void 0 : data.url, totalChunks[i], { headers: { \"Content-Type\": file.type, \"X-Api-Key\": __classPrivateFieldGet(this, _FileUpload_accessKey, \"f\") } });\n parts.push({ PartNumber: i + 1, ETag: (_b = val === null || val === void 0 ? void 0 : val.headers) === null || _b === void 0 ? void 0 : _b.etag });\n }\n const completeValue = yield fetchData({\n path: FILE_UPLOAD_ENDPOINT.UPLOAD_COMPLETE,\n apiKey: __classPrivateFieldGet(this, _FileUpload_accessKey, \"f\"),\n urlType: __classPrivateFieldGet(this, _FileUpload_urlType, \"f\"),\n body: {\n uploadId: res === null || res === void 0 ? void 0 : res.uploadId,\n objectKey: res === null || res === void 0 ? void 0 : res.key,\n parts,\n originalFileName: file.name,\n },\n throwError: true,\n });\n resolve({ message: \"successfully uploaded\", data: completeValue });\n }\n catch (error) {\n reject(error);\n }\n }));\n });\n }\n setDeviceInfo(data) {\n return __awaiter(this, void 0, void 0, function* () {\n const { scanId } = data, rest = __rest(data, [\"scanId\"]);\n if (checkParameters(scanId) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.post(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _FileUpload_urlType, \"f\") })}${API_ENDPOINTS.DEVICE_INFO}/${scanId}`, { device_info: Object.assign({}, rest) }, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _FileUpload_accessKey, \"f\") },\n });\n });\n }\n}\n_FileUpload_uppyIns = new WeakMap(), _FileUpload_accessKey = new WeakMap(), _FileUpload_urlType = new WeakMap(), _FileUpload_instances = new WeakSet(), _FileUpload_uppyFileUploader = function _FileUpload_uppyFileUploader({ callBack, arrayMetaData, scanId, email, file, objectKey }) {\n return new Promise((resolve, reject) => {\n if (__classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\")) {\n __classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\").close();\n }\n __classPrivateFieldSet(this, _FileUpload_uppyIns, new Uppy({ autoProceed: true }), \"f\");\n __classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\").use(AwsS3Multipart, {\n limit: 10,\n retryDelays: [0, 1000, 3000, 5000],\n companionUrl: getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _FileUpload_urlType, \"f\") }),\n getChunkSize: () => CHUNK_SIZE,\n createMultipartUpload: (file) => {\n const totalChunks = Math.ceil(file.size / CHUNK_SIZE);\n callBack === null || callBack === void 0 ? void 0 : callBack({ eventName: \"uploading_start\", message: `File ${file.name} will be divided into ${totalChunks} chunks`, scanId, email, objectKey });\n const ObjectKey = `${scanId || objectKey}.${file.extension}`;\n return fetchData({\n path: FILE_UPLOAD_ENDPOINT.UPLOAD_START,\n apiKey: __classPrivateFieldGet(this, _FileUpload_accessKey, \"f\"),\n urlType: __classPrivateFieldGet(this, _FileUpload_urlType, \"f\"),\n body: {\n objectKey: ObjectKey,\n contentType: file.type,\n objectMetadata: arrayMetaData,\n },\n });\n },\n completeMultipartUpload: (file, { uploadId, key, parts }) => {\n callBack === null || callBack === void 0 ? void 0 : callBack({ eventName: \"uploading_complete_start\", message: `${parts.length} chunks of file, uploaded`, scanId, email, objectKey });\n return fetchData({\n path: FILE_UPLOAD_ENDPOINT.UPLOAD_COMPLETE,\n apiKey: __classPrivateFieldGet(this, _FileUpload_accessKey, \"f\"),\n urlType: __classPrivateFieldGet(this, _FileUpload_urlType, \"f\"),\n body: {\n uploadId,\n objectKey: key,\n parts,\n originalFileName: file.name,\n },\n }).then((response) => {\n callBack === null || callBack === void 0 ? void 0 : callBack({ eventName: \"uploading_complete_end\", message: `Multipart upload completed successfully`, scanId, email, objectKey });\n return response;\n });\n },\n signPart: (file, partData) => fetchData({\n path: FILE_UPLOAD_ENDPOINT.UPLOAD_SIGN_PART,\n urlType: __classPrivateFieldGet(this, _FileUpload_urlType, \"f\"),\n apiKey: __classPrivateFieldGet(this, _FileUpload_accessKey, \"f\"),\n body: {\n objectKey: partData.key,\n uploadId: partData.uploadId,\n partNumber: partData.partNumber,\n },\n }),\n });\n __classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\").addFile({\n source: \"manual\",\n name: file.name,\n type: file.type,\n data: file,\n });\n __classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\").on(\"upload-error\", (file, error, response) => {\n if (error.isNetworkError) {\n __classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\").retryUpload(file.id);\n }\n else {\n reject(error);\n }\n });\n __classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\").on(\"upload-success\", () => {\n resolve({ message: \"file uploaded successfully\" });\n });\n __classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\").on(\"complete\", (result) => {\n if (__classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\")) {\n __classPrivateFieldGet(this, _FileUpload_uppyIns, \"f\").close();\n }\n });\n });\n};\nexport default FileUpload;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Measurement_instances, _Measurement_socketRefs, _Measurement_waitingTimers, _Measurement_pollingTimers, _Measurement_pollingCounts, _Measurement_accessKey, _Measurement_urlType, _Measurement_disconnectSocket, _Measurement_handleTimeOut, _Measurement_handlePolling, _Measurement_getMeasurementsCheck, _Measurement_handleSocket;\nimport axios from \"axios\";\nimport { API_ENDPOINTS, APP_AUTH_BASE_URL, APP_BASE_WEBSOCKET_URL, REQUIRED_MESSAGE } from \"./constants.js\";\nimport { checkParameters, getUrl } from \"./utils.js\";\nimport { URLType } from \"./enum.js\";\nclass Measurement {\n constructor(accessKey, urlType = URLType.PROD) {\n _Measurement_instances.add(this);\n _Measurement_socketRefs.set(this, {});\n _Measurement_waitingTimers.set(this, {});\n _Measurement_pollingTimers.set(this, {});\n _Measurement_pollingCounts.set(this, {});\n _Measurement_accessKey.set(this, void 0);\n _Measurement_urlType.set(this, void 0);\n __classPrivateFieldSet(this, _Measurement_accessKey, accessKey, \"f\");\n __classPrivateFieldSet(this, _Measurement_urlType, urlType, \"f\");\n }\n getMeasurementResult(scanId) {\n if (!checkParameters(scanId)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n const url = `${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _Measurement_urlType, \"f\") })}/measurements?scanId=${scanId}`;\n return axios.get(url, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Measurement_accessKey, \"f\") },\n });\n }\n getMeasurementRecommendation({ scanId, shopDomain, productName }) {\n if (!checkParameters(scanId, shopDomain, productName)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.get(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _Measurement_urlType, \"f\") })}${API_ENDPOINTS.RECOMMENDATION}/scan/${scanId}/shop/${shopDomain}/product/${productName}`, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _Measurement_accessKey, \"f\") },\n });\n }\n handleMeasurementSocket(options) {\n const { scanId, onError, onSuccess, onClose, onOpen } = options;\n if (!checkParameters(scanId)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n __classPrivateFieldGet(this, _Measurement_instances, \"m\", _Measurement_handleSocket).call(this, { onOpen, scanId, onSuccess, onError, onClose, paramsKey: \"scanId\", isFallback: true, delay: 5000 });\n }\n handlFaceScaneSocket(options) {\n const { faceScanId, onError, onSuccess, onClose, onOpen } = options;\n if (!checkParameters(faceScanId)) {\n throw new Error(REQUIRED_MESSAGE);\n }\n __classPrivateFieldGet(this, _Measurement_instances, \"m\", _Measurement_handleSocket).call(this, { onOpen, faceScanId, onSuccess, onError, onClose, paramsKey: \"faceScanId\", isFallback: false, delay: 1000 });\n }\n}\n_Measurement_socketRefs = new WeakMap(), _Measurement_waitingTimers = new WeakMap(), _Measurement_pollingTimers = new WeakMap(), _Measurement_pollingCounts = new WeakMap(), _Measurement_accessKey = new WeakMap(), _Measurement_urlType = new WeakMap(), _Measurement_instances = new WeakSet(), _Measurement_disconnectSocket = function _Measurement_disconnectSocket(key) {\n var _a;\n (_a = __classPrivateFieldGet(this, _Measurement_socketRefs, \"f\")[key]) === null || _a === void 0 ? void 0 : _a.close();\n __classPrivateFieldGet(this, _Measurement_socketRefs, \"f\")[key] = null;\n if (__classPrivateFieldGet(this, _Measurement_waitingTimers, \"f\")[key]) {\n clearTimeout(__classPrivateFieldGet(this, _Measurement_waitingTimers, \"f\")[key]);\n __classPrivateFieldGet(this, _Measurement_waitingTimers, \"f\")[key] = null;\n }\n}, _Measurement_handleTimeOut = function _Measurement_handleTimeOut(options, key) {\n const { scanId, onSuccess, onError } = options;\n __classPrivateFieldGet(this, _Measurement_pollingCounts, \"f\")[key] = 1;\n __classPrivateFieldGet(this, _Measurement_waitingTimers, \"f\")[key] = setTimeout(() => {\n __classPrivateFieldGet(this, _Measurement_instances, \"m\", _Measurement_handlePolling).call(this, { scanId, onSuccess, onError }, key);\n __classPrivateFieldGet(this, _Measurement_instances, \"m\", _Measurement_disconnectSocket).call(this, key);\n }, 1.5 * 60000);\n}, _Measurement_handlePolling = function _Measurement_handlePolling(options, key) {\n const { scanId, onSuccess, onError } = options;\n if (__classPrivateFieldGet(this, _Measurement_pollingTimers, \"f\")[key]) {\n clearTimeout(__classPrivateFieldGet(this, _Measurement_pollingTimers, \"f\")[key]);\n }\n __classPrivateFieldGet(this, _Measurement_pollingTimers, \"f\")[key] = setTimeout(() => {\n __classPrivateFieldGet(this, _Measurement_instances, \"m\", _Measurement_getMeasurementsCheck).call(this, { scanId, onSuccess, onError }, key);\n }, (__classPrivateFieldGet(this, _Measurement_pollingCounts, \"f\")[key] || 1) * 5000);\n}, _Measurement_getMeasurementsCheck = function _Measurement_getMeasurementsCheck(options, key) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const { scanId, onSuccess, onError } = options;\n try {\n const res = yield this.getMeasurementResult(scanId);\n if ((res === null || res === void 0 ? void 0 : res.data) && ((_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.isMeasured) === true) {\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(res.data);\n clearInterval(__classPrivateFieldGet(this, _Measurement_pollingTimers, \"f\")[key]);\n }\n else {\n if ((__classPrivateFieldGet(this, _Measurement_pollingCounts, \"f\")[key] || 1) < 8) {\n __classPrivateFieldGet(this, _Measurement_pollingCounts, \"f\")[key] = (__classPrivateFieldGet(this, _Measurement_pollingCounts, \"f\")[key] || 1) + 1;\n __classPrivateFieldGet(this, _Measurement_instances, \"m\", _Measurement_handlePolling).call(this, { scanId, onSuccess, onError }, key);\n }\n else {\n __classPrivateFieldGet(this, _Measurement_pollingCounts, \"f\")[key] = 1;\n clearInterval(__classPrivateFieldGet(this, _Measurement_pollingTimers, \"f\")[key]);\n onError === null || onError === void 0 ? void 0 : onError({ scanStatus: \"failed\", message: \"Scan not found\", isMeasured: false });\n }\n }\n }\n catch (e) {\n clearInterval(__classPrivateFieldGet(this, _Measurement_pollingTimers, \"f\")[key]);\n onError === null || onError === void 0 ? void 0 : onError(e);\n }\n });\n}, _Measurement_handleSocket = function _Measurement_handleSocket({ onOpen, isFallback, scanId, onSuccess, onError, onClose, paramsKey, faceScanId, delay }) {\n const key = isFallback ? `measurement-${scanId}` : `faceScan-${faceScanId}`;\n setTimeout(() => {\n __classPrivateFieldGet(this, _Measurement_instances, \"m\", _Measurement_disconnectSocket).call(this, key);\n const url = `${getUrl({ urlName: APP_BASE_WEBSOCKET_URL, urlType: __classPrivateFieldGet(this, _Measurement_urlType, \"f\") })}${API_ENDPOINTS.SCANNING}?${paramsKey}=${scanId || faceScanId}`;\n const socket = new WebSocket(url);\n __classPrivateFieldGet(this, _Measurement_socketRefs, \"f\")[key] = socket;\n socket.onopen = () => {\n onOpen === null || onOpen === void 0 ? void 0 : onOpen();\n if (isFallback && scanId) {\n __classPrivateFieldGet(this, _Measurement_instances, \"m\", _Measurement_handleTimeOut).call(this, { scanId, onSuccess, onError }, key);\n }\n };\n socket.onmessage = (event) => {\n const data = JSON.parse(event.data);\n if ((data === null || data === void 0 ? void 0 : data.code) === 200 && (data === null || data === void 0 ? void 0 : data.scanStatus) === \"success\") {\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(data);\n }\n else {\n clearTimeout(__classPrivateFieldGet(this, _Measurement_waitingTimers, \"f\")[key]);\n onError === null || onError === void 0 ? void 0 : onError(data);\n }\n if ((data === null || data === void 0 ? void 0 : data.code) === 200 && (data === null || data === void 0 ? void 0 : data.scanStatus) === \"success\" && (data === null || data === void 0 ? void 0 : data.resultType) === \"final\") {\n clearTimeout(__classPrivateFieldGet(this, _Measurement_waitingTimers, \"f\")[key]);\n }\n };\n socket.onclose = () => onClose === null || onClose === void 0 ? void 0 : onClose();\n socket.onerror = () => {\n if (!isFallback) {\n onError === null || onError === void 0 ? void 0 : onError(new Error(\"An error occurred in the WebSocket connection.\"));\n }\n };\n }, delay);\n};\nexport default Measurement;\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexport const defaultBinaryType = \"arraybuffer\";\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globals.node.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nexport function randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { Transport } from \"../transport.js\";\nimport { randomString } from \"../util.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","import { Polling } from \"./polling.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globals.node.js\";\nimport { hasCORS } from \"../contrib/has-cors.js\";\nfunction empty() { }\nexport class BaseXHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n installTimerFunctions(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nexport class XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { pick, randomString } from \"../util.js\";\nimport { encodePacket } from \"engine.io-parser\";\nimport { globalThisShim as globalThis, nextTick } from \"../globals.node.js\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class BaseWS extends Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nconst WebSocketCtor = globalThis.WebSocket || globalThis.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nexport class WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\n","import { XHR } from \"./polling-xhr.node.js\";\nimport { WS } from \"./websocket.node.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: XHR,\n};\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"../globals.node.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports as DEFAULT_TRANSPORTS } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { createCookieJar, defaultBinaryType, nextTick, } from \"./globals.node.js\";\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nexport class SocketWithoutUpgrade extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = parse(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = createCookieJar();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n this._pingTimeoutTime = 0;\n nextTick(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nexport class SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nexport class Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => DEFAULT_TRANSPORTS[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\nexport { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from \"engine.io-client\";\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PoseDetection_socketRef, _PoseDetection_accessKey, _PoseDetection_urlType;\nimport { io } from \"socket.io-client\";\nimport { APP_POSE_DETECTION_WEBSOCKET_URL } from \"./constants.js\";\nimport { getUrl } from \"./utils.js\";\nimport { URLType } from \"./enum.js\";\nclass PoseDetection {\n constructor(accessKey, urlType = URLType.PROD) {\n _PoseDetection_socketRef.set(this, null);\n _PoseDetection_accessKey.set(this, void 0);\n _PoseDetection_urlType.set(this, void 0);\n __classPrivateFieldSet(this, _PoseDetection_accessKey, accessKey, \"f\");\n __classPrivateFieldSet(this, _PoseDetection_urlType, urlType, \"f\");\n }\n connect() {\n return new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _PoseDetection_socketRef, io(getUrl({ urlName: APP_POSE_DETECTION_WEBSOCKET_URL, urlType: __classPrivateFieldGet(this, _PoseDetection_urlType, \"f\") })), \"f\");\n __classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\").on(\"connect\", () => {\n var _a;\n const socketId = (_a = __classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\")) === null || _a === void 0 ? void 0 : _a.id;\n if (socketId) {\n resolve(socketId);\n }\n else {\n reject(\"Failed to obtain socket ID.\");\n }\n });\n __classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\").on(\"connect_error\", (err) => {\n reject(err);\n });\n });\n }\n videoEmit({ image, scanId }) {\n if (!__classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\")) {\n throw new Error(\"Socket is not connected\");\n }\n __classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\").emit(\"video\", {\n image,\n user_unique_key: scanId,\n });\n }\n disconnect() {\n var _a;\n (_a = __classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\")) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n poseStatus(callBack) {\n if (!__classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\")) {\n throw new Error(\"Socket is not connected\");\n }\n __classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\").on(\"pose_status\", (data) => {\n callBack === null || callBack === void 0 ? void 0 : callBack(data);\n });\n }\n connected() {\n var _a;\n return !!((_a = __classPrivateFieldGet(this, _PoseDetection_socketRef, \"f\")) === null || _a === void 0 ? void 0 : _a.connected);\n }\n}\n_PoseDetection_socketRef = new WeakMap(), _PoseDetection_accessKey = new WeakMap(), _PoseDetection_urlType = new WeakMap();\nexport default PoseDetection;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TryOn_instances, _TryOn_socketMap, _TryOn_timerMap, _TryOn_accessKey, _TryOn_urlType, _TryOn_getSignedUrl, _TryOn_s3Upload, _TryOn_disconnectSocket, _TryOn_handleTimeOut, _TryOn_handleGetTryOnResult;\nimport axios from \"axios\";\nimport { API_ENDPOINTS, APP_AUTH_BASE_URL, APP_BASE_WEBSOCKET_URL, REQUIRED_ERROR_MESSAGE_INVALID_EMAIL, REQUIRED_MESSAGE } from \"./constants.js\";\nimport { checkParameters, getUrl, isValidEmail } from \"./utils.js\";\nimport { URLType } from \"./enum.js\";\nclass TryOn {\n constructor(accessKey, urlType = URLType.PROD) {\n _TryOn_instances.add(this);\n _TryOn_socketMap.set(this, new Map());\n _TryOn_timerMap.set(this, new Map());\n _TryOn_accessKey.set(this, void 0);\n _TryOn_urlType.set(this, void 0);\n _TryOn_disconnectSocket.set(this, (tryonId) => {\n if (tryonId) {\n const socket = __classPrivateFieldGet(this, _TryOn_socketMap, \"f\").get(tryonId);\n const timer = __classPrivateFieldGet(this, _TryOn_timerMap, \"f\").get(tryonId);\n socket === null || socket === void 0 ? void 0 : socket.close();\n if (timer)\n clearTimeout(timer);\n __classPrivateFieldGet(this, _TryOn_socketMap, \"f\").delete(tryonId);\n __classPrivateFieldGet(this, _TryOn_timerMap, \"f\").delete(tryonId);\n }\n else {\n // Disconnect all\n __classPrivateFieldGet(this, _TryOn_socketMap, \"f\").forEach((socket) => socket.close());\n __classPrivateFieldGet(this, _TryOn_timerMap, \"f\").forEach((timer) => clearTimeout(timer));\n __classPrivateFieldGet(this, _TryOn_socketMap, \"f\").clear();\n __classPrivateFieldGet(this, _TryOn_timerMap, \"f\").clear();\n }\n });\n _TryOn_handleTimeOut.set(this, ({ onSuccess, onError, tryonId }) => {\n const timer = setTimeout(() => {\n __classPrivateFieldGet(this, _TryOn_handleGetTryOnResult, \"f\").call(this, { onSuccess, onError, tryonId });\n __classPrivateFieldGet(this, _TryOn_disconnectSocket, \"f\").call(this, tryonId);\n }, 300000);\n __classPrivateFieldGet(this, _TryOn_timerMap, \"f\").set(tryonId, timer);\n });\n this.handleTryOnWebSocket = ({ tryonId, onError, onSuccess, onClose, onOpen }) => {\n if (checkParameters(tryonId) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n __classPrivateFieldGet(this, _TryOn_disconnectSocket, \"f\").call(this, tryonId);\n const url = `${getUrl({ urlName: APP_BASE_WEBSOCKET_URL, urlType: __classPrivateFieldGet(this, _TryOn_urlType, \"f\") })}${API_ENDPOINTS.TRY_ON}?tryonId=${tryonId}`;\n const socket = new WebSocket(url);\n __classPrivateFieldGet(this, _TryOn_socketMap, \"f\").set(tryonId, socket);\n socket.onopen = () => {\n onOpen === null || onOpen === void 0 ? void 0 : onOpen();\n __classPrivateFieldGet(this, _TryOn_handleTimeOut, \"f\").call(this, { onSuccess, onError, tryonId });\n };\n socket.onmessage = (event) => {\n let data;\n try {\n data = JSON.parse(event.data);\n }\n catch (error) {\n console.log(\"Invalid JSON:\", event.data);\n return;\n }\n if ((data === null || data === void 0 ? void 0 : data.status) === \"success\") {\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(data);\n }\n else {\n onError === null || onError === void 0 ? void 0 : onError(data);\n }\n const timer = __classPrivateFieldGet(this, _TryOn_timerMap, \"f\").get(tryonId);\n if (timer)\n clearTimeout(timer);\n __classPrivateFieldGet(this, _TryOn_timerMap, \"f\").delete(tryonId);\n };\n socket.onclose = () => {\n onClose === null || onClose === void 0 ? void 0 : onClose();\n // this.#disconnectSocket(tryonId);\n };\n socket.onerror = (event) => {\n onError === null || onError === void 0 ? void 0 : onError(event);\n // const timer = this.#timerMap.get(tryonId);\n // if (timer) clearTimeout(timer);\n // this.#timerMap.delete(tryonId);\n };\n };\n _TryOn_handleGetTryOnResult.set(this, (_a) => __awaiter(this, [_a], void 0, function* ({ onSuccess, onError, tryonId }) {\n try {\n const data = yield this.getTryOnResult({ tryonId });\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(data.data);\n }\n catch (error) {\n onError === null || onError === void 0 ? void 0 : onError(error);\n }\n }));\n this.getTryOnResult = ({ tryonId }) => {\n if (checkParameters(tryonId) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n const url = `${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _TryOn_urlType, \"f\") })}${API_ENDPOINTS.TRY_ON_RESULT_IMAGE_DOWNLOAD}/${tryonId}`;\n return axios.post(url, null, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _TryOn_accessKey, \"f\") },\n });\n };\n __classPrivateFieldSet(this, _TryOn_accessKey, accessKey, \"f\");\n __classPrivateFieldSet(this, _TryOn_urlType, urlType, \"f\");\n }\n uploadFile(_a) {\n return __awaiter(this, arguments, void 0, function* ({ files, userEmail, fileNoLimit = 2 }) {\n if (checkParameters(files, userEmail) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n if (!isValidEmail(userEmail.trim())) {\n throw new Error(REQUIRED_ERROR_MESSAGE_INVALID_EMAIL);\n }\n if (fileNoLimit <= 0) {\n throw new Error(`Provide valid file number limit ${fileNoLimit}.`);\n }\n if ((files === null || files === void 0 ? void 0 : files.length) > fileNoLimit) {\n throw new Error(`Cannot allow more than ${fileNoLimit} files.`);\n }\n try {\n const payload = {\n userEmail,\n userImages: [],\n };\n files === null || files === void 0 ? void 0 : files.forEach((file) => {\n payload.userImages.push(file.name);\n });\n const signedUrlRes = yield __classPrivateFieldGet(this, _TryOn_instances, \"m\", _TryOn_getSignedUrl).call(this, payload);\n for (const file of files) {\n yield __classPrivateFieldGet(this, _TryOn_instances, \"m\", _TryOn_s3Upload).call(this, signedUrlRes.data.uploadUrls[file.name].url, file);\n }\n return `uploaded successfully!`;\n }\n catch (error) {\n throw error;\n }\n });\n }\n getUploadedFiles(userEmail) {\n if (checkParameters(userEmail) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n if (!isValidEmail(userEmail.trim())) {\n throw new Error(REQUIRED_ERROR_MESSAGE_INVALID_EMAIL);\n }\n const payload = {\n userEmail,\n };\n return axios.post(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _TryOn_urlType, \"f\") })}${API_ENDPOINTS.TRY_ON_IMAGE_DOWNLOAD}`, payload, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _TryOn_accessKey, \"f\") },\n });\n }\n deleteImage({ userEmail, fileName }) {\n if (checkParameters(userEmail, fileName) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n if (!isValidEmail(userEmail.trim())) {\n throw new Error(REQUIRED_ERROR_MESSAGE_INVALID_EMAIL);\n }\n const payload = {\n userEmail,\n file: fileName,\n };\n return axios.delete(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _TryOn_urlType, \"f\") })}${API_ENDPOINTS.TRY_ON_IMAGE_URLS}`, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _TryOn_accessKey, \"f\") },\n data: payload,\n });\n }\n handleTryOnSubmit({ shopDomain, products, selectedUserImages, requestSource, callbackUrl, openTryonId, selectedProductImageUrl, token }) {\n if (checkParameters(shopDomain, products, token) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n const payload = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ products, customerStoreUrl: shopDomain }, (selectedUserImages !== undefined && selectedUserImages !== null && { selectedUserImages })), (requestSource !== undefined && requestSource !== null && { requestSource })), (callbackUrl !== undefined && callbackUrl !== null && { callbackUrl })), (openTryonId !== undefined && openTryonId !== null && { openTryonId })), (selectedProductImageUrl !== undefined && selectedProductImageUrl !== null && { selectedProductImageUrl }));\n const url = `${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _TryOn_urlType, \"f\") })}${API_ENDPOINTS.TRY_ON}`;\n const headers = { \"X-Api-Key\": __classPrivateFieldGet(this, _TryOn_accessKey, \"f\") };\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n return axios.post(url, payload, {\n headers,\n });\n }\n getShareLink(tryonId) {\n return axios.post(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _TryOn_urlType, \"f\") })}${API_ENDPOINTS.TRY_ON_SHARE}`, { tryonId }, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _TryOn_accessKey, \"f\") },\n });\n }\n getProductImageEligibility({ storeUrl, productHandle, imageURL, productDescription }) {\n if (checkParameters(storeUrl, productHandle, imageURL) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n const payload = { storeUrl, productHandle, imageURL, productDescription: productDescription !== null && productDescription !== void 0 ? productDescription : null };\n const url = `${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _TryOn_urlType, \"f\") })}${API_ENDPOINTS.TRY_ON_PRODUCT_IMAGE_ELIGIBILTY}`;\n return axios.post(url, payload, {\n headers: { \"X-Api-Key\": __classPrivateFieldGet(this, _TryOn_accessKey, \"f\") },\n });\n }\n}\n_TryOn_socketMap = new WeakMap(), _TryOn_timerMap = new WeakMap(), _TryOn_accessKey = new WeakMap(), _TryOn_urlType = new WeakMap(), _TryOn_disconnectSocket = new WeakMap(), _TryOn_handleTimeOut = new WeakMap(), _TryOn_handleGetTryOnResult = new WeakMap(), _TryOn_instances = new WeakSet(), _TryOn_getSignedUrl = function _TryOn_getSignedUrl(payload) {\n if (checkParameters(payload) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.post(`${getUrl({ urlName: APP_AUTH_BASE_URL, urlType: __classPrivateFieldGet(this, _TryOn_urlType, \"f\") })}${API_ENDPOINTS.TRY_ON_IMAGE_UPLOAD}`, payload, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Api-Key\": __classPrivateFieldGet(this, _TryOn_accessKey, \"f\"),\n },\n });\n}, _TryOn_s3Upload = function _TryOn_s3Upload(url, file) {\n if (checkParameters(url, file) === false) {\n throw new Error(REQUIRED_MESSAGE);\n }\n return axios.put(url, file, {\n headers: {\n \"Content-Type\": file.type,\n },\n });\n};\nexport default TryOn;\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Swan_accessKey, _Swan_urlType;\nimport Auth from \"./auth.js\";\nimport Custom from \"./custom.js\";\nimport { URLType } from \"./enum.js\";\nimport FileUpload from \"./fileUpload.js\";\nimport Measurement from \"./measurement.js\";\nimport PoseDetection from \"./poseDetection.js\";\nimport TryOn from \"./tryOn.js\";\nclass Swan {\n constructor(accessKey, urlType = URLType.PROD) {\n _Swan_accessKey.set(this, void 0);\n _Swan_urlType.set(this, void 0);\n __classPrivateFieldSet(this, _Swan_accessKey, accessKey, \"f\");\n __classPrivateFieldSet(this, _Swan_urlType, urlType, \"f\");\n this.auth = new Auth(__classPrivateFieldGet(this, _Swan_accessKey, \"f\"), __classPrivateFieldGet(this, _Swan_urlType, \"f\"));\n this.custom = new Custom(__classPrivateFieldGet(this, _Swan_accessKey, \"f\"), __classPrivateFieldGet(this, _Swan_urlType, \"f\"));\n this.fileUpload = new FileUpload(__classPrivateFieldGet(this, _Swan_accessKey, \"f\"), __classPrivateFieldGet(this, _Swan_urlType, \"f\"));\n this.measurement = new Measurement(__classPrivateFieldGet(this, _Swan_accessKey, \"f\"), __classPrivateFieldGet(this, _Swan_urlType, \"f\"));\n this.poseDetection = new PoseDetection(__classPrivateFieldGet(this, _Swan_accessKey, \"f\"), __classPrivateFieldGet(this, _Swan_urlType, \"f\"));\n this.tryOn = new TryOn(__classPrivateFieldGet(this, _Swan_accessKey, \"f\"), __classPrivateFieldGet(this, _Swan_urlType, \"f\"));\n }\n}\n_Swan_accessKey = new WeakMap(), _Swan_urlType = new WeakMap();\nexport default Swan;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport Swan from \"@swan-admin/swan-ai-measurements\";\n\nenum URLType {\n DEV = \"dev\",\n STAGING = \"staging\",\n PROD = \"prod\",\n}\n\nconst REACT_APP_ACCESS_KEY = \"8e35dfd4-010c-40ca-ad79-fc72dc307efb\";\n\nconst swan = new Swan(REACT_APP_ACCESS_KEY, URLType.STAGING);\n\nexport default swan;\n","const speechService = {\n playAudio: (url: string): Promise<void> =>\n new Promise((resolve) => {\n const audio = document.querySelector<HTMLAudioElement>(\"#audioElement\");\n if (!audio) {\n resolve();\n return;\n }\n audio.src = url;\n const onEnded = () => {\n audio.removeEventListener(\"ended\", onEnded);\n resolve();\n };\n audio.addEventListener(\"ended\", onEnded);\n audio.play().catch((e) => {\n audio.removeEventListener(\"ended\", onEnded);\n resolve(); // resolve anyway to avoid blocking\n console.error(e);\n });\n }),\n stopAudio: async () => {\n const audio = document.querySelector<HTMLAudioElement>(\"#audioElement\");\n try {\n if (audio) {\n audio.pause();\n audio.src = \"\";\n audio.currentTime = 0;\n }\n } catch (e) {\n console.error(e);\n }\n },\n};\n\nexport default speechService;\n","import { loaderBlackGif, loaderGif } from \"../utils/constants\";\n\nfunction LoadingScreen({ size = 60, loaderType = \"default\", url }: { size?: number; loaderType?: string; url?: string }) {\n\treturn (\n\t\t<div className=\"flex items-center justify-center h-full w-full\">\n\t\t\t<img src={url || (loaderType === \"black\" ? loaderBlackGif : loaderGif)} alt=\"Swan logo\" className={`w-[${size}px]`} width={size} />\n\t\t</div>\n\t);\n}\n\nexport default LoadingScreen;\n"],"names":["resolveContainer","containerPropProp","setTranslateValue","direction","node","containerProp","transform","resolvedContainer","rect","getBoundingClientRect","containerRect","containerWindow","ownerWindow","fakeTransform","computedStyle","getComputedStyle","getPropertyValue","offsetX","offsetY","transformValues","split","parseInt","right","left","innerWidth","width","bottom","top","innerHeight","height","getTranslateValue","style","webkitTransform","Slide","React","forwardRef","props","ref","theme","useTheme","defaultEasing","enter","transitions","easing","easeOut","exit","sharp","defaultTimeout","duration","enteringScreen","leavingScreen","addEndListener","appear","children","container","easingProp","in","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","timeout","TransitionComponent","Transition","other","childrenRef","useRef","handleRef","useForkRef","getReactElementRef","normalizedTransitionCallback","callback","isAppearing","undefined","current","handleEnter","reflow","handleEntering","transitionProps","getTransitionProps","mode","webkitTransition","create","transition","handleEntered","handleExiting","handleExit","handleExited","updatePosition","useCallback","useEffect","handleResize","debounce","addEventListener","clear","removeEventListener","_jsx","nodeRef","next","state","ownerState","restChildProps","cloneElement","visibility","getDrawerUtilityClass","slot","generateUtilityClass","process","env","NODE_ENV","propTypes","PropTypes","func","bool","elementAcceptingRef","isRequired","chainPropTypes","oneOfType","HTMLElementType","open","nodeType","box","Error","join","contextElement","oneOf","shape","string","object","number","generateUtilityClasses","overridesResolver","styles","root","variant","docked","modal","DrawerRoot","styled","Modal","name","memoTheme","zIndex","vars","drawer","DrawerDockedRoot","shouldForwardProp","rootShouldForwardProp","skipVariantsResolver","flex","DrawerPaper","Paper","paper","capitalize","anchor","overflowY","display","flexDirection","WebkitOverflowScrolling","position","outline","variants","maxHeight","borderRight","palette","divider","borderBottom","borderLeft","borderTop","oppositeDirection","Drawer","inProps","useDefaultProps","isRtl","useRtl","defaultTransitionDuration","anchorProp","BackdropProps","className","elevation","hideBackdrop","ModalProps","BackdropPropsProp","onClose","PaperProps","SlideProps","transitionDuration","slots","slotProps","mounted","anchorInvariant","includes","isHorizontal","getAnchor","classes","composeClasses","useUtilityClasses","externalForwardedProps","backdrop","mergeSlotProps","RootSlot","rootSlotProps","useSlot","elementType","clsx","shouldForwardComponentProp","additionalProps","PaperSlot","paperSlotProps","square","role","DockedSlot","dockedSlotProps","TransitionSlot","transitionSlotProps","slidingDrawer","bind","fn","thisArg","apply","arguments","integerPropType","sx","arrayOf","toString","Object","prototype","getPrototypeOf","iterator","toStringTag","Symbol","kindOf","cache","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isString","isNumber","isObject","isPlainObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","map","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","isTypedArray","TypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","ret","defineProperties","isAsyncFn","_setImmediate","setImmediateSupported","setImmediate","postMessageSupported","postMessage","token","Math","random","callbacks","source","data","shift","cb","push","setTimeout","asap","queueMicrotask","nextTick","utils$1","isFormData","kind","FormData","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isEmptyObject","e","isStream","pipe","merge","caseless","skipUndefined","this","assignValue","targetKey","extend","a","b","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","String","lastIndex","indexOf","toArray","arr","forEachEntry","_iterator","done","pair","matchAll","regExp","matches","exec","hasOwnProp","freezeMethods","enumerable","writable","set","toObjectSet","arrayOrString","delimiter","define","toCamelCase","m","p1","p2","toUpperCase","noop","toFiniteNumber","defaultValue","Number","isFinite","isSpecCompliantForm","toJSONObject","stack","visit","target","reducedValue","isThenable","then","catch","isIterable","AxiosError","message","code","config","request","response","captureStackTrace","status","utils","toJSON","description","fileName","lineNumber","columnNumber","from","error","customProps","axiosError","msg","errCode","cause","configurable","isVisitable","removeBrackets","renderKey","path","dots","concat","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","_encode","serialize","serializeFn","serializedParams","hashmarkIndex","encoder","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","URLSearchParams","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","rawValue","parser","parse","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","parseReviver","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders$1","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","dest","entry","get","tokens","tokensRE","parseTokens","has","matcher","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","targets","asStrings","getSetCookie","first","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","transformData","fns","AxiosHeaders","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","mapped","headerValue","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","min","bytes","timestamps","firstSampleTS","head","tail","chunkLength","now","Date","startedAt","bytesCount","passed","round","speedometer","lastArgs","timer","timestamp","threshold","invoke","args","clearTimeout","throttle","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","progressEventDecorator","throttled","asyncDecorator","isURLSameOrigin","isMSIE","URL","protocol","host","port","userAgent","cookies","write","expires","domain","secure","sameSite","cookie","toUTCString","read","RegExp","decodeURIComponent","remove","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","isAbsoluteURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","resolveConfig","newConfig","auth","btoa","username","password","unescape","getHeaders","formHeaders","allowedHeaders","xsrfValue","xhrAdapter","XMLHttpRequest","Promise","_config","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","onloadend","responseHeaders","getAllResponseHeaders","err","responseText","statusText","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","upload","cancel","abort","subscribe","aborted","parseProtocol","send","composeSignals","signals","Boolean","controller","AbortController","reason","streamChunk","chunk","chunkSize","byteLength","end","pos","readStream","async","stream","asyncIterator","reader","getReader","trackStream","onProgress","onFinish","iterable","readBytes","_onFinish","ReadableStream","pull","close","loadedBytes","enqueue","return","highWaterMark","globalFetchAPI","Request","Response","TextEncoder","factory","fetch","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","body","duplex","supportsResponseStream","resolvers","res","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","size","_request","getBodyLength","fetchOptions","_fetch","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","flush","isCredentialsSupported","resolvedOptions","credentials","isStreamResponse","responseContentLength","responseData","seedCache","Map","getFetch","seeds","seed","knownAdapters","http","xhr","fetchAdapter.getFetch","renderReason","isResolvedHandle","adapters","getAdapter","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","spelling","correctSpelling","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios$1","instanceConfig","interceptors","configOrUrl","dummy","boolean","function","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","onFulfilled","onRejected","getUri","Axios","generateHTTPMethod","isForm","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","axios","createInstance","defaultConfig","instance","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","Cancel","all","promises","spread","isAxiosError","payload","formToJSON","default","URLS","dev","APP_AUTH_BASE_URL","APP_BASE_WEBSOCKET_URL","APP_POSE_DETECTION_WEBSOCKET_URL","staging","prod","FILE_UPLOAD_ENDPOINT","API_ENDPOINTS","requiredMetaData","requiredFaceScanMetaData","REQUIRED_MESSAGE","REQUIRED_MESSAGE_FOR_META_DATA","REQUIRED_ERROR_MESSAGE_INVALID_EMAIL","CHUNK_SIZE","URLType","__awaiter","_arguments","P","generator","step","adopt","fetchData","queryParams","apiKey","throwError","urlType","PROD","apiUrl","getUrl","urlName","post","checkParameters","element","checkMetaDataValue","checkValues","correctFormat","callback_url","startsWith","hasRequiredKey","addScanType","scan_id","email","find","scan_type","isValidEmail","_Auth_socketRef","_Auth_accessKey","_Auth_urlType","__classPrivateFieldSet","receiver","f","__classPrivateFieldGet","Auth","accessKey","registerUser","appVerifyUrl","gender","attributes","verifyToken","addUser","scanId","offsetMarketingConsent","getUserDetail","handleAuthSocket","onError","onSuccess","onOpen","WebSocket","detailObj","onopen","_a","onmessage","log","onclose","WeakMap","_Custom_accessKey","_Custom_urlType","Custom","getCustomCustomerConfig","store_url","getModelUrl","createCustomer","storeUrl","_classPrivateFieldLooseBase","privateKey","_classPrivateFieldLooseKey","insertReplacement","rx","replacement","newParts","raw","list","interpolate","phrase","dollarRegex","interpolated","arg","defaultOnMissingKey","_onMissingKey","_apply","Translator","locales","_temp","onMissingKey","_apply2","locale","strings","pluralize","n","translate","translateArray","smart_count","prevLocale","namespaceEmitter","emitter","_fns","emit","arg4","arg5","arg6","toEmit","out","idx","getListeners","emitAll","on","once","one","off","keep","isObject_1","freeGlobal","_freeGlobal","require$$0","freeSelf","Function","_root","trimmedEndIndex","reWhitespace","_trimmedEndIndex","charAt","reTrimStart","_baseTrim","_Symbol","getRawTag","objectProto","nativeObjectToString","symToStringTag","_getRawTag","isOwn","tag","unmasked","require$$1","objectToString","_objectToString","require$$2","_baseGetTag","baseGetTag","isObjectLike","isObjectLike_1","isSymbol_1","now_1","toNumber","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber_1","valueOf","isBinary","nativeMax","max","nativeMin","debounce_1","wait","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","throttle_1","_callbacks","_publish","DefaultStore","_publish2","Set","getState","setState","patch","prevState","nextState","add","delete","_len","getFileNameAndExtension","fullFileName","lastDot","lastIndexOf","extension","mimeTypes","__proto__","md","markdown","mp4","mp3","svg","jpg","png","webp","gif","heic","heif","yaml","yml","csv","tsv","tab","avi","mks","mkv","mov","dicom","doc","docm","docx","dot","dotm","dotx","xla","xlam","xlc","xlf","xlm","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xlw","txt","text","conf","pdf","zip","rar","tar","gz","dmg","getFileType","file","_getFileNameAndExtens","fileExtension","encodeFilename","suffix","character","encodeCharacter","getSafeFileId","instanceId","isRemote","remote","provider","hasFileStableId","fileType","meta","relativePath","lastModified","generateFileID","supportsUploadProgress","major","minor","pad","getTimeStamp","date","getHours","getMinutes","getSeconds","justErrorsLogger","debug","debugLogger","_len2","_key2","_len3","_key3","_len4","_key4","prettierBytes","input","isNaN","neg","num","abs","units","exponent","unit","toFixed","WildcardMatcher","separator","hasWild","parts","ii","testParts","partsCount","wildcard","reMimePartSplit","mimeMatch","pattern","defaultOptions","maxFileSize","minFileSize","maxTotalFileSize","maxNumberOfFiles","minNumberOfFiles","allowedFileTypes","requiredMetaFields","RestrictionError","_opts$isUserFacing","super","isRestriction","isUserFacing","Restricter","getOpts","getI18n","_opts$restrictions","restrictions","validateAggregateRestrictions","existingFiles","addingFiles","isGhost","totalFilesSize","reduce","_f$size","sizeAllowed","validateSingleFile","allowedFileTypesString","types","validate","addingFile","validateMinNumberOfFiles","files","getMissingRequiredMetaFields","missingFields","field","hasOwn","addBulkFilesFailed","youCanOnlyUploadX","youHaveToAtLeastSelectX","aggregateExceedsSize","exceedsSize","missingRequiredMetaField","missingRequiredMetaFieldOnFile","inferiorSize","youCanOnlyUploadFileTypes","noMoreFilesAllowed","noDuplicates","companionError","authAborted","companionUnauthorizeHint","failedToUpload","noInternetConnection","connectedToInternet","noFilesFound","noSearchResults","selectX","allFilesFromFolderNamed","openFolderNamed","logOut","resetFilter","loading","loadedXFiles","authenticateWithTitle","authenticateWith","signInWithGoogle","searchImages","enterTextToSearch","search","resetSearch","emptyFolderAdded","addedNumFiles","folderAlreadyAdded","folderAdded","additionalRestrictionsFailed","unnamed","_Symbol$for","_Symbol$for2","defaultUploadState","totalProgress","allowNewUpload","recoveredState","_plugins","_restricter","_storeUnsubscribe","_emitter","_preProcessors","_uploaders","_postProcessors","_informAndEmit","_checkRequiredMetaFieldsOnFile","_checkRequiredMetaFields","_assertNewUploadAllowed","_transformFile","_startIfAutoProceed","_checkAndUpdateFileState","_addListeners","_updateOnlineStatus","_requestClientById","_createUpload","_getUpload","_removeUpload","_runUpload","for","Uppy","_opts","_runUpload2","_removeUpload2","_getUpload2","_createUpload2","_addListeners2","_checkAndUpdateFileState2","_startIfAutoProceed2","_transformFile2","_assertNewUploadAllowed2","_checkRequiredMetaFields2","_checkRequiredMetaFieldsOnFile2","_informAndEmit2","ee","scheduledAutoProceed","wasOffline","calculateProgress","fileInState","getFile","percentage","canHavePercentage","bytesTotal","setFileState","bytesUploaded","calculateTotalProgress","updateOnlineStatus","defaultLocale","autoProceed","allowMultipleUploadBatches","defaultRestrictionOptions","onBeforeFileAdded","onBeforeUpload","store","logger","infoTimeout","i18nInit","plugins","currentUploads","capabilities","uploadProgress","individualCancellation","resumableUploads","info","i18n","updateAll","iteratePlugins","plugin","update","patchFilesState","filesWithNewState","existingFilesState","fromEntries","_ref","fileID","newFileState","translator","i18nArray","setOptions","newOpts","setMeta","resetProgress","defaultProgress","uploadComplete","uploadStarted","updatedFiles","clearUploadedFiles","addPreProcessor","removePreProcessor","addPostProcessor","removePostProcessor","addUploader","removeUploader","updatedMeta","setFileMeta","newMeta","getFiles","values","getFilesByIds","ids","getObjectOfFilesPerState","filesObject","inProgressFiles","newFiles","startedFiles","uploadStartedFiles","pausedFiles","completeFiles","erroredFiles","inProgressNotPausedFiles","processingFiles","isPaused","preprocess","postprocess","isUploadStarted","isAllComplete","isAllErrored","isAllPaused","isUploadInProgress","isSomeGhost","validateRestrictions","checkIfFileAlreadyExists","addFile","nextFilesState","validFilesToAdd","errors","restrictionErrors","firstValidFileToAdd","addFiles","fileDescriptors","nonRestrictionErrors","subError","details","AggregateError","removeFiles","fileIDs","updatedUploads","removedFiles","fileIsNotRemoved","uploadFileID","uploadID","newFileIDs","stateUpdate","removedFileIDs","removeFile","pauseResume","pauseAll","updatedFile","resumeAll","retryAll","filesToRetry","successful","failed","forceAllowNewUpload","cancelAll","retryUpload","logout","_provider","inProgress","sizedFiles","unsizedFiles","progressMax","currentProgress","acc","totalSize","_file$progress$bytesT","averageSize","uploadedSize","_window$navigator$onL","onLine","getID","Plugin","pluginId","existsPluginAlready","getPlugin","install","foundPlugin","flat","removePlugin","uninstall","findIndex","item","updatedState","_temp2","hideInfo","isComplexMessage","registerRequestClient","client","getRequestClientForFile","requestClient","requestClientId","restore","addResultData","currentUpload","_classPrivateFieldLoo","onBeforeUploadResult","currentlyUploadingFiles","flatMap","curr","waitingFileIDs","userFacingErrors","firstErrors","additionalErrors","_ref2","count","missingRequiredMetaFields","success","fileDescriptorOrFile","File","fileDescriptor","getFileName","preview","filesToAdd","fileToAdd","_existingFiles$newFil","newFile","onBeforeFileAddedResult","errorHandler","errorMsg","_file$name","newError","uploadStalledWarningRecentlyEmitted","onUploadStarted","filesFiltered","exists","filesState","uploadResp","uploadURL","nanoid","allowMultipleUploads","getCurrentUpload","steps","BasePlugin","uppy","getPluginState","setPluginState","addTarget","afterUpdate","UserFacingApiError","RetryOperation","timeouts","forever","_originalTimeouts","_timeouts","_options","_maxRetryTime","maxRetryTime","Infinity","_fn","_errors","_attempts","_operationTimeout","_operationTimeoutCb","_timeout","_operationStart","_timer","_cachedTimeouts","retry_operation","reset","stop","retry","currentTime","getTime","unref","attempt","timeoutOps","try","start","attempts","mainError","counts","mainErrorCount","exports","operation","retries","factor","minTimeout","maxTimeout","randomize","createTimeout","sort","pow","wrap","methods","original","op","errorMessages","isNetworkError","isValid","isError","AbortError","originalError","decorateErrorWithCounts","attemptNumber","retriesLeft","pRetry","onFailedAttempt","shouldRetry","abortHandler","cleanUp","finalError","NetworkError","ErrorWithCause","hasProperty","emitSocketProgress","uploader","progressData","AuthError","isAuthError","HttpError","statusCode","_companionHeaders","_getUrl","_requestSocketToken","_awaitRemoteFileUpload","RequestClient","_awaitRemoteFileUpload2","_getUrl2","_file$remote","postBody","onReceiveResponse","companionHeaders","setCompanionHeaders","hostname","companion","companionUrl","stripSlash","emptyBody","_ref3","skipPostResponse","fetchWithNetworkError","companionCookiesRule","ok","json","errData","errMsg","requestId","handleJSONResponse","uploadRemoteFile","reqBody","_this","getQueue","_this$uppy$getFile","existingServerToken","serverToken","queue","queueRequestSocketToken","wrapPromiseFunction","outerErr","isRetryableHttpError","priority","abortOn","_ref4","removeEventHandlers","_regex$exec","getSocketHost","socket","socketAbortController","activityTimeout","socketSend","action","_socket","OPEN","sendState","createWebsocket","onFatalError","_socketAbortControlle","resetActivityTimeout","_","rejectSocket","_socket2","_payload$response","_payload$response$sta","_payload$response2","_socketAbortControlle2","closeSocket","pause","newPausedState","_socketAbortControlle3","onFileRemove","targetFile","_socketAbortControlle4","onCancelAll","_ref5","_socketAbortControlle5","onFilePausedChange","targetFileId","onPauseAll","onResumeAll","_socketAbortControlle6","_uppy","_events","EventManager","onFilePause","targetFileID","onPause","onRetry","onRetryAll","eventHandler","_this$then","abortPromise","removeAbortListener","_activeRequests","_queuedHandlers","_paused","_pauseTimer","_downLimit","_upperLimit","_rateLimitingTimer","_call","_queueNext","_next","_queue","_dequeue","_resume","_increaseLimit","RateLimitedQueue","limit","_dequeue2","_queue2","_next2","_queueNext2","_call2","resume","ceil","run","queueOptions","wrapSyncFunction","queuedRequest","_this2","outerPromise","cancelError","innerPromise","createCancelError","rateLimit","cancelActive","handler","createAbortError","DOMException","getChunkSize","onPartComplete","pausingUploadReason","_abortController","_chunks","_chunkState","_data","_file","_uploadHasStarted","_onError","_onSuccess","_shouldUseMultipart","_isRestoring","_onReject","_maxMultipartParts","_minPartSize","_initChunks","_resumeUpload","_onPartProgress","_onPartComplete","_abortUpload","MultipartUploader","_this$options","_abortUpload2","_resumeUpload2","_initChunks2","ev","uploaded","ensureInt","totalUploaded","etag","part","PartNumber","ETag","shouldUseMultipart","uploadId","companionComm","restoreUploadFile","really","chunkState","fileSize","arraySize","offset","j","getData","i2","onComplete","setAsUploaded","uploadFile","resumeUploadFile","abortFileUpload","throwIfAborted","ec","algorithm","hash","arrayBufferToHexString","byteArray","hexString","padStart","subtle","crypto","sign","secret","importKey","generateHmacKey","createSignedURL","accountKey","accountSecret","sessionToken","bucketName","Key","Region","partNumber","Service","CanonicalUri","encodeURI","requestDateTime","scope","searchParams","canonical","CanonicalQueryString","SignedHeaders","HashedPayload","headerKeys","k","createCanonicalRequest","stringToSign","digest","kDate","kRegion","kService","kSigning","signature","removeMetadataFromURL","urlString","urlObject","_abortMultipartUpload","_cache","_createMultipartUpload","_fetchSignature","_getUploadParameters","_listParts","_previousRetryDelay","_requests","_retryDelays","_sendCompletionRequest","_setS3MultipartState","_uploadPartBytes","_getFile","_shouldRetry","_nonMultipartUpload","HTTPCommunicationQueue","_requests2","setS3MultipartState","_nonMultipartUpload2","_shouldRetry2","requests","_options$retryDelays","abortMultipartUpload","createMultipartUpload","signPart","listParts","completeMultipartUpload","retryDelays","uploadPartBytes","getUploadParameters","getUploadId","cachedResult","awaitedResult","chunks","uploadChunk","uploadIdAndKey","alreadyUploadedParts","alreadyUploadedInfo","signatureRetryIterator","chunkRetryIterator","shouldRetrySignature","chunkData","retryDelayIterator","_err$source","fields","assertServerError","getExpiry","expirationDate","Expiration","timeUntilExpiry","getAllowedMetadata","allowedMetaFields","querify","metaFields","getTemporarySecurityCredentials","_companionCommunicationQueue","_client","_cachedTemporaryCredentials","_getTemporarySecurityCredentials","_uploadLocalFile","_getCompanionClientArgs","_upload","_setCompanionHeaders","_setResumableUploadsCapability","_resetResumableCapability","AwsS3Multipart","_rateLimitedQueue","_getCompanionClientArgs2","_uploadLocalFile2","_getTemporarySecurityCredentials2","cFile","s3Multipart","hasError","filterNonFailedFiles","filesToEmit","_file$progress","isRestored","filterFilesToEmitUploadStarted","removedHandler","removedFile","uploadPromise","title","dynamicDefaultOptions","prepareUploadParts","presignedUrls","rateLimitedQueue","uploaders","uploaderEvents","uploaderSockets","newOptions","resetUploaderReferences","assertHost","metadata","filename","oldSignal","uploadIdEnc","AccessKeyId","SecretAccessKey","SessionToken","bucket","region","randomUUID","_ref6","_ref7","query","_ref8","cleanup","headersMap","eventManager","removed","_FileUpload_instances","_FileUpload_uppyIns","_FileUpload_accessKey","_FileUpload_urlType","_FileUpload_uppyFileUploader","__rest","s","t","p","getOwnPropertySymbols","propertyIsEnumerable","FileUpload","uploadFileFrontend","arrayMetaData","callBack","faceScanFileUploader","objectKey","_b","objectMetadata","totalChunks","getFileChunks","put","completeValue","originalFileName","setDeviceInfo","rest","device_info","WeakSet","eventName","ObjectKey","partData","_Measurement_instances","_Measurement_socketRefs","_Measurement_waitingTimers","_Measurement_pollingTimers","_Measurement_pollingCounts","_Measurement_accessKey","_Measurement_urlType","_Measurement_disconnectSocket","_Measurement_handleTimeOut","_Measurement_handlePolling","_Measurement_getMeasurementsCheck","_Measurement_handleSocket","Measurement","getMeasurementResult","getMeasurementRecommendation","shopDomain","productName","handleMeasurementSocket","paramsKey","isFallback","delay","handlFaceScaneSocket","faceScanId","isMeasured","clearInterval","scanStatus","resultType","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","withNativeArrayBuffer","encodePacket","supportsBinary","encodeBlobAsBase64","fileReader","FileReader","onload","readAsDataURL","byteOffset","TEXT_ENCODER","chars","lookup","decodePacket","encodedPacket","binaryType","mapBinary","decodeBase64Packet","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","decode","SEPARATOR","fromCharCode","createPacketEncoderStream","TransformStream","packet","encoded","encodePacketToBinary","payloadLength","DataView","setUint8","view","setUint16","setBigUint64","BigInt","TEXT_DECODER","totalLength","concatChunks","Emitter","mixin","removeListener","removeAllListeners","emitReserved","listeners","hasListeners","setTimeoutFn","globalThisShim","pick","attr","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","installTimerFunctions","useNativeTimers","clearTimeoutFn","utf8Length","randomString","TransportError","Transport","forceBase64","doOpen","doClose","packets","onData","onPacket","createUri","_hostname","_port","_query","encodedQuery","Polling","_polling","_poll","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","encodePayload","doWrite","uri","timestampRequests","timestampParam","sid","b64","hasCORS","empty","BaseXHR","isSSL","xd","req","xhrStatus","pollXhr","createRequest","_method","_uri","_create","xdomain","_xhr","extraHeaders","setDisableHeaderCheck","cookieJar","addCookies","requestTimeout","parseCookies","getResponseHeader","_onLoad","_index","requestsCount","_cleanup","fromError","attachEvent","unloadHandler","hasXHR2","newRequest","isReactNative","BaseWS","ws","createSocket","addEventListeners","autoUnref","closeEvent","lastPacket","WebSocketCtor","MozWebSocket","transports","websocket","_packet","webtransport","_transport","WebTransport","transportOptions","closed","ready","createBidirectionalStream","decoderStream","maxPayload","TextDecoder","expectedLength","headerArray","getUint16","getUint32","createPacketDecoderStream","MAX_SAFE_INTEGER","readable","pipeThrough","encoderStream","pipeTo","_writer","getWriter","polling","re","src","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","withEventListeners","OFFLINE_EVENT_LISTENERS","SocketWithoutUpgrade","writeBuffer","_prevBufferLen","_pingInterval","_pingTimeout","_maxPayload","_pingTimeoutTime","parsedUri","_transportsByName","transportName","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","closeOnBeforeunload","qs","qry","pairs","_beforeunloadEventListener","_offlineEventListener","_onClose","_cookieJar","createCookieJar","_open","createTransport","EIO","priorWebsocketSuccess","setTransport","_onDrain","_onPacket","onHandshake","_sendPacket","_resetPingTimeout","pingInterval","pingTimeout","_pingTimeoutTimer","upgrading","_getWritablePackets","payloadSize","_hasPingExpired","hasExpired","compress","cleanupAndClose","waitForUpgrade","tryAllTransports","SocketWithUpgrade","_upgrades","_probe","onTransportOpen","freezeTransport","onTransportClose","onupgrade","to","_filterUpgrades","upgrades","filteredUpgrades","o","DEFAULT_TRANSPORTS","withNativeFile","hasBinary","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","Decoder","reviver","reconstructor","decodeString","isBinaryEvent","BINARY_EVENT","BINARY_ACK","EVENT","ACK","BinaryReconstructor","takeBinaryData","buf","nsp","tryParse","substr","isPayloadValid","CONNECT","DISCONNECT","CONNECT_ERROR","destroy","finishedReconstruction","reconPack","binData","replacer","encodeAsString","encodeAsBinary","deconstruction","freeze","connect","connect_error","disconnect","disconnecting","newListener","Socket","io","connected","recovered","receiveBuffer","sendBuffer","_queueSeq","acks","flags","_autoConnect","disconnected","subEvents","subs","onpacket","active","_readyState","_c","fromQueue","volatile","_addToQueue","ack","_registerAckCallback","isTransportWritable","engine","isConnected","notifyOutgoingListeners","ackTimeout","withError","emitWithAck","tryCount","pending","responseArgs","_drainQueue","force","_sendConnectPacket","_pid","pid","_lastOffset","_clearAcks","onconnect","onevent","onack","ondisconnect","emitEvent","_anyListeners","sent","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","Backoff","ms","jitter","rand","deviation","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","Encoder","decoder","autoConnect","v","_reconnection","skipReconnect","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","maybeReconnectOnOpen","_reconnecting","reconnect","Engine","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","onreconnect","loc","sameNamespace","forceNew","multiplex","_PoseDetection_socketRef","_PoseDetection_accessKey","_PoseDetection_urlType","PoseDetection","socketId","videoEmit","image","user_unique_key","poseStatus","_TryOn_instances","_TryOn_socketMap","_TryOn_timerMap","_TryOn_accessKey","_TryOn_urlType","_TryOn_getSignedUrl","_TryOn_s3Upload","_TryOn_disconnectSocket","_TryOn_handleTimeOut","_TryOn_handleGetTryOnResult","TryOn","tryonId","handleTryOnWebSocket","getTryOnResult","userEmail","fileNoLimit","userImages","signedUrlRes","uploadUrls","getUploadedFiles","deleteImage","handleTryOnSubmit","products","selectedUserImages","requestSource","callbackUrl","openTryonId","selectedProductImageUrl","customerStoreUrl","getShareLink","getProductImageEligibility","productHandle","imageURL","productDescription","_Swan_accessKey","_Swan_urlType","swan","custom","fileUpload","measurement","poseDetection","tryOn","STAGING","speechService","playAudio","audio","querySelector","onEnded","play","stopAudio","LoadingScreen","loaderType","loaderBlackGif","loaderGif","alt"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146]}
|