needle-cloud 0.4.0-alpha.2 → 0.4.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.esm.js","sources":["../../needle-share-sdk/src/api.js","../../needle-share-sdk/src/api.auth.js","../../needle-share-sdk/src/api.account.js","../../needle-share-sdk/src/api.urls.js","../../needle-share-sdk/node_modules/axios/lib/helpers/bind.js","../../needle-share-sdk/node_modules/axios/lib/utils.js","../../needle-share-sdk/node_modules/axios/lib/core/AxiosError.js","../../needle-share-sdk/node_modules/delayed-stream/lib/delayed_stream.js","../../needle-share-sdk/node_modules/combined-stream/lib/combined_stream.js","../../needle-share-sdk/node_modules/mime-db/index.js","../../needle-share-sdk/node_modules/mime-types/index.js","../../needle-share-sdk/node_modules/asynckit/lib/defer.js","../../needle-share-sdk/node_modules/asynckit/lib/async.js","../../needle-share-sdk/node_modules/asynckit/lib/abort.js","../../needle-share-sdk/node_modules/asynckit/lib/iterate.js","../../needle-share-sdk/node_modules/asynckit/lib/state.js","../../needle-share-sdk/node_modules/asynckit/lib/terminator.js","../../needle-share-sdk/node_modules/asynckit/parallel.js","../../needle-share-sdk/node_modules/asynckit/serialOrdered.js","../../needle-share-sdk/node_modules/asynckit/serial.js","../../needle-share-sdk/node_modules/asynckit/index.js","../../needle-share-sdk/node_modules/form-data/lib/populate.js","../../needle-share-sdk/node_modules/form-data/lib/form_data.js","../../needle-share-sdk/node_modules/axios/lib/helpers/toFormData.js","../../needle-share-sdk/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../needle-share-sdk/node_modules/axios/lib/helpers/buildURL.js","../../needle-share-sdk/node_modules/axios/lib/core/InterceptorManager.js","../../needle-share-sdk/node_modules/axios/lib/defaults/transitional.js","../../needle-share-sdk/node_modules/axios/lib/platform/node/classes/URLSearchParams.js","../../needle-share-sdk/node_modules/axios/lib/platform/node/index.js","../../needle-share-sdk/node_modules/axios/lib/platform/common/utils.js","../../needle-share-sdk/node_modules/axios/lib/platform/index.js","../../needle-share-sdk/node_modules/axios/lib/helpers/toURLEncodedForm.js","../../needle-share-sdk/node_modules/axios/lib/helpers/formDataToJSON.js","../../needle-share-sdk/node_modules/axios/lib/defaults/index.js","../../needle-share-sdk/node_modules/axios/lib/helpers/parseHeaders.js","../../needle-share-sdk/node_modules/axios/lib/core/AxiosHeaders.js","../../needle-share-sdk/node_modules/axios/lib/core/transformData.js","../../needle-share-sdk/node_modules/axios/lib/cancel/isCancel.js","../../needle-share-sdk/node_modules/axios/lib/cancel/CanceledError.js","../../needle-share-sdk/node_modules/axios/lib/core/settle.js","../../needle-share-sdk/node_modules/axios/lib/helpers/isAbsoluteURL.js","../../needle-share-sdk/node_modules/axios/lib/helpers/combineURLs.js","../../needle-share-sdk/node_modules/axios/lib/core/buildFullPath.js","../../needle-share-sdk/node_modules/proxy-from-env/index.js","../../needle-share-sdk/node_modules/ms/index.js","../../needle-share-sdk/node_modules/debug/src/common.js","../../needle-share-sdk/node_modules/debug/src/browser.js","../../needle-share-sdk/node_modules/has-flag/index.js","../../needle-share-sdk/node_modules/supports-color/index.js","../../needle-share-sdk/node_modules/debug/src/node.js","../../needle-share-sdk/node_modules/debug/src/index.js","../../needle-share-sdk/node_modules/follow-redirects/debug.js","../../needle-share-sdk/node_modules/follow-redirects/index.js","../../needle-share-sdk/node_modules/axios/lib/env/data.js","../../needle-share-sdk/node_modules/axios/lib/helpers/parseProtocol.js","../../needle-share-sdk/node_modules/axios/lib/helpers/fromDataURI.js","../../needle-share-sdk/node_modules/axios/lib/helpers/AxiosTransformStream.js","../../needle-share-sdk/node_modules/axios/lib/helpers/readBlob.js","../../needle-share-sdk/node_modules/axios/lib/helpers/formDataToStream.js","../../needle-share-sdk/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js","../../needle-share-sdk/node_modules/axios/lib/helpers/callbackify.js","../../needle-share-sdk/node_modules/axios/lib/helpers/speedometer.js","../../needle-share-sdk/node_modules/axios/lib/helpers/throttle.js","../../needle-share-sdk/node_modules/axios/lib/helpers/progressEventReducer.js","../../needle-share-sdk/node_modules/axios/lib/adapters/http.js","../../needle-share-sdk/node_modules/axios/lib/helpers/isURLSameOrigin.js","../../needle-share-sdk/node_modules/axios/lib/helpers/cookies.js","../../needle-share-sdk/node_modules/axios/lib/core/mergeConfig.js","../../needle-share-sdk/node_modules/axios/lib/helpers/resolveConfig.js","../../needle-share-sdk/node_modules/axios/lib/adapters/xhr.js","../../needle-share-sdk/node_modules/axios/lib/helpers/composeSignals.js","../../needle-share-sdk/node_modules/axios/lib/helpers/trackStream.js","../../needle-share-sdk/node_modules/axios/lib/adapters/fetch.js","../../needle-share-sdk/node_modules/axios/lib/adapters/adapters.js","../../needle-share-sdk/node_modules/axios/lib/core/dispatchRequest.js","../../needle-share-sdk/node_modules/axios/lib/helpers/validator.js","../../needle-share-sdk/node_modules/axios/lib/core/Axios.js","../../needle-share-sdk/node_modules/axios/lib/cancel/CancelToken.js","../../needle-share-sdk/node_modules/axios/lib/helpers/spread.js","../../needle-share-sdk/node_modules/axios/lib/helpers/isAxiosError.js","../../needle-share-sdk/node_modules/axios/lib/helpers/HttpStatusCode.js","../../needle-share-sdk/node_modules/axios/lib/axios.js","../../needle-share-sdk/node_modules/axios/index.js","../../needle-share-sdk/src/api.jobs.results.js","../../needle-share-sdk/src/api.jobs.js","../../needle-share-sdk/node_modules/js-md5/src/md5.js","../../needle-share-sdk/node_modules/file-type-mime/dist/index.mjs","../../needle-share-sdk/src/file.utils.js","../../needle-share-sdk/src/utils.js","../../needle-share-sdk/src/api.upload.validate.js","../../needle-share-sdk/src/utils.upload.js","../../needle-share-sdk/src/api.upload.js","../../needle-share-sdk/src/api.optimize.js","../../needle-share-sdk/src/logto.js","../src/constants.js","../src/utils.js","../src/cli/cli.deploy.js","../src/cli/cli.optimize.js","../src/list.js","../src/cli/auth/cli.auth.config.js","../src/cli/auth/cli.auth.storage.js","../src/cli/auth/cli.auth.node.js","../src/cli/auth/cli.auth.router.js","../src/cli/auth/utils.js","../src/cli/auth/index.js","../src/cli/cli.server.js","../src/cli/cli.auth.js","../src/cli.js"],"sourcesContent":["\r\n\r\n/**\r\n * @type {Omit<import(\"../types\").ShareApiEndpoints, \"baseUrl\">}\r\n */\r\nexport const ShareApiEndpoints = {\r\n status: \"/v1/status\",\r\n version: \"/v1/version\",\r\n login: \"/v1/login\",\r\n api: \"/v1/api\",\r\n account: {\r\n connect: \"/v1/account/connect\",\r\n get_licenses: \"/v1/account/get/licenses\",\r\n set_license_active: \"/v1/account/set_license_active\",\r\n set_licenses_active: \"/v1/account/set_licenses_active\",\r\n buy_licenses: \"/v1/account/buy_licenses\",\r\n start_billingportal_session: \"/v1/account/start_billingportal_session\",\r\n get_credits: \"/v1/account/get_credits\",\r\n buy_credits: \"/v1/account/buy_credits\",\r\n },\r\n organizations: {\r\n get: \"/v1/organizations/get\",\r\n orgs_details: \"/v1/organizations/orgs_details\",\r\n get_seats: \"/v1/organizations/get/seats\",\r\n get_invitations: \"/v1/organizations/get_invitations\",\r\n },\r\n events: {\r\n get: \"/v1/events/get\",\r\n post: \"/v1/events/post\",\r\n list: \"/v1/events/list\",\r\n },\r\n tokens: {\r\n create: \"/v1/tokens/create\",\r\n delete: \"/v1/tokens/delete\",\r\n // get: \"/v1/tokens/get\",\r\n list: \"/v1/tokens/list\",\r\n },\r\n get: {\r\n jobs: \"/v1/list/jobs\",\r\n uploads: \"/v1/list/uploads\",\r\n deployments: \"/v1/list/deployments\",\r\n },\r\n urls: {\r\n public: \"/v1/public\",\r\n public_download_urls: \"/v1/public/download/urls\",\r\n },\r\n view: {\r\n get_public_info: \"/v1/view/public/info\",\r\n post_version: \"/v1/view/post_version\",\r\n get_versions: \"/v1/view/get_versions\",\r\n delete: \"/v1/view/delete\",\r\n },\r\n // deployment: {\r\n // get_latest: \"/v1/deployment/get/latest\",\r\n // },\r\n upload: {\r\n request: \"/v1/upload/request\",\r\n request_put_url: \"/v1/upload/put\",\r\n update_results: \"/v1/upload/results\",\r\n done: \"/v1/upload/done\",\r\n cancel: \"/v1/upload/cancel\",\r\n },\r\n optimize: {\r\n get_optimize_id: \"/v1/optimize/get_id\",\r\n request: \"/v1/optimize/request\",\r\n },\r\n jobs: {\r\n request_start: \"/v1/jobs/request_start\",\r\n request_download_url: \"/v1/download/get_presigned_url\",\r\n request_restart: \"/v1/jobs/restart\",\r\n post_update: \"/v1/jobs/update\",\r\n post_meta: \"/v1/jobs/meta\",\r\n post_results_stats: \"/v1/jobs/results_stats\",\r\n get_status: \"/v1/jobs/status\",\r\n query: \"/v1/jobs/query\",\r\n request_job_that_needs_stats: \"/v1/jobs/job_needs_stats\",\r\n },\r\n worker: {\r\n ping: \"/v1/worker/ping\",\r\n get_available_count: \"/v1/worker/get_available_count\",\r\n post_available_info: \"/v1/worker/post_available_info\",\r\n get_available_info: \"/v1/worker/get_available_info\",\r\n },\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n/**\r\n * Create the headers for an authenticated request\r\n * @param {import(\"../types\").AuthData} authData\r\n * @returns {import(\"../types\").AuthHeaders}\r\n */\r\nexport function createAuthHeaders(authData) {\r\n /**\r\n * @type {import(\"../types\").AuthHeaders}\r\n */\r\n const authHeaders = {\r\n authorization: \"Bearer \" + authData.authToken,\r\n }\r\n if (authData.org)\r\n authHeaders[\"x-needle-cloud-org\"] = authData.org;\r\n if (authData.roles) {\r\n authHeaders.roles = authData.roles.join(\",\");\r\n }\r\n if (authData.roles_org) {\r\n authHeaders.roles_org = authData.roles_org.join(\",\");\r\n }\r\n return authHeaders;\r\n}\r\n\r\n\r\n/**\r\n * @param {import(\"../types\").Action} type\r\n * @param {import(\"../types\").Permission[] | undefined} permissions\r\n * @returns {boolean}\r\n */\r\nexport function checkPermissions(type, permissions) {\r\n if (!permissions?.length)\r\n return false;\r\n\r\n switch (type) {\r\n case \"write\":\r\n return permissions.some(p => p == \"all\" || p == \"write\");\r\n case \"read\":\r\n return permissions.some(p => p == \"all\" || p == \"read\");\r\n case \"download\":\r\n return permissions.some(p => p == \"all\" || p == \"download\");\r\n case \"delete\":\r\n return permissions.some(p => p == \"all\" || p == \"delete\");\r\n case \"invite\":\r\n return permissions.some(p => p == \"all\" || p == \"invite\");\r\n case \"create:org\":\r\n return permissions.some(p => p == \"all\" || p == \"create:org\");\r\n case \"write:org\":\r\n return permissions.some(p => p == \"all\" || p == \"write:org\");\r\n case \"delete:org\":\r\n return permissions.some(p => p == \"all\" || p == \"delete:org\");\r\n\r\n }\r\n\r\n throw new Error(\"Unknown action type: \" + type);\r\n\r\n}","import { createAuthHeaders } from \"./api.auth.js\";\r\nimport { ShareApiEndpoints } from \"./api.js\";\r\n\r\n\r\n\r\n/**\r\n * @param {{baseUrl:string} & import(\"../types/index.js\").AuthData} args\r\n * @returns {Promise<import(\"../types/index.js\").GetCreditsResponse>}\r\n */\r\nexport async function getAvailableCredits(args) {\r\n\r\n const res = await fetch(args.baseUrl + ShareApiEndpoints.account.get_credits,\r\n {\r\n headers: {\r\n ...createAuthHeaders(args)\r\n }\r\n }\r\n );\r\n\r\n if (!res.ok) {\r\n return { credits: 0 }\r\n }\r\n\r\n /**\r\n * @type {import(\"../types/index.js\").GetCreditsResponse}\r\n */\r\n const json = await res.json();\r\n return json;\r\n}\r\n\r\n\r\n/**\r\n * @param {{baseUrl:string, redirect_url:string} & import(\"../types/index.js\").AuthData} args\r\n * @returns {Promise<boolean>}\r\n */\r\nexport async function buyCredits(args) {\r\n\r\n /**\r\n * @type {import(\"../types/index.js\").BuyCreditsRequestBody}\r\n */\r\n const body = {\r\n redirect_url: args.redirect_url,\r\n quantity: 5,\r\n }\r\n\r\n const res = await fetch(args.baseUrl + ShareApiEndpoints.account.buy_credits,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n ...createAuthHeaders(args)\r\n },\r\n body: JSON.stringify(body)\r\n },\r\n );\r\n\r\n if (!res.ok) return false;\r\n\r\n /**\r\n * @type {import(\"../types/index.js\").BuyCreditsResponse}\r\n */\r\n const response = await res.json();\r\n\r\n if (response.checkout_url) {\r\n window.location.href = response.checkout_url;\r\n }\r\n return res.ok;\r\n}\r\n\r\n\r\n\r\n/**\r\n * Get the licenses this user has access to\r\n * @param {{baseUrl:string} & import(\"../types/index.js\").AuthData} args\r\n * @param {import(\"../types/api.payment.js\").GetLicensesRequestHeaders} options\r\n * @returns {Promise<Array<import(\"../../needle-share/types/stripe.js\").License>>}\r\n */\r\nexport async function getLicenses(args, options) {\r\n\r\n const url = args.baseUrl + ShareApiEndpoints.account.get_licenses;\r\n\r\n /**\r\n * @type {import(\"../types/api.payment.js\").GetLicensesRequestHeaders}\r\n */\r\n const licensesRequestHeaders = {\r\n ...options\r\n }\r\n\r\n const res = await fetch(url,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n ...licensesRequestHeaders,\r\n ...createAuthHeaders(args),\r\n }\r\n }\r\n ).catch(err => {\r\n console.error(err);\r\n return null;\r\n });\r\n\r\n if (!res) {\r\n return [];\r\n }\r\n\r\n if (!res.ok) {\r\n console.error(res.statusText, await res.text());\r\n return [];\r\n }\r\n\r\n /**\r\n * @type {import(\"../types/api.payment.js\").GetLicensesResponse}\r\n */\r\n const json = await res.json();\r\n return json.licenses;\r\n}","import { createAuthHeaders } from \"./api.auth.js\";\r\nimport { ShareApiEndpoints } from \"./api.js\";\r\n\r\n\r\n\r\n/**\r\n * Get the Needle Cloud download URL for a file. \r\n * This is the Needle Engine \"smart\" URL \r\n * @param {{baseUrl:string, view_id:string, job_id?:string, filename?:string}} args\r\n * @param {undefined | import(\"../types\").PublicUrlOptions} opts\r\n */\r\nexport function getPublicURL(args, opts = undefined) {\r\n /* urls are expected to be formatted so that relative requests will resolve to the correct filepath\r\n <domain>/view_id/ - request to the latest job for an upload\r\n <domain>/view_id/latest/ - request to the latest job for an upload\r\n <domain>/view_id/job_id/filename - request to a specific file for a specific job\r\n */\r\n let url = args.baseUrl + ShareApiEndpoints.urls.public + `/${args.view_id}`;\r\n if (args.job_id && opts?.latest !== true) {\r\n url += \"/\" + args.job_id;\r\n }\r\n else {\r\n url += \"/latest\";\r\n }\r\n // the last slash is important so that e.g. GLTFLoader will resolve the correct path\r\n // e.g. when we request <domain</123/latest/ the loader will request <domain>/123/latest/my_gltf.bin if the bin is next to the glTF file\r\n url += \"/\";\r\n\r\n // if a specific file is requested we append it to the url\r\n if (args.filename) {\r\n url += `${encodeURIComponent(args.filename)}`;\r\n }\r\n\r\n if (opts?.progressive === true) {\r\n url += \"?progressive=1\";\r\n }\r\n else if (opts?.progressive === false) {\r\n url += \"?progressive=0\";\r\n }\r\n\r\n return url;\r\n}\r\n/**\r\n * Download the file\r\n * @param {{baseUrl:string, view_id:string, job_id?:string}} args\r\n */\r\nexport async function downloadFile(args) {\r\n const url = getPublicURL(args);\r\n if (!url) {\r\n console.error(\"Failed to get download url\");\r\n return null;\r\n }\r\n const response = await fetch(url);\r\n if (response.ok) {\r\n return response;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n\r\n/**\r\n * Get the public download urls for a job\r\n * @param {{baseUrl:string} & import(\"../types\").AuthData} args\r\n * @param {import(\"../types/database.models.js\").JobModel} job\r\n * @returns {Promise<null | import(\"../types\").PublicDownloadURLsRequestResponse>}\r\n */\r\nexport async function getDownloadUrls(args, job) {\r\n\r\n const endpoint = args.baseUrl + ShareApiEndpoints.urls.public_download_urls;\r\n\r\n /**\r\n * @type {import(\"../types\").PublicDownloadURLsRequestBody}\r\n */\r\n const body = {\r\n user: job.user,\r\n view_id: job.view_id,\r\n job_id: job.identifier,\r\n }\r\n\r\n const response = await fetch(endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n ...createAuthHeaders(args)\r\n },\r\n body: JSON.stringify(body)\r\n });\r\n\r\n if (response.ok) {\r\n /**\r\n * @type {import(\"../types\").PublicDownloadURLsRequestResponse}\r\n */\r\n const res = await response.json();\r\n console.log(res);\r\n return res;\r\n }\r\n\r\n return null;\r\n}","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n","var util = require('util');\nvar Stream = require('stream').Stream;\nvar DelayedStream = require('delayed-stream');\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n this.writable = false;\n this.readable = true;\n this.dataSize = 0;\n this.maxDataSize = 2 * 1024 * 1024;\n this.pauseStreams = true;\n\n this._released = false;\n this._streams = [];\n this._currentStream = null;\n this._insideLoop = false;\n this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n var combinedStream = new this();\n\n options = options || {};\n for (var option in options) {\n combinedStream[option] = options[option];\n }\n\n return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n return (typeof stream !== 'function')\n && (typeof stream !== 'string')\n && (typeof stream !== 'boolean')\n && (typeof stream !== 'number')\n && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n\n if (isStreamLike) {\n if (!(stream instanceof DelayedStream)) {\n var newStream = DelayedStream.create(stream, {\n maxDataSize: Infinity,\n pauseStream: this.pauseStreams,\n });\n stream.on('data', this._checkDataSize.bind(this));\n stream = newStream;\n }\n\n this._handleErrors(stream);\n\n if (this.pauseStreams) {\n stream.pause();\n }\n }\n\n this._streams.push(stream);\n return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n Stream.prototype.pipe.call(this, dest, options);\n this.resume();\n return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n this._currentStream = null;\n\n if (this._insideLoop) {\n this._pendingNext = true;\n return; // defer call\n }\n\n this._insideLoop = true;\n try {\n do {\n this._pendingNext = false;\n this._realGetNext();\n } while (this._pendingNext);\n } finally {\n this._insideLoop = false;\n }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n var stream = this._streams.shift();\n\n\n if (typeof stream == 'undefined') {\n this.end();\n return;\n }\n\n if (typeof stream !== 'function') {\n this._pipeNext(stream);\n return;\n }\n\n var getStream = stream;\n getStream(function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('data', this._checkDataSize.bind(this));\n this._handleErrors(stream);\n }\n\n this._pipeNext(stream);\n }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n this._currentStream = stream;\n\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('end', this._getNext.bind(this));\n stream.pipe(this, {end: false});\n return;\n }\n\n var value = stream;\n this.write(value);\n this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n var self = this;\n stream.on('error', function(err) {\n self._emitError(err);\n });\n};\n\nCombinedStream.prototype.write = function(data) {\n this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n if (!this.pauseStreams) {\n return;\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n if (!this._released) {\n this._released = true;\n this.writable = true;\n this._getNext();\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n this._reset();\n this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n this._reset();\n this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n this.writable = false;\n this._streams = [];\n this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n this._updateDataSize();\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n this.dataSize = 0;\n\n var self = this;\n this._streams.forEach(function(stream) {\n if (!stream.dataSize) {\n return;\n }\n\n self.dataSize += stream.dataSize;\n });\n\n if (this._currentStream && this._currentStream.dataSize) {\n this.dataSize += this._currentStream.dataSize;\n }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n this._reset();\n this.emit('error', err);\n};\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n var nextTick = typeof setImmediate == 'function'\n ? setImmediate\n : (\n typeof process == 'object' && typeof process.nextTick == 'function'\n ? process.nextTick\n : null\n );\n\n if (nextTick)\n {\n nextTick(fn);\n }\n else\n {\n setTimeout(fn, 0);\n }\n}\n","var defer = require('./defer.js');\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n var isAsync = false;\n\n // check if async happened\n defer(function() { isAsync = true; });\n\n return function async_callback(err, result)\n {\n if (isAsync)\n {\n callback(err, result);\n }\n else\n {\n defer(function nextTick_callback()\n {\n callback(err, result);\n });\n }\n };\n}\n","// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n Object.keys(state.jobs).forEach(clean.bind(state));\n\n // reset leftover jobs\n state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n if (typeof this.jobs[key] == 'function')\n {\n this.jobs[key]();\n }\n}\n","var async = require('./async.js')\n , abort = require('./abort.js')\n ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n // store current index\n var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n {\n // don't repeat yourself\n // skip secondary callbacks\n if (!(key in state.jobs))\n {\n return;\n }\n\n // clean up jobs\n delete state.jobs[key];\n\n if (error)\n {\n // don't process rest of the results\n // stop still active jobs\n // and reset the list\n abort(state);\n }\n else\n {\n state.results[key] = output;\n }\n\n // return salvaged results\n callback(error, state.results);\n });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param {function} iterator - iterator to invoke\n * @param {string|number} key - key/index of the element in the list of jobs\n * @param {mixed} item - job description\n * @param {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n var aborter;\n\n // allow shortcut if iterator expects only two arguments\n if (iterator.length == 2)\n {\n aborter = iterator(item, async(callback));\n }\n // otherwise go with full three arguments\n else\n {\n aborter = iterator(item, key, async(callback));\n }\n\n return aborter;\n}\n","// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param {array|object} list - list to iterate over\n * @param {function|null} sortMethod - function to use for keys sort,\n * or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n var isNamedList = !Array.isArray(list)\n , initState =\n {\n index : 0,\n keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n jobs : {},\n results : isNamedList ? {} : [],\n size : isNamedList ? Object.keys(list).length : list.length\n }\n ;\n\n if (sortMethod)\n {\n // sort array keys based on it's values\n // sort object's keys just on own merit\n initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n {\n return sortMethod(list[a], list[b]);\n });\n }\n\n return initState;\n}\n","var abort = require('./abort.js')\n , async = require('./async.js')\n ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n if (!Object.keys(this.jobs).length)\n {\n return;\n }\n\n // fast forward iteration index\n this.index = this.size;\n\n // abort jobs\n abort(this);\n\n // send back results we have so far\n async(callback)(null, this.results);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n var state = initState(list);\n\n while (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, function(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n // looks like it's the last one\n if (Object.keys(state.jobs).length === 0)\n {\n callback(null, state.results);\n return;\n }\n });\n\n state.index++;\n }\n\n return terminator.bind(state, callback);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} sortMethod - custom sort function\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n var state = initState(list, sortMethod);\n\n iterate(list, iterator, state, function iteratorHandler(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n state.index++;\n\n // are we there yet?\n if (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, iteratorHandler);\n return;\n }\n\n // done here\n callback(null, state.results);\n });\n\n return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n return -1 * ascending(a, b);\n}\n","var serialOrdered = require('./serialOrdered.js');\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n return serialOrdered(list, iterator, null, callback);\n}\n","module.exports =\n{\n parallel : require('./parallel.js'),\n serial : require('./serial.js'),\n serialOrdered : require('./serialOrdered.js')\n};\n","// populates missing values\nmodule.exports = function(dst, src) {\n\n Object.keys(src).forEach(function(prop)\n {\n dst[prop] = dst[prop] || src[prop];\n });\n\n return dst;\n};\n","var CombinedStream = require('combined-stream');\nvar util = require('util');\nvar path = require('path');\nvar http = require('http');\nvar https = require('https');\nvar parseUrl = require('url').parse;\nvar fs = require('fs');\nvar Stream = require('stream').Stream;\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar populate = require('./populate.js');\n\n// Public API\nmodule.exports = FormData;\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n if (!(this instanceof FormData)) {\n return new FormData(options);\n }\n\n this._overheadLength = 0;\n this._valueLength = 0;\n this._valuesToMeasure = [];\n\n CombinedStream.call(this);\n\n options = options || {};\n for (var option in options) {\n this[option] = options[option];\n }\n}\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function(field, value, options) {\n\n options = options || {};\n\n // allow filename as single option\n if (typeof options == 'string') {\n options = {filename: options};\n }\n\n var append = CombinedStream.prototype.append.bind(this);\n\n // all that streamy business can't handle numbers\n if (typeof value == 'number') {\n value = '' + value;\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (util.isArray(value)) {\n // Please convert your array into string\n // the way web server expects it\n this._error(new Error('Arrays are not supported.'));\n return;\n }\n\n var header = this._multiPartHeader(field, value, options);\n var footer = this._multiPartFooter();\n\n append(header);\n append(value);\n append(footer);\n\n // pass along options.knownLength\n this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function(header, value, options) {\n var valueLength = 0;\n\n // used w/ getLengthSync(), when length is known.\n // e.g. for streaming directly from a remote server,\n // w/ a known file a size, and not wanting to wait for\n // incoming file to finish to get its size.\n if (options.knownLength != null) {\n valueLength += +options.knownLength;\n } else if (Buffer.isBuffer(value)) {\n valueLength = value.length;\n } else if (typeof value === 'string') {\n valueLength = Buffer.byteLength(value);\n }\n\n this._valueLength += valueLength;\n\n // @check why add CRLF? does this account for custom/multiple CRLFs?\n this._overheadLength +=\n Buffer.byteLength(header) +\n FormData.LINE_BREAK.length;\n\n // empty or either doesn't have path or not an http response or not a stream\n if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {\n return;\n }\n\n // no need to bother with the length\n if (!options.knownLength) {\n this._valuesToMeasure.push(value);\n }\n};\n\nFormData.prototype._lengthRetriever = function(value, callback) {\n\n if (value.hasOwnProperty('fd')) {\n\n // take read range into a account\n // `end` = Infinity –> read file till the end\n //\n // TODO: Looks like there is bug in Node fs.createReadStream\n // it doesn't respect `end` options without `start` options\n // Fix it when node fixes it.\n // https://github.com/joyent/node/issues/7819\n if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n\n // when end specified\n // no need to calculate range\n // inclusive, starts with 0\n callback(null, value.end + 1 - (value.start ? value.start : 0));\n\n // not that fast snoopy\n } else {\n // still need to fetch file size from fs\n fs.stat(value.path, function(err, stat) {\n\n var fileSize;\n\n if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (value.hasOwnProperty('httpVersion')) {\n callback(null, +value.headers['content-length']);\n\n // or request stream http://github.com/mikeal/request\n } else if (value.hasOwnProperty('httpModule')) {\n // wait till response come back\n value.on('response', function(response) {\n value.pause();\n callback(null, +response.headers['content-length']);\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream');\n }\n};\n\nFormData.prototype._multiPartHeader = function(field, value, options) {\n // custom header specified (as string)?\n // it becomes responsible for boundary\n // (e.g. to handle extra CRLFs on .NET servers)\n if (typeof options.header == 'string') {\n return options.header;\n }\n\n var contentDisposition = this._getContentDisposition(value, options);\n var contentType = this._getContentType(value, options);\n\n var contents = '';\n var headers = {\n // add custom disposition as third element or keep it two elements if not\n 'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n // if no content type. allow it to be empty array\n 'Content-Type': [].concat(contentType || [])\n };\n\n // allow custom headers.\n if (typeof options.header == 'object') {\n populate(headers, options.header);\n }\n\n var header;\n for (var prop in headers) {\n if (!headers.hasOwnProperty(prop)) continue;\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue;\n }\n\n // convert all headers to arrays.\n if (!Array.isArray(header)) {\n header = [header];\n }\n\n // add non-empty headers.\n if (header.length) {\n contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n }\n }\n\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function(value, options) {\n\n var filename\n , contentDisposition\n ;\n\n if (typeof options.filepath === 'string') {\n // custom filepath for relative paths\n filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n } else if (options.filename || value.name || value.path) {\n // custom filename take precedence\n // formidable and the browser add a name property\n // fs- and request- streams have path property\n filename = path.basename(options.filename || value.name || value.path);\n } else if (value.readable && value.hasOwnProperty('httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path || '');\n }\n\n if (filename) {\n contentDisposition = 'filename=\"' + filename + '\"';\n }\n\n return contentDisposition;\n};\n\nFormData.prototype._getContentType = function(value, options) {\n\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {\n contentType = value.headers['content-type'];\n }\n\n // or guess it from the filepath or filename\n if (!contentType && (options.filepath || options.filename)) {\n contentType = mime.lookup(options.filepath || options.filename);\n }\n\n // fallback to the default content type if `value` is not simple value\n if (!contentType && typeof value == 'object') {\n contentType = FormData.DEFAULT_CONTENT_TYPE;\n }\n\n return contentType;\n};\n\nFormData.prototype._multiPartFooter = function() {\n return function(next) {\n var footer = FormData.LINE_BREAK;\n\n var lastPart = (this._streams.length === 0);\n if (lastPart) {\n footer += this._lastBoundary();\n }\n\n next(footer);\n }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function() {\n return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function(userHeaders) {\n var header;\n var formHeaders = {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n };\n\n for (header in userHeaders) {\n if (userHeaders.hasOwnProperty(header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.setBoundary = function(boundary) {\n this._boundary = boundary;\n};\n\nFormData.prototype.getBoundary = function() {\n if (!this._boundary) {\n this._generateBoundary();\n }\n\n return this._boundary;\n};\n\nFormData.prototype.getBuffer = function() {\n var dataBuffer = new Buffer.alloc( 0 );\n var boundary = this.getBoundary();\n\n // Create the form content. Add Line breaks to the end of data.\n for (var i = 0, len = this._streams.length; i < len; i++) {\n if (typeof this._streams[i] !== 'function') {\n\n // Add content to the buffer.\n if(Buffer.isBuffer(this._streams[i])) {\n dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]);\n }else {\n dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]);\n }\n\n // Add break after content.\n if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) {\n dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] );\n }\n }\n }\n\n // Add the footer and return the Buffer object.\n return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] );\n};\n\nFormData.prototype._generateBoundary = function() {\n // This generates a 50 character boundary similar to those used by Firefox.\n // They are optimized for boyer-moore parsing.\n var boundary = '--------------------------';\n for (var i = 0; i < 24; i++) {\n boundary += Math.floor(Math.random() * 10).toString(16);\n }\n\n this._boundary = boundary;\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually\n// and add it as knownLength option\nFormData.prototype.getLengthSync = function() {\n var knownLength = this._overheadLength + this._valueLength;\n\n // Don't get confused, there are 3 \"internal\" streams for each keyval pair\n // so it basically checks if there is any value added to the form\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n // https://github.com/form-data/form-data/issues/40\n if (!this.hasKnownLength()) {\n // Some async length retrievers are present\n // therefore synchronous length calculation is false.\n // Please use getLength(callback) to get proper length\n this._error(new Error('Cannot calculate proper length in synchronous way.'));\n }\n\n return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function() {\n var hasKnownLength = true;\n\n if (this._valuesToMeasure.length) {\n hasKnownLength = false;\n }\n\n return hasKnownLength;\n};\n\nFormData.prototype.getLength = function(cb) {\n var knownLength = this._overheadLength + this._valueLength;\n\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n if (!this._valuesToMeasure.length) {\n process.nextTick(cb.bind(this, null, knownLength));\n return;\n }\n\n asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {\n if (err) {\n cb(err);\n return;\n }\n\n values.forEach(function(length) {\n knownLength += length;\n });\n\n cb(null, knownLength);\n });\n};\n\nFormData.prototype.submit = function(params, cb) {\n var request\n , options\n , defaults = {method: 'post'}\n ;\n\n // parse provided url if it's string\n // or treat it as options object\n if (typeof params == 'string') {\n\n params = parseUrl(params);\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n\n // use custom params\n } else {\n\n options = populate(params, defaults);\n // if no port provided use default one\n if (!options.port) {\n options.port = options.protocol == 'https:' ? 443 : 80;\n }\n }\n\n // put that good code in getHeaders to some use\n options.headers = this.getHeaders(params.headers);\n\n // https if specified, fallback to http in any other case\n if (options.protocol == 'https:') {\n request = https.request(options);\n } else {\n request = http.request(options);\n }\n\n // get content length and fire away\n this.getLength(function(err, length) {\n if (err && err !== 'Unknown stream') {\n this._error(err);\n return;\n }\n\n // add content length\n if (length) {\n request.setHeader('Content-Length', length);\n }\n\n this.pipe(request);\n if (cb) {\n var onResponse;\n\n var callback = function (error, responce) {\n request.removeListener('error', callback);\n request.removeListener('response', onResponse);\n\n return cb.call(this, error, responce);\n };\n\n onResponse = callback.bind(this, null);\n\n request.on('error', callback);\n request.on('response', onResponse);\n }\n }.bind(this));\n\n return request;\n};\n\nFormData.prototype._error = function(err) {\n if (!this.error) {\n this.error = err;\n this.pause();\n this.emit('error', err);\n }\n};\n\nFormData.prototype.toString = function () {\n return '[object FormData]';\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nvar parseUrl = require('url').parse;\n\nvar DEFAULT_PORTS = {\n ftp: 21,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n};\n\nvar stringEndsWith = String.prototype.endsWith || function(s) {\n return s.length <= this.length &&\n this.indexOf(s, this.length - s.length) !== -1;\n};\n\n/**\n * @param {string|object} url - The URL, or the result from url.parse.\n * @return {string} The URL of the proxy that should handle the request to the\n * given URL. If no proxy is set, this will be an empty string.\n */\nfunction getProxyForUrl(url) {\n var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {};\n var proto = parsedUrl.protocol;\n var hostname = parsedUrl.host;\n var port = parsedUrl.port;\n if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') {\n return ''; // Don't proxy URLs without a valid scheme or host.\n }\n\n proto = proto.split(':', 1)[0];\n // Stripping ports in this way instead of using parsedUrl.hostname to make\n // sure that the brackets around IPv6 addresses are kept.\n hostname = hostname.replace(/:\\d*$/, '');\n port = parseInt(port) || DEFAULT_PORTS[proto] || 0;\n if (!shouldProxy(hostname, port)) {\n return ''; // Don't proxy URLs that match NO_PROXY.\n }\n\n var proxy =\n getEnv('npm_config_' + proto + '_proxy') ||\n getEnv(proto + '_proxy') ||\n getEnv('npm_config_proxy') ||\n getEnv('all_proxy');\n if (proxy && proxy.indexOf('://') === -1) {\n // Missing scheme in proxy, default to the requested URL's scheme.\n proxy = proto + '://' + proxy;\n }\n return proxy;\n}\n\n/**\n * Determines whether a given URL should be proxied.\n *\n * @param {string} hostname - The host name of the URL.\n * @param {number} port - The effective port of the URL.\n * @returns {boolean} Whether the given URL should be proxied.\n * @private\n */\nfunction shouldProxy(hostname, port) {\n var NO_PROXY =\n (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase();\n if (!NO_PROXY) {\n return true; // Always proxy if NO_PROXY is not set.\n }\n if (NO_PROXY === '*') {\n return false; // Never proxy if wildcard is set.\n }\n\n return NO_PROXY.split(/[,\\s]/).every(function(proxy) {\n if (!proxy) {\n return true; // Skip zero-length hosts.\n }\n var parsedProxy = proxy.match(/^(.+):(\\d+)$/);\n var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;\n var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;\n if (parsedProxyPort && parsedProxyPort !== port) {\n return true; // Skip if ports don't match.\n }\n\n if (!/^[.*]/.test(parsedProxyHostname)) {\n // No wildcards, so stop proxying if there is an exact match.\n return hostname !== parsedProxyHostname;\n }\n\n if (parsedProxyHostname.charAt(0) === '*') {\n // Remove leading wildcard.\n parsedProxyHostname = parsedProxyHostname.slice(1);\n }\n // Stop proxying if the hostname ends with the no_proxy host.\n return !stringEndsWith.call(hostname, parsedProxyHostname);\n });\n}\n\n/**\n * Get the value for an environment variable.\n *\n * @param {string} key - The name of the environment variable.\n * @return {string} The value of the environment variable.\n * @private\n */\nfunction getEnv(key) {\n return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || '';\n}\n\nexports.getProxyForUrl = getProxyForUrl;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.format(...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = require(\"debug\")(\"follow-redirects\");\n }\n catch (error) { /* */ }\n if (typeof debug !== \"function\") {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n","var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Whether to use the native URL object or the legacy url module\nvar useNativeURL = false;\ntry {\n assert(new URL());\n}\ncatch (error) {\n useNativeURL = error.code === \"ERR_INVALID_URL\";\n}\n\n// URL fields to preserve in copy operations\nvar preservedUrlFields = [\n \"auth\",\n \"host\",\n \"hostname\",\n \"href\",\n \"path\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"query\",\n \"search\",\n \"hash\",\n];\n\n// Create handlers that pass events from native requests\nvar events = [\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"];\nvar eventHandlers = Object.create(null);\nevents.forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\n// Error types with codes\nvar InvalidUrlError = createErrorType(\n \"ERR_INVALID_URL\",\n \"Invalid URL\",\n TypeError\n);\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"Redirected request failed\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\",\n RedirectionError\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// istanbul ignore next\nvar destroy = Writable.prototype.destroy || noop;\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n try {\n self._processResponse(response);\n }\n catch (cause) {\n self.emit(\"error\", cause instanceof RedirectionError ?\n cause : new RedirectionError({ cause: cause }));\n }\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n destroyRequest(this._currentRequest);\n this._currentRequest.abort();\n this.emit(\"abort\");\n};\n\nRedirectableRequest.prototype.destroy = function (error) {\n destroyRequest(this._currentRequest, error);\n destroy.call(this, error);\n return this;\n};\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!isString(data) && !isBuffer(data)) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (isFunction(data)) {\n callback = data;\n data = encoding = null;\n }\n else if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n var self = this;\n\n // Destroys the socket on timeout\n function destroyOnTimeout(socket) {\n socket.setTimeout(msecs);\n socket.removeListener(\"timeout\", socket.destroy);\n socket.addListener(\"timeout\", socket.destroy);\n }\n\n // Sets up a timer to trigger a timeout event\n function startTimer(socket) {\n if (self._timeout) {\n clearTimeout(self._timeout);\n }\n self._timeout = setTimeout(function () {\n self.emit(\"timeout\");\n clearTimer();\n }, msecs);\n destroyOnTimeout(socket);\n }\n\n // Stops a timeout from triggering\n function clearTimer() {\n // Clear the timeout\n if (self._timeout) {\n clearTimeout(self._timeout);\n self._timeout = null;\n }\n\n // Clean up all attached listeners\n self.removeListener(\"abort\", clearTimer);\n self.removeListener(\"error\", clearTimer);\n self.removeListener(\"response\", clearTimer);\n self.removeListener(\"close\", clearTimer);\n if (callback) {\n self.removeListener(\"timeout\", callback);\n }\n if (!self.socket) {\n self._currentRequest.removeListener(\"socket\", startTimer);\n }\n }\n\n // Attach callback if passed\n if (callback) {\n this.on(\"timeout\", callback);\n }\n\n // Start the timer if or when the socket is opened\n if (this.socket) {\n startTimer(this.socket);\n }\n else {\n this._currentRequest.once(\"socket\", startTimer);\n }\n\n // Clean up on events\n this.on(\"socket\", destroyOnTimeout);\n this.on(\"abort\", clearTimer);\n this.on(\"error\", clearTimer);\n this.on(\"response\", clearTimer);\n this.on(\"close\", clearTimer);\n\n return this;\n};\n\n// Proxy all other public ClientRequest methods\n[\n \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n throw new TypeError(\"Unsupported protocol \" + protocol);\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.slice(0, -1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request and set up its event handlers\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n request._redirectable = this;\n for (var event of events) {\n request.on(event, eventHandlers[event]);\n }\n\n // RFC7230§5.3.1: When making a request directly to an origin server, […]\n // a client MUST send only the absolute path […] as the request-target.\n this._currentUrl = /^\\//.test(this._options.path) ?\n url.format(this._options) :\n // When making a request to a proxy, […]\n // a client MUST send the target URI in absolute-form […].\n this._options.path;\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n /* istanbul ignore else */\n if (request === self._currentRequest) {\n // Report any write errors\n /* istanbul ignore if */\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n /* istanbul ignore else */\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231§6.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n\n // If the response is not a redirect; return it as-is\n var location = response.headers.location;\n if (!location || this._options.followRedirects === false ||\n statusCode < 300 || statusCode >= 400) {\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n return;\n }\n\n // The response is a redirect, so abort the current request\n destroyRequest(this._currentRequest);\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231§6.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n throw new TooManyRedirectsError();\n }\n\n // Store the request headers if applicable\n var requestHeaders;\n var beforeRedirect = this._options.beforeRedirect;\n if (beforeRedirect) {\n requestHeaders = Object.assign({\n // The Host header was set by nativeProtocol.request\n Host: response.req.getHeader(\"host\"),\n }, this._options.headers);\n }\n\n // RFC7231§6.4: Automatic redirection needs to done with\n // care for methods not known to be safe, […]\n // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n var method = this._options.method;\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231§6.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource […]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) […]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);\n\n // If the redirect is relative, carry over the host of the last request\n var currentUrlParts = parseUrl(this._currentUrl);\n var currentHost = currentHostHeader || currentUrlParts.host;\n var currentUrl = /^\\w+:/.test(location) ? this._currentUrl :\n url.format(Object.assign(currentUrlParts, { host: currentHost }));\n\n // Create the redirected request\n var redirectUrl = resolveUrl(location, currentUrl);\n debug(\"redirecting to\", redirectUrl.href);\n this._isRedirect = true;\n spreadUrlObject(redirectUrl, this._options);\n\n // Drop confidential headers when redirecting to a less secure protocol\n // or to a different domain that is not a superdomain\n if (redirectUrl.protocol !== currentUrlParts.protocol &&\n redirectUrl.protocol !== \"https:\" ||\n redirectUrl.host !== currentHost &&\n !isSubdomain(redirectUrl.host, currentHost)) {\n removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (isFunction(beforeRedirect)) {\n var responseDetails = {\n headers: response.headers,\n statusCode: statusCode,\n };\n var requestDetails = {\n url: currentUrl,\n method: method,\n headers: requestHeaders,\n };\n beforeRedirect(this._options, responseDetails, requestDetails);\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n this._performRequest();\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters, ensuring that input is an object\n if (isURL(input)) {\n input = spreadUrlObject(input);\n }\n else if (isString(input)) {\n input = spreadUrlObject(parseUrl(input));\n }\n else {\n callback = options;\n options = validateUrl(input);\n input = { protocol: protocol };\n }\n if (isFunction(options)) {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n if (!isString(options.host) && !isString(options.hostname)) {\n options.hostname = \"::1\";\n }\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\nfunction noop() { /* empty */ }\n\nfunction parseUrl(input) {\n var parsed;\n /* istanbul ignore else */\n if (useNativeURL) {\n parsed = new URL(input);\n }\n else {\n // Ensure the URL is valid and absolute\n parsed = validateUrl(url.parse(input));\n if (!isString(parsed.protocol)) {\n throw new InvalidUrlError({ input });\n }\n }\n return parsed;\n}\n\nfunction resolveUrl(relative, base) {\n /* istanbul ignore next */\n return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative));\n}\n\nfunction validateUrl(input) {\n if (/^\\[/.test(input.hostname) && !/^\\[[:0-9a-f]+\\]$/i.test(input.hostname)) {\n throw new InvalidUrlError({ input: input.href || input });\n }\n if (/^\\[/.test(input.host) && !/^\\[[:0-9a-f]+\\](:\\d+)?$/i.test(input.host)) {\n throw new InvalidUrlError({ input: input.href || input });\n }\n return input;\n}\n\nfunction spreadUrlObject(urlObject, target) {\n var spread = target || {};\n for (var key of preservedUrlFields) {\n spread[key] = urlObject[key];\n }\n\n // Fix IPv6 hostname\n if (spread.hostname.startsWith(\"[\")) {\n spread.hostname = spread.hostname.slice(1, -1);\n }\n // Ensure port is a number\n if (spread.port !== \"\") {\n spread.port = Number(spread.port);\n }\n // Concatenate path\n spread.path = spread.search ? spread.pathname + spread.search : spread.pathname;\n\n return spread;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return (lastValue === null || typeof lastValue === \"undefined\") ?\n undefined : String(lastValue).trim();\n}\n\nfunction createErrorType(code, message, baseClass) {\n // Create constructor\n function CustomError(properties) {\n Error.captureStackTrace(this, this.constructor);\n Object.assign(this, properties || {});\n this.code = code;\n this.message = this.cause ? message + \": \" + this.cause.message : message;\n }\n\n // Attach constructor and set default properties\n CustomError.prototype = new (baseClass || Error)();\n Object.defineProperties(CustomError.prototype, {\n constructor: {\n value: CustomError,\n enumerable: false,\n },\n name: {\n value: \"Error [\" + code + \"]\",\n enumerable: false,\n },\n });\n return CustomError;\n}\n\nfunction destroyRequest(request, error) {\n for (var event of events) {\n request.removeListener(event, eventHandlers[event]);\n }\n request.on(\"error\", noop);\n request.destroy(error);\n}\n\nfunction isSubdomain(subdomain, domain) {\n assert(isString(subdomain) && isString(domain));\n var dot = subdomain.length - domain.length - 1;\n return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\nfunction isString(value) {\n return typeof value === \"string\" || value instanceof String;\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction isBuffer(value) {\n return typeof value === \"object\" && (\"length\" in value);\n}\n\nfunction isURL(value) {\n return URL && value instanceof URL;\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n","export const VERSION = \"1.7.4\";","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport parseProtocol from './parseProtocol.js';\nimport platform from '../platform/index.js';\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nexport default function fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n","'use strict';\n\nimport stream from 'stream';\nimport utils from '../utils.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const internals = this[kInternals] = {\n timeWindow: options.timeWindow,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n const pushChunk = (_chunk, _callback) => {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n internals.isCaptured && this.emit('progress', internals.bytesSeen);\n\n if (this.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n}\n\nexport default AxiosTransformStream;\n","const {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream()\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer()\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n}\n\nexport default readBlob;\n","import {TextEncoder} from 'util';\nimport {Readable} from 'stream';\nimport utils from \"../utils.js\";\nimport readBlob from \"./readBlob.js\";\n\nconst BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = new TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n }\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nexport default formDataToStream;\n","\"use strict\";\n\nimport stream from \"stream\";\n\nclass ZlibHeaderTransformStream extends stream.Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nexport default ZlibHeaderTransformStream;\n","import utils from \"../utils.js\";\n\nconst callbackify = (fn, reducer) => {\n return utils.isAsyncFn(fn) ? function (...args) {\n const cb = args.pop();\n fn.apply(this, args).then((value) => {\n try {\n reducer ? cb(null, ...reducer(value)) : cb(null, value);\n } catch (err) {\n cb(err);\n }\n }, cb);\n } : fn;\n}\n\nexport default callbackify;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport buildURL from './../helpers/buildURL.js';\nimport {getProxyForUrl} from 'proxy-from-env';\nimport http from 'http';\nimport https from 'https';\nimport util from 'util';\nimport followRedirects from 'follow-redirects';\nimport zlib from 'zlib';\nimport {VERSION} from '../env/data.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport platform from '../platform/index.js';\nimport fromDataURI from '../helpers/fromDataURI.js';\nimport stream from 'stream';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport AxiosTransformStream from '../helpers/AxiosTransformStream.js';\nimport {EventEmitter} from 'events';\nimport formDataToStream from \"../helpers/formDataToStream.js\";\nimport readBlob from \"../helpers/readBlob.js\";\nimport ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js';\nimport callbackify from \"../helpers/callbackify.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\n\nconst zlibOptions = {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n}\n\nconst isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects;\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\nconst flushOnFinish = (stream, [throttled, flush]) => {\n stream\n .on('end', flush)\n .on('error', flush);\n\n return throttled;\n}\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object<string, any>} options - The options object that was passed to the request.\n *\n * @returns {Object<string, any>}\n */\nfunction dispatchBeforeRedirect(options, responseDetails) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options, responseDetails);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n if (proxy.auth.username || proxy.auth.password) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n }\n const base64 = Buffer\n .from(proxy.auth, 'utf8')\n .toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n }\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n }\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\nconst resolveFamily = ({address, family}) => {\n if (!utils.isString(address)) {\n throw TypeError('address must be a string');\n }\n return ({\n address,\n family: family || (address.indexOf('.') < 0 ? 6 : 4)\n });\n}\n\nconst buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family});\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data, lookup, family} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n if (lookup) {\n const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]);\n // hotfix to support opt.all option which is required for node 20.x\n lookup = (hostname, opt, cb) => {\n _lookup(hostname, opt, (err, arg0, arg1) => {\n if (err) {\n return cb(err);\n }\n\n const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n }\n }\n\n // temporary internal emitter until the AxiosRequest class will be implemented\n const emitter = new EventEmitter();\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n emitter.removeAllListeners();\n }\n\n onDone((value, isRejected) => {\n isDone = true;\n if (isRejected) {\n rejected = true;\n onFinished();\n }\n });\n\n function abort(reason) {\n emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n }\n\n emitter.once('abort', reject);\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url);\n const parsed = new URL(fullPath, utils.hasBrowserEnv ? platform.origin : undefined);\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream.Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const {onUploadProgress, onDownloadProgress} = config;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util.promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream.Readable.from(readBlob(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream.Readable.from(data, {objectMode: false});\n }\n\n data = stream.pipeline([data, new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', flushOnFinish(\n data,\n progressEventDecorator(\n contentLength,\n progressEventReducer(asyncDecorator(onUploadProgress), false, 3)\n )\n ));\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n family,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {}\n };\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = +res.headers['content-length'];\n\n if (onDownloadProgress || maxDownloadRate) {\n const transformStream = new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', flushOnFinish(\n transformStream,\n progressEventDecorator(\n responseLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)\n )\n ));\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch ((res.headers['content-encoding'] || '').toLowerCase()) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib.createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0];\n\n const offListeners = stream.finished(responseStream, () => {\n offListeners();\n onFinished();\n });\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n return reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n emitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n emitter.once('abort', err => {\n reject(err);\n req.destroy(err);\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n // @todo remove\n // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (Number.isNaN(timeout)) {\n reject(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n abort();\n });\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n req.end(data);\n }\n });\n}\n\nexport const __setProxy = setProxy;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n isStreamResponse && onFinish();\n }, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { getPublicURL } from \"./api.urls.js\";\r\n\r\nexport const screenshotFileName = \"screenshot.needle.webp\";\r\n\r\n/**\r\n * @param {string} filename\r\n */\r\nexport function isInternalFile(filename) {\r\n if (filename.endsWith(screenshotFileName)) {\r\n return true;\r\n }\r\n if (filename.endsWith(\".needle.log\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * @param {string} base_url\r\n * @param {Pick<import(\"../types\").JobModel, \"view_id\" | \"identifier\" | \"results\">} res\r\n */\r\nexport function getScreenshotURL(base_url, res) {\r\n const screenshot = res?.results?.files.find(\r\n (f) => f.filename == screenshotFileName,\r\n );\r\n if (screenshot) {\r\n return getPublicURL({\r\n baseUrl: base_url,\r\n view_id: res.view_id,\r\n job_id: res.identifier,\r\n filename: screenshot.filename,\r\n });\r\n }\r\n return null;\r\n}\r\n\r\n\r\n","import { createAuthHeaders } from \"./api.auth.js\";\r\nimport { isInternalFile, screenshotFileName } from \"./api.jobs.results.js\";\r\nimport { ShareApiEndpoints } from \"./api.js\";\r\n\r\n\r\n\r\n/** \r\n * @param {string} jobid\r\n * @param {{baseUrl:string} & import(\"../types\").AuthData} args,\r\n * @param {import(\"../types\").JobRequestRestartBody} body\r\n * @returns {Promise<boolean>}\r\n*/\r\nexport async function requestRestart(jobid, args, body) {\r\n\r\n const url = args.baseUrl + ShareApiEndpoints.jobs.request_restart;\r\n /**\r\n * @type {import(\"../types\").JobRequestRestartRequestHeaders}\r\n */\r\n const headers = {\r\n ...createAuthHeaders(args),\r\n job_id: jobid\r\n }\r\n const res = await fetch(url, {\r\n method: \"POST\",\r\n headers,\r\n body: JSON.stringify(body)\r\n }).catch(err => {\r\n console.error(err);\r\n return null;\r\n });\r\n if (!res) return false;\r\n return res.ok;\r\n}\r\n\r\n\r\n/** \r\n * @param {Pick<import(\"../types\").JobModel, \"identifier\" | \"status\" | \"status_message\" | \"error\" | \"progress\">} job\r\n * @param {{baseUrl:string} & import(\"../types\").AuthData} args \r\n * @returns {Promise<boolean>}\r\n*/\r\nexport async function updateJobStatus(job, args) {\r\n\r\n const url = args.baseUrl + ShareApiEndpoints.jobs.post_update;\r\n /**\r\n * @type {import(\"../types\").JobPostStatusRequestHeaders}\r\n */\r\n const headers = {\r\n ...createAuthHeaders(args),\r\n job_id: job.identifier,\r\n ...job,\r\n }\r\n const res = await fetch(url, {\r\n method: \"POST\",\r\n /** @type {any} */\r\n headers: headers\r\n }).catch(err => {\r\n console.error(err);\r\n return null;\r\n });\r\n if (!res) return false;\r\n return res.ok;\r\n}\r\n\r\n\r\n/**\r\n * @param {string} jobid\r\n * @param {{baseUrl:string} & import(\"../types\").AuthData} args\r\n */\r\nexport async function getJobStatus(jobid, args) {\r\n\r\n const url = args.baseUrl + ShareApiEndpoints.jobs.get_status;\r\n\r\n\r\n /** @type {import(\"../types\").JobGetStatusRequestHeaders} */\r\n const headers = {\r\n ...createAuthHeaders(args),\r\n job_id: jobid\r\n }\r\n\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers: headers\r\n }).catch(err => {\r\n console.error(err);\r\n return null;\r\n });\r\n if (!res) return null;\r\n if (!res.ok) {\r\n console.error(\"Failed to get status\", res.status, await res.text());\r\n return null;\r\n }\r\n /**\r\n * @type {import(\"../types\").JobGetStatusRequestResponse}\r\n */\r\n const data = await res.json();\r\n return data;\r\n}\r\n\r\n\r\n/**\r\n * @param {Pick<import(\"../types\").JobModel, \"results\">} job\r\n * @param {{include_internal?:boolean}} options\r\n * @returns {{mainAssetSize:number, additionalAssets:number}} file sizes in bytes\r\n */\r\nexport function calculateFileSize(job, options = { include_internal: false }) {\r\n let mainAssetSize = 0;\r\n let additionalAssets = 0;\r\n\r\n if (job.results) {\r\n mainAssetSize =\r\n job.results.files.find(\r\n (file) => file.filename == job.results?.entrypoint,\r\n )?.content_length || 0;\r\n additionalAssets = job.results.files.reduce((acc, file) => {\r\n if (file.filename != job.results?.entrypoint) {\r\n // if we don't explictly include internal files - skip them\r\n if (options?.include_internal !== true) {\r\n if (isInternalFile(file.filename)) {\r\n return acc;\r\n }\r\n }\r\n return acc + file.content_length;\r\n }\r\n return acc;\r\n }, 0);\r\n }\r\n return {\r\n mainAssetSize,\r\n additionalAssets,\r\n };\r\n}\r\n\r\n\r\n\r\n/**\r\n * @template {import(\"../types\").JobModelKeys} T\r\n * @param {{baseUrl:string, identifier:string, fields:Array<T>} & import(\"../types\").AuthData} opts\r\n * @returns {Promise<null | (Pick<import(\"../types\").JobModel, T>)>}\r\n */\r\nexport async function getJob(opts) {\r\n\r\n if (!opts.identifier) return null;\r\n\r\n\r\n /**\r\n * @type {import(\"../types\").JobQueryRequestHeaders}\r\n */\r\n const headers = {\r\n ...createAuthHeaders(opts),\r\n };\r\n /**\r\n * @type {import(\"../types\").JobQueryRequestBody}\r\n */\r\n const body = {\r\n job_id: opts.identifier,\r\n fields: opts.fields\r\n }\r\n const url = opts.baseUrl + ShareApiEndpoints.jobs.query;\r\n const res = await fetch(url, {\r\n method: \"POST\",\r\n headers,\r\n body: JSON.stringify(body)\r\n }).catch(err => {\r\n console.error(err);\r\n return null;\r\n });\r\n\r\n if (res == null) {\r\n return null;\r\n }\r\n else if (!res.ok) {\r\n console.error(\"Failed to get job\", res.status, await res.text());\r\n return null;\r\n }\r\n\r\n /**\r\n * @type {import(\"../types\").JobQueryRequestResponse}\r\n */\r\n const response = await res.json().catch(err => {\r\n console.error(err);\r\n return null;\r\n });\r\n if (response == null) {\r\n return null;\r\n }\r\n\r\n /** @ts-ignore */\r\n return response.job;\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n * @param {{baseUrl:string, identifier:string} & import(\"../types\").AuthData} opts\r\n * @returns {Promise<null | object>}\r\n */\r\nexport async function getJobResultStats(opts) {\r\n\r\n const res = await getJob({\r\n ...opts,\r\n fields: [\"results_stats\"]\r\n });\r\n if (res?.results_stats) {\r\n return res.results_stats;\r\n }\r\n return null;\r\n};\r\n","/**\n * [js-md5]{@link https://github.com/emn178/js-md5}\n *\n * @namespace md5\n * @version 0.8.3\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2023\n * @license MIT\n */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_MD5_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [128, 32768, 8388608, -2147483648];\n var SHIFT = [0, 8, 16, 24];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64'];\n var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n var blocks = [], buffer8;\n if (ARRAY_BUFFER) {\n var buffer = new ArrayBuffer(68);\n buffer8 = new Uint8Array(buffer);\n blocks = new Uint32Array(buffer);\n }\n\n var isArray = Array.isArray;\n if (root.JS_MD5_NO_NODE_JS || !isArray) {\n isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n var isView = ArrayBuffer.isView;\n if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !isView)) {\n isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n // [message: string, isString: bool]\n var formatMessage = function (message) {\n var type = typeof message;\n if (type === 'string') {\n return [message, true];\n }\n if (type !== 'object' || message === null) {\n throw new Error(INPUT_ERROR);\n }\n if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n return [new Uint8Array(message), false];\n }\n if (!isArray(message) && !isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n return [message, false];\n }\n\n /**\n * @method hex\n * @memberof md5\n * @description Output hash as hex string\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} Hex string\n * @example\n * md5.hex('The quick brown fox jumps over the lazy dog');\n * // equal to\n * md5('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method digest\n * @memberof md5\n * @description Output hash as bytes array\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Array} Bytes array\n * @example\n * md5.digest('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method array\n * @memberof md5\n * @description Output hash as bytes array\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Array} Bytes array\n * @example\n * md5.array('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method arrayBuffer\n * @memberof md5\n * @description Output hash as ArrayBuffer\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {ArrayBuffer} ArrayBuffer\n * @example\n * md5.arrayBuffer('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method buffer\n * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.\n * @memberof md5\n * @description Output hash as ArrayBuffer\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {ArrayBuffer} ArrayBuffer\n * @example\n * md5.buffer('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method base64\n * @memberof md5\n * @description Output hash as base64 string\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} base64 string\n * @example\n * md5.base64('The quick brown fox jumps over the lazy dog');\n */\n var createOutputMethod = function (outputType) {\n return function (message) {\n return new Md5(true).update(message)[outputType]();\n };\n };\n\n /**\n * @method create\n * @memberof md5\n * @description Create Md5 object\n * @returns {Md5} Md5 object.\n * @example\n * var hash = md5.create();\n */\n /**\n * @method update\n * @memberof md5\n * @description Create and update Md5 object\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Md5} Md5 object.\n * @example\n * var hash = md5.update('The quick brown fox jumps over the lazy dog');\n * // equal to\n * var hash = md5.create();\n * hash.update('The quick brown fox jumps over the lazy dog');\n */\n var createMethod = function () {\n var method = createOutputMethod('hex');\n if (NODE_JS) {\n method = nodeWrap(method);\n }\n method.create = function () {\n return new Md5();\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type);\n }\n return method;\n };\n\n var nodeWrap = function (method) {\n var crypto = require('crypto')\n var Buffer = require('buffer').Buffer;\n var bufferFrom;\n if (Buffer.from && !root.JS_MD5_NO_BUFFER_FROM) {\n bufferFrom = Buffer.from;\n } else {\n bufferFrom = function (message) {\n return new Buffer(message);\n };\n }\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash('md5').update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(INPUT_ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (isArray(message) || isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash('md5').update(bufferFrom(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n /**\n * @namespace md5.hmac\n */\n /**\n * @method hex\n * @memberof md5.hmac\n * @description Output hash as hex string\n * @param {String|Array|Uint8Array|ArrayBuffer} key key\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} Hex string\n * @example\n * md5.hmac.hex('key', 'The quick brown fox jumps over the lazy dog');\n * // equal to\n * md5.hmac('key', 'The quick brown fox jumps over the lazy dog');\n */\n\n /**\n * @method digest\n * @memberof md5.hmac\n * @description Output hash as bytes array\n * @param {String|Array|Uint8Array|ArrayBuffer} key key\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Array} Bytes array\n * @example\n * md5.hmac.digest('key', 'The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method array\n * @memberof md5.hmac\n * @description Output hash as bytes array\n * @param {String|Array|Uint8Array|ArrayBuffer} key key\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Array} Bytes array\n * @example\n * md5.hmac.array('key', 'The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method arrayBuffer\n * @memberof md5.hmac\n * @description Output hash as ArrayBuffer\n * @param {String|Array|Uint8Array|ArrayBuffer} key key\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {ArrayBuffer} ArrayBuffer\n * @example\n * md5.hmac.arrayBuffer('key', 'The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method buffer\n * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.\n * @memberof md5.hmac\n * @description Output hash as ArrayBuffer\n * @param {String|Array|Uint8Array|ArrayBuffer} key key\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {ArrayBuffer} ArrayBuffer\n * @example\n * md5.hmac.buffer('key', 'The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method base64\n * @memberof md5.hmac\n * @description Output hash as base64 string\n * @param {String|Array|Uint8Array|ArrayBuffer} key key\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} base64 string\n * @example\n * md5.hmac.base64('key', 'The quick brown fox jumps over the lazy dog');\n */\n var createHmacOutputMethod = function (outputType) {\n return function (key, message) {\n return new HmacMd5(key, true).update(message)[outputType]();\n };\n };\n\n /**\n * @method create\n * @memberof md5.hmac\n * @description Create HmacMd5 object\n * @param {String|Array|Uint8Array|ArrayBuffer} key key\n * @returns {HmacMd5} HmacMd5 object.\n * @example\n * var hash = md5.hmac.create('key');\n */\n /**\n * @method update\n * @memberof md5.hmac\n * @description Create and update HmacMd5 object\n * @param {String|Array|Uint8Array|ArrayBuffer} key key\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {HmacMd5} HmacMd5 object.\n * @example\n * var hash = md5.hmac.update('key', 'The quick brown fox jumps over the lazy dog');\n * // equal to\n * var hash = md5.hmac.create('key');\n * hash.update('The quick brown fox jumps over the lazy dog');\n */\n var createHmacMethod = function () {\n var method = createHmacOutputMethod('hex');\n method.create = function (key) {\n return new HmacMd5(key);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type);\n }\n return method;\n };\n\n /**\n * Md5 class\n * @class Md5\n * @description This is internal class.\n * @see {@link md5.create}\n */\n function Md5(sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n this.buffer8 = buffer8;\n } else {\n if (ARRAY_BUFFER) {\n var buffer = new ArrayBuffer(68);\n this.buffer8 = new Uint8Array(buffer);\n this.blocks = new Uint32Array(buffer);\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n }\n this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n }\n\n /**\n * @method update\n * @memberof Md5\n * @instance\n * @description Update hash\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Md5} Md5 object.\n * @see {@link md5.update}\n */\n Md5.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n\n var result = formatMessage(message);\n message = result[0];\n var isString = result[1];\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n var buffer8 = this.buffer8;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (isString) {\n if (ARRAY_BUFFER) {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n buffer8[i++] = code;\n } else if (code < 0x800) {\n buffer8[i++] = 0xc0 | (code >>> 6);\n buffer8[i++] = 0x80 | (code & 0x3f);\n } else if (code < 0xd800 || code >= 0xe000) {\n buffer8[i++] = 0xe0 | (code >>> 12);\n buffer8[i++] = 0x80 | ((code >>> 6) & 0x3f);\n buffer8[i++] = 0x80 | (code & 0x3f);\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n buffer8[i++] = 0xf0 | (code >>> 18);\n buffer8[i++] = 0x80 | ((code >>> 12) & 0x3f);\n buffer8[i++] = 0x80 | ((code >>> 6) & 0x3f);\n buffer8[i++] = 0x80 | (code & 0x3f);\n }\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >>> 2] |= (0xc0 | (code >>> 6)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >>> 2] |= (0xe0 | (code >>> 12)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >>> 2] |= (0xf0 | (code >>> 18)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n } else {\n if (ARRAY_BUFFER) {\n for (i = this.start; index < length && i < 64; ++index) {\n buffer8[i++] = message[index];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Md5.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[i >>> 2] |= EXTRA[i & 3];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.bytes << 3;\n blocks[15] = this.hBytes << 3 | this.bytes >>> 29;\n this.hash();\n };\n\n Md5.prototype.hash = function () {\n var a, b, c, d, bc, da, blocks = this.blocks;\n\n if (this.first) {\n a = blocks[0] - 680876937;\n a = (a << 7 | a >>> 25) - 271733879 << 0;\n d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708;\n d = (d << 12 | d >>> 20) + a << 0;\n c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375;\n c = (c << 17 | c >>> 15) + d << 0;\n b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209;\n b = (b << 22 | b >>> 10) + c << 0;\n } else {\n a = this.h0;\n b = this.h1;\n c = this.h2;\n d = this.h3;\n a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330;\n b = (b << 22 | b >>> 10) + c << 0;\n }\n\n a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[10] - 42063;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734;\n b = (b << 20 | b >>> 12) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[5] - 378558;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[8] - 2022574463;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[11] + 1839030562;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[14] - 35309556;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[1] - 1530992060;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[4] + 1272893353;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[7] - 155497632;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[10] - 1094730640;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[13] + 681279174;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[0] - 358537222;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[3] - 722521979;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[6] + 76029189;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[9] - 640364487;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[12] - 421815835;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[15] + 530742520;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[2] - 995338651;\n b = (b << 23 | b >>> 9) + c << 0;\n a += (c ^ (b | ~d)) + blocks[0] - 198630844;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[7] + 1126891415;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[14] - 1416354905;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[5] - 57434055;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[12] + 1700485571;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[3] - 1894986606;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[10] - 1051523;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[1] - 2054922799;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[8] + 1873313359;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[15] - 30611744;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[6] - 1560198380;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[13] + 1309151649;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[4] - 145523070;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[11] - 1120210379;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[2] + 718787259;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[9] - 343485551;\n b = (b << 21 | b >>> 11) + c << 0;\n\n if (this.first) {\n this.h0 = a + 1732584193 << 0;\n this.h1 = b - 271733879 << 0;\n this.h2 = c - 1732584194 << 0;\n this.h3 = d + 271733878 << 0;\n this.first = false;\n } else {\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n }\n };\n\n /**\n * @method hex\n * @memberof Md5\n * @instance\n * @description Output hash as hex string\n * @returns {String} Hex string\n * @see {@link md5.hex}\n * @example\n * hash.hex();\n */\n Md5.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;\n\n return HEX_CHARS[(h0 >>> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h0 >>> 12) & 0x0F] + HEX_CHARS[(h0 >>> 8) & 0x0F] +\n HEX_CHARS[(h0 >>> 20) & 0x0F] + HEX_CHARS[(h0 >>> 16) & 0x0F] +\n HEX_CHARS[(h0 >>> 28) & 0x0F] + HEX_CHARS[(h0 >>> 24) & 0x0F] +\n HEX_CHARS[(h1 >>> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h1 >>> 12) & 0x0F] + HEX_CHARS[(h1 >>> 8) & 0x0F] +\n HEX_CHARS[(h1 >>> 20) & 0x0F] + HEX_CHARS[(h1 >>> 16) & 0x0F] +\n HEX_CHARS[(h1 >>> 28) & 0x0F] + HEX_CHARS[(h1 >>> 24) & 0x0F] +\n HEX_CHARS[(h2 >>> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h2 >>> 12) & 0x0F] + HEX_CHARS[(h2 >>> 8) & 0x0F] +\n HEX_CHARS[(h2 >>> 20) & 0x0F] + HEX_CHARS[(h2 >>> 16) & 0x0F] +\n HEX_CHARS[(h2 >>> 28) & 0x0F] + HEX_CHARS[(h2 >>> 24) & 0x0F] +\n HEX_CHARS[(h3 >>> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h3 >>> 12) & 0x0F] + HEX_CHARS[(h3 >>> 8) & 0x0F] +\n HEX_CHARS[(h3 >>> 20) & 0x0F] + HEX_CHARS[(h3 >>> 16) & 0x0F] +\n HEX_CHARS[(h3 >>> 28) & 0x0F] + HEX_CHARS[(h3 >>> 24) & 0x0F];\n };\n\n /**\n * @method toString\n * @memberof Md5\n * @instance\n * @description Output hash as hex string\n * @returns {String} Hex string\n * @see {@link md5.hex}\n * @example\n * hash.toString();\n */\n Md5.prototype.toString = Md5.prototype.hex;\n\n /**\n * @method digest\n * @memberof Md5\n * @instance\n * @description Output hash as bytes array\n * @returns {Array} Bytes array\n * @see {@link md5.digest}\n * @example\n * hash.digest();\n */\n Md5.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;\n return [\n h0 & 0xFF, (h0 >>> 8) & 0xFF, (h0 >>> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n h1 & 0xFF, (h1 >>> 8) & 0xFF, (h1 >>> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n h2 & 0xFF, (h2 >>> 8) & 0xFF, (h2 >>> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n h3 & 0xFF, (h3 >>> 8) & 0xFF, (h3 >>> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ];\n };\n\n /**\n * @method array\n * @memberof Md5\n * @instance\n * @description Output hash as bytes array\n * @returns {Array} Bytes array\n * @see {@link md5.array}\n * @example\n * hash.array();\n */\n Md5.prototype.array = Md5.prototype.digest;\n\n /**\n * @method arrayBuffer\n * @memberof Md5\n * @instance\n * @description Output hash as ArrayBuffer\n * @returns {ArrayBuffer} ArrayBuffer\n * @see {@link md5.arrayBuffer}\n * @example\n * hash.arrayBuffer();\n */\n Md5.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(16);\n var blocks = new Uint32Array(buffer);\n blocks[0] = this.h0;\n blocks[1] = this.h1;\n blocks[2] = this.h2;\n blocks[3] = this.h3;\n return buffer;\n };\n\n /**\n * @method buffer\n * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.\n * @memberof Md5\n * @instance\n * @description Output hash as ArrayBuffer\n * @returns {ArrayBuffer} ArrayBuffer\n * @see {@link md5.buffer}\n * @example\n * hash.buffer();\n */\n Md5.prototype.buffer = Md5.prototype.arrayBuffer;\n\n /**\n * @method base64\n * @memberof Md5\n * @instance\n * @description Output hash as base64 string\n * @returns {String} base64 string\n * @see {@link md5.base64}\n * @example\n * hash.base64();\n */\n Md5.prototype.base64 = function () {\n var v1, v2, v3, base64Str = '', bytes = this.array();\n for (var i = 0; i < 15;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] +\n BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] +\n BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] +\n BASE64_ENCODE_CHAR[v3 & 63];\n }\n v1 = bytes[i];\n base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] +\n BASE64_ENCODE_CHAR[(v1 << 4) & 63] +\n '==';\n return base64Str;\n };\n\n /**\n * HmacMd5 class\n * @class HmacMd5\n * @extends Md5\n * @description This is internal class.\n * @see {@link md5.hmac.create}\n */\n function HmacMd5(key, sharedMemory) {\n var i, result = formatMessage(key);\n key = result[0];\n if (result[1]) {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >>> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >>> 12));\n bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >>> 18));\n bytes[index++] = (0x80 | ((code >>> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n }\n\n if (key.length > 64) {\n key = (new Md5(true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Md5.call(this, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacMd5.prototype = new Md5();\n\n HmacMd5.prototype.finalize = function () {\n Md5.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Md5.call(this, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Md5.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.md5 = exports;\n exports.md5.hmac = createHmacMethod();\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n /**\n * @method md5\b\n * @description Md5 hash function, export to global in browsers.\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} md5 hashes\n * @example\n * md5(''); // d41d8cd98f00b204e9800998ecf8427e\n * md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6\n * md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0\n *\n * // It also supports UTF-8 encoding\n * md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07\n *\n * // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`\n * md5([]); // d41d8cd98f00b204e9800998ecf8427e\n * md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e\n */\n root.md5 = exports;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","function getUint16(buffer, offset = 0) {\n const view = getBufferView(buffer, offset, 2);\n return view.getUint16(0, true);\n}\nfunction getUint32(buffer, offset = 0) {\n const view = getBufferView(buffer, offset, 4);\n return view.getUint32(0, true);\n}\nfunction getString(buffer, offset = 0, length = buffer.byteLength) {\n const slice = buffer.slice(offset, offset + length);\n return decoder.decode(new Uint8Array(slice));\n}\nfunction compareBytes(source, sample, offset = 0) {\n if (source.length < sample.length + offset) {\n return false;\n }\n for (const [i, element] of sample.entries()) {\n if (element === null)\n continue;\n if (element !== source[i + offset]) {\n return false;\n }\n }\n return true;\n}\nfunction getBufferView(buffer, offset, length) {\n const slice = buffer.slice(offset, offset + length);\n return new DataView(new Uint8Array(slice).buffer);\n}\nconst decoder = new TextDecoder(\"utf8\");\n\nconst signatures = [\n [\n \"db\",\n \"application/vnd.sqlite3\",\n [\n 83,\n 81,\n 76,\n 105,\n 116,\n 101,\n 32,\n 102,\n 111,\n 114,\n 109,\n 97,\n 116,\n 32,\n 51,\n 0\n ]\n ],\n [\"woff\", \"font/woff\", [119, 79, 70, 70]],\n [\"woff2\", \"font/woff2\", [119, 79, 70, 50]],\n [\"bmp\", \"image/bmp\", [66, 77]],\n [\"gif\", \"image/gif\", [71, 73, 70, 56, 55, 97]],\n [\"gif\", \"image/gif\", [71, 73, 70, 56, 57, 97]],\n [\n \"heic\",\n \"image/heic\",\n [102, 116, 121, 112, 104, 101, 105],\n { offset: 4 }\n ],\n [\"heic\", \"image/heic\", [102, 116, 121, 112, 109], { offset: 4 }],\n [\"ico\", \"image/x-icon\", [0, 0, 1, 0]],\n [\"jpg\", \"image/jpeg\", [255, 216, 255]],\n [\"pdf\", \"application/pdf\", [37, 80, 68, 70, 45]],\n [\"png\", \"image/png\", [137, 80, 78, 71, 13, 10, 26, 10]],\n [\"7z\", \"application/x-7z-compressed\", [55, 122, 188, 175, 39, 28]],\n [\n \"rar\",\n \"application/x-rar-compressed\",\n [82, 97, 114, 33, 26, 7, 0]\n ],\n [\n \"rar\",\n \"application/x-rar-compressed\",\n [82, 97, 114, 33, 26, 7, 1, 0]\n ],\n [\"rtf\", \"application/rtf\", [123, 92, 114, 116, 102, 49]],\n [\"bz2\", \"application/x-bzip2\", [66, 90, 104]],\n [\"gz\", \"application/gzip\", [31, 139]],\n [\n \"tar\",\n \"application/x-tar\",\n [117, 115, 116, 97, 114, 0, 48, 48],\n { offset: 257 }\n ],\n [\n \"tar\",\n \"application/x-tar\",\n [117, 115, 116, 97, 114, 32, 32, 0],\n { offset: 257 }\n ],\n [\"tif\", \"image/tiff\", [73, 73, 42, 0]],\n [\"tiff\", \"image/tiff\", [77, 77, 0, 42]],\n [\"zip\", \"application/zip\", [80, 75, 3, 4], { exact: false }],\n [\"zip\", \"application/zip\", [80, 75, 5, 6]],\n [\"mp3\", \"audio/mp3\", [255, 251]],\n [\"mp3\", \"audio/mp3\", [255, 243]],\n [\"mp3\", \"audio/mp3\", [255, 242]],\n [\"mp3\", \"audio/mp3\", [73, 68, 51]],\n [\n \"mp4\",\n \"video/mp4\",\n [102, 116, 121, 112, 105, 115, 111, 109],\n { offset: 4 }\n ],\n [\n \"avi\",\n \"video/x-msvideo\",\n [82, 73, 70, 70, null, null, null, null, 65, 86, 73, 32]\n ],\n [\n \"wav\",\n \"audio/wav\",\n [82, 73, 70, 70, null, null, null, null, 87, 65, 86, 69]\n ],\n [\n \"ogx\",\n \"application/ogg\",\n [79, 103, 103, 83],\n { exact: false },\n [\n [\"oga\", \"audio/ogg\", [127, 70, 76, 65, 67], { offset: 28 }],\n [\n \"ogg\",\n \"audio/ogg\",\n [1, 118, 111, 114, 98, 105, 115],\n { offset: 28 }\n ],\n [\n \"ogm\",\n \"video/ogg\",\n [1, 118, 105, 100, 101, 111, 0],\n { offset: 28 }\n ],\n [\n \"ogv\",\n \"video/ogg\",\n [128, 116, 104, 101, 111, 114, 97],\n { offset: 28 }\n ]\n ]\n ],\n [\n \"webp\",\n \"image/webp\",\n [82, 73, 70, 70, null, null, null, null, 87, 69, 66, 80]\n ],\n [\"psd\", \"image/vnd.adobe.photoshop\", [56, 66, 80, 83]],\n [\"flac\", \"audio/x-flac\", [102, 76, 97, 67]],\n [\"wasm\", \"application/wasm\", [0, 97, 115, 109]],\n [\n \"deb\",\n \"application/x-deb\",\n [33, 60, 97, 114, 99, 104, 62, 10]\n ],\n [\"exe\", \"application/x-msdownload\", [77, 90]],\n [\"exe\", \"application/x-msdownload\", [90, 77]],\n [\"class\", \"application/java-vm\", [202, 254, 186, 190]]\n];\n\nfunction isText(data) {\n for (let i = 0; i < data.length; i++) {\n try {\n const code = data.charCodeAt(i);\n if (code === 65533 || code <= 8) {\n return false;\n }\n } catch {\n return false;\n }\n }\n return true;\n}\nfunction parseTxtLikeFiles(buffer) {\n try {\n const data = getString(buffer);\n if (!isText(data)) {\n return void 0;\n }\n try {\n JSON.parse(data);\n return { ext: \"json\", mime: \"application/json\" };\n } catch {\n return { ext: \"txt\", mime: \"text/plain\" };\n }\n } catch {\n return void 0;\n }\n}\n\nfunction getUpperLimit(signatures) {\n return flatten(signatures).map(([_ext, _mime, sample, { offset = 0 } = {}]) => sample.length + offset).reduce((lim, val) => val > lim ? val : lim, 0);\n}\nfunction flatten(signatures) {\n return signatures.flatMap(\n ([ext, mime, bytes, options = {}, subSignatures = []]) => [\n [ext, mime, bytes, options],\n ...subSignatures\n ]\n );\n}\nfunction findMatches(signatures, { ext, mime }) {\n if (!(ext || mime))\n return [];\n return flatten(signatures).filter(\n (signature) => signature[0] === ext || signature[1] === mime\n );\n}\n\nfunction parseZipLikeFiles(buffer, result) {\n const size = getUint16(buffer, 26);\n const name = getString(buffer, 30, size);\n const [identifier] = name.split(\"/\");\n const xmlFormat = name.endsWith(\".xml\");\n if (identifier === \"META-INF\") {\n return {\n ext: \"jar\",\n mime: \"application/java-archive\"\n };\n }\n if (identifier === \"ppt\" && xmlFormat) {\n return {\n ext: \"pptx\",\n mime: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n };\n }\n if (identifier === \"word\" && xmlFormat) {\n return {\n ext: \"docx\",\n mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n };\n }\n if (identifier === \"xl\" && xmlFormat) {\n return {\n ext: \"xlsx\",\n mime: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n };\n }\n if (identifier === \"mimetype\") {\n return parseOpenDocumentFile(buffer, size) ?? result;\n }\n return result;\n}\nfunction parseOpenDocumentFile(buffer, offset) {\n const compressedSize = getUint32(buffer, 18);\n const uncompressedSize = getUint32(buffer, 22);\n const extraFieldLength = getUint16(buffer, 28);\n if (compressedSize === uncompressedSize) {\n const mime = getString(\n buffer,\n 30 + offset + extraFieldLength,\n compressedSize\n );\n if (mime === \"application/vnd.oasis.opendocument.presentation\") {\n return {\n ext: \"odp\",\n mime\n };\n }\n if (mime === \"application/vnd.oasis.opendocument.spreadsheet\") {\n return {\n ext: \"ods\",\n mime\n };\n }\n if (mime === \"application/vnd.oasis.opendocument.text\") {\n return {\n ext: \"odt\",\n mime\n };\n }\n if (mime === \"application/epub+zip\") {\n return {\n ext: \"epub\",\n mime\n };\n }\n }\n return void 0;\n}\n\nconst UPPER_LIMIT = getUpperLimit(signatures);\nfunction parse(buffer, { extra = false, hint } = {}) {\n const bytes = new Uint8Array(buffer.slice(0, UPPER_LIMIT));\n if (hint) {\n const matches = findMatches(signatures, hint);\n if (matches.length > 0) {\n const result2 = parseBytes(bytes, matches);\n if (result2 !== void 0) {\n return result2;\n }\n }\n }\n const result = parseBytes(bytes, signatures);\n if (result) {\n return result;\n }\n if (extra) {\n return parseExtraTypes(buffer);\n }\n return void 0;\n}\nfunction parseBytes(bytes, signatures) {\n for (const [\n ext,\n mime,\n sample,\n { exact = true, offset = 0 } = {},\n subSignatures = []\n ] of signatures) {\n if (compareBytes(bytes, sample, offset)) {\n if (ext === \"zip\" && !exact) {\n return parseZipLikeFiles(bytes.buffer, { ext, mime });\n }\n if (!exact && subSignatures.length) {\n for (const [ext2, mime2, sample2, { offset: offset2 = 0 } = {}] of subSignatures) {\n if (compareBytes(bytes, sample2, offset2)) {\n return { ext: ext2, mime: mime2 };\n }\n }\n }\n return { ext, mime };\n }\n }\n return void 0;\n}\nfunction parseExtraTypes(buffer) {\n return parseTxtLikeFiles(buffer);\n}\n\nexport { parse };\n","import { md5 } from 'js-md5';\r\nimport { parse } from \"file-type-mime\";\r\n\r\n/**\r\n * @param {string} str\r\n * @param {string} search\r\n * @param {string} replacement\r\n * @returns {string}\r\n */\r\nfunction replaceAll(str, search, replacement) {\r\n let lastIndex = 0;\r\n while (true) {\r\n let index = str.indexOf(search, lastIndex)\r\n if (index === -1) {\r\n break;\r\n }\r\n lastIndex = index + search.length;\r\n str = str.replace(search, replacement);\r\n }\r\n return str;\r\n}\r\n\r\n/**\r\n * @param {string} filepath\r\n * @param {ArrayBuffer} buffer\r\n */\r\nexport function toFile(filepath, buffer) {\r\n\r\n const name = replaceAll(filepath, \"\\\\\", \"/\").split(\"/\").pop() || filepath;\r\n const mimetype = getFileMimeType(buffer, filepath);\r\n const file = /** @type { import('../types').FileWithPath } */ (/** @type {unknown} */ (new File([buffer], name, { type: mimetype })));\r\n file.path = filepath;\r\n return file;\r\n}\r\n\r\n/**\r\n * Convert a dataURL to a blob\r\n * @param {string} dataURL\r\n * @returns {Blob | null} blob\r\n */\r\nexport function dataURLToBlob(dataURL) {\r\n const BASE64_MARKER = ';base64,';\r\n if (dataURL.indexOf(BASE64_MARKER) === -1) {\r\n return null;\r\n }\r\n const parts = dataURL.split(BASE64_MARKER);\r\n const contentType = parts[0].split(':')[1];\r\n const raw = window.atob(parts[1]);\r\n const rawLength = raw.length;\r\n const array = new Uint8Array(new ArrayBuffer(rawLength));\r\n for (let i = 0; i < raw.length; i++) {\r\n array[i] = raw.charCodeAt(i);\r\n }\r\n return new Blob([array], { type: contentType });\r\n}\r\n\r\n/**\r\n * Convert a dataURL to a file\r\n * @param {string} dataURL\r\n * @param {string} filename\r\n * @returns {File | null} file\r\n */\r\nexport function dataURLToFile(dataURL, filename) {\r\n const blob = dataURLToBlob(dataURL);\r\n if (!blob) return null;\r\n return new File([blob], filename, { type: blob.type });\r\n\r\n}\r\n\r\n\r\n/**\r\n * Get a md5 hash for presigning URLs (S3 content-md5)\r\n * @param {ArrayBuffer} buffer\r\n * @returns {string} hash\r\n */\r\nexport function hashContentMD5(buffer) {\r\n const hash = md5.create();\r\n hash.update(buffer);\r\n return hash.base64();\r\n}\r\n\r\n/**\r\n * Create a md5 hash from a string\r\n * @param {string} str\r\n */\r\nexport function hashStringMD5(str) {\r\n return md5(str);\r\n}\r\n\r\n\r\n\r\n/**\r\n * @param {DataTransfer} datatransfer \r\n * @returns {Promise<import('../types').FileWithPath[]>} files\r\n */\r\nexport async function getAllFiles(datatransfer) {\r\n /**\r\n * @type {import('../types').FileWithPath[]}\r\n */\r\n const arr = [];\r\n const items = [];\r\n if (datatransfer instanceof DataTransfer) {\r\n for (let i = 0; i < datatransfer.items.length; i++) {\r\n items.push(datatransfer.items[i]);\r\n }\r\n }\r\n\r\n const promises = [];\r\n for (let i = 0; i < items.length; i++) {\r\n const item = items[i].webkitGetAsEntry();\r\n if (item) {\r\n const prom = getAllFilesFromDirectory(item, arr);\r\n promises.push(prom);\r\n }\r\n }\r\n await Promise.all(promises);\r\n return arr;\r\n}\r\n\r\n/**\r\n * @param {FileSystemEntry | FileSystemDirectoryEntry} fileOrDirectorySystemEntry\r\n * @param {import('../types').FileWithPath[]} target\r\n * @returns {Promise<void>}\r\n */\r\nasync function getAllFilesFromDirectory(fileOrDirectorySystemEntry, target, path = \"\") {\r\n\r\n if (fileOrDirectorySystemEntry.isFile) {\r\n /** @ts-ignore @type {FileSystemFileEntry} */\r\n const fe = fileOrDirectorySystemEntry;\r\n const file = await getFile(fe, path);\r\n if (file) target.push(file);\r\n return;\r\n }\r\n else if (!fileOrDirectorySystemEntry.isDirectory) {\r\n console.error(\"Unknown entry type\", fileOrDirectorySystemEntry);\r\n }\r\n\r\n /** @ts-ignore @type {FileSystemDirectoryEntry} */\r\n const directory = fileOrDirectorySystemEntry;\r\n path += directory.name + \"/\";\r\n const reader = directory.createReader();\r\n return new Promise(async (resolve, reject) => {\r\n // We need to continue calling readEntries until the length of the result is 0\r\n while (true) {\r\n const res = await read().catch(reject);\r\n if (!res) {\r\n resolve();\r\n break;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * @returns {Promise<boolean>} hasMore\r\n */\r\n function read() {\r\n return new Promise((resolve, reject) => {\r\n reader.readEntries(async (entries) => {\r\n if (entries.length <= 0) {\r\n resolve(false);\r\n return;\r\n }\r\n console.debug(\"Read\", entries.length);\r\n for (const entry of entries) {\r\n if (entry.isFile) {\r\n /** @ts-ignore @type {FileSystemFileEntry} */\r\n const fe = entry;\r\n const file = await getFile(fe, path);\r\n if (file) target.push(file);\r\n }\r\n else if (entry.isDirectory) {\r\n /** @ts-ignore @type {FileSystemDirectoryEntry} */\r\n const directoryEntry = entry;\r\n await getAllFilesFromDirectory(directoryEntry, target, path);\r\n }\r\n else {\r\n console.error(\"Unknown entry type\", entry);\r\n }\r\n };\r\n resolve(true);\r\n }, err => {\r\n console.error(err);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * @param {FileSystemFileEntry} fe\r\n * @param {string} dir\r\n * @returns {Promise<import('../types').FileWithPath>}\r\n */\r\n function getFile(fe, dir = \"\") {\r\n return new Promise((resolve, reject) => {\r\n fe.file(file => {\r\n resolve(toFileWithPath(file, dir));\r\n }, err => {\r\n console.error(err);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n/**\r\n * @param {File | import('../types').FileLike} file\r\n * @param {string | null} dir\r\n * @returns {import('../types').FileWithPath}\r\n */\r\nexport function toFileWithPath(file, dir = null) {\r\n console.log(\"CONVERT\", file, isFileLike(file))\r\n if (isFileLike(file)) {\r\n file = new File([file.buffer], file.name, { type: file.mimetype });\r\n }\r\n\r\n const myFile = /** @type {import('../types').FileWithPath} */ (file);\r\n if (dir == null) {\r\n dir = file.webkitRelativePath || \"\";\r\n }\r\n myFile.path = dir + file.name;\r\n return myFile;\r\n}\r\n\r\n/**\r\n * @param {any} val\r\n * @returns {val is import('../types').FileLike}\r\n */\r\nexport const isFileLike = (val) => typeof val === \"object\" && typeof val.name === \"string\" && typeof val.mimetype === \"string\";\r\n\r\n/**\r\n * @param {FileList} files\r\n * @returns {Promise<import('../types').FileWithPath[]>} files\r\n */\r\nexport async function toFilesWithPath(files) {\r\n\r\n /** @type {import('../types').FileWithPath[]} */\r\n const list = [];\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n const prom = toFileWithPath(file);\r\n list.push(prom);\r\n }\r\n return list;\r\n}\r\n\r\n/**\r\n * Get the file type from the header\r\n * @param {ArrayBuffer} file\r\n * @param {string|undefined} filename\r\n * @returns {string} type\r\n */\r\nexport function getFileMimeType(file, filename = undefined) {\r\n\r\n const res = parse(file);\r\n if (res) return res.mime;\r\n\r\n const arr = (new Uint8Array(file)).subarray(0, 4);\r\n let header = \"\";\r\n for (var i = 0; i < arr.length; i++) {\r\n header += arr[i].toString(16);\r\n }\r\n\r\n // https://stackoverflow.com/questions/18299806/how-to-check-file-mime-type-with-javascript-before-upload\r\n // https://en.wikipedia.org/wiki/List_of_file_signatures\r\n // https://mimesniff.spec.whatwg.org/#matching-an-image-type-pattern\r\n let type = \"unknown\";\r\n switch (header) {\r\n case \"676c5446\":\r\n type = \"model/gltf-binary\";\r\n break;\r\n case \"89504e47\":\r\n type = \"image/png\";\r\n break;\r\n case \"ffd8ffe0\":\r\n case \"ffd8ffe1\":\r\n case \"ffd8ffe2\":\r\n case \"ffd8ffe3\":\r\n case \"ffd8ffe8\":\r\n type = \"image/jpeg\";\r\n break;\r\n default:\r\n type = \"unknown\"; // Or you can use the blob.type as fallback\r\n break;\r\n }\r\n\r\n if (type === \"unknown\" && typeof filename === \"string\") {\r\n if (filename.endsWith(\".html\")) type = \"text/html\";\r\n else if (filename.endsWith(\".html.gz\")) type = \"text/html\"; // even if the file is gzipped we want to deliver the file as html\r\n else if (filename.endsWith(\".js\")) type = \"application/javascript\";\r\n else if (filename.endsWith(\".js.gz\")) type = \"application/javascript\"; // even if the file is gzipped we want to deliver the file as javascript\r\n else if (filename.endsWith(\".wasm\")) type = \"application/wasm\";\r\n else if (filename.endsWith(\".css\")) type = \"text/css\";\r\n else if (filename.endsWith(\".json\")) type = \"application/json\";\r\n else if (filename.endsWith(\".txt\")) type = \"text/plain\";\r\n else if (filename.endsWith(\".bin\")) type = \"application/octet-stream\";\r\n else if (filename.endsWith(\".png\")) type = \"image/png\";\r\n else if (filename.endsWith(\".jpg\") || filename.endsWith(\".jpeg\")) type = \"image/jpeg\";\r\n else if (filename.endsWith(\".gif\")) type = \"image/gif\";\r\n else if (filename.endsWith(\".webp\")) type = \"image/webp\";\r\n else if (filename.endsWith(\".svg\")) type = \"image/svg+xml\";\r\n }\r\n\r\n return type\r\n}\r\n\r\n/**\r\n * For deployments we need to make sure that the file type is the actual content type and the filename does not contain the .gz or .br extension\r\n * @link https://linear.app/needle/issue/NE-5525\r\n * @param {string} filename\r\n * @param {string} mimetype\r\n * @returns {{filename:string, mimetype:string} | null}\r\n */\r\nexport function getUncompressedFileMimeType(filename, mimetype) {\r\n if (mimetype === \"application/gzip\" || mimetype === \"application/brotli\") {\r\n // Make sure the type is the actual content type\r\n if (filename.endsWith(\".html.gz\") || filename.endsWith(\".html.br\")) {\r\n mimetype = \"text/html\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".js.gz\") || filename.endsWith(\".js.br\")) {\r\n mimetype = \"application/javascript\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".mjs.gz\") || filename.endsWith(\".mjs.br\")) {\r\n mimetype = \"application/javascript\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".css.gz\") || filename.endsWith(\".css.br\")) {\r\n mimetype = \"text/css\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".json.gz\") || filename.endsWith(\".json.br\")) {\r\n mimetype = \"text/json\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".txt.gz\") || filename.endsWith(\".txt.br\")) {\r\n mimetype = \"text/plain\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".wasm.gz\") || filename.endsWith(\".wasm.br\")) {\r\n mimetype = \"application/wasm\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".bin.gz\") || filename.endsWith(\".bin.br\")) {\r\n mimetype = \"application/octet-stream\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".png.gz\") || filename.endsWith(\".png.br\")) {\r\n mimetype = \"image/png\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".jpg.gz\") || filename.endsWith(\".jpg.br\") || filename.endsWith(\".jpeg.gz\") || filename.endsWith(\".jpeg.br\")) {\r\n mimetype = \"image/jpeg\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".gif.gz\") || filename.endsWith(\".gif.br\")) {\r\n mimetype = \"image/gif\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".webp.gz\") || filename.endsWith(\".webp.br\")) {\r\n mimetype = \"image/webp\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n else if (filename.endsWith(\".svg.gz\") || filename.endsWith(\".svg.br\")) {\r\n mimetype = \"image/svg+xml\";\r\n filename = filename.substring(0, filename.length - 3);\r\n }\r\n return { filename, mimetype };\r\n }\r\n return null;\r\n}\r\n\r\n\r\n/**\r\n * Tests if a file has the correct extension and mimetype to be deployed\r\n * @param {string} filename\r\n * @param {string} mimetype\r\n */\r\nexport function validateFileForDeployment(filename, mimetype) {\r\n\r\n if (filename.endsWith(\".html\") || filename.endsWith(\".html.gz\") || filename.endsWith(\".html.br\")) {\r\n if (mimetype !== \"text/html\") {\r\n return false;\r\n }\r\n }\r\n else if (filename.endsWith(\".js\") || filename.endsWith(\".js.gz\") || filename.endsWith(\".js.br\")) {\r\n if (mimetype !== \"text/javascript\" && mimetype !== \"application/javascript\") {\r\n return false;\r\n }\r\n }\r\n else if (filename.endsWith(\".css\") || filename.endsWith(\".css.gz\") || filename.endsWith(\".css.br\")) {\r\n if (mimetype !== \"text/css\") {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\n\r\n/**\r\n * @param {string} type\r\n */\r\nexport function isglTFOrGLBMimeType(type) {\r\n return type === \"model/gltf-binary\" || type === \"model/gltf+json\";\r\n}\r\n/**\r\n * @param {string} filename\r\n */\r\nexport function hasglTFOrGLBExtension(filename) {\r\n return filename.endsWith(\".glb\") || filename.endsWith(\".gltf\") || filename.endsWith(\".vrm\");\r\n}\r\n\r\n\r\n\r\n/**\r\n * Takes a file path or directory path and returns the directory path\r\n * @param {string} path\r\n */\r\nexport function getDirectory(path) {\r\n const str = replaceAll(path, \"\\\\\", \"/\");\r\n const parts = str.split(\"/\");\r\n const lastPart = parts[parts.length - 1];\r\n // check if the last part is a file\r\n if (lastPart.includes(\".\")) {\r\n // remove the file part\r\n parts.pop();\r\n }\r\n return parts.join(\"/\");\r\n}\r\n\r\n\r\n/**\r\n * @param {string} filename\r\n * @param {string} newExtension e.g. \".glb\"\r\n */\r\nexport function changeExtension(filename, newExtension) {\r\n return filename.replace(/\\.[^/.]+$/, newExtension);\r\n}\r\n\r\n\r\n\r\n/**\r\n * @param {number} size\r\n * @param {number | undefined} precision\r\n */\r\nexport function toHumanReadableSizeString(size, precision = undefined, postfix = true) {\r\n if (size > 1024 * 1024 * 1024) {\r\n let pp = postfix ? \" GB\" : \"\";\r\n return (size / (1024 * 1024 * 1024)).toFixed(precision || 2) + pp;\r\n }\r\n else if (size > 1024 * 1024) {\r\n let pp = postfix ? \" MB\" : \"\";\r\n return (size / (1024 * 1024)).toFixed(precision || 2) + pp;\r\n }\r\n else if (size > 1024) {\r\n let pp = postfix ? \" KB\" : \"\";\r\n return (size / 1024).toFixed(precision || 0) + pp;\r\n }\r\n let pp = postfix ? \" B\" : \"\";\r\n return size + pp;\r\n}\r\n\r\n\r\n/**\r\n * @param {string} str\r\n */\r\nexport function removeFilePaths(str) {\r\n // https://regex101.com/r/kHtERT/1\r\n const rgx = /(([\\d\\w\\-\\_\\:]+[\\\\|\\/]){2,})/g;\r\n // @ts-ignore\r\n return str.replaceAll(rgx, \"\");\r\n}\r\n\r\n\r\n// export function shortFilePath(str){\r\n// // https://regex101.com/r/TqFyc6/2\r\n// const rgx = /[a-zA-Z0-9\\-\\_]*?[\\\\\\/]\\w+\\.\\w{2,5}/g;\r\n// // remove\r\n// }\r\n\r\n\r\n\r\n/**\r\n * @param {string} path\r\n */\r\nexport function resolvePath(path) {\r\n return path.split('/')\r\n .reduce((a, v) => {\r\n if (v === '.') { } // do nothing\r\n else if (v === '..') a.pop();\r\n else if (v?.length) a.push(v);\r\n return a;\r\n }, [])\r\n .join('/');\r\n}","import { compareVersions } from 'compare-versions';\r\n\r\n\r\n/**\r\n * @param {number} ms\r\n */\r\nexport async function delay(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\n\r\n\r\n/**\r\n * @param {string} str\r\n */\r\nexport function emailToDisplayName(str) {\r\n if (!str) return str;\r\n str = str.split(\"@\")[0];\r\n str = str.replace(/[^a-zA-Z]/g, \" \");\r\n str = str.replace(/\\s+/g, \" \");\r\n // make first letter after space uppercase\r\n str = str.split(\" \").map(s => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase()).join(\" \");\r\n return str;\r\n}\r\n\r\n\r\n/**\r\n * @param {string} semver1\r\n * @param {string} semver2\r\n */\r\nexport function compareSemVer(semver1, semver2) {\r\n return compareVersions(semver1, semver2);\r\n}","import { resolvePath } from \"./file.utils.js\";\r\n\r\n/** \r\n * @typedef GLTF\r\n * @property {{generator?:string,version:string,copyright?:string}} asset\r\n */\r\n\r\n/**\r\n * Validates files if they can be uploaded - e.g. if a glTF file references all resources\r\n * @param {import(\"../types\").FileWithPath[]} files\r\n * @returns {Promise<{success:boolean} | {error:string}>}\r\n */\r\nexport async function validateFiles(files) {\r\n\r\n if (files.length > 1000) {\r\n return { success: false, error: \"Too many files. Maximum filecount is \" + 1000 };\r\n }\r\n\r\n let totalSize = 0;\r\n const maxSizeInTotal = /** 150 MB */ 150 * 1024 * 1024;\r\n\r\n for (let i = files.length - 1; i >= 0; i--) {\r\n const file = files[i];\r\n\r\n totalSize += file.size;\r\n\r\n if (totalSize > maxSizeInTotal) {\r\n return {\r\n success: false, error: `Total file size exceeds limit of ${maxSizeInTotal / 1024 / 1024} MB. Please reduce the size of your upload.`\r\n }\r\n }\r\n\r\n const lowercaseFilename = file.name.toLocaleLowerCase();\r\n if (lowercaseFilename === \".ds_store\") {\r\n console.log(\"🚫 Remove .DS_Store file from upload\");\r\n files.splice(i, 1);\r\n continue;\r\n }\r\n\r\n // check if referenced files in the glTF are also included\r\n if (file.name.endsWith(\".gltf\")) {\r\n console.log(`Found glTF file ${file.name}. Will check if all dependencies are available\\n`, files);\r\n const content = await file.text();\r\n const uris = content.matchAll(/\"uri\"\\s*:\\s*\"(?<value>.*?)\"/g);\r\n if (!uris) {\r\n continue;\r\n }\r\n\r\n /** @type {GLTF} */\r\n const json = JSON.parse(content);\r\n if (json.asset.version !== \"2.0\") {\r\n console.warn(\"⚠ glTF version is not 2.0. This is currently not supported.\");\r\n return { success: false, error: `glTF version ${json.asset.version} is unsupported.Please use glTF 2.0.` };\r\n }\r\n\r\n const parts = file.path?.split(\"/\");\r\n const basePath = parts.splice(0, parts.length - 1);\r\n for (const uri of uris) {\r\n const value = uri.groups?.value;\r\n if (value) {\r\n // TODO: check that no file is referenced OUTSIDE of the glTF directory\r\n let found = false;\r\n\r\n if (value.startsWith(\"http://\") || value.startsWith(\"https://\") || value.startsWith(\"www.\")) {\r\n console.log(`✅ Found remote dependency ${value} `);\r\n break;\r\n }\r\n else if (value.startsWith(\"data:\")) {\r\n console.log(`✅ Found embedded dependency ${value} `);\r\n break;\r\n }\r\n else {\r\n const resourcePath = resolvePath(basePath + \"/\" + value);\r\n console.log(\"❓ Check if local dependency exists \\\"\" + resourcePath + \"\\\"\");\r\n for (const f of files) {\r\n if (f.webkitRelativePath === resourcePath || f.name == resourcePath) {\r\n found = true;\r\n console.log(`✅ Found dependency in name or webkit: ${f.name} || ${f.webkitRelativePath} `);\r\n break;\r\n }\r\n const fileWithPath = /** @type {import(\"../types\").FileWithPath} */ (f);\r\n if (fileWithPath.path === resourcePath) {\r\n found = true;\r\n console.log(`✅ Found dependency in path: ${f.path} `);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!found) {\r\n console.warn(\"⚠ Missing dependency \" + value);\r\n return { success: false, error: \"Missing resource: \" + value };\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { success: true };\r\n}\r\n\r\n\r\n\r\n/**\r\n * @param {import(\"../types\").FileWithPath[]} files\r\n * @returns {import(\"../types\").FileWithPath | {error:string}}\r\n */\r\nexport function tryDetermineEntrypoint(files) {\r\n\r\n let entryPointFile = null;\r\n let error = \"\";\r\n\r\n // for (const file of files) {\r\n\r\n // const ext = file.name.split(\".\").pop();\r\n // switch (ext?.toLowerCase()) {\r\n // case \"glb\":\r\n // case \"gltf\":\r\n // case \"vrm\":\r\n // case \"usdz\":\r\n // entryPointFile = file;\r\n // break;\r\n // }\r\n\r\n // }\r\n\r\n const packageJsons = files.filter(f => f.name.endsWith(\"package.json\"));\r\n if (packageJsons.length === 1) {\r\n entryPointFile = packageJsons[0];\r\n return entryPointFile;\r\n }\r\n else if (packageJsons.length > 1) {\r\n error = \"Invalid upload: Multiple package.json files found. This is currently not supported.\";\r\n console.error(error, packageJsons);\r\n return { error }\r\n }\r\n\r\n const indexHtml = files.filter(f => f.name.toLowerCase() === \"index.html\" || f.name.toLowerCase() === \"index.html.gz\" || f.name.toLowerCase() === \"index.html.br\");\r\n if (indexHtml.length === 1) {\r\n entryPointFile = indexHtml[0];\r\n return entryPointFile;\r\n }\r\n else if (indexHtml.length > 1) {\r\n console.warn(\"Multiple index.html files found.\");\r\n }\r\n\r\n const glTF_Files = files.filter(f => f.name.toLowerCase().endsWith(\".glb\") || f.name.toLowerCase().endsWith(\".gltf\") || f.name.toLowerCase().endsWith(\".vrm\"));\r\n if (glTF_Files.length > 1) {\r\n const opt = tryFindEntrypointGLTF(glTF_Files);\r\n if (opt) {\r\n entryPointFile = opt;\r\n return entryPointFile;\r\n }\r\n\r\n error = \"Invalid upload: Multiple glb/glTF/vrm files found. This is currently not supported.\";\r\n console.error(error, glTF_Files.map(f => f.path || f.name));\r\n return { error }\r\n }\r\n else if (glTF_Files.length === 1) {\r\n entryPointFile = glTF_Files[0];\r\n return entryPointFile;\r\n }\r\n\r\n\r\n const usdFiles = files.filter(f => f.name.endsWith(\".usdz\") || f.name.endsWith(\".usd\") || f.name.endsWith(\".usda\") || f.name.endsWith(\".usdc\"));\r\n if (usdFiles.length >= 1) {\r\n entryPointFile = findFileWithShortestPath(usdFiles);\r\n }\r\n\r\n\r\n const fbxFiles = files.filter(f => f.name.endsWith(\".fbx\"));\r\n if (fbxFiles.length > 1) {\r\n error = \"Invalid upload: Multiple fbx files found. This is currently not supported.\";\r\n console.error(error, fbxFiles);\r\n return { error }\r\n }\r\n else if (fbxFiles.length === 1) {\r\n entryPointFile = fbxFiles[0];\r\n return entryPointFile;\r\n }\r\n\r\n const objFiles = files.filter(f => f.name.endsWith(\".obj\"));\r\n if (objFiles.length > 1) {\r\n error = \"Invalid upload: Multiple obj files found. This is currently not supported.\";\r\n console.error(error, objFiles);\r\n return { error }\r\n }\r\n else if (objFiles.length === 1) {\r\n entryPointFile = objFiles[0];\r\n return entryPointFile;\r\n }\r\n\r\n if (!entryPointFile) {\r\n return { error: \"No supported file to upload found...\" };\r\n }\r\n\r\n return entryPointFile;\r\n\r\n}\r\n\r\n/**\r\n * @param {Array<import(\"../types\").FileLike | File | import(\"../types\").FileWithPath>} files\r\n */\r\nexport function containsHtmlFiles(files) {\r\n return files.some(f => {\r\n let name = f.name.toLowerCase();\r\n if (name.endsWith(\".html\") || name.endsWith(\".htm\") || name.endsWith(\".html.gz\") || name.endsWith(\".html.br\")) {\r\n return true;\r\n }\r\n else if (\"mimetype\" in f && f.mimetype === \"text/html\") {\r\n return true;\r\n }\r\n return false;\r\n })\r\n}\r\n\r\n\r\n/**\r\n * @param {import(\"../types\").FileWithPath[]} files\r\n */\r\nfunction tryFindEntrypointGLTF(files) {\r\n // lets ignore all the LOD mesh and texture files because they are never the entrypoint\r\n const candidates = new Array();\r\n const lodRegex = /(mesh_lod|image)_\\d_(.{1,50})/; // https://regex101.com/r/v0k6eB/1\r\n for (const file of files) {\r\n if (lodRegex.test(file.name)) continue;\r\n const name = file.name.toLowerCase();\r\n if (name.endsWith(\".gltf\") || name.endsWith(\".vrm\") || name.endsWith(\".glb\")) {\r\n candidates.push(file);\r\n }\r\n }\r\n if (candidates.length == 1) {\r\n return candidates[0];\r\n }\r\n return findFileWithShortestPath(candidates);\r\n}\r\n\r\n\r\n/**\r\n * @param {import(\"../types\").FileWithPath[]} options\r\n * @returns {import(\"../types\").FileWithPath | null}\r\n */\r\nfunction findFileWithShortestPath(options) {\r\n let index = -1;\r\n let shortest = Infinity;\r\n // TODO: this does currently not take into account that multiple files might have the same length\r\n // then just one will be chosen (e.g. 2 files at the same level)\r\n for (let i = 0; i < options.length; i++) {\r\n const f = options[i];\r\n console.debug(f);\r\n if (f.path.split(\"/\").length < shortest) {\r\n shortest = f.path.split(\"/\").length;\r\n index = i;\r\n }\r\n }\r\n if (index < 0) return null;\r\n return options[index];\r\n}","export class UploadEstimator {\r\n /**\r\n * @param {number} totalFiles\r\n * @param {number} estimatedTotalSize\r\n */\r\n constructor(totalFiles, estimatedTotalSize) {\r\n this.totalFiles = totalFiles;\r\n this.estimatedTotalSize = estimatedTotalSize;\r\n this.uploadedSize = 0;\r\n this.startTime = Date.now();\r\n this.lastUpdateTime = this.startTime;\r\n this.lastUploadedSize = 0;\r\n this.speedEMA = null;\r\n this.emaFactor = 0.1; // Reduced for more stability\r\n this.smoothedRemainingTime = null;\r\n this.recentSpeeds = new Array();\r\n this.maxRecentSpeeds = 20; // Increased for better averaging\r\n this.initialEstimateThreshold = 0.05; // 5% progress threshold for initial estimate\r\n }\r\n\r\n /**\r\n * @param {number} totalUploadedSize\r\n */\r\n updateProgress(totalUploadedSize) {\r\n const now = Date.now();\r\n const timeDiff = (now - this.lastUpdateTime) / 1000; // in seconds\r\n const newlyUploadedSize = totalUploadedSize - this.lastUploadedSize;\r\n this.uploadedSize = totalUploadedSize;\r\n\r\n if (timeDiff > 0 && newlyUploadedSize > 0) {\r\n const instantSpeed = newlyUploadedSize / timeDiff;\r\n this.recentSpeeds.push(instantSpeed);\r\n if (this.recentSpeeds.length > this.maxRecentSpeeds) {\r\n this.recentSpeeds.shift();\r\n }\r\n const averageRecentSpeed = this.recentSpeeds.reduce((a, b) => a + b, 0) / this.recentSpeeds.length;\r\n this.speedEMA = this.speedEMA === null ? averageRecentSpeed : (this.emaFactor * averageRecentSpeed + (1 - this.emaFactor) * this.speedEMA);\r\n }\r\n\r\n this.lastUpdateTime = now;\r\n this.lastUploadedSize = totalUploadedSize;\r\n\r\n const progress = this.uploadedSize / this.estimatedTotalSize;\r\n const elapsedTime = (now - this.startTime) / 1000; // in seconds\r\n\r\n // Use EMA speed for estimation, fall back to average speed if EMA is not reliable\r\n const effectiveSpeed = (this.speedEMA && this.speedEMA > 0) ? this.speedEMA : (this.uploadedSize / elapsedTime);\r\n\r\n let remainingTime;\r\n if (effectiveSpeed > 0) {\r\n const remainingSize = this.estimatedTotalSize - this.uploadedSize;\r\n remainingTime = remainingSize / effectiveSpeed;\r\n } else {\r\n remainingTime = Infinity;\r\n }\r\n\r\n // Apply smoothing only after initial estimate threshold\r\n if (progress >= this.initialEstimateThreshold) {\r\n if (this.smoothedRemainingTime === null) {\r\n this.smoothedRemainingTime = remainingTime;\r\n } else {\r\n const smoothingFactor = 0.1; // Fixed smoothing factor for stability\r\n this.smoothedRemainingTime = (1 - smoothingFactor) * this.smoothedRemainingTime + smoothingFactor * remainingTime;\r\n }\r\n } else {\r\n // Before threshold, use a simple estimate based on current progress\r\n this.smoothedRemainingTime = (elapsedTime / progress) - elapsedTime;\r\n }\r\n\r\n // Ensure the estimate is not less than the time to upload at the current speed\r\n const minRemainingTime = (this.estimatedTotalSize - this.uploadedSize) / effectiveSpeed;\r\n this.smoothedRemainingTime = Math.max(this.smoothedRemainingTime, minRemainingTime);\r\n\r\n return {\r\n progress: progress * 100,\r\n estimatedTimeRemaining: Math.round(this.smoothedRemainingTime),\r\n estimatedTimeRemainingString: this.smoothedRemainingTime > 3 ? this.__formatTime(this.smoothedRemainingTime) : \"few seconds\"\r\n };\r\n }\r\n\r\n /**\r\n * @param {number} seconds\r\n */\r\n __formatTime(seconds) {\r\n if (!isFinite(seconds) || seconds > 24 * 60 * 60) return 'Calculating...';\r\n if (seconds < 60) return `${Math.round(seconds)}sec`;\r\n const minutes = Math.floor(seconds / 60);\r\n if (minutes < 60) return `${minutes}min`;\r\n const hours = Math.floor(minutes / 60);\r\n return `${hours}h ${minutes % 60}min`;\r\n }\r\n}","import axios, { CanceledError } from \"axios\";\r\nimport { updateJobStatus } from \"./api.jobs.js\";\r\nimport { ShareApiEndpoints } from \"./api.js\";\r\nimport { getFileMimeType, getUncompressedFileMimeType, hashContentMD5, toHumanReadableSizeString } from \"./file.utils.js\";\r\nimport { delay } from \"./utils.js\";\r\nimport { tryDetermineEntrypoint, validateFiles } from \"./api.upload.validate.js\";\r\nimport { createAuthHeaders } from \"./api.auth.js\";\r\nimport { UploadEstimator } from \"./utils.upload.js\";\r\n\r\n/**\r\n * @typedef {Object} UploadFilesOptions\r\n * @property {import(\"../types\").TriggerType} triggered_by\r\n * @property {import(\"../types\").FileWithPath[]} files\r\n * @property {import(\"../types\").FileWithPath | undefined} entrypoint\r\n */\r\n\r\n/**\r\n * @typedef {Object} UploadFilesResponse\r\n * @property {true} success If the upload was successful\r\n * @property {string} id The job id of the upload\r\n * @property {string} view_id The view id of the upload\r\n * @property {string | undefined} [url] The url of the upload\r\n * @property {boolean | undefined} uploadSkipped\r\n * @property {number} filesUploaded The number of files uploaded\r\n * @property {number} totalSize The total size of the uploaded files in bytes\r\n * @property {import(\"../types\").JobModel[\"type\"]} type The type of the upload \r\n */\r\n\r\n/**\r\n * List of currently running upload promises\r\n * @type {Array<Promise<any>>}\r\n */\r\nconst currentUploads = [];\r\n\r\n\r\n/** Is there currently an upload in progress?\r\n * @returns {boolean}\r\n */\r\nexport function isFileUploadInProgress() {\r\n return currentUploads.length > 0;\r\n}\r\n\r\n// TODO: the following jsdoc should probably be a type definition because we re-use it in multiple places\r\n/**\r\n * @param {{baseUrl:string} & import(\"../types\").AuthData} args\r\n * @param {UploadFilesOptions} data\r\n * @param {import(\"../types\").UploadFilesOptions | undefined} options\r\n * @returns {Promise<{success:false, error:string} | UploadFilesResponse>}\r\n */\r\nexport async function uploadFiles(args, data, options = undefined) {\r\n const uploadPromise = internalUploadFiles(args, data, options);\r\n // register the upload promise to the list of current uploads\r\n currentUploads.push(uploadPromise);\r\n const result = await uploadPromise\r\n // make sure to remove the promise from the list of current uploads\r\n .finally(() => {\r\n const index = currentUploads.indexOf(uploadPromise);\r\n if (index >= 0) {\r\n currentUploads.splice(index, 1);\r\n }\r\n })\r\n return result;\r\n}\r\n\r\n\r\n/**\r\n * @param {{baseUrl:string} & import(\"../types\").AuthData} args\r\n * @param {UploadFilesOptions} data\r\n * @param {import(\"../types\").UploadFilesOptions | undefined} options\r\n * @returns {Promise<{success:false, error:string} | UploadFilesResponse>}\r\n */\r\nasync function internalUploadFiles(args, data, options = undefined) {\r\n\r\n const files = data.files;\r\n const loglevel = options?.loglevel || \"none\";\r\n\r\n if (!files.length) {\r\n console.error(\"No files to upload\");\r\n return { success: false, error: \"No files to upload\" };\r\n }\r\n\r\n if (!data.entrypoint) {\r\n const entrypoint = tryDetermineEntrypoint(files);\r\n if (entrypoint == null) {\r\n return { success: false, error: \"No entrypoint file found\" };\r\n }\r\n else if (typeof entrypoint === \"object\" && \"error\" in entrypoint) {\r\n const error = entrypoint;\r\n return { success: false, error: error.error };\r\n }\r\n if (loglevel === \"info\") console.log(\"Entrypoint: \" + entrypoint.name);\r\n data.entrypoint = entrypoint;\r\n }\r\n\r\n if (data.entrypoint && !files.includes(data.entrypoint)) {\r\n files.push(data.entrypoint);\r\n }\r\n\r\n const validation = await validateFiles(files);\r\n if (\"error\" in validation) {\r\n return { success: false, error: validation.error || \"Failed to validate files\" };\r\n }\r\n\r\n // if the files entrypoint is a HTML files we consider the upload a deployment\r\n // TODO: perhaps this is something the server should determine/validate\r\n if (data.entrypoint?.name.endsWith(\".html\") || data.entrypoint?.name.endsWith(\".html.gz\") || data.entrypoint?.name.endsWith(\".html.br\")) {\r\n if (!options) options = {};\r\n options.type = \"deployment\";\r\n }\r\n\r\n // sort files so that `.needle` files are uploaded first\r\n files.sort((a, b) => {\r\n if (a.name.includes(\".needle\") && !b.name.includes(\".needle\")) return -1;\r\n if (!a.name.includes(\".needle\") && b.name.includes(\".needle\")) return 1;\r\n return 0;\r\n });\r\n\r\n const { baseUrl, authToken } = args;\r\n const authHeader = \"Bearer \" + authToken;\r\n /** @type {import(\"../types\").UploadBeginRequestHeaders} */\r\n const beginUploadHeaders = {\r\n ...createAuthHeaders(args),\r\n triggered_by: data.triggered_by,\r\n filename: data.entrypoint?.name,\r\n \"total-files\": files.length.toString(),\r\n }\r\n if (options?.view_id) {\r\n beginUploadHeaders.view_id = options.view_id;\r\n }\r\n if (options?.type) {\r\n beginUploadHeaders.type = options.type;\r\n }\r\n if (options?.name) {\r\n // ONLY pass in a name if it is explictly set. Otherwise the upload might be associated with a wrong view (since we use this name to find the view that this upload belongs to)\r\n beginUploadHeaders.name = options?.name;\r\n }\r\n\r\n /**\r\n * @type { import(\"../types\").UploadBeginRequestBody}\r\n */\r\n const beginRequestBody = {\r\n results: {\r\n entrypoint: data.entrypoint?.name,\r\n files: [],\r\n }\r\n }\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n let fileName = file.path || file.webkitRelativePath || file.name;\r\n if (fileName?.includes(\":\")) {\r\n throw new Error(`Invalid filename: ${fileName}`);\r\n }\r\n \r\n let fileBuffer = await file.arrayBuffer();\r\n\r\n // For a deployment we want to gzip files on the fly:\r\n if (options?.type === \"deployment\") {\r\n // if (fileName.endsWith(\".js\")) {\r\n // fileName += \".gz\";\r\n // }\r\n }\r\n\r\n const filesize = file.size;\r\n let filetype = file.type?.length ? file.type : getFileMimeType(fileBuffer, fileName);\r\n // for a deployment we need to make sure to set the content type to the original file type\r\n if (options?.type === \"deployment\") {\r\n const uncompressedName = getUncompressedFileMimeType(fileName, filetype);\r\n if (uncompressedName) {\r\n fileName = uncompressedName.filename;\r\n filetype = uncompressedName.mimetype\r\n }\r\n }\r\n\r\n const md5 = hashContentMD5(fileBuffer);\r\n beginRequestBody.results.files.push({\r\n filename: fileName,\r\n content_type: filetype,\r\n content_length: filesize,\r\n content_md5: md5,\r\n });\r\n }\r\n\r\n const res = await fetch(baseUrl + ShareApiEndpoints.upload.request, {\r\n method: \"POST\",\r\n headers: beginUploadHeaders,\r\n body: JSON.stringify(beginRequestBody),\r\n }).catch(err => {\r\n if (err.message == \"fetch failed\" || err.message == \"Failed to fetch\") {\r\n return `Network error. Make sure you are connected to the internet and ${baseUrl} is reachable.`;\r\n }\r\n console.error(\"Failed to begin upload\\n\", err);\r\n return null;\r\n });\r\n if (res === null || typeof res === \"string\") {\r\n return { success: false, error: res || \"Failed to begin upload\" };\r\n }\r\n if (!res.ok) {\r\n const text = await res.text();\r\n if (loglevel != \"none\") console.error(\"Failed to begin upload\\n\", res.status, text);\r\n return { success: false, error: `Failed to begin upload (${res.status}): ${text}` };\r\n }\r\n\r\n /** @type { import(\"../types\").UploadBeginResponse} */\r\n const beginResponse = await res.json();\r\n if (loglevel === \"debug\") console.debug(\"BeginResponse\", beginResponse);\r\n\r\n const totalBytes = files.reduce((acc, f) => acc + f.size, 0);\r\n\r\n if (beginResponse.type === \"exists\") {\r\n if (loglevel != \"none\") console.log(\"Upload already exists\", beginResponse.id);\r\n return {\r\n success: true,\r\n id: beginResponse.id,\r\n uploadSkipped: true,\r\n view_id: beginResponse.view_id,\r\n filesUploaded: files.length,\r\n totalSize: totalBytes,\r\n };\r\n }\r\n\r\n const entrypointPath = data.entrypoint.webkitRelativePath || data.entrypoint.name;\r\n\r\n let uploadedBytes = 0;\r\n\r\n options?.abort?.addEventListener(\"abort\", async () => {\r\n console.log(\"Upload aborted: Cancelling upload\");\r\n await fetch(baseUrl + ShareApiEndpoints.upload.cancel, {\r\n method: \"POST\",\r\n headers: {\r\n authorization: authHeader,\r\n id: beginResponse.id,\r\n }\r\n });\r\n });\r\n\r\n /** This is set after a successful upload to ensure no async file upload that *might* be tangling is interfering */\r\n let uploadHasCompletedSuccessfully = false;\r\n let lastStatusUpdate = Date.now();\r\n /**\r\n * @param {string} message\r\n * @param {import(\"../types\").JobStatus} status\r\n */\r\n function updateStatus(message, status, force = false) {\r\n if (!force && Date.now() - lastStatusUpdate < 1000) return false;\r\n // safeguard to not override the status if it is already completed\r\n if (uploadHasCompletedSuccessfully && status !== \"completed\") {\r\n if (loglevel != \"none\") console.warn(\"Invalid status update...\");\r\n return;\r\n }\r\n lastStatusUpdate = Date.now();\r\n const progress = Math.floor(uploadedBytes / totalBytes * 100);\r\n if (loglevel === \"debug\") console.log(\"SET STATUS: \" + status, message, progress);\r\n updateJobStatus({\r\n identifier: beginResponse.id,\r\n status,\r\n status_message: message,\r\n progress,\r\n }, args);\r\n return true;\r\n }\r\n\r\n if (options?.onStart) {\r\n options.onStart(beginResponse.id, beginResponse.view_id);\r\n }\r\n\r\n const startTime = Date.now();\r\n const uploadEstimator = new UploadEstimator(files.length, totalBytes / 1024 / 1024);\r\n\r\n /** @type {Array<Promise<any>>} */\r\n const queue = new Array();\r\n const maxParallelUploads = 10;\r\n let anyUploadFailed = false;\r\n const filesCopy = [...files];\r\n for (let i = 0; i < filesCopy.length; i++) {\r\n if (options?.abort?.aborted) {\r\n console.debug(\"Upload aborted\");\r\n break;\r\n }\r\n else if (anyUploadFailed) {\r\n console.debug(\"Upload failed\");\r\n break;\r\n }\r\n if (queue.length < maxParallelUploads) {\r\n console.debug(`Uploading file ${i}/${files.length}: ${files[i].name}`);\r\n let uploaded = 0;\r\n let lastUploaded = 0;\r\n const registeredFile = beginRequestBody.results.files[i];\r\n const fileName = registeredFile.filename;\r\n const fileBuffer = await files[i].arrayBuffer();\r\n const fileSize = registeredFile.content_length;\r\n const filetype = registeredFile.content_type;\r\n const promise = performUpload({\r\n uploadId: beginResponse.id,\r\n uploadRequestPUTUrl: beginResponse.request_put_url,\r\n entrypointPath,\r\n file: files[i],\r\n fileName: fileName,\r\n fileMd5: registeredFile.content_md5,\r\n fileBuffer: fileBuffer,\r\n fileType: filetype,\r\n fileSize,\r\n fileIndex: i,\r\n fileCount: files.length,\r\n loglevel,\r\n args,\r\n options,\r\n onProgress: progressEvent => {\r\n const fileProgress01 = progressEvent.progress || 0;\r\n uploaded = files[i].size * fileProgress01;\r\n const diff = uploaded - lastUploaded;\r\n lastUploaded = uploaded;\r\n uploadedBytes += diff;\r\n if (options?.progress) {\r\n const progress01 = uploadedBytes / totalBytes;\r\n const totalFiles = files.length;\r\n const fileSize = files[i].size;\r\n // let timeLeft = progressEvent.estimated ? \" (\" + progressEvent.estimated.toFixed(0) + \" seconds remaining)\" : \"\";\r\n const timePassedInSeconds = (Date.now() - startTime) / 1000;\r\n const estimation = uploadEstimator.updateProgress(uploadedBytes / 1024 / 1024);\r\n options.progress({\r\n uploadedBytes, totalBytes, progress01, fileName: files[i].name, fileSize, fileProgress01, fileIndex: i, totalFiles,\r\n estimatedTimeLeftDisplay: estimation.estimatedTimeRemainingString,\r\n estimatedTimeLeft: estimation.estimatedTimeRemaining,\r\n elapsedTime: timePassedInSeconds,\r\n });\r\n }\r\n },\r\n }).then(_res => {\r\n if (_res !== true) {\r\n return _res;\r\n }\r\n for (let i = queue.length - 1; i >= 0; i--) {\r\n if (queue[i] === promise) {\r\n queue.splice(i, 1);\r\n }\r\n }\r\n let sizeString = toHumanReadableSizeString(uploadedBytes) + \" of \" + toHumanReadableSizeString(totalBytes);\r\n updateStatus(`Uploaded ${sizeString} for ${files[i].name}`, \"running\");\r\n }).catch(e => {\r\n if (options?.abort?.aborted) {\r\n console.warn(\"Upload aborted\");\r\n return;\r\n }\r\n console.error(e.message);\r\n anyUploadFailed = true;\r\n });\r\n queue.push(promise);\r\n }\r\n if (queue.length >= maxParallelUploads) {\r\n await Promise.race(queue);\r\n }\r\n }\r\n\r\n await Promise.all(queue).catch(e => {\r\n if (options?.abort?.aborted) {\r\n console.warn(\"Upload aborted\");\r\n return;\r\n }\r\n console.error(e.message);\r\n anyUploadFailed = true;\r\n });\r\n if (anyUploadFailed) {\r\n await updateJobStatus({\r\n identifier: beginResponse.id,\r\n status: \"failed\",\r\n error: \"Failed to upload files\",\r\n }, args);\r\n return { success: false, error: \"Failed to upload files\" };\r\n }\r\n if (options?.abort?.aborted) {\r\n await updateJobStatus({\r\n identifier: beginResponse.id,\r\n status: \"canceled\",\r\n status_message: \"Upload aborted\",\r\n error: \"Upload aborted\",\r\n }, args);\r\n return { success: false, error: \"Upload aborted\" };\r\n }\r\n\r\n uploadHasCompletedSuccessfully = true;\r\n\r\n /** @type {import(\"../types\").UploadDoneRequestHeaders}*/\r\n const doneRequestHeaders = {\r\n ...createAuthHeaders(args),\r\n id: beginResponse.id,\r\n }\r\n if (loglevel != \"none\") console.log(\"Completing upload - notify server\");\r\n const doneResponse = await fetch(baseUrl + ShareApiEndpoints.upload.done, {\r\n method: \"POST\",\r\n headers: doneRequestHeaders\r\n }).catch((e) => {\r\n console.error(\"Failed to complete upload\", e);\r\n return null;\r\n });\r\n if (!doneResponse) {\r\n console.error(\"Failed to complete upload\");\r\n return { success: false, error: \"Failed to complete upload\" };\r\n }\r\n if (!doneResponse.ok) {\r\n console.error(\"Failed to complete upload\", await doneResponse.text());\r\n return { success: false, error: \"Failed to complete upload\" };\r\n }\r\n if (loglevel != \"none\") console.log(\"Upload complete\");\r\n\r\n /**\r\n * @type {import(\"../types\").UploadDoneRequestResponse}\r\n */\r\n const doneResponseJson = await doneResponse.json();\r\n return {\r\n success: true,\r\n uploadSkipped: false,\r\n id: doneResponseJson.id,\r\n view_id: doneResponseJson.view_id,\r\n url: doneResponseJson.url,\r\n filesUploaded: files.length,\r\n totalSize: totalBytes\r\n };\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n * @param {{\r\n * uploadId:string,\r\n * uploadRequestPUTUrl:string,\r\n * entrypointPath:string,\r\n * file:import(\"../types\").FileWithPath,\r\n * fileName:string,\r\n * fileMd5:string,\r\n * fileBuffer:ArrayBuffer,\r\n * fileType:string,\r\n * fileSize:number,\r\n * fileIndex:number,\r\n * fileCount:number,\r\n * loglevel: import(\"../types\").LogLevel,\r\n * args: {baseUrl:string} & import(\"../types\").AuthData,\r\n * options: import(\"../types\").UploadFilesOptions | undefined,\r\n * onProgress: (evt:import(\"axios\").AxiosProgressEvent) => void,\r\n * }} params\r\n * @return {Promise<boolean>}\r\n */\r\nasync function performUpload(params) {\r\n const {\r\n uploadId,\r\n uploadRequestPUTUrl,\r\n entrypointPath,\r\n file,\r\n fileName,\r\n fileBuffer: arrayBuffer,\r\n fileMd5,\r\n fileSize,\r\n fileType,\r\n fileIndex,\r\n fileCount,\r\n loglevel,\r\n args,\r\n options,\r\n } = params;\r\n\r\n\r\n // detect encoding type\r\n let content_encoding = undefined;\r\n if (file.name.endsWith(\".gz\")) {\r\n content_encoding = \"gzip\";\r\n }\r\n else if (file.name.endsWith(\".br\")) {\r\n content_encoding = \"br\";\r\n }\r\n // HACK: remove the encoding from the filename\r\n // if (filename.endsWith(\".gz\") || filename.endsWith(\".br\")) {\r\n // console.warn(\"Removing encoding from filename: \" + filename);\r\n // filename = filename.substring(0, filename.length - 3);\r\n // }\r\n\r\n if (loglevel === \"info\") console.log(`Uploading file \\\"${file.name}\\\" type=${fileType} (${fileSize}) ${file.type} with hash ${fileMd5}`);\r\n /** @type {import(\"../types\").RequestPresignedUrlRequestHeaders} */\r\n const requestPresignedUrlHeaders = {\r\n ...createAuthHeaders(args),\r\n job_id: uploadId,\r\n filename: fileName,\r\n filesize: fileSize.toString(),\r\n entrypoint: entrypointPath,\r\n \"content-type\": fileType,\r\n \"content-md5\": fileMd5,\r\n progress: (fileIndex / fileCount * 100).toFixed(0),\r\n }\r\n if (content_encoding) {\r\n requestPresignedUrlHeaders[\"content-encoding\"] = content_encoding;\r\n }\r\n\r\n /**\r\n * @type {null | import(\"../types\").RequestPutUrlResponse}\r\n */\r\n let json = null;\r\n\r\n for (let k = 0; k < 5; k++) {\r\n if (json != null) break;\r\n if (options?.abort?.aborted) {\r\n throw new Error(\"Upload aborted\");\r\n }\r\n await delay(200 * k);\r\n json = await fetch(uploadRequestPUTUrl, {\r\n method: \"POST\",\r\n headers: requestPresignedUrlHeaders,\r\n }).then(async res => {\r\n if (!res.ok) {\r\n console.warn(`Failed to get presigned url (${res.status}). Message: \\\"${await res.text()}\\\"\\n→ Retrying...`);\r\n return null;\r\n }\r\n return await res.json();\r\n }).catch(err => {\r\n console.warn(\"Failed to get presigned url \" + err.message + \", retrying...\");\r\n return null;\r\n });\r\n }\r\n if (json == null) {\r\n throw new Error(\"Failed to get presigned url for \" + fileName);\r\n }\r\n\r\n const putUrl = json.presigned_url;\r\n var didUpload = false;\r\n for (let k = 0; k < 5; k++) {\r\n if (k > 0) await delay(1000 * k);\r\n if (options?.abort?.aborted) {\r\n throw new CanceledError(\"Upload aborted\");\r\n }\r\n /** @type {Record<string, string>} */\r\n const headers = {\r\n \"Content-Type\": fileType,\r\n \"Content-MD5\": fileMd5,\r\n }\r\n if (content_encoding) {\r\n headers[\"Content-Encoding\"] = content_encoding;\r\n }\r\n const putResponse = await axios.put(putUrl, arrayBuffer, {\r\n signal: options?.abort,\r\n headers,\r\n onUploadProgress: (progressEvent) => {\r\n params.onProgress(progressEvent);\r\n }\r\n }).catch((e) => {\r\n if (!(e instanceof CanceledError)) {\r\n if (loglevel !== \"none\")\r\n console.error(\"Failed to upload file\", e);\r\n }\r\n return null;\r\n });\r\n if (!putResponse) {\r\n continue;\r\n }\r\n else if (putResponse.status !== 200) {\r\n console.debug(`Failed (${putResponse.status} ${putResponse.status}) to upload file ${file.name} to \\\"${json.path}\\\". Retrying...`);\r\n continue;\r\n }\r\n else {\r\n didUpload = true;\r\n if (loglevel === \"info\") console.log(\"Uploaded file \" + fileName + \" to \\\"\" + json.path + \"\\\"\");\r\n else console.debug(\"Uploaded \" + file.name + \" to \\\"\" + json.path + \"\\\"\");\r\n break;\r\n }\r\n }\r\n if (!didUpload) {\r\n console.error(\"Failed to upload file \" + fileName);\r\n await updateJobStatus({\r\n identifier: uploadId,\r\n status: \"failed\",\r\n status_message: \"Failed to upload file \" + fileName,\r\n error: \"Failed to upload file \" + fileName,\r\n }, args);\r\n throw new Error(\"Failed to upload file \" + fileName);\r\n }\r\n\r\n return true;\r\n}","import { createAuthHeaders } from \"./api.auth.js\";\r\nimport { ShareApiEndpoints } from \"./api.js\";\r\n// import { getLatestPipelineVersion } from \"./utils.optimization.js\";\r\n\r\n/**\r\n * @typedef {Object} OptimizeRequestArgs\r\n * @property {string} id the job identifier to run optimization for\r\n * @property {import(\"../types\").TriggerType} trigger_type\r\n */\r\n\r\n/**\r\n * @param {{baseUrl:string} & OptimizeRequestArgs & import(\"../types\").AuthData} args\r\n * @param {Omit<import(\"../types\").OptimizationParameters, \"job_identifier\">} parameters\r\n * @returns {Promise<null | import(\"../types\").OptimizeRequestResponse>}\r\n */\r\nexport async function requestOptimize(args, parameters = {\r\n progressive: true,\r\n pipeline_version: \"latest\"\r\n}) {\r\n\r\n const url = args.baseUrl + ShareApiEndpoints.optimize.request;\r\n\r\n /**\r\n * @type {import(\"../types\").OptimizeRequestHeaders}\r\n */\r\n const headers = {\r\n ...createAuthHeaders(args),\r\n job_id: args.id,\r\n type: \"optimization\",\r\n triggered_by: args.trigger_type\r\n }\r\n\r\n // if (parameters.pipeline_version === \"latest\") {\r\n // parameters.pipeline_version = await getLatestPipelineVersion();\r\n // console.log(`Request optimization with latest pipeline version ${parameters.pipeline_version}`);\r\n // }\r\n\r\n /**\r\n * @type {import(\"../types\").OptimizeRequestBody}\r\n */\r\n const body = {\r\n parameters: {\r\n ...parameters\r\n }\r\n }\r\n\r\n const res = await fetch(url, {\r\n method: \"POST\",\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n });\r\n\r\n if (!res.ok) {\r\n const errormsg = await res.text();\r\n console.error(`Failed to request optimization (${res.status}): ${errormsg} `);\r\n return null;\r\n }\r\n\r\n /** \r\n * @type {import(\"../types\").OptimizeRequestResponse}\r\n */\r\n const json = await res.json().catch((err) => {\r\n console.error(err);\r\n return null;\r\n });\r\n\r\n return json;\r\n}","import { emailToDisplayName } from \"./utils.js\";\r\n\r\n/**\r\n * @type {Array<{access_token:string, expires_at:number}>}\r\n */\r\nconst m2mAccessTokens = new Array();\r\n\r\n/**\r\n * Request a new access token from logto for querying the logto API\r\n * @return {Promise<string>}\r\n */\r\nexport async function getLogtoM2MAccessToken() {\r\n\r\n for (const token of m2mAccessTokens) {\r\n if (token.expires_at > Date.now()) {\r\n return token.access_token;\r\n }\r\n }\r\n m2mAccessTokens.length = 0;\r\n\r\n const tokenEndpoint = process.env.LOGTO_ENDPOINT + \"/oidc/token\";\r\n const username = process.env.LOGTO_APP_ID_M2M;\r\n const password = process.env.LOGTO_APP_SECRET_M2M;\r\n const resource = \"https://default.logto.app/api\";\r\n console.log(`Requesting a new access token for Logto API resource \\\"${resource}\\\" using client credentials grant flow.`);\r\n const body = {\r\n grant_type: \"client_credentials\",\r\n resource,\r\n scope: \"all\"\r\n }\r\n\r\n const res = await fetch(tokenEndpoint, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": \"Basic \" + Buffer.from(username + \":\" + password).toString(\"base64\")\r\n },\r\n body: JSON.stringify(body)\r\n }).catch(e => {\r\n console.error(e);\r\n return null;\r\n });\r\n\r\n if (res == null || !res.ok) {\r\n console.error(await res?.text());\r\n throw new Error(\"Failed to get access token\");\r\n }\r\n\r\n console.log(`Successfully requested a new access token for Logto API resource \\\"${resource}\\\" using client credentials grant flow.`)\r\n\r\n /**\r\n * @type {{access_token:string, expires_in:number, token_type:\"Bearer\"}}\r\n */\r\n const json = await res.json();\r\n const expires_at = Date.now() + (json.expires_in * 1000);\r\n m2mAccessTokens.push({ access_token: json.access_token, expires_at });\r\n return json.access_token;\r\n}\r\n\r\n\r\n/**\r\n * @param {string} orgId the organisation id \r\n * @link https://openapi.logto.io/operation/operation-get-api-organizations-parameter-users\r\n * @returns {Promise<null | Array<import(\"../types/logto.js\").OrganizationMember>>} the list of users in the organisation\r\n */\r\nexport async function getOrganisationUsers(orgId) {\r\n\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organizations/${orgId}/users`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken\r\n }\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers\r\n });\r\n\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return null;\r\n }\r\n\r\n /** See https://openapi.logto.io/operation/operation-get-api-organizations-parameter-users\r\n * @type {Array<import(\"../types/logto.js\").OrganizationMember>}\r\n */\r\n const body = await res.json();\r\n return body;\r\n}\r\n\r\n/** \r\n * @link https://openapi.logto.io/operation/operation-get-api-organization-invitations\r\n * @param {string} orgId the organisation id\r\n * @returns {Promise<Array<import(\"../types/logto.js\").OrgUserInvitation> | null>} the list of invitations\r\n */\r\nexport async function getOrganisationInvitations(orgId) {\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organization-invitations?organizationId=${orgId}`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken\r\n }\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers\r\n });\r\n\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return null;\r\n }\r\n\r\n const body = await res.json();\r\n return body;\r\n}\r\n\r\n/**\r\n * @link https://openapi.logto.io/operation/operation-get-api-organization-invitations-parameter\r\n * @param {string} invitationId \r\n * @returns \r\n */\r\nexport async function getOrganisationInvitation(invitationId) {\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organization-invitations/${invitationId}`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken\r\n }\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers\r\n });\r\n\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return null;\r\n }\r\n\r\n const body = await res.json();\r\n return body;\r\n}\r\n\r\n// Current org template roles from https://auth.admin.cloud.needle.tools/console/organization-template/organization-roles\r\n\r\n/**\r\n * @type {Record<import(\"../types/logto.js\").OrgRoleName, string>}\r\n */\r\nconst roles = {\r\n \"guest\": \"1lxn40ssa30tgh5uci6or\",\r\n \"member\": \"omtpqeh9r2904ey2l7aeq\",\r\n \"manage\": \"sun5lg4leibleblceh6ml\",\r\n \"owner\": \"bmb0iscycu8bu8pit9way\",\r\n}\r\n\r\n/** \r\n * @link https://openapi.logto.io/operation/operation-createorganizationinvitation\r\n * @param {string} userId the inviter id\r\n * @param {string} userName the inviter name\r\n * @param {string} orgId the organisation id\r\n * @param {string} orgName the organisation name\r\n * @param {string} email the email of the invitee\r\n * @param {string | URL} emailLink the email link\r\n * @param {import(\"../types/logto.js\").OrgRoleName | undefined} role the new role of the invitee. \"guest\" | \"member\" | \"manage\" | \"owner\"\r\n * @returns {Promise<{error:string} | import(\"../types/logto.js\").OrganizationInvitation>} the invitation\r\n */\r\nexport async function postOrganisationInvitation(userId, userName, orgId, orgName, email, emailLink, role) {\r\n if (!role) {\r\n console.debug(\"No role specified, defaulting to guest\");\r\n role = \"guest\"\r\n }\r\n const roleId = roles[role];\r\n if (!roleId) {\r\n console.error(\"Invalid role\", role);\r\n return { error: \"invalid role\" }\r\n }\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organization-invitations?organizationId=${orgId}`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken,\r\n \"Content-Type\": \"application/json\",\r\n }\r\n const expiresAt = Date.now() + 1000 * 60 * 60 * 24 * 7; // valid for 7 days\r\n const body = {\r\n inviterId: userId,\r\n invitee: email,\r\n organizationId: orgId,\r\n expiresAt,\r\n organizationRoleIds: [roleId],\r\n messagePayload: {\r\n user_name: userName,\r\n org_name: orgName,\r\n link: emailLink,\r\n },\r\n };\r\n const res = await fetch(url, {\r\n method: \"POST\",\r\n headers,\r\n body: JSON.stringify(body),\r\n });\r\n if (!res.ok) {\r\n const error = await res.json();\r\n if (error.code == \"entity.unique_integrity_violation\") {\r\n return { error: \"User already invited\" };\r\n }\r\n console.log(res.status, error);\r\n return { error: error.code };\r\n }\r\n /** @type {import(\"../types/logto.js\").OrganizationInvitation} */\r\n const responseBody = await res.json();\r\n return responseBody;\r\n}\r\n\r\n/** \r\n * @link https://openapi.logto.io/operation/operation-delete-api-organization-invitations-parameter\r\n * @param {string} invitationId the invitation id\r\n * @returns {Promise<{error:string} | true>} whether the deletion was successful\r\n */\r\nexport async function deleteOrganisationInvitation(invitationId) {\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organization-invitations/${invitationId}`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken,\r\n \"Content-Type\": \"application/json\",\r\n }\r\n const res = await fetch(url, {\r\n method: \"DELETE\",\r\n headers,\r\n });\r\n if (!res.ok) {\r\n const error = await res.json();\r\n console.log(\"Delete organisation invitation\", invitationId, res.status, error);\r\n return {\r\n error\r\n };\r\n }\r\n return true;\r\n}\r\n\r\n/** \r\n * @link https://openapi.logto.io/operation/operation-post-api-organization-invitations-parameter-message\r\n * @param {string} invitationId the invitation id\r\n * @returns {Promise<null | boolean>} whether the resend was successful\r\n */\r\nexport async function resendOrganisationInvitation(invitationId) {\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organization-invitations/${invitationId}/message`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken\r\n }\r\n const res = await fetch(url, {\r\n method: \"POST\",\r\n headers\r\n });\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return null;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * @typedef {{id:string, name:string, description:string, customData:{}, createdAt: number}} LogtoOrganization\r\n * @param {string} orgId the organisation id \r\n * @link https://openapi.logto.io/operation/operation-get-api-organizations-parameter\r\n * @returns {Promise<null | { error: string } | LogtoOrganization>} the organization\r\n */\r\nexport async function getOrganization(orgId) {\r\n\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organizations/${orgId}`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken\r\n }\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers\r\n });\r\n\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return null;\r\n }\r\n\r\n /**\r\n * @type {LogtoOrganization}\r\n */\r\n const body = await res.json();\r\n return body;\r\n}\r\n\r\n/**\r\n * Creates an organization, adds the creator to it, and assigns the \"owner\" role to the creator.\r\n * @link https://openapi.logto.io/operation/operation-post-api-organizations\r\n * @param {string} name \r\n * @param {string | undefined} description \r\n * @param {string} creatorId \r\n * @returns \r\n */\r\n// export async function createOrganization(name, description, creatorId) {\r\n// const url = process.env.LOGTO_ENDPOINT + `/api/organizations`;\r\n// const accessToken = await getLogtoM2MAccessToken();\r\n// const headers = {\r\n// \"Authorization\": \"Bearer \" + accessToken,\r\n// \"Content-Type\": \"application/json\",\r\n// }\r\n\r\n// const body = JSON.stringify({\r\n// name,\r\n// description,\r\n// customData: {\r\n// creatorId\r\n// },\r\n// });\r\n\r\n// const res = await fetch(url, {\r\n// method: \"POST\",\r\n// headers,\r\n// body\r\n// });\r\n\r\n// if (!res.ok) {\r\n// console.log(res.status, await res.text());\r\n// return null;\r\n// }\r\n\r\n// const responseBody = await res.json();\r\n\r\n// console.log(\"Created organization\", responseBody);\r\n\r\n// // add current user to the newly created organization as admin\r\n// const url2 = process.env.LOGTO_ENDPOINT + `/api/organizations/${responseBody.id}/users`;\r\n\r\n// const body2 = JSON.stringify({\r\n// userIds: [creatorId],\r\n// });\r\n\r\n// const res2 = await fetch(url2, {\r\n// method: \"PUT\",\r\n// headers,\r\n// body: body2\r\n// });\r\n\r\n// if (!res2.ok) {\r\n// console.log(res2.status, await res2.text());\r\n// // TODO delete the organization again since something went wrong while creating it\r\n// // ONLY if it didn't already exist before\r\n// return null;\r\n// }\r\n\r\n// console.log(\"Added user to organization\", res2.status, res2.statusText);\r\n\r\n// // assign the creator the admin role\r\n// const url3 = process.env.LOGTO_ENDPOINT + `/api/organizations/${responseBody.id}/users/${creatorId}/roles`;\r\n\r\n// const body3 = JSON.stringify({\r\n// organizationRoleIds: [\"bmb0iscycu8bu8pit9way\"], // \"owner\" from the organization template\r\n// });\r\n\r\n// const res3 = await fetch(url3, {\r\n// method: \"POST\",\r\n// headers,\r\n// body: body3\r\n// });\r\n\r\n// if (!res3.ok) {\r\n\r\n// console.log(res3.status, await res3.text());\r\n\r\n// // TODO delete the organization again since something went wrong while creating it\r\n// // ONLY if it didn't already exist before\r\n\r\n// return null;\r\n\r\n// }\r\n\r\n// console.log(\"Assigned user to role\", res3.status, res3.statusText);\r\n\r\n// return responseBody;\r\n// }\r\n\r\n/**\r\n * \r\n * @param {string} orgId \r\n * @param {string} userId \r\n * @returns {Promise<{error:string} | {success:boolean}>}\r\n */\r\nexport async function removeMemberFromOrganization(orgId, userId) {\r\n\r\n const url = `${process.env.LOGTO_ENDPOINT}/api/organizations/${orgId}/users/${userId}`;\r\n console.log(\"REMOVE USER\", url);\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken,\r\n }\r\n const response = await fetch(url, {\r\n method: \"DELETE\",\r\n headers,\r\n });\r\n if (!response.ok) {\r\n const error = await response.text();\r\n console.log(response.status, error);\r\n return { error };\r\n }\r\n console.log(\"Removed user from organization\", response.status, response.statusText);\r\n return { success: true };\r\n}\r\n\r\n\r\n/**\r\n * @link https://openapi.logto.io/operation/operation-replaceorganizationuserroles\r\n * @param {string} orgId the organization id\r\n * @param {string} userId the user id\r\n * @param {import(\"../types/logto.js\").OrgRoleName[]} roleNames the role names\r\n * @returns {Promise<{error:string} | {success:boolean}>}\r\n */\r\nexport async function updateMemberRoleInOrganization(orgId, userId, roleNames) {\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organizations/${orgId}/users/${userId}/roles`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken,\r\n \"Content-Type\": \"application/json\",\r\n };\r\n const body = JSON.stringify({\r\n organizationRoleIds: roleNames.map(role => roles[role])\r\n });\r\n const res = await fetch(url, {\r\n method: \"PUT\",\r\n headers,\r\n body\r\n });\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return { error: \"Failed to update user roles\" };\r\n }\r\n console.log(\"Updated user roles\", userId, roleNames);\r\n return { success: true };\r\n}\r\n\r\n\r\n/**\r\n * Allows adjusting name/description of an organization\r\n * @param {string} orgId organization id\r\n * @param {{name?: string, description?: string, customData?: any}} opts \r\n * @returns \r\n */\r\nexport async function updateOrganization(orgId, opts) {\r\n const url = process.env.LOGTO_ENDPOINT + `/api/organizations/${orgId}`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken,\r\n \"Content-Type\": \"application/json\",\r\n }\r\n\r\n const body = JSON.stringify({\r\n id: orgId,\r\n ...opts\r\n });\r\n\r\n const res = await fetch(url, {\r\n method: \"PATCH\",\r\n headers,\r\n body\r\n });\r\n\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return null;\r\n }\r\n\r\n const responseBody = await res.json();\r\n return responseBody;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @link https://openapi.logto.io/operation/operation-get-api-users-parameter\r\n * @typedef {{id:string, name:string, username:string, primaryEmail: string, primaryPhone: string, avatar:string, profile:{ preferredUsername:string, nickname:string, }, customData:{}, isSuspended:boolean, hasPassword: boolean,}} User\r\n * \r\n * @param {string} userId the user id\r\n * @returns {Promise<null | User>} the user\r\n */\r\nexport async function getUser(userId) {\r\n\r\n const url = process.env.LOGTO_ENDPOINT + `/api/users/${userId}`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken\r\n }\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers\r\n }).catch(e => {\r\n console.error(e);\r\n return null;\r\n });\r\n if (res == null) {\r\n return null;\r\n }\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return null;\r\n }\r\n const user = await res.json();\r\n return user;\r\n}\r\n\r\n/**\r\n * @link https://openapi.logto.io/operation/operation-get-api-users-parameter-roles\r\n * @param {string} userId the user id\r\n * @returns {Promise<null | Array<{id:string, name:string, description:string, type:\"User\"}>>} the user roles\r\n */\r\nexport async function getUserRoles(userId) {\r\n const url = process.env.LOGTO_ENDPOINT + `/api/users/${userId}/roles`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken\r\n }\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers\r\n }).catch(e => {\r\n console.error(e);\r\n return null;\r\n });\r\n if (res == null) {\r\n return null;\r\n }\r\n if (!res.ok) {\r\n console.log(res.status, await res.text());\r\n return null;\r\n }\r\n const roles = await res.json();\r\n return roles;\r\n}\r\n\r\n/**\r\n * @link https://openapi.logto.io/operation/operation-post-api-users-parameter-roles\r\n * @param {string} userId the user id\r\n * @param {string | string[]} roleId the role id\r\n * @returns {Promise<{error:string} | true>} whether the role was added\r\n */\r\nexport async function addUserRole(userId, roleId) {\r\n\r\n const url = process.env.LOGTO_ENDPOINT + `/api/users/${userId}/roles`;\r\n const accessToken = await getLogtoM2MAccessToken();\r\n const headers = {\r\n \"Authorization\": \"Bearer \" + accessToken,\r\n \"Content-Type\": \"application/json\",\r\n };\r\n const roleIds = Array.isArray(roleId) ? roleId : [roleId];\r\n const body = JSON.stringify({\r\n roleIds: roleIds\r\n });\r\n const res = await fetch(url, {\r\n method: \"POST\",\r\n headers,\r\n body\r\n }).catch(e => {\r\n console.error(e);\r\n return { error: e.message }\r\n });\r\n if (res == null) {\r\n return { error: \"Failed to add user role\" };\r\n }\r\n else if (\"error\" in res) {\r\n return res;\r\n }\r\n if (!res.ok) {\r\n const error = await res.text();\r\n console.log(res.status, error);\r\n return { error };\r\n }\r\n console.log(\"Added user role\", userId, roleId);\r\n return true;\r\n}\r\n\r\n/**\r\n * @param {string} userId the user id\r\n */\r\nconst userIdToNameCache = new Map();\r\n\r\n/**\r\n * @param {string} userId the user id\r\n * @returns {Promise<string | null>} the username\r\n */\r\nexport async function getUserName(userId) {\r\n if (userIdToNameCache.has(userId)) {\r\n return userIdToNameCache.get(userId);\r\n }\r\n const user = await getUser(userId);\r\n if (user == null) {\r\n return null;\r\n }\r\n let name = user.username;\r\n if (!name) name = user.name;\r\n if (!name) name = user.profile?.preferredUsername;\r\n if (!name) name = emailToDisplayName(user.primaryEmail);\r\n userIdToNameCache.set(userId, name);\r\n\r\n return user.username;\r\n}\r\n/**\r\n * @param {string[]} userIds the user ids\r\n * @returns {Promise<{[userId:string]:string | null}>} the user names\r\n */\r\nexport async function getUserNames(userIds) {\r\n const names = await Promise.all(userIds.map(getUserName));\r\n /** @type {any} */\r\n const result = {};\r\n for (let i = 0; i < userIds.length; i++) {\r\n result[userIds[i]] = names[i];\r\n }\r\n return result;\r\n}","export const api_endpoint = \"http://localhost:8081\";\r\nexport const cloud_base_url = \"https://localhost:5173\";\r\nexport const cloud_account_url = cloud_base_url + \"/account\";\r\nexport const cloud_view_baseurl = cloud_base_url + \"/view\";\r\n","import { exec } from \"child_process\";\r\nimport { isLODAssetFilename, toFile } from \"@needle-tools/cloud-sdk\";\r\nimport { readFileSync, readdirSync, statSync } from \"fs\";\r\n\r\n/**\r\n * @typedef {import(\"@needle-tools/cloud-sdk/types\").FileWithPath} FileWithPath\r\n */\r\n\r\n/**\r\n * @param {string} url\r\n */\r\nexport function openUrlInDefaultBrowser(url) {\r\n if (process.platform === 'win32') {\r\n return exec('start ' + url);\r\n } else if (process.platform === 'darwin') {\r\n return exec('open ' + url);\r\n } else {\r\n return exec('xdg-open ' + url);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Collect files with paths recursively given a directory OR a file\r\n * @param {\"deployment\" | \"optimization\"} type\r\n * @param {string} directory can also be a file\r\n * @param {null | {entrypoint?:FileWithPath, files:FileWithPath[], total_size:number}} result\r\n * @param {string} path\r\n * @param {number} level\r\n * @returns {{entrypoint?:FileWithPath, files:FileWithPath[]}}\r\n */\r\nexport function collectFilesRecursive(type, directory, result = null, path = \"\", level = 0) {\r\n\r\n // results is optional (but recursively passed down) so we check here if it exists to make the API easier for users\r\n // but don't forget to pass it down in the recursive call\r\n if (result === null) {\r\n if (level > 0) throw new Error(\"result must be provided if level > 0. Did you forget to pass it?\")\r\n result = {\r\n files: [],\r\n total_size: 0\r\n }\r\n }\r\n\r\n if (level === 0) {\r\n // check if the directory is a file\r\n if (statSync(directory).isFile()) {\r\n const buf = readFileSync(directory);\r\n const file = toFile(directory, buf);\r\n file.path = file.name; // path must not be absolute\r\n result.files.push(file);\r\n result.entrypoint = file;\r\n return result;\r\n }\r\n }\r\n else if (level > 20) {\r\n throw new Error(\"Recursion depth too high. Are you sure you are providing the correct directory?\");\r\n }\r\n\r\n // check if the total size is not too large\r\n const maxSizeInMB = 512;\r\n\r\n\r\n const files = readdirSync(directory, { withFileTypes: true });\r\n\r\n // a deployment must have a needle.buildinfo.json file\r\n if (level === 0 && type === \"deployment\" && files.find(f => f.name === \"needle.buildinfo.json\") == null) {\r\n return result;\r\n }\r\n\r\n // first collect all files in the directory\r\n for (const entry of files) {\r\n if (entry.isDirectory() == false) {\r\n\r\n if (type === \"optimization\") {\r\n // For uploads that are intended to be compressed we only want to include model files\r\n if (isModelFile(entry.name) == false) {\r\n continue;\r\n }\r\n }\r\n\r\n const fullpath = directory + \"/\" + entry.name;\r\n const relpath = path + entry.name;\r\n const buf = readFileSync(fullpath);\r\n const file = toFile(relpath, buf);\r\n result.files.push(file);\r\n result.total_size += file.size;\r\n\r\n if (result.total_size > maxSizeInMB * 1024 * 1024) {\r\n throw new Error(`Collected filesize exceeds ${maxSizeInMB.toFixed(0)} MB. Are you sure you are providing the correct directory?`);\r\n }\r\n else if (result.files.length > 1000) {\r\n throw new Error(\"Too many files. Maximum filecount is 1000\");\r\n }\r\n\r\n if (type === \"deployment\") {\r\n if (!result.entrypoint && (entry.name === \"index.html\" || entry.name === \"index.html.gz\")) {\r\n result.entrypoint = file\r\n }\r\n }\r\n else if (type === \"optimization\") {\r\n // For an upload via CLI we don't really care about which file is the entrypoint since we just upload everything and then optimize it\r\n // In a future version we might want to run \r\n if (!result.entrypoint) {\r\n if (isModelFile(entry.name)) {\r\n result.entrypoint = file;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // then recurse into subdirectories\r\n for (const entry of files) {\r\n if (entry.isDirectory()) {\r\n if (entry.name === \"node_modules\") continue;\r\n collectFilesRecursive(type, directory + \"/\" + entry.name, result, path + entry.name + \"/\", level + 1);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction isModelFile(filename) {\r\n filename = filename.toLowerCase();\r\n return filename.endsWith(\".glb\") || filename.endsWith(\".gltf\") || filename.endsWith(\".vrm\") || filename.endsWith(\".usdz\") || filename.endsWith(\".usd\") || filename.endsWith(\".fbx\")\r\n}","import { delay, uploadFiles } from \"@needle-tools/cloud-sdk\";\r\nimport { api_endpoint, cloud_view_baseurl } from \"../constants.js\";\r\nimport { collectFilesRecursive, openUrlInDefaultBrowser } from \"../utils.js\";\r\nimport path from \"path\";\r\nimport ora from \"ora\";\r\nimport { existsSync, readFileSync } from \"fs\";\r\n\r\n\r\n/**\r\n * Deploy the project to the server\r\n * @param {{\r\n * logger:import(\"@caporal/core\").Logger, \r\n * endpoint?:string, \r\n * token:string, \r\n * org_id: string | undefined,\r\n * directory:string, \r\n * name?:string, \r\n * open:boolean,\r\n * verbose:boolean\r\n * }} args\r\n */\r\nexport async function deploy(args) {\r\n\r\n args.directory = path.resolve(args.directory);\r\n\r\n const { files, entrypoint } = collectFilesRecursive(\"deployment\", args.directory);\r\n\r\n\r\n // make sure we have a needle.buildinfo.json file\r\n const needleBuildInfo = files.length > 0 && files.find(f => f.name === \"needle.buildinfo.json\") != null;\r\n if (!needleBuildInfo) {\r\n ora().fail(\"Provided directory is not valid. Please provide a built web project.\");\r\n return;\r\n }\r\n\r\n if (!entrypoint) {\r\n ora().fail(\"No entrypoint found. Please provide an index.html file in your project.\");\r\n return;\r\n }\r\n const directoryName = path.basename(args.directory);\r\n const endpoint = args.endpoint?.length ? args.endpoint : api_endpoint;\r\n let deploymentName = args.name;\r\n if (!deploymentName) {\r\n deploymentName = tryDetermineDeploymentName(args.directory) || undefined;\r\n }\r\n\r\n let isDevEnvironment = endpoint?.includes(\"localhost\");\r\n const deploymentLog = ora().start(`Begin deployment of \\\"${deploymentName}\\\" ${isDevEnvironment ? \"(local)\" : \"\"}`);\r\n deploymentLog.spinner = \"earth\";\r\n await delay(100);\r\n\r\n let lastFileIndex = -1;\r\n\r\n const res = await uploadFiles({\r\n baseUrl: endpoint,\r\n authToken: args.token,\r\n org: args.org_id,\r\n }, {\r\n triggered_by: \"cli\",\r\n files,\r\n entrypoint\r\n }, {\r\n name: deploymentName,\r\n type: \"deployment\",\r\n loglevel: args.verbose ? \"debug\" : \"none\",\r\n progress: evt => {\r\n if (evt.fileIndex !== lastFileIndex) {\r\n lastFileIndex = evt.fileIndex;\r\n const sizeInMB = evt.uploadedBytes / 1024 / 1024;\r\n const totalSize = evt.totalBytes / 1024 / 1024;\r\n deploymentLog.text = `Uploading file ${evt.fileIndex + 1} of ${evt.totalFiles} files: ${sizeInMB.toFixed(1)} / ${totalSize.toFixed(1)} MB. Total progress: ${(evt.progress01 * 100).toFixed(1)} %. Time passed: ${evt.elapsedTime.toFixed(0)}sec. About ${evt.estimatedTimeLeftDisplay} until complete.`;\r\n }\r\n }\r\n }\r\n ).catch(err => {\r\n deploymentLog.fail(err);\r\n return null;\r\n });\r\n\r\n\r\n if (res != null && res.success === true) {\r\n deploymentLog.succeed(`🚀 Deployment of ${directoryName} successful: ${res.view_id}/${res.id}`);\r\n let url = \"\";\r\n if (res.url) {\r\n url = res.url;\r\n }\r\n else {\r\n const endpoint = cloud_view_baseurl;\r\n url = endpoint + \"/\" + res.view_id + \"/\" + res.id;\r\n }\r\n console.log(\"🔗 View the deployment at: \" + url);\r\n if (args.open) openUrlInDefaultBrowser(url);\r\n }\r\n else {\r\n deploymentLog.fail(\"Deployment failed: \" + res?.error);\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n * @param {string} directory\r\n * @returns {string | null} the deployment name or null if it could not be determined\r\n */\r\nfunction tryDetermineDeploymentName(directory) {\r\n // check if the directory contains a needle.config file\r\n const needleConfigPath = path.join(directory, \"needle.config.json\");\r\n if (existsSync(needleConfigPath)) {\r\n // take the directory name as the deployment name\r\n return path.basename(directory);\r\n }\r\n\r\n // check if the directory contains a package.json file\r\n const packageJsonPath = path.join(directory, \"package.json\");\r\n if (existsSync(packageJsonPath)) {\r\n // try read the name from the package.json file\r\n const packageJson = readFileSync(packageJsonPath, \"utf8\");\r\n const json = JSON.parse(packageJson);\r\n if (json.name) {\r\n return json.name;\r\n }\r\n }\r\n\r\n // walk up the tree\r\n const parent = path.dirname(directory);\r\n if (parent === directory) return null;\r\n const parentResult = tryDetermineDeploymentName(parent);\r\n return parentResult;\r\n}","\r\n/**\r\n * @typedef {import(\"@needle-tools/cloud-sdk/types\").FileWithPath} FileWithPath\r\n */\r\n\r\nimport { changeExtension, delay, getDirectory, getJob, getJobStatus, getPublicURL, isInternalFile, requestOptimize, toFile, uploadFiles } from \"@needle-tools/cloud-sdk\";\r\nimport { api_endpoint, cloud_base_url } from \"../constants.js\";\r\nimport { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from \"fs\";\r\nimport { collectFilesRecursive } from \"../utils.js\";\r\nimport ora from \"ora\";\r\nimport { resolve } from \"path\";\r\n\r\n\r\n/**\r\n * Optimize a file in needle cloud\r\n * @param {{\r\n* logger:import(\"@caporal/core\").Logger, \r\n* token:string, \r\n* org_id: string | undefined,\r\n* fileOrDirectory:string,\r\n* name?:string,\r\n* outDir?:string,\r\n* verbose?:boolean\r\n* }} args\r\n* @returns {Promise<string[] | {error:string}>} the path to the optimized file\r\n*/\r\n// TODO: can we pass in multiple files here?\r\n// TODO: allow pass in target directory (or should we override the original file?)\r\nexport async function optimize(args) {\r\n\r\n // TODO: check if the file already exists (we need to hash the content)\r\n // TODO: check if the optimized file already exists so we can directly download this file\r\n\r\n if (args.outDir) {\r\n if (args.outDir?.length <= 0) {\r\n const error = \"Output Directory is invalid\";\r\n ora().fail(error);\r\n return { error };\r\n }\r\n else if (statSync(args.outDir).isFile()) {\r\n const error = \"The output directory is a file - it must be a directory\";\r\n ora().fail(error);\r\n return { error };\r\n }\r\n }\r\n\r\n const filePath = args.fileOrDirectory;\r\n\r\n if (!existsSync(filePath)) {\r\n ora().fail(`File not found: ${filePath}`);\r\n return { error: \"File not found\" };\r\n }\r\n\r\n\r\n if (!args.token || args.token.length <= 1 || typeof args.token !== \"string\" || args.token === \"true\") {\r\n const error = `Missing access token. Create a token at ${cloud_base_url}/account`;\r\n return { error };\r\n }\r\n if (args.name !== undefined) {\r\n if (args.name && (args.name.length <= 0 || args.name === \"true\" || args.name === \"false\")) {\r\n const error = `Name is not valid: \\\"${args.name}\\\". Please provide a valid name`;\r\n return { error };\r\n }\r\n }\r\n\r\n args.fileOrDirectory = resolve(args.fileOrDirectory);\r\n\r\n const uploadSpinner = ora(`Gathering files ${args.fileOrDirectory}`).start();\r\n\r\n /** @type {{entrypoint?:FileWithPath, files:FileWithPath[]} | null} */\r\n let files = null;\r\n\r\n try {\r\n // Collect the files that we want to optimize\r\n // This *might* be just a filepath but this method will handle it correctly\r\n // and return a FileWithPath object that can be passed to the uploadFiles method\r\n files = collectFilesRecursive(\"optimization\", args.fileOrDirectory);\r\n }\r\n catch (e) {\r\n ora().fail(`${e.message || `Failed to collect files in ${args.fileOrDirectory}`}`);\r\n return { error: \"Failed to collect files\" };\r\n }\r\n\r\n /** This is the base directory path */\r\n const directory = getDirectory(filePath);\r\n\r\n uploadSpinner.text = `Uploading ${files.files.length} files for optimization:\\n- ${files.files.map(f => f.path || f.name).join(\"\\n -\")}`;\r\n const endpoint = api_endpoint;\r\n if (args.verbose) console.log(\"Using endpoint:\", endpoint);\r\n const res = await uploadFiles({\r\n baseUrl: endpoint,\r\n authToken: args.token,\r\n org: args.org_id,\r\n }, {\r\n triggered_by: \"cli\",\r\n files: files.files,\r\n entrypoint: files.entrypoint,\r\n }, {\r\n type: \"upload\",\r\n name: args.name,\r\n loglevel: args.verbose ? \"debug\" : \"none\",\r\n progress: evt => {\r\n uploadSpinner.text = `Uploading ${evt.fileName} ${evt.progress01 * 100}%. Finished in ${evt.estimatedTimeLeftDisplay}`;\r\n }\r\n });\r\n if (res.success == false) {\r\n const error = `${res.error || \"Unknown error: could not start upload\"}`;\r\n uploadSpinner.fail(error);\r\n return { error: \"Upload could not start.\" };\r\n }\r\n else if (res.success) {\r\n if (!res.uploadSkipped)\r\n uploadSpinner.succeed(`Uploaded ${files.files.length} files for optimization to ${res.view_id}`);\r\n else {\r\n uploadSpinner.succeed(`No files uploaded - all files already exist in the cloud ${res.view_id}`);\r\n }\r\n const optResponse = await requestOptimize({\r\n baseUrl: endpoint,\r\n authToken: args.token,\r\n org: args.org_id,\r\n id: res.id,\r\n trigger_type: \"cli\",\r\n }, {\r\n progressive: false,\r\n pipeline_version: \"latest\",\r\n });\r\n if (!optResponse) {\r\n return { error: \"Failed to send optimization request\" };\r\n }\r\n if (\"error\" in optResponse) {\r\n const error = `Failed to optimize: ${optResponse.error}`;\r\n console.error(error);\r\n return { error };\r\n }\r\n else {\r\n const optJob = optResponse.job;\r\n const optSpinner = ora(`Optimization requested for ${optJob.name || optJob.identifier}`).start();\r\n let fileIsReadyToDownload = false;\r\n optSpinner.color = 'gray';\r\n while (true) {\r\n // if the job is completed we can break the loop\r\n if (optResponse.job.status === \"completed\") {\r\n fileIsReadyToDownload = true;\r\n optSpinner.succeed(`${optResponse.message ?? \"Optimization completed\"}`);\r\n break;\r\n }\r\n let waitDelay = 2000;\r\n const res = await getJobStatus(optJob.identifier, { baseUrl: endpoint, authToken: args.token, org: args.org_id });\r\n if (res?.status === \"new\" || res?.status === \"pending\") {\r\n optSpinner.text = 'Your asset is queued - waiting for optimization to start';\r\n optSpinner.color = 'yellow';\r\n waitDelay = 2000;\r\n }\r\n if (res?.status === \"running\") {\r\n const progressText = res.progress ? `${res.progress}%` : \"\";\r\n const message = res.status_message ? `— ${res.status_message}` : \"\";\r\n optSpinner.text = `Your asset is being optimized: ${progressText} ${message}`;\r\n optSpinner.color = 'cyan';\r\n waitDelay = 1000;\r\n }\r\n else if (res?.status === \"stalled\") {\r\n waitDelay = 2500;\r\n }\r\n else if (res?.status === \"completed\") {\r\n fileIsReadyToDownload = true;\r\n optSpinner.succeed(`Your asset has finished optimizing: ${res.status_message}`);\r\n break;\r\n }\r\n else if (res?.status === \"canceled\") {\r\n optSpinner.fail(`Optimization cancelled: ${res.error}`);\r\n return { error: res.error || \"Optimization cancelled\" };\r\n }\r\n else if (res?.status === \"failed\") {\r\n optSpinner.fail(`Optimization failed: ${res.error}`);\r\n console.error(`Optimization failed: ${res.error}`);\r\n return { error: res.error || \"Optimization failed\" };\r\n }\r\n await delay(waitDelay);\r\n }\r\n if (fileIsReadyToDownload) {\r\n const downloadSpinner = ora(`Downloading optimized files`).start();\r\n const finishedJob = await getJob({\r\n baseUrl: endpoint,\r\n authToken: args.token,\r\n org: args.org_id,\r\n identifier: optJob.identifier,\r\n fields: [\"results\"]\r\n });\r\n if (!finishedJob?.results) {\r\n const error = `Failed to get job results`;\r\n console.error(error);\r\n return { error };\r\n }\r\n\r\n if (args.verbose) {\r\n console.log(`-- Results\\nId: ${optJob.identifier}\\nEntryPoint: ${finishedJob.results.entrypoint}\\nFiles:\\n`, finishedJob.results.files);\r\n }\r\n\r\n /** @type {Array<string>} */\r\n const downloadedPaths = new Array();\r\n for (const res of finishedJob.results.files) {\r\n // Skip downloading internal files\r\n if (isInternalFile(res.filename)) {\r\n if (args.verbose) console.log(\"Skipping internal file\");\r\n continue;\r\n }\r\n\r\n const filename = res.filename;\r\n downloadSpinner.text = `Downloading ${filename}`;\r\n const url = getPublicURL({\r\n baseUrl: endpoint,\r\n view_id: optJob.view_id,\r\n job_id: optJob.identifier,\r\n filename,\r\n });\r\n const downloadResult = await fetch(url).catch(err => { console.error(err); return null; });\r\n if (!downloadResult || !downloadResult.ok) {\r\n downloadSpinner.fail(`Failed to download : ${filename}`);\r\n }\r\n else {\r\n const buffer = await downloadResult.arrayBuffer().catch(err => { console.error(err); return null; });\r\n if (!buffer) {\r\n downloadSpinner.fail(`Failed to get buffer for downloaded file: ${filename}`);\r\n return { error: \"Failed to get buffer for downloaded file\" };\r\n }\r\n let outDir = directory;\r\n if (args.outDir) {\r\n outDir = args.outDir;\r\n }\r\n // Get the target directory and make sure the directory exists\r\n const targetPath = outDir + \"/\" + filename;\r\n downloadSpinner.succeed(`Downloaded ${filename}`);\r\n\r\n // we take the target path from the resulting file because it might be a sub directory\r\n const targetDirectory = targetPath.split('/').slice(0, -1).join('/');\r\n\r\n if (args.verbose) {\r\n console.log(`Writing file ${filename} (${(buffer.byteLength / 1024).toFixed(2)} KB) to \\\"${targetPath}\\\"`);\r\n }\r\n\r\n if (!existsSync(targetDirectory)) {\r\n downloadSpinner.info(`Creating directory: ${targetDirectory}`);\r\n mkdirSync(targetDirectory, { recursive: true });\r\n }\r\n\r\n writeFileSync(targetPath, Buffer.from(buffer));\r\n downloadedPaths.push(targetPath);\r\n }\r\n }\r\n downloadSpinner.succeed(`Successfully downloaded ${downloadedPaths.length} optimized ${downloadedPaths.length > 1 ? \"files\" : \"file\"}`);\r\n if (args.verbose) console.log(\"Downloaded files:\\n\", downloadedPaths);\r\n return downloadedPaths;\r\n }\r\n }\r\n }\r\n\r\n return { error: \"Unknown error\" };\r\n}","import { createAuthHeaders, ShareApiEndpoints } from \"@needle-tools/cloud-sdk\";\r\nimport { api_endpoint } from \"./constants\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{endpoint:string, token:string, org?:string, limit:number, offset:number, names?:string[]}} args\r\n * @returns {Promise<import(\"@needle-tools/cloud-sdk/types\").ListDeploymentsResponseBody | { status: number, error: string }>}\r\n */\r\nexport async function listDeployments(args) {\r\n\r\n const endpoint = args.endpoint || api_endpoint;\r\n const url = new URL(endpoint + ShareApiEndpoints.get.deployments);\r\n url.searchParams.append(\"offset\", args.offset.toString());\r\n url.searchParams.append(\"limit\", args.limit.toString());\r\n if (args.names) url.searchParams.append(\"name\", args.names.map(n => n.trim()).join(\",\"));\r\n\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers: {\r\n ...createAuthHeaders({\r\n authToken: args.token,\r\n org: args.org\r\n })\r\n }\r\n });\r\n if (!res.ok) {\r\n return { status: res.status, error: await res.text() };\r\n }\r\n /**\r\n * @type {import(\"@needle-tools/cloud-sdk/types\").ListDeploymentsResponseBody}\r\n */\r\n const response = await res.json();\r\n return response;\r\n}","import { api_endpoint } from \"../../constants.js\";\r\n\r\n\r\n/**\r\n * @type {import(\"@needle-tools/cloud-sdk/types/api.auth.js\").Permission[]}\r\n */\r\nconst permissions = [\"all\", \"read\", \"write\", \"delete\", \"download\", \"invite\"]\r\n\r\n\r\n// https://docs.logto.io/quick-starts/vanilla-js/\r\n/** @type {import(\"@logto/node\").LogtoConfig} */\r\nexport const AUTH_CONFIG = {\r\n appId: '2stnsoa6a1b0gwc7lra55',\r\n appSecret: 'seV1T6iKBKLlttjdk25I2px43ZCEHnPJ',\r\n endpoint: 'https://auth.needle.tools',\r\n\r\n resources: [api_endpoint],\r\n scopes: [\r\n 'openid',\r\n 'profile',\r\n 'email',\r\n \"roles\",\r\n \"urn:logto:scope:organizations\",\r\n \"urn:logto:scope:organization_roles\",\r\n \"identities\",\r\n \"custom_data\",\r\n ...permissions,\r\n ],\r\n};\r\n\r\n/**\r\n * @type {import(\"@logto/node\").GetContextParameters & { resources: string[], scopes: string[] }}\r\n */\r\nexport const AUTH_PARAMS = {\r\n getAccessToken: true,\r\n fetchUserInfo: true,\r\n resource: AUTH_CONFIG.resources?.[0],\r\n resources: AUTH_CONFIG.resources || [],\r\n scopes: AUTH_CONFIG.scopes || [],\r\n // getOrganizationToken: true,\r\n}","import { tmpdir } from 'os';\r\nimport fs from 'fs';\r\nimport { api_endpoint } from '../../constants.js';\r\nimport { AUTH_CONFIG } from './cli.auth.config.js';\r\n\r\nexport function clearCachedAuthData() {\r\n if (fs.existsSync(AUTH_STORAGE_DIRECTORY)) {\r\n fs.rmSync(AUTH_STORAGE_DIRECTORY, { recursive: true });\r\n }\r\n}\r\n\r\n/**\r\n * @returns {string | null}\r\n */\r\nexport function tryGetAccessToken() {\r\n const path = getPathOnDisc(\"accessToken\");\r\n if (fs.existsSync(path)) {\r\n const content = fs.readFileSync(path, 'utf8');\r\n if (content) {\r\n const json = JSON.parse(content);\r\n const endpoint = json?.[\"@\" + api_endpoint];\r\n const token = endpoint?.[\"token\"];\r\n return token;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n\r\nconst debug = process.argv.includes(\"--debug-auth\");\r\nconst memoryCache = new Map();\r\n\r\n\r\n// Save the auth data in a directory that is unique to the resource (e.g. /.auth/localhost or /.auth/cloud.needle.tools)\r\n// Otherwise we will load the wrong token when switching between resources (e.g. during development)\r\n// This is most likely only a development issue since users will not have multiple endpoints usually\r\n// But it also seems sensible to separate different auth data by resource either way\r\nlet resource = AUTH_CONFIG.resources?.[0];\r\nif (resource) {\r\n try { resource = new URL(resource).hostname; }\r\n catch (err) { if (debug) console.error(\"Invalid resource URL\", resource); }\r\n}\r\nlet resourceDirectory = resource || \"-\";\r\n// make sure the name is compatible with the file system\r\nresourceDirectory = resourceDirectory.replace(/[^a-zA-Z0-9\\.\\-]/g, \"\");\r\nconst AUTH_STORAGE_DIRECTORY = `${tmpdir()}/Needle/Cloud/.auth/${resourceDirectory}`;\r\n\r\n\r\n\r\nconst tokenPaths = {\r\n accessToken: `${AUTH_STORAGE_DIRECTORY}/accessToken`,\r\n refreshToken: `${AUTH_STORAGE_DIRECTORY}/refreshToken`,\r\n idToken: `${AUTH_STORAGE_DIRECTORY}/idToken`,\r\n signInSession: `${AUTH_STORAGE_DIRECTORY}/signInSession`,\r\n}\r\n\r\n\r\n/**\r\n * Get the path on disc for a given key\r\n * @param {string} key\r\n */\r\nfunction getPathOnDisc(key) {\r\n return tokenPaths[key] || `${AUTH_STORAGE_DIRECTORY}/${key}`;\r\n}\r\n\r\n/**\r\n * Our storage implementation for logto node\r\n */\r\nexport class AuthStorageAdapter {\r\n constructor() {\r\n this.basePath = AUTH_STORAGE_DIRECTORY;\r\n }\r\n\r\n async setItem(key, value) {\r\n if (debug) console.debug(\"\\n- SET ITEM\", key, value);\r\n if (!fs.existsSync(this.basePath)) {\r\n fs.mkdirSync(this.basePath, { recursive: true });\r\n }\r\n const path = getPathOnDisc(key);\r\n if (path) {\r\n fs.writeFileSync(path, value);\r\n }\r\n memoryCache.set(key, value);\r\n }\r\n\r\n async getItem(key) {\r\n if (debug) console.debug(\"\\n- GET ITEM\", key);\r\n const value = memoryCache.get(key);\r\n if (value === undefined) {\r\n // try read from disc\r\n const path = getPathOnDisc(key);\r\n if (!path) {\r\n console.error(`Unknown token name: ${key}`);\r\n }\r\n else if (fs.existsSync(path)) {\r\n const value = fs.readFileSync(path, 'utf8');\r\n memoryCache.set(key, value);\r\n return value;\r\n }\r\n return null;\r\n }\r\n return String(value);\r\n }\r\n\r\n async removeItem(key) {\r\n if (debug) console.debug(\"\\n- REMOVE ITEM\", key);\r\n memoryCache.delete(key);\r\n\r\n const path = getPathOnDisc(key);\r\n if (path && fs.existsSync(path)) {\r\n fs.rmSync(path);\r\n }\r\n }\r\n}\r\n","import NodeClient from '@logto/node';\r\nimport { AUTH_CONFIG, AUTH_PARAMS } from './cli.auth.config.js';\r\nimport { AuthStorageAdapter } from './cli.auth.storage.js';\r\n// import { localServerUrl } from '../cli.server.js';\r\n// import { api_endpoint } from '../../constants.js';\r\n\r\n\r\n/**\r\n * Do not use this directly - instead call `login()`\r\n * @returns {Promise<import('./types').LogtoUser | null>}\r\n */\r\nexport function tryGetUser() {\r\n const client = createNodeClient({\r\n navigate: url => {\r\n console.warn(`Request open ${url} (this should not happen)`);\r\n }\r\n });\r\n return getUserFromClient(client);\r\n}\r\n\r\n/**\r\n * @param {import('./types').NodeClientOptions} opts\r\n */\r\nexport function createNodeClient(opts) {\r\n\r\n const storage = new AuthStorageAdapter();\r\n\r\n return new NodeClient(AUTH_CONFIG, {\r\n storage,\r\n navigate: (url) => {\r\n if (opts.navigate == null) {\r\n throw new Error(\"Can not navigate\");\r\n }\r\n opts.navigate(url);\r\n },\r\n });\r\n};\r\n\r\n\r\n/**\r\n * @param {NodeClient} client\r\n * @returns {Promise<import('./types').LogtoUser | null>}\r\n */\r\nexport function getUserFromClient(client) {\r\n return client.getContext(AUTH_PARAMS).then(ctx => {\r\n const res = /** @type {import('./types').LogtoUser} */ (ctx);\r\n res.client = client;\r\n return res;\r\n }).catch(async e => {\r\n if(e.code == \"oidc.invalid_token\") {\r\n console.error(\"Invalid token - if this is a dev environment make sure your auth server is also hosted by a development instance of the CLI\");\r\n // client.clearAllTokens();\r\n // await client.signIn(`${localServerUrl}/auth-callback`);\r\n // return getUserFromClient(client);\r\n }\r\n return null;\r\n });\r\n};","import { Router } from 'express';\r\nimport { createNodeClient } from './cli.auth.node.js';\r\n\r\n/**\r\n * @param {string} baseUrl\r\n */\r\nexport const handleAuthRoutes = (baseUrl) => {\r\n \r\n const router = Router();\r\n\r\n router.use(`/:action`, async (request, response, next) => {\r\n const { action } = request.params;\r\n\r\n const nodeClient = createNodeClient({\r\n navigate: (url) => {\r\n response.redirect(url);\r\n }\r\n });\r\n\r\n switch (action) {\r\n case 'sign-in': {\r\n await nodeClient.clearAllTokens();\r\n await nodeClient.signIn(`${baseUrl}/auth-callback`);\r\n break;\r\n }\r\n case \"sign-out\": {\r\n await nodeClient.signOut(`${baseUrl}/?signed-out`);\r\n break;\r\n }\r\n case 'auth-callback': {\r\n if (request.url) {\r\n const res = await nodeClient.handleSignInCallback(`${baseUrl}${request.originalUrl}`).catch(err => {\r\n // E.g. if the user has cancelled the login flow\r\n return { error: err };\r\n });\r\n if (res && \"error\" in res) {\r\n response.redirect(baseUrl + \"?cancelled\");\r\n }\r\n else response.redirect(baseUrl);\r\n }\r\n break;\r\n }\r\n\r\n default: {\r\n next();\r\n // response.redirect(request.originalUrl);\r\n break;\r\n }\r\n }\r\n });\r\n\r\n return router;\r\n};","/**\r\n * @param {import(\"./types\").LogtoUser} user\r\n * @param {string | null} orgId\r\n * @returns {Promise<import(\"@needle-tools/cloud-sdk/types\").AuthData>}\r\n */\r\nexport async function userAuthHeaders(user, orgId = null) {\r\n if (!user) {\r\n throw new Error(\"User is not provided\");\r\n }\r\n\r\n if (!user.isAuthenticated) {\r\n throw new Error(\"User is not authenticated\");\r\n }\r\n\r\n /**\r\n * @type {string | null | undefined}\r\n */\r\n let token = null;\r\n\r\n if (orgId == null) {\r\n token = user.accessToken;\r\n }\r\n else if (orgId != null) {\r\n\r\n // check org by ID first - then by name\r\n let org = user?.userInfo?.organization_data?.find(o => o.id === orgId);\r\n if (!org) {\r\n const nameToSearch = orgId.toLowerCase();\r\n org = user?.userInfo?.organization_data?.find(o => o.name.toLowerCase() === nameToSearch);\r\n }\r\n // could not find the org\r\n if (!org) {\r\n throw new Error(`Organization \\\"${orgId}\\\" not found`);\r\n }\r\n orgId = org.id;\r\n token = await user.client.getOrganizationToken(org.id).catch(err => {\r\n console.error(`Error getting organization token for \\\"${org?.name}\\\" (${orgId}): ${err.message}`);\r\n return null;\r\n });\r\n }\r\n\r\n if (!token)\r\n throw new Error(\"No access token found\");\r\n\r\n return {\r\n authToken: token,\r\n org: orgId,\r\n };\r\n}","import { AUTH_PARAMS } from \"./cli.auth.config.js\";\r\nimport { createNodeClient, getUserFromClient } from \"./cli.auth.node.js\";\r\n\r\nexport { handleAuthRoutes } from \"./cli.auth.router.js\";\r\nexport { tryGetUser } from \"./cli.auth.node.js\";\r\nexport { clearCachedAuthData } from \"./cli.auth.storage.js\";\r\nexport { userAuthHeaders } from \"./utils.js\";\r\n\r\nexport const withLogto = function () {\r\n /**\r\n * @param {import('express').Request} request\r\n * @param {import('express').Response} response\r\n * @param {import('express').NextFunction} next\r\n */\r\n return async (request, response, next) => {\r\n const client = createNodeClient({\r\n navigate: (url) => {\r\n response.redirect(url);\r\n }\r\n });\r\n const user = await getUserFromClient(client);\r\n Object.defineProperty(request, 'user', {\r\n enumerable: true,\r\n get: () => user,\r\n });\r\n next();\r\n };\r\n}","import { delay, ShareApiEndpoints } from \"@needle-tools/cloud-sdk\";\r\nimport { handleAuthRoutes } from \"./auth/cli.auth.router.js\";\r\nimport { tryGetUser, userAuthHeaders, withLogto } from \"./auth/index.js\";\r\nimport { api_endpoint } from \"../constants.js\";\r\nimport fetch from \"node-fetch\";\r\nimport { listDeployments } from \"../list.js\";\r\n\r\n\r\n// WARNING: the port can not be changed since it's used in ALL the integrations\r\nconst port = 8424;\r\nconst baseUrl = `http://localhost:${port}`;\r\n\r\nexport const localServerUrl = baseUrl;\r\n\r\n/**\r\n * @typedef {{ isHost: boolean, baseUrl: string, port:number, auth_endpoints: { \"sign-in\": string, \"sign-out\": string, \"is-authenticated\": string} }} AuthServerInfo \r\n */\r\n\r\n/**\r\n * @param {{ ora?:import(\"ora\").Ora, restart?:boolean, exit_if_already_running?:boolean }} opts\r\n * @returns {Promise<AuthServerInfo>}\r\n */\r\nexport async function startServer(opts = { restart: false }) {\r\n\r\n // check if a licensing server is already running\r\n const res = await fetch(baseUrl).catch(err => { return { ok: false } });\r\n\r\n const routes = {\r\n \"sign-in\": `/sign-in`, // used by CLI\r\n \"sign-out\": `/sign-out`, // used by CLI\r\n \"is-authenticated\": `/api/authenticated`, // used by integrations\r\n \"get_user\": `/api/user`, // used by integrations\r\n \"get_license\": `/api/license`, // used by integrations\r\n get_deployments: `/api/deployments`,\r\n }\r\n\r\n /** @type {AuthServerInfo} */\r\n const serverInfo = {\r\n baseUrl,\r\n port: port,\r\n isHost: false,\r\n auth_endpoints: {\r\n \"sign-in\": `${baseUrl}${routes[\"sign-in\"]}`,\r\n \"sign-out\": `${baseUrl}${routes[\"sign-out\"]}`,\r\n \"is-authenticated\": `${baseUrl}${routes[\"is-authenticated\"]}`,\r\n }\r\n };\r\n\r\n let serverIsAlreadyRunning = res.ok;\r\n\r\n if (serverIsAlreadyRunning) {\r\n // if the server is already running and a restart is requested then **this** process should take over\r\n // we do this by sending a request to the server to close itself and then we start the server again in this process\r\n if (opts?.restart === true) {\r\n const url = `${baseUrl}/restart`;\r\n if (opts.ora) opts.ora.text = \"Sending restart request to server\";\r\n const response = await fetch(url, { method: \"post\" }).catch(err => { return { ok: false, status: 400, error: err } });\r\n if (response.ok) {\r\n await delay(300);\r\n return startServer({ restart: false });\r\n }\r\n else {\r\n console.error(\"Failed to restart server\", response.status);\r\n }\r\n }\r\n }\r\n\r\n\r\n if (!serverIsAlreadyRunning) {\r\n\r\n const expressModule = await import(\"express\").catch((err) => {\r\n console.error(\"Error starting the auth server (express not found)\", err);\r\n throw new Error(\"Failed to load express module\");\r\n });\r\n if (!expressModule) {\r\n throw new Error(\"Failed to load express module\");\r\n }\r\n\r\n serverInfo.isHost = true;\r\n\r\n /** @type {import(\"http\").Server | null} */\r\n let server = null;\r\n\r\n /** @type {import(\"express\").Express | null} */\r\n let app = expressModule.default();\r\n app.use(handleAuthRoutes(serverInfo.baseUrl));\r\n\r\n app.get(\"/\", withLogto(), async (req, res) => {\r\n if (req.query.cancelled != undefined) {\r\n res.end(\"Login cancelled. You can close this window now\");\r\n return;\r\n }\r\n else if (req.user.isAuthenticated) {\r\n res.end(`Hi ${req.user?.claims?.name} - you successfully logged in. You can close this window now`);\r\n return;\r\n }\r\n\r\n res.set({ \"Content-Type\": \"text/html; charset=utf-8\" });\r\n res.end(\"🌵\");\r\n });\r\n\r\n app.post(\"/restart\", (res, req) => {\r\n if (opts.ora) opts.ora.text = \"Received restart event. This instance will close\";\r\n // schedule server to close\r\n server?.close((err) => { if (err) console.error(err) });\r\n // schedule process to close\r\n setTimeout(() => { process.exit(0); }, 100);\r\n req.status(200).end(\"Server is restarting\");\r\n })\r\n\r\n\r\n // pinged by the cli to check if the user is authenticated\r\n app.get(routes[\"is-authenticated\"], withLogto(), async (req, res) => {\r\n // Note: status is 200 if authenticated, 400 if not\r\n res.status(req.user.isAuthenticated ? 200 : 400).send();\r\n });\r\n\r\n\r\n app.get(routes.get_user, withLogto(), async (req, res) => {\r\n\r\n if (!req.user?.isAuthenticated) {\r\n return res.status(401).json({ error: \"Not authenticated\" });\r\n }\r\n else if (!req.user?.claims) {\r\n return res.status(400).json({ error: \"User claims not found\" });\r\n }\r\n else if (!req.user?.userInfo) {\r\n return res.status(400).json({ error: \"User info not found\" });\r\n }\r\n\r\n const org_roles = req.user?.claims?.organization_roles;\r\n\r\n /**\r\n * @type {import(\"./cli.server.types.js\").LicenseServerGetUserResponse}\r\n */\r\n const response = {\r\n authenticated: req.user.isAuthenticated,\r\n id: req.user.userInfo.sub,\r\n name: req.user.claims.name || req.user.userInfo.name || req.user.claims.username || \"\",\r\n email: req.user.claims.email || req.user.userInfo.email || \"\",\r\n profile_picture: req.user.userInfo.picture || \"\",\r\n orgs: []\r\n }\r\n\r\n if (req.user.userInfo.organization_data) {\r\n response.orgs = req.user.userInfo.organization_data.map(o => {\r\n const orgInfo = {\r\n id: o.id,\r\n name: o.name,\r\n roles: org_roles?.filter(r => r.startsWith(o.id)).map(r => r.split(\":\")[1]) || [],\r\n canWrite: false,\r\n };\r\n orgInfo.canWrite = orgInfo.roles?.some(r => r == \"manage\" || r == \"owner\" || r == \"member\");;\r\n return orgInfo;\r\n })\r\n }\r\n\r\n res.json(response);\r\n });\r\n\r\n // app.get(routes[\"get-token\"], withLogto(), async (req, res) => {\r\n // const org = req.query.org;\r\n // const user = await tryGetUser();\r\n // if (!user || !user.isAuthenticated) {\r\n // res.status(401).json({ error: \"Not authenticated\" });\r\n // return;\r\n // }\r\n // const headers = await userAuthHeaders(user, org?.toString() || null);\r\n // res.json({\r\n // token: headers.authToken,\r\n // org: headers.org,\r\n // });\r\n // });\r\n\r\n\r\n app.get(routes.get_license, withLogto(), async (_req, res) => {\r\n const user = await tryGetUser();\r\n if (!user || !user.isAuthenticated) {\r\n return res.status(401).json({ error: \"Not authenticated\" });\r\n }\r\n const auth = await userAuthHeaders(user, null);\r\n\r\n const integration = _req.query.integration?.toLocaleString();\r\n\r\n /**\r\n * @type {import(\"../../../needle-share/types/index.js\").EditorIntegrationLicenseRequestHeaders}\r\n */\r\n const headers = {\r\n \"authorization\": `Bearer ${auth.authToken}`,\r\n \"x-needle\": \"cli\",\r\n \"x-needle-integration\": integration?.length ? integration : \"web\",\r\n }\r\n\r\n const fetchResponse = await fetch(`${api_endpoint}${ShareApiEndpoints.account.get_licenses}`, {\r\n method: \"GET\",\r\n headers: headers\r\n }).catch(err => {\r\n console.error(err);\r\n return null;\r\n });\r\n if (!fetchResponse) {\r\n return res.status(500).json({ error: \"Failed to fetch licenses\" });\r\n }\r\n if (fetchResponse.ok) {\r\n\r\n const licenses = /** @type {import(\"../../../needle-share/types/index.js\").EditorIntegrationLicenseResponse} */ (await fetchResponse.json());\r\n return res.json(licenses);\r\n\r\n };\r\n return res.status(fetchResponse.status).json({ error: fetchResponse.statusText });\r\n });\r\n\r\n\r\n\r\n app.get(routes.get_deployments, withLogto(), async (_req, res) => {\r\n const user = await tryGetUser();\r\n if (!user || !user.isAuthenticated) {\r\n return res.status(401).json({ error: \"Not authenticated\" });\r\n }\r\n const orgNameOrId = _req.query.org?.toString();\r\n const auth = await userAuthHeaders(user, orgNameOrId);\r\n if (orgNameOrId && !auth.org) { return res.status(400).json({ error: \"Organization not found\" }); }\r\n const deployments = await listDeployments({ endpoint: api_endpoint, token: auth.authToken, org: auth.org || undefined, limit: 10, offset: 0, names: undefined });\r\n if (\"error\" in deployments) {\r\n return res.status(deployments.status).json({ error: deployments.error });\r\n }\r\n return res.json(deployments.deployments);\r\n });\r\n\r\n\r\n\r\n /** @type {import(\"http\").Server | null} */\r\n server = app.listen(port, () => { });\r\n }\r\n\r\n return serverInfo;\r\n}","import { cloud_account_url } from '../constants.js';\r\nimport { openUrlInDefaultBrowser } from '../utils.js';\r\nimport { clearCachedAuthData, userAuthHeaders, tryGetUser } from './auth/index.js';\r\nimport { startServer } from './cli.server.js';\r\nimport fetch from 'node-fetch';\r\n\r\nexport { userAuthHeaders };\r\n\r\n\r\n/**\r\n * @typedef {{ \r\n* headless?: boolean,\r\n* silent?: boolean,\r\n* ora?: import(\"ora\").Ora \r\n* }} AuthFlowOptions\r\n*/\r\n\r\n\r\nexport async function isLoggedIn() {\r\n const user = await tryGetUser();\r\n return user?.isAuthenticated;\r\n}\r\n\r\n/**\r\n * Login\r\n * @param {AuthFlowOptions & {clearAuthData?:boolean}} opts\r\n */\r\nexport async function login(opts = { headless: false, silent: false, clearAuthData: false }) {\r\n if (opts.clearAuthData === true) {\r\n await clearCachedAuthData();\r\n }\r\n return startFlow(\"sign-in\", { ...opts });\r\n}\r\n/** \r\n * Logout\r\n * @param {AuthFlowOptions} opts\r\n */\r\nexport function logout(opts = {}) {\r\n return startFlow(\"sign-out\", { ...opts });\r\n}\r\n\r\n/**\r\n * @typedef {AuthFlowOptions & {gotoAccountPage?:boolean}} LoginFlowOptions\r\n * @overload\r\n * @param {\"sign-in\"} action\r\n * @param {LoginFlowOptions} opts\r\n * @returns {Promise<(import('./auth/types.js').LogtoUser) | null>}\r\n */\r\n\r\n/**\r\n * @overload\r\n * @param {\"sign-out\"} action\r\n * @param {AuthFlowOptions} opts\r\n * @returns {Promise<boolean>}\r\n */\r\n\r\n/**\r\n * @param {\"sign-in\" | \"sign-out\"} action\r\n * @param {AuthFlowOptions | LoginFlowOptions} opts\r\n * @returns {Promise<import('@logto/node').LogtoContext | boolean | null>}\r\n */\r\nfunction startFlow(action, opts) {\r\n return new Promise(async (resolve, reject) => {\r\n\r\n\r\n // For a signin request we first check IF the user is already authorized\r\n // if YES then we don't need to open a browser window at all\r\n if (action == \"sign-in\") {\r\n const user = await tryGetUser();\r\n if (user?.isAuthenticated) {\r\n if (opts.ora) opts.ora.text = `Authorized as ${user?.claims?.name}`;\r\n if (\"gotoAccountPage\" in opts && opts.gotoAccountPage === true) {\r\n if (opts.ora) opts.ora.text = \"Opening account page in the browser\";\r\n openUrlInDefaultBrowser(cloud_account_url);\r\n await new Promise(r => setTimeout(r, 2000));\r\n }\r\n return resolve(user);\r\n }\r\n else if (opts.headless === true) {\r\n return resolve(null);\r\n }\r\n }\r\n else if (action == \"sign-out\") {\r\n if (opts.headless === true) {\r\n clearCachedAuthData();\r\n const server = await startServer();\r\n const res = await fetch(server.auth_endpoints[\"sign-out\"], {\r\n follow: 2\r\n });\r\n return resolve(res.ok);\r\n }\r\n }\r\n\r\n const server = await startServer();\r\n\r\n\r\n switch (action) {\r\n case \"sign-in\":\r\n openUrlInDefaultBrowser(server.auth_endpoints[\"sign-in\"]);\r\n if (opts.ora) opts.ora.text = \"Please authenticate in the browser\";\r\n setTimeout(poll, 2000);\r\n break;\r\n\r\n case \"sign-out\":\r\n clearCachedAuthData();\r\n openUrlInDefaultBrowser(server.auth_endpoints[\"sign-out\"]);\r\n setTimeout(poll, 2000);\r\n break;\r\n }\r\n\r\n let failures = 0;\r\n function poll() {\r\n const url = server.auth_endpoints['is-authenticated'];\r\n fetch(url).then(async res => {\r\n if (res.status == 200 || res.status == 400) {\r\n switch (action) {\r\n case \"sign-in\":\r\n if (res.status == 200) {\r\n if (opts.ora) opts.ora.text = \"User is authenticated\";\r\n return resolve(await tryGetUser());\r\n }\r\n break;\r\n\r\n case \"sign-out\":\r\n if (res.status == 400) {\r\n clearCachedAuthData();\r\n if (opts.ora) opts.ora.text = \"User is signed-out\";\r\n return resolve(true);\r\n }\r\n break;\r\n }\r\n }\r\n else {\r\n failures++;\r\n if (failures > 10) {\r\n if (opts.ora) opts.ora.fail(`Failed to complete auth flow. Please try again. Make sure that port ${server.port} is not blocked`);\r\n return resolve(null);\r\n }\r\n }\r\n setTimeout(poll, 1000);\r\n });\r\n }\r\n });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport caporal from '@caporal/core';\r\nimport { readFileSync } from 'fs';\r\nimport { deploy } from './cli/cli.deploy.js';\r\nimport { optimize } from './cli/cli.optimize.js';\r\nimport { api_endpoint, cloud_account_url, cloud_base_url } from './constants.js';\r\nimport dotenv from 'dotenv';\r\n\r\n\r\n// Patch Node 18 API https://linear.app/needle/issue/NE-548\r\nimport fetch from \"node-fetch\";\r\nimport { File } from \"@web-std/file\";\r\nimport { getLicenses, listUploads } from '@needle-tools/cloud-sdk';\r\nimport { listDeployments } from './list.js';\r\nimport ora from 'ora';\r\nimport { isLoggedIn, login, logout, userAuthHeaders } from './cli/cli.auth.js';\r\nimport { tryGetAccessToken } from './cli/auth/cli.auth.storage.js';\r\nimport { startServer } from './cli/cli.server.js';\r\nimport { openUrlInDefaultBrowser } from './utils.js';\r\n\r\nconst silent = process.argv.includes(\"--silent\");\r\n\r\n/** @ts-ignore */\r\nif (!globalThis[\"fetch\"]) globalThis[\"fetch\"] = fetch;\r\nif (!globalThis[\"File\"]) globalThis[\"File\"] = File;\r\n\r\n\r\nconst PACKAGE = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));\r\nif (!silent) console.log(`☁ Needle Cloud CLI v${PACKAGE.version}, Node ${process.version}`);\r\n\r\n\r\n\r\n\r\n\r\nconst accessTokenHelp = `The access token to use. Use the login command or get a token from ${cloud_base_url}. You can pass the access token with your command or set the environment variable NEEDLE_CLOUD_TOKEN`;\r\n\r\n/** \r\n * @param {import('@caporal/core').ParsedOption | null} accessTokenOption\r\n * @param {import('@caporal/core').ParsedOption | null} org\r\n * @param {boolean} allow_login\r\n * @returns {Promise<{ accessToken:string, org_id?:string }>}\r\n */\r\nasync function getAccessToken(accessTokenOption, org = null, allow_login = true) {\r\n\r\n let accessToken = accessTokenOption?.toString();\r\n let org_id = undefined;\r\n\r\n if (!accessToken) {\r\n dotenv.config();\r\n // If no access token is provided check if the environment has one. \r\n // Note that this is/should be the same env name as in the vite build-pipeline plugin!\r\n accessToken = process.env.NEEDLE_CLOUD_TOKEN;\r\n if (accessToken?.length)\r\n console.log(\"Using NEEDLE_CLOUD_TOKEN token from env\");\r\n }\r\n\r\n // If no access token is provided, try to login\r\n if (!accessToken) {\r\n let spinner = undefined;\r\n if (!await isLoggedIn()) {\r\n spinner = silent ? undefined : ora(`Login`).start();\r\n }\r\n const headless = allow_login ? false : true;\r\n const user = await login({ headless, ora: spinner });\r\n if (spinner) {\r\n if (user) spinner.succeed(\"Logged in\");\r\n else spinner.fail(\"Login failed\");\r\n }\r\n if (user) {\r\n // If a org was provided we want to get the access token for that org\r\n if (org) {\r\n // we allow using the org name or id\r\n org_id = user.userInfo?.organization_data?.find(o => o.id === org)?.id;\r\n if (!org_id) {\r\n org = org.toString()?.toLowerCase();\r\n org_id ??= user.userInfo?.organization_data?.find(o => o.name.toLowerCase() === org)?.id;\r\n }\r\n if (!org_id) {\r\n throw new Error(`ERR: You (${user.claims?.name || user.claims?.sub}) are not a member of the organization \\\"${org}\\\"`);\r\n }\r\n accessToken = await user?.client.getOrganizationToken(org_id);\r\n }\r\n // if no org was provided we will use the user's access token\r\n else {\r\n accessToken = user?.accessToken;\r\n }\r\n }\r\n }\r\n\r\n if (!accessToken) {\r\n throw new Error(\"Missing NEEDLE_CLOUD_TOKEN token. Please provide the access token argument or set the environment variable NEEDLE_CLOUD_TOKEN\");\r\n }\r\n return { accessToken, org_id };\r\n}\r\n\r\n\r\n\r\n\r\nexport const program = caporal.program;\r\nprogram.version(PACKAGE.version).description('Command-line interface (CLI) for Needle Cloud');\r\n\r\n\r\n\r\n\r\nprogram.command(\"start-server\", \"Starts the Needle Auth server\")\r\n .configure({ visible: false, strictOptions: false })\r\n .help(``)\r\n .option(\"--restart <restart>\", \"Restarts the server\", { required: false, validator: program.BOOLEAN, default: false })\r\n .option(\"--integration <integration>\", \"Hint for the process which integration triggered this command\", { required: false, validator: program.STRING })\r\n .action(async ({ options }) => {\r\n const integration = /** @type {string} */(options.integration);\r\n const spinner = silent ? undefined : ora(`Starting Needle Auth server ${integration ? `(from ${integration})` : \"\"}`).start();\r\n const restart = /** @type {boolean} */(options.restart);\r\n startServer({\r\n ora: spinner,\r\n restart,\r\n }).then(res => {\r\n if (res?.baseUrl && res.isHost) {\r\n spinner?.succeed(`Server started on ${res.port}`);\r\n }\r\n else if (res?.isHost === false) {\r\n spinner?.warn(`Server is running on ${res.port}`);\r\n process.exit(0);\r\n }\r\n else {\r\n spinner?.fail(\"Failed to start server\");\r\n }\r\n });\r\n });\r\n\r\nprogram.command(\"login\", \"Login to Needle Cloud\")\r\n .help(``)\r\n .option(\"--headless <headless>\", \"The headless process will not open a browser window to login. If the user is not authorized then no auth flow can be started. Use this if you only want to **check** if the user is authenticated\", { required: false, validator: program.BOOLEAN, default: false })\r\n .option(\"--clear <clear>\", \"Refresh the access token\", { required: false, validator: program.BOOLEAN, default: false })\r\n .action(async ({ args, options, logger }) => {\r\n const headless = /** @type {boolean} */(options.headless.valueOf() || false);\r\n const clear = /** @type {boolean} */(options.clear.valueOf() || false);\r\n const spinner = silent ? undefined : ora(`Login`).start();\r\n login({\r\n headless: headless,\r\n silent,\r\n clearAuthData: clear,\r\n ora: spinner,\r\n }).then(async user => {\r\n if (user?.isAuthenticated)\r\n spinner?.succeed(\"Successfully logged in as \" + user.claims?.name);\r\n else if (headless == false)\r\n spinner?.fail(\"Login failed...\");\r\n else if (!silent)\r\n spinner?.warn(\"Not logged in\");\r\n\r\n // const user1 = await login({ headless: true, silent: true });\r\n // if (!user1) return;\r\n // const headers = await userAthHeaders(user1);\r\n // const assets = await listUploads({ baseUrl: api_endpoint, ...headers });\r\n // console.log(assets.uploads.map(a => a.view_id + \" : \" + a.name));\r\n\r\n process.exit(user?.isAuthenticated ? 0 : 1);\r\n });\r\n });\r\n\r\nprogram.command(\"logout\", \"Logout of Needle Cloud\")\r\n .help(``)\r\n .option(\"--headless <headless>\", \"Headless will not open a browser window to logout\", { required: false, validator: program.BOOLEAN, default: false })\r\n .action(async ({ args, options, logger }) => {\r\n const headless = /** @type {boolean} */(options.headless.valueOf() || false);\r\n logout({\r\n headless,\r\n }).then(res => {\r\n if (res) ora(\"Logged out\").succeed();\r\n else ora(\"Logout failed\").fail();\r\n process.exit(res ? 0 : 1);\r\n })\r\n });\r\n\r\n\r\n\r\nconst openOptions = {\r\n account: { url: cloud_account_url }\r\n}\r\nprogram.command(\"open\", \"Login to Needle Cloud\")\r\n .argument(\"<page>\", `The page to open. Options are: ${Object.keys(openOptions).join(\", \")}`, { validator: program.STRING })\r\n .help(``)\r\n .action(async ({ args, options, logger }) => {\r\n const page = args.page.toString();\r\n const value = openOptions[page];\r\n if (!value) {\r\n logger.error(`Unknown argument: ${page}. Options are: ${Object.keys(openOptions).join(\", \")}`);\r\n return;\r\n }\r\n if (\"url\" in value) {\r\n openUrlInDefaultBrowser(value.url);\r\n }\r\n else {\r\n logger.error(`Unknown argument: ${page}`);\r\n }\r\n });\r\n\r\n\r\nprogram\r\n .command('print-active-licenses', 'Get a list of my currently active licenses')\r\n .configure({ visible: false })\r\n .help(``)\r\n .option('--access-token <access-token>', accessTokenHelp, { validator: program.STRING })\r\n .option('--org <org>', 'The organization name or id to authenticate for', { required: false, validator: program.STRING })\r\n .action(async ({ args, options, logger }) => {\r\n const { accessToken: token, org_id } = await getAccessToken(options.accessToken, options.org);\r\n if (!token?.length) {\r\n logger.error(\"No access token provided\");\r\n return;\r\n }\r\n\r\n getLicenses({ baseUrl: api_endpoint, authToken: token }, (org_id ? { type: \"org\", org_id } : { type: \"user\" })).then(licenses => {\r\n if (licenses.length <= 0) {\r\n logger.warn(\"No active licenses found\");\r\n }\r\n else {\r\n logger.info(\"Your active licenses:\");\r\n licenses.forEach(license => {\r\n logger.info(`- ${license.type}: ${license.license?.toUpperCase()}`);\r\n });\r\n }\r\n })\r\n });\r\n\r\nprogram\r\n .command('list-deployments', 'Get a list of deployed websites')\r\n .configure({ visible: false })\r\n .help(``)\r\n .option('--access-token <access-token>', accessTokenHelp, { validator: program.STRING })\r\n .option('--org <org>', 'The organization name or id to authenticate for', { required: false, validator: program.STRING })\r\n .option('--endpoint <endpoint>', `The needle cloud endpoint to use - e.g. ${api_endpoint}`, { required: false, validator: program.STRING })\r\n .option(\"--limit <limit>\", \"Limit the number of deployments to show (min: 0, max: 100)\", { validator: program.NUMBER, default: 10 })\r\n .option(\"--offset <offset>\", \"The offset for deployments (default: 0, min: 0)\", { validator: program.NUMBER, default: 0 })\r\n .option(\"--format <format>\", \"The output format. Options: cli (default), json\", { validator: program.STRING, default: \"cli\", hidden: true })\r\n .option(\"--name\", \"Filter by one or multiple deployment names (separated by ;)\", { validator: program.STRING })\r\n .action(async ({ args, options, logger }) => {\r\n const { accessToken: token, org_id } = await getAccessToken(options.accessToken, options.org);\r\n const endpoint = options.endpoint?.toString() || api_endpoint;\r\n const limit = /** @type{number} */ (options.limit.valueOf());\r\n const offset = /** @type{number} */ (options.offset.valueOf());\r\n const format = options.format?.toString() || \"cli\";\r\n const name = options.name?.toString() || undefined;\r\n\r\n if (limit < 0) {\r\n logger.error(\"The limit can not be negative\");\r\n return\r\n }\r\n else if (limit > 100) {\r\n logger.error(\"The limit can not be higher than 100\");\r\n return;\r\n }\r\n\r\n const spinner = ora(`Query deployments`).start();\r\n const result = await listDeployments({ endpoint, token, org: org_id, limit, offset, names: name?.split(\";\") }).catch(err => { logger.error(err); });\r\n if (result && \"error\" in result) {\r\n spinner.fail(result.error + \" (status: \" + result.status + \")\");\r\n }\r\n else if (result) {\r\n if (format === \"json\") {\r\n spinner.succeed(`Found ${result.deployments.length} deployments`);\r\n const json = JSON.stringify(result.deployments);\r\n console.log(json);\r\n return;\r\n }\r\n if (result.deployments.length > 0) {\r\n spinner.succeed(`Found ${result.deployments.length} deployments`);\r\n result.deployments.forEach((deployment, index) => {\r\n logger.info(`${index + (limit * offset)}: ${deployment.name} – ${deployment.url}`);\r\n });\r\n }\r\n else {\r\n spinner.warn(\"No deployments found\");\r\n }\r\n }\r\n else {\r\n spinner.fail(\"Failed to query deployments\");\r\n }\r\n });\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nprogram\r\n .command('deploy', 'Deploy a website to Needle')\r\n .help(``)\r\n .option('--access-token <access-token>', accessTokenHelp, { validator: program.STRING })\r\n .option('--org <org>', 'The organization name or id to authenticate for', { required: false, validator: program.STRING })\r\n .argument('<directory>', 'The directory to deploy', { validator: program.STRING })\r\n .option('--name <name>', 'The project name', { required: false, validator: program.STRING })\r\n .option('--endpoint <endpoint>', `The needle cloud endpoint to use - e.g. ${api_endpoint}`, { required: false, validator: program.STRING })\r\n .option('--open', 'Open the deployment in the default browser', { default: true, validator: program.BOOLEAN })\r\n .option('--verbose <verbose>', 'Enables verbose output logs', { required: false, validator: program.BOOLEAN, default: false })\r\n .action(async ({ args, options, logger }) => {\r\n\r\n const open = /** @type {boolean} */ (options.open);\r\n const { accessToken: token, org_id } = await getAccessToken(options.accessToken, options.org);\r\n const verbose = /** @type {boolean} */(options.verbose.valueOf());\r\n\r\n await deploy({\r\n logger,\r\n endpoint: options.endpoint?.toString() || undefined,\r\n token,\r\n org_id,\r\n directory: args.directory.toString(),\r\n name: options.name?.toString() || undefined,\r\n open,\r\n verbose: verbose || false,\r\n })\r\n\r\n })\r\n\r\n\r\nprogram\r\n .command('optimize', 'Optimize glTF, GLB, VRM, FBX, USD files')\r\n .help(``)\r\n .option('--access-token <access-token>', accessTokenHelp, { validator: program.STRING })\r\n .option('--org <org>', 'The organization name or id to authenticate for', { required: false, validator: program.STRING })\r\n .argument('<path>', 'The full path to a file or directory that should be optimized', { validator: program.STRING })\r\n .option('--outdir <outdir>', 'The output directory for the optimized file(s)', { required: false, validator: program.STRING })\r\n .option('--name <name>', 'The optimization project name / unique identifier. This can also be the view id of previous uploads.', { required: false, validator: program.STRING })\r\n .option('--verbose <verbose>', 'Enables verbose output logs', { required: false, validator: program.BOOLEAN, default: false })\r\n .action(async ({ args, options, logger }) => {\r\n\r\n const verbose = /** @type {boolean} */(options.verbose.valueOf());\r\n const { accessToken: token, org_id } = await getAccessToken(options.accessToken, options.org);\r\n\r\n const res = await optimize({\r\n logger,\r\n token,\r\n org_id,\r\n fileOrDirectory: args.path.toString(),\r\n name: options.name?.toString() || undefined,\r\n outDir: options.outdir?.toString() || undefined,\r\n verbose: verbose || false,\r\n }).catch(err => {\r\n console.error(err);\r\n process.exit(1);\r\n });\r\n\r\n if (Array.isArray(res)) {\r\n process.exit(0);\r\n }\r\n else if (\"error\" in res) {\r\n console.error(res.error);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n\r\n"],"names":["ShareApiEndpoints","status","version","login","api","account","connect","get_licenses","set_license_active","set_licenses_active","buy_licenses","start_billingportal_session","get_credits","buy_credits","organizations","get","orgs_details","get_seats","get_invitations","events","post","list","tokens","create","delete","jobs","uploads","deployments","urls","public","public_download_urls","view","get_public_info","post_version","get_versions","upload","request","request_put_url","update_results","done","cancel","optimize","get_optimize_id","request_start","request_download_url","request_restart","post_update","post_meta","post_results_stats","get_status","query","request_job_that_needs_stats","worker","ping","get_available_count","post_available_info","get_available_info","createAuthHeaders","authData","authHeaders","authorization","authToken","org","roles","join","roles_org","getLicenses","args","options","url","baseUrl","licensesRequestHeaders","res","fetch","method","headers","catch","err","console","error","ok","statusText","text","json","licenses","getPublicURL","opts","undefined","view_id","job_id","latest","filename","encodeURIComponent","progressive","isBuffer","isFunction","isString","noop","AxiosError","utils","prototype","Stream","require$$0","DelayedStream","db","defer","abort","async","initState","iterate","terminator","serialOrdered","require$$1","require$$2","parseUrl","FormData","CombinedStream","mime","toFormData","PlatformFormData","encode","platform","AxiosHeaders","defaults","isCancel","CanceledError","parse","debug","URL","VERSION","TextEncoder","readBlob","getProxyForUrl","callbackify","formDataToStream","AxiosTransformStream","ZlibHeaderTransformStream","mergeConfig","composeSignals","validators","Axios","InterceptorManager","CancelToken","spread","isAxiosError","HttpStatusCode","axios","screenshotFileName","isInternalFile","endsWith","updateJobStatus","job","identifier","getJobStatus","jobid","data","getJob","body","fields","JSON","stringify","response","global","replaceAll","str","search","replacement","lastIndex","index","indexOf","length","replace","toFile","filepath","buffer","name","split","pop","mimetype","getFileMimeType","file","File","type","path","hashContentMD5","hash","md5","update","base64","arr","Uint8Array","subarray","header","i","toString","getUncompressedFileMimeType","substring","getDirectory","parts","lastPart","includes","toHumanReadableSizeString","size","precision","postfix","pp","toFixed","resolvePath","reduce","a","v","push","delay","ms","Promise","resolve","setTimeout","validateFiles","files","success","totalSize","maxSizeInTotal","lowercaseFilename","toLocaleLowerCase","log","splice","_file$path","content","uris","matchAll","asset","warn","basePath","uri","_uri$groups","value","groups","found","startsWith","resourcePath","f","webkitRelativePath","fileWithPath","tryDetermineEntrypoint","entryPointFile","packageJsons","filter","indexHtml","toLowerCase","glTF_Files","opt","tryFindEntrypointGLTF","map","usdFiles","findFileWithShortestPath","fbxFiles","objFiles","candidates","Array","lodRegex","test","shortest","Infinity","UploadEstimator","constructor","totalFiles","estimatedTotalSize","uploadedSize","startTime","Date","now","lastUpdateTime","lastUploadedSize","speedEMA","emaFactor","smoothedRemainingTime","recentSpeeds","maxRecentSpeeds","initialEstimateThreshold","updateProgress","totalUploadedSize","timeDiff","newlyUploadedSize","instantSpeed","shift","averageRecentSpeed","b","progress","elapsedTime","effectiveSpeed","remainingTime","remainingSize","smoothingFactor","minRemainingTime","Math","max","estimatedTimeRemaining","round","estimatedTimeRemainingString","__formatTime","seconds","isFinite","minutes","floor","hours","uploadFiles","uploadPromise","internalUploadFiles","result","finally","_options","_data$entrypoint","_data$entrypoint2","_data$entrypoint3","_data$entrypoint4","_options2","_options3","_options4","_data$entrypoint5","_options8","_options9","_options14","loglevel","entrypoint","validation","sort","authHeader","beginUploadHeaders","triggered_by","_options5","beginRequestBody","results","_fileName","_options6","_file$type","_options7","fileName","Error","fileBuffer","arrayBuffer","filesize","filetype","uncompressedName","content_type","content_length","content_md5","message","beginResponse","totalBytes","acc","id","uploadSkipped","filesUploaded","entrypointPath","uploadedBytes","addEventListener","uploadHasCompletedSuccessfully","lastStatusUpdate","updateStatus","force","status_message","onStart","uploadEstimator","queue","maxParallelUploads","anyUploadFailed","filesCopy","_options10","aborted","uploaded","lastUploaded","registeredFile","fileSize","promise","performUpload","uploadId","uploadRequestPUTUrl","fileMd5","fileType","fileIndex","fileCount","onProgress","progressEvent","_options11","fileProgress01","diff","progress01","timePassedInSeconds","estimation","estimatedTimeLeftDisplay","estimatedTimeLeft","then","_res","sizeString","e","_options12","race","all","_options13","doneRequestHeaders","doneResponse","doneResponseJson","params","content_encoding","requestPresignedUrlHeaders","k","_options$abort","putUrl","presigned_url","didUpload","_options$abort2","putResponse","put","signal","onUploadProgress","requestOptimize","parameters","pipeline_version","trigger_type","errormsg","api_endpoint","cloud_base_url","cloud_account_url","cloud_view_baseurl","openUrlInDefaultBrowser","process","exec","collectFilesRecursive","directory","level","total_size","statSync","isFile","buf","readFileSync","maxSizeInMB","readdirSync","withFileTypes","find","entry","isDirectory","isModelFile","fullpath","relpath","deploy","_args$endpoint","needleBuildInfo","ora","fail","directoryName","basename","endpoint","deploymentName","tryDetermineDeploymentName","isDevEnvironment","deploymentLog","start","spinner","lastFileIndex","token","org_id","verbose","evt","sizeInMB","succeed","open","needleConfigPath","existsSync","packageJsonPath","packageJson","parent","dirname","parentResult","outDir","_args$outDir","filePath","fileOrDirectory","uploadSpinner","optResponse","optJob","optSpinner","fileIsReadyToDownload","color","_optResponse$message","waitDelay","progressText","downloadSpinner","finishedJob","downloadedPaths","downloadResult","targetPath","targetDirectory","slice","byteLength","info","mkdirSync","recursive","writeFileSync","Buffer","from","listDeployments","searchParams","append","offset","limit","names","n","trim","permissions","AUTH_CONFIG","appId","appSecret","resources","scopes","AUTH_PARAMS","getAccessToken","fetchUserInfo","resource","_AUTH_CONFIG$resource","clearCachedAuthData","fs","AUTH_STORAGE_DIRECTORY","rmSync","argv","memoryCache","Map","hostname","resourceDirectory","tmpdir","tokenPaths","accessToken","refreshToken","idToken","signInSession","getPathOnDisc","key","AuthStorageAdapter","setItem","set","getItem","String","removeItem","tryGetUser","client","createNodeClient","navigate","getUserFromClient","storage","NodeClient","getContext","ctx","code","handleAuthRoutes","router","Router","use","next","action","nodeClient","redirect","clearAllTokens","signIn","signOut","handleSignInCallback","originalUrl","userAuthHeaders","user","orgId","isAuthenticated","_user$userInfo","userInfo","organization_data","o","_user$userInfo2","nameToSearch","getOrganizationToken","_org","withLogto","Object","defineProperty","enumerable","port","startServer","restart","routes","get_deployments","serverInfo","isHost","auth_endpoints","serverIsAlreadyRunning","expressModule","server","app","default","req","cancelled","end","_req$user","claims","_server","close","exit","send","get_user","_req$user2","_req$user3","_req$user4","_req$user5","org_roles","organization_roles","authenticated","sub","username","email","profile_picture","picture","orgs","_orgInfo$roles","orgInfo","r","canWrite","some","get_license","_req","_req$query$integratio","auth","integration","toLocaleString","fetchResponse","_req$query$org","orgNameOrId","listen","isLoggedIn","headless","silent","clearAuthData","startFlow","logout","reject","_user$claims","gotoAccountPage","follow","poll","failures","globalThis","PACKAGE","import","meta","accessTokenHelp","accessTokenOption","allow_login","_accessToken","dotenv","config","env","NEEDLE_CLOUD_TOKEN","_org$toString","_org_id","_user$claims2","program","caporal","description","command","configure","visible","strictOptions","help","option","required","validator","BOOLEAN","STRING","logger","valueOf","clear","_user$claims3","openOptions","argument","keys","page","forEach","license","_license$license","toUpperCase","NUMBER","hidden","_options$endpoint","_options$format","_options$name","format","deployment","_options$endpoint2","_options$name2","_options$name3","_options$outdir","outdir","isArray"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}