From edb4f8ffa2f9103772a9ed8f0d95f803ebcd3a48 Mon Sep 17 00:00:00 2001 From: Marco Braak Date: Sat, 22 Jul 2023 08:00:19 +0200 Subject: [PATCH] Update --- .../static/file_form/file_form.min.js.map | 2 +- frontend/package-lock.json | 682 ++++++++++-------- 2 files changed, 371 insertions(+), 313 deletions(-) diff --git a/django_file_form/static/file_form/file_form.min.js.map b/django_file_form/static/file_form/file_form.min.js.map index 04d5ade10..9385e5f71 100644 --- a/django_file_form/static/file_form/file_form.min.js.map +++ b/django_file_form/static/file_form/file_form.min.js.map @@ -1 +1 @@ -{"version":3,"file":"file_form.min.js","sources":["../../../frontend/src/auto_init_file_forms.ts","../../../frontend/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../frontend/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../frontend/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../frontend/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../frontend/src/util.ts","../../../frontend/node_modules/escape-html/index.js","../../../frontend/src/render_upload_file.ts","../../../frontend/node_modules/mime/Mime.js","../../../frontend/node_modules/mime/lite.js","../../../frontend/node_modules/mime/types/standard.js","../../../frontend/node_modules/core-js/internals/global.js","../../../frontend/node_modules/core-js/internals/fails.js","../../../frontend/node_modules/core-js/internals/descriptors.js","../../../frontend/node_modules/core-js/internals/function-bind-native.js","../../../frontend/node_modules/core-js/internals/function-uncurry-this.js","../../../frontend/node_modules/core-js/internals/document-all.js","../../../frontend/node_modules/core-js/internals/is-callable.js","../../../frontend/node_modules/core-js/internals/is-null-or-undefined.js","../../../frontend/node_modules/core-js/internals/require-object-coercible.js","../../../frontend/node_modules/core-js/internals/to-object.js","../../../frontend/node_modules/core-js/internals/has-own-property.js","../../../frontend/node_modules/core-js/internals/function-name.js","../../../frontend/node_modules/core-js/internals/define-global-property.js","../../../frontend/node_modules/core-js/internals/shared-store.js","../../../frontend/node_modules/core-js/internals/inspect-source.js","../../../frontend/node_modules/core-js/internals/engine-v8-version.js","../../../frontend/node_modules/core-js/internals/weak-map-basic-detection.js","../../../frontend/node_modules/core-js/internals/is-object.js","../../../frontend/node_modules/core-js/internals/document-create-element.js","../../../frontend/node_modules/core-js/internals/ie8-dom-define.js","../../../frontend/node_modules/core-js/internals/v8-prototype-define-bug.js","../../../frontend/node_modules/core-js/internals/an-object.js","../../../frontend/node_modules/core-js/internals/function-call.js","../../../frontend/node_modules/core-js/internals/get-built-in.js","../../../frontend/node_modules/core-js/internals/object-is-prototype-of.js","../../../frontend/node_modules/core-js/internals/engine-user-agent.js","../../../frontend/node_modules/core-js/internals/symbol-constructor-detection.js","../../../frontend/node_modules/core-js/internals/use-symbol-as-uid.js","../../../frontend/node_modules/core-js/internals/is-symbol.js","../../../frontend/node_modules/core-js/internals/try-to-string.js","../../../frontend/node_modules/core-js/internals/a-callable.js","../../../frontend/node_modules/core-js/internals/get-method.js","../../../frontend/node_modules/core-js/internals/ordinary-to-primitive.js","../../../frontend/node_modules/core-js/internals/shared.js","../../../frontend/node_modules/core-js/internals/uid.js","../../../frontend/node_modules/core-js/internals/well-known-symbol.js","../../../frontend/node_modules/core-js/internals/to-primitive.js","../../../frontend/node_modules/core-js/internals/to-property-key.js","../../../frontend/node_modules/core-js/internals/object-define-property.js","../../../frontend/node_modules/core-js/internals/create-property-descriptor.js","../../../frontend/node_modules/core-js/internals/internal-state.js","../../../frontend/node_modules/core-js/internals/create-non-enumerable-property.js","../../../frontend/node_modules/core-js/internals/shared-key.js","../../../frontend/node_modules/core-js/internals/hidden-keys.js","../../../frontend/node_modules/core-js/internals/make-built-in.js","../../../frontend/node_modules/core-js/internals/define-built-in-accessor.js","../../../frontend/node_modules/core-js/internals/regexp-flags.js","../../../frontend/node_modules/core-js/modules/es.regexp.flags.js","../../../frontend/node_modules/picomatch/lib/path.js","../../../frontend/node_modules/picomatch/lib/constants.js","../../../frontend/node_modules/picomatch/lib/utils.js","../../../frontend/node_modules/picomatch/lib/scan.js","../../../frontend/node_modules/picomatch/lib/parse.js","../../../frontend/node_modules/picomatch/lib/picomatch.js","../../../frontend/src/accepted_file_types.ts","../../../frontend/src/drop_area.ts","../../../frontend/src/uploads/base_upload.ts","../../../frontend/node_modules/url-join/lib/url-join.js","../../../frontend/src/uploads/s3_utils.ts","../../../frontend/src/uploads/s3_upload.ts","../../../frontend/src/uploads/tus_utils.ts","../../../frontend/src/uploads/uploaded_file.ts","../../../frontend/node_modules/js-base64/base64.mjs","../../../frontend/node_modules/requires-port/index.js","../../../frontend/node_modules/querystringify/index.js","../../../frontend/node_modules/url-parse/index.js","../../../frontend/node_modules/tus-js-client/lib.esm/error.js","../../../frontend/node_modules/tus-js-client/lib.esm/upload.js","../../../frontend/node_modules/tus-js-client/lib.esm/uuid.js","../../../frontend/node_modules/tus-js-client/lib.esm/noopUrlStorage.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/urlStorage.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/httpStack.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/isReactNative.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/sources/FileSource.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/sources/isCordova.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/sources/readAsByteArray.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/sources/StreamSource.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/fileReader.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/uriToBlob.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/index.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/fileSignature.js","../../../frontend/src/uploads/tus_upload.ts","../../../frontend/src/file_field.ts","../../../frontend/src/init_upload_fields.ts","../../../frontend/src/file_form.ts","../../../frontend/src/init_form_set.ts"],"sourcesContent":["const findForm = (element: Element): HTMLElement | null => {\n const parent = element.parentElement;\n\n if (!parent) {\n return null;\n }\n\n if (parent.tagName === \"FORM\") {\n return parent;\n }\n\n return findForm(parent);\n};\n\nconst unique = (values: unknown[]): unknown[] =>\n Array.from(new Set(values).values());\n\ndeclare const window: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nconst autoInitFileForms = (): void => {\n const initUploadFields = window.initUploadFields as () => void; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\n\n const forms = unique(\n Array.from(document.querySelectorAll(\".dff-uploader\")).map(findForm)\n );\n forms.forEach(initUploadFields);\n};\n\nexport default autoInitFileForms;\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export const formatBytes = (bytes: number, decimals: number): string => {\n if (bytes === 0) {\n return \"0 Bytes\";\n }\n\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals || 2;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const n = parseFloat((bytes / k ** i).toFixed(dm));\n const size = sizes[i];\n\n return `${n} ${size}`;\n};\n\nexport const getInputNameWithPrefix = (\n fieldName: string,\n prefix: string | null\n): string => (prefix ? `${prefix}-${fieldName}` : fieldName);\n\nconst getInputNameWithoutPrefix = (\n fieldName: string,\n prefix: string | null\n): string => (prefix ? fieldName.slice(prefix.length + 1) : fieldName);\n\nexport const findInput = (\n form: Element,\n fieldName: string,\n prefix: string | null\n): HTMLInputElement | null => {\n const inputNameWithPrefix = getInputNameWithPrefix(fieldName, prefix);\n const input = form.querySelector(`[name=\"${inputNameWithPrefix}\"]`);\n\n if (!input) {\n return null;\n }\n\n return input as HTMLInputElement;\n};\n\nexport const getUploadsFieldName = (\n fieldName: string,\n prefix: string | null\n): string => `${getInputNameWithoutPrefix(fieldName, prefix)}-uploads`;\n\nexport const getInputValueForFormAndPrefix = (\n form: Element,\n fieldName: string,\n prefix: string | null\n): string | undefined => findInput(form, fieldName, prefix)?.value;\n\nexport const getMetadataFieldName = (\n fieldName: string,\n prefix: string | null\n): string => `${getInputNameWithoutPrefix(fieldName, prefix)}-metadata`;\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import escape from \"escape-html\";\nimport { formatBytes } from \"./util\";\n\nclass RenderUploadFile {\n container: Element;\n input: HTMLInputElement;\n translations: { [key: string]: string };\n errors: Element;\n\n constructor({\n parent,\n input,\n skipRequired,\n translations\n }: {\n parent: Element;\n input: HTMLInputElement;\n skipRequired: boolean;\n translations: { [key: string]: string };\n }) {\n this.container = this.createFilesContainer(parent);\n this.errors = this.createErrorContainer(parent);\n this.input = input;\n this.translations = translations;\n\n if (skipRequired) {\n this.input.required = false;\n }\n }\n\n public addNewUpload(filename: string, uploadIndex: number): HTMLElement {\n const div = this.addFile(filename, uploadIndex);\n\n const progressSpan = document.createElement(\"span\");\n progressSpan.className = \"dff-progress\";\n\n const innerSpan = document.createElement(\"span\");\n innerSpan.className = \"dff-progress-inner\";\n\n progressSpan.appendChild(innerSpan);\n div.appendChild(progressSpan);\n\n const cancelLink = document.createElement(\"a\");\n cancelLink.className = \"dff-cancel\";\n cancelLink.innerHTML = this.translations.Cancel || \"\";\n cancelLink.setAttribute(\"data-index\", `${uploadIndex}`);\n cancelLink.href = \"#\";\n div.appendChild(cancelLink);\n\n return div;\n }\n\n public addUploadedFile(\n filename: string,\n uploadIndex: number,\n filesize?: number\n ): HTMLElement {\n const element = this.addFile(filename, uploadIndex);\n this.setSuccess(uploadIndex, filesize);\n return element;\n }\n\n public clearInput(): void {\n const { input } = this;\n\n input.value = \"\";\n }\n\n public deleteFile(index: number): void {\n const div = this.findFileDiv(index);\n\n if (div) {\n div.remove();\n }\n }\n\n public disableCancel(index: number): void {\n const cancelSpan = this.findCancelSpan(index);\n\n if (cancelSpan) {\n cancelSpan.classList.add(\"dff-disabled\");\n }\n }\n\n public disableDelete(index: number): void {\n const deleteLink = this.findDeleteLink(index);\n\n if (deleteLink) {\n deleteLink.classList.add(\"dff-disabled\");\n }\n }\n\n public findFileDiv(index: number): HTMLElement | null {\n return this.container.querySelector(`.dff-file-id-${index}`);\n }\n\n public removeDropHint(): void {\n const dropHint = this.container.querySelector(\".dff-drop-hint\");\n\n if (dropHint) {\n dropHint.remove();\n }\n }\n\n public renderDropHint(): void {\n if (this.container.querySelector(\".dff-drop-hint\")) {\n return;\n }\n\n const dropHint = document.createElement(\"div\");\n dropHint.className = \"dff-drop-hint\";\n dropHint.innerHTML = this.translations[\"Drop your files here\"] || \"\";\n\n this.container.appendChild(dropHint);\n }\n\n public setDeleteFailed(index: number): void {\n this.setErrorMessage(index, this.translations[\"Delete failed\"] || \"\");\n\n this.enableDelete(index);\n }\n\n public setError(index: number): void {\n this.setErrorMessage(index, this.translations[\"Upload failed\"] || \"\");\n\n const el = this.findFileDiv(index);\n if (el) {\n el.classList.add(\"dff-upload-fail\");\n }\n\n this.removeProgress(index);\n this.removeCancel(index);\n }\n\n public setErrorInvalidFiles(files: File[]): void {\n const errorsMessages = document.createElement(\"ul\");\n\n for (const file of files) {\n const msg = document.createElement(\"li\");\n msg.innerText = `${file.name}: ${this.translations[\"Invalid file type\"]}`;\n msg.className = \"dff-error\";\n errorsMessages.appendChild(msg);\n }\n\n this.errors.replaceChildren(errorsMessages);\n this.clearInput();\n }\n\n public setSuccess(index: number, size?: number): void {\n const { translations } = this;\n\n const el = this.findFileDiv(index);\n if (el) {\n el.classList.add(\"dff-upload-success\");\n\n if (size != null) {\n const fileSizeInfo = document.createElement(\"span\");\n fileSizeInfo.innerHTML = formatBytes(size, 2);\n fileSizeInfo.className = \"dff-filesize\";\n\n el.appendChild(fileSizeInfo);\n }\n\n const deleteLink = document.createElement(\"a\");\n deleteLink.innerHTML = translations.Delete || \"\";\n deleteLink.className = \"dff-delete\";\n deleteLink.setAttribute(\"data-index\", `${index}`);\n deleteLink.href = \"#\";\n\n el.appendChild(deleteLink);\n }\n\n this.removeProgress(index);\n this.removeCancel(index);\n }\n\n public updateProgress(index: number, percentage: string): void {\n const el = this.container.querySelector(`.dff-file-id-${index}`);\n if (el) {\n const innerProgressSpan = el.querySelector(\".dff-progress-inner\");\n\n if (innerProgressSpan) {\n (innerProgressSpan as HTMLElement).style.width = `${percentage}%`;\n }\n }\n }\n\n private createErrorContainer = (parent: Element): Element => {\n const div = document.createElement(\"div\");\n div.className = \"dff-invalid-files\";\n parent.appendChild(div);\n return div;\n };\n\n private createFilesContainer = (parent: Element): Element => {\n const div = document.createElement(\"div\");\n div.className = \"dff-files\";\n parent.appendChild(div);\n\n return div;\n };\n\n private addFile(filename: string, uploadIndex: number): HTMLElement {\n const div = document.createElement(\"div\");\n div.className = `dff-file dff-file-id-${uploadIndex}`;\n\n const nameSpan = document.createElement(\"span\");\n nameSpan.innerHTML = escape(filename);\n nameSpan.className = \"dff-filename\";\n nameSpan.setAttribute(\"data-index\", `${uploadIndex}`);\n\n div.appendChild(nameSpan);\n this.container.appendChild(div);\n\n this.input.required = false;\n return div;\n }\n\n private removeProgress(index: number): void {\n const el = this.findFileDiv(index);\n\n if (el) {\n const progressSpan = el.querySelector(\".dff-progress\");\n\n if (progressSpan) {\n progressSpan.remove();\n }\n }\n }\n\n private removeCancel(index: number): void {\n const cancelSpan = this.findCancelSpan(index);\n\n if (cancelSpan) {\n cancelSpan.remove();\n }\n }\n\n private findCancelSpan(index: number): HTMLElement | null {\n const el = this.findFileDiv(index);\n\n if (!el) {\n return null;\n }\n\n return el.querySelector(\".dff-cancel\");\n }\n\n private enableDelete(index: number): void {\n const deleteLink = this.findDeleteLink(index);\n\n if (deleteLink) {\n deleteLink.classList.remove(\"dff-disabled\");\n }\n }\n\n private findDeleteLink(index: number): HTMLElement | null {\n const div = this.findFileDiv(index);\n if (!div) {\n return div;\n }\n\n return div.querySelector(\".dff-delete\");\n }\n\n private setErrorMessage(index: number, message: string): void {\n const el = this.findFileDiv(index);\n if (!el) {\n return;\n }\n\n const originalMessageSpan = el.querySelector(\".dff-error\");\n if (originalMessageSpan) {\n originalMessageSpan.remove();\n }\n\n const span = document.createElement(\"span\");\n span.classList.add(\"dff-error\");\n span.innerHTML = message;\n\n el.appendChild(span);\n }\n}\n\nexport default RenderUploadFile;\n","'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n","'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'));\n","module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.31.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","'use strict';\n\nconst basename = path => {\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) {\n return '';\n }\n\n return path.slice(start, end);\n};\n\nmodule.exports = { basename };\n","'use strict';\n\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: '/',\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32 = false) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return false;\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n\n const PLATFORM_CHARS = constants.globChars();\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars();\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('./path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","import mime from \"mime/lite\";\nimport picomatch from \"picomatch\";\n\nconst parseInputAccept = (inputAccept: string): [string[], string[]] => {\n const extensions: string[] = [];\n const mimeTypes: string[] = [];\n\n inputAccept\n .split(\",\")\n .map(mimeType => mimeType.trim())\n .filter(Boolean)\n .forEach(fileType => {\n if (fileType.startsWith(\".\")) {\n extensions.push(`*${fileType}`);\n } else {\n mimeTypes.push(fileType);\n }\n });\n\n return [extensions, mimeTypes];\n};\n\nclass AcceptedFileTypes {\n private extensions: string[];\n private mimeTypes: string[];\n\n constructor(inputAccept: string) {\n const [extensions, mimeTypes] = parseInputAccept(inputAccept);\n\n this.extensions = extensions;\n this.mimeTypes = mimeTypes;\n }\n\n public isAccepted(fileName: string): boolean {\n if (this.extensions.length === 0 && this.mimeTypes.length === 0) {\n return true;\n }\n return (\n this.isMimeTypeAccepted(mime.getType(fileName)) ||\n this.isExtensionAccepted(fileName)\n );\n }\n\n private isMimeTypeAccepted(mimeType: string | null): boolean {\n if (!mimeType || this.mimeTypes.length === 0) {\n return false;\n }\n\n return picomatch.isMatch(mimeType, this.mimeTypes);\n }\n\n private isExtensionAccepted(fileName: string): boolean {\n if (this.extensions.length === 0) {\n return false;\n }\n\n return picomatch.isMatch(fileName, this.extensions);\n }\n}\n\nexport default AcceptedFileTypes;\n","import AcceptedFileTypes from \"./accepted_file_types\";\nimport RenderUploadFile from \"./render_upload_file\";\n\nconst getEntriesFromDirectory = async (\n directoryEntry: FileSystemDirectoryEntry\n): Promise =>\n new Promise((resolve, reject) =>\n directoryEntry.createReader().readEntries(resolve, reject)\n );\n\nconst getFileFromFileEntry = async (\n fileEntry: FileSystemFileEntry\n): Promise =>\n new Promise((resolve, reject) => fileEntry.file(resolve, reject));\n\nconst getFilesFromFileSystemEntries = async (\n entries: FileSystemEntry[]\n): Promise => {\n const result = [];\n\n for await (const entry of entries) {\n if (entry.isFile) {\n const file = await getFileFromFileEntry(entry as FileSystemFileEntry);\n result.push(file);\n } else if (entry.isDirectory) {\n const entriesFromDirectory = await getEntriesFromDirectory(\n entry as FileSystemDirectoryEntry\n );\n const files = await getFilesFromFileSystemEntries(entriesFromDirectory);\n files.forEach(file => result.push(file));\n }\n }\n\n return result;\n};\n\nconst getFilesFromDataTransfer = async (\n dataTransfer: DataTransfer\n): Promise => {\n if (dataTransfer.items) {\n const entries = [...dataTransfer.items].map(\n item => item.webkitGetAsEntry() as FileSystemEntry\n );\n\n const files = await getFilesFromFileSystemEntries(entries);\n return files;\n } else {\n // backwards compatibility\n return [...dataTransfer.files];\n }\n};\n\nclass DropArea {\n acceptedFileTypes: AcceptedFileTypes;\n container: Element;\n onUploadFiles: (files: File[]) => Promise;\n renderer: RenderUploadFile;\n\n constructor({\n container,\n inputAccept,\n onUploadFiles,\n renderer\n }: {\n container: Element;\n inputAccept: string;\n onUploadFiles: (files: File[]) => Promise;\n renderer: RenderUploadFile;\n }) {\n this.container = container;\n this.onUploadFiles = onUploadFiles;\n this.acceptedFileTypes = new AcceptedFileTypes(inputAccept);\n this.renderer = renderer;\n\n container.addEventListener(\"dragenter\", () => {\n container.classList.add(\"dff-dropping\");\n });\n container.addEventListener(\"dragleave\", () => {\n container.classList.remove(\"dff-dropping\");\n });\n container.addEventListener(\"dragover\", e => {\n container.classList.add(\"dff-dropping\");\n e.preventDefault();\n });\n container.addEventListener(\"drop\", this.onDrop);\n }\n\n onDrop = (e: Event): void => {\n const dragEvent = e as DragEvent;\n this.container.classList.remove(\"dff-dropping\");\n dragEvent.preventDefault();\n dragEvent.stopPropagation();\n\n const uploadFiles = async (): Promise => {\n try {\n if (dragEvent.dataTransfer) {\n const files = await getFilesFromDataTransfer(dragEvent.dataTransfer);\n const acceptedFiles: File[] = [];\n const invalidFiles: File[] = [];\n\n for (const file of files) {\n if (this.acceptedFileTypes.isAccepted(file.name)) {\n acceptedFiles.push(file);\n } else {\n invalidFiles.push(file);\n }\n }\n\n this.renderer.setErrorInvalidFiles(invalidFiles);\n void this.onUploadFiles(acceptedFiles);\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n void uploadFiles();\n };\n}\n\nexport default DropArea;\n","type UploadStatus = \"done\" | \"error\" | \"uploading\";\nexport type UploadType =\n | \"existing\"\n | \"placeholder\"\n | \"s3\"\n | \"tus\"\n | \"uploadedS3\"\n | \"uploadedTus\";\n\nexport interface InitialExistingFile {\n name: string;\n size: number;\n type: \"existing\";\n}\n\nexport interface InitialPlaceholderFile {\n id: string;\n name: string;\n size: number;\n type: \"placeholder\";\n}\n\nexport interface InitialS3File {\n id: string;\n name: string;\n original_name: string;\n size: number;\n type: \"s3\";\n}\n\nexport interface InitialTusFile {\n id: string;\n name: string;\n size: number;\n type: \"tus\";\n url: string;\n}\n\nexport type InitialFile =\n | InitialExistingFile\n | InitialPlaceholderFile\n | InitialS3File\n | InitialTusFile;\n\ninterface UploadParameters {\n name: string;\n status: UploadStatus;\n type: UploadType;\n uploadIndex: number;\n}\n\nabstract class BaseUpload {\n name: string;\n status: UploadStatus;\n type: UploadType;\n uploadIndex: number;\n\n constructor({ name, status, type, uploadIndex }: UploadParameters) {\n this.name = name;\n this.status = status;\n this.type = type;\n this.uploadIndex = uploadIndex;\n }\n\n public async abort(): Promise {\n //\n }\n public async delete(): Promise {\n //\n }\n\n public abstract getId(): string | undefined;\n public abstract getInitialFile(): InitialFile;\n public abstract getSize(): number | undefined;\n}\n\nexport default BaseUpload;\n","function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n}\n\nexport default function urlJoin() {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n}\n","import urljoin from \"url-join\";\n\nexport interface LocationInfo {\n location: string;\n}\n\nexport interface MultipartUpload {\n key: string;\n uploadId: string;\n endpoint: string;\n}\n\nexport interface Part {\n ETag: string;\n PartNumber: number;\n}\n\nexport interface UrlInfo {\n url: string;\n}\n\nexport const MB = 1024 * 1024;\n\ninterface AbortMultipartUploadParameters {\n csrfToken: string;\n endpoint: string;\n key: string;\n uploadId: string;\n}\n\nexport const abortMultipartUpload = ({\n csrfToken,\n key,\n uploadId,\n endpoint\n}: AbortMultipartUploadParameters): Promise => {\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n const headers = new Headers({\n \"X-CSRFToken\": csrfToken\n });\n const url = urljoin(endpoint, uploadIdEnc, `?key=${filename}`);\n return fetch(url, {\n method: \"delete\",\n headers: headers\n }).then(response => {\n return response.json();\n });\n};\n\ninterface CompleteMultipartUploadParameters {\n csrfToken: string;\n endpoint: string;\n key: string;\n parts: Part[];\n uploadId: string;\n}\n\nexport const completeMultipartUpload = ({\n csrfToken,\n key,\n uploadId,\n parts,\n endpoint\n}: CompleteMultipartUploadParameters): Promise => {\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n const headers = new Headers({\n \"X-CSRFToken\": csrfToken\n });\n const url = urljoin(endpoint, uploadIdEnc, \"complete\", `?key=${filename}`);\n return fetch(url, {\n method: \"post\",\n headers: headers,\n body: JSON.stringify({\n parts: parts\n })\n })\n .then(response => {\n return response.json();\n })\n .then(data => {\n return data as LocationInfo;\n });\n};\n\ninterface CreateMultipartUploadParameters {\n csrfToken: string;\n endpoint: string;\n file: File;\n s3UploadDir: string;\n}\n\nexport const createMultipartUpload = ({\n csrfToken,\n endpoint,\n file,\n s3UploadDir\n}: CreateMultipartUploadParameters): Promise => {\n const headers = new Headers({\n accept: \"application/json\",\n \"content-type\": \"application/json\",\n \"X-CSRFToken\": csrfToken\n });\n return fetch(endpoint, {\n method: \"post\",\n headers: headers,\n body: JSON.stringify({\n filename: file.name,\n contentType: file.type,\n s3UploadDir: s3UploadDir\n })\n })\n .then(response => {\n return response.json();\n })\n .then(data => {\n return data as MultipartUpload;\n });\n};\n\nexport const getChunkSize = (file: File): number =>\n Math.ceil(file.size / 10000);\n\ninterface PrepareUploadPartParameters {\n csrfToken: string;\n endpoint: string;\n key: string;\n number: number;\n uploadId: string;\n}\n\nexport const prepareUploadPart = ({\n csrfToken,\n endpoint,\n key,\n number,\n uploadId\n}: PrepareUploadPartParameters): Promise => {\n const filename = encodeURIComponent(key);\n const headers = new Headers({ \"X-CSRFToken\": csrfToken });\n const url = urljoin(endpoint, uploadId, `${number}`, `?key=${filename}`);\n return fetch(url, {\n method: \"get\",\n headers: headers\n })\n .then(response => {\n return response.json();\n })\n .then(data => {\n return data as UrlInfo;\n });\n};\n\nexport const remove = (arr: unknown[], el: unknown): void => {\n const i = arr.indexOf(el);\n if (i !== -1) {\n arr.splice(i, 1);\n }\n};\n","// The following code is adapted from https://github.com/transloadit/uppy/blob/master/packages/%40uppy/aws-s3-multipart/src/MultipartUploader.js\n// which is released under a MIT License (https://github.com/transloadit/uppy/blob/master/LICENSE)\n\nimport BaseUpload, { InitialFile } from \"./base_upload\";\nimport {\n abortMultipartUpload,\n completeMultipartUpload,\n createMultipartUpload,\n getChunkSize,\n MB,\n MultipartUpload,\n Part,\n prepareUploadPart,\n remove,\n UrlInfo\n} from \"./s3_utils\";\n\ninterface ChunkState {\n busy: boolean;\n done: boolean;\n etag?: string;\n uploaded: number;\n}\n\ninterface S3UploadParameters {\n csrfToken: string;\n endpoint: string;\n file: File;\n s3UploadDir: string;\n uploadIndex: number;\n}\n\nclass S3Upload extends BaseUpload {\n public onError?: (error: Error) => void;\n public onProgress?: (bytesUploaded: number, bytesTotal: number) => void;\n public onSuccess?: () => void;\n\n private chunkState: ChunkState[];\n private chunks: Blob[];\n private createdPromise: Promise;\n private csrfToken: string;\n private endpoint: string;\n private file: File;\n private key: string | null;\n private parts: Part[];\n private s3UploadDir: string;\n private uploadId: string | null;\n private uploading: XMLHttpRequest[];\n\n constructor({\n csrfToken,\n endpoint,\n file,\n s3UploadDir,\n uploadIndex\n }: S3UploadParameters) {\n super({ name: file.name, status: \"uploading\", type: \"s3\", uploadIndex });\n\n this.csrfToken = csrfToken;\n this.endpoint = endpoint;\n this.file = file;\n this.s3UploadDir = s3UploadDir;\n\n this.key = null;\n this.uploadId = null;\n this.parts = [];\n\n // Do `this.createdPromise.then(OP)` to execute an operation `OP` _only_ if the\n // upload was created already. That also ensures that the sequencing is right\n // (so the `OP` definitely happens if the upload is created).\n //\n // This mostly exists to make `abortUpload` work well: only sending the abort request if\n // the upload was already created, and if the createMultipartUpload request is still in flight,\n // aborting it immediately after it finishes.\n this.createdPromise = Promise.reject(); // eslint-disable-line prefer-promise-reject-errors\n this.chunks = [];\n this.chunkState = [];\n this.uploading = [];\n this.onError = undefined;\n this.onProgress = undefined;\n this.onSuccess = undefined;\n\n this.initChunks();\n\n this.createdPromise.catch(() => ({})); // silence uncaught rejection warning\n }\n\n public async abort(): Promise {\n this.uploading.slice().forEach(xhr => {\n xhr.abort();\n });\n this.uploading = [];\n\n await this.createdPromise;\n\n if (this.key && this.uploadId) {\n await abortMultipartUpload({\n csrfToken: this.csrfToken,\n endpoint: this.endpoint,\n key: this.key,\n uploadId: this.uploadId\n });\n }\n }\n\n public async delete(): Promise {\n return Promise.resolve();\n }\n\n public getId(): string | undefined {\n return this.uploadId || undefined;\n }\n\n public getInitialFile(): InitialFile {\n return {\n id: this.uploadId || \"\",\n name: this.key || \"\",\n size: this.file.size,\n original_name: this.file.name,\n type: \"s3\"\n };\n }\n\n public getSize(): number {\n return this.file.size;\n }\n\n public start(): void {\n void this.createUpload();\n }\n\n private initChunks(): void {\n const chunks: Blob[] = [];\n const desiredChunkSize = getChunkSize(this.file);\n // at least 5MB per request, at most 10k requests\n const minChunkSize = Math.max(5 * MB, Math.ceil(this.file.size / 10000));\n const chunkSize = Math.max(desiredChunkSize, minChunkSize);\n\n for (let i = 0; i < this.file.size; i += chunkSize) {\n const end = Math.min(this.file.size, i + chunkSize);\n chunks.push(this.file.slice(i, end));\n }\n\n this.chunks = chunks;\n this.chunkState = chunks.map(() => ({\n uploaded: 0,\n busy: false,\n done: false\n }));\n }\n\n private createUpload(): Promise {\n this.createdPromise = createMultipartUpload({\n csrfToken: this.csrfToken,\n endpoint: this.endpoint,\n file: this.file,\n s3UploadDir: this.s3UploadDir\n });\n return this.createdPromise\n .then((result: MultipartUpload) => {\n const valid =\n typeof result === \"object\" &&\n result &&\n typeof result.uploadId === \"string\" &&\n typeof result.key === \"string\";\n if (!valid) {\n throw new TypeError(\n \"AwsS3/Multipart: Got incorrect result from `createMultipartUpload()`, expected an object `{ uploadId, key }`.\"\n );\n }\n\n this.key = result.key;\n this.uploadId = result.uploadId;\n\n this.uploadParts();\n })\n .catch((err: Error) => {\n this.handleError(err);\n });\n }\n\n private uploadParts(): void {\n const need = 1 - this.uploading.length;\n if (need === 0) {\n return;\n }\n\n // All parts are uploaded.\n if (this.chunkState.every(state => state.done)) {\n void this.completeUpload();\n return;\n }\n\n const candidates = [];\n for (let i = 0; i < this.chunkState.length; i++) {\n const state = this.chunkState[i];\n\n if (!state || state.done || state.busy) {\n continue;\n }\n\n candidates.push(i);\n if (candidates.length >= need) {\n break;\n }\n }\n\n candidates.forEach(index => {\n void this.uploadPart(index);\n });\n }\n\n private uploadPart(index: number): Promise {\n const state = this.chunkState[index];\n\n if (state) {\n state.busy = true;\n }\n\n if (!this.key || !this.uploadId) {\n return Promise.resolve();\n }\n\n return prepareUploadPart({\n csrfToken: this.csrfToken,\n endpoint: this.endpoint,\n key: this.key,\n number: index + 1,\n uploadId: this.uploadId\n })\n .then(result => {\n const valid =\n typeof result === \"object\" &&\n result &&\n typeof result.url === \"string\";\n if (!valid) {\n throw new TypeError(\n \"AwsS3/Multipart: Got incorrect result from `prepareUploadPart()`, expected an object `{ url }`.\"\n );\n }\n return result;\n })\n .then(\n ({ url }: UrlInfo) => {\n this.uploadPartBytes(index, url);\n },\n err => {\n this.handleError(err as Error);\n }\n );\n }\n\n private onPartProgress(index: number, sent: number): void {\n const state = this.chunkState[index];\n\n if (state) {\n state.uploaded = sent;\n }\n\n if (this.onProgress) {\n const totalUploaded = this.chunkState.reduce((n, c) => n + c.uploaded, 0);\n this.onProgress(totalUploaded, this.file.size);\n }\n }\n\n private onPartComplete(index: number, etag: string): void {\n const state = this.chunkState[index];\n\n if (state) {\n state.etag = etag;\n state.done = true;\n }\n\n const part = {\n PartNumber: index + 1,\n ETag: etag\n };\n this.parts.push(part);\n\n this.uploadParts();\n }\n\n private uploadPartBytes(index: number, url: string): void {\n const body = this.chunks[index];\n const xhr = new XMLHttpRequest();\n xhr.open(\"PUT\", url, true);\n xhr.responseType = \"text\";\n\n this.uploading.push(xhr);\n\n xhr.upload.addEventListener(\"progress\", ev => {\n if (!ev.lengthComputable) {\n return;\n }\n\n this.onPartProgress(index, ev.loaded);\n });\n\n xhr.addEventListener(\"abort\", ev => {\n remove(this.uploading, ev.target);\n\n const state = this.chunkState[index];\n\n if (state) {\n state.busy = false;\n }\n });\n\n xhr.addEventListener(\"load\", ev => {\n const target = ev.target as XMLHttpRequest;\n remove(this.uploading, target);\n\n const state = this.chunkState[index];\n\n if (state) {\n state.busy = false;\n }\n\n if (target.status < 200 || target.status >= 300) {\n this.handleError(new Error(\"Non 2xx\"));\n return;\n }\n\n this.onPartProgress(index, body?.size || 0);\n\n // NOTE This must be allowed by CORS.\n const etag = target.getResponseHeader(\"ETag\");\n if (etag === null) {\n this.handleError(\n new Error(\n \"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 )\n );\n return;\n }\n\n this.onPartComplete(index, etag);\n });\n\n xhr.addEventListener(\"error\", ev => {\n remove(this.uploading, ev.target);\n\n const state = this.chunkState[index];\n\n if (state) {\n state.busy = false;\n }\n\n const error = new Error(\"Unknown error\");\n // error.source = ev.target\n this.handleError(error);\n });\n xhr.send(body);\n }\n\n private completeUpload(): Promise {\n // Parts may not have completed uploading in sorted order, if limit > 1.\n this.parts.sort((a, b) => a.PartNumber - b.PartNumber);\n\n if (!this.uploadId || !this.key) {\n return Promise.resolve();\n }\n\n return completeMultipartUpload({\n csrfToken: this.csrfToken,\n endpoint: this.endpoint,\n key: this.key,\n uploadId: this.uploadId,\n parts: this.parts\n }).then(\n () => {\n if (this.onSuccess) {\n this.onSuccess();\n }\n },\n err => {\n this.handleError(err as Error);\n }\n );\n }\n\n private handleError(error: Error): void {\n if (this.onError) {\n this.onError(error);\n } else {\n throw error;\n }\n }\n}\n\nexport default S3Upload;\n","export const deleteUpload = async (\n url: string,\n csrfToken: string\n): Promise =>\n new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(\"DELETE\", url);\n\n xhr.onload = (): void => {\n if (xhr.status === 204) {\n resolve();\n } else {\n reject();\n }\n };\n xhr.setRequestHeader(\"Tus-Resumable\", \"1.0.0\");\n xhr.setRequestHeader(\"X-CSRFToken\", csrfToken);\n xhr.send(null);\n });\n","import BaseUpload, {\n InitialExistingFile,\n InitialFile,\n InitialPlaceholderFile,\n InitialS3File,\n InitialTusFile,\n UploadType\n} from \"./base_upload\";\nimport { deleteUpload } from \"./tus_utils\";\n\ninterface BaseUploadedFileParameters {\n name: string;\n size: number;\n type: UploadType;\n uploadIndex: number;\n}\n\nexport abstract class BaseUploadedFile extends BaseUpload {\n size: number;\n\n constructor({ name, size, type, uploadIndex }: BaseUploadedFileParameters) {\n super({ name, status: \"done\", type, uploadIndex });\n\n this.size = size;\n }\n\n public async abort(): Promise {\n return Promise.resolve();\n }\n\n public async delete(): Promise {\n return Promise.resolve();\n }\n\n public getSize(): number | undefined {\n return this.size;\n }\n}\n\nclass PlaceholderFile extends BaseUploadedFile {\n id: string;\n\n constructor(initialFile: InitialPlaceholderFile, uploadIndex: number) {\n super({\n name: initialFile.name,\n size: initialFile.size,\n type: \"placeholder\",\n uploadIndex\n });\n\n this.id = initialFile.id;\n }\n\n public getId(): string | undefined {\n return undefined;\n }\n\n public getInitialFile(): InitialPlaceholderFile {\n return {\n id: this.id,\n name: this.name,\n size: this.size,\n type: \"placeholder\"\n };\n }\n}\n\nexport class UploadedS3File extends BaseUploadedFile {\n id: string;\n key: string;\n\n constructor(initialFile: InitialS3File, uploadIndex: number) {\n super({\n name: initialFile.original_name || initialFile.name,\n size: initialFile.size,\n type: \"uploadedS3\",\n uploadIndex\n });\n\n this.id = initialFile.id;\n this.key = initialFile.name;\n }\n\n public getId(): string | undefined {\n return this.id;\n }\n\n getInitialFile(): InitialS3File {\n return {\n id: this.id,\n name: this.key,\n original_name: this.name,\n size: this.size,\n type: \"s3\"\n };\n }\n}\n\nexport class ExistingFile extends BaseUploadedFile {\n constructor(initialFile: InitialExistingFile, uploadIndex: number) {\n super({\n name: initialFile.name,\n size: initialFile.size,\n type: \"existing\",\n uploadIndex\n });\n }\n\n public getId(): string | undefined {\n return undefined;\n }\n\n public getInitialFile(): InitialExistingFile {\n return {\n name: this.name,\n size: this.size,\n type: \"existing\"\n };\n }\n}\n\ninterface UploadedTusFileParameters {\n csrfToken: string;\n initialFile: InitialTusFile;\n uploadIndex: number;\n uploadUrl: string;\n}\n\nexport class UploadedTusFile extends BaseUploadedFile {\n csrfToken: string;\n id: string;\n url: string;\n\n constructor({\n csrfToken,\n initialFile,\n uploadIndex,\n uploadUrl\n }: UploadedTusFileParameters) {\n super({\n name: initialFile.name,\n size: initialFile.size,\n type: \"uploadedTus\",\n uploadIndex\n });\n\n this.csrfToken = csrfToken;\n this.id = initialFile.id;\n this.url = `${uploadUrl}${initialFile.id}`;\n }\n\n public async delete(): Promise {\n await deleteUpload(this.url, this.csrfToken);\n }\n\n public getId(): string | undefined {\n return this.id;\n }\n\n getInitialFile(): InitialTusFile {\n return {\n id: this.id,\n name: this.name,\n size: this.size,\n type: \"tus\",\n url: \"\"\n };\n }\n}\n\ninterface UploadedFileParameters {\n csrfToken: string;\n initialFile: InitialFile;\n uploadIndex: number;\n uploadUrl: string;\n}\n\nexport const createUploadedFile = ({\n csrfToken,\n initialFile,\n uploadIndex,\n uploadUrl\n}: UploadedFileParameters): BaseUploadedFile => {\n switch (initialFile.type) {\n case \"existing\":\n return new ExistingFile(initialFile, uploadIndex);\n\n case \"placeholder\":\n return new PlaceholderFile(initialFile, uploadIndex);\n\n case \"s3\":\n return new UploadedS3File(initialFile, uploadIndex);\n\n case \"tus\":\n return new UploadedTusFile({\n csrfToken,\n initialFile,\n uploadUrl,\n uploadIndex\n });\n }\n};\n","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.5';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins,\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar DetailedError = /*#__PURE__*/function (_Error) {\n _inherits(DetailedError, _Error);\n\n var _super = _createSuper(DetailedError);\n\n function DetailedError(message) {\n var _this;\n\n var causingErr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var req = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var res = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck(this, DetailedError);\n\n _this = _super.call(this, message);\n _this.originalRequest = req;\n _this.originalResponse = res;\n _this.causingError = causingErr;\n\n if (causingErr != null) {\n message += \", caused by \".concat(causingErr.toString());\n }\n\n if (req != null) {\n var requestId = req.getHeader('X-Request-ID') || 'n/a';\n var method = req.getMethod();\n var url = req.getURL();\n var status = res ? res.getStatus() : 'n/a';\n var body = res ? res.getBody() || '' : 'n/a';\n message += \", originated from request (method: \".concat(method, \", url: \").concat(url, \", response code: \").concat(status, \", response text: \").concat(body, \", request id: \").concat(requestId, \")\");\n }\n\n _this.message = message;\n return _this;\n }\n\n return _createClass(DetailedError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport default DetailedError;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { Base64 } from 'js-base64';\nimport URL from 'url-parse';\nimport DetailedError from './error.js';\nimport { log } from './logger.js';\nimport uuid from './uuid.js';\nvar defaultOptions = {\n endpoint: null,\n uploadUrl: null,\n metadata: {},\n fingerprint: null,\n uploadSize: null,\n onProgress: null,\n onChunkComplete: null,\n onSuccess: null,\n onError: null,\n onUploadUrlAvailable: null,\n overridePatchMethod: false,\n headers: {},\n addRequestId: false,\n onBeforeRequest: null,\n onAfterResponse: null,\n onShouldRetry: null,\n chunkSize: Infinity,\n retryDelays: [0, 1000, 3000, 5000],\n parallelUploads: 1,\n parallelUploadBoundaries: null,\n storeFingerprintForResuming: true,\n removeFingerprintOnSuccess: false,\n uploadLengthDeferred: false,\n uploadDataDuringCreation: false,\n urlStorage: null,\n fileReader: null,\n httpStack: null\n};\n\nvar BaseUpload = /*#__PURE__*/function () {\n function BaseUpload(file, options) {\n _classCallCheck(this, BaseUpload);\n\n // Warn about removed options from previous versions\n if ('resume' in options) {\n console.log('tus: The `resume` option has been removed in tus-js-client v2. Please use the URL storage API instead.'); // eslint-disable-line no-console\n } // The default options will already be added from the wrapper classes.\n\n\n this.options = options; // Cast chunkSize to integer\n\n this.options.chunkSize = Number(this.options.chunkSize); // The storage module used to store URLs\n\n this._urlStorage = this.options.urlStorage; // The underlying File/Blob object\n\n this.file = file; // The URL against which the file will be uploaded\n\n this.url = null; // The underlying request object for the current PATCH request\n\n this._req = null; // The fingerpinrt for the current file (set after start())\n\n this._fingerprint = null; // The key that the URL storage returned when saving an URL with a fingerprint,\n\n this._urlStorageKey = null; // The offset used in the current PATCH request\n\n this._offset = null; // True if the current PATCH request has been aborted\n\n this._aborted = false; // The file's size in bytes\n\n this._size = null; // The Source object which will wrap around the given file and provides us\n // with a unified interface for getting its size and slice chunks from its\n // content allowing us to easily handle Files, Blobs, Buffers and Streams.\n\n this._source = null; // The current count of attempts which have been made. Zero indicates none.\n\n this._retryAttempt = 0; // The timeout's ID which is used to delay the next retry\n\n this._retryTimeout = null; // The offset of the remote upload before the latest attempt was started.\n\n this._offsetBeforeRetry = 0; // An array of BaseUpload instances which are used for uploading the different\n // parts, if the parallelUploads option is used.\n\n this._parallelUploads = null; // An array of upload URLs which are used for uploading the different\n // parts, if the parallelUploads option is used.\n\n this._parallelUploadUrls = null;\n }\n /**\n * Use the Termination extension to delete an upload from the server by sending a DELETE\n * request to the specified upload URL. This is only possible if the server supports the\n * Termination extension. If the `options.retryDelays` property is set, the method will\n * also retry if an error ocurrs.\n *\n * @param {String} url The upload's URL which will be terminated.\n * @param {object} options Optional options for influencing HTTP requests.\n * @return {Promise} The Promise will be resolved/rejected when the requests finish.\n */\n\n\n _createClass(BaseUpload, [{\n key: \"findPreviousUploads\",\n value: function findPreviousUploads() {\n var _this = this;\n\n return this.options.fingerprint(this.file, this.options).then(function (fingerprint) {\n return _this._urlStorage.findUploadsByFingerprint(fingerprint);\n });\n }\n }, {\n key: \"resumeFromPreviousUpload\",\n value: function resumeFromPreviousUpload(previousUpload) {\n this.url = previousUpload.uploadUrl || null;\n this._parallelUploadUrls = previousUpload.parallelUploadUrls || null;\n this._urlStorageKey = previousUpload.urlStorageKey;\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this2 = this;\n\n var file = this.file;\n\n if (!file) {\n this._emitError(new Error('tus: no file or stream to upload provided'));\n\n return;\n }\n\n if (!this.options.endpoint && !this.options.uploadUrl && !this.url) {\n this._emitError(new Error('tus: neither an endpoint or an upload URL is provided'));\n\n return;\n }\n\n var retryDelays = this.options.retryDelays;\n\n if (retryDelays != null && Object.prototype.toString.call(retryDelays) !== '[object Array]') {\n this._emitError(new Error('tus: the `retryDelays` option must either be an array or null'));\n\n return;\n }\n\n if (this.options.parallelUploads > 1) {\n // Test which options are incompatible with parallel uploads.\n for (var _i = 0, _arr = ['uploadUrl', 'uploadSize', 'uploadLengthDeferred']; _i < _arr.length; _i++) {\n var optionName = _arr[_i];\n\n if (this.options[optionName]) {\n this._emitError(new Error(\"tus: cannot use the \".concat(optionName, \" option when parallelUploads is enabled\")));\n\n return;\n }\n }\n }\n\n if (this.options.parallelUploadBoundaries) {\n if (this.options.parallelUploads <= 1) {\n this._emitError(new Error('tus: cannot use the `parallelUploadBoundaries` option when `parallelUploads` is disabled'));\n\n return;\n }\n\n if (this.options.parallelUploads !== this.options.parallelUploadBoundaries.length) {\n this._emitError(new Error('tus: the `parallelUploadBoundaries` must have the same length as the value of `parallelUploads`'));\n\n return;\n }\n }\n\n this.options.fingerprint(file, this.options).then(function (fingerprint) {\n if (fingerprint == null) {\n log('No fingerprint was calculated meaning that the upload cannot be stored in the URL storage.');\n } else {\n log(\"Calculated fingerprint: \".concat(fingerprint));\n }\n\n _this2._fingerprint = fingerprint;\n\n if (_this2._source) {\n return _this2._source;\n }\n\n return _this2.options.fileReader.openFile(file, _this2.options.chunkSize);\n }).then(function (source) {\n _this2._source = source; // First, we look at the uploadLengthDeferred option.\n // Next, we check if the caller has supplied a manual upload size.\n // Finally, we try to use the calculated size from the source object.\n\n if (_this2.options.uploadLengthDeferred) {\n _this2._size = null;\n } else if (_this2.options.uploadSize != null) {\n _this2._size = Number(_this2.options.uploadSize);\n\n if (Number.isNaN(_this2._size)) {\n _this2._emitError(new Error('tus: cannot convert `uploadSize` option into a number'));\n\n return;\n }\n } else {\n _this2._size = _this2._source.size;\n\n if (_this2._size == null) {\n _this2._emitError(new Error(\"tus: cannot automatically derive upload's size from input. Specify it manually using the `uploadSize` option or use the `uploadLengthDeferred` option\"));\n\n return;\n }\n } // If the upload was configured to use multiple requests or if we resume from\n // an upload which used multiple requests, we start a parallel upload.\n\n\n if (_this2.options.parallelUploads > 1 || _this2._parallelUploadUrls != null) {\n _this2._startParallelUpload();\n } else {\n _this2._startSingleUpload();\n }\n })[\"catch\"](function (err) {\n _this2._emitError(err);\n });\n }\n /**\n * Initiate the uploading procedure for a parallelized upload, where one file is split into\n * multiple request which are run in parallel.\n *\n * @api private\n */\n\n }, {\n key: \"_startParallelUpload\",\n value: function _startParallelUpload() {\n var _this$options$paralle,\n _this3 = this;\n\n var totalSize = this._size;\n var totalProgress = 0;\n this._parallelUploads = [];\n var partCount = this._parallelUploadUrls != null ? this._parallelUploadUrls.length : this.options.parallelUploads; // The input file will be split into multiple slices which are uploaded in separate\n // requests. Here we get the start and end position for the slices.\n\n var parts = (_this$options$paralle = this.options.parallelUploadBoundaries) !== null && _this$options$paralle !== void 0 ? _this$options$paralle : splitSizeIntoParts(this._source.size, partCount); // Attach URLs from previous uploads, if available.\n\n if (this._parallelUploadUrls) {\n parts.forEach(function (part, index) {\n part.uploadUrl = _this3._parallelUploadUrls[index] || null;\n });\n } // Create an empty list for storing the upload URLs\n\n\n this._parallelUploadUrls = new Array(parts.length); // Generate a promise for each slice that will be resolve if the respective\n // upload is completed.\n\n var uploads = parts.map(function (part, index) {\n var lastPartProgress = 0;\n return _this3._source.slice(part.start, part.end).then(function (_ref) {\n var value = _ref.value;\n return new Promise(function (resolve, reject) {\n // Merge with the user supplied options but overwrite some values.\n var options = _objectSpread(_objectSpread({}, _this3.options), {}, {\n // If available, the partial upload should be resumed from a previous URL.\n uploadUrl: part.uploadUrl || null,\n // We take manually care of resuming for partial uploads, so they should\n // not be stored in the URL storage.\n storeFingerprintForResuming: false,\n removeFingerprintOnSuccess: false,\n // Reset the parallelUploads option to not cause recursion.\n parallelUploads: 1,\n // Reset this option as we are not doing a parallel upload.\n parallelUploadBoundaries: null,\n metadata: {},\n // Add the header to indicate the this is a partial upload.\n headers: _objectSpread(_objectSpread({}, _this3.options.headers), {}, {\n 'Upload-Concat': 'partial'\n }),\n // Reject or resolve the promise if the upload errors or completes.\n onSuccess: resolve,\n onError: reject,\n // Based in the progress for this partial upload, calculate the progress\n // for the entire final upload.\n onProgress: function onProgress(newPartProgress) {\n totalProgress = totalProgress - lastPartProgress + newPartProgress;\n lastPartProgress = newPartProgress;\n\n _this3._emitProgress(totalProgress, totalSize);\n },\n // Wait until every partial upload has an upload URL, so we can add\n // them to the URL storage.\n onUploadUrlAvailable: function onUploadUrlAvailable() {\n _this3._parallelUploadUrls[index] = upload.url; // Test if all uploads have received an URL\n\n if (_this3._parallelUploadUrls.filter(function (u) {\n return Boolean(u);\n }).length === parts.length) {\n _this3._saveUploadInUrlStorage();\n }\n }\n });\n\n var upload = new BaseUpload(value, options);\n upload.start(); // Store the upload in an array, so we can later abort them if necessary.\n\n _this3._parallelUploads.push(upload);\n });\n });\n });\n var req; // Wait until all partial uploads are finished and we can send the POST request for\n // creating the final upload.\n\n Promise.all(uploads).then(function () {\n req = _this3._openRequest('POST', _this3.options.endpoint);\n req.setHeader('Upload-Concat', \"final;\".concat(_this3._parallelUploadUrls.join(' '))); // Add metadata if values have been added\n\n var metadata = encodeMetadata(_this3.options.metadata);\n\n if (metadata !== '') {\n req.setHeader('Upload-Metadata', metadata);\n }\n\n return _this3._sendRequest(req, null);\n }).then(function (res) {\n if (!inStatusCategory(res.getStatus(), 200)) {\n _this3._emitHttpError(req, res, 'tus: unexpected response while creating upload');\n\n return;\n }\n\n var location = res.getHeader('Location');\n\n if (location == null) {\n _this3._emitHttpError(req, res, 'tus: invalid or missing Location header');\n\n return;\n }\n\n _this3.url = resolveUrl(_this3.options.endpoint, location);\n log(\"Created upload at \".concat(_this3.url));\n\n _this3._emitSuccess();\n })[\"catch\"](function (err) {\n _this3._emitError(err);\n });\n }\n /**\n * Initiate the uploading procedure for a non-parallel upload. Here the entire file is\n * uploaded in a sequential matter.\n *\n * @api private\n */\n\n }, {\n key: \"_startSingleUpload\",\n value: function _startSingleUpload() {\n // Reset the aborted flag when the upload is started or else the\n // _performUpload will stop before sending a request if the upload has been\n // aborted previously.\n this._aborted = false; // The upload had been started previously and we should reuse this URL.\n\n if (this.url != null) {\n log(\"Resuming upload from previous URL: \".concat(this.url));\n\n this._resumeUpload();\n\n return;\n } // A URL has manually been specified, so we try to resume\n\n\n if (this.options.uploadUrl != null) {\n log(\"Resuming upload from provided URL: \".concat(this.options.uploadUrl));\n this.url = this.options.uploadUrl;\n\n this._resumeUpload();\n\n return;\n } // An upload has not started for the file yet, so we start a new one\n\n\n log('Creating a new upload');\n\n this._createUpload();\n }\n /**\n * Abort any running request and stop the current upload. After abort is called, no event\n * handler will be invoked anymore. You can use the `start` method to resume the upload\n * again.\n * If `shouldTerminate` is true, the `terminate` function will be called to remove the\n * current upload from the server.\n *\n * @param {boolean} shouldTerminate True if the upload should be deleted from the server.\n * @return {Promise} The Promise will be resolved/rejected when the requests finish.\n */\n\n }, {\n key: \"abort\",\n value: function abort(shouldTerminate) {\n var _this4 = this;\n\n // Stop any parallel partial uploads, that have been started in _startParallelUploads.\n if (this._parallelUploads != null) {\n this._parallelUploads.forEach(function (upload) {\n upload.abort(shouldTerminate);\n });\n } // Stop any current running request.\n\n\n if (this._req !== null) {\n this._req.abort(); // Note: We do not close the file source here, so the user can resume in the future.\n\n }\n\n this._aborted = true; // Stop any timeout used for initiating a retry.\n\n if (this._retryTimeout != null) {\n clearTimeout(this._retryTimeout);\n this._retryTimeout = null;\n }\n\n if (!shouldTerminate || this.url == null) {\n return Promise.resolve();\n }\n\n return BaseUpload.terminate(this.url, this.options) // Remove entry from the URL storage since the upload URL is no longer valid.\n .then(function () {\n return _this4._removeFromUrlStorage();\n });\n }\n }, {\n key: \"_emitHttpError\",\n value: function _emitHttpError(req, res, message, causingErr) {\n this._emitError(new DetailedError(message, causingErr, req, res));\n }\n }, {\n key: \"_emitError\",\n value: function _emitError(err) {\n var _this5 = this;\n\n // Do not emit errors, e.g. from aborted HTTP requests, if the upload has been stopped.\n if (this._aborted) return; // Check if we should retry, when enabled, before sending the error to the user.\n\n if (this.options.retryDelays != null) {\n // We will reset the attempt counter if\n // - we were already able to connect to the server (offset != null) and\n // - we were able to upload a small chunk of data to the server\n var shouldResetDelays = this._offset != null && this._offset > this._offsetBeforeRetry;\n\n if (shouldResetDelays) {\n this._retryAttempt = 0;\n }\n\n if (shouldRetry(err, this._retryAttempt, this.options)) {\n var delay = this.options.retryDelays[this._retryAttempt++];\n this._offsetBeforeRetry = this._offset;\n this._retryTimeout = setTimeout(function () {\n _this5.start();\n }, delay);\n return;\n }\n }\n\n if (typeof this.options.onError === 'function') {\n this.options.onError(err);\n } else {\n throw err;\n }\n }\n /**\n * Publishes notification if the upload has been successfully completed.\n *\n * @api private\n */\n\n }, {\n key: \"_emitSuccess\",\n value: function _emitSuccess() {\n if (this.options.removeFingerprintOnSuccess) {\n // Remove stored fingerprint and corresponding endpoint. This causes\n // new uploads of the same file to be treated as a different file.\n this._removeFromUrlStorage();\n }\n\n if (typeof this.options.onSuccess === 'function') {\n this.options.onSuccess();\n }\n }\n /**\n * Publishes notification when data has been sent to the server. This\n * data may not have been accepted by the server yet.\n *\n * @param {number} bytesSent Number of bytes sent to the server.\n * @param {number} bytesTotal Total number of bytes to be sent to the server.\n * @api private\n */\n\n }, {\n key: \"_emitProgress\",\n value: function _emitProgress(bytesSent, bytesTotal) {\n if (typeof this.options.onProgress === 'function') {\n this.options.onProgress(bytesSent, bytesTotal);\n }\n }\n /**\n * Publishes notification when a chunk of data has been sent to the server\n * and accepted by the server.\n * @param {number} chunkSize Size of the chunk that was accepted by the server.\n * @param {number} bytesAccepted Total number of bytes that have been\n * accepted by the server.\n * @param {number} bytesTotal Total number of bytes to be sent to the server.\n * @api private\n */\n\n }, {\n key: \"_emitChunkComplete\",\n value: function _emitChunkComplete(chunkSize, bytesAccepted, bytesTotal) {\n if (typeof this.options.onChunkComplete === 'function') {\n this.options.onChunkComplete(chunkSize, bytesAccepted, bytesTotal);\n }\n }\n /**\n * Create a new upload using the creation extension by sending a POST\n * request to the endpoint. After successful creation the file will be\n * uploaded\n *\n * @api private\n */\n\n }, {\n key: \"_createUpload\",\n value: function _createUpload() {\n var _this6 = this;\n\n if (!this.options.endpoint) {\n this._emitError(new Error('tus: unable to create upload because no endpoint is provided'));\n\n return;\n }\n\n var req = this._openRequest('POST', this.options.endpoint);\n\n if (this.options.uploadLengthDeferred) {\n req.setHeader('Upload-Defer-Length', 1);\n } else {\n req.setHeader('Upload-Length', this._size);\n } // Add metadata if values have been added\n\n\n var metadata = encodeMetadata(this.options.metadata);\n\n if (metadata !== '') {\n req.setHeader('Upload-Metadata', metadata);\n }\n\n var promise;\n\n if (this.options.uploadDataDuringCreation && !this.options.uploadLengthDeferred) {\n this._offset = 0;\n promise = this._addChunkToRequest(req);\n } else {\n promise = this._sendRequest(req, null);\n }\n\n promise.then(function (res) {\n if (!inStatusCategory(res.getStatus(), 200)) {\n _this6._emitHttpError(req, res, 'tus: unexpected response while creating upload');\n\n return;\n }\n\n var location = res.getHeader('Location');\n\n if (location == null) {\n _this6._emitHttpError(req, res, 'tus: invalid or missing Location header');\n\n return;\n }\n\n _this6.url = resolveUrl(_this6.options.endpoint, location);\n log(\"Created upload at \".concat(_this6.url));\n\n if (typeof _this6.options.onUploadUrlAvailable === 'function') {\n _this6.options.onUploadUrlAvailable();\n }\n\n if (_this6._size === 0) {\n // Nothing to upload and file was successfully created\n _this6._emitSuccess();\n\n _this6._source.close();\n\n return;\n }\n\n _this6._saveUploadInUrlStorage().then(function () {\n if (_this6.options.uploadDataDuringCreation) {\n _this6._handleUploadResponse(req, res);\n } else {\n _this6._offset = 0;\n\n _this6._performUpload();\n }\n });\n })[\"catch\"](function (err) {\n _this6._emitHttpError(req, null, 'tus: failed to create upload', err);\n });\n }\n /*\n * Try to resume an existing upload. First a HEAD request will be sent\n * to retrieve the offset. If the request fails a new upload will be\n * created. In the case of a successful response the file will be uploaded.\n *\n * @api private\n */\n\n }, {\n key: \"_resumeUpload\",\n value: function _resumeUpload() {\n var _this7 = this;\n\n var req = this._openRequest('HEAD', this.url);\n\n var promise = this._sendRequest(req, null);\n\n promise.then(function (res) {\n var status = res.getStatus();\n\n if (!inStatusCategory(status, 200)) {\n // If the upload is locked (indicated by the 423 Locked status code), we\n // emit an error instead of directly starting a new upload. This way the\n // retry logic can catch the error and will retry the upload. An upload\n // is usually locked for a short period of time and will be available\n // afterwards.\n if (status === 423) {\n _this7._emitHttpError(req, res, 'tus: upload is currently locked; retry later');\n\n return;\n }\n\n if (inStatusCategory(status, 400)) {\n // Remove stored fingerprint and corresponding endpoint,\n // on client errors since the file can not be found\n _this7._removeFromUrlStorage();\n }\n\n if (!_this7.options.endpoint) {\n // Don't attempt to create a new upload if no endpoint is provided.\n _this7._emitHttpError(req, res, 'tus: unable to resume upload (new upload cannot be created without an endpoint)');\n\n return;\n } // Try to create a new upload\n\n\n _this7.url = null;\n\n _this7._createUpload();\n\n return;\n }\n\n var offset = parseInt(res.getHeader('Upload-Offset'), 10);\n\n if (Number.isNaN(offset)) {\n _this7._emitHttpError(req, res, 'tus: invalid or missing offset value');\n\n return;\n }\n\n var length = parseInt(res.getHeader('Upload-Length'), 10);\n\n if (Number.isNaN(length) && !_this7.options.uploadLengthDeferred) {\n _this7._emitHttpError(req, res, 'tus: invalid or missing length value');\n\n return;\n }\n\n if (typeof _this7.options.onUploadUrlAvailable === 'function') {\n _this7.options.onUploadUrlAvailable();\n }\n\n _this7._saveUploadInUrlStorage().then(function () {\n // Upload has already been completed and we do not need to send additional\n // data to the server\n if (offset === length) {\n _this7._emitProgress(length, length);\n\n _this7._emitSuccess();\n\n return;\n }\n\n _this7._offset = offset;\n\n _this7._performUpload();\n });\n })[\"catch\"](function (err) {\n _this7._emitHttpError(req, null, 'tus: failed to resume upload', err);\n });\n }\n /**\n * Start uploading the file using PATCH requests. The file will be divided\n * into chunks as specified in the chunkSize option. During the upload\n * the onProgress event handler may be invoked multiple times.\n *\n * @api private\n */\n\n }, {\n key: \"_performUpload\",\n value: function _performUpload() {\n var _this8 = this;\n\n // If the upload has been aborted, we will not send the next PATCH request.\n // This is important if the abort method was called during a callback, such\n // as onChunkComplete or onProgress.\n if (this._aborted) {\n return;\n }\n\n var req; // Some browser and servers may not support the PATCH method. For those\n // cases, you can tell tus-js-client to use a POST request with the\n // X-HTTP-Method-Override header for simulating a PATCH request.\n\n if (this.options.overridePatchMethod) {\n req = this._openRequest('POST', this.url);\n req.setHeader('X-HTTP-Method-Override', 'PATCH');\n } else {\n req = this._openRequest('PATCH', this.url);\n }\n\n req.setHeader('Upload-Offset', this._offset);\n\n var promise = this._addChunkToRequest(req);\n\n promise.then(function (res) {\n if (!inStatusCategory(res.getStatus(), 200)) {\n _this8._emitHttpError(req, res, 'tus: unexpected response while uploading chunk');\n\n return;\n }\n\n _this8._handleUploadResponse(req, res);\n })[\"catch\"](function (err) {\n // Don't emit an error if the upload was aborted manually\n if (_this8._aborted) {\n return;\n }\n\n _this8._emitHttpError(req, null, \"tus: failed to upload chunk at offset \".concat(_this8._offset), err);\n });\n }\n /**\n * _addChunktoRequest reads a chunk from the source and sends it using the\n * supplied request object. It will not handle the response.\n *\n * @api private\n */\n\n }, {\n key: \"_addChunkToRequest\",\n value: function _addChunkToRequest(req) {\n var _this9 = this;\n\n var start = this._offset;\n var end = this._offset + this.options.chunkSize;\n req.setProgressHandler(function (bytesSent) {\n _this9._emitProgress(start + bytesSent, _this9._size);\n });\n req.setHeader('Content-Type', 'application/offset+octet-stream'); // The specified chunkSize may be Infinity or the calcluated end position\n // may exceed the file's size. In both cases, we limit the end position to\n // the input's total size for simpler calculations and correctness.\n\n if ((end === Infinity || end > this._size) && !this.options.uploadLengthDeferred) {\n end = this._size;\n }\n\n return this._source.slice(start, end).then(function (_ref2) {\n var value = _ref2.value,\n done = _ref2.done;\n\n // If the upload length is deferred, the upload size was not specified during\n // upload creation. So, if the file reader is done reading, we know the total\n // upload size and can tell the tus server.\n if (_this9.options.uploadLengthDeferred && done) {\n _this9._size = _this9._offset + (value && value.size ? value.size : 0);\n req.setHeader('Upload-Length', _this9._size);\n }\n\n if (value === null) {\n return _this9._sendRequest(req);\n }\n\n _this9._emitProgress(_this9._offset, _this9._size);\n\n return _this9._sendRequest(req, value);\n });\n }\n /**\n * _handleUploadResponse is used by requests that haven been sent using _addChunkToRequest\n * and already have received a response.\n *\n * @api private\n */\n\n }, {\n key: \"_handleUploadResponse\",\n value: function _handleUploadResponse(req, res) {\n var offset = parseInt(res.getHeader('Upload-Offset'), 10);\n\n if (Number.isNaN(offset)) {\n this._emitHttpError(req, res, 'tus: invalid or missing offset value');\n\n return;\n }\n\n this._emitProgress(offset, this._size);\n\n this._emitChunkComplete(offset - this._offset, offset, this._size);\n\n this._offset = offset;\n\n if (offset === this._size) {\n // Yay, finally done :)\n this._emitSuccess();\n\n this._source.close();\n\n return;\n }\n\n this._performUpload();\n }\n /**\n * Create a new HTTP request object with the given method and URL.\n *\n * @api private\n */\n\n }, {\n key: \"_openRequest\",\n value: function _openRequest(method, url) {\n var req = openRequest(method, url, this.options);\n this._req = req;\n return req;\n }\n /**\n * Remove the entry in the URL storage, if it has been saved before.\n *\n * @api private\n */\n\n }, {\n key: \"_removeFromUrlStorage\",\n value: function _removeFromUrlStorage() {\n var _this10 = this;\n\n if (!this._urlStorageKey) return;\n\n this._urlStorage.removeUpload(this._urlStorageKey)[\"catch\"](function (err) {\n _this10._emitError(err);\n });\n\n this._urlStorageKey = null;\n }\n /**\n * Add the upload URL to the URL storage, if possible.\n *\n * @api private\n */\n\n }, {\n key: \"_saveUploadInUrlStorage\",\n value: function _saveUploadInUrlStorage() {\n var _this11 = this;\n\n // We do not store the upload URL\n // - if it was disabled in the option, or\n // - if no fingerprint was calculated for the input (i.e. a stream), or\n // - if the URL is already stored (i.e. key is set alread).\n if (!this.options.storeFingerprintForResuming || !this._fingerprint || this._urlStorageKey !== null) {\n return Promise.resolve();\n }\n\n var storedUpload = {\n size: this._size,\n metadata: this.options.metadata,\n creationTime: new Date().toString()\n };\n\n if (this._parallelUploads) {\n // Save multiple URLs if the parallelUploads option is used ...\n storedUpload.parallelUploadUrls = this._parallelUploadUrls;\n } else {\n // ... otherwise we just save the one available URL.\n storedUpload.uploadUrl = this.url;\n }\n\n return this._urlStorage.addUpload(this._fingerprint, storedUpload).then(function (urlStorageKey) {\n _this11._urlStorageKey = urlStorageKey;\n });\n }\n /**\n * Send a request with the provided body.\n *\n * @api private\n */\n\n }, {\n key: \"_sendRequest\",\n value: function _sendRequest(req) {\n var body = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return sendRequest(req, body, this.options);\n }\n }], [{\n key: \"terminate\",\n value: function terminate(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var req = openRequest('DELETE', url, options);\n return sendRequest(req, null, options).then(function (res) {\n // A 204 response indicates a successfull request\n if (res.getStatus() === 204) {\n return;\n }\n\n throw new DetailedError('tus: unexpected response while terminating upload', null, req, res);\n })[\"catch\"](function (err) {\n if (!(err instanceof DetailedError)) {\n err = new DetailedError('tus: failed to terminate upload', err, req, null);\n }\n\n if (!shouldRetry(err, 0, options)) {\n throw err;\n } // Instead of keeping track of the retry attempts, we remove the first element from the delays\n // array. If the array is empty, all retry attempts are used up and we will bubble up the error.\n // We recursively call the terminate function will removing elements from the retryDelays array.\n\n\n var delay = options.retryDelays[0];\n var remainingDelays = options.retryDelays.slice(1);\n\n var newOptions = _objectSpread(_objectSpread({}, options), {}, {\n retryDelays: remainingDelays\n });\n\n return new Promise(function (resolve) {\n return setTimeout(resolve, delay);\n }).then(function () {\n return BaseUpload.terminate(url, newOptions);\n });\n });\n }\n }]);\n\n return BaseUpload;\n}();\n\nfunction encodeMetadata(metadata) {\n return Object.entries(metadata).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n value = _ref4[1];\n\n return \"\".concat(key, \" \").concat(Base64.encode(String(value)));\n }).join(',');\n}\n/**\n * Checks whether a given status is in the range of the expected category.\n * For example, only a status between 200 and 299 will satisfy the category 200.\n *\n * @api private\n */\n\n\nfunction inStatusCategory(status, category) {\n return status >= category && status < category + 100;\n}\n/**\n * Create a new HTTP request with the specified method and URL.\n * The necessary headers that are included in every request\n * will be added, including the request ID.\n *\n * @api private\n */\n\n\nfunction openRequest(method, url, options) {\n var req = options.httpStack.createRequest(method, url);\n req.setHeader('Tus-Resumable', '1.0.0');\n var headers = options.headers || {};\n Object.entries(headers).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n name = _ref6[0],\n value = _ref6[1];\n\n req.setHeader(name, value);\n });\n\n if (options.addRequestId) {\n var requestId = uuid();\n req.setHeader('X-Request-ID', requestId);\n }\n\n return req;\n}\n/**\n * Send a request with the provided body while invoking the onBeforeRequest\n * and onAfterResponse callbacks.\n *\n * @api private\n */\n\n\nfunction sendRequest(req, body, options) {\n var onBeforeRequestPromise = typeof options.onBeforeRequest === 'function' ? Promise.resolve(options.onBeforeRequest(req)) : Promise.resolve();\n return onBeforeRequestPromise.then(function () {\n return req.send(body).then(function (res) {\n var onAfterResponsePromise = typeof options.onAfterResponse === 'function' ? Promise.resolve(options.onAfterResponse(req, res)) : Promise.resolve();\n return onAfterResponsePromise.then(function () {\n return res;\n });\n });\n });\n}\n/**\n * Checks whether the browser running this code has internet access.\n * This function will always return true in the node.js environment\n *\n * @api private\n */\n\n\nfunction isOnline() {\n var online = true;\n\n if (typeof window !== 'undefined' && 'navigator' in window // eslint-disable-line no-undef\n && window.navigator.onLine === false) {\n // eslint-disable-line no-undef\n online = false;\n }\n\n return online;\n}\n/**\n * Checks whether or not it is ok to retry a request.\n * @param {Error} err the error returned from the last request\n * @param {number} retryAttempt the number of times the request has already been retried\n * @param {object} options tus Upload options\n *\n * @api private\n */\n\n\nfunction shouldRetry(err, retryAttempt, options) {\n // We only attempt a retry if\n // - retryDelays option is set\n // - we didn't exceed the maxium number of retries, yet, and\n // - this error was caused by a request or it's response and\n // - the error is server error (i.e. not a status 4xx except a 409 or 423) or\n // a onShouldRetry is specified and returns true\n // - the browser does not indicate that we are offline\n if (options.retryDelays == null || retryAttempt >= options.retryDelays.length || err.originalRequest == null) {\n return false;\n }\n\n if (options && typeof options.onShouldRetry === 'function') {\n return options.onShouldRetry(err, retryAttempt, options);\n }\n\n var status = err.originalResponse ? err.originalResponse.getStatus() : 0;\n return (!inStatusCategory(status, 400) || status === 409 || status === 423) && isOnline();\n}\n/**\n * Resolve a relative link given the origin as source. For example,\n * if a HTTP request to http://example.com/files/ returns a Location\n * header with the value /upload/abc, the resolved URL will be:\n * http://example.com/upload/abc\n */\n\n\nfunction resolveUrl(origin, link) {\n return new URL(link, origin).toString();\n}\n/**\n * Calculate the start and end positions for the parts if an upload\n * is split into multiple parallel requests.\n *\n * @param {number} totalSize The byte size of the upload, which will be split.\n * @param {number} partCount The number in how many parts the upload will be split.\n * @return {object[]}\n * @api private\n */\n\n\nfunction splitSizeIntoParts(totalSize, partCount) {\n var partSize = Math.floor(totalSize / partCount);\n var parts = [];\n\n for (var i = 0; i < partCount; i++) {\n parts.push({\n start: partSize * i,\n end: partSize * (i + 1)\n });\n }\n\n parts[partCount - 1].end = totalSize;\n return parts;\n}\n\nBaseUpload.defaultOptions = defaultOptions;\nexport default BaseUpload;","/**\n * Generate a UUID v4 based on random numbers. We intentioanlly use the less\n * secure Math.random function here since the more secure crypto.getRandomNumbers\n * is not available on all platforms.\n * This is not a problem for us since we use the UUID only for generating a\n * request ID, so we can correlate server logs to client errors.\n *\n * This function is taken from following site:\n * https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n *\n * @return {string} The generate UUID\n */\nexport default function uuid() {\n /* eslint-disable no-bitwise */\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/* eslint no-unused-vars: \"off\" */\nvar NoopUrlStorage = /*#__PURE__*/function () {\n function NoopUrlStorage() {\n _classCallCheck(this, NoopUrlStorage);\n }\n\n _createClass(NoopUrlStorage, [{\n key: \"listAllUploads\",\n value: function listAllUploads() {\n return Promise.resolve([]);\n }\n }, {\n key: \"findUploadsByFingerprint\",\n value: function findUploadsByFingerprint(fingerprint) {\n return Promise.resolve([]);\n }\n }, {\n key: \"removeUpload\",\n value: function removeUpload(urlStorageKey) {\n return Promise.resolve();\n }\n }, {\n key: \"addUpload\",\n value: function addUpload(fingerprint, upload) {\n return Promise.resolve(null);\n }\n }]);\n\n return NoopUrlStorage;\n}();\n\nexport { NoopUrlStorage as default };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar hasStorage = false;\n\ntry {\n hasStorage = 'localStorage' in window; // Attempt to store and read entries from the local storage to detect Private\n // Mode on Safari on iOS (see #49)\n // If the key was not used before, we remove it from local storage again to\n // not cause confusion where the entry came from.\n\n var key = 'tusSupport';\n var originalValue = localStorage.getItem(key);\n localStorage.setItem(key, originalValue);\n if (originalValue === null) localStorage.removeItem(key);\n} catch (e) {\n // If we try to access localStorage inside a sandboxed iframe, a SecurityError\n // is thrown. When in private mode on iOS Safari, a QuotaExceededError is\n // thrown (see #49)\n if (e.code === e.SECURITY_ERR || e.code === e.QUOTA_EXCEEDED_ERR) {\n hasStorage = false;\n } else {\n throw e;\n }\n}\n\nexport var canStoreURLs = hasStorage;\nexport var WebStorageUrlStorage = /*#__PURE__*/function () {\n function WebStorageUrlStorage() {\n _classCallCheck(this, WebStorageUrlStorage);\n }\n\n _createClass(WebStorageUrlStorage, [{\n key: \"findAllUploads\",\n value: function findAllUploads() {\n var results = this._findEntries('tus::');\n\n return Promise.resolve(results);\n }\n }, {\n key: \"findUploadsByFingerprint\",\n value: function findUploadsByFingerprint(fingerprint) {\n var results = this._findEntries(\"tus::\".concat(fingerprint, \"::\"));\n\n return Promise.resolve(results);\n }\n }, {\n key: \"removeUpload\",\n value: function removeUpload(urlStorageKey) {\n localStorage.removeItem(urlStorageKey);\n return Promise.resolve();\n }\n }, {\n key: \"addUpload\",\n value: function addUpload(fingerprint, upload) {\n var id = Math.round(Math.random() * 1e12);\n var key = \"tus::\".concat(fingerprint, \"::\").concat(id);\n localStorage.setItem(key, JSON.stringify(upload));\n return Promise.resolve(key);\n }\n }, {\n key: \"_findEntries\",\n value: function _findEntries(prefix) {\n var results = [];\n\n for (var i = 0; i < localStorage.length; i++) {\n var _key = localStorage.key(i);\n\n if (_key.indexOf(prefix) !== 0) continue;\n\n try {\n var upload = JSON.parse(localStorage.getItem(_key));\n upload.urlStorageKey = _key;\n results.push(upload);\n } catch (e) {// The JSON parse error is intentionally ignored here, so a malformed\n // entry in the storage cannot prevent an upload.\n }\n }\n\n return results;\n }\n }]);\n\n return WebStorageUrlStorage;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/* eslint-disable max-classes-per-file */\nvar XHRHttpStack = /*#__PURE__*/function () {\n function XHRHttpStack() {\n _classCallCheck(this, XHRHttpStack);\n }\n\n _createClass(XHRHttpStack, [{\n key: \"createRequest\",\n value: function createRequest(method, url) {\n return new Request(method, url);\n }\n }, {\n key: \"getName\",\n value: function getName() {\n return 'XHRHttpStack';\n }\n }]);\n\n return XHRHttpStack;\n}();\n\nexport { XHRHttpStack as default };\n\nvar Request = /*#__PURE__*/function () {\n function Request(method, url) {\n _classCallCheck(this, Request);\n\n this._xhr = new XMLHttpRequest();\n\n this._xhr.open(method, url, true);\n\n this._method = method;\n this._url = url;\n this._headers = {};\n }\n\n _createClass(Request, [{\n key: \"getMethod\",\n value: function getMethod() {\n return this._method;\n }\n }, {\n key: \"getURL\",\n value: function getURL() {\n return this._url;\n }\n }, {\n key: \"setHeader\",\n value: function setHeader(header, value) {\n this._xhr.setRequestHeader(header, value);\n\n this._headers[header] = value;\n }\n }, {\n key: \"getHeader\",\n value: function getHeader(header) {\n return this._headers[header];\n }\n }, {\n key: \"setProgressHandler\",\n value: function setProgressHandler(progressHandler) {\n // Test support for progress events before attaching an event listener\n if (!('upload' in this._xhr)) {\n return;\n }\n\n this._xhr.upload.onprogress = function (e) {\n if (!e.lengthComputable) {\n return;\n }\n\n progressHandler(e.loaded);\n };\n }\n }, {\n key: \"send\",\n value: function send() {\n var _this = this;\n\n var body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n return new Promise(function (resolve, reject) {\n _this._xhr.onload = function () {\n resolve(new Response(_this._xhr));\n };\n\n _this._xhr.onerror = function (err) {\n reject(err);\n };\n\n _this._xhr.send(body);\n });\n }\n }, {\n key: \"abort\",\n value: function abort() {\n this._xhr.abort();\n\n return Promise.resolve();\n }\n }, {\n key: \"getUnderlyingObject\",\n value: function getUnderlyingObject() {\n return this._xhr;\n }\n }]);\n\n return Request;\n}();\n\nvar Response = /*#__PURE__*/function () {\n function Response(xhr) {\n _classCallCheck(this, Response);\n\n this._xhr = xhr;\n }\n\n _createClass(Response, [{\n key: \"getStatus\",\n value: function getStatus() {\n return this._xhr.status;\n }\n }, {\n key: \"getHeader\",\n value: function getHeader(header) {\n return this._xhr.getResponseHeader(header);\n }\n }, {\n key: \"getBody\",\n value: function getBody() {\n return this._xhr.responseText;\n }\n }, {\n key: \"getUnderlyingObject\",\n value: function getUnderlyingObject() {\n return this._xhr;\n }\n }]);\n\n return Response;\n}();","var isReactNative = function isReactNative() {\n return typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative';\n};\n\nexport default isReactNative;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport isCordova from './isCordova.js';\nimport readAsByteArray from './readAsByteArray.js';\n\nvar FileSource = /*#__PURE__*/function () {\n // Make this.size a method\n function FileSource(file) {\n _classCallCheck(this, FileSource);\n\n this._file = file;\n this.size = file.size;\n }\n\n _createClass(FileSource, [{\n key: \"slice\",\n value: function slice(start, end) {\n // In Apache Cordova applications, a File must be resolved using\n // FileReader instances, see\n // https://cordova.apache.org/docs/en/8.x/reference/cordova-plugin-file/index.html#read-a-file\n if (isCordova()) {\n return readAsByteArray(this._file.slice(start, end));\n }\n\n var value = this._file.slice(start, end);\n\n return Promise.resolve({\n value: value\n });\n }\n }, {\n key: \"close\",\n value: function close() {// Nothing to do here since we don't need to release any resources.\n }\n }]);\n\n return FileSource;\n}();\n\nexport { FileSource as default };","var isCordova = function isCordova() {\n return typeof window !== 'undefined' && (typeof window.PhoneGap !== 'undefined' || typeof window.Cordova !== 'undefined' || typeof window.cordova !== 'undefined');\n};\n\nexport default isCordova;","/**\n * readAsByteArray converts a File object to a Uint8Array.\n * This function is only used on the Apache Cordova platform.\n * See https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/index.html#read-a-file\n */\nexport default function readAsByteArray(chunk) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function () {\n var value = new Uint8Array(reader.result);\n resolve({\n value: value\n });\n };\n\n reader.onerror = function (err) {\n reject(err);\n };\n\n reader.readAsArrayBuffer(chunk);\n });\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction len(blobOrArray) {\n if (blobOrArray === undefined) return 0;\n if (blobOrArray.size !== undefined) return blobOrArray.size;\n return blobOrArray.length;\n}\n/*\n Typed arrays and blobs don't have a concat method.\n This function helps StreamSource accumulate data to reach chunkSize.\n*/\n\n\nfunction concat(a, b) {\n if (a.concat) {\n // Is `a` an Array?\n return a.concat(b);\n }\n\n if (a instanceof Blob) {\n return new Blob([a, b], {\n type: a.type\n });\n }\n\n if (a.set) {\n // Is `a` a typed array?\n var c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n }\n\n throw new Error('Unknown data type');\n}\n\nvar StreamSource = /*#__PURE__*/function () {\n function StreamSource(reader) {\n _classCallCheck(this, StreamSource);\n\n this._buffer = undefined;\n this._bufferOffset = 0;\n this._reader = reader;\n this._done = false;\n }\n\n _createClass(StreamSource, [{\n key: \"slice\",\n value: function slice(start, end) {\n if (start < this._bufferOffset) {\n return Promise.reject(new Error(\"Requested data is before the reader's current offset\"));\n }\n\n return this._readUntilEnoughDataOrDone(start, end);\n }\n }, {\n key: \"_readUntilEnoughDataOrDone\",\n value: function _readUntilEnoughDataOrDone(start, end) {\n var _this = this;\n\n var hasEnoughData = end <= this._bufferOffset + len(this._buffer);\n\n if (this._done || hasEnoughData) {\n var value = this._getDataFromBuffer(start, end);\n\n var done = value == null ? this._done : false;\n return Promise.resolve({\n value: value,\n done: done\n });\n }\n\n return this._reader.read().then(function (_ref) {\n var value = _ref.value,\n done = _ref.done;\n\n if (done) {\n _this._done = true;\n } else if (_this._buffer === undefined) {\n _this._buffer = value;\n } else {\n _this._buffer = concat(_this._buffer, value);\n }\n\n return _this._readUntilEnoughDataOrDone(start, end);\n });\n }\n }, {\n key: \"_getDataFromBuffer\",\n value: function _getDataFromBuffer(start, end) {\n // Remove data from buffer before `start`.\n // Data might be reread from the buffer if an upload fails, so we can only\n // safely delete data when it comes *before* what is currently being read.\n if (start > this._bufferOffset) {\n this._buffer = this._buffer.slice(start - this._bufferOffset);\n this._bufferOffset = start;\n } // If the buffer is empty after removing old data, all data has been read.\n\n\n var hasAllDataBeenRead = len(this._buffer) === 0;\n\n if (this._done && hasAllDataBeenRead) {\n return null;\n } // We already removed data before `start`, so we just return the first\n // chunk from the buffer.\n\n\n return this._buffer.slice(0, end - start);\n }\n }, {\n key: \"close\",\n value: function close() {\n if (this._reader.cancel) {\n this._reader.cancel();\n }\n }\n }]);\n\n return StreamSource;\n}();\n\nexport { StreamSource as default };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport isReactNative from './isReactNative.js';\nimport uriToBlob from './uriToBlob.js';\nimport FileSource from './sources/FileSource.js';\nimport StreamSource from './sources/StreamSource.js';\n\nvar FileReader = /*#__PURE__*/function () {\n function FileReader() {\n _classCallCheck(this, FileReader);\n }\n\n _createClass(FileReader, [{\n key: \"openFile\",\n value: function openFile(input, chunkSize) {\n // In React Native, when user selects a file, instead of a File or Blob,\n // you usually get a file object {} with a uri property that contains\n // a local path to the file. We use XMLHttpRequest to fetch\n // the file blob, before uploading with tus.\n if (isReactNative() && input && typeof input.uri !== 'undefined') {\n return uriToBlob(input.uri).then(function (blob) {\n return new FileSource(blob);\n })[\"catch\"](function (err) {\n throw new Error(\"tus: cannot fetch `file.uri` as Blob, make sure the uri is correct and accessible. \".concat(err));\n });\n } // Since we emulate the Blob type in our tests (not all target browsers\n // support it), we cannot use `instanceof` for testing whether the input value\n // can be handled. Instead, we simply check is the slice() function and the\n // size property are available.\n\n\n if (typeof input.slice === 'function' && typeof input.size !== 'undefined') {\n return Promise.resolve(new FileSource(input));\n }\n\n if (typeof input.read === 'function') {\n chunkSize = Number(chunkSize);\n\n if (!Number.isFinite(chunkSize)) {\n return Promise.reject(new Error('cannot create source for stream without a finite value for the `chunkSize` option'));\n }\n\n return Promise.resolve(new StreamSource(input, chunkSize));\n }\n\n return Promise.reject(new Error('source object may only be an instance of File, Blob, or Reader in this environment'));\n }\n }]);\n\n return FileReader;\n}();\n\nexport { FileReader as default };","/**\n * uriToBlob resolves a URI to a Blob object. This is used for\n * React Native to retrieve a file (identified by a file://\n * URI) as a blob.\n */\nexport default function uriToBlob(uri) {\n return new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'blob';\n\n xhr.onload = function () {\n var blob = xhr.response;\n resolve(blob);\n };\n\n xhr.onerror = function (err) {\n reject(err);\n };\n\n xhr.open('GET', uri);\n xhr.send();\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport BaseUpload from '../upload.js';\nimport NoopUrlStorage from '../noopUrlStorage.js';\nimport { enableDebugLog } from '../logger.js';\nimport DetailedError from '../error.js';\nimport { canStoreURLs, WebStorageUrlStorage } from './urlStorage.js';\nimport DefaultHttpStack from './httpStack.js';\nimport FileReader from './fileReader.js';\nimport fingerprint from './fileSignature.js';\n\nvar defaultOptions = _objectSpread(_objectSpread({}, BaseUpload.defaultOptions), {}, {\n httpStack: new DefaultHttpStack(),\n fileReader: new FileReader(),\n urlStorage: canStoreURLs ? new WebStorageUrlStorage() : new NoopUrlStorage(),\n fingerprint: fingerprint\n});\n\nvar Upload = /*#__PURE__*/function (_BaseUpload) {\n _inherits(Upload, _BaseUpload);\n\n var _super = _createSuper(Upload);\n\n function Upload() {\n var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Upload);\n\n options = _objectSpread(_objectSpread({}, defaultOptions), options);\n return _super.call(this, file, options);\n }\n\n _createClass(Upload, null, [{\n key: \"terminate\",\n value: function terminate(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options = _objectSpread(_objectSpread({}, defaultOptions), options);\n return BaseUpload.terminate(url, options);\n }\n }]);\n\n return Upload;\n}(BaseUpload);\n\nvar _window = window,\n XMLHttpRequest = _window.XMLHttpRequest,\n Blob = _window.Blob;\nvar isSupported = XMLHttpRequest && Blob && typeof Blob.prototype.slice === 'function';\nexport { Upload, canStoreURLs, defaultOptions, isSupported, enableDebugLog, DefaultHttpStack, DetailedError };","import isReactNative from './isReactNative.js'; // TODO: Differenciate between input types\n\n/**\n * Generate a fingerprint for a file which will be used the store the endpoint\n *\n * @param {File} file\n * @param {Object} options\n * @param {Function} callback\n */\n\nexport default function fingerprint(file, options) {\n if (isReactNative()) {\n return Promise.resolve(reactNativeFingerprint(file, options));\n }\n\n return Promise.resolve(['tus-br', file.name, file.type, file.size, file.lastModified, options.endpoint].join('-'));\n}\n\nfunction reactNativeFingerprint(file, options) {\n var exifHash = file.exif ? hashCode(JSON.stringify(file.exif)) : 'noexif';\n return ['tus-rn', file.name || 'noname', file.size || 'nosize', exifHash, options.endpoint].join('/');\n}\n\nfunction hashCode(str) {\n /* eslint-disable no-bitwise */\n // from https://stackoverflow.com/a/8831937/151666\n var hash = 0;\n\n if (str.length === 0) {\n return hash;\n }\n\n for (var i = 0; i < str.length; i++) {\n var _char = str.charCodeAt(i);\n\n hash = (hash << 5) - hash + _char;\n hash &= hash; // Convert to 32bit integer\n }\n\n return hash;\n}","import { HttpRequest, HttpResponse, Upload } from \"tus-js-client\";\nimport BaseUpload, { InitialFile } from \"./base_upload\";\nimport { deleteUpload } from \"./tus_utils\";\n\ninterface Parameters {\n chunkSize: number;\n csrfToken: string;\n fieldName: string;\n file: File;\n formId: string;\n retryDelays: number[] | null;\n uploadIndex: number;\n uploadUrl: string;\n}\n\nexport default class TusUpload extends BaseUpload {\n public onError?: (error: Error) => void;\n public onProgress?: (bytesUploaded: number, bytesTotal: number) => void;\n public onSuccess?: () => void;\n private id: string;\n private upload: Upload;\n private csrfToken: string;\n\n constructor({\n chunkSize,\n csrfToken,\n fieldName,\n file,\n formId,\n retryDelays,\n uploadIndex,\n uploadUrl\n }: Parameters) {\n super({ name: file.name, status: \"uploading\", type: \"tus\", uploadIndex });\n\n this.csrfToken = csrfToken;\n\n this.upload = new Upload(file, {\n chunkSize,\n endpoint: uploadUrl,\n metadata: {\n fieldName: fieldName,\n filename: file.name,\n formId: formId\n },\n onAfterResponse: this.handleAfterReponse,\n onBeforeRequest: this.addCsrTokenToRequest,\n onError: this.handleError,\n onProgress: this.handleProgress,\n onSuccess: this.handleSucces,\n retryDelays: retryDelays || [0, 1000, 3000, 5000]\n });\n\n this.onError = undefined;\n this.onProgress = undefined;\n this.onSuccess = undefined;\n }\n\n public async abort(): Promise {\n await this.upload.abort(true);\n }\n\n public async delete(): Promise {\n if (!this.upload.url) {\n return Promise.resolve();\n }\n\n await deleteUpload(this.upload.url, this.csrfToken);\n }\n\n public getId(): string | undefined {\n return this.id;\n }\n\n public getSize(): number {\n return (this.upload.file as File).size;\n }\n\n public start(): void {\n this.upload.start();\n }\n\n private handleError = (error: Error) => {\n if (this.onError) {\n this.onError(error);\n } else {\n throw error;\n }\n };\n\n private handleProgress = (bytesUploaded: number, bytesTotal: number) => {\n if (this.onProgress) {\n this.onProgress(bytesUploaded, bytesTotal);\n }\n };\n\n private handleSucces = () => {\n if (this.onSuccess) {\n this.onSuccess();\n }\n };\n\n private addCsrTokenToRequest = (request: HttpRequest) => {\n request.setHeader(\"X-CSRFToken\", this.csrfToken);\n };\n\n private handleAfterReponse = (\n _request: HttpRequest,\n response: HttpResponse\n ) => {\n const resourceId = response.getHeader(\"ResourceId\");\n\n if (resourceId) {\n this.id = resourceId;\n }\n };\n\n getInitialFile(): InitialFile {\n return {\n id: this.id,\n name: this.name,\n size: this.getSize(),\n type: \"tus\",\n url: \"\"\n };\n }\n}\n","import { findInput, getMetadataFieldName, getUploadsFieldName } from \"./util\";\nimport RenderUploadFile from \"./render_upload_file\";\nimport DropArea from \"./drop_area\";\n\nimport S3Upload from \"./uploads/s3_upload\";\nimport EventEmitter from \"eventemitter3\";\nimport { createUploadedFile } from \"./uploads/uploaded_file\";\nimport TusUpload from \"./uploads/tus_upload\";\nimport BaseUpload, { InitialFile, UploadType } from \"./uploads/base_upload\";\nimport AcceptedFileTypes from \"./accepted_file_types\";\n\nexport type Translations = { [key: string]: string };\n\ninterface ClickEvent {\n fileName: string;\n fieldName: string;\n id?: string;\n type: UploadType;\n}\n\nexport interface Callbacks {\n onClick?: ({ fileName, fieldName, type }: ClickEvent) => void;\n onDelete?: (upload: BaseUpload) => void;\n onError?: (error: Error, upload: BaseUpload) => void;\n onProgress?: (\n bytesUploaded: number,\n bytesTotal: number,\n upload: BaseUpload\n ) => void;\n onSuccess?: (upload: BaseUpload) => void;\n}\n\ninterface ConstructorParams {\n callbacks: Callbacks;\n chunkSize: number;\n csrfToken: string;\n eventEmitter?: EventEmitter;\n fieldName: string;\n form: Element;\n formId: string;\n initial: InitialFile[];\n input: HTMLInputElement;\n multiple: boolean;\n parent: Element;\n prefix: string | null;\n retryDelays: number[] | null;\n s3UploadDir: string | null;\n skipRequired: boolean;\n supportDropArea: boolean;\n translations: Translations;\n uploadUrl: string;\n}\n\nclass FileField {\n acceptedFileTypes: AcceptedFileTypes;\n callbacks: Callbacks;\n chunkSize: number;\n csrfToken: string;\n eventEmitter?: EventEmitter;\n fieldName: string;\n form: Element;\n formId: string;\n multiple: boolean;\n nextUploadIndex: number;\n prefix: string | null;\n renderer: RenderUploadFile;\n retryDelays: number[] | null;\n s3UploadDir: string | null;\n supportDropArea: boolean;\n uploads: BaseUpload[];\n uploadUrl: string;\n\n constructor({\n callbacks,\n chunkSize,\n csrfToken,\n eventEmitter,\n fieldName,\n form,\n formId,\n initial,\n input,\n multiple,\n parent,\n prefix,\n retryDelays,\n s3UploadDir,\n skipRequired,\n supportDropArea,\n translations,\n uploadUrl\n }: ConstructorParams) {\n this.callbacks = callbacks;\n this.chunkSize = chunkSize;\n this.csrfToken = csrfToken;\n this.eventEmitter = eventEmitter;\n this.fieldName = fieldName;\n this.form = form;\n this.formId = formId;\n this.multiple = multiple;\n this.prefix = prefix;\n this.retryDelays = retryDelays;\n this.s3UploadDir = s3UploadDir;\n this.supportDropArea = supportDropArea && !input.disabled;\n this.uploadUrl = uploadUrl;\n this.acceptedFileTypes = new AcceptedFileTypes(input.accept);\n\n this.uploads = [];\n this.nextUploadIndex = 0;\n\n this.renderer = new RenderUploadFile({\n parent,\n input,\n skipRequired,\n translations\n });\n const filesContainer = this.renderer.container;\n\n if (supportDropArea) {\n this.initDropArea(filesContainer, input.accept);\n }\n\n if (initial) {\n this.addInitialFiles(initial);\n }\n\n this.checkDropHint();\n\n input.addEventListener(\"change\", this.onChange);\n filesContainer.addEventListener(\"click\", this.handleClick);\n }\n\n addInitialFiles(initialFiles: InitialFile[]): void {\n if (initialFiles.length === 0) {\n return;\n }\n\n const { multiple, renderer } = this;\n\n const addInitialFile = (initialFile: InitialFile): void => {\n const { size } = initialFile;\n const name =\n initialFile.type === \"s3\" && initialFile.original_name\n ? initialFile.original_name\n : initialFile.name;\n\n const element = renderer.addUploadedFile(\n name,\n this.nextUploadIndex,\n size\n );\n\n const upload = createUploadedFile({\n csrfToken: this.csrfToken,\n initialFile,\n uploadIndex: this.nextUploadIndex,\n uploadUrl: this.uploadUrl\n });\n this.uploads.push(upload);\n\n this.emitEvent(\"addUpload\", element, upload);\n };\n\n if (multiple) {\n initialFiles.forEach((file: InitialFile): void => {\n addInitialFile(file);\n this.nextUploadIndex += 1;\n });\n } else {\n const initialFile = initialFiles[0];\n\n if (initialFile) {\n addInitialFile(initialFile);\n }\n }\n }\n\n uploadFiles = async (files: File[]): Promise => {\n if (files.length === 0) {\n return;\n }\n\n if (!this.multiple) {\n for (const upload of this.uploads) {\n this.renderer.deleteFile(upload.uploadIndex);\n }\n\n this.uploads = [];\n const file = files[0];\n\n if (file) {\n await this.uploadFile(file);\n }\n } else {\n for await (const file of files) {\n await this.uploadFile(file);\n }\n }\n\n this.checkDropHint();\n };\n\n async uploadFile(file: File): Promise {\n const createUpload = (): S3Upload | TusUpload => {\n const { csrfToken, s3UploadDir } = this;\n\n if (s3UploadDir != null) {\n return new S3Upload({\n csrfToken,\n endpoint: uploadUrl,\n file,\n s3UploadDir,\n uploadIndex: newUploadIndex\n });\n } else {\n return new TusUpload({\n chunkSize: this.chunkSize,\n csrfToken: this.csrfToken,\n fieldName,\n file,\n formId,\n retryDelays: this.retryDelays,\n uploadIndex: newUploadIndex,\n uploadUrl\n });\n }\n };\n\n const { fieldName, formId, renderer, uploadUrl } = this;\n const fileName = file.name;\n const existingUpload = this.findUploadByName(fileName);\n const newUploadIndex = existingUpload\n ? existingUpload.uploadIndex\n : this.nextUploadIndex;\n\n if (!existingUpload) {\n this.nextUploadIndex += 1;\n }\n\n if (existingUpload) {\n await this.removeExistingUpload(existingUpload);\n }\n\n const upload = createUpload();\n\n upload.onError = error => this.handleError(upload, error);\n upload.onProgress = (bytesUploaded, bytesTotal) =>\n this.handleProgress(upload, bytesUploaded, bytesTotal);\n upload.onSuccess = () => this.handleSuccess(upload);\n upload.start();\n\n this.uploads.push(upload);\n\n const element = renderer.addNewUpload(fileName, newUploadIndex);\n this.emitEvent(\"addUpload\", element, upload);\n }\n\n getUploadByIndex(uploadIndex: number): BaseUpload | undefined {\n return this.uploads.find(upload => upload.uploadIndex === uploadIndex);\n }\n\n findUploadByName(fileName: string): BaseUpload | undefined {\n return this.uploads.find(upload => upload.name === fileName);\n }\n\n async removeExistingUpload(upload: BaseUpload): Promise {\n const element = this.renderer.findFileDiv(upload.uploadIndex);\n\n if (element) {\n this.emitEvent(\"removeUpload\", element, upload);\n }\n\n if (upload.status === \"uploading\") {\n this.renderer.disableCancel(upload.uploadIndex);\n await upload.abort();\n } else if (upload.status === \"done\") {\n this.renderer.disableDelete(upload.uploadIndex);\n\n try {\n await upload.delete();\n } catch {\n this.renderer.setDeleteFailed(upload.uploadIndex);\n return;\n }\n }\n\n this.removeUploadFromList(upload);\n this.updatePlaceholderInput();\n }\n\n onChange = (e: Event): void => {\n const files = (e.target as HTMLInputElement).files || ([] as File[]);\n const acceptedFiles: File[] = [];\n const invalidFiles: File[] = [];\n\n for (const file of files) {\n if (this.acceptedFileTypes.isAccepted(file.name)) {\n acceptedFiles.push(file);\n } else {\n invalidFiles.push(file);\n }\n }\n\n if (invalidFiles) {\n this.handleInvalidFiles([...invalidFiles]);\n }\n\n if (acceptedFiles) {\n void this.uploadFiles([...acceptedFiles]);\n }\n\n this.renderer.clearInput();\n };\n\n handleInvalidFiles = (files: File[]): void => {\n this.renderer.setErrorInvalidFiles(files);\n };\n\n handleClick = (e: Event): void => {\n const target = e.target as HTMLElement;\n\n const getUpload = (): BaseUpload | undefined => {\n const dataIndex = target.getAttribute(\"data-index\");\n\n if (!dataIndex) {\n return undefined;\n }\n\n const uploadIndex = parseInt(dataIndex, 10);\n return this.getUploadByIndex(uploadIndex);\n };\n\n if (\n target.classList.contains(\"dff-delete\") &&\n !target.classList.contains(\"dff-disabled\")\n ) {\n e.preventDefault();\n\n const upload = getUpload();\n\n if (upload) {\n void this.removeExistingUpload(upload);\n }\n } else if (target.classList.contains(\"dff-cancel\")) {\n e.preventDefault();\n\n const upload = getUpload();\n\n if (upload) {\n void this.handleCancel(upload);\n }\n } else if (target.classList.contains(\"dff-filename\")) {\n e.preventDefault();\n\n const upload = getUpload();\n\n if (upload?.status === \"done\" && this.callbacks.onClick) {\n this.callbacks.onClick({\n fileName: upload.name,\n fieldName: this.fieldName,\n id: upload.getId(),\n type: upload.type\n });\n }\n }\n };\n\n handleProgress = (\n upload: BaseUpload,\n bytesUploaded: number,\n bytesTotal: number\n ): void => {\n const percentage = ((bytesUploaded / bytesTotal) * 100).toFixed(2);\n\n this.renderer.updateProgress(upload.uploadIndex, percentage);\n\n const { onProgress } = this.callbacks;\n\n if (onProgress) {\n if (upload instanceof TusUpload) {\n onProgress(bytesUploaded, bytesTotal, upload);\n }\n }\n };\n\n handleError = (upload: BaseUpload, error: Error): void => {\n this.renderer.setError(upload.uploadIndex);\n upload.status = \"error\";\n\n const { onError } = this.callbacks;\n\n if (onError) {\n if (upload instanceof TusUpload) {\n onError(error, upload);\n }\n }\n };\n\n handleSuccess = (upload: BaseUpload): void => {\n const { renderer } = this;\n\n this.updatePlaceholderInput();\n\n renderer.clearInput();\n renderer.setSuccess(upload.uploadIndex, upload.getSize());\n upload.status = \"done\";\n\n const { onSuccess } = this.callbacks;\n\n const element = this.renderer.findFileDiv(\n upload.uploadIndex\n ) as HTMLElement;\n this.emitEvent(\"uploadComplete\", element, upload);\n\n if (onSuccess && upload.type === \"tus\") {\n onSuccess(upload);\n }\n };\n\n removeUploadFromList(upload: BaseUpload): void {\n this.renderer.deleteFile(upload.uploadIndex);\n\n const index = this.uploads.indexOf(upload);\n\n if (index >= 0) {\n this.uploads.splice(index, 1);\n }\n\n this.checkDropHint();\n\n const { onDelete } = this.callbacks;\n\n if (onDelete) {\n onDelete(upload);\n }\n }\n\n async handleCancel(upload: BaseUpload): Promise {\n this.renderer.disableCancel(upload.uploadIndex);\n await upload.abort();\n this.removeUploadFromList(upload);\n }\n\n initDropArea(container: Element, inputAccept: string): void {\n new DropArea({\n container,\n inputAccept,\n onUploadFiles: this.uploadFiles,\n renderer: this.renderer\n });\n }\n\n checkDropHint(): void {\n if (!this.supportDropArea) {\n return;\n }\n\n const nonEmptyUploads = this.uploads.filter(e => e);\n\n if (nonEmptyUploads.length === 0) {\n this.renderer.renderDropHint();\n } else {\n this.renderer.removeDropHint();\n }\n }\n\n updatePlaceholderInput(): void {\n const input = findInput(\n this.form,\n getUploadsFieldName(this.fieldName, this.prefix),\n this.prefix\n );\n if (!input) {\n return;\n }\n\n const placeholdersInfo: InitialFile[] = this.uploads.map(upload =>\n upload.getInitialFile()\n );\n\n input.value = JSON.stringify(placeholdersInfo);\n }\n\n getMetaDataField(): HTMLElement | null {\n return findInput(\n this.form,\n getMetadataFieldName(this.fieldName, this.prefix),\n this.prefix\n );\n }\n\n emitEvent(eventName: string, element: HTMLElement, upload: BaseUpload): void {\n if (this.eventEmitter) {\n this.eventEmitter.emit(eventName, {\n element,\n fieldName: this.fieldName,\n fileName: upload.name,\n metaDataField: this.getMetaDataField(),\n upload\n });\n }\n }\n}\n\nexport default FileField;\n","import EventEmitter from \"eventemitter3\";\nimport FileField, { Callbacks, Translations } from \"./file_field\";\nimport { InitialFile } from \"./uploads/base_upload\";\nimport {\n findInput,\n getInputValueForFormAndPrefix,\n getUploadsFieldName\n} from \"./util\";\n\nexport interface Options {\n callbacks?: Callbacks;\n chunkSize?: number;\n eventEmitter?: EventEmitter;\n prefix?: string;\n retryDelays?: number[];\n skipRequired?: boolean;\n supportDropArea?: boolean;\n}\n\nconst initUploadFields = (form: Element, options: Options = {}): void => {\n const matchesPrefix = (fieldName: string): boolean => {\n if (!(options && options.prefix)) {\n return true;\n }\n\n return fieldName.startsWith(`${options.prefix}-`);\n };\n\n const getPrefix = (): string | null =>\n options && options.prefix ? options.prefix : null;\n\n const getInputValue = (fieldName: string): string | undefined =>\n getInputValueForFormAndPrefix(form, fieldName, getPrefix());\n\n const getInitialFiles = (fieldName: string): InitialFile[] => {\n const data = getInputValue(getUploadsFieldName(fieldName, getPrefix()));\n\n if (!data) {\n return [];\n }\n\n return JSON.parse(data) as InitialFile[];\n };\n\n const uploadUrl = getInputValue(\"upload_url\");\n const formId = getInputValue(\"form_id\");\n const s3UploadDir = getInputValue(\"s3_upload_dir\");\n const skipRequired = options.skipRequired || false;\n const prefix = getPrefix();\n const csrfToken = findInput(form, \"csrfmiddlewaretoken\", null)?.value;\n\n if (!csrfToken) {\n throw Error(\"Csrf token not found\");\n }\n\n if (!formId || !uploadUrl) {\n return;\n }\n\n form.querySelectorAll(\".dff-uploader\").forEach(uploaderDiv => {\n const container = uploaderDiv.querySelector(\n \".dff-container\"\n ) as HTMLElement;\n\n if (!container) {\n return;\n }\n\n const input = container.querySelector(\n \"input[type=file]\"\n ) as HTMLInputElement;\n\n if (!(input && matchesPrefix(input.name))) {\n return;\n }\n\n const fieldName = input.name;\n const { multiple } = input;\n const initial = getInitialFiles(fieldName);\n const dataTranslations = container.getAttribute(\"data-translations\");\n const translations: Translations = dataTranslations\n ? (JSON.parse(dataTranslations) as Translations)\n : {};\n const supportDropArea = !(options.supportDropArea === false);\n\n new FileField({\n callbacks: options.callbacks || {},\n chunkSize: options.chunkSize || 2621440,\n csrfToken,\n eventEmitter: options.eventEmitter,\n fieldName,\n form,\n formId,\n s3UploadDir: s3UploadDir || null,\n initial,\n input,\n multiple,\n parent: container,\n prefix,\n retryDelays: options.retryDelays || null,\n skipRequired,\n supportDropArea,\n translations,\n uploadUrl\n });\n });\n};\n\nexport default initUploadFields;\n","import autoInitFileForms from \"./auto_init_file_forms\";\nimport initFormSet from \"./init_form_set\";\nimport initUploadFields from \"./init_upload_fields\";\n\ndeclare const window: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nwindow.autoInitFileForms = autoInitFileForms; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\nwindow.initFormSet = initFormSet; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\nwindow.initUploadFields = initUploadFields; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\n","import initUploadFields, { Options } from \"./init_upload_fields\";\nimport { getInputNameWithPrefix, getInputValueForFormAndPrefix } from \"./util\";\n\nconst initFormSet = (form: Element, optionsParam: Options | string): void => {\n let options: Options;\n\n if (typeof optionsParam === \"string\") {\n options = { prefix: optionsParam };\n } else {\n options = optionsParam;\n }\n\n const prefix = options.prefix || \"form\";\n\n const totalFormsValue = getInputValueForFormAndPrefix(\n form,\n \"TOTAL_FORMS\",\n prefix\n );\n\n if (!totalFormsValue) {\n return;\n }\n\n const formCount = parseInt(totalFormsValue, 10);\n\n for (let i = 0; i < formCount; i += 1) {\n const subFormPrefix = getInputNameWithPrefix(`${i}`, null);\n initUploadFields(form, {\n ...options,\n prefix: `${prefix}-${subFormPrefix}`\n });\n }\n};\n\nexport default initFormSet;\n"],"names":["findForm","element","parent","parentElement","tagName","_typeof","obj","Symbol","iterator","constructor","prototype","_toPropertyKey","arg","key","input","hint","prim","toPrimitive","undefined","res","call","TypeError","String","Number","_defineProperty","value","toPropertyKey","Object","defineProperty","enumerable","configurable","writable","getInputNameWithPrefix","fieldName","prefix","getInputNameWithoutPrefix","slice","length","findInput","form","inputNameWithPrefix","querySelector","getUploadsFieldName","getInputValueForFormAndPrefix","matchHtmlRegExp","escapeHtml_1","string","escape","str","match","exec","html","index","lastIndex","charCodeAt","substring","RenderUploadFile","_ref","skipRequired","translations","this","div","document","createElement","className","appendChild","container","createFilesContainer","errors","createErrorContainer","required","addNewUpload","filename","uploadIndex","addFile","progressSpan","innerSpan","cancelLink","innerHTML","Cancel","setAttribute","href","addUploadedFile","filesize","setSuccess","clearInput","deleteFile","findFileDiv","remove","disableCancel","cancelSpan","findCancelSpan","classList","add","disableDelete","deleteLink","findDeleteLink","removeDropHint","dropHint","renderDropHint","setDeleteFailed","setErrorMessage","enableDelete","setError","el","removeProgress","removeCancel","setErrorInvalidFiles","files","errorsMessages","file","msg","innerText","name","replaceChildren","size","fileSizeInfo","formatBytes","bytes","decimals","dm","i","Math","floor","log","parseFloat","toFixed","Delete","updateProgress","percentage","innerProgressSpan","style","width","nameSpan","message","originalMessageSpan","span","Mime","_types","create","_extensions","arguments","define","bind","getType","getExtension","Mime$1","typeMap","force","type","extensions","map","t","toLowerCase","ext","Error","substr","path","last","replace","hasPath","test","RegExp","$1","check","it","global","globalThis","window","self","Function","fails","error","descriptors","require$$0","get","functionBindNative","hasOwnProperty","NATIVE_BIND","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","apply","documentAll","all","documentAll_1","IS_HTMLDDA","isCallable","argument","isNullOrUndefined","$TypeError","requireObjectCoercible","$Object","toObject","hasOwnProperty_1","hasOwn","DESCRIPTORS","require$$1","getDescriptor","getOwnPropertyDescriptor","EXISTS","functionName","PROPER","CONFIGURABLE","defineGlobalProperty","SHARED","sharedStore","store","require$$2","functionToString","toString","inspectSource","version","WeakMap","weakMapBasicDetection","isObject","ie8DomDefine","a","v8PrototypeDefineBug","$String","anObject","functionCall","objectIsPrototypeOf","isPrototypeOf","userAgent","navigator","process","Deno","versions","v8","split","V8_VERSION","symbolConstructorDetection","getOwnPropertySymbols","symbol","sham","useSymbolAsUid","getBuiltIn","namespace","method","isSymbol","require$$3","$Symbol","tryToString","aCallable","sharedModule","push","mode","copyright","license","source","uncurryThis","id","postfix","random","uid","shared","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","getMethod","V","P","func","ordinaryToPrimitive","pref","val","valueOf","TO_PRIMITIVE","wellKnownSymbol","result","exoticToPrim","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","objectDefineProperty","f","O","Attributes","current","set","has","definePropertyModule","createPropertyDescriptor","bitmap","createNonEnumerableProperty","object","keys","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","state","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","CONFIGURABLE_FUNCTION_NAME","require$$6","enforceInternalState","require$$7","getInternalState","stringSlice","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","exports","options","getter","setter","arity","defineBuiltInAccessor","target","descriptor","regExpFlags","that","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","RegExpPrototype","FORCED","INDICES_SUPPORT","calls","expected","addGetter","chr","pairs","basename","start","end","matchedSlash","WIN_SLASH","WIN_NO_SLASH","DOT_LITERAL","SLASH_LITERAL","QMARK","END_ANCHOR","START_ANCHOR","DOTS_SLASH","POSIX_CHARS","PLUS_LITERAL","QMARK_LITERAL","ONE_CHAR","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","WINDOWS_CHARS","constants","MAX_LENGTH","alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_GRAVE_ACCENT","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","SEP","extglobChars","chars","open","close","globChars","Array","isArray","hasRegexChars","isRegexChar","escapeRegex","toPosixSlashes","removeBackslashes","isWindows","windows","escapeLast","char","lastIdx","idx","lastIndexOf","removePrefix","output","startsWith","wrapOutput","contains","negated","utils","isPathSeparator","code","depth","token","isPrefix","isGlobstar","Infinity","scan_1","scan","opts","scanToEnd","parts","slashes","tokens","prev","isBrace","isBracket","isGlob","isExtglob","braceEscaped","backslashes","negatedExtglob","finished","braces","eos","advance","next","noext","nonegate","noparen","base","glob","unescape","maxDepth","prevIndex","n","POSIX_REGEX_SOURCE","expandRange","args","sort","ex","v","syntaxError","parse","max","maxLength","min","len","SyntaxError","bos","prepend","capture","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","dot","nodot","qmarkNoDot","star","bash","noextglob","consumed","backtrack","brackets","parens","quotes","extglobs","stack","peek","remaining","consume","num","append","negate","count","increment","decrement","pop","tok","extglob","inner","extglobOpen","conditions","extglobClose","rest","extglobStar","includes","expression","fastpaths","m","esc","first","repeat","posix","pre","indexOf","keepQuotes","strictBrackets","nobracket","prevValue","literalBrackets","escaped","nobrace","outputIndex","tokensIndex","brace","dots","arr","range","unshift","comma","out","toks","regex","noglobstar","prior","before","isStart","afterStar","after","strictSlashes","suffix","slashDot","picomatch","returnState","fns","arrayMatcher","isMatch","isState","compileRe","makeRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","matcher","returnObject","onIgnore","picomatch$2","format","matchBase","Boolean","patterns","pattern","p","toRegex","returnOutput","parsed","flags","nocase","err","debug","AcceptedFileTypes","inputAccept","mimeTypes","mimeType","trim","filter","forEach","fileType","parseInputAccept","isAccepted","fileName","isMimeTypeAccepted","mime","isExtensionAccepted","getEntriesFromDirectory","async","Promise","resolve","reject","directoryEntry","createReader","readEntries","getFileFromFileEntry","fileEntry","getFilesFromFileSystemEntries","entry","entries","isFile","isDirectory","entriesFromDirectory","DropArea","onUploadFiles","renderer","e","dragEvent","preventDefault","stopPropagation","dataTransfer","items","item","webkitGetAsEntry","getFilesFromDataTransfer","acceptedFiles","invalidFiles","acceptedFileTypes","console","uploadFiles","addEventListener","onDrop","BaseUpload$1","status","urlJoin","strArray","resultArray","shift","component","normalize","splice","S3Upload","BaseUpload","csrfToken","endpoint","s3UploadDir","super","uploadId","createdPromise","chunks","chunkState","uploading","onError","onProgress","onSuccess","initChunks","catch","xhr","abort","encodeURIComponent","uploadIdEnc","headers","Headers","url","urljoin","fetch","then","response","json","abortMultipartUpload","getId","getInitialFile","original_name","getSize","createUpload","desiredChunkSize","ceil","minChunkSize","chunkSize","uploaded","busy","done","_ref3","accept","body","JSON","stringify","contentType","data","createMultipartUpload","uploadParts","handleError","need","every","completeUpload","candidates","uploadPart","_ref4","number","prepareUploadPart","_ref2","uploadPartBytes","onPartProgress","sent","totalUploaded","reduce","c","onPartComplete","etag","part","PartNumber","ETag","XMLHttpRequest","responseType","upload","ev","lengthComputable","loaded","getResponseHeader","send","b","completeMultipartUpload","deleteUpload","onload","setRequestHeader","BaseUploadedFile","PlaceholderFile","initialFile","UploadedS3File","ExistingFile","UploadedTusFile","uploadUrl","_hasbtoa","btoa","_hasBuffer","Buffer","_TE","TextDecoder","TextEncoder","b64chs","_fromCC","tab","fromCharCode","_mkUriSafe","Uint8Array","from","src","m0","btoaPolyfill","bin","u32","c0","c1","c2","asc","pad","_btoa","_fromUint8Array","u8a","strs","l","subarray","cb_utob","cc","re_utob","utob","u","_encode","s","encode","urlsafe","gBase64","decode","decodeURIComponent","querystringify$1","isNaN","query","parser","port","protocol","qs","controlOrWhitespace","CRHTLF","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","hash","lolcation","loc","location","finaldestination","Url","pathname","scheme","extractProtocol","forwardSlashes","otherSlashes","slashesCount","relative","extracted","instruction","instructions","charAt","concat","up","host","hostname","username","password","auth","origin","ins","_defineProperties","props","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","Reflect","construct","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_wrapNativeSuper","Class","_cache","Map","Wrapper","_construct","_setPrototypeOf","Parent","instance","Proxy","o","setPrototypeOf","__proto__","getPrototypeOf","DetailedError","_Error","subClass","superClass","_inherits","Constructor","protoProps","staticProps","_super","_this","causingErr","req","_classCallCheck","originalRequest","originalResponse","causingError","requestId","getHeader","getURL","getStatus","getBody","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","defaultOptions","fingerprint","uploadSize","onChunkComplete","onUploadUrlAvailable","overridePatchMethod","addRequestId","onBeforeRequest","onAfterResponse","onShouldRetry","retryDelays","parallelUploads","parallelUploadBoundaries","storeFingerprintForResuming","removeFingerprintOnSuccess","uploadLengthDeferred","uploadDataDuringCreation","urlStorage","fileReader","httpStack","_urlStorage","_req","_fingerprint","_urlStorageKey","_offset","_aborted","_size","_source","_retryAttempt","_retryTimeout","_offsetBeforeRetry","_parallelUploads","_parallelUploadUrls","findUploadsByFingerprint","previousUpload","parallelUploadUrls","urlStorageKey","_this2","optionName","_emitError","openFile","_startParallelUpload","_startSingleUpload","_this$options$paralle","_this3","totalSize","totalProgress","partCount","partSize","splitSizeIntoParts","uploads","lastPartProgress","newPartProgress","_emitProgress","_saveUploadInUrlStorage","_openRequest","setHeader","encodeMetadata","_sendRequest","inStatusCategory","resolveUrl","_emitSuccess","_emitHttpError","_resumeUpload","_createUpload","shouldTerminate","_this4","clearTimeout","terminate","_removeFromUrlStorage","_this5","shouldRetry","delay","setTimeout","bytesSent","bytesTotal","bytesAccepted","_this6","promise","_addChunkToRequest","_handleUploadResponse","_performUpload","_this7","offset","parseInt","_this8","_this9","setProgressHandler","_emitChunkComplete","openRequest","_this10","removeUpload","_this11","storedUpload","creationTime","Date","addUpload","sendRequest","remainingDelays","newOptions","Base64","category","createRequest","_ref5","_ref6","r","retryAttempt","online","onLine","link","URL","NoopUrlStorage","hasStorage","originalValue","localStorage","getItem","setItem","removeItem","SECURITY_ERR","QUOTA_EXCEEDED_ERR","canStoreURLs","WebStorageUrlStorage","results","_findEntries","round","_key","_createClass","XHRHttpStack","Request","_xhr","_method","_url","_headers","header","progressHandler","onprogress","Response","onerror","responseText","isReactNative","product","FileSource","_file","PhoneGap","Cordova","cordova","chunk","reader","FileReader","readAsArrayBuffer","blobOrArray","StreamSource","_buffer","_bufferOffset","_reader","_done","_readUntilEnoughDataOrDone","hasEnoughData","_getDataFromBuffer","read","Blob","hasAllDataBeenRead","cancel","uri","blob","isFinite","DefaultHttpStack","exifHash","exif","hashCode","reactNativeFingerprint","lastModified","Upload","_BaseUpload","TusUpload","formId","bytesUploaded","request","_request","resourceId","handleAfterReponse","addCsrTokenToRequest","handleProgress","handleSucces","FileField","callbacks","eventEmitter","initial","multiple","supportDropArea","uploadFile","checkDropHint","handleInvalidFiles","getUpload","dataIndex","getAttribute","getUploadByIndex","removeExistingUpload","handleCancel","onClick","updatePlaceholderInput","emitEvent","disabled","nextUploadIndex","filesContainer","initDropArea","addInitialFiles","onChange","handleClick","initialFiles","addInitialFile","createUploadedFile","existingUpload","findUploadByName","newUploadIndex","handleSuccess","find","delete","removeUploadFromList","onDelete","placeholdersInfo","getMetaDataField","getMetadataFieldName","eventName","emit","metaDataField","initUploadFields","getPrefix","getInputValue","querySelectorAll","uploaderDiv","matchesPrefix","getInitialFiles","dataTranslations","autoInitFileForms","values","Set","initFormSet","optionsParam","totalFormsValue","formCount","subFormPrefix"],"mappings":"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","x_google_ignoreList":[1,2,3,4,6,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,68,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91]} \ No newline at end of file +{"version":3,"file":"file_form.min.js","sources":["../../../frontend/src/auto_init_file_forms.ts","../../../frontend/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../frontend/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../frontend/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../frontend/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../frontend/src/util.ts","../../../frontend/node_modules/escape-html/index.js","../../../frontend/src/render_upload_file.ts","../../../frontend/node_modules/mime/Mime.js","../../../frontend/node_modules/mime/lite.js","../../../frontend/node_modules/mime/types/standard.js","../../../frontend/node_modules/core-js/internals/global.js","../../../frontend/node_modules/core-js/internals/fails.js","../../../frontend/node_modules/core-js/internals/descriptors.js","../../../frontend/node_modules/core-js/internals/function-bind-native.js","../../../frontend/node_modules/core-js/internals/function-uncurry-this.js","../../../frontend/node_modules/core-js/internals/document-all.js","../../../frontend/node_modules/core-js/internals/is-callable.js","../../../frontend/node_modules/core-js/internals/is-null-or-undefined.js","../../../frontend/node_modules/core-js/internals/require-object-coercible.js","../../../frontend/node_modules/core-js/internals/to-object.js","../../../frontend/node_modules/core-js/internals/has-own-property.js","../../../frontend/node_modules/core-js/internals/function-name.js","../../../frontend/node_modules/core-js/internals/define-global-property.js","../../../frontend/node_modules/core-js/internals/shared-store.js","../../../frontend/node_modules/core-js/internals/inspect-source.js","../../../frontend/node_modules/core-js/internals/engine-v8-version.js","../../../frontend/node_modules/core-js/internals/weak-map-basic-detection.js","../../../frontend/node_modules/core-js/internals/is-object.js","../../../frontend/node_modules/core-js/internals/document-create-element.js","../../../frontend/node_modules/core-js/internals/ie8-dom-define.js","../../../frontend/node_modules/core-js/internals/v8-prototype-define-bug.js","../../../frontend/node_modules/core-js/internals/an-object.js","../../../frontend/node_modules/core-js/internals/function-call.js","../../../frontend/node_modules/core-js/internals/get-built-in.js","../../../frontend/node_modules/core-js/internals/object-is-prototype-of.js","../../../frontend/node_modules/core-js/internals/engine-user-agent.js","../../../frontend/node_modules/core-js/internals/symbol-constructor-detection.js","../../../frontend/node_modules/core-js/internals/use-symbol-as-uid.js","../../../frontend/node_modules/core-js/internals/is-symbol.js","../../../frontend/node_modules/core-js/internals/try-to-string.js","../../../frontend/node_modules/core-js/internals/a-callable.js","../../../frontend/node_modules/core-js/internals/get-method.js","../../../frontend/node_modules/core-js/internals/ordinary-to-primitive.js","../../../frontend/node_modules/core-js/internals/shared.js","../../../frontend/node_modules/core-js/internals/uid.js","../../../frontend/node_modules/core-js/internals/well-known-symbol.js","../../../frontend/node_modules/core-js/internals/to-primitive.js","../../../frontend/node_modules/core-js/internals/to-property-key.js","../../../frontend/node_modules/core-js/internals/object-define-property.js","../../../frontend/node_modules/core-js/internals/create-property-descriptor.js","../../../frontend/node_modules/core-js/internals/internal-state.js","../../../frontend/node_modules/core-js/internals/create-non-enumerable-property.js","../../../frontend/node_modules/core-js/internals/shared-key.js","../../../frontend/node_modules/core-js/internals/hidden-keys.js","../../../frontend/node_modules/core-js/internals/make-built-in.js","../../../frontend/node_modules/core-js/internals/define-built-in-accessor.js","../../../frontend/node_modules/core-js/internals/regexp-flags.js","../../../frontend/node_modules/core-js/modules/es.regexp.flags.js","../../../frontend/node_modules/picomatch/lib/path.js","../../../frontend/node_modules/picomatch/lib/constants.js","../../../frontend/node_modules/picomatch/lib/utils.js","../../../frontend/node_modules/picomatch/lib/scan.js","../../../frontend/node_modules/picomatch/lib/parse.js","../../../frontend/node_modules/picomatch/lib/picomatch.js","../../../frontend/src/accepted_file_types.ts","../../../frontend/src/drop_area.ts","../../../frontend/src/uploads/base_upload.ts","../../../frontend/node_modules/url-join/lib/url-join.js","../../../frontend/src/uploads/s3_utils.ts","../../../frontend/src/uploads/s3_upload.ts","../../../frontend/src/uploads/tus_utils.ts","../../../frontend/src/uploads/uploaded_file.ts","../../../frontend/node_modules/js-base64/base64.mjs","../../../frontend/node_modules/requires-port/index.js","../../../frontend/node_modules/querystringify/index.js","../../../frontend/node_modules/url-parse/index.js","../../../frontend/node_modules/tus-js-client/lib.esm/error.js","../../../frontend/node_modules/tus-js-client/lib.esm/upload.js","../../../frontend/node_modules/tus-js-client/lib.esm/uuid.js","../../../frontend/node_modules/tus-js-client/lib.esm/noopUrlStorage.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/urlStorage.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/httpStack.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/isReactNative.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/sources/FileSource.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/sources/isCordova.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/sources/readAsByteArray.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/sources/StreamSource.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/fileReader.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/uriToBlob.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/index.js","../../../frontend/node_modules/tus-js-client/lib.esm/browser/fileSignature.js","../../../frontend/src/uploads/tus_upload.ts","../../../frontend/src/file_field.ts","../../../frontend/src/init_upload_fields.ts","../../../frontend/src/file_form.ts","../../../frontend/src/init_form_set.ts"],"sourcesContent":["const findForm = (element: Element): HTMLElement | null => {\n const parent = element.parentElement;\n\n if (!parent) {\n return null;\n }\n\n if (parent.tagName === \"FORM\") {\n return parent;\n }\n\n return findForm(parent);\n};\n\nconst unique = (values: unknown[]): unknown[] =>\n Array.from(new Set(values).values());\n\ndeclare const window: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nconst autoInitFileForms = (): void => {\n const initUploadFields = window.initUploadFields as () => void; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\n\n const forms = unique(\n Array.from(document.querySelectorAll(\".dff-uploader\")).map(findForm)\n );\n forms.forEach(initUploadFields);\n};\n\nexport default autoInitFileForms;\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export const formatBytes = (bytes: number, decimals: number): string => {\n if (bytes === 0) {\n return \"0 Bytes\";\n }\n\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals || 2;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const n = parseFloat((bytes / k ** i).toFixed(dm));\n const size = sizes[i];\n\n return `${n} ${size}`;\n};\n\nexport const getInputNameWithPrefix = (\n fieldName: string,\n prefix: string | null\n): string => (prefix ? `${prefix}-${fieldName}` : fieldName);\n\nconst getInputNameWithoutPrefix = (\n fieldName: string,\n prefix: string | null\n): string => (prefix ? fieldName.slice(prefix.length + 1) : fieldName);\n\nexport const findInput = (\n form: Element,\n fieldName: string,\n prefix: string | null\n): HTMLInputElement | null => {\n const inputNameWithPrefix = getInputNameWithPrefix(fieldName, prefix);\n const input = form.querySelector(`[name=\"${inputNameWithPrefix}\"]`);\n\n if (!input) {\n return null;\n }\n\n return input as HTMLInputElement;\n};\n\nexport const getUploadsFieldName = (\n fieldName: string,\n prefix: string | null\n): string => `${getInputNameWithoutPrefix(fieldName, prefix)}-uploads`;\n\nexport const getInputValueForFormAndPrefix = (\n form: Element,\n fieldName: string,\n prefix: string | null\n): string | undefined => findInput(form, fieldName, prefix)?.value;\n\nexport const getMetadataFieldName = (\n fieldName: string,\n prefix: string | null\n): string => `${getInputNameWithoutPrefix(fieldName, prefix)}-metadata`;\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import escape from \"escape-html\";\nimport { formatBytes } from \"./util\";\n\nclass RenderUploadFile {\n container: Element;\n input: HTMLInputElement;\n translations: { [key: string]: string };\n errors: Element;\n\n constructor({\n parent,\n input,\n skipRequired,\n translations\n }: {\n parent: Element;\n input: HTMLInputElement;\n skipRequired: boolean;\n translations: { [key: string]: string };\n }) {\n this.container = this.createFilesContainer(parent);\n this.errors = this.createErrorContainer(parent);\n this.input = input;\n this.translations = translations;\n\n if (skipRequired) {\n this.input.required = false;\n }\n }\n\n public addNewUpload(filename: string, uploadIndex: number): HTMLElement {\n const div = this.addFile(filename, uploadIndex);\n\n const progressSpan = document.createElement(\"span\");\n progressSpan.className = \"dff-progress\";\n\n const innerSpan = document.createElement(\"span\");\n innerSpan.className = \"dff-progress-inner\";\n\n progressSpan.appendChild(innerSpan);\n div.appendChild(progressSpan);\n\n const cancelLink = document.createElement(\"a\");\n cancelLink.className = \"dff-cancel\";\n cancelLink.innerHTML = this.translations.Cancel || \"\";\n cancelLink.setAttribute(\"data-index\", `${uploadIndex}`);\n cancelLink.href = \"#\";\n div.appendChild(cancelLink);\n\n return div;\n }\n\n public addUploadedFile(\n filename: string,\n uploadIndex: number,\n filesize?: number\n ): HTMLElement {\n const element = this.addFile(filename, uploadIndex);\n this.setSuccess(uploadIndex, filesize);\n return element;\n }\n\n public clearInput(): void {\n const { input } = this;\n\n input.value = \"\";\n }\n\n public deleteFile(index: number): void {\n const div = this.findFileDiv(index);\n\n if (div) {\n div.remove();\n }\n }\n\n public disableCancel(index: number): void {\n const cancelSpan = this.findCancelSpan(index);\n\n if (cancelSpan) {\n cancelSpan.classList.add(\"dff-disabled\");\n }\n }\n\n public disableDelete(index: number): void {\n const deleteLink = this.findDeleteLink(index);\n\n if (deleteLink) {\n deleteLink.classList.add(\"dff-disabled\");\n }\n }\n\n public findFileDiv(index: number): HTMLElement | null {\n return this.container.querySelector(`.dff-file-id-${index}`);\n }\n\n public removeDropHint(): void {\n const dropHint = this.container.querySelector(\".dff-drop-hint\");\n\n if (dropHint) {\n dropHint.remove();\n }\n }\n\n public renderDropHint(): void {\n if (this.container.querySelector(\".dff-drop-hint\")) {\n return;\n }\n\n const dropHint = document.createElement(\"div\");\n dropHint.className = \"dff-drop-hint\";\n dropHint.innerHTML = this.translations[\"Drop your files here\"] || \"\";\n\n this.container.appendChild(dropHint);\n }\n\n public setDeleteFailed(index: number): void {\n this.setErrorMessage(index, this.translations[\"Delete failed\"] || \"\");\n\n this.enableDelete(index);\n }\n\n public setError(index: number): void {\n this.setErrorMessage(index, this.translations[\"Upload failed\"] || \"\");\n\n const el = this.findFileDiv(index);\n if (el) {\n el.classList.add(\"dff-upload-fail\");\n }\n\n this.removeProgress(index);\n this.removeCancel(index);\n }\n\n public setErrorInvalidFiles(files: File[]): void {\n const errorsMessages = document.createElement(\"ul\");\n\n for (const file of files) {\n const msg = document.createElement(\"li\");\n msg.innerText = `${file.name}: ${this.translations[\"Invalid file type\"]}`;\n msg.className = \"dff-error\";\n errorsMessages.appendChild(msg);\n }\n\n this.errors.replaceChildren(errorsMessages);\n this.clearInput();\n }\n\n public setSuccess(index: number, size?: number): void {\n const { translations } = this;\n\n const el = this.findFileDiv(index);\n if (el) {\n el.classList.add(\"dff-upload-success\");\n\n if (size != null) {\n const fileSizeInfo = document.createElement(\"span\");\n fileSizeInfo.innerHTML = formatBytes(size, 2);\n fileSizeInfo.className = \"dff-filesize\";\n\n el.appendChild(fileSizeInfo);\n }\n\n const deleteLink = document.createElement(\"a\");\n deleteLink.innerHTML = translations.Delete || \"\";\n deleteLink.className = \"dff-delete\";\n deleteLink.setAttribute(\"data-index\", `${index}`);\n deleteLink.href = \"#\";\n\n el.appendChild(deleteLink);\n }\n\n this.removeProgress(index);\n this.removeCancel(index);\n }\n\n public updateProgress(index: number, percentage: string): void {\n const el = this.container.querySelector(`.dff-file-id-${index}`);\n if (el) {\n const innerProgressSpan = el.querySelector(\".dff-progress-inner\");\n\n if (innerProgressSpan) {\n (innerProgressSpan as HTMLElement).style.width = `${percentage}%`;\n }\n }\n }\n\n private createErrorContainer = (parent: Element): Element => {\n const div = document.createElement(\"div\");\n div.className = \"dff-invalid-files\";\n parent.appendChild(div);\n return div;\n };\n\n private createFilesContainer = (parent: Element): Element => {\n const div = document.createElement(\"div\");\n div.className = \"dff-files\";\n parent.appendChild(div);\n\n return div;\n };\n\n private addFile(filename: string, uploadIndex: number): HTMLElement {\n const div = document.createElement(\"div\");\n div.className = `dff-file dff-file-id-${uploadIndex}`;\n\n const nameSpan = document.createElement(\"span\");\n nameSpan.innerHTML = escape(filename);\n nameSpan.className = \"dff-filename\";\n nameSpan.setAttribute(\"data-index\", `${uploadIndex}`);\n\n div.appendChild(nameSpan);\n this.container.appendChild(div);\n\n this.input.required = false;\n return div;\n }\n\n private removeProgress(index: number): void {\n const el = this.findFileDiv(index);\n\n if (el) {\n const progressSpan = el.querySelector(\".dff-progress\");\n\n if (progressSpan) {\n progressSpan.remove();\n }\n }\n }\n\n private removeCancel(index: number): void {\n const cancelSpan = this.findCancelSpan(index);\n\n if (cancelSpan) {\n cancelSpan.remove();\n }\n }\n\n private findCancelSpan(index: number): HTMLElement | null {\n const el = this.findFileDiv(index);\n\n if (!el) {\n return null;\n }\n\n return el.querySelector(\".dff-cancel\");\n }\n\n private enableDelete(index: number): void {\n const deleteLink = this.findDeleteLink(index);\n\n if (deleteLink) {\n deleteLink.classList.remove(\"dff-disabled\");\n }\n }\n\n private findDeleteLink(index: number): HTMLElement | null {\n const div = this.findFileDiv(index);\n if (!div) {\n return div;\n }\n\n return div.querySelector(\".dff-delete\");\n }\n\n private setErrorMessage(index: number, message: string): void {\n const el = this.findFileDiv(index);\n if (!el) {\n return;\n }\n\n const originalMessageSpan = el.querySelector(\".dff-error\");\n if (originalMessageSpan) {\n originalMessageSpan.remove();\n }\n\n const span = document.createElement(\"span\");\n span.classList.add(\"dff-error\");\n span.innerHTML = message;\n\n el.appendChild(span);\n }\n}\n\nexport default RenderUploadFile;\n","'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n","'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'));\n","module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.31.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","'use strict';\n\nconst basename = path => {\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) {\n return '';\n }\n\n return path.slice(start, end);\n};\n\nmodule.exports = { basename };\n","'use strict';\n\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: '/',\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32 = false) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return false;\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n\n const PLATFORM_CHARS = constants.globChars();\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars();\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('./path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","import mime from \"mime/lite\";\nimport picomatch from \"picomatch\";\n\nconst parseInputAccept = (inputAccept: string): [string[], string[]] => {\n const extensions: string[] = [];\n const mimeTypes: string[] = [];\n\n inputAccept\n .split(\",\")\n .map(mimeType => mimeType.trim())\n .filter(Boolean)\n .forEach(fileType => {\n if (fileType.startsWith(\".\")) {\n extensions.push(`*${fileType}`);\n } else {\n mimeTypes.push(fileType);\n }\n });\n\n return [extensions, mimeTypes];\n};\n\nclass AcceptedFileTypes {\n private extensions: string[];\n private mimeTypes: string[];\n\n constructor(inputAccept: string) {\n const [extensions, mimeTypes] = parseInputAccept(inputAccept);\n\n this.extensions = extensions;\n this.mimeTypes = mimeTypes;\n }\n\n public isAccepted(fileName: string): boolean {\n if (this.extensions.length === 0 && this.mimeTypes.length === 0) {\n return true;\n }\n return (\n this.isMimeTypeAccepted(mime.getType(fileName)) ||\n this.isExtensionAccepted(fileName)\n );\n }\n\n private isMimeTypeAccepted(mimeType: string | null): boolean {\n if (!mimeType || this.mimeTypes.length === 0) {\n return false;\n }\n\n return picomatch.isMatch(mimeType, this.mimeTypes);\n }\n\n private isExtensionAccepted(fileName: string): boolean {\n if (this.extensions.length === 0) {\n return false;\n }\n\n return picomatch.isMatch(fileName, this.extensions);\n }\n}\n\nexport default AcceptedFileTypes;\n","import AcceptedFileTypes from \"./accepted_file_types\";\nimport RenderUploadFile from \"./render_upload_file\";\n\nconst getEntriesFromDirectory = async (\n directoryEntry: FileSystemDirectoryEntry\n): Promise =>\n new Promise((resolve, reject) =>\n directoryEntry.createReader().readEntries(resolve, reject)\n );\n\nconst getFileFromFileEntry = async (\n fileEntry: FileSystemFileEntry\n): Promise =>\n new Promise((resolve, reject) => fileEntry.file(resolve, reject));\n\nconst getFilesFromFileSystemEntries = async (\n entries: FileSystemEntry[]\n): Promise => {\n const result = [];\n\n for await (const entry of entries) {\n if (entry.isFile) {\n const file = await getFileFromFileEntry(entry as FileSystemFileEntry);\n result.push(file);\n } else if (entry.isDirectory) {\n const entriesFromDirectory = await getEntriesFromDirectory(\n entry as FileSystemDirectoryEntry\n );\n const files = await getFilesFromFileSystemEntries(entriesFromDirectory);\n files.forEach(file => result.push(file));\n }\n }\n\n return result;\n};\n\nconst getFilesFromDataTransfer = async (\n dataTransfer: DataTransfer\n): Promise => {\n if (dataTransfer.items) {\n const entries = [...dataTransfer.items].map(\n item => item.webkitGetAsEntry() as FileSystemEntry\n );\n\n const files = await getFilesFromFileSystemEntries(entries);\n return files;\n } else {\n // backwards compatibility\n return [...dataTransfer.files];\n }\n};\n\nclass DropArea {\n acceptedFileTypes: AcceptedFileTypes;\n container: Element;\n onUploadFiles: (files: File[]) => Promise;\n renderer: RenderUploadFile;\n\n constructor({\n container,\n inputAccept,\n onUploadFiles,\n renderer\n }: {\n container: Element;\n inputAccept: string;\n onUploadFiles: (files: File[]) => Promise;\n renderer: RenderUploadFile;\n }) {\n this.container = container;\n this.onUploadFiles = onUploadFiles;\n this.acceptedFileTypes = new AcceptedFileTypes(inputAccept);\n this.renderer = renderer;\n\n container.addEventListener(\"dragenter\", () => {\n container.classList.add(\"dff-dropping\");\n });\n container.addEventListener(\"dragleave\", () => {\n container.classList.remove(\"dff-dropping\");\n });\n container.addEventListener(\"dragover\", e => {\n container.classList.add(\"dff-dropping\");\n e.preventDefault();\n });\n container.addEventListener(\"drop\", this.onDrop);\n }\n\n onDrop = (e: Event): void => {\n const dragEvent = e as DragEvent;\n this.container.classList.remove(\"dff-dropping\");\n dragEvent.preventDefault();\n dragEvent.stopPropagation();\n\n const uploadFiles = async (): Promise => {\n try {\n if (dragEvent.dataTransfer) {\n const files = await getFilesFromDataTransfer(dragEvent.dataTransfer);\n const acceptedFiles: File[] = [];\n const invalidFiles: File[] = [];\n\n for (const file of files) {\n if (this.acceptedFileTypes.isAccepted(file.name)) {\n acceptedFiles.push(file);\n } else {\n invalidFiles.push(file);\n }\n }\n\n this.renderer.setErrorInvalidFiles(invalidFiles);\n void this.onUploadFiles(acceptedFiles);\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n void uploadFiles();\n };\n}\n\nexport default DropArea;\n","type UploadStatus = \"done\" | \"error\" | \"uploading\";\nexport type UploadType =\n | \"existing\"\n | \"placeholder\"\n | \"s3\"\n | \"tus\"\n | \"uploadedS3\"\n | \"uploadedTus\";\n\nexport interface InitialExistingFile {\n name: string;\n size: number;\n type: \"existing\";\n}\n\nexport interface InitialPlaceholderFile {\n id: string;\n name: string;\n size: number;\n type: \"placeholder\";\n}\n\nexport interface InitialS3File {\n id: string;\n name: string;\n original_name: string;\n size: number;\n type: \"s3\";\n}\n\nexport interface InitialTusFile {\n id: string;\n name: string;\n size: number;\n type: \"tus\";\n url: string;\n}\n\nexport type InitialFile =\n | InitialExistingFile\n | InitialPlaceholderFile\n | InitialS3File\n | InitialTusFile;\n\ninterface UploadParameters {\n name: string;\n status: UploadStatus;\n type: UploadType;\n uploadIndex: number;\n}\n\nabstract class BaseUpload {\n name: string;\n status: UploadStatus;\n type: UploadType;\n uploadIndex: number;\n\n constructor({ name, status, type, uploadIndex }: UploadParameters) {\n this.name = name;\n this.status = status;\n this.type = type;\n this.uploadIndex = uploadIndex;\n }\n\n public async abort(): Promise {\n //\n }\n public async delete(): Promise {\n //\n }\n\n public abstract getId(): string | undefined;\n public abstract getInitialFile(): InitialFile;\n public abstract getSize(): number | undefined;\n}\n\nexport default BaseUpload;\n","function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n}\n\nexport default function urlJoin() {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n}\n","import urljoin from \"url-join\";\n\nexport interface LocationInfo {\n location: string;\n}\n\nexport interface MultipartUpload {\n key: string;\n uploadId: string;\n endpoint: string;\n}\n\nexport interface Part {\n ETag: string;\n PartNumber: number;\n}\n\nexport interface UrlInfo {\n url: string;\n}\n\nexport const MB = 1024 * 1024;\n\ninterface AbortMultipartUploadParameters {\n csrfToken: string;\n endpoint: string;\n key: string;\n uploadId: string;\n}\n\nexport const abortMultipartUpload = ({\n csrfToken,\n key,\n uploadId,\n endpoint\n}: AbortMultipartUploadParameters): Promise => {\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n const headers = new Headers({\n \"X-CSRFToken\": csrfToken\n });\n const url = urljoin(endpoint, uploadIdEnc, `?key=${filename}`);\n return fetch(url, {\n method: \"delete\",\n headers: headers\n }).then(response => {\n return response.json();\n });\n};\n\ninterface CompleteMultipartUploadParameters {\n csrfToken: string;\n endpoint: string;\n key: string;\n parts: Part[];\n uploadId: string;\n}\n\nexport const completeMultipartUpload = ({\n csrfToken,\n key,\n uploadId,\n parts,\n endpoint\n}: CompleteMultipartUploadParameters): Promise => {\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n const headers = new Headers({\n \"X-CSRFToken\": csrfToken\n });\n const url = urljoin(endpoint, uploadIdEnc, \"complete\", `?key=${filename}`);\n return fetch(url, {\n method: \"post\",\n headers: headers,\n body: JSON.stringify({\n parts: parts\n })\n })\n .then(response => {\n return response.json();\n })\n .then(data => {\n return data as LocationInfo;\n });\n};\n\ninterface CreateMultipartUploadParameters {\n csrfToken: string;\n endpoint: string;\n file: File;\n s3UploadDir: string;\n}\n\nexport const createMultipartUpload = ({\n csrfToken,\n endpoint,\n file,\n s3UploadDir\n}: CreateMultipartUploadParameters): Promise => {\n const headers = new Headers({\n accept: \"application/json\",\n \"content-type\": \"application/json\",\n \"X-CSRFToken\": csrfToken\n });\n return fetch(endpoint, {\n method: \"post\",\n headers: headers,\n body: JSON.stringify({\n filename: file.name,\n contentType: file.type,\n s3UploadDir: s3UploadDir\n })\n })\n .then(response => {\n return response.json();\n })\n .then(data => {\n return data as MultipartUpload;\n });\n};\n\nexport const getChunkSize = (file: File): number =>\n Math.ceil(file.size / 10000);\n\ninterface PrepareUploadPartParameters {\n csrfToken: string;\n endpoint: string;\n key: string;\n number: number;\n uploadId: string;\n}\n\nexport const prepareUploadPart = ({\n csrfToken,\n endpoint,\n key,\n number,\n uploadId\n}: PrepareUploadPartParameters): Promise => {\n const filename = encodeURIComponent(key);\n const headers = new Headers({ \"X-CSRFToken\": csrfToken });\n const url = urljoin(endpoint, uploadId, `${number}`, `?key=${filename}`);\n return fetch(url, {\n method: \"get\",\n headers: headers\n })\n .then(response => {\n return response.json();\n })\n .then(data => {\n return data as UrlInfo;\n });\n};\n\nexport const remove = (arr: unknown[], el: unknown): void => {\n const i = arr.indexOf(el);\n if (i !== -1) {\n arr.splice(i, 1);\n }\n};\n","// The following code is adapted from https://github.com/transloadit/uppy/blob/master/packages/%40uppy/aws-s3-multipart/src/MultipartUploader.js\n// which is released under a MIT License (https://github.com/transloadit/uppy/blob/master/LICENSE)\n\nimport BaseUpload, { InitialFile } from \"./base_upload\";\nimport {\n abortMultipartUpload,\n completeMultipartUpload,\n createMultipartUpload,\n getChunkSize,\n MB,\n MultipartUpload,\n Part,\n prepareUploadPart,\n remove,\n UrlInfo\n} from \"./s3_utils\";\n\ninterface ChunkState {\n busy: boolean;\n done: boolean;\n etag?: string;\n uploaded: number;\n}\n\ninterface S3UploadParameters {\n csrfToken: string;\n endpoint: string;\n file: File;\n s3UploadDir: string;\n uploadIndex: number;\n}\n\nclass S3Upload extends BaseUpload {\n public onError?: (error: Error) => void;\n public onProgress?: (bytesUploaded: number, bytesTotal: number) => void;\n public onSuccess?: () => void;\n\n private chunkState: ChunkState[];\n private chunks: Blob[];\n private createdPromise: Promise;\n private csrfToken: string;\n private endpoint: string;\n private file: File;\n private key: string | null;\n private parts: Part[];\n private s3UploadDir: string;\n private uploadId: string | null;\n private uploading: XMLHttpRequest[];\n\n constructor({\n csrfToken,\n endpoint,\n file,\n s3UploadDir,\n uploadIndex\n }: S3UploadParameters) {\n super({ name: file.name, status: \"uploading\", type: \"s3\", uploadIndex });\n\n this.csrfToken = csrfToken;\n this.endpoint = endpoint;\n this.file = file;\n this.s3UploadDir = s3UploadDir;\n\n this.key = null;\n this.uploadId = null;\n this.parts = [];\n\n // Do `this.createdPromise.then(OP)` to execute an operation `OP` _only_ if the\n // upload was created already. That also ensures that the sequencing is right\n // (so the `OP` definitely happens if the upload is created).\n //\n // This mostly exists to make `abortUpload` work well: only sending the abort request if\n // the upload was already created, and if the createMultipartUpload request is still in flight,\n // aborting it immediately after it finishes.\n this.createdPromise = Promise.reject(); // eslint-disable-line prefer-promise-reject-errors\n this.chunks = [];\n this.chunkState = [];\n this.uploading = [];\n this.onError = undefined;\n this.onProgress = undefined;\n this.onSuccess = undefined;\n\n this.initChunks();\n\n this.createdPromise.catch(() => ({})); // silence uncaught rejection warning\n }\n\n public async abort(): Promise {\n this.uploading.slice().forEach(xhr => {\n xhr.abort();\n });\n this.uploading = [];\n\n await this.createdPromise;\n\n if (this.key && this.uploadId) {\n await abortMultipartUpload({\n csrfToken: this.csrfToken,\n endpoint: this.endpoint,\n key: this.key,\n uploadId: this.uploadId\n });\n }\n }\n\n public async delete(): Promise {\n return Promise.resolve();\n }\n\n public getId(): string | undefined {\n return this.uploadId || undefined;\n }\n\n public getInitialFile(): InitialFile {\n return {\n id: this.uploadId || \"\",\n name: this.key || \"\",\n size: this.file.size,\n original_name: this.file.name,\n type: \"s3\"\n };\n }\n\n public getSize(): number {\n return this.file.size;\n }\n\n public start(): void {\n void this.createUpload();\n }\n\n private initChunks(): void {\n const chunks: Blob[] = [];\n const desiredChunkSize = getChunkSize(this.file);\n // at least 5MB per request, at most 10k requests\n const minChunkSize = Math.max(5 * MB, Math.ceil(this.file.size / 10000));\n const chunkSize = Math.max(desiredChunkSize, minChunkSize);\n\n for (let i = 0; i < this.file.size; i += chunkSize) {\n const end = Math.min(this.file.size, i + chunkSize);\n chunks.push(this.file.slice(i, end));\n }\n\n this.chunks = chunks;\n this.chunkState = chunks.map(() => ({\n uploaded: 0,\n busy: false,\n done: false\n }));\n }\n\n private createUpload(): Promise {\n this.createdPromise = createMultipartUpload({\n csrfToken: this.csrfToken,\n endpoint: this.endpoint,\n file: this.file,\n s3UploadDir: this.s3UploadDir\n });\n return this.createdPromise\n .then((result: MultipartUpload) => {\n const valid =\n typeof result === \"object\" &&\n result &&\n typeof result.uploadId === \"string\" &&\n typeof result.key === \"string\";\n if (!valid) {\n throw new TypeError(\n \"AwsS3/Multipart: Got incorrect result from `createMultipartUpload()`, expected an object `{ uploadId, key }`.\"\n );\n }\n\n this.key = result.key;\n this.uploadId = result.uploadId;\n\n this.uploadParts();\n })\n .catch((err: Error) => {\n this.handleError(err);\n });\n }\n\n private uploadParts(): void {\n const need = 1 - this.uploading.length;\n if (need === 0) {\n return;\n }\n\n // All parts are uploaded.\n if (this.chunkState.every(state => state.done)) {\n void this.completeUpload();\n return;\n }\n\n const candidates = [];\n for (let i = 0; i < this.chunkState.length; i++) {\n const state = this.chunkState[i];\n\n if (!state || state.done || state.busy) {\n continue;\n }\n\n candidates.push(i);\n if (candidates.length >= need) {\n break;\n }\n }\n\n candidates.forEach(index => {\n void this.uploadPart(index);\n });\n }\n\n private uploadPart(index: number): Promise {\n const state = this.chunkState[index];\n\n if (state) {\n state.busy = true;\n }\n\n if (!this.key || !this.uploadId) {\n return Promise.resolve();\n }\n\n return prepareUploadPart({\n csrfToken: this.csrfToken,\n endpoint: this.endpoint,\n key: this.key,\n number: index + 1,\n uploadId: this.uploadId\n })\n .then(result => {\n const valid =\n typeof result === \"object\" &&\n result &&\n typeof result.url === \"string\";\n if (!valid) {\n throw new TypeError(\n \"AwsS3/Multipart: Got incorrect result from `prepareUploadPart()`, expected an object `{ url }`.\"\n );\n }\n return result;\n })\n .then(\n ({ url }: UrlInfo) => {\n this.uploadPartBytes(index, url);\n },\n err => {\n this.handleError(err as Error);\n }\n );\n }\n\n private onPartProgress(index: number, sent: number): void {\n const state = this.chunkState[index];\n\n if (state) {\n state.uploaded = sent;\n }\n\n if (this.onProgress) {\n const totalUploaded = this.chunkState.reduce((n, c) => n + c.uploaded, 0);\n this.onProgress(totalUploaded, this.file.size);\n }\n }\n\n private onPartComplete(index: number, etag: string): void {\n const state = this.chunkState[index];\n\n if (state) {\n state.etag = etag;\n state.done = true;\n }\n\n const part = {\n PartNumber: index + 1,\n ETag: etag\n };\n this.parts.push(part);\n\n this.uploadParts();\n }\n\n private uploadPartBytes(index: number, url: string): void {\n const body = this.chunks[index];\n const xhr = new XMLHttpRequest();\n xhr.open(\"PUT\", url, true);\n xhr.responseType = \"text\";\n\n this.uploading.push(xhr);\n\n xhr.upload.addEventListener(\"progress\", ev => {\n if (!ev.lengthComputable) {\n return;\n }\n\n this.onPartProgress(index, ev.loaded);\n });\n\n xhr.addEventListener(\"abort\", ev => {\n remove(this.uploading, ev.target);\n\n const state = this.chunkState[index];\n\n if (state) {\n state.busy = false;\n }\n });\n\n xhr.addEventListener(\"load\", ev => {\n const target = ev.target as XMLHttpRequest;\n remove(this.uploading, target);\n\n const state = this.chunkState[index];\n\n if (state) {\n state.busy = false;\n }\n\n if (target.status < 200 || target.status >= 300) {\n this.handleError(new Error(\"Non 2xx\"));\n return;\n }\n\n this.onPartProgress(index, body?.size || 0);\n\n // NOTE This must be allowed by CORS.\n const etag = target.getResponseHeader(\"ETag\");\n if (etag === null) {\n this.handleError(\n new Error(\n \"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 )\n );\n return;\n }\n\n this.onPartComplete(index, etag);\n });\n\n xhr.addEventListener(\"error\", ev => {\n remove(this.uploading, ev.target);\n\n const state = this.chunkState[index];\n\n if (state) {\n state.busy = false;\n }\n\n const error = new Error(\"Unknown error\");\n // error.source = ev.target\n this.handleError(error);\n });\n xhr.send(body);\n }\n\n private completeUpload(): Promise {\n // Parts may not have completed uploading in sorted order, if limit > 1.\n this.parts.sort((a, b) => a.PartNumber - b.PartNumber);\n\n if (!this.uploadId || !this.key) {\n return Promise.resolve();\n }\n\n return completeMultipartUpload({\n csrfToken: this.csrfToken,\n endpoint: this.endpoint,\n key: this.key,\n uploadId: this.uploadId,\n parts: this.parts\n }).then(\n () => {\n if (this.onSuccess) {\n this.onSuccess();\n }\n },\n err => {\n this.handleError(err as Error);\n }\n );\n }\n\n private handleError(error: Error): void {\n if (this.onError) {\n this.onError(error);\n } else {\n throw error;\n }\n }\n}\n\nexport default S3Upload;\n","export const deleteUpload = async (\n url: string,\n csrfToken: string\n): Promise =>\n new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(\"DELETE\", url);\n\n xhr.onload = (): void => {\n if (xhr.status === 204) {\n resolve();\n } else {\n reject();\n }\n };\n xhr.setRequestHeader(\"Tus-Resumable\", \"1.0.0\");\n xhr.setRequestHeader(\"X-CSRFToken\", csrfToken);\n xhr.send(null);\n });\n","import BaseUpload, {\n InitialExistingFile,\n InitialFile,\n InitialPlaceholderFile,\n InitialS3File,\n InitialTusFile,\n UploadType\n} from \"./base_upload\";\nimport { deleteUpload } from \"./tus_utils\";\n\ninterface BaseUploadedFileParameters {\n name: string;\n size: number;\n type: UploadType;\n uploadIndex: number;\n}\n\nexport abstract class BaseUploadedFile extends BaseUpload {\n size: number;\n\n constructor({ name, size, type, uploadIndex }: BaseUploadedFileParameters) {\n super({ name, status: \"done\", type, uploadIndex });\n\n this.size = size;\n }\n\n public async abort(): Promise {\n return Promise.resolve();\n }\n\n public async delete(): Promise {\n return Promise.resolve();\n }\n\n public getSize(): number | undefined {\n return this.size;\n }\n}\n\nclass PlaceholderFile extends BaseUploadedFile {\n id: string;\n\n constructor(initialFile: InitialPlaceholderFile, uploadIndex: number) {\n super({\n name: initialFile.name,\n size: initialFile.size,\n type: \"placeholder\",\n uploadIndex\n });\n\n this.id = initialFile.id;\n }\n\n public getId(): string | undefined {\n return undefined;\n }\n\n public getInitialFile(): InitialPlaceholderFile {\n return {\n id: this.id,\n name: this.name,\n size: this.size,\n type: \"placeholder\"\n };\n }\n}\n\nexport class UploadedS3File extends BaseUploadedFile {\n id: string;\n key: string;\n\n constructor(initialFile: InitialS3File, uploadIndex: number) {\n super({\n name: initialFile.original_name || initialFile.name,\n size: initialFile.size,\n type: \"uploadedS3\",\n uploadIndex\n });\n\n this.id = initialFile.id;\n this.key = initialFile.name;\n }\n\n public getId(): string | undefined {\n return this.id;\n }\n\n getInitialFile(): InitialS3File {\n return {\n id: this.id,\n name: this.key,\n original_name: this.name,\n size: this.size,\n type: \"s3\"\n };\n }\n}\n\nexport class ExistingFile extends BaseUploadedFile {\n constructor(initialFile: InitialExistingFile, uploadIndex: number) {\n super({\n name: initialFile.name,\n size: initialFile.size,\n type: \"existing\",\n uploadIndex\n });\n }\n\n public getId(): string | undefined {\n return undefined;\n }\n\n public getInitialFile(): InitialExistingFile {\n return {\n name: this.name,\n size: this.size,\n type: \"existing\"\n };\n }\n}\n\ninterface UploadedTusFileParameters {\n csrfToken: string;\n initialFile: InitialTusFile;\n uploadIndex: number;\n uploadUrl: string;\n}\n\nexport class UploadedTusFile extends BaseUploadedFile {\n csrfToken: string;\n id: string;\n url: string;\n\n constructor({\n csrfToken,\n initialFile,\n uploadIndex,\n uploadUrl\n }: UploadedTusFileParameters) {\n super({\n name: initialFile.name,\n size: initialFile.size,\n type: \"uploadedTus\",\n uploadIndex\n });\n\n this.csrfToken = csrfToken;\n this.id = initialFile.id;\n this.url = `${uploadUrl}${initialFile.id}`;\n }\n\n public async delete(): Promise {\n await deleteUpload(this.url, this.csrfToken);\n }\n\n public getId(): string | undefined {\n return this.id;\n }\n\n getInitialFile(): InitialTusFile {\n return {\n id: this.id,\n name: this.name,\n size: this.size,\n type: \"tus\",\n url: \"\"\n };\n }\n}\n\ninterface UploadedFileParameters {\n csrfToken: string;\n initialFile: InitialFile;\n uploadIndex: number;\n uploadUrl: string;\n}\n\nexport const createUploadedFile = ({\n csrfToken,\n initialFile,\n uploadIndex,\n uploadUrl\n}: UploadedFileParameters): BaseUploadedFile => {\n switch (initialFile.type) {\n case \"existing\":\n return new ExistingFile(initialFile, uploadIndex);\n\n case \"placeholder\":\n return new PlaceholderFile(initialFile, uploadIndex);\n\n case \"s3\":\n return new UploadedS3File(initialFile, uploadIndex);\n\n case \"tus\":\n return new UploadedTusFile({\n csrfToken,\n initialFile,\n uploadUrl,\n uploadIndex\n });\n }\n};\n","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.5';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins,\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar DetailedError = /*#__PURE__*/function (_Error) {\n _inherits(DetailedError, _Error);\n\n var _super = _createSuper(DetailedError);\n\n function DetailedError(message) {\n var _this;\n\n var causingErr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var req = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var res = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck(this, DetailedError);\n\n _this = _super.call(this, message);\n _this.originalRequest = req;\n _this.originalResponse = res;\n _this.causingError = causingErr;\n\n if (causingErr != null) {\n message += \", caused by \".concat(causingErr.toString());\n }\n\n if (req != null) {\n var requestId = req.getHeader('X-Request-ID') || 'n/a';\n var method = req.getMethod();\n var url = req.getURL();\n var status = res ? res.getStatus() : 'n/a';\n var body = res ? res.getBody() || '' : 'n/a';\n message += \", originated from request (method: \".concat(method, \", url: \").concat(url, \", response code: \").concat(status, \", response text: \").concat(body, \", request id: \").concat(requestId, \")\");\n }\n\n _this.message = message;\n return _this;\n }\n\n return _createClass(DetailedError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport default DetailedError;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { Base64 } from 'js-base64';\nimport URL from 'url-parse';\nimport DetailedError from './error.js';\nimport { log } from './logger.js';\nimport uuid from './uuid.js';\nvar defaultOptions = {\n endpoint: null,\n uploadUrl: null,\n metadata: {},\n fingerprint: null,\n uploadSize: null,\n onProgress: null,\n onChunkComplete: null,\n onSuccess: null,\n onError: null,\n onUploadUrlAvailable: null,\n overridePatchMethod: false,\n headers: {},\n addRequestId: false,\n onBeforeRequest: null,\n onAfterResponse: null,\n onShouldRetry: null,\n chunkSize: Infinity,\n retryDelays: [0, 1000, 3000, 5000],\n parallelUploads: 1,\n parallelUploadBoundaries: null,\n storeFingerprintForResuming: true,\n removeFingerprintOnSuccess: false,\n uploadLengthDeferred: false,\n uploadDataDuringCreation: false,\n urlStorage: null,\n fileReader: null,\n httpStack: null\n};\n\nvar BaseUpload = /*#__PURE__*/function () {\n function BaseUpload(file, options) {\n _classCallCheck(this, BaseUpload);\n\n // Warn about removed options from previous versions\n if ('resume' in options) {\n console.log('tus: The `resume` option has been removed in tus-js-client v2. Please use the URL storage API instead.'); // eslint-disable-line no-console\n } // The default options will already be added from the wrapper classes.\n\n\n this.options = options; // Cast chunkSize to integer\n\n this.options.chunkSize = Number(this.options.chunkSize); // The storage module used to store URLs\n\n this._urlStorage = this.options.urlStorage; // The underlying File/Blob object\n\n this.file = file; // The URL against which the file will be uploaded\n\n this.url = null; // The underlying request object for the current PATCH request\n\n this._req = null; // The fingerpinrt for the current file (set after start())\n\n this._fingerprint = null; // The key that the URL storage returned when saving an URL with a fingerprint,\n\n this._urlStorageKey = null; // The offset used in the current PATCH request\n\n this._offset = null; // True if the current PATCH request has been aborted\n\n this._aborted = false; // The file's size in bytes\n\n this._size = null; // The Source object which will wrap around the given file and provides us\n // with a unified interface for getting its size and slice chunks from its\n // content allowing us to easily handle Files, Blobs, Buffers and Streams.\n\n this._source = null; // The current count of attempts which have been made. Zero indicates none.\n\n this._retryAttempt = 0; // The timeout's ID which is used to delay the next retry\n\n this._retryTimeout = null; // The offset of the remote upload before the latest attempt was started.\n\n this._offsetBeforeRetry = 0; // An array of BaseUpload instances which are used for uploading the different\n // parts, if the parallelUploads option is used.\n\n this._parallelUploads = null; // An array of upload URLs which are used for uploading the different\n // parts, if the parallelUploads option is used.\n\n this._parallelUploadUrls = null;\n }\n /**\n * Use the Termination extension to delete an upload from the server by sending a DELETE\n * request to the specified upload URL. This is only possible if the server supports the\n * Termination extension. If the `options.retryDelays` property is set, the method will\n * also retry if an error ocurrs.\n *\n * @param {String} url The upload's URL which will be terminated.\n * @param {object} options Optional options for influencing HTTP requests.\n * @return {Promise} The Promise will be resolved/rejected when the requests finish.\n */\n\n\n _createClass(BaseUpload, [{\n key: \"findPreviousUploads\",\n value: function findPreviousUploads() {\n var _this = this;\n\n return this.options.fingerprint(this.file, this.options).then(function (fingerprint) {\n return _this._urlStorage.findUploadsByFingerprint(fingerprint);\n });\n }\n }, {\n key: \"resumeFromPreviousUpload\",\n value: function resumeFromPreviousUpload(previousUpload) {\n this.url = previousUpload.uploadUrl || null;\n this._parallelUploadUrls = previousUpload.parallelUploadUrls || null;\n this._urlStorageKey = previousUpload.urlStorageKey;\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this2 = this;\n\n var file = this.file;\n\n if (!file) {\n this._emitError(new Error('tus: no file or stream to upload provided'));\n\n return;\n }\n\n if (!this.options.endpoint && !this.options.uploadUrl && !this.url) {\n this._emitError(new Error('tus: neither an endpoint or an upload URL is provided'));\n\n return;\n }\n\n var retryDelays = this.options.retryDelays;\n\n if (retryDelays != null && Object.prototype.toString.call(retryDelays) !== '[object Array]') {\n this._emitError(new Error('tus: the `retryDelays` option must either be an array or null'));\n\n return;\n }\n\n if (this.options.parallelUploads > 1) {\n // Test which options are incompatible with parallel uploads.\n for (var _i = 0, _arr = ['uploadUrl', 'uploadSize', 'uploadLengthDeferred']; _i < _arr.length; _i++) {\n var optionName = _arr[_i];\n\n if (this.options[optionName]) {\n this._emitError(new Error(\"tus: cannot use the \".concat(optionName, \" option when parallelUploads is enabled\")));\n\n return;\n }\n }\n }\n\n if (this.options.parallelUploadBoundaries) {\n if (this.options.parallelUploads <= 1) {\n this._emitError(new Error('tus: cannot use the `parallelUploadBoundaries` option when `parallelUploads` is disabled'));\n\n return;\n }\n\n if (this.options.parallelUploads !== this.options.parallelUploadBoundaries.length) {\n this._emitError(new Error('tus: the `parallelUploadBoundaries` must have the same length as the value of `parallelUploads`'));\n\n return;\n }\n }\n\n this.options.fingerprint(file, this.options).then(function (fingerprint) {\n if (fingerprint == null) {\n log('No fingerprint was calculated meaning that the upload cannot be stored in the URL storage.');\n } else {\n log(\"Calculated fingerprint: \".concat(fingerprint));\n }\n\n _this2._fingerprint = fingerprint;\n\n if (_this2._source) {\n return _this2._source;\n }\n\n return _this2.options.fileReader.openFile(file, _this2.options.chunkSize);\n }).then(function (source) {\n _this2._source = source; // First, we look at the uploadLengthDeferred option.\n // Next, we check if the caller has supplied a manual upload size.\n // Finally, we try to use the calculated size from the source object.\n\n if (_this2.options.uploadLengthDeferred) {\n _this2._size = null;\n } else if (_this2.options.uploadSize != null) {\n _this2._size = Number(_this2.options.uploadSize);\n\n if (Number.isNaN(_this2._size)) {\n _this2._emitError(new Error('tus: cannot convert `uploadSize` option into a number'));\n\n return;\n }\n } else {\n _this2._size = _this2._source.size;\n\n if (_this2._size == null) {\n _this2._emitError(new Error(\"tus: cannot automatically derive upload's size from input. Specify it manually using the `uploadSize` option or use the `uploadLengthDeferred` option\"));\n\n return;\n }\n } // If the upload was configured to use multiple requests or if we resume from\n // an upload which used multiple requests, we start a parallel upload.\n\n\n if (_this2.options.parallelUploads > 1 || _this2._parallelUploadUrls != null) {\n _this2._startParallelUpload();\n } else {\n _this2._startSingleUpload();\n }\n })[\"catch\"](function (err) {\n _this2._emitError(err);\n });\n }\n /**\n * Initiate the uploading procedure for a parallelized upload, where one file is split into\n * multiple request which are run in parallel.\n *\n * @api private\n */\n\n }, {\n key: \"_startParallelUpload\",\n value: function _startParallelUpload() {\n var _this$options$paralle,\n _this3 = this;\n\n var totalSize = this._size;\n var totalProgress = 0;\n this._parallelUploads = [];\n var partCount = this._parallelUploadUrls != null ? this._parallelUploadUrls.length : this.options.parallelUploads; // The input file will be split into multiple slices which are uploaded in separate\n // requests. Here we get the start and end position for the slices.\n\n var parts = (_this$options$paralle = this.options.parallelUploadBoundaries) !== null && _this$options$paralle !== void 0 ? _this$options$paralle : splitSizeIntoParts(this._source.size, partCount); // Attach URLs from previous uploads, if available.\n\n if (this._parallelUploadUrls) {\n parts.forEach(function (part, index) {\n part.uploadUrl = _this3._parallelUploadUrls[index] || null;\n });\n } // Create an empty list for storing the upload URLs\n\n\n this._parallelUploadUrls = new Array(parts.length); // Generate a promise for each slice that will be resolve if the respective\n // upload is completed.\n\n var uploads = parts.map(function (part, index) {\n var lastPartProgress = 0;\n return _this3._source.slice(part.start, part.end).then(function (_ref) {\n var value = _ref.value;\n return new Promise(function (resolve, reject) {\n // Merge with the user supplied options but overwrite some values.\n var options = _objectSpread(_objectSpread({}, _this3.options), {}, {\n // If available, the partial upload should be resumed from a previous URL.\n uploadUrl: part.uploadUrl || null,\n // We take manually care of resuming for partial uploads, so they should\n // not be stored in the URL storage.\n storeFingerprintForResuming: false,\n removeFingerprintOnSuccess: false,\n // Reset the parallelUploads option to not cause recursion.\n parallelUploads: 1,\n // Reset this option as we are not doing a parallel upload.\n parallelUploadBoundaries: null,\n metadata: {},\n // Add the header to indicate the this is a partial upload.\n headers: _objectSpread(_objectSpread({}, _this3.options.headers), {}, {\n 'Upload-Concat': 'partial'\n }),\n // Reject or resolve the promise if the upload errors or completes.\n onSuccess: resolve,\n onError: reject,\n // Based in the progress for this partial upload, calculate the progress\n // for the entire final upload.\n onProgress: function onProgress(newPartProgress) {\n totalProgress = totalProgress - lastPartProgress + newPartProgress;\n lastPartProgress = newPartProgress;\n\n _this3._emitProgress(totalProgress, totalSize);\n },\n // Wait until every partial upload has an upload URL, so we can add\n // them to the URL storage.\n onUploadUrlAvailable: function onUploadUrlAvailable() {\n _this3._parallelUploadUrls[index] = upload.url; // Test if all uploads have received an URL\n\n if (_this3._parallelUploadUrls.filter(function (u) {\n return Boolean(u);\n }).length === parts.length) {\n _this3._saveUploadInUrlStorage();\n }\n }\n });\n\n var upload = new BaseUpload(value, options);\n upload.start(); // Store the upload in an array, so we can later abort them if necessary.\n\n _this3._parallelUploads.push(upload);\n });\n });\n });\n var req; // Wait until all partial uploads are finished and we can send the POST request for\n // creating the final upload.\n\n Promise.all(uploads).then(function () {\n req = _this3._openRequest('POST', _this3.options.endpoint);\n req.setHeader('Upload-Concat', \"final;\".concat(_this3._parallelUploadUrls.join(' '))); // Add metadata if values have been added\n\n var metadata = encodeMetadata(_this3.options.metadata);\n\n if (metadata !== '') {\n req.setHeader('Upload-Metadata', metadata);\n }\n\n return _this3._sendRequest(req, null);\n }).then(function (res) {\n if (!inStatusCategory(res.getStatus(), 200)) {\n _this3._emitHttpError(req, res, 'tus: unexpected response while creating upload');\n\n return;\n }\n\n var location = res.getHeader('Location');\n\n if (location == null) {\n _this3._emitHttpError(req, res, 'tus: invalid or missing Location header');\n\n return;\n }\n\n _this3.url = resolveUrl(_this3.options.endpoint, location);\n log(\"Created upload at \".concat(_this3.url));\n\n _this3._emitSuccess();\n })[\"catch\"](function (err) {\n _this3._emitError(err);\n });\n }\n /**\n * Initiate the uploading procedure for a non-parallel upload. Here the entire file is\n * uploaded in a sequential matter.\n *\n * @api private\n */\n\n }, {\n key: \"_startSingleUpload\",\n value: function _startSingleUpload() {\n // Reset the aborted flag when the upload is started or else the\n // _performUpload will stop before sending a request if the upload has been\n // aborted previously.\n this._aborted = false; // The upload had been started previously and we should reuse this URL.\n\n if (this.url != null) {\n log(\"Resuming upload from previous URL: \".concat(this.url));\n\n this._resumeUpload();\n\n return;\n } // A URL has manually been specified, so we try to resume\n\n\n if (this.options.uploadUrl != null) {\n log(\"Resuming upload from provided URL: \".concat(this.options.uploadUrl));\n this.url = this.options.uploadUrl;\n\n this._resumeUpload();\n\n return;\n } // An upload has not started for the file yet, so we start a new one\n\n\n log('Creating a new upload');\n\n this._createUpload();\n }\n /**\n * Abort any running request and stop the current upload. After abort is called, no event\n * handler will be invoked anymore. You can use the `start` method to resume the upload\n * again.\n * If `shouldTerminate` is true, the `terminate` function will be called to remove the\n * current upload from the server.\n *\n * @param {boolean} shouldTerminate True if the upload should be deleted from the server.\n * @return {Promise} The Promise will be resolved/rejected when the requests finish.\n */\n\n }, {\n key: \"abort\",\n value: function abort(shouldTerminate) {\n var _this4 = this;\n\n // Stop any parallel partial uploads, that have been started in _startParallelUploads.\n if (this._parallelUploads != null) {\n this._parallelUploads.forEach(function (upload) {\n upload.abort(shouldTerminate);\n });\n } // Stop any current running request.\n\n\n if (this._req !== null) {\n this._req.abort(); // Note: We do not close the file source here, so the user can resume in the future.\n\n }\n\n this._aborted = true; // Stop any timeout used for initiating a retry.\n\n if (this._retryTimeout != null) {\n clearTimeout(this._retryTimeout);\n this._retryTimeout = null;\n }\n\n if (!shouldTerminate || this.url == null) {\n return Promise.resolve();\n }\n\n return BaseUpload.terminate(this.url, this.options) // Remove entry from the URL storage since the upload URL is no longer valid.\n .then(function () {\n return _this4._removeFromUrlStorage();\n });\n }\n }, {\n key: \"_emitHttpError\",\n value: function _emitHttpError(req, res, message, causingErr) {\n this._emitError(new DetailedError(message, causingErr, req, res));\n }\n }, {\n key: \"_emitError\",\n value: function _emitError(err) {\n var _this5 = this;\n\n // Do not emit errors, e.g. from aborted HTTP requests, if the upload has been stopped.\n if (this._aborted) return; // Check if we should retry, when enabled, before sending the error to the user.\n\n if (this.options.retryDelays != null) {\n // We will reset the attempt counter if\n // - we were already able to connect to the server (offset != null) and\n // - we were able to upload a small chunk of data to the server\n var shouldResetDelays = this._offset != null && this._offset > this._offsetBeforeRetry;\n\n if (shouldResetDelays) {\n this._retryAttempt = 0;\n }\n\n if (shouldRetry(err, this._retryAttempt, this.options)) {\n var delay = this.options.retryDelays[this._retryAttempt++];\n this._offsetBeforeRetry = this._offset;\n this._retryTimeout = setTimeout(function () {\n _this5.start();\n }, delay);\n return;\n }\n }\n\n if (typeof this.options.onError === 'function') {\n this.options.onError(err);\n } else {\n throw err;\n }\n }\n /**\n * Publishes notification if the upload has been successfully completed.\n *\n * @api private\n */\n\n }, {\n key: \"_emitSuccess\",\n value: function _emitSuccess() {\n if (this.options.removeFingerprintOnSuccess) {\n // Remove stored fingerprint and corresponding endpoint. This causes\n // new uploads of the same file to be treated as a different file.\n this._removeFromUrlStorage();\n }\n\n if (typeof this.options.onSuccess === 'function') {\n this.options.onSuccess();\n }\n }\n /**\n * Publishes notification when data has been sent to the server. This\n * data may not have been accepted by the server yet.\n *\n * @param {number} bytesSent Number of bytes sent to the server.\n * @param {number} bytesTotal Total number of bytes to be sent to the server.\n * @api private\n */\n\n }, {\n key: \"_emitProgress\",\n value: function _emitProgress(bytesSent, bytesTotal) {\n if (typeof this.options.onProgress === 'function') {\n this.options.onProgress(bytesSent, bytesTotal);\n }\n }\n /**\n * Publishes notification when a chunk of data has been sent to the server\n * and accepted by the server.\n * @param {number} chunkSize Size of the chunk that was accepted by the server.\n * @param {number} bytesAccepted Total number of bytes that have been\n * accepted by the server.\n * @param {number} bytesTotal Total number of bytes to be sent to the server.\n * @api private\n */\n\n }, {\n key: \"_emitChunkComplete\",\n value: function _emitChunkComplete(chunkSize, bytesAccepted, bytesTotal) {\n if (typeof this.options.onChunkComplete === 'function') {\n this.options.onChunkComplete(chunkSize, bytesAccepted, bytesTotal);\n }\n }\n /**\n * Create a new upload using the creation extension by sending a POST\n * request to the endpoint. After successful creation the file will be\n * uploaded\n *\n * @api private\n */\n\n }, {\n key: \"_createUpload\",\n value: function _createUpload() {\n var _this6 = this;\n\n if (!this.options.endpoint) {\n this._emitError(new Error('tus: unable to create upload because no endpoint is provided'));\n\n return;\n }\n\n var req = this._openRequest('POST', this.options.endpoint);\n\n if (this.options.uploadLengthDeferred) {\n req.setHeader('Upload-Defer-Length', 1);\n } else {\n req.setHeader('Upload-Length', this._size);\n } // Add metadata if values have been added\n\n\n var metadata = encodeMetadata(this.options.metadata);\n\n if (metadata !== '') {\n req.setHeader('Upload-Metadata', metadata);\n }\n\n var promise;\n\n if (this.options.uploadDataDuringCreation && !this.options.uploadLengthDeferred) {\n this._offset = 0;\n promise = this._addChunkToRequest(req);\n } else {\n promise = this._sendRequest(req, null);\n }\n\n promise.then(function (res) {\n if (!inStatusCategory(res.getStatus(), 200)) {\n _this6._emitHttpError(req, res, 'tus: unexpected response while creating upload');\n\n return;\n }\n\n var location = res.getHeader('Location');\n\n if (location == null) {\n _this6._emitHttpError(req, res, 'tus: invalid or missing Location header');\n\n return;\n }\n\n _this6.url = resolveUrl(_this6.options.endpoint, location);\n log(\"Created upload at \".concat(_this6.url));\n\n if (typeof _this6.options.onUploadUrlAvailable === 'function') {\n _this6.options.onUploadUrlAvailable();\n }\n\n if (_this6._size === 0) {\n // Nothing to upload and file was successfully created\n _this6._emitSuccess();\n\n _this6._source.close();\n\n return;\n }\n\n _this6._saveUploadInUrlStorage().then(function () {\n if (_this6.options.uploadDataDuringCreation) {\n _this6._handleUploadResponse(req, res);\n } else {\n _this6._offset = 0;\n\n _this6._performUpload();\n }\n });\n })[\"catch\"](function (err) {\n _this6._emitHttpError(req, null, 'tus: failed to create upload', err);\n });\n }\n /*\n * Try to resume an existing upload. First a HEAD request will be sent\n * to retrieve the offset. If the request fails a new upload will be\n * created. In the case of a successful response the file will be uploaded.\n *\n * @api private\n */\n\n }, {\n key: \"_resumeUpload\",\n value: function _resumeUpload() {\n var _this7 = this;\n\n var req = this._openRequest('HEAD', this.url);\n\n var promise = this._sendRequest(req, null);\n\n promise.then(function (res) {\n var status = res.getStatus();\n\n if (!inStatusCategory(status, 200)) {\n // If the upload is locked (indicated by the 423 Locked status code), we\n // emit an error instead of directly starting a new upload. This way the\n // retry logic can catch the error and will retry the upload. An upload\n // is usually locked for a short period of time and will be available\n // afterwards.\n if (status === 423) {\n _this7._emitHttpError(req, res, 'tus: upload is currently locked; retry later');\n\n return;\n }\n\n if (inStatusCategory(status, 400)) {\n // Remove stored fingerprint and corresponding endpoint,\n // on client errors since the file can not be found\n _this7._removeFromUrlStorage();\n }\n\n if (!_this7.options.endpoint) {\n // Don't attempt to create a new upload if no endpoint is provided.\n _this7._emitHttpError(req, res, 'tus: unable to resume upload (new upload cannot be created without an endpoint)');\n\n return;\n } // Try to create a new upload\n\n\n _this7.url = null;\n\n _this7._createUpload();\n\n return;\n }\n\n var offset = parseInt(res.getHeader('Upload-Offset'), 10);\n\n if (Number.isNaN(offset)) {\n _this7._emitHttpError(req, res, 'tus: invalid or missing offset value');\n\n return;\n }\n\n var length = parseInt(res.getHeader('Upload-Length'), 10);\n\n if (Number.isNaN(length) && !_this7.options.uploadLengthDeferred) {\n _this7._emitHttpError(req, res, 'tus: invalid or missing length value');\n\n return;\n }\n\n if (typeof _this7.options.onUploadUrlAvailable === 'function') {\n _this7.options.onUploadUrlAvailable();\n }\n\n _this7._saveUploadInUrlStorage().then(function () {\n // Upload has already been completed and we do not need to send additional\n // data to the server\n if (offset === length) {\n _this7._emitProgress(length, length);\n\n _this7._emitSuccess();\n\n return;\n }\n\n _this7._offset = offset;\n\n _this7._performUpload();\n });\n })[\"catch\"](function (err) {\n _this7._emitHttpError(req, null, 'tus: failed to resume upload', err);\n });\n }\n /**\n * Start uploading the file using PATCH requests. The file will be divided\n * into chunks as specified in the chunkSize option. During the upload\n * the onProgress event handler may be invoked multiple times.\n *\n * @api private\n */\n\n }, {\n key: \"_performUpload\",\n value: function _performUpload() {\n var _this8 = this;\n\n // If the upload has been aborted, we will not send the next PATCH request.\n // This is important if the abort method was called during a callback, such\n // as onChunkComplete or onProgress.\n if (this._aborted) {\n return;\n }\n\n var req; // Some browser and servers may not support the PATCH method. For those\n // cases, you can tell tus-js-client to use a POST request with the\n // X-HTTP-Method-Override header for simulating a PATCH request.\n\n if (this.options.overridePatchMethod) {\n req = this._openRequest('POST', this.url);\n req.setHeader('X-HTTP-Method-Override', 'PATCH');\n } else {\n req = this._openRequest('PATCH', this.url);\n }\n\n req.setHeader('Upload-Offset', this._offset);\n\n var promise = this._addChunkToRequest(req);\n\n promise.then(function (res) {\n if (!inStatusCategory(res.getStatus(), 200)) {\n _this8._emitHttpError(req, res, 'tus: unexpected response while uploading chunk');\n\n return;\n }\n\n _this8._handleUploadResponse(req, res);\n })[\"catch\"](function (err) {\n // Don't emit an error if the upload was aborted manually\n if (_this8._aborted) {\n return;\n }\n\n _this8._emitHttpError(req, null, \"tus: failed to upload chunk at offset \".concat(_this8._offset), err);\n });\n }\n /**\n * _addChunktoRequest reads a chunk from the source and sends it using the\n * supplied request object. It will not handle the response.\n *\n * @api private\n */\n\n }, {\n key: \"_addChunkToRequest\",\n value: function _addChunkToRequest(req) {\n var _this9 = this;\n\n var start = this._offset;\n var end = this._offset + this.options.chunkSize;\n req.setProgressHandler(function (bytesSent) {\n _this9._emitProgress(start + bytesSent, _this9._size);\n });\n req.setHeader('Content-Type', 'application/offset+octet-stream'); // The specified chunkSize may be Infinity or the calcluated end position\n // may exceed the file's size. In both cases, we limit the end position to\n // the input's total size for simpler calculations and correctness.\n\n if ((end === Infinity || end > this._size) && !this.options.uploadLengthDeferred) {\n end = this._size;\n }\n\n return this._source.slice(start, end).then(function (_ref2) {\n var value = _ref2.value,\n done = _ref2.done;\n\n // If the upload length is deferred, the upload size was not specified during\n // upload creation. So, if the file reader is done reading, we know the total\n // upload size and can tell the tus server.\n if (_this9.options.uploadLengthDeferred && done) {\n _this9._size = _this9._offset + (value && value.size ? value.size : 0);\n req.setHeader('Upload-Length', _this9._size);\n }\n\n if (value === null) {\n return _this9._sendRequest(req);\n }\n\n _this9._emitProgress(_this9._offset, _this9._size);\n\n return _this9._sendRequest(req, value);\n });\n }\n /**\n * _handleUploadResponse is used by requests that haven been sent using _addChunkToRequest\n * and already have received a response.\n *\n * @api private\n */\n\n }, {\n key: \"_handleUploadResponse\",\n value: function _handleUploadResponse(req, res) {\n var offset = parseInt(res.getHeader('Upload-Offset'), 10);\n\n if (Number.isNaN(offset)) {\n this._emitHttpError(req, res, 'tus: invalid or missing offset value');\n\n return;\n }\n\n this._emitProgress(offset, this._size);\n\n this._emitChunkComplete(offset - this._offset, offset, this._size);\n\n this._offset = offset;\n\n if (offset === this._size) {\n // Yay, finally done :)\n this._emitSuccess();\n\n this._source.close();\n\n return;\n }\n\n this._performUpload();\n }\n /**\n * Create a new HTTP request object with the given method and URL.\n *\n * @api private\n */\n\n }, {\n key: \"_openRequest\",\n value: function _openRequest(method, url) {\n var req = openRequest(method, url, this.options);\n this._req = req;\n return req;\n }\n /**\n * Remove the entry in the URL storage, if it has been saved before.\n *\n * @api private\n */\n\n }, {\n key: \"_removeFromUrlStorage\",\n value: function _removeFromUrlStorage() {\n var _this10 = this;\n\n if (!this._urlStorageKey) return;\n\n this._urlStorage.removeUpload(this._urlStorageKey)[\"catch\"](function (err) {\n _this10._emitError(err);\n });\n\n this._urlStorageKey = null;\n }\n /**\n * Add the upload URL to the URL storage, if possible.\n *\n * @api private\n */\n\n }, {\n key: \"_saveUploadInUrlStorage\",\n value: function _saveUploadInUrlStorage() {\n var _this11 = this;\n\n // We do not store the upload URL\n // - if it was disabled in the option, or\n // - if no fingerprint was calculated for the input (i.e. a stream), or\n // - if the URL is already stored (i.e. key is set alread).\n if (!this.options.storeFingerprintForResuming || !this._fingerprint || this._urlStorageKey !== null) {\n return Promise.resolve();\n }\n\n var storedUpload = {\n size: this._size,\n metadata: this.options.metadata,\n creationTime: new Date().toString()\n };\n\n if (this._parallelUploads) {\n // Save multiple URLs if the parallelUploads option is used ...\n storedUpload.parallelUploadUrls = this._parallelUploadUrls;\n } else {\n // ... otherwise we just save the one available URL.\n storedUpload.uploadUrl = this.url;\n }\n\n return this._urlStorage.addUpload(this._fingerprint, storedUpload).then(function (urlStorageKey) {\n _this11._urlStorageKey = urlStorageKey;\n });\n }\n /**\n * Send a request with the provided body.\n *\n * @api private\n */\n\n }, {\n key: \"_sendRequest\",\n value: function _sendRequest(req) {\n var body = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return sendRequest(req, body, this.options);\n }\n }], [{\n key: \"terminate\",\n value: function terminate(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var req = openRequest('DELETE', url, options);\n return sendRequest(req, null, options).then(function (res) {\n // A 204 response indicates a successfull request\n if (res.getStatus() === 204) {\n return;\n }\n\n throw new DetailedError('tus: unexpected response while terminating upload', null, req, res);\n })[\"catch\"](function (err) {\n if (!(err instanceof DetailedError)) {\n err = new DetailedError('tus: failed to terminate upload', err, req, null);\n }\n\n if (!shouldRetry(err, 0, options)) {\n throw err;\n } // Instead of keeping track of the retry attempts, we remove the first element from the delays\n // array. If the array is empty, all retry attempts are used up and we will bubble up the error.\n // We recursively call the terminate function will removing elements from the retryDelays array.\n\n\n var delay = options.retryDelays[0];\n var remainingDelays = options.retryDelays.slice(1);\n\n var newOptions = _objectSpread(_objectSpread({}, options), {}, {\n retryDelays: remainingDelays\n });\n\n return new Promise(function (resolve) {\n return setTimeout(resolve, delay);\n }).then(function () {\n return BaseUpload.terminate(url, newOptions);\n });\n });\n }\n }]);\n\n return BaseUpload;\n}();\n\nfunction encodeMetadata(metadata) {\n return Object.entries(metadata).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n value = _ref4[1];\n\n return \"\".concat(key, \" \").concat(Base64.encode(String(value)));\n }).join(',');\n}\n/**\n * Checks whether a given status is in the range of the expected category.\n * For example, only a status between 200 and 299 will satisfy the category 200.\n *\n * @api private\n */\n\n\nfunction inStatusCategory(status, category) {\n return status >= category && status < category + 100;\n}\n/**\n * Create a new HTTP request with the specified method and URL.\n * The necessary headers that are included in every request\n * will be added, including the request ID.\n *\n * @api private\n */\n\n\nfunction openRequest(method, url, options) {\n var req = options.httpStack.createRequest(method, url);\n req.setHeader('Tus-Resumable', '1.0.0');\n var headers = options.headers || {};\n Object.entries(headers).forEach(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n name = _ref6[0],\n value = _ref6[1];\n\n req.setHeader(name, value);\n });\n\n if (options.addRequestId) {\n var requestId = uuid();\n req.setHeader('X-Request-ID', requestId);\n }\n\n return req;\n}\n/**\n * Send a request with the provided body while invoking the onBeforeRequest\n * and onAfterResponse callbacks.\n *\n * @api private\n */\n\n\nfunction sendRequest(req, body, options) {\n var onBeforeRequestPromise = typeof options.onBeforeRequest === 'function' ? Promise.resolve(options.onBeforeRequest(req)) : Promise.resolve();\n return onBeforeRequestPromise.then(function () {\n return req.send(body).then(function (res) {\n var onAfterResponsePromise = typeof options.onAfterResponse === 'function' ? Promise.resolve(options.onAfterResponse(req, res)) : Promise.resolve();\n return onAfterResponsePromise.then(function () {\n return res;\n });\n });\n });\n}\n/**\n * Checks whether the browser running this code has internet access.\n * This function will always return true in the node.js environment\n *\n * @api private\n */\n\n\nfunction isOnline() {\n var online = true;\n\n if (typeof window !== 'undefined' && 'navigator' in window // eslint-disable-line no-undef\n && window.navigator.onLine === false) {\n // eslint-disable-line no-undef\n online = false;\n }\n\n return online;\n}\n/**\n * Checks whether or not it is ok to retry a request.\n * @param {Error} err the error returned from the last request\n * @param {number} retryAttempt the number of times the request has already been retried\n * @param {object} options tus Upload options\n *\n * @api private\n */\n\n\nfunction shouldRetry(err, retryAttempt, options) {\n // We only attempt a retry if\n // - retryDelays option is set\n // - we didn't exceed the maxium number of retries, yet, and\n // - this error was caused by a request or it's response and\n // - the error is server error (i.e. not a status 4xx except a 409 or 423) or\n // a onShouldRetry is specified and returns true\n // - the browser does not indicate that we are offline\n if (options.retryDelays == null || retryAttempt >= options.retryDelays.length || err.originalRequest == null) {\n return false;\n }\n\n if (options && typeof options.onShouldRetry === 'function') {\n return options.onShouldRetry(err, retryAttempt, options);\n }\n\n var status = err.originalResponse ? err.originalResponse.getStatus() : 0;\n return (!inStatusCategory(status, 400) || status === 409 || status === 423) && isOnline();\n}\n/**\n * Resolve a relative link given the origin as source. For example,\n * if a HTTP request to http://example.com/files/ returns a Location\n * header with the value /upload/abc, the resolved URL will be:\n * http://example.com/upload/abc\n */\n\n\nfunction resolveUrl(origin, link) {\n return new URL(link, origin).toString();\n}\n/**\n * Calculate the start and end positions for the parts if an upload\n * is split into multiple parallel requests.\n *\n * @param {number} totalSize The byte size of the upload, which will be split.\n * @param {number} partCount The number in how many parts the upload will be split.\n * @return {object[]}\n * @api private\n */\n\n\nfunction splitSizeIntoParts(totalSize, partCount) {\n var partSize = Math.floor(totalSize / partCount);\n var parts = [];\n\n for (var i = 0; i < partCount; i++) {\n parts.push({\n start: partSize * i,\n end: partSize * (i + 1)\n });\n }\n\n parts[partCount - 1].end = totalSize;\n return parts;\n}\n\nBaseUpload.defaultOptions = defaultOptions;\nexport default BaseUpload;","/**\n * Generate a UUID v4 based on random numbers. We intentioanlly use the less\n * secure Math.random function here since the more secure crypto.getRandomNumbers\n * is not available on all platforms.\n * This is not a problem for us since we use the UUID only for generating a\n * request ID, so we can correlate server logs to client errors.\n *\n * This function is taken from following site:\n * https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n *\n * @return {string} The generate UUID\n */\nexport default function uuid() {\n /* eslint-disable no-bitwise */\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/* eslint no-unused-vars: \"off\" */\nvar NoopUrlStorage = /*#__PURE__*/function () {\n function NoopUrlStorage() {\n _classCallCheck(this, NoopUrlStorage);\n }\n\n _createClass(NoopUrlStorage, [{\n key: \"listAllUploads\",\n value: function listAllUploads() {\n return Promise.resolve([]);\n }\n }, {\n key: \"findUploadsByFingerprint\",\n value: function findUploadsByFingerprint(fingerprint) {\n return Promise.resolve([]);\n }\n }, {\n key: \"removeUpload\",\n value: function removeUpload(urlStorageKey) {\n return Promise.resolve();\n }\n }, {\n key: \"addUpload\",\n value: function addUpload(fingerprint, upload) {\n return Promise.resolve(null);\n }\n }]);\n\n return NoopUrlStorage;\n}();\n\nexport { NoopUrlStorage as default };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar hasStorage = false;\n\ntry {\n hasStorage = 'localStorage' in window; // Attempt to store and read entries from the local storage to detect Private\n // Mode on Safari on iOS (see #49)\n // If the key was not used before, we remove it from local storage again to\n // not cause confusion where the entry came from.\n\n var key = 'tusSupport';\n var originalValue = localStorage.getItem(key);\n localStorage.setItem(key, originalValue);\n if (originalValue === null) localStorage.removeItem(key);\n} catch (e) {\n // If we try to access localStorage inside a sandboxed iframe, a SecurityError\n // is thrown. When in private mode on iOS Safari, a QuotaExceededError is\n // thrown (see #49)\n if (e.code === e.SECURITY_ERR || e.code === e.QUOTA_EXCEEDED_ERR) {\n hasStorage = false;\n } else {\n throw e;\n }\n}\n\nexport var canStoreURLs = hasStorage;\nexport var WebStorageUrlStorage = /*#__PURE__*/function () {\n function WebStorageUrlStorage() {\n _classCallCheck(this, WebStorageUrlStorage);\n }\n\n _createClass(WebStorageUrlStorage, [{\n key: \"findAllUploads\",\n value: function findAllUploads() {\n var results = this._findEntries('tus::');\n\n return Promise.resolve(results);\n }\n }, {\n key: \"findUploadsByFingerprint\",\n value: function findUploadsByFingerprint(fingerprint) {\n var results = this._findEntries(\"tus::\".concat(fingerprint, \"::\"));\n\n return Promise.resolve(results);\n }\n }, {\n key: \"removeUpload\",\n value: function removeUpload(urlStorageKey) {\n localStorage.removeItem(urlStorageKey);\n return Promise.resolve();\n }\n }, {\n key: \"addUpload\",\n value: function addUpload(fingerprint, upload) {\n var id = Math.round(Math.random() * 1e12);\n var key = \"tus::\".concat(fingerprint, \"::\").concat(id);\n localStorage.setItem(key, JSON.stringify(upload));\n return Promise.resolve(key);\n }\n }, {\n key: \"_findEntries\",\n value: function _findEntries(prefix) {\n var results = [];\n\n for (var i = 0; i < localStorage.length; i++) {\n var _key = localStorage.key(i);\n\n if (_key.indexOf(prefix) !== 0) continue;\n\n try {\n var upload = JSON.parse(localStorage.getItem(_key));\n upload.urlStorageKey = _key;\n results.push(upload);\n } catch (e) {// The JSON parse error is intentionally ignored here, so a malformed\n // entry in the storage cannot prevent an upload.\n }\n }\n\n return results;\n }\n }]);\n\n return WebStorageUrlStorage;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/* eslint-disable max-classes-per-file */\nvar XHRHttpStack = /*#__PURE__*/function () {\n function XHRHttpStack() {\n _classCallCheck(this, XHRHttpStack);\n }\n\n _createClass(XHRHttpStack, [{\n key: \"createRequest\",\n value: function createRequest(method, url) {\n return new Request(method, url);\n }\n }, {\n key: \"getName\",\n value: function getName() {\n return 'XHRHttpStack';\n }\n }]);\n\n return XHRHttpStack;\n}();\n\nexport { XHRHttpStack as default };\n\nvar Request = /*#__PURE__*/function () {\n function Request(method, url) {\n _classCallCheck(this, Request);\n\n this._xhr = new XMLHttpRequest();\n\n this._xhr.open(method, url, true);\n\n this._method = method;\n this._url = url;\n this._headers = {};\n }\n\n _createClass(Request, [{\n key: \"getMethod\",\n value: function getMethod() {\n return this._method;\n }\n }, {\n key: \"getURL\",\n value: function getURL() {\n return this._url;\n }\n }, {\n key: \"setHeader\",\n value: function setHeader(header, value) {\n this._xhr.setRequestHeader(header, value);\n\n this._headers[header] = value;\n }\n }, {\n key: \"getHeader\",\n value: function getHeader(header) {\n return this._headers[header];\n }\n }, {\n key: \"setProgressHandler\",\n value: function setProgressHandler(progressHandler) {\n // Test support for progress events before attaching an event listener\n if (!('upload' in this._xhr)) {\n return;\n }\n\n this._xhr.upload.onprogress = function (e) {\n if (!e.lengthComputable) {\n return;\n }\n\n progressHandler(e.loaded);\n };\n }\n }, {\n key: \"send\",\n value: function send() {\n var _this = this;\n\n var body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n return new Promise(function (resolve, reject) {\n _this._xhr.onload = function () {\n resolve(new Response(_this._xhr));\n };\n\n _this._xhr.onerror = function (err) {\n reject(err);\n };\n\n _this._xhr.send(body);\n });\n }\n }, {\n key: \"abort\",\n value: function abort() {\n this._xhr.abort();\n\n return Promise.resolve();\n }\n }, {\n key: \"getUnderlyingObject\",\n value: function getUnderlyingObject() {\n return this._xhr;\n }\n }]);\n\n return Request;\n}();\n\nvar Response = /*#__PURE__*/function () {\n function Response(xhr) {\n _classCallCheck(this, Response);\n\n this._xhr = xhr;\n }\n\n _createClass(Response, [{\n key: \"getStatus\",\n value: function getStatus() {\n return this._xhr.status;\n }\n }, {\n key: \"getHeader\",\n value: function getHeader(header) {\n return this._xhr.getResponseHeader(header);\n }\n }, {\n key: \"getBody\",\n value: function getBody() {\n return this._xhr.responseText;\n }\n }, {\n key: \"getUnderlyingObject\",\n value: function getUnderlyingObject() {\n return this._xhr;\n }\n }]);\n\n return Response;\n}();","var isReactNative = function isReactNative() {\n return typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative';\n};\n\nexport default isReactNative;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport isCordova from './isCordova.js';\nimport readAsByteArray from './readAsByteArray.js';\n\nvar FileSource = /*#__PURE__*/function () {\n // Make this.size a method\n function FileSource(file) {\n _classCallCheck(this, FileSource);\n\n this._file = file;\n this.size = file.size;\n }\n\n _createClass(FileSource, [{\n key: \"slice\",\n value: function slice(start, end) {\n // In Apache Cordova applications, a File must be resolved using\n // FileReader instances, see\n // https://cordova.apache.org/docs/en/8.x/reference/cordova-plugin-file/index.html#read-a-file\n if (isCordova()) {\n return readAsByteArray(this._file.slice(start, end));\n }\n\n var value = this._file.slice(start, end);\n\n return Promise.resolve({\n value: value\n });\n }\n }, {\n key: \"close\",\n value: function close() {// Nothing to do here since we don't need to release any resources.\n }\n }]);\n\n return FileSource;\n}();\n\nexport { FileSource as default };","var isCordova = function isCordova() {\n return typeof window !== 'undefined' && (typeof window.PhoneGap !== 'undefined' || typeof window.Cordova !== 'undefined' || typeof window.cordova !== 'undefined');\n};\n\nexport default isCordova;","/**\n * readAsByteArray converts a File object to a Uint8Array.\n * This function is only used on the Apache Cordova platform.\n * See https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/index.html#read-a-file\n */\nexport default function readAsByteArray(chunk) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function () {\n var value = new Uint8Array(reader.result);\n resolve({\n value: value\n });\n };\n\n reader.onerror = function (err) {\n reject(err);\n };\n\n reader.readAsArrayBuffer(chunk);\n });\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction len(blobOrArray) {\n if (blobOrArray === undefined) return 0;\n if (blobOrArray.size !== undefined) return blobOrArray.size;\n return blobOrArray.length;\n}\n/*\n Typed arrays and blobs don't have a concat method.\n This function helps StreamSource accumulate data to reach chunkSize.\n*/\n\n\nfunction concat(a, b) {\n if (a.concat) {\n // Is `a` an Array?\n return a.concat(b);\n }\n\n if (a instanceof Blob) {\n return new Blob([a, b], {\n type: a.type\n });\n }\n\n if (a.set) {\n // Is `a` a typed array?\n var c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n }\n\n throw new Error('Unknown data type');\n}\n\nvar StreamSource = /*#__PURE__*/function () {\n function StreamSource(reader) {\n _classCallCheck(this, StreamSource);\n\n this._buffer = undefined;\n this._bufferOffset = 0;\n this._reader = reader;\n this._done = false;\n }\n\n _createClass(StreamSource, [{\n key: \"slice\",\n value: function slice(start, end) {\n if (start < this._bufferOffset) {\n return Promise.reject(new Error(\"Requested data is before the reader's current offset\"));\n }\n\n return this._readUntilEnoughDataOrDone(start, end);\n }\n }, {\n key: \"_readUntilEnoughDataOrDone\",\n value: function _readUntilEnoughDataOrDone(start, end) {\n var _this = this;\n\n var hasEnoughData = end <= this._bufferOffset + len(this._buffer);\n\n if (this._done || hasEnoughData) {\n var value = this._getDataFromBuffer(start, end);\n\n var done = value == null ? this._done : false;\n return Promise.resolve({\n value: value,\n done: done\n });\n }\n\n return this._reader.read().then(function (_ref) {\n var value = _ref.value,\n done = _ref.done;\n\n if (done) {\n _this._done = true;\n } else if (_this._buffer === undefined) {\n _this._buffer = value;\n } else {\n _this._buffer = concat(_this._buffer, value);\n }\n\n return _this._readUntilEnoughDataOrDone(start, end);\n });\n }\n }, {\n key: \"_getDataFromBuffer\",\n value: function _getDataFromBuffer(start, end) {\n // Remove data from buffer before `start`.\n // Data might be reread from the buffer if an upload fails, so we can only\n // safely delete data when it comes *before* what is currently being read.\n if (start > this._bufferOffset) {\n this._buffer = this._buffer.slice(start - this._bufferOffset);\n this._bufferOffset = start;\n } // If the buffer is empty after removing old data, all data has been read.\n\n\n var hasAllDataBeenRead = len(this._buffer) === 0;\n\n if (this._done && hasAllDataBeenRead) {\n return null;\n } // We already removed data before `start`, so we just return the first\n // chunk from the buffer.\n\n\n return this._buffer.slice(0, end - start);\n }\n }, {\n key: \"close\",\n value: function close() {\n if (this._reader.cancel) {\n this._reader.cancel();\n }\n }\n }]);\n\n return StreamSource;\n}();\n\nexport { StreamSource as default };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport isReactNative from './isReactNative.js';\nimport uriToBlob from './uriToBlob.js';\nimport FileSource from './sources/FileSource.js';\nimport StreamSource from './sources/StreamSource.js';\n\nvar FileReader = /*#__PURE__*/function () {\n function FileReader() {\n _classCallCheck(this, FileReader);\n }\n\n _createClass(FileReader, [{\n key: \"openFile\",\n value: function openFile(input, chunkSize) {\n // In React Native, when user selects a file, instead of a File or Blob,\n // you usually get a file object {} with a uri property that contains\n // a local path to the file. We use XMLHttpRequest to fetch\n // the file blob, before uploading with tus.\n if (isReactNative() && input && typeof input.uri !== 'undefined') {\n return uriToBlob(input.uri).then(function (blob) {\n return new FileSource(blob);\n })[\"catch\"](function (err) {\n throw new Error(\"tus: cannot fetch `file.uri` as Blob, make sure the uri is correct and accessible. \".concat(err));\n });\n } // Since we emulate the Blob type in our tests (not all target browsers\n // support it), we cannot use `instanceof` for testing whether the input value\n // can be handled. Instead, we simply check is the slice() function and the\n // size property are available.\n\n\n if (typeof input.slice === 'function' && typeof input.size !== 'undefined') {\n return Promise.resolve(new FileSource(input));\n }\n\n if (typeof input.read === 'function') {\n chunkSize = Number(chunkSize);\n\n if (!Number.isFinite(chunkSize)) {\n return Promise.reject(new Error('cannot create source for stream without a finite value for the `chunkSize` option'));\n }\n\n return Promise.resolve(new StreamSource(input, chunkSize));\n }\n\n return Promise.reject(new Error('source object may only be an instance of File, Blob, or Reader in this environment'));\n }\n }]);\n\n return FileReader;\n}();\n\nexport { FileReader as default };","/**\n * uriToBlob resolves a URI to a Blob object. This is used for\n * React Native to retrieve a file (identified by a file://\n * URI) as a blob.\n */\nexport default function uriToBlob(uri) {\n return new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'blob';\n\n xhr.onload = function () {\n var blob = xhr.response;\n resolve(blob);\n };\n\n xhr.onerror = function (err) {\n reject(err);\n };\n\n xhr.open('GET', uri);\n xhr.send();\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport BaseUpload from '../upload.js';\nimport NoopUrlStorage from '../noopUrlStorage.js';\nimport { enableDebugLog } from '../logger.js';\nimport DetailedError from '../error.js';\nimport { canStoreURLs, WebStorageUrlStorage } from './urlStorage.js';\nimport DefaultHttpStack from './httpStack.js';\nimport FileReader from './fileReader.js';\nimport fingerprint from './fileSignature.js';\n\nvar defaultOptions = _objectSpread(_objectSpread({}, BaseUpload.defaultOptions), {}, {\n httpStack: new DefaultHttpStack(),\n fileReader: new FileReader(),\n urlStorage: canStoreURLs ? new WebStorageUrlStorage() : new NoopUrlStorage(),\n fingerprint: fingerprint\n});\n\nvar Upload = /*#__PURE__*/function (_BaseUpload) {\n _inherits(Upload, _BaseUpload);\n\n var _super = _createSuper(Upload);\n\n function Upload() {\n var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Upload);\n\n options = _objectSpread(_objectSpread({}, defaultOptions), options);\n return _super.call(this, file, options);\n }\n\n _createClass(Upload, null, [{\n key: \"terminate\",\n value: function terminate(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options = _objectSpread(_objectSpread({}, defaultOptions), options);\n return BaseUpload.terminate(url, options);\n }\n }]);\n\n return Upload;\n}(BaseUpload);\n\nvar _window = window,\n XMLHttpRequest = _window.XMLHttpRequest,\n Blob = _window.Blob;\nvar isSupported = XMLHttpRequest && Blob && typeof Blob.prototype.slice === 'function';\nexport { Upload, canStoreURLs, defaultOptions, isSupported, enableDebugLog, DefaultHttpStack, DetailedError };","import isReactNative from './isReactNative.js'; // TODO: Differenciate between input types\n\n/**\n * Generate a fingerprint for a file which will be used the store the endpoint\n *\n * @param {File} file\n * @param {Object} options\n * @param {Function} callback\n */\n\nexport default function fingerprint(file, options) {\n if (isReactNative()) {\n return Promise.resolve(reactNativeFingerprint(file, options));\n }\n\n return Promise.resolve(['tus-br', file.name, file.type, file.size, file.lastModified, options.endpoint].join('-'));\n}\n\nfunction reactNativeFingerprint(file, options) {\n var exifHash = file.exif ? hashCode(JSON.stringify(file.exif)) : 'noexif';\n return ['tus-rn', file.name || 'noname', file.size || 'nosize', exifHash, options.endpoint].join('/');\n}\n\nfunction hashCode(str) {\n /* eslint-disable no-bitwise */\n // from https://stackoverflow.com/a/8831937/151666\n var hash = 0;\n\n if (str.length === 0) {\n return hash;\n }\n\n for (var i = 0; i < str.length; i++) {\n var _char = str.charCodeAt(i);\n\n hash = (hash << 5) - hash + _char;\n hash &= hash; // Convert to 32bit integer\n }\n\n return hash;\n}","import { HttpRequest, HttpResponse, Upload } from \"tus-js-client\";\nimport BaseUpload, { InitialFile } from \"./base_upload\";\nimport { deleteUpload } from \"./tus_utils\";\n\ninterface Parameters {\n chunkSize: number;\n csrfToken: string;\n fieldName: string;\n file: File;\n formId: string;\n retryDelays: number[] | null;\n uploadIndex: number;\n uploadUrl: string;\n}\n\nexport default class TusUpload extends BaseUpload {\n public onError?: (error: Error) => void;\n public onProgress?: (bytesUploaded: number, bytesTotal: number) => void;\n public onSuccess?: () => void;\n private id: string;\n private upload: Upload;\n private csrfToken: string;\n\n constructor({\n chunkSize,\n csrfToken,\n fieldName,\n file,\n formId,\n retryDelays,\n uploadIndex,\n uploadUrl\n }: Parameters) {\n super({ name: file.name, status: \"uploading\", type: \"tus\", uploadIndex });\n\n this.csrfToken = csrfToken;\n\n this.upload = new Upload(file, {\n chunkSize,\n endpoint: uploadUrl,\n metadata: {\n fieldName: fieldName,\n filename: file.name,\n formId: formId\n },\n onAfterResponse: this.handleAfterReponse,\n onBeforeRequest: this.addCsrTokenToRequest,\n onError: this.handleError,\n onProgress: this.handleProgress,\n onSuccess: this.handleSucces,\n retryDelays: retryDelays || [0, 1000, 3000, 5000]\n });\n\n this.onError = undefined;\n this.onProgress = undefined;\n this.onSuccess = undefined;\n }\n\n public async abort(): Promise {\n await this.upload.abort(true);\n }\n\n public async delete(): Promise {\n if (!this.upload.url) {\n return Promise.resolve();\n }\n\n await deleteUpload(this.upload.url, this.csrfToken);\n }\n\n public getId(): string | undefined {\n return this.id;\n }\n\n public getSize(): number {\n return (this.upload.file as File).size;\n }\n\n public start(): void {\n this.upload.start();\n }\n\n private handleError = (error: Error) => {\n if (this.onError) {\n this.onError(error);\n } else {\n throw error;\n }\n };\n\n private handleProgress = (bytesUploaded: number, bytesTotal: number) => {\n if (this.onProgress) {\n this.onProgress(bytesUploaded, bytesTotal);\n }\n };\n\n private handleSucces = () => {\n if (this.onSuccess) {\n this.onSuccess();\n }\n };\n\n private addCsrTokenToRequest = (request: HttpRequest) => {\n request.setHeader(\"X-CSRFToken\", this.csrfToken);\n };\n\n private handleAfterReponse = (\n _request: HttpRequest,\n response: HttpResponse\n ) => {\n const resourceId = response.getHeader(\"ResourceId\");\n\n if (resourceId) {\n this.id = resourceId;\n }\n };\n\n getInitialFile(): InitialFile {\n return {\n id: this.id,\n name: this.name,\n size: this.getSize(),\n type: \"tus\",\n url: \"\"\n };\n }\n}\n","import { findInput, getMetadataFieldName, getUploadsFieldName } from \"./util\";\nimport RenderUploadFile from \"./render_upload_file\";\nimport DropArea from \"./drop_area\";\n\nimport S3Upload from \"./uploads/s3_upload\";\nimport EventEmitter from \"eventemitter3\";\nimport { createUploadedFile } from \"./uploads/uploaded_file\";\nimport TusUpload from \"./uploads/tus_upload\";\nimport BaseUpload, { InitialFile, UploadType } from \"./uploads/base_upload\";\nimport AcceptedFileTypes from \"./accepted_file_types\";\n\nexport type Translations = { [key: string]: string };\n\ninterface ClickEvent {\n fileName: string;\n fieldName: string;\n id?: string;\n type: UploadType;\n}\n\nexport interface Callbacks {\n onClick?: ({ fileName, fieldName, type }: ClickEvent) => void;\n onDelete?: (upload: BaseUpload) => void;\n onError?: (error: Error, upload: BaseUpload) => void;\n onProgress?: (\n bytesUploaded: number,\n bytesTotal: number,\n upload: BaseUpload\n ) => void;\n onSuccess?: (upload: BaseUpload) => void;\n}\n\ninterface ConstructorParams {\n callbacks: Callbacks;\n chunkSize: number;\n csrfToken: string;\n eventEmitter?: EventEmitter;\n fieldName: string;\n form: Element;\n formId: string;\n initial: InitialFile[];\n input: HTMLInputElement;\n multiple: boolean;\n parent: Element;\n prefix: string | null;\n retryDelays: number[] | null;\n s3UploadDir: string | null;\n skipRequired: boolean;\n supportDropArea: boolean;\n translations: Translations;\n uploadUrl: string;\n}\n\nclass FileField {\n acceptedFileTypes: AcceptedFileTypes;\n callbacks: Callbacks;\n chunkSize: number;\n csrfToken: string;\n eventEmitter?: EventEmitter;\n fieldName: string;\n form: Element;\n formId: string;\n multiple: boolean;\n nextUploadIndex: number;\n prefix: string | null;\n renderer: RenderUploadFile;\n retryDelays: number[] | null;\n s3UploadDir: string | null;\n supportDropArea: boolean;\n uploads: BaseUpload[];\n uploadUrl: string;\n\n constructor({\n callbacks,\n chunkSize,\n csrfToken,\n eventEmitter,\n fieldName,\n form,\n formId,\n initial,\n input,\n multiple,\n parent,\n prefix,\n retryDelays,\n s3UploadDir,\n skipRequired,\n supportDropArea,\n translations,\n uploadUrl\n }: ConstructorParams) {\n this.callbacks = callbacks;\n this.chunkSize = chunkSize;\n this.csrfToken = csrfToken;\n this.eventEmitter = eventEmitter;\n this.fieldName = fieldName;\n this.form = form;\n this.formId = formId;\n this.multiple = multiple;\n this.prefix = prefix;\n this.retryDelays = retryDelays;\n this.s3UploadDir = s3UploadDir;\n this.supportDropArea = supportDropArea && !input.disabled;\n this.uploadUrl = uploadUrl;\n this.acceptedFileTypes = new AcceptedFileTypes(input.accept);\n\n this.uploads = [];\n this.nextUploadIndex = 0;\n\n this.renderer = new RenderUploadFile({\n parent,\n input,\n skipRequired,\n translations\n });\n const filesContainer = this.renderer.container;\n\n if (supportDropArea) {\n this.initDropArea(filesContainer, input.accept);\n }\n\n if (initial) {\n this.addInitialFiles(initial);\n }\n\n this.checkDropHint();\n\n input.addEventListener(\"change\", this.onChange);\n filesContainer.addEventListener(\"click\", this.handleClick);\n }\n\n addInitialFiles(initialFiles: InitialFile[]): void {\n if (initialFiles.length === 0) {\n return;\n }\n\n const { multiple, renderer } = this;\n\n const addInitialFile = (initialFile: InitialFile): void => {\n const { size } = initialFile;\n const name =\n initialFile.type === \"s3\" && initialFile.original_name\n ? initialFile.original_name\n : initialFile.name;\n\n const element = renderer.addUploadedFile(\n name,\n this.nextUploadIndex,\n size\n );\n\n const upload = createUploadedFile({\n csrfToken: this.csrfToken,\n initialFile,\n uploadIndex: this.nextUploadIndex,\n uploadUrl: this.uploadUrl\n });\n this.uploads.push(upload);\n\n this.emitEvent(\"addUpload\", element, upload);\n };\n\n if (multiple) {\n initialFiles.forEach((file: InitialFile): void => {\n addInitialFile(file);\n this.nextUploadIndex += 1;\n });\n } else {\n const initialFile = initialFiles[0];\n\n if (initialFile) {\n addInitialFile(initialFile);\n }\n }\n }\n\n uploadFiles = async (files: File[]): Promise => {\n if (files.length === 0) {\n return;\n }\n\n if (!this.multiple) {\n for (const upload of this.uploads) {\n this.renderer.deleteFile(upload.uploadIndex);\n }\n\n this.uploads = [];\n const file = files[0];\n\n if (file) {\n await this.uploadFile(file);\n }\n } else {\n for await (const file of files) {\n await this.uploadFile(file);\n }\n }\n\n this.checkDropHint();\n };\n\n async uploadFile(file: File): Promise {\n const createUpload = (): S3Upload | TusUpload => {\n const { csrfToken, s3UploadDir } = this;\n\n if (s3UploadDir != null) {\n return new S3Upload({\n csrfToken,\n endpoint: uploadUrl,\n file,\n s3UploadDir,\n uploadIndex: newUploadIndex\n });\n } else {\n return new TusUpload({\n chunkSize: this.chunkSize,\n csrfToken: this.csrfToken,\n fieldName,\n file,\n formId,\n retryDelays: this.retryDelays,\n uploadIndex: newUploadIndex,\n uploadUrl\n });\n }\n };\n\n const { fieldName, formId, renderer, uploadUrl } = this;\n const fileName = file.name;\n const existingUpload = this.findUploadByName(fileName);\n const newUploadIndex = existingUpload\n ? existingUpload.uploadIndex\n : this.nextUploadIndex;\n\n if (!existingUpload) {\n this.nextUploadIndex += 1;\n }\n\n if (existingUpload) {\n await this.removeExistingUpload(existingUpload);\n }\n\n const upload = createUpload();\n\n upload.onError = error => this.handleError(upload, error);\n upload.onProgress = (bytesUploaded, bytesTotal) =>\n this.handleProgress(upload, bytesUploaded, bytesTotal);\n upload.onSuccess = () => this.handleSuccess(upload);\n upload.start();\n\n this.uploads.push(upload);\n\n const element = renderer.addNewUpload(fileName, newUploadIndex);\n this.emitEvent(\"addUpload\", element, upload);\n }\n\n getUploadByIndex(uploadIndex: number): BaseUpload | undefined {\n return this.uploads.find(upload => upload.uploadIndex === uploadIndex);\n }\n\n findUploadByName(fileName: string): BaseUpload | undefined {\n return this.uploads.find(upload => upload.name === fileName);\n }\n\n async removeExistingUpload(upload: BaseUpload): Promise {\n const element = this.renderer.findFileDiv(upload.uploadIndex);\n\n if (element) {\n this.emitEvent(\"removeUpload\", element, upload);\n }\n\n if (upload.status === \"uploading\") {\n this.renderer.disableCancel(upload.uploadIndex);\n await upload.abort();\n } else if (upload.status === \"done\") {\n this.renderer.disableDelete(upload.uploadIndex);\n\n try {\n await upload.delete();\n } catch {\n this.renderer.setDeleteFailed(upload.uploadIndex);\n return;\n }\n }\n\n this.removeUploadFromList(upload);\n this.updatePlaceholderInput();\n }\n\n onChange = (e: Event): void => {\n const files = (e.target as HTMLInputElement).files || ([] as File[]);\n const acceptedFiles: File[] = [];\n const invalidFiles: File[] = [];\n\n for (const file of files) {\n if (this.acceptedFileTypes.isAccepted(file.name)) {\n acceptedFiles.push(file);\n } else {\n invalidFiles.push(file);\n }\n }\n\n if (invalidFiles) {\n this.handleInvalidFiles([...invalidFiles]);\n }\n\n if (acceptedFiles) {\n void this.uploadFiles([...acceptedFiles]);\n }\n\n this.renderer.clearInput();\n };\n\n handleInvalidFiles = (files: File[]): void => {\n this.renderer.setErrorInvalidFiles(files);\n };\n\n handleClick = (e: Event): void => {\n const target = e.target as HTMLElement;\n\n const getUpload = (): BaseUpload | undefined => {\n const dataIndex = target.getAttribute(\"data-index\");\n\n if (!dataIndex) {\n return undefined;\n }\n\n const uploadIndex = parseInt(dataIndex, 10);\n return this.getUploadByIndex(uploadIndex);\n };\n\n if (\n target.classList.contains(\"dff-delete\") &&\n !target.classList.contains(\"dff-disabled\")\n ) {\n e.preventDefault();\n\n const upload = getUpload();\n\n if (upload) {\n void this.removeExistingUpload(upload);\n }\n } else if (target.classList.contains(\"dff-cancel\")) {\n e.preventDefault();\n\n const upload = getUpload();\n\n if (upload) {\n void this.handleCancel(upload);\n }\n } else if (target.classList.contains(\"dff-filename\")) {\n e.preventDefault();\n\n const upload = getUpload();\n\n if (upload?.status === \"done\" && this.callbacks.onClick) {\n this.callbacks.onClick({\n fileName: upload.name,\n fieldName: this.fieldName,\n id: upload.getId(),\n type: upload.type\n });\n }\n }\n };\n\n handleProgress = (\n upload: BaseUpload,\n bytesUploaded: number,\n bytesTotal: number\n ): void => {\n const percentage = ((bytesUploaded / bytesTotal) * 100).toFixed(2);\n\n this.renderer.updateProgress(upload.uploadIndex, percentage);\n\n const { onProgress } = this.callbacks;\n\n if (onProgress) {\n if (upload instanceof TusUpload) {\n onProgress(bytesUploaded, bytesTotal, upload);\n }\n }\n };\n\n handleError = (upload: BaseUpload, error: Error): void => {\n this.renderer.setError(upload.uploadIndex);\n upload.status = \"error\";\n\n const { onError } = this.callbacks;\n\n if (onError) {\n if (upload instanceof TusUpload) {\n onError(error, upload);\n }\n }\n };\n\n handleSuccess = (upload: BaseUpload): void => {\n const { renderer } = this;\n\n this.updatePlaceholderInput();\n\n renderer.clearInput();\n renderer.setSuccess(upload.uploadIndex, upload.getSize());\n upload.status = \"done\";\n\n const { onSuccess } = this.callbacks;\n\n const element = this.renderer.findFileDiv(\n upload.uploadIndex\n ) as HTMLElement;\n this.emitEvent(\"uploadComplete\", element, upload);\n\n if (onSuccess && upload.type === \"tus\") {\n onSuccess(upload);\n }\n };\n\n removeUploadFromList(upload: BaseUpload): void {\n this.renderer.deleteFile(upload.uploadIndex);\n\n const index = this.uploads.indexOf(upload);\n\n if (index >= 0) {\n this.uploads.splice(index, 1);\n }\n\n this.checkDropHint();\n\n const { onDelete } = this.callbacks;\n\n if (onDelete) {\n onDelete(upload);\n }\n }\n\n async handleCancel(upload: BaseUpload): Promise {\n this.renderer.disableCancel(upload.uploadIndex);\n await upload.abort();\n this.removeUploadFromList(upload);\n }\n\n initDropArea(container: Element, inputAccept: string): void {\n new DropArea({\n container,\n inputAccept,\n onUploadFiles: this.uploadFiles,\n renderer: this.renderer\n });\n }\n\n checkDropHint(): void {\n if (!this.supportDropArea) {\n return;\n }\n\n const nonEmptyUploads = this.uploads.filter(e => e);\n\n if (nonEmptyUploads.length === 0) {\n this.renderer.renderDropHint();\n } else {\n this.renderer.removeDropHint();\n }\n }\n\n updatePlaceholderInput(): void {\n const input = findInput(\n this.form,\n getUploadsFieldName(this.fieldName, this.prefix),\n this.prefix\n );\n if (!input) {\n return;\n }\n\n const placeholdersInfo: InitialFile[] = this.uploads.map(upload =>\n upload.getInitialFile()\n );\n\n input.value = JSON.stringify(placeholdersInfo);\n }\n\n getMetaDataField(): HTMLElement | null {\n return findInput(\n this.form,\n getMetadataFieldName(this.fieldName, this.prefix),\n this.prefix\n );\n }\n\n emitEvent(eventName: string, element: HTMLElement, upload: BaseUpload): void {\n if (this.eventEmitter) {\n this.eventEmitter.emit(eventName, {\n element,\n fieldName: this.fieldName,\n fileName: upload.name,\n metaDataField: this.getMetaDataField(),\n upload\n });\n }\n }\n}\n\nexport default FileField;\n","import EventEmitter from \"eventemitter3\";\nimport FileField, { Callbacks, Translations } from \"./file_field\";\nimport { InitialFile } from \"./uploads/base_upload\";\nimport {\n findInput,\n getInputValueForFormAndPrefix,\n getUploadsFieldName\n} from \"./util\";\n\nexport interface Options {\n callbacks?: Callbacks;\n chunkSize?: number;\n eventEmitter?: EventEmitter;\n prefix?: string;\n retryDelays?: number[];\n skipRequired?: boolean;\n supportDropArea?: boolean;\n}\n\nconst initUploadFields = (form: Element, options: Options = {}): void => {\n const matchesPrefix = (fieldName: string): boolean => {\n if (!(options && options.prefix)) {\n return true;\n }\n\n return fieldName.startsWith(`${options.prefix}-`);\n };\n\n const getPrefix = (): string | null =>\n options && options.prefix ? options.prefix : null;\n\n const getInputValue = (fieldName: string): string | undefined =>\n getInputValueForFormAndPrefix(form, fieldName, getPrefix());\n\n const getInitialFiles = (fieldName: string): InitialFile[] => {\n const data = getInputValue(getUploadsFieldName(fieldName, getPrefix()));\n\n if (!data) {\n return [];\n }\n\n return JSON.parse(data) as InitialFile[];\n };\n\n const uploadUrl = getInputValue(\"upload_url\");\n const formId = getInputValue(\"form_id\");\n const s3UploadDir = getInputValue(\"s3_upload_dir\");\n const skipRequired = options.skipRequired || false;\n const prefix = getPrefix();\n const csrfToken = findInput(form, \"csrfmiddlewaretoken\", null)?.value;\n\n if (!csrfToken) {\n throw Error(\"Csrf token not found\");\n }\n\n if (!formId || !uploadUrl) {\n return;\n }\n\n form.querySelectorAll(\".dff-uploader\").forEach(uploaderDiv => {\n const container = uploaderDiv.querySelector(\n \".dff-container\"\n ) as HTMLElement;\n\n if (!container) {\n return;\n }\n\n const input = container.querySelector(\n \"input[type=file]\"\n ) as HTMLInputElement;\n\n if (!(input && matchesPrefix(input.name))) {\n return;\n }\n\n const fieldName = input.name;\n const { multiple } = input;\n const initial = getInitialFiles(fieldName);\n const dataTranslations = container.getAttribute(\"data-translations\");\n const translations: Translations = dataTranslations\n ? (JSON.parse(dataTranslations) as Translations)\n : {};\n const supportDropArea = !(options.supportDropArea === false);\n\n new FileField({\n callbacks: options.callbacks || {},\n chunkSize: options.chunkSize || 2621440,\n csrfToken,\n eventEmitter: options.eventEmitter,\n fieldName,\n form,\n formId,\n s3UploadDir: s3UploadDir || null,\n initial,\n input,\n multiple,\n parent: container,\n prefix,\n retryDelays: options.retryDelays || null,\n skipRequired,\n supportDropArea,\n translations,\n uploadUrl\n });\n });\n};\n\nexport default initUploadFields;\n","import autoInitFileForms from \"./auto_init_file_forms\";\nimport initFormSet from \"./init_form_set\";\nimport initUploadFields from \"./init_upload_fields\";\n\ndeclare const window: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nwindow.autoInitFileForms = autoInitFileForms; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\nwindow.initFormSet = initFormSet; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\nwindow.initUploadFields = initUploadFields; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\n","import initUploadFields, { Options } from \"./init_upload_fields\";\nimport { getInputNameWithPrefix, getInputValueForFormAndPrefix } from \"./util\";\n\nconst initFormSet = (form: Element, optionsParam: Options | string): void => {\n let options: Options;\n\n if (typeof optionsParam === \"string\") {\n options = { prefix: optionsParam };\n } else {\n options = optionsParam;\n }\n\n const prefix = options.prefix || \"form\";\n\n const totalFormsValue = getInputValueForFormAndPrefix(\n form,\n \"TOTAL_FORMS\",\n prefix\n );\n\n if (!totalFormsValue) {\n return;\n }\n\n const formCount = parseInt(totalFormsValue, 10);\n\n for (let i = 0; i < formCount; i += 1) {\n const subFormPrefix = getInputNameWithPrefix(`${i}`, null);\n initUploadFields(form, {\n ...options,\n prefix: `${prefix}-${subFormPrefix}`\n });\n }\n};\n\nexport default initFormSet;\n"],"names":["findForm","element","parent","parentElement","tagName","_typeof","obj","Symbol","iterator","constructor","prototype","_toPropertyKey","arg","key","input","hint","prim","toPrimitive","undefined","res","call","TypeError","String","Number","_defineProperty","value","toPropertyKey","Object","defineProperty","enumerable","configurable","writable","getInputNameWithPrefix","fieldName","prefix","getInputNameWithoutPrefix","slice","length","findInput","form","inputNameWithPrefix","querySelector","getUploadsFieldName","getInputValueForFormAndPrefix","matchHtmlRegExp","escapeHtml_1","string","escape","str","match","exec","html","index","lastIndex","charCodeAt","substring","RenderUploadFile","_ref","skipRequired","translations","this","div","document","createElement","className","appendChild","container","createFilesContainer","errors","createErrorContainer","required","addNewUpload","filename","uploadIndex","addFile","progressSpan","innerSpan","cancelLink","innerHTML","Cancel","setAttribute","href","addUploadedFile","filesize","setSuccess","clearInput","deleteFile","findFileDiv","remove","disableCancel","cancelSpan","findCancelSpan","classList","add","disableDelete","deleteLink","findDeleteLink","removeDropHint","dropHint","renderDropHint","setDeleteFailed","setErrorMessage","enableDelete","setError","el","removeProgress","removeCancel","setErrorInvalidFiles","files","errorsMessages","file","msg","innerText","name","replaceChildren","size","fileSizeInfo","formatBytes","bytes","decimals","dm","i","Math","floor","log","parseFloat","toFixed","Delete","updateProgress","percentage","innerProgressSpan","style","width","nameSpan","message","originalMessageSpan","span","Mime","_types","create","_extensions","arguments","define","bind","getType","getExtension","Mime$1","typeMap","force","type","extensions","map","t","toLowerCase","ext","Error","substr","path","last","replace","hasPath","test","RegExp","$1","check","it","global","globalThis","window","self","Function","fails","error","descriptors","require$$0","get","functionBindNative","hasOwnProperty","NATIVE_BIND","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","apply","documentAll","all","documentAll_1","IS_HTMLDDA","isCallable","argument","isNullOrUndefined","$TypeError","requireObjectCoercible","$Object","toObject","hasOwnProperty_1","hasOwn","DESCRIPTORS","require$$1","getDescriptor","getOwnPropertyDescriptor","EXISTS","functionName","PROPER","CONFIGURABLE","defineGlobalProperty","SHARED","sharedStore","store","require$$2","functionToString","toString","inspectSource","version","WeakMap","weakMapBasicDetection","isObject","ie8DomDefine","a","v8PrototypeDefineBug","$String","anObject","functionCall","objectIsPrototypeOf","isPrototypeOf","userAgent","navigator","process","Deno","versions","v8","split","V8_VERSION","symbolConstructorDetection","getOwnPropertySymbols","symbol","sham","useSymbolAsUid","getBuiltIn","namespace","method","isSymbol","require$$3","$Symbol","tryToString","aCallable","sharedModule","push","mode","copyright","license","source","uncurryThis","id","postfix","random","uid","shared","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","getMethod","V","P","func","ordinaryToPrimitive","pref","val","valueOf","TO_PRIMITIVE","wellKnownSymbol","result","exoticToPrim","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","objectDefineProperty","f","O","Attributes","current","set","has","definePropertyModule","createPropertyDescriptor","bitmap","createNonEnumerableProperty","object","keys","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","state","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","CONFIGURABLE_FUNCTION_NAME","require$$6","enforceInternalState","require$$7","getInternalState","stringSlice","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","exports","options","getter","setter","arity","defineBuiltInAccessor","target","descriptor","regExpFlags","that","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","RegExpPrototype","FORCED","INDICES_SUPPORT","calls","expected","addGetter","chr","pairs","basename","start","end","matchedSlash","WIN_SLASH","WIN_NO_SLASH","DOT_LITERAL","SLASH_LITERAL","QMARK","END_ANCHOR","START_ANCHOR","DOTS_SLASH","POSIX_CHARS","PLUS_LITERAL","QMARK_LITERAL","ONE_CHAR","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","WINDOWS_CHARS","constants","MAX_LENGTH","alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_GRAVE_ACCENT","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","SEP","extglobChars","chars","open","close","globChars","Array","isArray","hasRegexChars","isRegexChar","escapeRegex","toPosixSlashes","removeBackslashes","isWindows","windows","escapeLast","char","lastIdx","idx","lastIndexOf","removePrefix","output","startsWith","wrapOutput","contains","negated","utils","isPathSeparator","code","depth","token","isPrefix","isGlobstar","Infinity","scan_1","scan","opts","scanToEnd","parts","slashes","tokens","prev","isBrace","isBracket","isGlob","isExtglob","braceEscaped","backslashes","negatedExtglob","finished","braces","eos","advance","next","noext","nonegate","noparen","base","glob","unescape","maxDepth","prevIndex","n","POSIX_REGEX_SOURCE","expandRange","args","sort","ex","v","syntaxError","parse","max","maxLength","min","len","SyntaxError","bos","prepend","capture","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","dot","nodot","qmarkNoDot","star","bash","noextglob","consumed","backtrack","brackets","parens","quotes","extglobs","stack","peek","remaining","consume","num","append","negate","count","increment","decrement","pop","tok","extglob","inner","extglobOpen","conditions","extglobClose","rest","extglobStar","includes","expression","fastpaths","m","esc","first","repeat","posix","pre","indexOf","keepQuotes","strictBrackets","nobracket","prevValue","literalBrackets","escaped","nobrace","outputIndex","tokensIndex","brace","dots","arr","range","unshift","comma","out","toks","regex","noglobstar","prior","before","isStart","afterStar","after","strictSlashes","suffix","slashDot","picomatch","returnState","fns","arrayMatcher","isMatch","isState","compileRe","makeRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","matcher","returnObject","onIgnore","picomatch$2","format","matchBase","Boolean","patterns","pattern","p","toRegex","returnOutput","parsed","flags","nocase","err","debug","AcceptedFileTypes","inputAccept","mimeTypes","mimeType","trim","filter","forEach","fileType","parseInputAccept","isAccepted","fileName","isMimeTypeAccepted","mime","isExtensionAccepted","getEntriesFromDirectory","async","Promise","resolve","reject","directoryEntry","createReader","readEntries","getFileFromFileEntry","fileEntry","getFilesFromFileSystemEntries","entry","entries","isFile","isDirectory","entriesFromDirectory","DropArea","onUploadFiles","renderer","e","dragEvent","preventDefault","stopPropagation","dataTransfer","items","item","webkitGetAsEntry","getFilesFromDataTransfer","acceptedFiles","invalidFiles","acceptedFileTypes","console","uploadFiles","addEventListener","onDrop","BaseUpload$1","status","abort","delete","urlJoin","strArray","resultArray","shift","component","normalize","splice","S3Upload","BaseUpload","csrfToken","endpoint","s3UploadDir","super","uploadId","createdPromise","chunks","chunkState","uploading","onError","onProgress","onSuccess","initChunks","catch","xhr","encodeURIComponent","uploadIdEnc","headers","Headers","url","urljoin","fetch","then","response","json","abortMultipartUpload","getId","getInitialFile","original_name","getSize","createUpload","desiredChunkSize","ceil","minChunkSize","chunkSize","uploaded","busy","done","_ref3","accept","body","JSON","stringify","contentType","data","createMultipartUpload","uploadParts","handleError","need","every","completeUpload","candidates","uploadPart","_ref4","number","prepareUploadPart","_ref2","uploadPartBytes","onPartProgress","sent","totalUploaded","reduce","c","onPartComplete","etag","part","PartNumber","ETag","XMLHttpRequest","responseType","upload","ev","lengthComputable","loaded","getResponseHeader","send","b","completeMultipartUpload","deleteUpload","onload","setRequestHeader","BaseUploadedFile","PlaceholderFile","initialFile","UploadedS3File","ExistingFile","UploadedTusFile","uploadUrl","_hasbtoa","btoa","_hasBuffer","Buffer","_TE","TextDecoder","TextEncoder","b64chs","_fromCC","tab","fromCharCode","_mkUriSafe","Uint8Array","from","src","m0","btoaPolyfill","bin","u32","c0","c1","c2","asc","pad","_btoa","_fromUint8Array","u8a","strs","l","subarray","cb_utob","cc","re_utob","utob","u","_encode","s","encode","urlsafe","gBase64","decode","decodeURIComponent","querystringify$1","isNaN","query","parser","port","protocol","qs","controlOrWhitespace","CRHTLF","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","hash","lolcation","loc","location","finaldestination","Url","pathname","scheme","extractProtocol","forwardSlashes","otherSlashes","slashesCount","relative","extracted","instruction","instructions","charAt","concat","up","host","hostname","username","password","auth","origin","ins","_defineProperties","props","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","Reflect","construct","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_wrapNativeSuper","Class","_cache","Map","Wrapper","_construct","_setPrototypeOf","Parent","instance","Proxy","o","setPrototypeOf","__proto__","getPrototypeOf","DetailedError","_Error","subClass","superClass","_inherits","Constructor","protoProps","staticProps","_super","_this","causingErr","req","_classCallCheck","originalRequest","originalResponse","causingError","requestId","getHeader","getURL","getStatus","getBody","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","defaultOptions","fingerprint","uploadSize","onChunkComplete","onUploadUrlAvailable","overridePatchMethod","addRequestId","onBeforeRequest","onAfterResponse","onShouldRetry","retryDelays","parallelUploads","parallelUploadBoundaries","storeFingerprintForResuming","removeFingerprintOnSuccess","uploadLengthDeferred","uploadDataDuringCreation","urlStorage","fileReader","httpStack","_urlStorage","_req","_fingerprint","_urlStorageKey","_offset","_aborted","_size","_source","_retryAttempt","_retryTimeout","_offsetBeforeRetry","_parallelUploads","_parallelUploadUrls","findUploadsByFingerprint","previousUpload","parallelUploadUrls","urlStorageKey","_this2","optionName","_emitError","openFile","_startParallelUpload","_startSingleUpload","_this$options$paralle","_this3","totalSize","totalProgress","partCount","partSize","splitSizeIntoParts","uploads","lastPartProgress","newPartProgress","_emitProgress","_saveUploadInUrlStorage","_openRequest","setHeader","encodeMetadata","_sendRequest","inStatusCategory","resolveUrl","_emitSuccess","_emitHttpError","_resumeUpload","_createUpload","shouldTerminate","_this4","clearTimeout","terminate","_removeFromUrlStorage","_this5","shouldRetry","delay","setTimeout","bytesSent","bytesTotal","bytesAccepted","_this6","promise","_addChunkToRequest","_handleUploadResponse","_performUpload","_this7","offset","parseInt","_this8","_this9","setProgressHandler","_emitChunkComplete","openRequest","_this10","removeUpload","_this11","storedUpload","creationTime","Date","addUpload","sendRequest","remainingDelays","newOptions","Base64","category","createRequest","_ref5","_ref6","r","retryAttempt","online","onLine","link","URL","NoopUrlStorage","hasStorage","originalValue","localStorage","getItem","setItem","removeItem","SECURITY_ERR","QUOTA_EXCEEDED_ERR","canStoreURLs","WebStorageUrlStorage","results","_findEntries","round","_key","_createClass","XHRHttpStack","Request","_xhr","_method","_url","_headers","header","progressHandler","onprogress","Response","onerror","responseText","isReactNative","product","FileSource","_file","PhoneGap","Cordova","cordova","chunk","reader","FileReader","readAsArrayBuffer","blobOrArray","StreamSource","_buffer","_bufferOffset","_reader","_done","_readUntilEnoughDataOrDone","hasEnoughData","_getDataFromBuffer","read","Blob","hasAllDataBeenRead","cancel","uri","blob","isFinite","DefaultHttpStack","exifHash","exif","hashCode","reactNativeFingerprint","lastModified","Upload","_BaseUpload","TusUpload","formId","bytesUploaded","request","_request","resourceId","handleAfterReponse","addCsrTokenToRequest","handleProgress","handleSucces","FileField","callbacks","eventEmitter","initial","multiple","supportDropArea","uploadFile","checkDropHint","handleInvalidFiles","getUpload","dataIndex","getAttribute","getUploadByIndex","removeExistingUpload","handleCancel","onClick","updatePlaceholderInput","emitEvent","disabled","nextUploadIndex","filesContainer","initDropArea","addInitialFiles","onChange","handleClick","initialFiles","addInitialFile","createUploadedFile","existingUpload","findUploadByName","newUploadIndex","handleSuccess","find","removeUploadFromList","onDelete","placeholdersInfo","getMetaDataField","getMetadataFieldName","eventName","emit","metaDataField","initUploadFields","getPrefix","getInputValue","querySelectorAll","uploaderDiv","matchesPrefix","getInitialFiles","dataTranslations","autoInitFileForms","values","Set","initFormSet","optionsParam","totalFormsValue","formCount","subFormPrefix"],"mappings":"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","x_google_ignoreList":[1,2,3,4,6,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,68,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91]} \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 4d3a870c0..f858351a2 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -218,9 +218,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz", - "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -230,7 +230,7 @@ "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { @@ -1740,9 +1740,9 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1752,7 +1752,7 @@ "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-typescript": { @@ -1862,9 +1862,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.0.tgz", + "integrity": "sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -2723,15 +2723,6 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, - "node_modules/@nicolo-ribaudo/semver-v6": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", - "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2794,9 +2785,9 @@ } }, "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.2.tgz", - "integrity": "sha512-NGTwaJxIO0klMs+WSFFtBP7b9TdTJ3K76HZkewT8/+yHzMiUGVQgaPtLQxNVYIgT5F7lxkEyVID+yS3K7bhCow==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz", + "integrity": "sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", @@ -3025,9 +3016,9 @@ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" }, "node_modules/@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==", + "version": "20.4.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.3.tgz", + "integrity": "sha512-Yu3+r4Mn/iY6Mf0aihncZQ1qOjOUrCiodbHHY1hds5O+7BbKp9t+Li7zLO13zO8j9L2C6euz8xsYQP0rjGvVXw==", "dev": true }, "node_modules/@types/picomatch": { @@ -3076,23 +3067,22 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.0.0.tgz", - "integrity": "sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", + "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.0", - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/type-utils": "6.0.0", - "@typescript-eslint/utils": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/type-utils": "6.1.0", + "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", "natural-compare": "^1.4.0", "natural-compare-lite": "^1.4.0", - "semver": "^7.5.0", + "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, "engines": { @@ -3146,15 +3136,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.0.0.tgz", - "integrity": "sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.1.0.tgz", + "integrity": "sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4" }, "engines": { @@ -3174,13 +3164,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.0.0.tgz", - "integrity": "sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", + "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0" + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3191,13 +3181,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.0.0.tgz", - "integrity": "sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", + "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.0.0", - "@typescript-eslint/utils": "6.0.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/utils": "6.1.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3218,9 +3208,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.0.0.tgz", - "integrity": "sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", + "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3231,17 +3221,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.0.0.tgz", - "integrity": "sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", + "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.5.0", + "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, "engines": { @@ -3291,19 +3281,18 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.0.0.tgz", - "integrity": "sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", + "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.3.0", - "@types/json-schema": "^7.0.11", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.0.0", - "eslint-scope": "^5.1.1", - "semver": "^7.5.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "semver": "^7.5.4" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3350,12 +3339,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.0.0.tgz", - "integrity": "sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", + "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.0.0", + "@typescript-eslint/types": "6.1.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3560,6 +3549,26 @@ "get-intrinsic": "^1.1.3" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -3719,42 +3728,42 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz", - "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.1", - "@nicolo-ribaudo/semver-v6": "^6.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz", - "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1", + "@babel/helper-define-polyfill-provider": "^0.4.2", "core-js-compat": "^3.31.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz", - "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.1" + "@babel/helper-define-polyfill-provider": "^0.4.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-preset-current-node-syntax": { @@ -3923,9 +3932,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001515", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001515.tgz", - "integrity": "sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==", + "version": "1.0.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", "dev": true, "funding": [ { @@ -4257,9 +4266,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.460", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.460.tgz", - "integrity": "sha512-kKiHnbrHME7z8E6AYaw0ehyxY5+hdaRmeUbjBO22LZMdqTYCO29EvF0T1cQ3pJ1RN5fyMcHl1Lmcsdt9WWJpJQ==", + "version": "1.4.468", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz", + "integrity": "sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==", "dev": true }, "node_modules/emittery": { @@ -4290,12 +4299,13 @@ } }, "node_modules/es-abstract": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.3.tgz", - "integrity": "sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", @@ -4322,10 +4332,13 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", "safe-regex-test": "^1.0.0", "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", @@ -4582,9 +4595,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "version": "7.33.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.0.tgz", + "integrity": "sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==", "dev": true, "dependencies": { "array-includes": "^3.1.6", @@ -4600,7 +4613,7 @@ "object.values": "^1.1.6", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "engines": { @@ -4640,25 +4653,19 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", + "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -4740,22 +4747,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -5359,12 +5350,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -5848,16 +5833,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -5878,6 +5859,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -8648,9 +8635,9 @@ } }, "node_modules/rollup": { - "version": "3.26.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz", - "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==", + "version": "3.26.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.3.tgz", + "integrity": "sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -8696,6 +8683,24 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -8731,9 +8736,9 @@ } }, "node_modules/sass": { - "version": "1.63.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.6.tgz", - "integrity": "sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==", + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", + "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -9045,9 +9050,9 @@ } }, "node_modules/terser": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.0.tgz", - "integrity": "sha512-JpcpGOQLOXm2jsomozdMDpd5f8ZHh1rR48OFgWUH3QsyZcfPgv2qDCYbcDEAYNd4OZRj2bWYKpwdll/udZCk/Q==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -9231,6 +9236,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-byte-offset": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", @@ -9443,17 +9480,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.10.tgz", - "integrity": "sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -9713,9 +9749,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz", - "integrity": "sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", @@ -10738,9 +10774,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -10833,9 +10869,9 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.0.tgz", + "integrity": "sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==", "dev": true }, "@eslint/eslintrc": { @@ -11487,12 +11523,6 @@ } } }, - "@nicolo-ribaudo/semver-v6": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", - "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", - "dev": true - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -11530,9 +11560,9 @@ } }, "@rollup/plugin-commonjs": { - "version": "25.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.2.tgz", - "integrity": "sha512-NGTwaJxIO0klMs+WSFFtBP7b9TdTJ3K76HZkewT8/+yHzMiUGVQgaPtLQxNVYIgT5F7lxkEyVID+yS3K7bhCow==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz", + "integrity": "sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==", "dev": true, "requires": { "@rollup/pluginutils": "^5.0.1", @@ -11717,9 +11747,9 @@ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" }, "@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==", + "version": "20.4.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.3.tgz", + "integrity": "sha512-Yu3+r4Mn/iY6Mf0aihncZQ1qOjOUrCiodbHHY1hds5O+7BbKp9t+Li7zLO13zO8j9L2C6euz8xsYQP0rjGvVXw==", "dev": true }, "@types/picomatch": { @@ -11768,23 +11798,22 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.0.0.tgz", - "integrity": "sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", + "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", "dev": true, "requires": { - "@eslint-community/regexpp": "^4.5.0", - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/type-utils": "6.0.0", - "@typescript-eslint/utils": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/type-utils": "6.1.0", + "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", "natural-compare": "^1.4.0", "natural-compare-lite": "^1.4.0", - "semver": "^7.5.0", + "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, "dependencies": { @@ -11815,58 +11844,58 @@ } }, "@typescript-eslint/parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.0.0.tgz", - "integrity": "sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.1.0.tgz", + "integrity": "sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.0.0.tgz", - "integrity": "sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", + "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", "dev": true, "requires": { - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0" + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0" } }, "@typescript-eslint/type-utils": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.0.0.tgz", - "integrity": "sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", + "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "6.0.0", - "@typescript-eslint/utils": "6.0.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/utils": "6.1.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/types": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.0.0.tgz", - "integrity": "sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", + "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.0.0.tgz", - "integrity": "sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", + "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/visitor-keys": "6.0.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.5.0", + "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, "dependencies": { @@ -11897,19 +11926,18 @@ } }, "@typescript-eslint/utils": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.0.0.tgz", - "integrity": "sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", + "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", "dev": true, "requires": { - "@eslint-community/eslint-utils": "^4.3.0", - "@types/json-schema": "^7.0.11", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "6.0.0", - "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.0.0", - "eslint-scope": "^5.1.1", - "semver": "^7.5.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "semver": "^7.5.4" }, "dependencies": { "lru-cache": { @@ -11939,12 +11967,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.0.0.tgz", - "integrity": "sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", + "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", "dev": true, "requires": { - "@typescript-eslint/types": "6.0.0", + "@typescript-eslint/types": "6.1.0", "eslint-visitor-keys": "^3.4.1" } }, @@ -12091,6 +12119,20 @@ "get-intrinsic": "^1.1.3" } }, + "arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -12210,33 +12252,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz", - "integrity": "sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", "dev": true, "requires": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.1", - "@nicolo-ribaudo/semver-v6": "^6.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz", - "integrity": "sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.1", + "@babel/helper-define-polyfill-provider": "^0.4.2", "core-js-compat": "^3.31.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz", - "integrity": "sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.1" + "@babel/helper-define-polyfill-provider": "^0.4.2" } }, "babel-preset-current-node-syntax": { @@ -12355,9 +12397,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001515", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001515.tgz", - "integrity": "sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==", + "version": "1.0.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", "dev": true }, "chalk": { @@ -12597,9 +12639,9 @@ } }, "electron-to-chromium": { - "version": "1.4.460", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.460.tgz", - "integrity": "sha512-kKiHnbrHME7z8E6AYaw0ehyxY5+hdaRmeUbjBO22LZMdqTYCO29EvF0T1cQ3pJ1RN5fyMcHl1Lmcsdt9WWJpJQ==", + "version": "1.4.468", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz", + "integrity": "sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==", "dev": true }, "emittery": { @@ -12624,12 +12666,13 @@ } }, "es-abstract": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.3.tgz", - "integrity": "sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", "dev": true, "requires": { "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", @@ -12656,10 +12699,13 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", "safe-regex-test": "^1.0.0", "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", @@ -12805,16 +12851,6 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -12994,9 +13030,9 @@ } }, "eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "version": "7.33.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.0.tgz", + "integrity": "sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==", "dev": true, "requires": { "array-includes": "^3.1.6", @@ -13012,7 +13048,7 @@ "object.values": "^1.1.6", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "dependencies": { @@ -13039,21 +13075,13 @@ } }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", + "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } + "estraverse": "^5.2.0" } }, "eslint-visitor-keys": { @@ -13438,12 +13466,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -13776,16 +13798,12 @@ } }, "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" } }, "is-weakref": { @@ -13797,6 +13815,12 @@ "call-bind": "^1.0.2" } }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -15871,9 +15895,9 @@ } }, "rollup": { - "version": "3.26.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz", - "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==", + "version": "3.26.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.3.tgz", + "integrity": "sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -15898,6 +15922,18 @@ "queue-microtask": "^1.2.2" } }, + "safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -15916,9 +15952,9 @@ } }, "sass": { - "version": "1.63.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.6.tgz", - "integrity": "sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==", + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", + "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -16156,9 +16192,9 @@ "dev": true }, "terser": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.0.tgz", - "integrity": "sha512-JpcpGOQLOXm2jsomozdMDpd5f8ZHh1rR48OFgWUH3QsyZcfPgv2qDCYbcDEAYNd4OZRj2bWYKpwdll/udZCk/Q==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.3", @@ -16304,6 +16340,29 @@ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, "typed-array-byte-offset": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", @@ -16450,17 +16509,16 @@ } }, "which-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.10.tgz", - "integrity": "sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" } }, "wrap-ansi": {