nervoscan-js-sdk 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/deploy-doc.yaml +12 -0
- package/README.md +135 -0
- package/dist/nervoscan-js-sdk.js +6 -6
- package/dist/nervoscan-js-sdk.mjs +1045 -946
- package/dist/nervoscan-js-sdk.umd.js +6 -6
- package/nervotec.png +0 -0
- package/package.json +2 -1
- package/src/api/Client.ts +127 -26
- package/src/api/utils/error_handler.ts +35 -0
- package/src/api/utils/error_registry.ts +12 -0
- package/src/api/utils/errors.ts +103 -0
- package/src/index.ts +1 -0
- package/typedoc.json +8 -0
- package/.env.development +0 -1
- package/.env.production +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/nervoscan-js-sdk)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The **NervoScan JS SDK** is a lightweight JavaScript library that enables seamless integration with the NervoScan backend services. This SDK handles authentication, video scan submission, and structured error handling — allowing developers to build React or other web-based clients effortlessly on top of NervoScan's contactless health analysis platform.
|
|
8
|
+
|
|
9
|
+
It provides a singleton `Client` interface and a full suite of custom error classes for advanced control and debugging.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- Authenticated communication with the NervoScan backend
|
|
16
|
+
- Video scan submission and result retrieval
|
|
17
|
+
- Fully type-safe implementation (written in TypeScript)
|
|
18
|
+
- Structured custom error classes for robust error handling
|
|
19
|
+
- Easy integration into any React, Vite, or JS-based frontend
|
|
20
|
+
- Singleton pattern for consistent client state management
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install nervoscan-js-sdk
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { Client, Errors } from 'nervoscan-js-sdk';
|
|
36
|
+
|
|
37
|
+
// Get the singleton instance
|
|
38
|
+
const client = Client.getInstance();
|
|
39
|
+
|
|
40
|
+
async function submitScan(videoBlob: Blob) {
|
|
41
|
+
try {
|
|
42
|
+
// Initialize with credentials
|
|
43
|
+
await client.initialize('username', 'password');
|
|
44
|
+
|
|
45
|
+
// Upload video and get job ID
|
|
46
|
+
const jobID = await client.uploadVideo(videoBlob);
|
|
47
|
+
console.log('Scan submitted. Job ID:', jobID);
|
|
48
|
+
|
|
49
|
+
// Check results
|
|
50
|
+
const results = await client.getResults(jobID);
|
|
51
|
+
console.log('Scan results:', results);
|
|
52
|
+
} catch (error) {
|
|
53
|
+
if (error instanceof Errors.InvalidPasswordError) {
|
|
54
|
+
console.error('Password incorrect.');
|
|
55
|
+
} else {
|
|
56
|
+
console.error('Unexpected error:', error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## API Reference
|
|
65
|
+
|
|
66
|
+
### `Client` Class
|
|
67
|
+
|
|
68
|
+
#### Singleton Access
|
|
69
|
+
```ts
|
|
70
|
+
Client.getInstance(): Client
|
|
71
|
+
```
|
|
72
|
+
Returns the singleton instance of the Client class.
|
|
73
|
+
|
|
74
|
+
#### Methods
|
|
75
|
+
|
|
76
|
+
- `initialize(username: string, password: string): void`
|
|
77
|
+
Initializes the client with user credentials.
|
|
78
|
+
|
|
79
|
+
- `uploadVideo(videoBlob: Blob): Promise<string>`
|
|
80
|
+
Uploads a video scan and returns the job ID.
|
|
81
|
+
|
|
82
|
+
- `checkResults(jobID: string): Promise<string>`
|
|
83
|
+
Checks if results are available for the given job ID.
|
|
84
|
+
|
|
85
|
+
- `getResults(jobID: string): Promise<any>`
|
|
86
|
+
Fetches scan results for the given job ID.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Error Handling
|
|
91
|
+
|
|
92
|
+
The SDK provides custom error classes for granular error control:
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
import { Errors } from 'nervoscan-js-sdk';
|
|
96
|
+
|
|
97
|
+
try {
|
|
98
|
+
await client.initialize('username', 'password');
|
|
99
|
+
} catch (err) {
|
|
100
|
+
if (err instanceof Errors.NotInitializedError) {
|
|
101
|
+
console.error('Client not initialized.');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Available Errors
|
|
107
|
+
|
|
108
|
+
- `NotInitializedError` - Client not properly initialized
|
|
109
|
+
- `EmptyVideoError` - Video blob is empty
|
|
110
|
+
- `VideoTypeError` - Invalid video type, not a blob
|
|
111
|
+
- `InvalidUsernameError` - Invalid username provided
|
|
112
|
+
- `InvalidPasswordError` - Invalid password provided
|
|
113
|
+
- `InvalidAccessTokenError` - Invalid or expired access token
|
|
114
|
+
- `NoScansAvailableError` - No scans available in current plan
|
|
115
|
+
- `NoScanDataError` - No scan data available for the job ID
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Requirements
|
|
120
|
+
|
|
121
|
+
- Node.js v14 or higher
|
|
122
|
+
- Modern browser (Chrome/Safari) for webcam support
|
|
123
|
+
- NervoScan backend access (credentials required)
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## License
|
|
128
|
+
|
|
129
|
+
MIT License
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Maintainers
|
|
134
|
+
|
|
135
|
+
Built and maintained by the NervoScan development team.
|
package/dist/nervoscan-js-sdk.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var Ye=Object.defineProperty;var et=(e,t,n)=>t in e?Ye(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var D=(e,t,n)=>et(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Pe(e,t){return function(){return e.apply(t,arguments)}}const{toString:tt}=Object.prototype,{getPrototypeOf:de}=Object,G=(e=>t=>{const n=tt.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),C=e=>(e=e.toLowerCase(),t=>G(t)===e),Q=e=>t=>typeof t===e,{isArray:j}=Array,M=Q("undefined");function nt(e){return e!==null&&!M(e)&&e.constructor!==null&&!M(e.constructor)&&x(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const ke=C("ArrayBuffer");function rt(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&ke(e.buffer),t}const st=Q("string"),x=Q("function"),Fe=Q("number"),Z=e=>e!==null&&typeof e=="object",ot=e=>e===!0||e===!1,V=e=>{if(G(e)!=="object")return!1;const t=de(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},it=C("Date"),at=C("File"),ct=C("Blob"),lt=C("FileList"),ut=e=>Z(e)&&x(e.pipe),ft=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||x(e.append)&&((t=G(e))==="formdata"||t==="object"&&x(e.toString)&&e.toString()==="[object FormData]"))},dt=C("URLSearchParams"),[pt,ht,mt,yt]=["ReadableStream","Request","Response","Headers"].map(C),wt=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function z(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),j(e))for(r=0,s=e.length;r<s;r++)t.call(null,e[r],r,e);else{const o=n?Object.getOwnPropertyNames(e):Object.keys(e),i=o.length;let c;for(r=0;r<i;r++)c=o[r],t.call(null,e[c],c,e)}}function _e(e,t){t=t.toLowerCase();const n=Object.keys(e);let r=n.length,s;for(;r-- >0;)if(s=n[r],t===s.toLowerCase())return s;return null}const U=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Ue=e=>!M(e)&&e!==U;function oe(){const{caseless:e}=Ue(this)&&this||{},t={},n=(r,s)=>{const o=e&&_e(t,s)||s;V(t[o])&&V(r)?t[o]=oe(t[o],r):V(r)?t[o]=oe({},r):j(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r<s;r++)arguments[r]&&z(arguments[r],n);return t}const bt=(e,t,n,{allOwnKeys:r}={})=>(z(t,(s,o)=>{n&&x(s)?e[o]=Pe(s,n):e[o]=s},{allOwnKeys:r}),e),Et=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),gt=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},St=(e,t,n,r)=>{let s,o,i;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!c[i]&&(t[i]=e[i],c[i]=!0);e=n!==!1&&de(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Rt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Tt=e=>{if(!e)return null;if(j(e))return e;let t=e.length;if(!Fe(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Ot=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&de(Uint8Array)),At=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},xt=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Ct=C("HTMLFormElement"),Nt=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),ye=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Pt=C("RegExp"),Be=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};z(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},kt=e=>{Be(e,(t,n)=>{if(x(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(x(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ft=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return j(e)?r(e):r(String(e).split(t)),n},_t=()=>{},Ut=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function Bt(e){return!!(e&&x(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const Lt=e=>{const t=new Array(10),n=(r,s)=>{if(Z(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const o=j(r)?[]:{};return z(r,(i,c)=>{const f=n(i,s+1);!M(f)&&(o[c]=f)}),t[s]=void 0,o}}return r};return n(e,0)},Dt=C("AsyncFunction"),jt=e=>e&&(Z(e)||x(e))&&x(e.then)&&x(e.catch),Le=((e,t)=>e?setImmediate:t?((n,r)=>(U.addEventListener("message",({source:s,data:o})=>{s===U&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),U.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",x(U.postMessage)),qt=typeof queueMicrotask<"u"?queueMicrotask.bind(U):typeof process<"u"&&process.nextTick||Le,a={isArray:j,isArrayBuffer:ke,isBuffer:nt,isFormData:ft,isArrayBufferView:rt,isString:st,isNumber:Fe,isBoolean:ot,isObject:Z,isPlainObject:V,isReadableStream:pt,isRequest:ht,isResponse:mt,isHeaders:yt,isUndefined:M,isDate:it,isFile:at,isBlob:ct,isRegExp:Pt,isFunction:x,isStream:ut,isURLSearchParams:dt,isTypedArray:Ot,isFileList:lt,forEach:z,merge:oe,extend:bt,trim:wt,stripBOM:Et,inherits:gt,toFlatObject:St,kindOf:G,kindOfTest:C,endsWith:Rt,toArray:Tt,forEachEntry:At,matchAll:xt,isHTMLForm:Ct,hasOwnProperty:ye,hasOwnProp:ye,reduceDescriptors:Be,freezeMethods:kt,toObjectSet:Ft,toCamelCase:Nt,noop:_t,toFiniteNumber:Ut,findKey:_e,global:U,isContextDefined:Ue,isSpecCompliantForm:Bt,toJSONObject:Lt,isAsyncFn:Dt,isThenable:jt,setImmediate:Le,asap:qt};function m(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(m,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const De=m.prototype,je={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{je[e]={value:e}});Object.defineProperties(m,je);Object.defineProperty(De,"isAxiosError",{value:!0});m.from=(e,t,n,r,s,o)=>{const i=Object.create(De);return a.toFlatObject(e,i,function(f){return f!==Error.prototype},c=>c!=="isAxiosError"),m.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const It=null;function ie(e){return a.isPlainObject(e)||a.isArray(e)}function qe(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function we(e,t,n){return e?e.concat(t).map(function(s,o){return s=qe(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function Ht(e){return a.isArray(e)&&!e.some(ie)}const Mt=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function Y(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,h){return!a.isUndefined(h[y])});const r=n.metaTokens,s=n.visitor||u,o=n.dots,i=n.indexes,f=(n.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function l(p){if(p===null)return"";if(a.isDate(p))return p.toISOString();if(!f&&a.isBlob(p))throw new m("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(p)||a.isTypedArray(p)?f&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function u(p,y,h){let E=p;if(p&&!h&&typeof p=="object"){if(a.endsWith(y,"{}"))y=r?y:y.slice(0,-2),p=JSON.stringify(p);else if(a.isArray(p)&&Ht(p)||(a.isFileList(p)||a.endsWith(y,"[]"))&&(E=a.toArray(p)))return y=qe(y),E.forEach(function(R,P){!(a.isUndefined(R)||R===null)&&t.append(i===!0?we([y],P,o):i===null?y:y+"[]",l(R))}),!1}return ie(p)?!0:(t.append(we(h,y,o),l(p)),!1)}const d=[],w=Object.assign(Mt,{defaultVisitor:u,convertValue:l,isVisitable:ie});function g(p,y){if(!a.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+y.join("."));d.push(p),a.forEach(p,function(E,S){(!(a.isUndefined(E)||E===null)&&s.call(t,E,a.isString(S)?S.trim():S,y,w))===!0&&g(E,y?y.concat(S):[S])}),d.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return g(e),t}function be(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function pe(e,t){this._pairs=[],e&&Y(e,this,t)}const Ie=pe.prototype;Ie.append=function(t,n){this._pairs.push([t,n])};Ie.toString=function(t){const n=t?function(r){return t.call(this,r,be)}:be;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function zt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function He(e,t,n){if(!t)return e;const r=n&&n.encode||zt;a.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=a.isURLSearchParams(t)?t.toString():new pe(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class Ee{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Me={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},$t=typeof URLSearchParams<"u"?URLSearchParams:pe,Jt=typeof FormData<"u"?FormData:null,Vt=typeof Blob<"u"?Blob:null,Kt={isBrowser:!0,classes:{URLSearchParams:$t,FormData:Jt,Blob:Vt},protocols:["http","https","file","blob","url","data"]},he=typeof window<"u"&&typeof document<"u",ae=typeof navigator=="object"&&navigator||void 0,vt=he&&(!ae||["ReactNative","NativeScript","NS"].indexOf(ae.product)<0),Wt=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Xt=he&&window.location.href||"http://localhost",Gt=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:he,hasStandardBrowserEnv:vt,hasStandardBrowserWebWorkerEnv:Wt,navigator:ae,origin:Xt},Symbol.toStringTag,{value:"Module"})),T={...Gt,...Kt};function Qt(e,t){return Y(e,new T.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,o){return T.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function Zt(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function Yt(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r<s;r++)o=n[r],t[o]=e[o];return t}function ze(e){function t(n,r,s,o){let i=n[o++];if(i==="__proto__")return!0;const c=Number.isFinite(+i),f=o>=n.length;return i=!i&&a.isArray(s)?s.length:i,f?(a.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&a.isArray(s[i])&&(s[i]=Yt(s[i])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(Zt(r),s,n,0)}),n}return null}function en(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const $={transitional:Me,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=a.isObject(t);if(o&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(ze(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return Qt(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return Y(c?{"files[]":t}:t,f&&new f,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),en(t)):t}],transformResponse:[function(t){const n=this.transitional||$.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(c){if(i)throw c.name==="SyntaxError"?m.from(c,m.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:T.classes.FormData,Blob:T.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{$.headers[e]={}});const tn=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),nn=e=>{const t={};let n,r,s;return e&&e.split(`
|
|
2
|
-
`).forEach(function(i){s=i.indexOf(":"),
|
|
3
|
-
`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[ge]=this[ge]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=I(i);r[c]||(an(s,i),r[c]=!0)}return a.isArray(t)?t.forEach(o):o(t),this}};A.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(A.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(A);function re(e,t){const n=this||$,r=t||n,s=A.from(r.headers);let o=r.data;return a.forEach(e,function(c){o=c.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function $e(e){return!!(e&&e.__CANCEL__)}function q(e,t,n){m.call(this,e??"canceled",m.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits(q,m,{__CANCEL__:!0});function Je(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new m("Request failed with status code "+n.status,[m.ERR_BAD_REQUEST,m.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function cn(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function ln(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(f){const l=Date.now(),u=r[o];i||(i=l),n[s]=f,r[s]=l;let d=o,w=0;for(;d!==s;)w+=n[d++],d=d%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),l-i<t)return;const g=u&&l-u;return g?Math.round(w*1e3/g):void 0}}function un(e,t){let n=0,r=1e3/t,s,o;const i=(l,u=Date.now())=>{n=u,s=null,o&&(clearTimeout(o),o=null),e.apply(null,l)};return[(...l)=>{const u=Date.now(),d=u-n;d>=r?i(l,u):(s=l,o||(o=setTimeout(()=>{o=null,i(s)},r-d)))},()=>s&&i(s)]}const W=(e,t,n=3)=>{let r=0;const s=ln(50,250);return un(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,f=i-r,l=s(f),u=i<=c;r=i;const d={loaded:i,total:c,progress:c?i/c:void 0,bytes:f,rate:l||void 0,estimated:l&&c&&u?(c-i)/l:void 0,event:o,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(d)},n)},Se=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Re=e=>(...t)=>a.asap(()=>e(...t)),fn=T.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,T.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(T.origin),T.navigator&&/(msie|trident)/i.test(T.navigator.userAgent)):()=>!0,dn=T.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];a.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),a.isString(r)&&i.push("path="+r),a.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function pn(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function hn(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Ve(e,t,n){let r=!pn(t);return e&&(r||n==!1)?hn(e,t):t}const Te=e=>e instanceof A?{...e}:e;function L(e,t){t=t||{};const n={};function r(l,u,d,w){return a.isPlainObject(l)&&a.isPlainObject(u)?a.merge.call({caseless:w},l,u):a.isPlainObject(u)?a.merge({},u):a.isArray(u)?u.slice():u}function s(l,u,d,w){if(a.isUndefined(u)){if(!a.isUndefined(l))return r(void 0,l,d,w)}else return r(l,u,d,w)}function o(l,u){if(!a.isUndefined(u))return r(void 0,u)}function i(l,u){if(a.isUndefined(u)){if(!a.isUndefined(l))return r(void 0,l)}else return r(void 0,u)}function c(l,u,d){if(d in t)return r(l,u);if(d in e)return r(void 0,l)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(l,u,d)=>s(Te(l),Te(u),d,!0)};return a.forEach(Object.keys(Object.assign({},e,t)),function(u){const d=f[u]||s,w=d(e[u],t[u],u);a.isUndefined(w)&&d!==c||(n[u]=w)}),n}const Ke=e=>{const t=L({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=t;t.headers=i=A.from(i),t.url=He(Ve(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let f;if(a.isFormData(n)){if(T.hasStandardBrowserEnv||T.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[l,...u]=f?f.split(";").map(d=>d.trim()).filter(Boolean):[];i.setContentType([l||"multipart/form-data",...u].join("; "))}}if(T.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&fn(t.url))){const l=s&&o&&dn.read(o);l&&i.set(s,l)}return t},mn=typeof XMLHttpRequest<"u",yn=mn&&function(e){return new Promise(function(n,r){const s=Ke(e);let o=s.data;const i=A.from(s.headers).normalize();let{responseType:c,onUploadProgress:f,onDownloadProgress:l}=s,u,d,w,g,p;function y(){g&&g(),p&&p(),s.cancelToken&&s.cancelToken.unsubscribe(u),s.signal&&s.signal.removeEventListener("abort",u)}let h=new XMLHttpRequest;h.open(s.method.toUpperCase(),s.url,!0),h.timeout=s.timeout;function E(){if(!h)return;const R=A.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),O={data:!c||c==="text"||c==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:R,config:e,request:h};Je(function(F){n(F),y()},function(F){r(F),y()},O),h=null}"onloadend"in h?h.onloadend=E:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(E)},h.onabort=function(){h&&(r(new m("Request aborted",m.ECONNABORTED,e,h)),h=null)},h.onerror=function(){r(new m("Network Error",m.ERR_NETWORK,e,h)),h=null},h.ontimeout=function(){let P=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const O=s.transitional||Me;s.timeoutErrorMessage&&(P=s.timeoutErrorMessage),r(new m(P,O.clarifyTimeoutError?m.ETIMEDOUT:m.ECONNABORTED,e,h)),h=null},o===void 0&&i.setContentType(null),"setRequestHeader"in h&&a.forEach(i.toJSON(),function(P,O){h.setRequestHeader(O,P)}),a.isUndefined(s.withCredentials)||(h.withCredentials=!!s.withCredentials),c&&c!=="json"&&(h.responseType=s.responseType),l&&([w,p]=W(l,!0),h.addEventListener("progress",w)),f&&h.upload&&([d,g]=W(f),h.upload.addEventListener("progress",d),h.upload.addEventListener("loadend",g)),(s.cancelToken||s.signal)&&(u=R=>{h&&(r(!R||R.type?new q(null,e,h):R),h.abort(),h=null)},s.cancelToken&&s.cancelToken.subscribe(u),s.signal&&(s.signal.aborted?u():s.signal.addEventListener("abort",u)));const S=cn(s.url);if(S&&T.protocols.indexOf(S)===-1){r(new m("Unsupported protocol "+S+":",m.ERR_BAD_REQUEST,e));return}h.send(o||null)})},wn=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(l){if(!s){s=!0,c();const u=l instanceof Error?l:this.reason;r.abort(u instanceof m?u:new q(u instanceof Error?u.message:u))}};let i=t&&setTimeout(()=>{i=null,o(new m(`timeout ${t} of ms exceeded`,m.ETIMEDOUT))},t);const c=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(l=>{l.unsubscribe?l.unsubscribe(o):l.removeEventListener("abort",o)}),e=null)};e.forEach(l=>l.addEventListener("abort",o));const{signal:f}=r;return f.unsubscribe=()=>a.asap(c),f}},bn=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let r=0,s;for(;r<n;)s=r+t,yield e.slice(r,s),r=s},En=async function*(e,t){for await(const n of gn(e))yield*bn(n,t)},gn=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:r}=await t.read();if(n)break;yield r}}finally{await t.cancel()}},Oe=(e,t,n,r)=>{const s=En(e,t);let o=0,i,c=f=>{i||(i=!0,r&&r(f))};return new ReadableStream({async pull(f){try{const{done:l,value:u}=await s.next();if(l){c(),f.close();return}let d=u.byteLength;if(n){let w=o+=d;n(w)}f.enqueue(new Uint8Array(u))}catch(l){throw c(l),l}},cancel(f){return c(f),s.return()}},{highWaterMark:2})},ee=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",ve=ee&&typeof ReadableStream=="function",Sn=ee&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),We=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Rn=ve&&We(()=>{let e=!1;const t=new Request(T.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Ae=64*1024,ce=ve&&We(()=>a.isReadableStream(new Response("").body)),X={stream:ce&&(e=>e.body)};ee&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!X[t]&&(X[t]=a.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new m(`Response type '${t}' is not supported`,m.ERR_NOT_SUPPORT,r)})})})(new Response);const Tn=async e=>{if(e==null)return 0;if(a.isBlob(e))return e.size;if(a.isSpecCompliantForm(e))return(await new Request(T.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(a.isArrayBufferView(e)||a.isArrayBuffer(e))return e.byteLength;if(a.isURLSearchParams(e)&&(e=e+""),a.isString(e))return(await Sn(e)).byteLength},On=async(e,t)=>{const n=a.toFiniteNumber(e.getContentLength());return n??Tn(t)},An=ee&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:c,onUploadProgress:f,responseType:l,headers:u,withCredentials:d="same-origin",fetchOptions:w}=Ke(e);l=l?(l+"").toLowerCase():"text";let g=wn([s,o&&o.toAbortSignal()],i),p;const y=g&&g.unsubscribe&&(()=>{g.unsubscribe()});let h;try{if(f&&Rn&&n!=="get"&&n!=="head"&&(h=await On(u,r))!==0){let O=new Request(t,{method:"POST",body:r,duplex:"half"}),k;if(a.isFormData(r)&&(k=O.headers.get("content-type"))&&u.setContentType(k),O.body){const[F,J]=Se(h,W(Re(f)));r=Oe(O.body,Ae,F,J)}}a.isString(d)||(d=d?"include":"omit");const E="credentials"in Request.prototype;p=new Request(t,{...w,signal:g,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",credentials:E?d:void 0});let S=await fetch(p);const R=ce&&(l==="stream"||l==="response");if(ce&&(c||R&&y)){const O={};["status","statusText","headers"].forEach(me=>{O[me]=S[me]});const k=a.toFiniteNumber(S.headers.get("content-length")),[F,J]=c&&Se(k,W(Re(c),!0))||[];S=new Response(Oe(S.body,Ae,F,()=>{J&&J(),y&&y()}),O)}l=l||"text";let P=await X[a.findKey(X,l)||"text"](S,e);return!R&&y&&y(),await new Promise((O,k)=>{Je(O,k,{data:P,headers:A.from(S.headers),status:S.status,statusText:S.statusText,config:e,request:p})})}catch(E){throw y&&y(),E&&E.name==="TypeError"&&/fetch/i.test(E.message)?Object.assign(new m("Network Error",m.ERR_NETWORK,e,p),{cause:E.cause||E}):m.from(E,E&&E.code,e,p)}}),le={http:It,xhr:yn,fetch:An};a.forEach(le,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const xe=e=>`- ${e}`,xn=e=>a.isFunction(e)||e===null||e===!1,Xe={getAdapter:e=>{e=a.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o<t;o++){n=e[o];let i;if(r=n,!xn(n)&&(r=le[(i=String(n)).toLowerCase()],r===void 0))throw new m(`Unknown adapter '${i}'`);if(r)break;s[i||"#"+o]=r}if(!r){const o=Object.entries(s).map(([c,f])=>`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since :
|
|
4
|
-
`+o.map(
|
|
5
|
-
`):" "+
|
|
6
|
-
`+o):
|
|
1
|
+
"use strict";var st=Object.defineProperty;var ot=(t,e,r)=>e in t?st(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var I=(t,e,r)=>ot(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function De(t,e){return function(){return t.apply(e,arguments)}}const{toString:it}=Object.prototype,{getPrototypeOf:ye}=Object,te=(t=>e=>{const r=it.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),P=t=>(t=t.toLowerCase(),e=>te(e)===t),re=t=>e=>typeof e===t,{isArray:H}=Array,K=re("undefined");function at(t){return t!==null&&!K(t)&&t.constructor!==null&&!K(t.constructor)&&x(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const Le=P("ArrayBuffer");function ct(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&Le(t.buffer),e}const lt=re("string"),x=re("function"),Be=re("number"),ne=t=>t!==null&&typeof t=="object",ut=t=>t===!0||t===!1,G=t=>{if(te(t)!=="object")return!1;const e=ye(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},ft=P("Date"),dt=P("File"),pt=P("Blob"),ht=P("FileList"),mt=t=>ne(t)&&x(t.pipe),wt=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||x(t.append)&&((e=te(t))==="formdata"||e==="object"&&x(t.toString)&&t.toString()==="[object FormData]"))},yt=P("URLSearchParams"),[Et,bt,St,gt]=["ReadableStream","Request","Response","Headers"].map(P),Rt=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function J(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let n,s;if(typeof t!="object"&&(t=[t]),H(t))for(n=0,s=t.length;n<s;n++)e.call(null,t[n],n,t);else{const o=r?Object.getOwnPropertyNames(t):Object.keys(t),i=o.length;let c;for(n=0;n<i;n++)c=o[n],e.call(null,t[c],c,t)}}function Ie(t,e){e=e.toLowerCase();const r=Object.keys(t);let n=r.length,s;for(;n-- >0;)if(s=r[n],e===s.toLowerCase())return s;return null}const q=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,je=t=>!K(t)&&t!==q;function ue(){const{caseless:t}=je(this)&&this||{},e={},r=(n,s)=>{const o=t&&Ie(e,s)||s;G(e[o])&&G(n)?e[o]=ue(e[o],n):G(n)?e[o]=ue({},n):H(n)?e[o]=n.slice():e[o]=n};for(let n=0,s=arguments.length;n<s;n++)arguments[n]&&J(arguments[n],r);return e}const Tt=(t,e,r,{allOwnKeys:n}={})=>(J(e,(s,o)=>{r&&x(s)?t[o]=De(s,r):t[o]=s},{allOwnKeys:n}),t),At=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Ot=(t,e,r,n)=>{t.prototype=Object.create(e.prototype,n),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),r&&Object.assign(t.prototype,r)},Nt=(t,e,r,n)=>{let s,o,i;const c={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),o=s.length;o-- >0;)i=s[o],(!n||n(i,t,e))&&!c[i]&&(e[i]=t[i],c[i]=!0);t=r!==!1&&ye(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},xt=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;const n=t.indexOf(e,r);return n!==-1&&n===r},Ct=t=>{if(!t)return null;if(H(t))return t;let e=t.length;if(!Be(e))return null;const r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},Pt=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&ye(Uint8Array)),kt=(t,e)=>{const n=(t&&t[Symbol.iterator]).call(t);let s;for(;(s=n.next())&&!s.done;){const o=s.value;e.call(t,o[0],o[1])}},Ft=(t,e)=>{let r;const n=[];for(;(r=t.exec(e))!==null;)n.push(r);return n},Ut=P("HTMLFormElement"),_t=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,s){return n.toUpperCase()+s}),ge=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),Dt=P("RegExp"),qe=(t,e)=>{const r=Object.getOwnPropertyDescriptors(t),n={};J(r,(s,o)=>{let i;(i=e(s,o,t))!==!1&&(n[o]=i||s)}),Object.defineProperties(t,n)},Lt=t=>{qe(t,(e,r)=>{if(x(t)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=t[r];if(x(n)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},Bt=(t,e)=>{const r={},n=s=>{s.forEach(o=>{r[o]=!0})};return H(t)?n(t):n(String(t).split(e)),r},It=()=>{},jt=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function qt(t){return!!(t&&x(t.append)&&t[Symbol.toStringTag]==="FormData"&&t[Symbol.iterator])}const zt=t=>{const e=new Array(10),r=(n,s)=>{if(ne(n)){if(e.indexOf(n)>=0)return;if(!("toJSON"in n)){e[s]=n;const o=H(n)?[]:{};return J(n,(i,c)=>{const f=r(i,s+1);!K(f)&&(o[c]=f)}),e[s]=void 0,o}}return n};return r(t,0)},Mt=P("AsyncFunction"),Ht=t=>t&&(ne(t)||x(t))&&x(t.then)&&x(t.catch),ze=((t,e)=>t?setImmediate:e?((r,n)=>(q.addEventListener("message",({source:s,data:o})=>{s===q&&o===r&&n.length&&n.shift()()},!1),s=>{n.push(s),q.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",x(q.postMessage)),vt=typeof queueMicrotask<"u"?queueMicrotask.bind(q):typeof process<"u"&&process.nextTick||ze,a={isArray:H,isArrayBuffer:Le,isBuffer:at,isFormData:wt,isArrayBufferView:ct,isString:lt,isNumber:Be,isBoolean:ut,isObject:ne,isPlainObject:G,isReadableStream:Et,isRequest:bt,isResponse:St,isHeaders:gt,isUndefined:K,isDate:ft,isFile:dt,isBlob:pt,isRegExp:Dt,isFunction:x,isStream:mt,isURLSearchParams:yt,isTypedArray:Pt,isFileList:ht,forEach:J,merge:ue,extend:Tt,trim:Rt,stripBOM:At,inherits:Ot,toFlatObject:Nt,kindOf:te,kindOfTest:P,endsWith:xt,toArray:Ct,forEachEntry:kt,matchAll:Ft,isHTMLForm:Ut,hasOwnProperty:ge,hasOwnProp:ge,reduceDescriptors:qe,freezeMethods:Lt,toObjectSet:Bt,toCamelCase:_t,noop:It,toFiniteNumber:jt,findKey:Ie,global:q,isContextDefined:je,isSpecCompliantForm:qt,toJSONObject:zt,isAsyncFn:Mt,isThenable:Ht,setImmediate:ze,asap:vt};function m(t,e,r,n,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),r&&(this.config=r),n&&(this.request=n),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(m,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const Me=m.prototype,He={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{He[t]={value:t}});Object.defineProperties(m,He);Object.defineProperty(Me,"isAxiosError",{value:!0});m.from=(t,e,r,n,s,o)=>{const i=Object.create(Me);return a.toFlatObject(t,i,function(f){return f!==Error.prototype},c=>c!=="isAxiosError"),m.call(i,t.message,e,r,n,s),i.cause=t,i.name=t.name,o&&Object.assign(i,o),i};const Vt=null;function fe(t){return a.isPlainObject(t)||a.isArray(t)}function ve(t){return a.endsWith(t,"[]")?t.slice(0,-2):t}function Re(t,e,r){return t?t.concat(e).map(function(s,o){return s=ve(s),!r&&o?"["+s+"]":s}).join(r?".":""):e}function $t(t){return a.isArray(t)&&!t.some(fe)}const Kt=a.toFlatObject(a,{},null,function(e){return/^is[A-Z]/.test(e)});function se(t,e,r){if(!a.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,r=a.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,h){return!a.isUndefined(h[w])});const n=r.metaTokens,s=r.visitor||u,o=r.dots,i=r.indexes,f=(r.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(e);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function l(p){if(p===null)return"";if(a.isDate(p))return p.toISOString();if(!f&&a.isBlob(p))throw new m("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(p)||a.isTypedArray(p)?f&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function u(p,w,h){let b=p;if(p&&!h&&typeof p=="object"){if(a.endsWith(w,"{}"))w=n?w:w.slice(0,-2),p=JSON.stringify(p);else if(a.isArray(p)&&$t(p)||(a.isFileList(p)||a.endsWith(w,"[]"))&&(b=a.toArray(p)))return w=ve(w),b.forEach(function(R,U){!(a.isUndefined(R)||R===null)&&e.append(i===!0?Re([w],U,o):i===null?w:w+"[]",l(R))}),!1}return fe(p)?!0:(e.append(Re(h,w,o),l(p)),!1)}const d=[],y=Object.assign(Kt,{defaultVisitor:u,convertValue:l,isVisitable:fe});function S(p,w){if(!a.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+w.join("."));d.push(p),a.forEach(p,function(b,g){(!(a.isUndefined(b)||b===null)&&s.call(e,b,a.isString(g)?g.trim():g,w,y))===!0&&S(b,w?w.concat(g):[g])}),d.pop()}}if(!a.isObject(t))throw new TypeError("data must be an object");return S(t),e}function Te(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(n){return e[n]})}function Ee(t,e){this._pairs=[],t&&se(t,this,e)}const Ve=Ee.prototype;Ve.append=function(e,r){this._pairs.push([e,r])};Ve.toString=function(e){const r=e?function(n){return e.call(this,n,Te)}:Te;return this._pairs.map(function(s){return r(s[0])+"="+r(s[1])},"").join("&")};function Jt(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function $e(t,e,r){if(!e)return t;const n=r&&r.encode||Jt;a.isFunction(r)&&(r={serialize:r});const s=r&&r.serialize;let o;if(s?o=s(e,r):o=a.isURLSearchParams(e)?e.toString():new Ee(e,r).toString(n),o){const i=t.indexOf("#");i!==-1&&(t=t.slice(0,i)),t+=(t.indexOf("?")===-1?"?":"&")+o}return t}class Ae{constructor(){this.handlers=[]}use(e,r,n){return this.handlers.push({fulfilled:e,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){a.forEach(this.handlers,function(n){n!==null&&e(n)})}}const Ke={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Wt=typeof URLSearchParams<"u"?URLSearchParams:Ee,Xt=typeof FormData<"u"?FormData:null,Gt=typeof Blob<"u"?Blob:null,Qt={isBrowser:!0,classes:{URLSearchParams:Wt,FormData:Xt,Blob:Gt},protocols:["http","https","file","blob","url","data"]},be=typeof window<"u"&&typeof document<"u",de=typeof navigator=="object"&&navigator||void 0,Zt=be&&(!de||["ReactNative","NativeScript","NS"].indexOf(de.product)<0),Yt=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",er=be&&window.location.href||"http://localhost",tr=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:be,hasStandardBrowserEnv:Zt,hasStandardBrowserWebWorkerEnv:Yt,navigator:de,origin:er},Symbol.toStringTag,{value:"Module"})),T={...tr,...Qt};function rr(t,e){return se(t,new T.classes.URLSearchParams,Object.assign({visitor:function(r,n,s,o){return T.isNode&&a.isBuffer(r)?(this.append(n,r.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},e))}function nr(t){return a.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function sr(t){const e={},r=Object.keys(t);let n;const s=r.length;let o;for(n=0;n<s;n++)o=r[n],e[o]=t[o];return e}function Je(t){function e(r,n,s,o){let i=r[o++];if(i==="__proto__")return!0;const c=Number.isFinite(+i),f=o>=r.length;return i=!i&&a.isArray(s)?s.length:i,f?(a.hasOwnProp(s,i)?s[i]=[s[i],n]:s[i]=n,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),e(r,n,s[i],o)&&a.isArray(s[i])&&(s[i]=sr(s[i])),!c)}if(a.isFormData(t)&&a.isFunction(t.entries)){const r={};return a.forEachEntry(t,(n,s)=>{e(nr(n),s,r,0)}),r}return null}function or(t,e,r){if(a.isString(t))try{return(e||JSON.parse)(t),a.trim(t)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(t)}const W={transitional:Ke,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){const n=r.getContentType()||"",s=n.indexOf("application/json")>-1,o=a.isObject(e);if(o&&a.isHTMLForm(e)&&(e=new FormData(e)),a.isFormData(e))return s?JSON.stringify(Je(e)):e;if(a.isArrayBuffer(e)||a.isBuffer(e)||a.isStream(e)||a.isFile(e)||a.isBlob(e)||a.isReadableStream(e))return e;if(a.isArrayBufferView(e))return e.buffer;if(a.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let c;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return rr(e,this.formSerializer).toString();if((c=a.isFileList(e))||n.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return se(c?{"files[]":e}:e,f&&new f,this.formSerializer)}}return o||s?(r.setContentType("application/json",!1),or(e)):e}],transformResponse:[function(e){const r=this.transitional||W.transitional,n=r&&r.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(e)||a.isReadableStream(e))return e;if(e&&a.isString(e)&&(n&&!this.responseType||s)){const i=!(r&&r.silentJSONParsing)&&s;try{return JSON.parse(e)}catch(c){if(i)throw c.name==="SyntaxError"?m.from(c,m.ERR_BAD_RESPONSE,this,null,this.response):c}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:T.classes.FormData,Blob:T.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],t=>{W.headers[t]={}});const ir=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),ar=t=>{const e={};let r,n,s;return t&&t.split(`
|
|
2
|
+
`).forEach(function(i){s=i.indexOf(":"),r=i.substring(0,s).trim().toLowerCase(),n=i.substring(s+1).trim(),!(!r||e[r]&&ir[r])&&(r==="set-cookie"?e[r]?e[r].push(n):e[r]=[n]:e[r]=e[r]?e[r]+", "+n:n)}),e},Oe=Symbol("internals");function V(t){return t&&String(t).trim().toLowerCase()}function Q(t){return t===!1||t==null?t:a.isArray(t)?t.map(Q):String(t)}function cr(t){const e=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(t);)e[n[1]]=n[2];return e}const lr=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function ae(t,e,r,n,s){if(a.isFunction(n))return n.call(this,e,r);if(s&&(e=r),!!a.isString(e)){if(a.isString(n))return e.indexOf(n)!==-1;if(a.isRegExp(n))return n.test(e)}}function ur(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,r,n)=>r.toUpperCase()+n)}function fr(t,e){const r=a.toCamelCase(" "+e);["get","set","has"].forEach(n=>{Object.defineProperty(t,n+r,{value:function(s,o,i){return this[n].call(this,e,s,o,i)},configurable:!0})})}let N=class{constructor(e){e&&this.set(e)}set(e,r,n){const s=this;function o(c,f,l){const u=V(f);if(!u)throw new Error("header name must be a non-empty string");const d=a.findKey(s,u);(!d||s[d]===void 0||l===!0||l===void 0&&s[d]!==!1)&&(s[d||f]=Q(c))}const i=(c,f)=>a.forEach(c,(l,u)=>o(l,u,f));if(a.isPlainObject(e)||e instanceof this.constructor)i(e,r);else if(a.isString(e)&&(e=e.trim())&&!lr(e))i(ar(e),r);else if(a.isHeaders(e))for(const[c,f]of e.entries())o(f,c,n);else e!=null&&o(r,e,n);return this}get(e,r){if(e=V(e),e){const n=a.findKey(this,e);if(n){const s=this[n];if(!r)return s;if(r===!0)return cr(s);if(a.isFunction(r))return r.call(this,s,n);if(a.isRegExp(r))return r.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,r){if(e=V(e),e){const n=a.findKey(this,e);return!!(n&&this[n]!==void 0&&(!r||ae(this,this[n],n,r)))}return!1}delete(e,r){const n=this;let s=!1;function o(i){if(i=V(i),i){const c=a.findKey(n,i);c&&(!r||ae(n,n[c],c,r))&&(delete n[c],s=!0)}}return a.isArray(e)?e.forEach(o):o(e),s}clear(e){const r=Object.keys(this);let n=r.length,s=!1;for(;n--;){const o=r[n];(!e||ae(this,this[o],o,e,!0))&&(delete this[o],s=!0)}return s}normalize(e){const r=this,n={};return a.forEach(this,(s,o)=>{const i=a.findKey(n,o);if(i){r[i]=Q(s),delete r[o];return}const c=e?ur(o):String(o).trim();c!==o&&delete r[o],r[c]=Q(s),n[c]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const r=Object.create(null);return a.forEach(this,(n,s)=>{n!=null&&n!==!1&&(r[s]=e&&a.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,r])=>e+": "+r).join(`
|
|
3
|
+
`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){const n=new this(e);return r.forEach(s=>n.set(s)),n}static accessor(e){const n=(this[Oe]=this[Oe]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=V(i);n[c]||(fr(s,i),n[c]=!0)}return a.isArray(e)?e.forEach(o):o(e),this}};N.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(N.prototype,({value:t},e)=>{let r=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(n){this[r]=n}}});a.freezeMethods(N);function ce(t,e){const r=this||W,n=e||r,s=N.from(n.headers);let o=n.data;return a.forEach(t,function(c){o=c.call(r,o,s.normalize(),e?e.status:void 0)}),s.normalize(),o}function We(t){return!!(t&&t.__CANCEL__)}function v(t,e,r){m.call(this,t??"canceled",m.ERR_CANCELED,e,r),this.name="CanceledError"}a.inherits(v,m,{__CANCEL__:!0});function Xe(t,e,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?t(r):e(new m("Request failed with status code "+r.status,[m.ERR_BAD_REQUEST,m.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function dr(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function pr(t,e){t=t||10;const r=new Array(t),n=new Array(t);let s=0,o=0,i;return e=e!==void 0?e:1e3,function(f){const l=Date.now(),u=n[o];i||(i=l),r[s]=f,n[s]=l;let d=o,y=0;for(;d!==s;)y+=r[d++],d=d%t;if(s=(s+1)%t,s===o&&(o=(o+1)%t),l-i<e)return;const S=u&&l-u;return S?Math.round(y*1e3/S):void 0}}function hr(t,e){let r=0,n=1e3/e,s,o;const i=(l,u=Date.now())=>{r=u,s=null,o&&(clearTimeout(o),o=null),t.apply(null,l)};return[(...l)=>{const u=Date.now(),d=u-r;d>=n?i(l,u):(s=l,o||(o=setTimeout(()=>{o=null,i(s)},n-d)))},()=>s&&i(s)]}const Y=(t,e,r=3)=>{let n=0;const s=pr(50,250);return hr(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,f=i-n,l=s(f),u=i<=c;n=i;const d={loaded:i,total:c,progress:c?i/c:void 0,bytes:f,rate:l||void 0,estimated:l&&c&&u?(c-i)/l:void 0,event:o,lengthComputable:c!=null,[e?"download":"upload"]:!0};t(d)},r)},Ne=(t,e)=>{const r=t!=null;return[n=>e[0]({lengthComputable:r,total:t,loaded:n}),e[1]]},xe=t=>(...e)=>a.asap(()=>t(...e)),mr=T.hasStandardBrowserEnv?((t,e)=>r=>(r=new URL(r,T.origin),t.protocol===r.protocol&&t.host===r.host&&(e||t.port===r.port)))(new URL(T.origin),T.navigator&&/(msie|trident)/i.test(T.navigator.userAgent)):()=>!0,wr=T.hasStandardBrowserEnv?{write(t,e,r,n,s,o){const i=[t+"="+encodeURIComponent(e)];a.isNumber(r)&&i.push("expires="+new Date(r).toGMTString()),a.isString(n)&&i.push("path="+n),a.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function yr(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Er(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function Ge(t,e,r){let n=!yr(e);return t&&(n||r==!1)?Er(t,e):e}const Ce=t=>t instanceof N?{...t}:t;function M(t,e){e=e||{};const r={};function n(l,u,d,y){return a.isPlainObject(l)&&a.isPlainObject(u)?a.merge.call({caseless:y},l,u):a.isPlainObject(u)?a.merge({},u):a.isArray(u)?u.slice():u}function s(l,u,d,y){if(a.isUndefined(u)){if(!a.isUndefined(l))return n(void 0,l,d,y)}else return n(l,u,d,y)}function o(l,u){if(!a.isUndefined(u))return n(void 0,u)}function i(l,u){if(a.isUndefined(u)){if(!a.isUndefined(l))return n(void 0,l)}else return n(void 0,u)}function c(l,u,d){if(d in e)return n(l,u);if(d in t)return n(void 0,l)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(l,u,d)=>s(Ce(l),Ce(u),d,!0)};return a.forEach(Object.keys(Object.assign({},t,e)),function(u){const d=f[u]||s,y=d(t[u],e[u],u);a.isUndefined(y)&&d!==c||(r[u]=y)}),r}const Qe=t=>{const e=M({},t);let{data:r,withXSRFToken:n,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=e;e.headers=i=N.from(i),e.url=$e(Ge(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let f;if(a.isFormData(r)){if(T.hasStandardBrowserEnv||T.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[l,...u]=f?f.split(";").map(d=>d.trim()).filter(Boolean):[];i.setContentType([l||"multipart/form-data",...u].join("; "))}}if(T.hasStandardBrowserEnv&&(n&&a.isFunction(n)&&(n=n(e)),n||n!==!1&&mr(e.url))){const l=s&&o&&wr.read(o);l&&i.set(s,l)}return e},br=typeof XMLHttpRequest<"u",Sr=br&&function(t){return new Promise(function(r,n){const s=Qe(t);let o=s.data;const i=N.from(s.headers).normalize();let{responseType:c,onUploadProgress:f,onDownloadProgress:l}=s,u,d,y,S,p;function w(){S&&S(),p&&p(),s.cancelToken&&s.cancelToken.unsubscribe(u),s.signal&&s.signal.removeEventListener("abort",u)}let h=new XMLHttpRequest;h.open(s.method.toUpperCase(),s.url,!0),h.timeout=s.timeout;function b(){if(!h)return;const R=N.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),A={data:!c||c==="text"||c==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:R,config:t,request:h};Xe(function(B){r(B),w()},function(B){n(B),w()},A),h=null}"onloadend"in h?h.onloadend=b:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(b)},h.onabort=function(){h&&(n(new m("Request aborted",m.ECONNABORTED,t,h)),h=null)},h.onerror=function(){n(new m("Network Error",m.ERR_NETWORK,t,h)),h=null},h.ontimeout=function(){let U=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const A=s.transitional||Ke;s.timeoutErrorMessage&&(U=s.timeoutErrorMessage),n(new m(U,A.clarifyTimeoutError?m.ETIMEDOUT:m.ECONNABORTED,t,h)),h=null},o===void 0&&i.setContentType(null),"setRequestHeader"in h&&a.forEach(i.toJSON(),function(U,A){h.setRequestHeader(A,U)}),a.isUndefined(s.withCredentials)||(h.withCredentials=!!s.withCredentials),c&&c!=="json"&&(h.responseType=s.responseType),l&&([y,p]=Y(l,!0),h.addEventListener("progress",y)),f&&h.upload&&([d,S]=Y(f),h.upload.addEventListener("progress",d),h.upload.addEventListener("loadend",S)),(s.cancelToken||s.signal)&&(u=R=>{h&&(n(!R||R.type?new v(null,t,h):R),h.abort(),h=null)},s.cancelToken&&s.cancelToken.subscribe(u),s.signal&&(s.signal.aborted?u():s.signal.addEventListener("abort",u)));const g=dr(s.url);if(g&&T.protocols.indexOf(g)===-1){n(new m("Unsupported protocol "+g+":",m.ERR_BAD_REQUEST,t));return}h.send(o||null)})},gr=(t,e)=>{const{length:r}=t=t?t.filter(Boolean):[];if(e||r){let n=new AbortController,s;const o=function(l){if(!s){s=!0,c();const u=l instanceof Error?l:this.reason;n.abort(u instanceof m?u:new v(u instanceof Error?u.message:u))}};let i=e&&setTimeout(()=>{i=null,o(new m(`timeout ${e} of ms exceeded`,m.ETIMEDOUT))},e);const c=()=>{t&&(i&&clearTimeout(i),i=null,t.forEach(l=>{l.unsubscribe?l.unsubscribe(o):l.removeEventListener("abort",o)}),t=null)};t.forEach(l=>l.addEventListener("abort",o));const{signal:f}=n;return f.unsubscribe=()=>a.asap(c),f}},Rr=function*(t,e){let r=t.byteLength;if(r<e){yield t;return}let n=0,s;for(;n<r;)s=n+e,yield t.slice(n,s),n=s},Tr=async function*(t,e){for await(const r of Ar(t))yield*Rr(r,e)},Ar=async function*(t){if(t[Symbol.asyncIterator]){yield*t;return}const e=t.getReader();try{for(;;){const{done:r,value:n}=await e.read();if(r)break;yield n}}finally{await e.cancel()}},Pe=(t,e,r,n)=>{const s=Tr(t,e);let o=0,i,c=f=>{i||(i=!0,n&&n(f))};return new ReadableStream({async pull(f){try{const{done:l,value:u}=await s.next();if(l){c(),f.close();return}let d=u.byteLength;if(r){let y=o+=d;r(y)}f.enqueue(new Uint8Array(u))}catch(l){throw c(l),l}},cancel(f){return c(f),s.return()}},{highWaterMark:2})},oe=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",Ze=oe&&typeof ReadableStream=="function",Or=oe&&(typeof TextEncoder=="function"?(t=>e=>t.encode(e))(new TextEncoder):async t=>new Uint8Array(await new Response(t).arrayBuffer())),Ye=(t,...e)=>{try{return!!t(...e)}catch{return!1}},Nr=Ze&&Ye(()=>{let t=!1;const e=new Request(T.origin,{body:new ReadableStream,method:"POST",get duplex(){return t=!0,"half"}}).headers.has("Content-Type");return t&&!e}),ke=64*1024,pe=Ze&&Ye(()=>a.isReadableStream(new Response("").body)),ee={stream:pe&&(t=>t.body)};oe&&(t=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!ee[e]&&(ee[e]=a.isFunction(t[e])?r=>r[e]():(r,n)=>{throw new m(`Response type '${e}' is not supported`,m.ERR_NOT_SUPPORT,n)})})})(new Response);const xr=async t=>{if(t==null)return 0;if(a.isBlob(t))return t.size;if(a.isSpecCompliantForm(t))return(await new Request(T.origin,{method:"POST",body:t}).arrayBuffer()).byteLength;if(a.isArrayBufferView(t)||a.isArrayBuffer(t))return t.byteLength;if(a.isURLSearchParams(t)&&(t=t+""),a.isString(t))return(await Or(t)).byteLength},Cr=async(t,e)=>{const r=a.toFiniteNumber(t.getContentLength());return r??xr(e)},Pr=oe&&(async t=>{let{url:e,method:r,data:n,signal:s,cancelToken:o,timeout:i,onDownloadProgress:c,onUploadProgress:f,responseType:l,headers:u,withCredentials:d="same-origin",fetchOptions:y}=Qe(t);l=l?(l+"").toLowerCase():"text";let S=gr([s,o&&o.toAbortSignal()],i),p;const w=S&&S.unsubscribe&&(()=>{S.unsubscribe()});let h;try{if(f&&Nr&&r!=="get"&&r!=="head"&&(h=await Cr(u,n))!==0){let A=new Request(e,{method:"POST",body:n,duplex:"half"}),L;if(a.isFormData(n)&&(L=A.headers.get("content-type"))&&u.setContentType(L),A.body){const[B,X]=Ne(h,Y(xe(f)));n=Pe(A.body,ke,B,X)}}a.isString(d)||(d=d?"include":"omit");const b="credentials"in Request.prototype;p=new Request(e,{...y,signal:S,method:r.toUpperCase(),headers:u.normalize().toJSON(),body:n,duplex:"half",credentials:b?d:void 0});let g=await fetch(p);const R=pe&&(l==="stream"||l==="response");if(pe&&(c||R&&w)){const A={};["status","statusText","headers"].forEach(Se=>{A[Se]=g[Se]});const L=a.toFiniteNumber(g.headers.get("content-length")),[B,X]=c&&Ne(L,Y(xe(c),!0))||[];g=new Response(Pe(g.body,ke,B,()=>{X&&X(),w&&w()}),A)}l=l||"text";let U=await ee[a.findKey(ee,l)||"text"](g,t);return!R&&w&&w(),await new Promise((A,L)=>{Xe(A,L,{data:U,headers:N.from(g.headers),status:g.status,statusText:g.statusText,config:t,request:p})})}catch(b){throw w&&w(),b&&b.name==="TypeError"&&/fetch/i.test(b.message)?Object.assign(new m("Network Error",m.ERR_NETWORK,t,p),{cause:b.cause||b}):m.from(b,b&&b.code,t,p)}}),he={http:Vt,xhr:Sr,fetch:Pr};a.forEach(he,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const Fe=t=>`- ${t}`,kr=t=>a.isFunction(t)||t===null||t===!1,et={getAdapter:t=>{t=a.isArray(t)?t:[t];const{length:e}=t;let r,n;const s={};for(let o=0;o<e;o++){r=t[o];let i;if(n=r,!kr(r)&&(n=he[(i=String(r)).toLowerCase()],n===void 0))throw new m(`Unknown adapter '${i}'`);if(n)break;s[i||"#"+o]=n}if(!n){const o=Object.entries(s).map(([c,f])=>`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=e?o.length>1?`since :
|
|
4
|
+
`+o.map(Fe).join(`
|
|
5
|
+
`):" "+Fe(o[0]):"as no adapter specified";throw new m("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return n},adapters:he};function le(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new v(null,t)}function Ue(t){return le(t),t.headers=N.from(t.headers),t.data=ce.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),et.getAdapter(t.adapter||W.adapter)(t).then(function(n){return le(t),n.data=ce.call(t,t.transformResponse,n),n.headers=N.from(n.headers),n},function(n){return We(n)||(le(t),n&&n.response&&(n.response.data=ce.call(t,t.transformResponse,n.response),n.response.headers=N.from(n.response.headers))),Promise.reject(n)})}const tt="1.8.4",ie={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{ie[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}});const _e={};ie.transitional=function(e,r,n){function s(o,i){return"[Axios v"+tt+"] Transitional option '"+o+"'"+i+(n?". "+n:"")}return(o,i,c)=>{if(e===!1)throw new m(s(i," has been removed"+(r?" in "+r:"")),m.ERR_DEPRECATED);return r&&!_e[i]&&(_e[i]=!0,console.warn(s(i," has been deprecated since v"+r+" and will be removed in the near future"))),e?e(o,i,c):!0}};ie.spelling=function(e){return(r,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};function Fr(t,e,r){if(typeof t!="object")throw new m("options must be an object",m.ERR_BAD_OPTION_VALUE);const n=Object.keys(t);let s=n.length;for(;s-- >0;){const o=n[s],i=e[o];if(i){const c=t[o],f=c===void 0||i(c,o,t);if(f!==!0)throw new m("option "+o+" must be "+f,m.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new m("Unknown option "+o,m.ERR_BAD_OPTION)}}const Z={assertOptions:Fr,validators:ie},k=Z.validators;let z=class{constructor(e){this.defaults=e,this.interceptors={request:new Ae,response:new Ae}}async request(e,r){try{return await this._request(e,r)}catch(n){if(n instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{n.stack?o&&!String(n.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(n.stack+=`
|
|
6
|
+
`+o):n.stack=o}catch{}}throw n}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=M(this.defaults,r);const{transitional:n,paramsSerializer:s,headers:o}=r;n!==void 0&&Z.assertOptions(n,{silentJSONParsing:k.transitional(k.boolean),forcedJSONParsing:k.transitional(k.boolean),clarifyTimeoutError:k.transitional(k.boolean)},!1),s!=null&&(a.isFunction(s)?r.paramsSerializer={serialize:s}:Z.assertOptions(s,{encode:k.function,serialize:k.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Z.assertOptions(r,{baseUrl:k.spelling("baseURL"),withXsrfToken:k.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[r.method]);o&&a.forEach(["delete","get","head","post","put","patch","common"],p=>{delete o[p]}),r.headers=N.concat(i,o);const c=[];let f=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(r)===!1||(f=f&&w.synchronous,c.unshift(w.fulfilled,w.rejected))});const l=[];this.interceptors.response.forEach(function(w){l.push(w.fulfilled,w.rejected)});let u,d=0,y;if(!f){const p=[Ue.bind(this),void 0];for(p.unshift.apply(p,c),p.push.apply(p,l),y=p.length,u=Promise.resolve(r);d<y;)u=u.then(p[d++],p[d++]);return u}y=c.length;let S=r;for(d=0;d<y;){const p=c[d++],w=c[d++];try{S=p(S)}catch(h){w.call(this,h);break}}try{u=Ue.call(this,S)}catch(p){return Promise.reject(p)}for(d=0,y=l.length;d<y;)u=u.then(l[d++],l[d++]);return u}getUri(e){e=M(this.defaults,e);const r=Ge(e.baseURL,e.url,e.allowAbsoluteUrls);return $e(r,e.params,e.paramsSerializer)}};a.forEach(["delete","get","head","options"],function(e){z.prototype[e]=function(r,n){return this.request(M(n||{},{method:e,url:r,data:(n||{}).data}))}});a.forEach(["post","put","patch"],function(e){function r(n){return function(o,i,c){return this.request(M(c||{},{method:e,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:i}))}}z.prototype[e]=r(),z.prototype[e+"Form"]=r(!0)});let Ur=class rt{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(o){r=o});const n=this;this.promise.then(s=>{if(!n._listeners)return;let o=n._listeners.length;for(;o-- >0;)n._listeners[o](s);n._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{n.subscribe(c),o=c}).then(s);return i.cancel=function(){n.unsubscribe(o)},i},e(function(o,i,c){n.reason||(n.reason=new v(o,i,c),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const e=new AbortController,r=n=>{e.abort(n)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new rt(function(s){e=s}),cancel:e}}};function _r(t){return function(r){return t.apply(null,r)}}function Dr(t){return a.isObject(t)&&t.isAxiosError===!0}const me={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(me).forEach(([t,e])=>{me[e]=t});function nt(t){const e=new z(t),r=De(z.prototype.request,e);return a.extend(r,z.prototype,e,{allOwnKeys:!0}),a.extend(r,e,null,{allOwnKeys:!0}),r.create=function(s){return nt(M(t,s))},r}const E=nt(W);E.Axios=z;E.CanceledError=v;E.CancelToken=Ur;E.isCancel=We;E.VERSION=tt;E.toFormData=se;E.AxiosError=m;E.Cancel=E.CanceledError;E.all=function(e){return Promise.all(e)};E.spread=_r;E.isAxiosError=Dr;E.mergeConfig=M;E.AxiosHeaders=N;E.formToJSON=t=>Je(a.isHTMLForm(t)?new FormData(t):t);E.getAdapter=et.getAdapter;E.HttpStatusCode=me;E.default=E;const{Axios:Kr,AxiosError:Jr,CanceledError:Wr,isCancel:Xr,CancelToken:Gr,VERSION:Qr,all:Zr,Cancel:Yr,isAxiosError:en,spread:tn,toFormData:rn,AxiosHeaders:nn,HttpStatusCode:sn,formToJSON:on,getAdapter:an,mergeConfig:cn}=E;class D extends Error{constructor(e){super(e)}}class Lr extends D{constructor(e){super(e)}}class Br extends D{constructor(e){super(e)}}class Ir extends D{constructor(e){super(e)}}class jr extends D{constructor(e){super(e)}}class qr extends D{constructor(e){super(e)}}class zr extends D{constructor(e){super(e)}}class Mr extends D{constructor(e){super(e)}}class Hr extends D{constructor(e){super(e)}}const _={NotInitializedError:Lr,EmptyVideoError:Br,VideoTypeError:Ir,InvalidUsernameError:jr,InvalidPasswordError:qr,NoScansAvailableError:zr,InvalidAccessTokenError:Mr,NoScanDataError:Hr},C={NotInitializedError:new _.NotInitializedError("Nervoscan Client not initialized!"),EmptyVideoError:new _.EmptyVideoError("Video is empty!"),VideoTypeError:new _.VideoTypeError("Video is not a Blob!"),InvalidUsernameError:new _.InvalidUsernameError("Invalid username!"),InvalidPasswordError:new _.InvalidPasswordError("Invalid password!"),NoScansAvailableError:new _.NoScansAvailableError("No scans available, Please purchase a plan!"),InvalidAccessTokenError:new _.InvalidAccessTokenError("Invalid access token!"),NoScanDataError:new _.NoScanDataError("No scan data found!")},F=class F{constructor(){}static getInstance(){return F.instance||(F.instance=new F),F.instance}static throwKnownError(e){throw e}static throwUnknownError(e){throw e}static handleErrorResponse(e){var r,n,s,o,i,c,f,l,u;((s=(n=(r=e.response)==null?void 0:r.data)==null?void 0:n.error)==null?void 0:s.code)==="INVALID_USERNAME"?F.throwKnownError(C.InvalidUsernameError):((c=(i=(o=e.response)==null?void 0:o.data)==null?void 0:i.error)==null?void 0:c.code)==="INVALID_PASSWORD"?F.throwKnownError(C.InvalidPasswordError):((u=(l=(f=e.response)==null?void 0:f.data)==null?void 0:l.error)==null?void 0:u.code)==="NO_SCANS_AVAILABLE"&&F.throwKnownError(C.NoScansAvailableError)}};I(F,"instance");let O=F;const $="http://localhost:5001",j=class j{constructor(){I(this,"username");I(this,"password");I(this,"initialized",!1);I(this,"accessToken")}static getInstance(){return j.instance||(j.instance=new j),j.instance}initialize(e,r){this.initialized=!0,this.username=e,this.password=r}async getToken(){try{const r=(await E.post($.concat("/clientlogin"),{username:this.username,password:this.password})).data.access_token;return localStorage.setItem("accessToken",r),r}catch(e){O.handleErrorResponse(e)}}async getAPIKey(e){e||O.throwKnownError(C.InvalidAccessTokenError);try{return(await E.post($.concat("/clientgeturl"),{host_name:"www.nervoscan.com"},{headers:{Authorization:`Bearer ${e}`}})).data.url.split("?api_key=")[1]}catch(r){O.handleErrorResponse(r)}}async uploadVideoToServer(e,r,n){(!r||!n)&&O.throwKnownError(C.InvalidAccessTokenError);try{const s=new FormData;return s.append("file",e,"recording.webm"),s.append("data",JSON.stringify({uuid:n,meta_data:{}})),(await E.post($.concat("/submitscan"),s,{headers:{"Content-Type":"multipart/form-data",Authorization:`Bearer ${r}`}})).data}catch(s){throw console.error("Error uploading video:",s),s.response?(console.error("Error response:",s.response.data),console.error("Error status:",s.response.status),console.error("Error headers:",s.response.headers)):s.request?console.error("Error request:",s.request):console.error("Error message:",s.message),s}}async uploadVideo(e){this.initialized||O.throwKnownError(C.NotInitializedError),e instanceof Blob||O.throwKnownError(C.VideoTypeError),(e===null||e.size===0)&&O.throwKnownError(C.EmptyVideoError);const r=await this.getToken(),n=await this.getAPIKey(r);return this.uploadVideoToServer(e,r,n),n}async checkResults(e){this.initialized||O.throwKnownError(C.NotInitializedError);try{this.accessToken||(this.accessToken=await this.getToken());const s=(await E.post($.concat("/check"),{api_key:e},{headers:{Authorization:`Bearer ${this.accessToken}`}})).data.job_status;return s==="Completed"||s==="Failed"?s:"Pending"}catch(r){O.handleErrorResponse(r)}}async getResults(e){var r;this.initialized||O.throwKnownError(C.NotInitializedError),this.accessToken||(this.accessToken=await this.getToken());try{const n=await E.post($.concat("/getcustomerinfo"),{mode:"selection",api_keys:[e]},{headers:{Authorization:`Bearer ${this.accessToken}`}});return((r=n.data)==null?void 0:r.success)===!1&&O.throwKnownError(C.NoScanDataError),n.data}catch(n){console.error("Error getting results:",n),O.handleErrorResponse(n)}}};I(j,"instance");let we=j;exports.Client=we;exports.Errors=_;exports.NervoscanError=D;
|