diff --git a/.eslintrc.js b/.eslintrc.js
index 3398447..044fb21 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,15 +1,9 @@
module.exports = {
extends: [
- 'react-app',
'prettier/@typescript-eslint',
'plugin:prettier/recommended',
],
- settings: {
- react: {
- version: '999.999.999',
- },
- },
rules: {
- 'prettier/prettier': 0,
+ 'prettier/prettier': "error",
},
};
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 3357683..e71d6d2 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -7,7 +7,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
- node: ['16.x', '18.x']
+ node: ["16.x", "18.x", "20.x"]
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
diff --git a/.prettierrc.json b/.prettierrc.json
index a28de9c..db17464 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -1,5 +1,4 @@
{
"trailingComma": "all",
- "arrowParens": "always",
- "tabWidth": 4
+ "arrowParens": "always"
}
\ No newline at end of file
diff --git a/README.md b/README.md
index a67d2a7..67a8c5c 100644
--- a/README.md
+++ b/README.md
@@ -47,67 +47,73 @@ Please open an issue for future requests.
[![NPM](https://nodei.co/npm/axios-multi-api.png)](https://npmjs.org/package/axios-multi-api)
-Using npm:
+Please mind that you need to install the latest axios separately.
+
+Using NPM:
```bash
-npm install axios-multi-api
+npm install axios axios-multi-api
```
Using yarn:
```bash
-yarn add axios-multi-api
+yarn add axios axios-multi-api
```
## Usage
```typescript
+import axios from 'axios';
import { createApiFetcher } from 'axios-multi-api';
const api = createApiFetcher({
- apiUrl: 'https://example.com/api',
- endpoints: {
- getUserDetails: {
- method: 'get',
- url: '/user-details',
- },
-
- // No need to specify method: 'get' for GET requests
- getPosts: {
- url: '/posts/:subject',
- },
-
- updateUserDetails: {
- method: 'post',
- url: '/user-details/update/:userId',
- },
+ axios,
+ apiUrl: 'https://example.com/api',
+ endpoints: {
+ getUserDetails: {
+ method: 'get',
+ url: '/user-details',
+ },
- // ...
- // You can add many more endpoints & keep the codebase clean
+ // No need to specify method: 'get' for GET requests
+ getPosts: {
+ url: '/posts/:subject',
},
- onError(error) {
- console.log('Request failed', error);
+
+ updateUserDetails: {
+ method: 'post',
+ url: '/user-details/update/:userId',
},
- // Optional: default headers (axios config is supported)
- headers: {
- 'my-auth-key': 'example-auth-key-32rjjfa',
- }
+
+ // ...
+ // You can add many more endpoints & keep the codebase clean
+ },
+ onError(error) {
+ console.log('Request failed', error);
+ },
+ // Optional: default headers (axios config is supported)
+ headers: {
+ 'my-auth-key': 'example-auth-key-32rjjfa',
+ },
});
// Fetch user data - "response" will return data directly
// GET to: http://example.com/api/user-details?userId=1&ratings[]=1&ratings[]=2
-const response = await api.getUserDetails({ userId: 1, ratings: [1,2] });
+const response = await api.getUserDetails({ userId: 1, ratings: [1, 2] });
// Fetch posts - "response" will return data directly
// GET to: http://example.com/api/posts/myTestSubject?additionalInfo=something
-const response = await api.getPosts({ additionalInfo: 'something' }, {subject: 'myTestSubject'});
+const response = await api.getPosts(
+ { additionalInfo: 'something' },
+ { subject: 'myTestSubject' }
+);
// Send POST request to update userId "1"
await api.updateUserDetails({ name: 'Mark' }, { userId: 1 });
// Send POST request to update array of user ratings for userId "1"
await api.updateUserDetails({ name: 'Mark', ratings: [1, 2] }, { userId: 1 });
-
```
In the example above we fetch data from an API for user with an ID of 1. We also update user's name to Mark. If you prefer OOP you can import `ApiHandler` and initialize the handler using `new ApiHandler()` instead.
@@ -118,19 +124,21 @@ You could use [React Query](https://react-query-v3.tanstack.com/guides/queries)
```typescript
// api/index.ts
+import axios from 'axios';
import { createApiFetcher } from 'axios-multi-api';
const api = createApiFetcher({
- apiUrl: 'https://example.com/api',
- strategy: 'reject',
- endpoints: {
- getProfile: {
- url: '/profile/:id',
- },
- },
- onError(error) {
- console.log('Request failed', error);
+ axios,
+ apiUrl: 'https://example.com/api',
+ strategy: 'reject',
+ endpoints: {
+ getProfile: {
+ url: '/profile/:id',
},
+ },
+ onError(error) {
+ console.log('Request failed', error);
+ },
});
export default api;
@@ -145,9 +153,8 @@ export const useProfile = ({ id }) => {
initialDataUpdatedAt: Date.now(),
enabled: id > 0,
refetchOnReconnect: true,
- })
-}
-
+ });
+};
```
## API methods
@@ -178,31 +185,31 @@ When API handler is firstly initialized, a new Axios instance is created. You ca
Global settings are passed to `createApiFetcher()` function. You can pass all [Axios Request Config](https://github.com/axios/axios#request-config). Additional options are listed below.
-| Option | Type | Default | Description |
-| ------------- | ------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| apiUrl | string | | Your API base url. |
-| endpoints | object | | List of your endpoints. Check [Per Endpoint Settings](#per-endpoint-settings) for options. |
-| strategy | string | `reject` | Error handling strategies - basically what to return when an error occurs. It can be a default data, promise can be hanged (nothing would be returned) or rejected so to use try/catch. Available: `silent`, `reject`, `defaultResponse`
`silent` can be used for a requests that are dispatched within asynchronous wrapper functions. If a request fails, promise will silently hang and no action will be performed. It will never be resolved or rejected when there is an error. Please remember that this is not what Promises were made for, however if used properly it saves developers from try/catch or additional response data checks everywhere. You can use is in combination with `onError` so to handle errors globally.
`reject` will simply reject the promise. Global error handling will be triggered right before the rejection. You will need to remember to set try/catch per each request to catch exceptions properly.
`defaultResponse` will return default response specified in either global `defaultResponse` or per endpoint `defaultResponse` setting. Promise will not be rejected! Data from default response will be returned instead. It could be used together with object destructuring by setting `defaultResponse: {}` so to provide a responsible defaults. |
-| cancellable | boolean | `false` | If set to `true` any previously dispatched requests to same url & of method will be cancelled, if a successive request is made meanwhile. This let's you avoid unnecessary requests to the backend. |
-| flattenResponse | boolean | `true` | Flattens nested response.data so you can avoid writing `response.data.data` and obtain response directly. Response is flattened whenever there is a "data" within response "data", and no other object properties set. |
-| defaultResponse | any | `null` | Default response when there is no data or when endpoint fails depending on the chosen `strategy` |
-| timeout | int | `30000` | You can set a timeout in milliseconds. |
-| logger | object | `console` | You can additionally specify logger object with your custom logger to automatically log the errors to the console. It should contain at least `error` and `warn` functions. `console.log` is used by default. |
-| onError | function | | You can specify a function or class that will be triggered when an endpoint fails. If it's a class it should expose a `process` method. Axios Error Object will be sent as a first argument of it. |
+| Option | Type | Default | Description |
+| --------------- | -------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| apiUrl | string | | Your API base url. |
+| endpoints | object | | List of your endpoints. Check [Per Endpoint Settings](#per-endpoint-settings) for options. |
+| strategy | string | `reject` | Error handling strategies - basically what to return when an error occurs. It can be a default data, promise can be hanged (nothing would be returned) or rejected so to use try/catch. Available: `silent`, `reject`, `defaultResponse`
`silent` can be used for a requests that are dispatched within asynchronous wrapper functions. If a request fails, promise will silently hang and no action will be performed. It will never be resolved or rejected when there is an error. Please remember that this is not what Promises were made for, however if used properly it saves developers from try/catch or additional response data checks everywhere. You can use is in combination with `onError` so to handle errors globally.
`reject` will simply reject the promise. Global error handling will be triggered right before the rejection. You will need to remember to set try/catch per each request to catch exceptions properly.
`defaultResponse` will return default response specified in either global `defaultResponse` or per endpoint `defaultResponse` setting. Promise will not be rejected! Data from default response will be returned instead. It could be used together with object destructuring by setting `defaultResponse: {}` so to provide a responsible defaults. |
+| cancellable | boolean | `false` | If set to `true` any previously dispatched requests to same url & of method will be cancelled, if a successive request is made meanwhile. This let's you avoid unnecessary requests to the backend. |
+| flattenResponse | boolean | `true` | Flattens nested response.data so you can avoid writing `response.data.data` and obtain response directly. Response is flattened whenever there is a "data" within response "data", and no other object properties set. |
+| defaultResponse | any | `null` | Default response when there is no data or when endpoint fails depending on the chosen `strategy` |
+| timeout | int | `30000` | You can set a timeout in milliseconds. |
+| logger | object | `console` | You can additionally specify logger object with your custom logger to automatically log the errors to the console. It should contain at least `error` and `warn` functions. `console.log` is used by default. |
+| onError | function | | You can specify a function or class that will be triggered when an endpoint fails. If it's a class it should expose a `process` method. Axios Error Object will be sent as a first argument of it. |
## Per Endpoint Settings
Each endpoint in `endpoints` is an object that accepts properties below. You can also pass these options as a 3rd argument when calling an endpoint so to have a more granular control.
-| Option | Type | Default | Description |
-| ------ | ------ | ------- | ------------------ |
-| method | string | | Default request method e.g. GET, POST, DELETE, PUT etc. |
-| url | string | | Url path e.g. /user-details/get |
-| cancellable | boolean | `false` | Whether previous requests should be automatically cancelled. See global settings for more info. |
-| rejectCancelled | boolean | `false` | If `true` and request is set to `cancellable`, a cancelled request promise will be rejected. By default instead of rejecting the promise, `defaultResponse` from global options is returned. |
-| defaultResponse | any | `null` | Default response when there is no data or when endpoint fails depending on a chosen `strategy` |
-| strategy | string | | You can control strategy per each request. Global strategy is applied by default. |
-| onError | function | | You can specify a function that will be triggered when an endpoint fails. |
+| Option | Type | Default | Description |
+| --------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| method | string | | Default request method e.g. GET, POST, DELETE, PUT etc. |
+| url | string | | Url path e.g. /user-details/get |
+| cancellable | boolean | `false` | Whether previous requests should be automatically cancelled. See global settings for more info. |
+| rejectCancelled | boolean | `false` | If `true` and request is set to `cancellable`, a cancelled request promise will be rejected. By default instead of rejecting the promise, `defaultResponse` from global options is returned. |
+| defaultResponse | any | `null` | Default response when there is no data or when endpoint fails depending on a chosen `strategy` |
+| strategy | string | | You can control strategy per each request. Global strategy is applied by default. |
+| onError | function | | You can specify a function that will be triggered when an endpoint fails. |
## Full TypeScript support
@@ -218,6 +225,7 @@ import {
APIUrlParams,
} from 'axios-multi-api';
+import axios from 'axios';
import { createApiFetcher } from 'axios-multi-api';
interface myQueryParams {
@@ -232,12 +240,12 @@ interface EndpointsList extends Endpoints {
}
const api = createApiFetcher({
+ axios,
// Your config
}) as unknown as EndpointsList;
// Will return an error since "newMovies" should be a boolean
-api.fetchMovies( { newMovies: 1 } );
-
+api.fetchMovies({ newMovies: 1 });
```
Package ships interfaces with responsible defaults making it easier to add new endpoints. It exposes `Endpoints` and `Endpoint` types.
@@ -247,9 +255,11 @@ Package ships interfaces with responsible defaults making it easier to add new e
### Per Request Error handling
```typescript
+import axios from 'axios';
import { createApiFetcher } from 'axios-multi-api';
const api = createApiFetcher({
+ axios,
apiUrl: 'https://example.com/api',
endpoints: {
sendMessage: {
@@ -260,32 +270,35 @@ const api = createApiFetcher({
});
async function sendMessage() {
- await api.sendMessage({ message: 'Something..' }, { postId: 1 }, {
- onError(error) {
- if (error.response) {
- // The request was made and the server responded with a status code
- // that falls out of the range of 2xx
- console.log(error.response.data);
- console.log(error.response.status);
- console.log(error.response.headers);
- } else if (error.request) {
- // The request was made but no response was received
- // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
- // http.ClientRequest in node.js
- console.log(error.request);
- } else {
- // Something happened in setting up the request that triggered an Error
- console.log('Error', error.message);
- }
- console.log(error.config);
+ await api.sendMessage(
+ { message: 'Something..' },
+ { postId: 1 },
+ {
+ onError(error) {
+ if (error.response) {
+ // The request was made and the server responded with a status code
+ // that falls out of the range of 2xx
+ console.log(error.response.data);
+ console.log(error.response.status);
+ console.log(error.response.headers);
+ } else if (error.request) {
+ // The request was made but no response was received
+ // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
+ // http.ClientRequest in node.js
+ console.log(error.request);
+ } else {
+ // Something happened in setting up the request that triggered an Error
+ console.log('Error', error.message);
+ }
+ console.log(error.config);
+ },
}
- });
+ );
console.log('Message sent successfully');
}
sendMessage();
-
```
### OOP style with custom Error Handler (advanced)
@@ -295,11 +308,12 @@ You could for example create an API service class that extends the handler, inje
As you may notice there's also a `setupInterceptor` and `httpRequestHandler` exposed. You can operate on it instead of requesting an Axios instance prior the operation. This way you can use all Axios settings for a particular API handler.
```typescript
+import axios from 'axios';
import { ApiHandler } from 'axios-multi-api';
-class MyCustomHttpRequestError {
+class MyRequestError {
public constructor(myCallback) {
- this.myCallback = myCallback
+ this.myCallback = myCallback;
}
public process(error) {
@@ -308,38 +322,34 @@ class MyCustomHttpRequestError {
}
class ApiService extends ApiHandler {
- /**
- * Creates an instance of Api Service.
- * @param {object} payload Payload
- * @param {string} payload.apiUrl Api url
- * @param {string} payload.endpoints Api endpoints
- * @param {*} payload.logger Logger instance
- * @param {*} payload.myCallback Callback function, could be a dispatcher that e.g. forwards error data to a store
- */
- public constructor({
- apiUrl,
- endpoints,
- logger,
- myCallback,
- }) {
- // Pass settings to API Handler
- super({
- apiUrl,
- endpoints,
- logger,
- onError: new MyCustomHttpRequestError(myCallback),
- });
-
- this.setupInterceptor();
- }
+ /**
+ * Creates an instance of Api Service.
+ * @param {object} payload Payload
+ * @param {string} payload.apiUrl Api url
+ * @param {string} payload.endpoints Api endpoints
+ * @param {*} payload.logger Logger instance
+ * @param {*} payload.myCallback Callback function, could be a dispatcher that e.g. forwards error data to a store
+ */
+ public constructor({ apiUrl, endpoints, logger, myCallback }) {
+ // Pass settings to API Handler
+ super({
+ axios,
+ apiUrl,
+ endpoints,
+ logger,
+ onError: new MyRequestError(myCallback),
+ });
+
+ this.setupInterceptor();
+ }
- /**
- * Setup Request Interceptor
- * @returns {void}
- */
- protected setupInterceptor(): void {
- this.getInstance().interceptRequest(onRequest);
- }
+ /**
+ * Setup Request Interceptor
+ * @returns {void}
+ */
+ protected setupInterceptor(): void {
+ this.getInstance().interceptors.request.use(onRequest);
+ }
}
const api = new ApiService({
diff --git a/dist/browser/index.global.js b/dist/browser/index.global.js
index c62487f..ae50811 100644
--- a/dist/browser/index.global.js
+++ b/dist/browser/index.global.js
@@ -1,20 +1,2 @@
-(()=>{var ys=Object.create;var Je=Object.defineProperty;var Ha=Object.getOwnPropertyDescriptor;var ws=Object.getOwnPropertyNames;var ks=Object.getPrototypeOf,_s=Object.prototype.hasOwnProperty;var b=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(e,i)=>(typeof require<"u"?require:e)[i]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+a+'" is not supported')});var m=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var js=(a,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ws(e))!_s.call(a,s)&&s!==i&&Je(a,s,{get:()=>e[s],enumerable:!(n=Ha(e,s))||n.enumerable});return a};var We=(a,e,i)=>(i=a!=null?ys(ks(a)):{},js(e||!a||!a.__esModule?Je(i,"default",{value:a,enumerable:!0}):i,a));var ke=(a,e,i,n)=>{for(var s=n>1?void 0:n?Ha(e,i):e,o=a.length-1,r;o>=0;o--)(r=a[o])&&(s=(n?r(e,i,s):r(s))||s);return n&&s&&Je(e,i,s),s};var Xe=m(y=>{"use strict";Object.defineProperty(y,"__esModule",{value:!0});y.applyMagic=y.__invoke=y.__delete=y.__has=y.__set=y.__get=void 0;y.__get=Symbol("__get");y.__set=Symbol("__set");y.__has=Symbol("__has");y.__delete=Symbol("__delete");y.__invoke=Symbol("__invoke");var Va=!1;function qs(a,e=!1){if(typeof a=="function"){if(e)return Ke(a);let i=function(...s){if(typeof this>"u"){let o=a[y.__invoke]||a.__invoke;if(o)return se(a,o,"__invoke"),o?o.apply(a,s):a(...s);let r=a.prototype;return o=r[y.__invoke]||r.__invoke,o&&!Va&&(Va=!0,console.warn("applyMagic: using __invoke without 'static' modifier is deprecated")),se(a,o,"__invoke"),o?o(...s):a(...s)}else return Object.assign(this,new a(...s)),Ke(this)};return Object.setPrototypeOf(i,a),Object.setPrototypeOf(i.prototype,a.prototype),Ge(i,"name",a.name),Ge(i,"length",a.length),Ge(i,"toString",function(){let s=this===i?a:this;return Function.prototype.toString.call(s)},!0),i}else{if(typeof a=="object")return Ke(a);throw new TypeError("'target' must be a function or an object")}}y.applyMagic=qs;function se(a,e,i,n=void 0){if(e!==void 0){if(typeof e!="function")throw new TypeError(`${a.name}.${i} must be a function`);if(n!==void 0&&e.length!==n)throw new SyntaxError(`${a.name}.${i} must have ${n} parameter${n===1?"":"s"}`)}}function Ge(a,e,i,n=!1){Object.defineProperty(a,e,{configurable:!0,enumerable:!1,writable:n,value:i})}function Ke(a){let e=a[y.__get]||a.__get,i=a[y.__set]||a.__set,n=a[y.__has]||a.__has,s=a[y.__delete]||a.__delete;return se(new.target,e,"__get",1),se(new.target,i,"__set",2),se(new.target,n,"__has",1),se(new.target,s,"__delete",1),new Proxy(a,{get:(o,r)=>e?e.call(o,r):o[r],set:(o,r,c)=>(i?i.call(o,r,c):o[r]=c,!0),has:(o,r)=>n?n.call(o,r):r in o,deleteProperty:(o,r)=>(s?s.call(o,r):delete o[r],!0)})}});var Ye=m((Qt,$a)=>{"use strict";$a.exports=function(e,i){return function(){for(var s=new Array(arguments.length),o=0;o{"use strict";var Es=Ye(),Ze=Object.prototype.toString,ea=function(a){return function(e){var i=Ze.call(e);return a[i]||(a[i]=i.slice(8,-1).toLowerCase())}}(Object.create(null));function Y(a){return a=a.toLowerCase(),function(i){return ea(i)===a}}function aa(a){return Array.isArray(a)}function je(a){return typeof a>"u"}function Rs(a){return a!==null&&!je(a)&&a.constructor!==null&&!je(a.constructor)&&typeof a.constructor.isBuffer=="function"&&a.constructor.isBuffer(a)}var Ja=Y("ArrayBuffer");function Cs(a){var e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(a):e=a&&a.buffer&&Ja(a.buffer),e}function Ss(a){return typeof a=="string"}function Ts(a){return typeof a=="number"}function Wa(a){return a!==null&&typeof a=="object"}function _e(a){if(ea(a)!=="object")return!1;var e=Object.getPrototypeOf(a);return e===null||e===Object.prototype}var Os=Y("Date"),zs=Y("File"),As=Y("Blob"),Fs=Y("FileList");function ia(a){return Ze.call(a)==="[object Function]"}function Ls(a){return Wa(a)&&ia(a.pipe)}function Bs(a){var e="[object FormData]";return a&&(typeof FormData=="function"&&a instanceof FormData||Ze.call(a)===e||ia(a.toString)&&a.toString()===e)}var Ps=Y("URLSearchParams");function Us(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Ns(){return typeof navigator<"u"&&(navigator.product==="ReactNative"||navigator.product==="NativeScript"||navigator.product==="NS")?!1:typeof window<"u"&&typeof document<"u"}function na(a,e){if(!(a===null||typeof a>"u"))if(typeof a!="object"&&(a=[a]),aa(a))for(var i=0,n=a.length;i0;)o=n[s],r[o]||(e[o]=a[o],r[o]=!0);a=Object.getPrototypeOf(a)}while(a&&(!i||i(a,e))&&a!==Object.prototype);return e}function Vs(a,e,i){a=String(a),(i===void 0||i>a.length)&&(i=a.length),i-=e.length;var n=a.indexOf(e,i);return n!==-1&&n===i}function $s(a){if(!a)return null;var e=a.length;if(je(e))return null;for(var i=new Array(e);e-- >0;)i[e]=a[e];return i}var Js=function(a){return function(e){return a&&e instanceof a}}(typeof Uint8Array<"u"&&Object.getPrototypeOf(Uint8Array));Ga.exports={isArray:aa,isArrayBuffer:Ja,isBuffer:Rs,isFormData:Bs,isArrayBufferView:Cs,isString:Ss,isNumber:Ts,isObject:Wa,isPlainObject:_e,isUndefined:je,isDate:Os,isFile:zs,isBlob:As,isFunction:ia,isStream:Ls,isURLSearchParams:Ps,isStandardBrowserEnv:Ns,forEach:na,merge:Qe,extend:Ds,trim:Us,stripBOM:Is,inherits:Ms,toFlatObject:Hs,kindOf:ea,kindOfTest:Y,endsWith:Vs,toArray:$s,isTypedArray:Js,isFileList:Fs}});var qe=m((er,Xa)=>{"use strict";var oe=w();function Ka(a){return encodeURIComponent(a).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}Xa.exports=function(e,i,n){if(!i)return e;var s;if(n)s=n(i);else if(oe.isURLSearchParams(i))s=i.toString();else{var o=[];oe.forEach(i,function(p,u){p===null||typeof p>"u"||(oe.isArray(p)?u=u+"[]":p=[p],oe.forEach(p,function(l){oe.isDate(l)?l=l.toISOString():oe.isObject(l)&&(l=JSON.stringify(l)),o.push(Ka(u)+"="+Ka(l))}))}),s=o.join("&")}if(s){var r=e.indexOf("#");r!==-1&&(e=e.slice(0,r)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}});var Qa=m((ar,Ya)=>{"use strict";var Ws=w();function Ee(){this.handlers=[]}Ee.prototype.use=function(e,i,n){return this.handlers.push({fulfilled:e,rejected:i,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1};Ee.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)};Ee.prototype.forEach=function(e){Ws.forEach(this.handlers,function(n){n!==null&&e(n)})};Ya.exports=Ee});var ei=m((ir,Za)=>{"use strict";var Gs=w();Za.exports=function(e,i){Gs.forEach(e,function(s,o){o!==i&&o.toUpperCase()===i.toUpperCase()&&(e[i]=s,delete e[o])})}});var W=m((nr,si)=>{"use strict";var ai=w();function te(a,e,i,n,s){Error.call(this),this.message=a,this.name="AxiosError",e&&(this.code=e),i&&(this.config=i),n&&(this.request=n),s&&(this.response=s)}ai.inherits(te,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:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var ii=te.prototype,ni={};["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"].forEach(function(a){ni[a]={value:a}});Object.defineProperties(te,ni);Object.defineProperty(ii,"isAxiosError",{value:!0});te.from=function(a,e,i,n,s,o){var r=Object.create(ii);return ai.toFlatObject(a,r,function(p){return p!==Error.prototype}),te.call(r,a.message,e,i,n,s),r.name=a.name,o&&Object.assign(r,o),r};si.exports=te});var Re=m((sr,oi)=>{"use strict";oi.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}});var sa=m((or,ti)=>{"use strict";var D=w();function Ks(a,e){e=e||new FormData;var i=[];function n(o){return o===null?"":D.isDate(o)?o.toISOString():D.isArrayBuffer(o)||D.isTypedArray(o)?typeof Blob=="function"?new Blob([o]):Buffer.from(o):o}function s(o,r){if(D.isPlainObject(o)||D.isArray(o)){if(i.indexOf(o)!==-1)throw Error("Circular reference detected in "+r);i.push(o),D.forEach(o,function(p,u){if(!D.isUndefined(p)){var t=r?r+"."+u:u,l;if(p&&!r&&typeof p=="object"){if(D.endsWith(u,"{}"))p=JSON.stringify(p);else if(D.endsWith(u,"[]")&&(l=D.toArray(p))){l.forEach(function(d){!D.isUndefined(d)&&e.append(t,n(d))});return}}s(p,t)}}),i.pop()}else e.append(r,n(o))}return s(a),e}ti.exports=Ks});var ta=m((tr,ri)=>{"use strict";var oa=W();ri.exports=function(e,i,n){var s=n.config.validateStatus;!n.status||!s||s(n.status)?e(n):i(new oa("Request failed with status code "+n.status,[oa.ERR_BAD_REQUEST,oa.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}});var pi=m((rr,ci)=>{"use strict";var Ce=w();ci.exports=Ce.isStandardBrowserEnv()?function(){return{write:function(i,n,s,o,r,c){var p=[];p.push(i+"="+encodeURIComponent(n)),Ce.isNumber(s)&&p.push("expires="+new Date(s).toGMTString()),Ce.isString(o)&&p.push("path="+o),Ce.isString(r)&&p.push("domain="+r),c===!0&&p.push("secure"),document.cookie=p.join("; ")},read:function(i){var n=document.cookie.match(new RegExp("(^|;\\s*)("+i+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(i){this.write(i,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()});var ui=m((cr,li)=>{"use strict";li.exports=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}});var di=m((pr,mi)=>{"use strict";mi.exports=function(e,i){return i?e.replace(/\/+$/,"")+"/"+i.replace(/^\/+/,""):e}});var Se=m((lr,xi)=>{"use strict";var Xs=ui(),Ys=di();xi.exports=function(e,i){return e&&!Xs(i)?Ys(e,i):i}});var vi=m((ur,fi)=>{"use strict";var ra=w(),Qs=["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"];fi.exports=function(e){var i={},n,s,o;return e&&ra.forEach(e.split(`
-`),function(c){if(o=c.indexOf(":"),n=ra.trim(c.substr(0,o)).toLowerCase(),s=ra.trim(c.substr(o+1)),n){if(i[n]&&Qs.indexOf(n)>=0)return;n==="set-cookie"?i[n]=(i[n]?i[n]:[]).concat([s]):i[n]=i[n]?i[n]+", "+s:s}}),i}});var gi=m((mr,bi)=>{"use strict";var hi=w();bi.exports=hi.isStandardBrowserEnv()?function(){var e=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a"),n;function s(o){var r=o;return e&&(i.setAttribute("href",r),r=i.href),i.setAttribute("href",r),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:i.pathname.charAt(0)==="/"?i.pathname:"/"+i.pathname}}return n=s(window.location.href),function(r){var c=hi.isString(r)?s(r):r;return c.protocol===n.protocol&&c.host===n.host}}():function(){return function(){return!0}}()});var re=m((dr,wi)=>{"use strict";var ca=W(),Zs=w();function yi(a){ca.call(this,a??"canceled",ca.ERR_CANCELED),this.name="CanceledError"}Zs.inherits(yi,ca,{__CANCEL__:!0});wi.exports=yi});var _i=m((xr,ki)=>{"use strict";ki.exports=function(e){var i=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return i&&i[1]||""}});var qi=m((fr,ji)=>{"use strict";var he=w(),eo=ta(),ao=pi(),io=qe(),no=Se(),so=vi(),oo=gi(),to=Re(),V=W(),ro=re(),co=_i();ji.exports=function(e){return new Promise(function(n,s){var o=e.data,r=e.headers,c=e.responseType,p;function u(){e.cancelToken&&e.cancelToken.unsubscribe(p),e.signal&&e.signal.removeEventListener("abort",p)}he.isFormData(o)&&he.isStandardBrowserEnv()&&delete r["Content-Type"];var t=new XMLHttpRequest;if(e.auth){var l=e.auth.username||"",d=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";r.Authorization="Basic "+btoa(l+":"+d)}var h=no(e.baseURL,e.url);t.open(e.method.toUpperCase(),io(h,e.params,e.paramsSerializer),!0),t.timeout=e.timeout;function A(){if(!!t){var x="getAllResponseHeaders"in t?so(t.getAllResponseHeaders()):null,E=!c||c==="text"||c==="json"?t.responseText:t.response,U={data:E,status:t.status,statusText:t.statusText,headers:x,config:e,request:t};eo(function(ae){n(ae),u()},function(ae){s(ae),u()},U),t=null}}if("onloadend"in t?t.onloadend=A:t.onreadystatechange=function(){!t||t.readyState!==4||t.status===0&&!(t.responseURL&&t.responseURL.indexOf("file:")===0)||setTimeout(A)},t.onabort=function(){!t||(s(new V("Request aborted",V.ECONNABORTED,e,t)),t=null)},t.onerror=function(){s(new V("Network Error",V.ERR_NETWORK,e,t,t)),t=null},t.ontimeout=function(){var E=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",U=e.transitional||to;e.timeoutErrorMessage&&(E=e.timeoutErrorMessage),s(new V(E,U.clarifyTimeoutError?V.ETIMEDOUT:V.ECONNABORTED,e,t)),t=null},he.isStandardBrowserEnv()){var S=(e.withCredentials||oo(h))&&e.xsrfCookieName?ao.read(e.xsrfCookieName):void 0;S&&(r[e.xsrfHeaderName]=S)}"setRequestHeader"in t&&he.forEach(r,function(E,U){typeof o>"u"&&U.toLowerCase()==="content-type"?delete r[U]:t.setRequestHeader(U,E)}),he.isUndefined(e.withCredentials)||(t.withCredentials=!!e.withCredentials),c&&c!=="json"&&(t.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&t.addEventListener("progress",e.onDownloadProgress),typeof e.onUploadProgress=="function"&&t.upload&&t.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(p=function(x){!t||(s(!x||x&&x.type?new ro:x),t.abort(),t=null)},e.cancelToken&&e.cancelToken.subscribe(p),e.signal&&(e.signal.aborted?p():e.signal.addEventListener("abort",p))),o||(o=null);var _=co(h);if(_&&["http","https","file"].indexOf(_)===-1){s(new V("Unsupported protocol "+_+":",V.ERR_BAD_REQUEST,e));return}t.send(o)})}});var Ri=m((vr,Ei)=>{var ce=1e3,pe=ce*60,le=pe*60,Q=le*24,po=Q*7,lo=Q*365.25;Ei.exports=function(a,e){e=e||{};var i=typeof a;if(i==="string"&&a.length>0)return uo(a);if(i==="number"&&isFinite(a))return e.long?xo(a):mo(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))};function uo(a){if(a=String(a),!(a.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(a);if(!!e){var i=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return i*lo;case"weeks":case"week":case"w":return i*po;case"days":case"day":case"d":return i*Q;case"hours":case"hour":case"hrs":case"hr":case"h":return i*le;case"minutes":case"minute":case"mins":case"min":case"m":return i*pe;case"seconds":case"second":case"secs":case"sec":case"s":return i*ce;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}function mo(a){var e=Math.abs(a);return e>=Q?Math.round(a/Q)+"d":e>=le?Math.round(a/le)+"h":e>=pe?Math.round(a/pe)+"m":e>=ce?Math.round(a/ce)+"s":a+"ms"}function xo(a){var e=Math.abs(a);return e>=Q?Te(a,e,Q,"day"):e>=le?Te(a,e,le,"hour"):e>=pe?Te(a,e,pe,"minute"):e>=ce?Te(a,e,ce,"second"):a+" ms"}function Te(a,e,i,n){var s=e>=i*1.5;return Math.round(a/i)+" "+n+(s?"s":"")}});var pa=m((hr,Ci)=>{function fo(a){i.debug=i,i.default=i,i.coerce=p,i.disable=o,i.enable=s,i.enabled=r,i.humanize=Ri(),i.destroy=u,Object.keys(a).forEach(t=>{i[t]=a[t]}),i.names=[],i.skips=[],i.formatters={};function e(t){let l=0;for(let d=0;d{if(ie==="%%")return"%";$++;let X=i.formatters[He];if(typeof X=="function"){let F=_[$];ie=X.call(x,F),_.splice($,1),$--}return ie}),i.formatArgs.call(x,_),(x.log||i.log).apply(x,_)}return S.namespace=t,S.useColors=i.useColors(),S.color=i.selectColor(t),S.extend=n,S.destroy=i.destroy,Object.defineProperty(S,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(h!==i.namespaces&&(h=i.namespaces,A=i.enabled(t)),A),set:_=>{d=_}}),typeof i.init=="function"&&i.init(S),S}function n(t,l){let d=i(this.namespace+(typeof l>"u"?":":l)+t);return d.log=this.log,d}function s(t){i.save(t),i.namespaces=t,i.names=[],i.skips=[];let l,d=(typeof t=="string"?t:"").split(/[\s,]+/),h=d.length;for(l=0;l"-"+l)].join(",");return i.enable(""),t}function r(t){if(t[t.length-1]==="*")return!0;let l,d;for(l=0,d=i.skips.length;l{L.formatArgs=ho;L.save=bo;L.load=go;L.useColors=vo;L.storage=yo();L.destroy=(()=>{let a=!1;return()=>{a||(a=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();L.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function vo(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function ho(a){if(a[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+a[0]+(this.useColors?"%c ":" ")+"+"+Oe.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;a.splice(1,0,e,"color: inherit");let i=0,n=0;a[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(i++,s==="%c"&&(n=i))}),a.splice(n,0,e)}L.log=console.debug||console.log||(()=>{});function bo(a){try{a?L.storage.setItem("debug",a):L.storage.removeItem("debug")}catch{}}function go(){let a;try{a=L.storage.getItem("debug")}catch{}return!a&&typeof process<"u"&&"env"in process&&(a=process.env.DEBUG),a}function yo(){try{return localStorage}catch{}}Oe.exports=pa()(L);var{formatters:wo}=Oe.exports;wo.j=function(a){try{return JSON.stringify(a)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var Oi=m((br,Ti)=>{"use strict";Ti.exports=(a,e=process.argv)=>{let i=a.startsWith("-")?"":a.length===1?"-":"--",n=e.indexOf(i+a),s=e.indexOf("--");return n!==-1&&(s===-1||n{"use strict";var ko=b("os"),zi=b("tty"),N=Oi(),{env:j}=process,G;N("no-color")||N("no-colors")||N("color=false")||N("color=never")?G=0:(N("color")||N("colors")||N("color=true")||N("color=always"))&&(G=1);"FORCE_COLOR"in j&&(j.FORCE_COLOR==="true"?G=1:j.FORCE_COLOR==="false"?G=0:G=j.FORCE_COLOR.length===0?1:Math.min(parseInt(j.FORCE_COLOR,10),3));function la(a){return a===0?!1:{level:a,hasBasic:!0,has256:a>=2,has16m:a>=3}}function ua(a,e){if(G===0)return 0;if(N("color=16m")||N("color=full")||N("color=truecolor"))return 3;if(N("color=256"))return 2;if(a&&!e&&G===void 0)return 0;let i=G||0;if(j.TERM==="dumb")return i;if(process.platform==="win32"){let n=ko.release().split(".");return Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?3:2:1}if("CI"in j)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(n=>n in j)||j.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in j)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(j.TEAMCITY_VERSION)?1:0;if(j.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in j){let n=parseInt((j.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(j.TERM_PROGRAM){case"iTerm.app":return n>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(j.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(j.TERM)||"COLORTERM"in j?1:i}function _o(a){let e=ua(a,a&&a.isTTY);return la(e)}Ai.exports={supportsColor:_o,stdout:la(ua(!0,zi.isatty(1))),stderr:la(ua(!0,zi.isatty(2)))}});var Bi=m((R,Ae)=>{var jo=b("tty"),ze=b("util");R.init=Oo;R.log=Co;R.formatArgs=Eo;R.save=So;R.load=To;R.useColors=qo;R.destroy=ze.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");R.colors=[6,2,3,4,5,1];try{let a=Fi();a&&(a.stderr||a).level>=2&&(R.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}R.inspectOpts=Object.keys(process.env).filter(a=>/^debug_/i.test(a)).reduce((a,e)=>{let i=e.substring(6).toLowerCase().replace(/_([a-z])/g,(s,o)=>o.toUpperCase()),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),a[i]=n,a},{});function qo(){return"colors"in R.inspectOpts?Boolean(R.inspectOpts.colors):jo.isatty(process.stderr.fd)}function Eo(a){let{namespace:e,useColors:i}=this;if(i){let n=this.color,s="\x1B[3"+(n<8?n:"8;5;"+n),o=` ${s};1m${e} \x1B[0m`;a[0]=o+a[0].split(`
-`).join(`
-`+o),a.push(s+"m+"+Ae.exports.humanize(this.diff)+"\x1B[0m")}else a[0]=Ro()+e+" "+a[0]}function Ro(){return R.inspectOpts.hideDate?"":new Date().toISOString()+" "}function Co(...a){return process.stderr.write(ze.format(...a)+`
-`)}function So(a){a?process.env.DEBUG=a:delete process.env.DEBUG}function To(){return process.env.DEBUG}function Oo(a){a.inspectOpts={};let e=Object.keys(R.inspectOpts);for(let i=0;ie.trim()).join(" ")};Li.O=function(a){return this.inspectOpts.colors=this.useColors,ze.inspect(a,this.inspectOpts)}});var Pi=m((yr,ma)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?ma.exports=Si():ma.exports=Bi()});var Ni=m((wr,Ui)=>{var be;Ui.exports=function(){if(!be){try{be=Pi()("follow-redirects")}catch{}typeof be!="function"&&(be=function(){})}be.apply(null,arguments)}});var ba=m((kr,ha)=>{var Z=b("url"),da=Z.URL,zo=b("http"),Ao=b("https"),Mi=b("stream").Writable,Fo=b("assert"),Hi=Ni(),fa=["abort","aborted","connect","error","socket","timeout"],va=Object.create(null);fa.forEach(function(a){va[a]=function(e,i,n){this._redirectable.emit(a,e,i,n)}});var Di=Fe("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),Lo=Fe("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded"),Bo=Fe("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),Po=Fe("ERR_STREAM_WRITE_AFTER_END","write after end");function B(a,e){Mi.call(this),this._sanitizeOptions(a),this._options=a,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],e&&this.on("response",e);var i=this;this._onNativeResponse=function(n){i._processResponse(n)},this._performRequest()}B.prototype=Object.create(Mi.prototype);B.prototype.abort=function(){$i(this._currentRequest),this.emit("abort")};B.prototype.write=function(a,e,i){if(this._ending)throw new Po;if(!(typeof a=="string"||typeof a=="object"&&"length"in a))throw new TypeError("data should be a string, Buffer or Uint8Array");if(typeof e=="function"&&(i=e,e=null),a.length===0){i&&i();return}this._requestBodyLength+a.length<=this._options.maxBodyLength?(this._requestBodyLength+=a.length,this._requestBodyBuffers.push({data:a,encoding:e}),this._currentRequest.write(a,e,i)):(this.emit("error",new Bo),this.abort())};B.prototype.end=function(a,e,i){if(typeof a=="function"?(i=a,a=e=null):typeof e=="function"&&(i=e,e=null),!a)this._ended=this._ending=!0,this._currentRequest.end(null,null,i);else{var n=this,s=this._currentRequest;this.write(a,e,function(){n._ended=!0,s.end(null,null,i)}),this._ending=!0}};B.prototype.setHeader=function(a,e){this._options.headers[a]=e,this._currentRequest.setHeader(a,e)};B.prototype.removeHeader=function(a){delete this._options.headers[a],this._currentRequest.removeHeader(a)};B.prototype.setTimeout=function(a,e){var i=this;function n(r){r.setTimeout(a),r.removeListener("timeout",r.destroy),r.addListener("timeout",r.destroy)}function s(r){i._timeout&&clearTimeout(i._timeout),i._timeout=setTimeout(function(){i.emit("timeout"),o()},a),n(r)}function o(){i._timeout&&(clearTimeout(i._timeout),i._timeout=null),i.removeListener("abort",o),i.removeListener("error",o),i.removeListener("response",o),e&&i.removeListener("timeout",e),i.socket||i._currentRequest.removeListener("socket",s)}return e&&this.on("timeout",e),this.socket?s(this.socket):this._currentRequest.once("socket",s),this.on("socket",n),this.on("abort",o),this.on("error",o),this.on("response",o),this};["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach(function(a){B.prototype[a]=function(e,i){return this._currentRequest[a](e,i)}});["aborted","connection","socket"].forEach(function(a){Object.defineProperty(B.prototype,a,{get:function(){return this._currentRequest[a]}})});B.prototype._sanitizeOptions=function(a){if(a.headers||(a.headers={}),a.host&&(a.hostname||(a.hostname=a.host),delete a.host),!a.pathname&&a.path){var e=a.path.indexOf("?");e<0?a.pathname=a.path:(a.pathname=a.path.substring(0,e),a.search=a.path.substring(e))}};B.prototype._performRequest=function(){var a=this._options.protocol,e=this._options.nativeProtocols[a];if(!e){this.emit("error",new TypeError("Unsupported protocol "+a));return}if(this._options.agents){var i=a.slice(0,-1);this._options.agent=this._options.agents[i]}var n=this._currentRequest=e.request(this._options,this._onNativeResponse);n._redirectable=this;for(var s of fa)n.on(s,va[s]);if(this._currentUrl=/^\//.test(this._options.path)?Z.format(this._options):this._currentUrl=this._options.path,this._isRedirect){var o=0,r=this,c=this._requestBodyBuffers;(function p(u){if(n===r._currentRequest)if(u)r.emit("error",u);else if(o=400){a.responseUrl=this._currentUrl,a.redirects=this._redirects,this.emit("response",a),this._requestBodyBuffers=[];return}if($i(this._currentRequest),a.destroy(),++this._redirectCount>this._options.maxRedirects){this.emit("error",new Lo);return}var n,s=this._options.beforeRedirect;s&&(n=Object.assign({Host:a.req.getHeader("host")},this._options.headers));var o=this._options.method;((e===301||e===302)&&this._options.method==="POST"||e===303&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],xa(/^content-/i,this._options.headers));var r=xa(/^host$/i,this._options.headers),c=Z.parse(this._currentUrl),p=r||c.host,u=/^\w+:/.test(i)?this._currentUrl:Z.format(Object.assign(c,{host:p})),t;try{t=Z.resolve(u,i)}catch(A){this.emit("error",new Di(A));return}Hi("redirecting to",t),this._isRedirect=!0;var l=Z.parse(t);if(Object.assign(this._options,l),(l.protocol!==c.protocol&&l.protocol!=="https:"||l.host!==p&&!No(l.host,p))&&xa(/^(?:authorization|cookie)$/i,this._options.headers),typeof s=="function"){var d={headers:a.headers,statusCode:e},h={url:u,method:o,headers:n};try{s(this._options,d,h)}catch(A){this.emit("error",A);return}this._sanitizeOptions(this._options)}try{this._performRequest()}catch(A){this.emit("error",new Di(A))}};function Vi(a){var e={maxRedirects:21,maxBodyLength:10485760},i={};return Object.keys(a).forEach(function(n){var s=n+":",o=i[s]=a[n],r=e[n]=Object.create(o);function c(u,t,l){if(typeof u=="string"){var d=u;try{u=Ii(new da(d))}catch{u=Z.parse(d)}}else da&&u instanceof da?u=Ii(u):(l=t,t=u,u={protocol:s});return typeof t=="function"&&(l=t,t=null),t=Object.assign({maxRedirects:e.maxRedirects,maxBodyLength:e.maxBodyLength},u,t),t.nativeProtocols=i,Fo.equal(t.protocol,s,"protocol mismatch"),Hi("options",t),new B(t,l)}function p(u,t,l){var d=r.request(u,t,l);return d.end(),d}Object.defineProperties(r,{request:{value:c,configurable:!0,enumerable:!0,writable:!0},get:{value:p,configurable:!0,enumerable:!0,writable:!0}})}),e}function Uo(){}function Ii(a){var e={protocol:a.protocol,hostname:a.hostname.startsWith("[")?a.hostname.slice(1,-1):a.hostname,hash:a.hash,search:a.search,pathname:a.pathname,path:a.pathname+a.search,href:a.href};return a.port!==""&&(e.port=Number(a.port)),e}function xa(a,e){var i;for(var n in e)a.test(n)&&(i=e[n],delete e[n]);return i===null||typeof i>"u"?void 0:String(i).trim()}function Fe(a,e){function i(n){Error.captureStackTrace(this,this.constructor),n?(this.message=e+": "+n.message,this.cause=n):this.message=e}return i.prototype=new Error,i.prototype.constructor=i,i.prototype.name="Error ["+a+"]",i.prototype.code=a,i}function $i(a){for(var e of fa)a.removeListener(e,va[e]);a.on("error",Uo),a.abort()}function No(a,e){let i=a.length-e.length-1;return i>0&&a[i]==="."&&a.endsWith(e)}ha.exports=Vi({http:zo,https:Ao});ha.exports.wrap=Vi});var Le=m((_r,Ji)=>{Ji.exports={version:"0.27.2"}});var en=m((jr,Zi)=>{"use strict";var ee=w(),Wi=ta(),Do=Se(),Gi=qe(),Io=b("http"),Mo=b("https"),Ho=ba().http,Vo=ba().https,Ki=b("url"),$o=b("zlib"),Jo=Le().version,Wo=Re(),k=W(),Go=re(),Xi=/https:?/,Yi=["http:","https:","file:"];function Qi(a,e,i){if(a.hostname=e.host,a.host=e.host,a.port=e.port,a.path=i,e.auth){var n=Buffer.from(e.auth.username+":"+e.auth.password,"utf8").toString("base64");a.headers["Proxy-Authorization"]="Basic "+n}a.beforeRedirect=function(o){o.headers.host=o.host,Qi(o,e,o.href)}}Zi.exports=function(e){return new Promise(function(n,s){var o;function r(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener("abort",o)}var c=function(v){r(),n(v)},p=!1,u=function(v){r(),p=!0,s(v)},t=e.data,l=e.headers,d={};if(Object.keys(l).forEach(function(v){d[v.toLowerCase()]=v}),"user-agent"in d?l[d["user-agent"]]||delete l[d["user-agent"]]:l["User-Agent"]="axios/"+Jo,ee.isFormData(t)&&ee.isFunction(t.getHeaders))Object.assign(l,t.getHeaders());else if(t&&!ee.isStream(t)){if(!Buffer.isBuffer(t))if(ee.isArrayBuffer(t))t=Buffer.from(new Uint8Array(t));else if(ee.isString(t))t=Buffer.from(t,"utf-8");else return u(new k("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",k.ERR_BAD_REQUEST,e));if(e.maxBodyLength>-1&&t.length>e.maxBodyLength)return u(new k("Request body larger than maxBodyLength limit",k.ERR_BAD_REQUEST,e));d["content-length"]||(l["Content-Length"]=t.length)}var h=void 0;if(e.auth){var A=e.auth.username||"",S=e.auth.password||"";h=A+":"+S}var _=Do(e.baseURL,e.url),x=Ki.parse(_),E=x.protocol||Yi[0];if(Yi.indexOf(E)===-1)return u(new k("Unsupported protocol "+E,k.ERR_BAD_REQUEST,e));if(!h&&x.auth){var U=x.auth.split(":"),$=U[0]||"",ae=U[1]||"";h=$+":"+ae}h&&d.authorization&&delete l[d.authorization];var ie=Xi.test(E),He=ie?e.httpsAgent:e.httpAgent;try{Gi(x.path,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(C){var X=new Error(C.message);X.config=e,X.url=e.url,X.exists=!0,u(X)}var F={path:Gi(x.path,e.params,e.paramsSerializer).replace(/^\?/,""),method:e.method.toUpperCase(),headers:l,agent:He,agents:{http:e.httpAgent,https:e.httpsAgent},auth:h};e.socketPath?F.socketPath=e.socketPath:(F.hostname=x.hostname,F.port=x.port);var J=e.proxy;if(!J&&J!==!1){var Ba=E.slice(0,-1)+"_proxy",Pa=process.env[Ba]||process.env[Ba.toUpperCase()];if(Pa){var fe=Ki.parse(Pa),Ua=process.env.no_proxy||process.env.NO_PROXY,Na=!0;if(Ua){var bs=Ua.split(",").map(function(v){return v.trim()});Na=!bs.some(function(v){return v?v==="*"||v[0]==="."&&x.hostname.substr(x.hostname.length-v.length)===v?!0:x.hostname===v:!1})}if(Na&&(J={host:fe.hostname,port:fe.port,protocol:fe.protocol},fe.auth)){var Da=fe.auth.split(":");J.auth={username:Da[0],password:Da[1]}}}}J&&(F.headers.host=x.hostname+(x.port?":"+x.port:""),Qi(F,J,E+"//"+x.hostname+(x.port?":"+x.port:"")+F.path));var ye,Ia=ie&&(J?Xi.test(J.protocol):!0);e.transport?ye=e.transport:e.maxRedirects===0?ye=Ia?Mo:Io:(e.maxRedirects&&(F.maxRedirects=e.maxRedirects),e.beforeRedirect&&(F.beforeRedirect=e.beforeRedirect),ye=Ia?Vo:Ho),e.maxBodyLength>-1&&(F.maxBodyLength=e.maxBodyLength),e.insecureHTTPParser&&(F.insecureHTTPParser=e.insecureHTTPParser);var T=ye.request(F,function(v){if(!T.aborted){var H=v,ve=v.req||T;if(v.statusCode!==204&&ve.method!=="HEAD"&&e.decompress!==!1)switch(v.headers["content-encoding"]){case"gzip":case"compress":case"deflate":H=H.pipe($o.createUnzip()),delete v.headers["content-encoding"];break}var ne={status:v.statusCode,statusText:v.statusMessage,headers:v.headers,config:e,request:ve};if(e.responseType==="stream")ne.data=H,Wi(c,u,ne);else{var we=[],Ma=0;H.on("data",function(M){we.push(M),Ma+=M.length,e.maxContentLength>-1&&Ma>e.maxContentLength&&(p=!0,H.destroy(),u(new k("maxContentLength size of "+e.maxContentLength+" exceeded",k.ERR_BAD_RESPONSE,e,ve)))}),H.on("aborted",function(){p||(H.destroy(),u(new k("maxContentLength size of "+e.maxContentLength+" exceeded",k.ERR_BAD_RESPONSE,e,ve)))}),H.on("error",function(M){T.aborted||u(k.from(M,null,e,ve))}),H.on("end",function(){try{var M=we.length===1?we[0]:Buffer.concat(we);e.responseType!=="arraybuffer"&&(M=M.toString(e.responseEncoding),(!e.responseEncoding||e.responseEncoding==="utf8")&&(M=ee.stripBOM(M))),ne.data=M}catch(gs){u(k.from(gs,null,e,ne.request,ne))}Wi(c,u,ne)})}}});if(T.on("error",function(v){u(k.from(v,null,e,T))}),T.on("socket",function(v){v.setKeepAlive(!0,1e3*60)}),e.timeout){var Ve=parseInt(e.timeout,10);if(isNaN(Ve)){u(new k("error trying to parse `config.timeout` to int",k.ERR_BAD_OPTION_VALUE,e,T));return}T.setTimeout(Ve,function(){T.abort();var v=e.transitional||Wo;u(new k("timeout of "+Ve+"ms exceeded",v.clarifyTimeoutError?k.ETIMEDOUT:k.ECONNABORTED,e,T))})}(e.cancelToken||e.signal)&&(o=function(C){T.aborted||(T.abort(),u(!C||C&&C.type?new Go:C))},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener("abort",o))),ee.isStream(t)?t.on("error",function(v){u(k.from(v,e,null,T))}).pipe(T):T.end(t)})}});var sn=m((qr,nn)=>{var an=b("stream").Stream,Ko=b("util");nn.exports=I;function I(){this.source=null,this.dataSize=0,this.maxDataSize=1024*1024,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}Ko.inherits(I,an);I.create=function(a,e){var i=new this;e=e||{};for(var n in e)i[n]=e[n];i.source=a;var s=a.emit;return a.emit=function(){return i._handleEmit(arguments),s.apply(a,arguments)},a.on("error",function(){}),i.pauseStream&&a.pause(),i};Object.defineProperty(I.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}});I.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)};I.prototype.resume=function(){this._released||this.release(),this.source.resume()};I.prototype.pause=function(){this.source.pause()};I.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(a){this.emit.apply(this,a)}.bind(this)),this._bufferedEvents=[]};I.prototype.pipe=function(){var a=an.prototype.pipe.apply(this,arguments);return this.resume(),a};I.prototype._handleEmit=function(a){if(this._released){this.emit.apply(this,a);return}a[0]==="data"&&(this.dataSize+=a[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(a)};I.prototype._checkIfMaxDataSizeExceeded=function(){if(!this._maxDataSizeExceeded&&!(this.dataSize<=this.maxDataSize)){this._maxDataSizeExceeded=!0;var a="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error",new Error(a))}}});var cn=m((Er,rn)=>{var Xo=b("util"),tn=b("stream").Stream,on=sn();rn.exports=g;function g(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2*1024*1024,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}Xo.inherits(g,tn);g.create=function(a){var e=new this;a=a||{};for(var i in a)e[i]=a[i];return e};g.isStreamLike=function(a){return typeof a!="function"&&typeof a!="string"&&typeof a!="boolean"&&typeof a!="number"&&!Buffer.isBuffer(a)};g.prototype.append=function(a){var e=g.isStreamLike(a);if(e){if(!(a instanceof on)){var i=on.create(a,{maxDataSize:1/0,pauseStream:this.pauseStreams});a.on("data",this._checkDataSize.bind(this)),a=i}this._handleErrors(a),this.pauseStreams&&a.pause()}return this._streams.push(a),this};g.prototype.pipe=function(a,e){return tn.prototype.pipe.call(this,a,e),this.resume(),a};g.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop){this._pendingNext=!0;return}this._insideLoop=!0;try{do this._pendingNext=!1,this._realGetNext();while(this._pendingNext)}finally{this._insideLoop=!1}};g.prototype._realGetNext=function(){var a=this._streams.shift();if(typeof a>"u"){this.end();return}if(typeof a!="function"){this._pipeNext(a);return}var e=a;e(function(i){var n=g.isStreamLike(i);n&&(i.on("data",this._checkDataSize.bind(this)),this._handleErrors(i)),this._pipeNext(i)}.bind(this))};g.prototype._pipeNext=function(a){this._currentStream=a;var e=g.isStreamLike(a);if(e){a.on("end",this._getNext.bind(this)),a.pipe(this,{end:!1});return}var i=a;this.write(i),this._getNext()};g.prototype._handleErrors=function(a){var e=this;a.on("error",function(i){e._emitError(i)})};g.prototype.write=function(a){this.emit("data",a)};g.prototype.pause=function(){!this.pauseStreams||(this.pauseStreams&&this._currentStream&&typeof this._currentStream.pause=="function"&&this._currentStream.pause(),this.emit("pause"))};g.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&typeof this._currentStream.resume=="function"&&this._currentStream.resume(),this.emit("resume")};g.prototype.end=function(){this._reset(),this.emit("end")};g.prototype.destroy=function(){this._reset(),this.emit("close")};g.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null};g.prototype._checkDataSize=function(){if(this._updateDataSize(),!(this.dataSize<=this.maxDataSize)){var a="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(a))}};g.prototype._updateDataSize=function(){this.dataSize=0;var a=this;this._streams.forEach(function(e){!e.dataSize||(a.dataSize+=e.dataSize)}),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)};g.prototype._emitError=function(a){this._reset(),this.emit("error",a)}});var pn=m((Rr,Yo)=>{Yo.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var un=m((Cr,ln)=>{ln.exports=pn()});var xn=m(O=>{"use strict";var Be=un(),Qo=b("path").extname,mn=/^\s*([^;\s]*)(?:;|\s|$)/,Zo=/^text\//i;O.charset=dn;O.charsets={lookup:dn};O.contentType=et;O.extension=at;O.extensions=Object.create(null);O.lookup=it;O.types=Object.create(null);nt(O.extensions,O.types);function dn(a){if(!a||typeof a!="string")return!1;var e=mn.exec(a),i=e&&Be[e[1].toLowerCase()];return i&&i.charset?i.charset:e&&Zo.test(e[1])?"UTF-8":!1}function et(a){if(!a||typeof a!="string")return!1;var e=a.indexOf("/")===-1?O.lookup(a):a;if(!e)return!1;if(e.indexOf("charset")===-1){var i=O.charset(e);i&&(e+="; charset="+i.toLowerCase())}return e}function at(a){if(!a||typeof a!="string")return!1;var e=mn.exec(a),i=e&&O.extensions[e[1].toLowerCase()];return!i||!i.length?!1:i[0]}function it(a){if(!a||typeof a!="string")return!1;var e=Qo("x."+a).toLowerCase().substr(1);return e&&O.types[e]||!1}function nt(a,e){var i=["nginx","apache",void 0,"iana"];Object.keys(Be).forEach(function(s){var o=Be[s],r=o.extensions;if(!(!r||!r.length)){a[s]=r;for(var c=0;ct||u===t&&e[p].substr(0,12)==="application/"))continue}e[p]=s}}})}});var vn=m((Tr,fn)=>{fn.exports=st;function st(a){var e=typeof setImmediate=="function"?setImmediate:typeof process=="object"&&typeof process.nextTick=="function"?process.nextTick:null;e?e(a):setTimeout(a,0)}});var ga=m((Or,bn)=>{var hn=vn();bn.exports=ot;function ot(a){var e=!1;return hn(function(){e=!0}),function(n,s){e?a(n,s):hn(function(){a(n,s)})}}});var ya=m((zr,gn)=>{gn.exports=tt;function tt(a){Object.keys(a.jobs).forEach(rt.bind(a)),a.jobs={}}function rt(a){typeof this.jobs[a]=="function"&&this.jobs[a]()}});var wa=m((Ar,wn)=>{var yn=ga(),ct=ya();wn.exports=pt;function pt(a,e,i,n){var s=i.keyedList?i.keyedList[i.index]:i.index;i.jobs[s]=lt(e,s,a[s],function(o,r){s in i.jobs&&(delete i.jobs[s],o?ct(i):i.results[s]=r,n(o,i.results))})}function lt(a,e,i,n){var s;return a.length==2?s=a(i,yn(n)):s=a(i,e,yn(n)),s}});var ka=m((Fr,kn)=>{kn.exports=ut;function ut(a,e){var i=!Array.isArray(a),n={index:0,keyedList:i||e?Object.keys(a):null,jobs:{},results:i?{}:[],size:i?Object.keys(a).length:a.length};return e&&n.keyedList.sort(i?e:function(s,o){return e(a[s],a[o])}),n}});var _a=m((Lr,_n)=>{var mt=ya(),dt=ga();_n.exports=xt;function xt(a){!Object.keys(this.jobs).length||(this.index=this.size,mt(this),dt(a)(null,this.results))}});var qn=m((Br,jn)=>{var ft=wa(),vt=ka(),ht=_a();jn.exports=bt;function bt(a,e,i){for(var n=vt(a);n.index<(n.keyedList||a).length;)ft(a,e,n,function(s,o){if(s){i(s,o);return}if(Object.keys(n.jobs).length===0){i(null,n.results);return}}),n.index++;return ht.bind(n,i)}});var ja=m((Pr,Pe)=>{var En=wa(),gt=ka(),yt=_a();Pe.exports=wt;Pe.exports.ascending=Rn;Pe.exports.descending=kt;function wt(a,e,i,n){var s=gt(a,i);return En(a,e,s,function o(r,c){if(r){n(r,c);return}if(s.index++,s.index<(s.keyedList||a).length){En(a,e,s,o);return}n(null,s.results)}),yt.bind(s,n)}function Rn(a,e){return ae?1:0}function kt(a,e){return-1*Rn(a,e)}});var Sn=m((Ur,Cn)=>{var _t=ja();Cn.exports=jt;function jt(a,e,i){return _t(a,e,null,i)}});var On=m((Nr,Tn)=>{Tn.exports={parallel:qn(),serial:Sn(),serialOrdered:ja()}});var An=m((Dr,zn)=>{zn.exports=function(a,e){return Object.keys(e).forEach(function(i){a[i]=a[i]||e[i]}),a}});var Bn=m((Ir,Ln)=>{var Ca=cn(),Fn=b("util"),qa=b("path"),qt=b("http"),Et=b("https"),Rt=b("url").parse,Ct=b("fs"),St=b("stream").Stream,Ea=xn(),Tt=On(),Ra=An();Ln.exports=f;Fn.inherits(f,Ca);function f(a){if(!(this instanceof f))return new f(a);this._overheadLength=0,this._valueLength=0,this._valuesToMeasure=[],Ca.call(this),a=a||{};for(var e in a)this[e]=a[e]}f.LINE_BREAK=`\r
-`;f.DEFAULT_CONTENT_TYPE="application/octet-stream";f.prototype.append=function(a,e,i){i=i||{},typeof i=="string"&&(i={filename:i});var n=Ca.prototype.append.bind(this);if(typeof e=="number"&&(e=""+e),Fn.isArray(e)){this._error(new Error("Arrays are not supported."));return}var s=this._multiPartHeader(a,e,i),o=this._multiPartFooter();n(s),n(e),n(o),this._trackLength(s,e,i)};f.prototype._trackLength=function(a,e,i){var n=0;i.knownLength!=null?n+=+i.knownLength:Buffer.isBuffer(e)?n=e.length:typeof e=="string"&&(n=Buffer.byteLength(e)),this._valueLength+=n,this._overheadLength+=Buffer.byteLength(a)+f.LINE_BREAK.length,!(!e||!e.path&&!(e.readable&&e.hasOwnProperty("httpVersion"))&&!(e instanceof St))&&(i.knownLength||this._valuesToMeasure.push(e))};f.prototype._lengthRetriever=function(a,e){a.hasOwnProperty("fd")?a.end!=null&&a.end!=1/0&&a.start!=null?e(null,a.end+1-(a.start?a.start:0)):Ct.stat(a.path,function(i,n){var s;if(i){e(i);return}s=n.size-(a.start?a.start:0),e(null,s)}):a.hasOwnProperty("httpVersion")?e(null,+a.headers["content-length"]):a.hasOwnProperty("httpModule")?(a.on("response",function(i){a.pause(),e(null,+i.headers["content-length"])}),a.resume()):e("Unknown stream")};f.prototype._multiPartHeader=function(a,e,i){if(typeof i.header=="string")return i.header;var n=this._getContentDisposition(e,i),s=this._getContentType(e,i),o="",r={"Content-Disposition":["form-data",'name="'+a+'"'].concat(n||[]),"Content-Type":[].concat(s||[])};typeof i.header=="object"&&Ra(r,i.header);var c;for(var p in r)!r.hasOwnProperty(p)||(c=r[p],c!=null&&(Array.isArray(c)||(c=[c]),c.length&&(o+=p+": "+c.join("; ")+f.LINE_BREAK)));return"--"+this.getBoundary()+f.LINE_BREAK+o+f.LINE_BREAK};f.prototype._getContentDisposition=function(a,e){var i,n;return typeof e.filepath=="string"?i=qa.normalize(e.filepath).replace(/\\/g,"/"):e.filename||a.name||a.path?i=qa.basename(e.filename||a.name||a.path):a.readable&&a.hasOwnProperty("httpVersion")&&(i=qa.basename(a.client._httpMessage.path||"")),i&&(n='filename="'+i+'"'),n};f.prototype._getContentType=function(a,e){var i=e.contentType;return!i&&a.name&&(i=Ea.lookup(a.name)),!i&&a.path&&(i=Ea.lookup(a.path)),!i&&a.readable&&a.hasOwnProperty("httpVersion")&&(i=a.headers["content-type"]),!i&&(e.filepath||e.filename)&&(i=Ea.lookup(e.filepath||e.filename)),!i&&typeof a=="object"&&(i=f.DEFAULT_CONTENT_TYPE),i};f.prototype._multiPartFooter=function(){return function(a){var e=f.LINE_BREAK,i=this._streams.length===0;i&&(e+=this._lastBoundary()),a(e)}.bind(this)};f.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+f.LINE_BREAK};f.prototype.getHeaders=function(a){var e,i={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(e in a)a.hasOwnProperty(e)&&(i[e.toLowerCase()]=a[e]);return i};f.prototype.setBoundary=function(a){this._boundary=a};f.prototype.getBoundary=function(){return this._boundary||this._generateBoundary(),this._boundary};f.prototype.getBuffer=function(){for(var a=new Buffer.alloc(0),e=this.getBoundary(),i=0,n=this._streams.length;i{Pn.exports=Bn()});var Ne=m((Hr,Mn)=>{"use strict";var q=w(),Nn=ei(),Dn=W(),Ot=Re(),zt=sa(),At={"Content-Type":"application/x-www-form-urlencoded"};function In(a,e){!q.isUndefined(a)&&q.isUndefined(a["Content-Type"])&&(a["Content-Type"]=e)}function Ft(){var a;return typeof XMLHttpRequest<"u"?a=qi():typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(a=en()),a}function Lt(a,e,i){if(q.isString(a))try{return(e||JSON.parse)(a),q.trim(a)}catch(n){if(n.name!=="SyntaxError")throw n}return(i||JSON.stringify)(a)}var Ue={transitional:Ot,adapter:Ft(),transformRequest:[function(e,i){if(Nn(i,"Accept"),Nn(i,"Content-Type"),q.isFormData(e)||q.isArrayBuffer(e)||q.isBuffer(e)||q.isStream(e)||q.isFile(e)||q.isBlob(e))return e;if(q.isArrayBufferView(e))return e.buffer;if(q.isURLSearchParams(e))return In(i,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();var n=q.isObject(e),s=i&&i["Content-Type"],o;if((o=q.isFileList(e))||n&&s==="multipart/form-data"){var r=this.env&&this.env.FormData;return zt(o?{"files[]":e}:e,r&&new r)}else if(n||s==="application/json")return In(i,"application/json"),Lt(e);return e}],transformResponse:[function(e){var i=this.transitional||Ue.transitional,n=i&&i.silentJSONParsing,s=i&&i.forcedJSONParsing,o=!n&&this.responseType==="json";if(o||s&&q.isString(e)&&e.length)try{return JSON.parse(e)}catch(r){if(o)throw r.name==="SyntaxError"?Dn.from(r,Dn.ERR_BAD_RESPONSE,this,null,this.response):r}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Un()},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};q.forEach(["delete","get","head"],function(e){Ue.headers[e]={}});q.forEach(["post","put","patch"],function(e){Ue.headers[e]=q.merge(At)});Mn.exports=Ue});var Vn=m((Vr,Hn)=>{"use strict";var Bt=w(),Pt=Ne();Hn.exports=function(e,i,n){var s=this||Pt;return Bt.forEach(n,function(r){e=r.call(s,e,i)}),e}});var Sa=m(($r,$n)=>{"use strict";$n.exports=function(e){return!!(e&&e.__CANCEL__)}});var Gn=m((Jr,Wn)=>{"use strict";var Jn=w(),Ta=Vn(),Ut=Sa(),Nt=Ne(),Dt=re();function Oa(a){if(a.cancelToken&&a.cancelToken.throwIfRequested(),a.signal&&a.signal.aborted)throw new Dt}Wn.exports=function(e){Oa(e),e.headers=e.headers||{},e.data=Ta.call(e,e.data,e.headers,e.transformRequest),e.headers=Jn.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Jn.forEach(["delete","get","head","post","put","patch","common"],function(s){delete e.headers[s]});var i=e.adapter||Nt.adapter;return i(e).then(function(s){return Oa(e),s.data=Ta.call(e,s.data,s.headers,e.transformResponse),s},function(s){return Ut(s)||(Oa(e),s&&s.response&&(s.response.data=Ta.call(e,s.response.data,s.response.headers,e.transformResponse))),Promise.reject(s)})}});var za=m((Wr,Kn)=>{"use strict";var P=w();Kn.exports=function(e,i){i=i||{};var n={};function s(t,l){return P.isPlainObject(t)&&P.isPlainObject(l)?P.merge(t,l):P.isPlainObject(l)?P.merge({},l):P.isArray(l)?l.slice():l}function o(t){if(P.isUndefined(i[t])){if(!P.isUndefined(e[t]))return s(void 0,e[t])}else return s(e[t],i[t])}function r(t){if(!P.isUndefined(i[t]))return s(void 0,i[t])}function c(t){if(P.isUndefined(i[t])){if(!P.isUndefined(e[t]))return s(void 0,e[t])}else return s(void 0,i[t])}function p(t){if(t in i)return s(e[t],i[t]);if(t in e)return s(void 0,e[t])}var u={url:r,method:r,data:r,baseURL:c,transformRequest:c,transformResponse:c,paramsSerializer:c,timeout:c,timeoutMessage:c,withCredentials:c,adapter:c,responseType:c,xsrfCookieName:c,xsrfHeaderName:c,onUploadProgress:c,onDownloadProgress:c,decompress:c,maxContentLength:c,maxBodyLength:c,beforeRedirect:c,transport:c,httpAgent:c,httpsAgent:c,cancelToken:c,socketPath:c,responseEncoding:c,validateStatus:p};return P.forEach(Object.keys(e).concat(Object.keys(i)),function(l){var d=u[l]||o,h=d(l);P.isUndefined(h)&&d!==p||(n[l]=h)}),n}});var Qn=m((Gr,Yn)=>{"use strict";var It=Le().version,K=W(),Aa={};["object","boolean","number","function","string","symbol"].forEach(function(a,e){Aa[a]=function(n){return typeof n===a||"a"+(e<1?"n ":" ")+a}});var Xn={};Aa.transitional=function(e,i,n){function s(o,r){return"[Axios v"+It+"] Transitional option '"+o+"'"+r+(n?". "+n:"")}return function(o,r,c){if(e===!1)throw new K(s(r," has been removed"+(i?" in "+i:"")),K.ERR_DEPRECATED);return i&&!Xn[r]&&(Xn[r]=!0,console.warn(s(r," has been deprecated since v"+i+" and will be removed in the near future"))),e?e(o,r,c):!0}};function Mt(a,e,i){if(typeof a!="object")throw new K("options must be an object",K.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(a),s=n.length;s-- >0;){var o=n[s],r=e[o];if(r){var c=a[o],p=c===void 0||r(c,o,a);if(p!==!0)throw new K("option "+o+" must be "+p,K.ERR_BAD_OPTION_VALUE);continue}if(i!==!0)throw new K("Unknown option "+o,K.ERR_BAD_OPTION)}}Yn.exports={assertOptions:Mt,validators:Aa}});var ss=m((Kr,ns)=>{"use strict";var as=w(),Ht=qe(),Zn=Qa(),es=Gn(),De=za(),Vt=Se(),is=Qn(),ue=is.validators;function me(a){this.defaults=a,this.interceptors={request:new Zn,response:new Zn}}me.prototype.request=function(e,i){typeof e=="string"?(i=i||{},i.url=e):i=e||{},i=De(this.defaults,i),i.method?i.method=i.method.toLowerCase():this.defaults.method?i.method=this.defaults.method.toLowerCase():i.method="get";var n=i.transitional;n!==void 0&&is.assertOptions(n,{silentJSONParsing:ue.transitional(ue.boolean),forcedJSONParsing:ue.transitional(ue.boolean),clarifyTimeoutError:ue.transitional(ue.boolean)},!1);var s=[],o=!0;this.interceptors.request.forEach(function(h){typeof h.runWhen=="function"&&h.runWhen(i)===!1||(o=o&&h.synchronous,s.unshift(h.fulfilled,h.rejected))});var r=[];this.interceptors.response.forEach(function(h){r.push(h.fulfilled,h.rejected)});var c;if(!o){var p=[es,void 0];for(Array.prototype.unshift.apply(p,s),p=p.concat(r),c=Promise.resolve(i);p.length;)c=c.then(p.shift(),p.shift());return c}for(var u=i;s.length;){var t=s.shift(),l=s.shift();try{u=t(u)}catch(d){l(d);break}}try{c=es(u)}catch(d){return Promise.reject(d)}for(;r.length;)c=c.then(r.shift(),r.shift());return c};me.prototype.getUri=function(e){e=De(this.defaults,e);var i=Vt(e.baseURL,e.url);return Ht(i,e.params,e.paramsSerializer)};as.forEach(["delete","get","head","options"],function(e){me.prototype[e]=function(i,n){return this.request(De(n||{},{method:e,url:i,data:(n||{}).data}))}});as.forEach(["post","put","patch"],function(e){function i(n){return function(o,r,c){return this.request(De(c||{},{method:e,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:r}))}}me.prototype[e]=i(),me.prototype[e+"Form"]=i(!0)});ns.exports=me});var ts=m((Xr,os)=>{"use strict";var $t=re();function de(a){if(typeof a!="function")throw new TypeError("executor must be a function.");var e;this.promise=new Promise(function(s){e=s});var i=this;this.promise.then(function(n){if(!!i._listeners){var s,o=i._listeners.length;for(s=0;s{"use strict";rs.exports=function(e){return function(n){return e.apply(null,n)}}});var ls=m((Qr,ps)=>{"use strict";var Jt=w();ps.exports=function(e){return Jt.isObject(e)&&e.isAxiosError===!0}});var ds=m((Zr,Fa)=>{"use strict";var us=w(),Wt=Ye(),Ie=ss(),Gt=za(),Kt=Ne();function ms(a){var e=new Ie(a),i=Wt(Ie.prototype.request,e);return us.extend(i,Ie.prototype,e),us.extend(i,e),i.create=function(s){return ms(Gt(a,s))},i}var z=ms(Kt);z.Axios=Ie;z.CanceledError=re();z.CancelToken=ts();z.isCancel=Sa();z.VERSION=Le().version;z.toFormData=sa();z.AxiosError=W();z.Cancel=z.CanceledError;z.all=function(e){return Promise.all(e)};z.spread=cs();z.isAxiosError=ls();Fa.exports=z;Fa.exports.default=z});var fs=m((ec,xs)=>{xs.exports=ds()});var hs=We(Xe());var La=We(fs()),vs=We(Xe());var Me=class{constructor(e,i){this.logger=e,this.httpRequestErrorService=i}process(e){this.logger&&this.logger.warn&&this.logger.warn("API ERROR",e);let i=e;typeof e=="string"&&(i=new Error(e)),this.httpRequestErrorService&&(typeof this.httpRequestErrorService.process<"u"?this.httpRequestErrorService.process(i):typeof this.httpRequestErrorService=="function"&&this.httpRequestErrorService(i))}};var xe=class{constructor({baseURL:e="",timeout:i=null,cancellable:n=!1,strategy:s=null,flattenResponse:o=null,defaultResponse:r={},logger:c=null,onError:p=null,...u}){this.timeout=3e4;this.cancellable=!1;this.strategy="reject";this.flattenResponse=!0;this.defaultResponse=null;this.timeout=i!==null?i:this.timeout,this.strategy=s!==null?s:this.strategy,this.cancellable=n||this.cancellable,this.flattenResponse=o!==null?o:this.flattenResponse,this.defaultResponse=r,this.logger=c||global.console||window.console||null,this.httpRequestErrorService=p,this.requestsQueue=new Map,this.requestInstance=La.default.create({...u,baseURL:e,timeout:this.timeout})}getInstance(){return this.requestInstance}interceptRequest(e){this.getInstance().interceptors.request.use(e)}__get(e){return e in this?this[e]:this.prepareRequest.bind(this,e)}prepareRequest(e,i,n=null,s=null){return this.handleRequest({type:e,url:i,data:n,config:s})}buildRequestConfig(e,i,n,s){let o=e.toLowerCase();return{...s,url:i,method:o,[o==="get"||o==="head"?"params":"data"]:n||{}}}processRequestError(e,i){if(this.isRequestCancelled(e,i))return;i.onError&&typeof i.onError=="function"&&i.onError(e),new Me(this.logger,this.httpRequestErrorService).process(e)}async outputErrorResponse(e,i){let n=this.isRequestCancelled(e,i),s=i.strategy||this.strategy;return n&&!i.rejectCancelled?this.defaultResponse:s==="silent"?(await new Promise(()=>null),this.defaultResponse):s==="reject"||s==="throwError"?Promise.reject(e):this.defaultResponse}isRequestCancelled(e,i){return La.default.isCancel(e)}addCancellationToken(e){if(!this.cancellable&&!e.cancellable)return{};if(typeof e.cancellable<"u"&&!e.cancellable)return{};if(typeof AbortController>"u")return console.error("AbortController is unavailable in your ENV."),{};let{method:i,baseURL:n,url:s,params:o,data:r}=e,c=JSON.stringify([i,n,s,o,r]).substring(0,55**5),p=this.requestsQueue.get(c);p&&p.abort();let u=new AbortController;return this.requestsQueue.set(c,u),{signal:u.signal}}async handleRequest({type:e,url:i,data:n=null,config:s=null}){let o=null,r=s||{},c=this.buildRequestConfig(e,i,n,r);c={...this.addCancellationToken(c),...c};try{o=await this.requestInstance.request(c)}catch(p){return this.processRequestError(p,c),this.outputErrorResponse(p,c)}return this.processResponseData(o)}processResponseData(e){return e.data?this.flattenResponse?typeof e.data=="object"&&typeof e.data.data<"u"&&Object.keys(e.data).length===1?e.data.data:e.data:e:this.defaultResponse}};xe=ke([vs.applyMagic],xe);var ge=class{constructor({apiUrl:e,endpoints:i,timeout:n=null,cancellable:s=!1,strategy:o=null,flattenResponse:r=null,defaultResponse:c={},logger:p=null,onError:u=null,...t}){this.apiUrl="";this.apiUrl=e,this.endpoints=i,this.logger=p,this.httpRequestHandler=new xe({...t,baseURL:this.apiUrl,timeout:n,cancellable:s,strategy:o,flattenResponse:r,defaultResponse:c,logger:p,onError:u})}getInstance(){return this.httpRequestHandler.getInstance()}__get(e){return e in this?this[e]:this.endpoints[e]?this.handleRequest.bind(this,e):this.handleNonImplemented.bind(this,e)}async handleRequest(...e){let i=e[0],n=this.endpoints[i],s=e[1]||{},o=e[2]||{},r=e[3]||{},c=n.url.replace(/:[a-z]+/gi,t=>o[t.substring(1)]?o[t.substring(1)]:t),p=null,u={...n};return delete u.url,delete u.method,p=await this.httpRequestHandler[(n.method||"get").toLowerCase()](c,s,{...r,...u}),p}handleNonImplemented(e){return this.logger&&this.logger.log&&this.logger.log(`${e} endpoint not implemented.`),Promise.resolve(null)}};ge=ke([hs.applyMagic],ge);var pc=a=>new ge(a);})();
-/*!
- * mime-db
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015-2022 Douglas Christopher Wilson
- * MIT Licensed
- */
-/*!
- * mime-types
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
+(()=>{var S=Object.create;var m=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var M=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var j=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of x(e))!k.call(n,s)&&s!==t&&m(n,s,{get:()=>e[s],enumerable:!(r=q(e,s))||r.enumerable});return n};var E=(n,e,t)=>(t=n!=null?S(P(n)):{},j(e||!n||!n.__esModule?m(t,"default",{value:n,enumerable:!0}):t,n));var y=(n,e,t,r)=>{for(var s=r>1?void 0:r?q(e,t):e,o=n.length-1,i;o>=0;o--)(i=n[o])&&(s=(r?i(e,t,s):i(s))||s);return r&&s&&m(e,t,s),s};var R=M(l=>{"use strict";Object.defineProperty(l,"__esModule",{value:!0});l.applyMagic=l.__invoke=l.__delete=l.__has=l.__set=l.__get=void 0;l.__get=Symbol("__get");l.__set=Symbol("__set");l.__has=Symbol("__has");l.__delete=Symbol("__delete");l.__invoke=Symbol("__invoke");var C=!1;function A(n,e=!1){if(typeof n=="function"){if(e)return g(n);let t=function(...s){if(typeof this>"u"){let o=n[l.__invoke]||n.__invoke;if(o)return d(n,o,"__invoke"),o?o.apply(n,s):n(...s);let i=n.prototype;return o=i[l.__invoke]||i.__invoke,o&&!C&&(C=!0,console.warn("applyMagic: using __invoke without 'static' modifier is deprecated")),d(n,o,"__invoke"),o?o(...s):n(...s)}else return Object.assign(this,new n(...s)),g(this)};return Object.setPrototypeOf(t,n),Object.setPrototypeOf(t.prototype,n.prototype),b(t,"name",n.name),b(t,"length",n.length),b(t,"toString",function(){let s=this===t?n:this;return Function.prototype.toString.call(s)},!0),t}else{if(typeof n=="object")return g(n);throw new TypeError("'target' must be a function or an object")}}l.applyMagic=A;function d(n,e,t,r=void 0){if(e!==void 0){if(typeof e!="function")throw new TypeError(`${n.name}.${t} must be a function`);if(r!==void 0&&e.length!==r)throw new SyntaxError(`${n.name}.${t} must have ${r} parameter${r===1?"":"s"}`)}}function b(n,e,t,r=!1){Object.defineProperty(n,e,{configurable:!0,enumerable:!1,writable:r,value:t})}function g(n){let e=n[l.__get]||n.__get,t=n[l.__set]||n.__set,r=n[l.__has]||n.__has,s=n[l.__delete]||n.__delete;return d(new.target,e,"__get",1),d(new.target,t,"__set",2),d(new.target,r,"__has",1),d(new.target,s,"__delete",1),new Proxy(n,{get:(o,i)=>e?e.call(o,i):o[i],set:(o,i,u)=>(t?t.call(o,i,u):o[i]=u,!0),has:(o,i)=>r?r.call(o,i):i in o,deleteProperty:(o,i)=>(s?s.call(o,i):delete o[i],!0)})}});var v=E(R());var w=E(R());var _=class{logger;requestErrorService;constructor(e,t){this.logger=e,this.requestErrorService=t}process(e){var r;(r=this.logger)!=null&&r.warn&&this.logger.warn("API ERROR",e);let t=e;typeof e=="string"&&(t=new Error(e)),this.requestErrorService&&(typeof this.requestErrorService.process<"u"?this.requestErrorService.process(t):typeof this.requestErrorService=="function"&&this.requestErrorService(t))}};var f=class{requestInstance;timeout=3e4;cancellable=!1;strategy="reject";flattenResponse=!0;defaultResponse=null;axios;logger;requestErrorService;requestsQueue;constructor({axios:e,baseURL:t="",timeout:r=null,cancellable:s=!1,strategy:o=null,flattenResponse:i=null,defaultResponse:u={},logger:a=null,onError:c=null,...p}){this.axios=e,this.timeout=r!==null?r:this.timeout,this.strategy=o!==null?o:this.strategy,this.cancellable=s||this.cancellable,this.flattenResponse=i!==null?i:this.flattenResponse,this.defaultResponse=u,this.logger=a||global.console||window.console||null,this.requestErrorService=c,this.requestsQueue=new Map,this.requestInstance=e.create({...p,baseURL:t,timeout:this.timeout})}getInstance(){return this.requestInstance}__get(e){return e in this?this[e]:this.prepareRequest.bind(this,e)}prepareRequest(e,t,r=null,s=null){return this.handleRequest({type:e,url:t,data:r,config:s})}buildRequestConfig(e,t,r,s){let o=e.toLowerCase();return{...s,url:t,method:o,[o==="get"||o==="head"?"params":"data"]:r||{}}}processRequestError(e,t){if(this.isRequestCancelled(e,t))return;t.onError&&typeof t.onError=="function"&&t.onError(e),new _(this.logger,this.requestErrorService).process(e)}async outputErrorResponse(e,t){let r=this.isRequestCancelled(e,t),s=t.strategy||this.strategy;return r&&!t.rejectCancelled?this.defaultResponse:s==="silent"?(await new Promise(()=>null),this.defaultResponse):s==="reject"||s==="throwError"?Promise.reject(e):this.defaultResponse}isRequestCancelled(e,t){return this.axios.isCancel(e)}addCancellationToken(e){if(!this.cancellable&&!e.cancellable)return{};if(typeof e.cancellable<"u"&&!e.cancellable)return{};if(typeof AbortController>"u")return console.error("AbortController is unavailable in your ENV."),{};let{method:t,baseURL:r,url:s,params:o,data:i}=e,u=JSON.stringify([t,r,s,o,i]).substring(0,55**5),a=this.requestsQueue.get(u);a&&a.abort();let c=new AbortController;return this.requestsQueue.set(u,c),{signal:c.signal}}async handleRequest({type:e,url:t,data:r=null,config:s=null}){let o=null,i=s||{},u=this.buildRequestConfig(e,t,r,i);u={...this.addCancellationToken(u),...u};try{o=await this.requestInstance.request(u)}catch(a){return this.processRequestError(a,u),this.outputErrorResponse(a,u)}return this.processResponseData(o)}processResponseData(e){return e.data?this.flattenResponse?typeof e.data=="object"&&typeof e.data.data<"u"&&Object.keys(e.data).length===1?e.data.data:e.data:e:this.defaultResponse}};f=y([w.applyMagic],f);var h=class{requestHandler;endpoints;logger;constructor({axios:e,apiUrl:t,endpoints:r,timeout:s=null,cancellable:o=!1,strategy:i=null,flattenResponse:u=null,defaultResponse:a={},logger:c=null,onError:p=null,...I}){this.endpoints=r,this.logger=c,this.requestHandler=new f({...I,baseURL:t,axios:e,timeout:s,cancellable:o,strategy:i,flattenResponse:u,defaultResponse:a,logger:c,onError:p})}getInstance(){return this.requestHandler.getInstance()}__get(e){return e in this?this[e]:this.endpoints[e]?this.handleRequest.bind(this,e):this.handleNonImplemented.bind(this,e)}async handleRequest(...e){let t=e[0],r=this.endpoints[t],s=e[1]||{},o=e[2]||{},i=e[3]||{},u=r.url.replace(/:[a-z]+/gi,p=>o[p.substring(1)]?o[p.substring(1)]:p),a=null,c={...r};return delete c.url,delete c.method,a=await this.requestHandler[(r.method||"get").toLowerCase()](u,s,{...i,...c}),a}handleNonImplemented(e){var t;return(t=this.logger)!=null&&t.log&&this.logger.log(`${e} endpoint not implemented.`),Promise.resolve(null)}};h=y([v.applyMagic],h);var J=n=>new h(n);})();
//# sourceMappingURL=index.global.js.map
\ No newline at end of file
diff --git a/dist/browser/index.global.js.map b/dist/browser/index.global.js.map
index 152b933..84b52bc 100644
--- a/dist/browser/index.global.js.map
+++ b/dist/browser/index.global.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../node_modules/js-magic/index.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/has-flag/index.js","../node_modules/supports-color/index.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/follow-redirects/debug.js","../node_modules/follow-redirects/index.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/adapters/http.js","../node_modules/delayed-stream/lib/delayed_stream.js","../node_modules/combined-stream/lib/combined_stream.js","../node_modules/mime-db/index.js","../node_modules/mime-types/index.js","../node_modules/asynckit/lib/defer.js","../node_modules/asynckit/lib/async.js","../node_modules/asynckit/lib/abort.js","../node_modules/asynckit/lib/iterate.js","../node_modules/asynckit/lib/state.js","../node_modules/asynckit/lib/terminator.js","../node_modules/asynckit/parallel.js","../node_modules/asynckit/serialOrdered.js","../node_modules/asynckit/serial.js","../node_modules/asynckit/index.js","../node_modules/form-data/lib/populate.js","../node_modules/form-data/lib/form_data.js","../node_modules/axios/lib/defaults/env/FormData.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/api-handler.ts","../src/http-request-handler.ts","../src/http-request-error-handler.ts"],"sourcesContent":[null,"'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\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 && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var 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 {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\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 */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\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 */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\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 (var 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 for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\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 * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n 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 * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\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 * @return {string} content value without BOM\n */\nfunction 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\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\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} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.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 * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction 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 var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","'use strict';\n\nvar utils = require('./../utils');\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 * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\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 */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: 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 */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\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 */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\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 * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\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: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar 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// eslint-disable-next-line func-names\n].forEach(function(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 = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\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 */\nmodule.exports = function settle(resolve, reject, response) {\n var 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\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\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 * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" 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 * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\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 * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\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} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\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 var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var 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 var 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);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), 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 var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: 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, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var 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 // 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 if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\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 (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : 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 if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].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);\n });\n};\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// 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 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);\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// 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 self._processResponse(response);\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n abortRequest(this._currentRequest);\n this.emit(\"abort\");\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 (!(typeof data === \"string\" || typeof data === \"object\" && (\"length\" in data))) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (typeof encoding === \"function\") {\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 (typeof data === \"function\") {\n callback = data;\n data = encoding = null;\n }\n else if (typeof encoding === \"function\") {\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 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\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 this.emit(\"error\", new TypeError(\"Unsupported protocol \" + protocol));\n return;\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._currentUrl = 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 abortRequest(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 this.emit(\"error\", new TooManyRedirectsError());\n return;\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 = url.parse(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 // Determine the URL of the redirection\n var redirectUrl;\n try {\n redirectUrl = url.resolve(currentUrl, location);\n }\n catch (cause) {\n this.emit(\"error\", new RedirectionError(cause));\n return;\n }\n\n // Create the redirected request\n debug(\"redirecting to\", redirectUrl);\n this._isRedirect = true;\n var redirectUrlParts = url.parse(redirectUrl);\n Object.assign(this._options, redirectUrlParts);\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 (redirectUrlParts.protocol !== currentUrlParts.protocol &&\n redirectUrlParts.protocol !== \"https:\" ||\n redirectUrlParts.host !== currentHost &&\n !isSubdomain(redirectUrlParts.host, currentHost)) {\n removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (typeof beforeRedirect === \"function\") {\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 try {\n beforeRedirect(this._options, responseDetails, requestDetails);\n }\n catch (err) {\n this.emit(\"error\", err);\n return;\n }\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n try {\n this._performRequest();\n }\n catch (cause) {\n this.emit(\"error\", new RedirectionError(cause));\n }\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\n if (typeof input === \"string\") {\n var urlStr = input;\n try {\n input = urlToOptions(new URL(urlStr));\n }\n catch (err) {\n /* istanbul ignore next */\n input = url.parse(urlStr);\n }\n }\n else if (URL && (input instanceof URL)) {\n input = urlToOptions(input);\n }\n else {\n callback = options;\n options = input;\n input = { protocol: protocol };\n }\n if (typeof options === \"function\") {\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\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\n/* istanbul ignore next */\nfunction noop() { /* empty */ }\n\n// from https://github.com/nodejs/node/blob/master/lib/internal/url.js\nfunction urlToOptions(urlObject) {\n var options = {\n protocol: urlObject.protocol,\n hostname: urlObject.hostname.startsWith(\"[\") ?\n /* istanbul ignore next */\n urlObject.hostname.slice(1, -1) :\n urlObject.hostname,\n hash: urlObject.hash,\n search: urlObject.search,\n pathname: urlObject.pathname,\n path: urlObject.pathname + urlObject.search,\n href: urlObject.href,\n };\n if (urlObject.port !== \"\") {\n options.port = Number(urlObject.port);\n }\n return options;\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, defaultMessage) {\n function CustomError(cause) {\n Error.captureStackTrace(this, this.constructor);\n if (!cause) {\n this.message = defaultMessage;\n }\n else {\n this.message = defaultMessage + \": \" + cause.message;\n this.cause = cause;\n }\n }\n CustomError.prototype = new Error();\n CustomError.prototype.constructor = CustomError;\n CustomError.prototype.name = \"Error [\" + code + \"]\";\n CustomError.prototype.code = code;\n return CustomError;\n}\n\nfunction abortRequest(request) {\n for (var event of events) {\n request.removeListener(event, eventHandlers[event]);\n }\n request.on(\"error\", noop);\n request.abort();\n}\n\nfunction isSubdomain(subdomain, domain) {\n const dot = subdomain.length - domain.length - 1;\n return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildFullPath = require('../core/buildFullPath');\nvar buildURL = require('./../helpers/buildURL');\nvar http = require('http');\nvar https = require('https');\nvar httpFollow = require('follow-redirects').http;\nvar httpsFollow = require('follow-redirects').https;\nvar url = require('url');\nvar zlib = require('zlib');\nvar VERSION = require('./../env/data').version;\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\n\nvar isHttps = /https:?/;\n\nvar supportedProtocols = [ 'http:', 'https:', 'file:' ];\n\n/**\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} proxy\n * @param {string} location\n */\nfunction setProxy(options, proxy, location) {\n options.hostname = proxy.host;\n options.host = proxy.host;\n options.port = proxy.port;\n options.path = location;\n\n // Basic proxy authorization\n if (proxy.auth) {\n var base64 = Buffer.from(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n // If a proxy is used, any redirects must also pass through the proxy\n options.beforeRedirect = function beforeRedirect(redirection) {\n redirection.headers.host = redirection.host;\n setProxy(redirection, proxy, redirection.href);\n };\n}\n\n/*eslint consistent-return:0*/\nmodule.exports = function httpAdapter(config) {\n return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) {\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n var resolve = function resolve(value) {\n done();\n resolvePromise(value);\n };\n var rejected = false;\n var reject = function reject(value) {\n done();\n rejected = true;\n rejectPromise(value);\n };\n var data = config.data;\n var headers = config.headers;\n var headerNames = {};\n\n Object.keys(headers).forEach(function storeLowerName(name) {\n headerNames[name.toLowerCase()] = name;\n });\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n if ('user-agent' in headerNames) {\n // User-Agent is specified; handle case where no UA header is desired\n if (!headers[headerNames['user-agent']]) {\n delete headers[headerNames['user-agent']];\n }\n // Otherwise, use specified value\n } else {\n // Only set header if it hasn't been set in config\n headers['User-Agent'] = 'axios/' + VERSION;\n }\n\n // support for https://www.npmjs.com/package/form-data api\n if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n Object.assign(headers, data.getHeaders());\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 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 // Add Content-Length header if data exists\n if (!headerNames['content-length']) {\n headers['Content-Length'] = data.length;\n }\n }\n\n // HTTP basic authentication\n var auth = undefined;\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n // Parse url\n var fullPath = buildFullPath(config.baseURL, config.url);\n var parsed = url.parse(fullPath);\n var protocol = parsed.protocol || supportedProtocols[0];\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 if (!auth && parsed.auth) {\n var urlAuth = parsed.auth.split(':');\n var urlUsername = urlAuth[0] || '';\n var urlPassword = urlAuth[1] || '';\n auth = urlUsername + ':' + urlPassword;\n }\n\n if (auth && headerNames.authorization) {\n delete headers[headerNames.authorization];\n }\n\n var isHttpsRequest = isHttps.test(protocol);\n var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n\n try {\n buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\\?/, '');\n } catch (err) {\n var customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n reject(customErr);\n }\n\n var options = {\n path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\\?/, ''),\n method: config.method.toUpperCase(),\n headers: headers,\n agent: agent,\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth: auth\n };\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n }\n\n var proxy = config.proxy;\n if (!proxy && proxy !== false) {\n var proxyEnv = protocol.slice(0, -1) + '_proxy';\n var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()];\n if (proxyUrl) {\n var parsedProxyUrl = url.parse(proxyUrl);\n var noProxyEnv = process.env.no_proxy || process.env.NO_PROXY;\n var shouldProxy = true;\n\n if (noProxyEnv) {\n var noProxy = noProxyEnv.split(',').map(function trim(s) {\n return s.trim();\n });\n\n shouldProxy = !noProxy.some(function proxyMatch(proxyElement) {\n if (!proxyElement) {\n return false;\n }\n if (proxyElement === '*') {\n return true;\n }\n if (proxyElement[0] === '.' &&\n parsed.hostname.substr(parsed.hostname.length - proxyElement.length) === proxyElement) {\n return true;\n }\n\n return parsed.hostname === proxyElement;\n });\n }\n\n if (shouldProxy) {\n proxy = {\n host: parsedProxyUrl.hostname,\n port: parsedProxyUrl.port,\n protocol: parsedProxyUrl.protocol\n };\n\n if (parsedProxyUrl.auth) {\n var proxyUrlAuth = parsedProxyUrl.auth.split(':');\n proxy.auth = {\n username: proxyUrlAuth[0],\n password: proxyUrlAuth[1]\n };\n }\n }\n }\n }\n\n if (proxy) {\n options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : '');\n setProxy(options, proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n var transport;\n var isHttpsProxy = isHttpsRequest && (proxy ? isHttps.test(proxy.protocol) : true);\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsProxy ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirect = config.beforeRedirect;\n }\n transport = isHttpsProxy ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n var req = transport.request(options, function handleResponse(res) {\n if (req.aborted) return;\n\n // uncompress the response body transparently if required\n var stream = res;\n\n // return the last request in case of redirects\n var lastRequest = res.req || req;\n\n\n // if no content, is HEAD request or decompress disabled we should not decompress\n if (res.statusCode !== 204 && lastRequest.method !== 'HEAD' && config.decompress !== false) {\n switch (res.headers['content-encoding']) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'compress':\n case 'deflate':\n // add the unzipper to the body stream processing pipeline\n stream = stream.pipe(zlib.createUnzip());\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n }\n }\n\n var response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: res.headers,\n config: config,\n request: lastRequest\n };\n\n if (config.responseType === 'stream') {\n response.data = stream;\n settle(resolve, reject, response);\n } else {\n var responseBuffer = [];\n var totalResponseBytes = 0;\n stream.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.destoy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n stream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n stream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n stream.destroy();\n reject(new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n ));\n });\n\n stream.on('error', function handleStreamError(err) {\n if (req.aborted) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n stream.on('end', function handleStreamEnd() {\n try {\n var responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (config.responseType !== 'arraybuffer') {\n responseData = responseData.toString(config.responseEncoding);\n if (!config.responseEncoding || config.responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\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 var timeout = parseInt(config.timeout, 10);\n\n if (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 devoring 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 req.abort();\n var transitional = config.transitional || transitionalDefaults;\n reject(new AxiosError(\n 'timeout of ' + timeout + 'ms exceeded',\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n });\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (req.aborted) return;\n\n req.abort();\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\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\n // Send the request\n if (utils.isStream(data)) {\n data.on('error', function handleStreamError(err) {\n reject(AxiosError.from(err, config, null, req));\n }).pipe(req);\n } else {\n req.end(data);\n }\n });\n};\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","// eslint-disable-next-line strict\nmodule.exports = require('form-data');\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\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\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\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: require('./env/FormData')\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 }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\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();\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 * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = 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 response.data,\n response.headers,\n config.transformResponse\n );\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 reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\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 * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(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(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var 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 '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 };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\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 * @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 function(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 * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\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 var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var 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\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(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 {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function 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 // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\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 // filter out skipped interceptors\n var requestInterceptorChain = [];\n var 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 var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\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: method,\n url: 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: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(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) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function 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\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var 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 */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = 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 * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\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\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/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};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/axios');","// 3rd party libs\nimport {\n applyMagic,\n MagicalClass,\n} from 'js-magic';\n\n// Types\nimport {\n AxiosInstance,\n} from 'axios';\n\nimport {\n IRequestResponse,\n APIHandlerConfig,\n EndpointConfig,\n} from './types/http-request';\n\nimport {\n HttpRequestHandler,\n} from './http-request-handler';\n\n/**\n * Handles dispatching of API requests\n */\n@applyMagic\nexport class ApiHandler implements MagicalClass {\n /**\n * TS Index signature\n */\n [x: string]: any;\n\n /**\n * Api Url\n */\n public apiUrl = '';\n\n /**\n * @var httpRequestHandler Request Wrapper Instance\n */\n public httpRequestHandler: HttpRequestHandler;\n\n /**\n * Endpoints\n */\n public endpoints: Record;\n\n /**\n * Logger\n */\n public logger: any;\n\n /**\n * Creates an instance of API Handler\n *\n * @param {string} apiUrl Base URL for all API calls\n * @param {number} timeout Request timeout\n * @param {string} strategy Error Handling Strategy\n * @param {string} flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} logger Instance of Logger Class\n * @param {*} onError Instance of Error Service Class\n */\n public constructor({\n apiUrl,\n endpoints,\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: APIHandlerConfig) {\n this.apiUrl = apiUrl;\n this.endpoints = endpoints;\n this.logger = logger;\n\n this.httpRequestHandler = new HttpRequestHandler({\n ...config,\n baseURL: this.apiUrl,\n timeout,\n cancellable,\n strategy,\n flattenResponse,\n defaultResponse,\n logger,\n onError,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.httpRequestHandler.getInstance();\n }\n\n /**\n * Maps all API requests\n *\n * @param {*} prop Caller\n * @returns {Function} Tailored request function\n */\n public __get(prop: any): any {\n if (prop in this) {\n return this[prop];\n }\n\n // Prevent handler from running for non-existent endpoints\n if (!this.endpoints[prop]) {\n return this.handleNonImplemented.bind(this, prop)\n }\n\n return this.handleRequest.bind(this, prop);\n }\n\n /**\n * Handle Single API Request\n *\n * @param {*} args Arguments\n * @returns {Promise} Resolvable API provider promise\n */\n public async handleRequest(...args: any): Promise {\n const prop = args[0];\n const endpointSettings = this.endpoints[prop];\n\n const queryParams = args[1] || {};\n const uriParams = args[2] || {};\n const requestConfig = args[3] || {};\n\n const uri = endpointSettings.url.replace(/:[a-z]+/gi, (str: string) =>\n uriParams[str.substring(1)] ? uriParams[str.substring(1)] : str\n );\n\n let responseData = null;\n\n const additionalRequestSettings = { ...endpointSettings };\n\n delete additionalRequestSettings.url;\n delete additionalRequestSettings.method;\n\n responseData = await this.httpRequestHandler[(endpointSettings.method || 'get').toLowerCase()](uri, queryParams, {\n ...requestConfig,\n ...additionalRequestSettings,\n });\n\n return responseData;\n }\n\n /**\n * Triggered when trying to use non-existent endpoints\n *\n * @param prop Method Name\n * @returns {Promise}\n */\n protected handleNonImplemented(prop: string): Promise {\n if (this.logger && this.logger.log) {\n this.logger.log(`${prop} endpoint not implemented.`)\n }\n\n return Promise.resolve(null);\n }\n}\n\nexport const createApiFetcher = (options: APIHandlerConfig) => new ApiHandler(options);\n","// 3rd party libs\nimport axios, { AxiosInstance, Method } from 'axios';\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Shared Modules\nimport { HttpRequestErrorHandler } from './http-request-error-handler';\n\n// Types\nimport {\n IRequestData,\n IRequestResponse,\n InterceptorCallback,\n ErrorHandlingStrategy,\n RequestHandlerConfig,\n EndpointConfig,\n RequestError,\n} from './types/http-request';\n\n/**\n * Generic Request Handler\n * It creates an Axios instance and handles requests within that instance\n * It handles errors depending on a chosen error handling strategy\n */\n@applyMagic\nexport class HttpRequestHandler implements MagicalClass {\n /**\n * @var requestInstance Provider's instance\n */\n public requestInstance: AxiosInstance;\n\n /**\n * @var timeout Request timeout\n */\n public timeout: number = 30000;\n\n /**\n * @var cancellable Response cancellation\n */\n public cancellable: boolean = false;\n\n /**\n * @var strategy Request timeout\n */\n public strategy: ErrorHandlingStrategy = 'reject';\n\n /**\n * @var flattenResponse Response flattening\n */\n public flattenResponse: boolean = true;\n\n /**\n * @var defaultResponse Response flattening\n */\n public defaultResponse: any = null;\n\n /**\n * @var logger Logger\n */\n protected logger: any;\n\n /**\n * @var httpRequestErrorService HTTP error service\n */\n protected httpRequestErrorService: any;\n\n /**\n * @var requestsQueue Queue of requests\n */\n protected requestsQueue: Map;\n\n /**\n * Creates an instance of HttpRequestHandler\n *\n * @param {string} baseURL Base URL for all API calls\n * @param {number} timeout Request timeout\n * @param {string} strategy Error Handling Strategy\n * @param {string} flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} logger Instance of Logger Class\n * @param {*} httpRequestErrorService Instance of Error Service Class\n */\n public constructor({\n baseURL = '',\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: RequestHandlerConfig) {\n this.timeout = timeout !== null ? timeout : this.timeout;\n this.strategy = strategy !== null ? strategy : this.strategy;\n this.cancellable = cancellable || this.cancellable;\n this.flattenResponse =\n flattenResponse !== null ? flattenResponse : this.flattenResponse;\n this.defaultResponse = defaultResponse;\n this.logger = logger || global.console || window.console || null;\n this.httpRequestErrorService = onError;\n this.requestsQueue = new Map();\n\n this.requestInstance = axios.create({\n ...config,\n baseURL,\n timeout: this.timeout,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestInstance;\n }\n\n /**\n * Intercept Request\n *\n * @param {*} callback callback to use before request\n * @returns {void}\n */\n public interceptRequest(callback: InterceptorCallback): void {\n this.getInstance().interceptors.request.use(callback);\n }\n\n /**\n * Maps all API requests\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public __get(prop: string) {\n if (prop in this) {\n return this[prop];\n }\n\n return this.prepareRequest.bind(this, prop);\n }\n\n /**\n * Prepare Request\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public prepareRequest(\n type: Method,\n url: string,\n data: any = null,\n config: EndpointConfig = null\n ): Promise {\n return this.handleRequest({\n type,\n url,\n data,\n config,\n });\n }\n\n /**\n * Build request configuration\n *\n * @param {string} method Request method\n * @param {string} url Request url\n * @param {*} data Request data\n * @param {EndpointConfig} config Request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected buildRequestConfig(\n method: string,\n url: string,\n data: any,\n config: EndpointConfig\n ): EndpointConfig {\n const methodLowerCase = method.toLowerCase() as Method;\n const key =\n methodLowerCase === 'get' || methodLowerCase === 'head'\n ? 'params'\n : 'data';\n\n return {\n ...config,\n url,\n method: methodLowerCase,\n [key]: data || {},\n };\n }\n\n /**\n * Process global Request Error\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected processRequestError(\n error: RequestError,\n requestConfig: EndpointConfig\n ): void {\n if (this.isRequestCancelled(error, requestConfig)) {\n return;\n }\n\n // Invoke per request \"onError\" call\n if (requestConfig.onError && typeof requestConfig.onError === 'function') {\n requestConfig.onError(error);\n }\n\n const errorHandler = new HttpRequestErrorHandler(\n this.logger,\n this.httpRequestErrorService\n );\n\n errorHandler.process(error);\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected async outputErrorResponse(\n error: RequestError,\n requestConfig: EndpointConfig\n ): Promise {\n const isRequestCancelled = this.isRequestCancelled(error, requestConfig);\n const errorHandlingStrategy = requestConfig.strategy || this.strategy;\n\n // By default cancelled requests aren't rejected\n if (isRequestCancelled && !requestConfig.rejectCancelled) {\n return this.defaultResponse;\n }\n\n if (errorHandlingStrategy === 'silent') {\n // Hang the promise\n await new Promise(() => null);\n\n return this.defaultResponse;\n }\n\n // Simply rejects a request promise\n if (\n errorHandlingStrategy === 'reject' ||\n errorHandlingStrategy === 'throwError'\n ) {\n return Promise.reject(error);\n }\n\n return this.defaultResponse;\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} _requestConfig Per endpoint request config\n * @returns {*} Error response\n */\n public isRequestCancelled(\n error: RequestError,\n _requestConfig: EndpointConfig\n ): boolean {\n return axios.isCancel(error);\n }\n\n /**\n * Automatically Cancel Previous Requests\n *\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected addCancellationToken(requestConfig: EndpointConfig) {\n // Both disabled\n if (!this.cancellable && !requestConfig.cancellable) {\n return {};\n }\n\n // Explicitly disabled per request\n if (\n typeof requestConfig.cancellable !== 'undefined' &&\n !requestConfig.cancellable\n ) {\n return {};\n }\n\n // Check if AbortController is available\n if (typeof AbortController === 'undefined') {\n console.error('AbortController is unavailable in your ENV.');\n\n return {};\n }\n\n const {\n method,\n baseURL,\n url,\n params,\n data,\n } = requestConfig;\n\n // Generate unique key as a cancellation token. Make sure it fits Map\n const key = JSON.stringify([\n method,\n baseURL,\n url,\n params,\n data,\n ]).substring(0, 55 ** 5);\n const previousRequest = this.requestsQueue.get(key);\n\n if (previousRequest) {\n previousRequest.abort();\n }\n\n const controller = new AbortController();\n\n this.requestsQueue.set(key, controller);\n\n return {\n signal: controller.signal,\n };\n }\n\n /**\n * Handle Request depending on used strategy\n *\n * @param {object} payload Payload\n * @param {string} payload.type Request type\n * @param {string} payload.url Request url\n * @param {*} payload.data Request data\n * @param {EndpointConfig} payload.config Request config\n * @throws {RequestError}\n * @returns {Promise} Response Data\n */\n protected async handleRequest({\n type,\n url,\n data = null,\n config = null,\n }: IRequestData): Promise {\n let response = null;\n const endpointConfig = config || {};\n let requestConfig = this.buildRequestConfig(\n type,\n url,\n data,\n endpointConfig\n );\n\n requestConfig = {\n ...this.addCancellationToken(requestConfig),\n ...requestConfig,\n };\n\n try {\n response = await this.requestInstance.request(requestConfig);\n } catch (error) {\n this.processRequestError(error, requestConfig);\n\n return this.outputErrorResponse(error, requestConfig);\n }\n\n return this.processResponseData(response);\n }\n\n /**\n * Process request response\n *\n * @param response Response object\n * @returns {*} Response data\n */\n protected processResponseData(response) {\n if (response.data) {\n if (!this.flattenResponse) {\n return response;\n }\n\n // Special case of data property within Axios data object\n // This is in fact a proper response but we may want to flatten it\n // To ease developers' lives when obtaining the response\n if (\n typeof response.data === 'object' &&\n typeof response.data.data !== 'undefined' &&\n Object.keys(response.data).length === 1\n ) {\n return response.data.data;\n }\n\n return response.data;\n }\n\n return this.defaultResponse;\n }\n}\n","export class HttpRequestErrorHandler {\n /**\n * Logger Class\n *\n * @type {*}\n * @memberof HttpRequestErrorHandler\n */\n public logger: any;\n\n /**\n * Error Service Class\n *\n * @type {*}\n * @memberof HttpRequestErrorHandler\n */\n public httpRequestErrorService: any;\n\n public constructor(logger: any, httpRequestErrorService: any) {\n this.logger = logger;\n this.httpRequestErrorService = httpRequestErrorService;\n }\n\n /**\n * Process and Error\n *\n * @param {*} error Error instance or message\n * @throws Request error context\n * @returns {void}\n */\n public process(error: string | Error) {\n if (this.logger && this.logger.warn) {\n this.logger.warn('API ERROR', error);\n }\n\n let errorContext = error;\n\n if (typeof error === 'string') {\n errorContext = new Error(error);\n }\n\n if (this.httpRequestErrorService) {\n if (typeof this.httpRequestErrorService.process !== 'undefined') {\n this.httpRequestErrorService.process(errorContext);\n } else if (typeof this.httpRequestErrorService === 'function') {\n this.httpRequestErrorService(errorContext);\n }\n }\n }\n}"],"mappings":"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","names":["exports","warnedInvokeDeprecation","applyMagic","target","proxyOnly","proxify","PseudoClass","args","invoke","checkType","proto","setProp","obj","ctor","fn","name","argLength","prop","value","writable","get","set","has","_delete","require_bind","__commonJSMin","exports","module","fn","thisArg","args","i","require_utils","__commonJSMin","exports","module","bind","toString","kindOf","cache","thing","str","kindOfTest","type","isArray","val","isUndefined","isBuffer","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isFunction","isStream","isFormData","pattern","isURLSearchParams","trim","isStandardBrowserEnv","forEach","obj","fn","l","key","merge","assignValue","extend","b","thisArg","stripBOM","content","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","i","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","require_buildURL","__commonJSMin","exports","module","utils","encode","val","url","params","paramsSerializer","serializedParams","parts","key","v","hashmarkIndex","require_InterceptorManager","__commonJSMin","exports","module","utils","InterceptorManager","fulfilled","rejected","options","id","fn","h","require_normalizeHeaderName","__commonJSMin","exports","module","utils","headers","normalizedName","value","name","require_AxiosError","__commonJSMin","exports","module","utils","AxiosError","message","code","config","request","response","prototype","descriptors","error","customProps","axiosError","obj","require_transitional","__commonJSMin","exports","module","require_toFormData","__commonJSMin","exports","module","utils","toFormData","obj","formData","stack","convertValue","value","build","data","parentKey","key","fullKey","arr","el","require_settle","__commonJSMin","exports","module","AxiosError","resolve","reject","response","validateStatus","require_cookies","__commonJSMin","exports","module","utils","name","value","expires","path","domain","secure","cookie","match","require_isAbsoluteURL","__commonJSMin","exports","module","url","require_combineURLs","__commonJSMin","exports","module","baseURL","relativeURL","require_buildFullPath","__commonJSMin","exports","module","isAbsoluteURL","combineURLs","baseURL","requestedURL","require_parseHeaders","__commonJSMin","exports","module","utils","ignoreDuplicateOf","headers","parsed","key","val","i","line","require_isURLSameOrigin","__commonJSMin","exports","module","utils","msie","urlParsingNode","originURL","resolveURL","url","href","requestURL","parsed","require_CanceledError","__commonJSMin","exports","module","AxiosError","utils","CanceledError","message","require_parseProtocol","__commonJSMin","exports","module","url","match","require_xhr","__commonJSMin","exports","module","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","resolve","reject","requestData","requestHeaders","responseType","onCanceled","done","request","username","password","fullPath","onloadend","responseHeaders","responseData","response","value","err","timeoutErrorMessage","transitional","xsrfValue","val","key","cancel","protocol","require_ms","__commonJSMin","exports","module","s","m","h","d","w","y","val","options","type","parse","fmtLong","fmtShort","str","match","n","ms","msAbs","plural","name","isPlural","require_common","__commonJSMin","exports","module","setup","env","createDebug","coerce","disable","enable","enabled","destroy","key","selectColor","namespace","hash","i","prevTime","enableOverride","namespacesCache","enabledCache","debug","args","self","curr","ms","index","match","format","formatter","val","extend","v","delimiter","newDebug","namespaces","split","len","toNamespace","name","regexp","require_browser","__commonJSMin","exports","module","formatArgs","save","load","useColors","localstorage","warned","args","c","index","lastC","match","namespaces","r","formatters","v","error","require_has_flag","__commonJSMin","exports","module","flag","argv","prefix","position","terminatorPosition","require_supports_color","__commonJSMin","exports","module","os","tty","hasFlag","env","forceColor","translateLevel","level","supportsColor","haveStream","streamIsTTY","min","osRelease","sign","version","getSupportLevel","stream","require_node","__commonJSMin","exports","module","tty","util","init","log","formatArgs","save","load","useColors","supportsColor","key","obj","prop","_","k","val","args","name","c","colorCode","prefix","getDate","namespaces","debug","keys","formatters","v","str","require_src","__commonJSMin","exports","module","require_debug","__commonJSMin","exports","module","debug","require_follow_redirects","__commonJSMin","exports","module","url","URL","http","https","Writable","assert","debug","events","eventHandlers","event","arg1","arg2","arg3","RedirectionError","createErrorType","TooManyRedirectsError","MaxBodyLengthExceededError","WriteAfterEndError","RedirectableRequest","options","responseCallback","self","response","abortRequest","data","encoding","callback","currentRequest","name","value","msecs","destroyOnTimeout","socket","startTimer","clearTimer","method","a","b","property","searchPos","protocol","nativeProtocol","scheme","request","i","buffers","writeNext","error","buffer","statusCode","location","requestHeaders","beforeRedirect","removeMatchingHeaders","currentHostHeader","currentUrlParts","currentHost","currentUrl","redirectUrl","cause","redirectUrlParts","isSubdomain","responseDetails","requestDetails","err","wrap","protocols","nativeProtocols","wrappedProtocol","input","urlStr","urlToOptions","get","wrappedRequest","noop","urlObject","regex","headers","lastValue","header","code","defaultMessage","CustomError","subdomain","domain","dot","require_data","__commonJSMin","exports","module","require_http","__commonJSMin","exports","module","utils","settle","buildFullPath","buildURL","http","https","httpFollow","httpsFollow","url","zlib","VERSION","transitionalDefaults","AxiosError","CanceledError","isHttps","supportedProtocols","setProxy","options","proxy","location","base64","redirection","config","resolvePromise","rejectPromise","onCanceled","done","resolve","value","rejected","reject","data","headers","headerNames","name","auth","username","password","fullPath","parsed","protocol","urlAuth","urlUsername","urlPassword","isHttpsRequest","agent","err","customErr","proxyEnv","proxyUrl","parsedProxyUrl","noProxyEnv","shouldProxy","noProxy","s","proxyElement","proxyUrlAuth","transport","isHttpsProxy","req","res","stream","lastRequest","response","responseBuffer","totalResponseBytes","chunk","responseData","socket","timeout","transitional","cancel","require_delayed_stream","__commonJSMin","exports","module","Stream","util","DelayedStream","source","options","delayedStream","option","realEmit","args","r","message","require_combined_stream","__commonJSMin","exports","module","util","Stream","DelayedStream","CombinedStream","options","combinedStream","option","stream","isStreamLike","newStream","dest","getStream","value","self","err","data","message","require_mime_db","__commonJSMin","exports","module","require_mime_types","__commonJSMin","exports","db","extname","EXTRACT_TYPE_REGEXP","TEXT_TYPE_REGEXP","charset","contentType","extension","lookup","populateMaps","type","match","mime","str","exts","path","extensions","types","preference","i","from","to","require_defer","__commonJSMin","exports","module","defer","fn","nextTick","require_async","__commonJSMin","exports","module","defer","async","callback","isAsync","err","result","require_abort","__commonJSMin","exports","module","abort","state","clean","key","require_iterate","__commonJSMin","exports","module","async","abort","iterate","list","iterator","state","callback","key","runJob","error","output","item","aborter","require_state","__commonJSMin","exports","module","state","list","sortMethod","isNamedList","initState","a","b","require_terminator","__commonJSMin","exports","module","abort","async","terminator","callback","require_parallel","__commonJSMin","exports","module","iterate","initState","terminator","parallel","list","iterator","callback","state","error","result","require_serialOrdered","__commonJSMin","exports","module","iterate","initState","terminator","serialOrdered","ascending","descending","list","iterator","sortMethod","callback","state","iteratorHandler","error","result","b","require_serial","__commonJSMin","exports","module","serialOrdered","serial","list","iterator","callback","require_asynckit","__commonJSMin","exports","module","require_populate","__commonJSMin","exports","module","dst","src","prop","require_form_data","__commonJSMin","exports","module","CombinedStream","util","path","http","https","parseUrl","fs","Stream","mime","asynckit","populate","FormData","options","option","field","value","append","header","footer","valueLength","callback","err","stat","fileSize","response","contentDisposition","contentType","contents","headers","prop","filename","next","lastPart","userHeaders","formHeaders","boundary","dataBuffer","len","i","knownLength","hasKnownLength","cb","values","length","params","request","defaults","onResponse","error","responce","require_FormData","__commonJSMin","exports","module","require_defaults","__commonJSMin","exports","module","utils","normalizeHeaderName","AxiosError","transitionalDefaults","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","value","getDefaultAdapter","adapter","stringifySafely","rawValue","parser","encoder","e","defaults","data","isObjectPayload","contentType","isFileList","_FormData","transitional","silentJSONParsing","forcedJSONParsing","strictJSONParsing","status","method","require_transformData","__commonJSMin","exports","module","utils","defaults","data","headers","fns","context","fn","require_isCancel","__commonJSMin","exports","module","value","require_dispatchRequest","__commonJSMin","exports","module","utils","transformData","isCancel","defaults","CanceledError","throwIfCancellationRequested","config","method","adapter","response","reason","require_mergeConfig","__commonJSMin","exports","module","utils","config1","config2","config","getMergedValue","target","source","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","merge","configValue","require_validator","__commonJSMin","exports","module","VERSION","AxiosError","validators","type","i","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","value","opts","assertOptions","options","schema","allowUnknown","keys","result","require_Axios","__commonJSMin","exports","module","utils","buildURL","InterceptorManager","dispatchRequest","mergeConfig","buildFullPath","validator","validators","Axios","instanceConfig","configOrUrl","config","transitional","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","error","fullPath","method","url","generateHTTPMethod","isForm","data","require_CancelToken","__commonJSMin","exports","module","CanceledError","CancelToken","executor","resolvePromise","resolve","token","cancel","i","l","onfulfilled","_resolve","promise","message","listener","index","c","require_spread","__commonJSMin","exports","module","callback","arr","require_isAxiosError","__commonJSMin","exports","module","utils","payload","require_axios","__commonJSMin","exports","module","utils","bind","Axios","mergeConfig","defaults","createInstance","defaultConfig","context","instance","instanceConfig","axios","promises","require_axios","__commonJSMin","exports","module","import_js_magic","import_axios","import_js_magic","HttpRequestErrorHandler","logger","httpRequestErrorService","error","errorContext","HttpRequestHandler","baseURL","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","axios","callback","prop","type","url","data","method","methodLowerCase","error","requestConfig","HttpRequestErrorHandler","isRequestCancelled","errorHandlingStrategy","_requestConfig","params","key","previousRequest","controller","response","endpointConfig","__decorateClass","ApiHandler","apiUrl","endpoints","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","HttpRequestHandler","prop","args","endpointSettings","queryParams","uriParams","requestConfig","uri","str","responseData","additionalRequestSettings","__decorateClass","createApiFetcher","options"]}
\ No newline at end of file
+{"version":3,"sources":["../node_modules/js-magic/index.ts","../src/api-handler.ts","../src/request-handler.ts","../src/request-error-handler.ts"],"sourcesContent":[null,"// 3rd party libs\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Types\nimport type { AxiosInstance } from 'axios';\n\nimport {\n IRequestResponse,\n APIHandlerConfig,\n EndpointConfig,\n} from './types/http-request';\n\nimport { RequestHandler } from './request-handler';\n\n/**\n * Handles dispatching of API requests\n */\n@applyMagic\nexport class ApiHandler implements MagicalClass {\n /**\n * TS Index signature\n */\n [x: string]: any;\n\n /**\n * @var requestHandler Request Wrapper Instance\n */\n public requestHandler: RequestHandler;\n\n /**\n * Endpoints\n */\n protected endpoints: Record;\n\n /**\n * Logger\n */\n protected logger: any;\n\n /**\n * Creates an instance of API Handler\n *\n * @param {string} config.apiUrl Base URL for all API calls\n * @param {number} config.timeout Request timeout\n * @param {string} config.strategy Error Handling Strategy\n * @param {string} config.flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} config.logger Instance of Logger Class\n * @param {*} config.onError Instance of Error Service Class\n */\n public constructor({\n axios,\n apiUrl,\n endpoints,\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: APIHandlerConfig) {\n this.endpoints = endpoints;\n this.logger = logger;\n\n this.requestHandler = new RequestHandler({\n ...config,\n baseURL: apiUrl,\n axios,\n timeout,\n cancellable,\n strategy,\n flattenResponse,\n defaultResponse,\n logger,\n onError,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestHandler.getInstance();\n }\n\n /**\n * Maps all API requests\n *\n * @param {*} prop Caller\n * @returns {Function} Tailored request function\n */\n public __get(prop: any): any {\n if (prop in this) {\n return this[prop];\n }\n\n // Prevent handler from running for non-existent endpoints\n if (!this.endpoints[prop]) {\n return this.handleNonImplemented.bind(this, prop);\n }\n\n return this.handleRequest.bind(this, prop);\n }\n\n /**\n * Handle Single API Request\n *\n * @param {*} args Arguments\n * @returns {Promise} Resolvable API provider promise\n */\n public async handleRequest(...args: any): Promise {\n const prop = args[0];\n const endpointSettings = this.endpoints[prop];\n\n const queryParams = args[1] || {};\n const uriParams = args[2] || {};\n const requestConfig = args[3] || {};\n\n const uri = endpointSettings.url.replace(/:[a-z]+/gi, (str: string) =>\n uriParams[str.substring(1)] ? uriParams[str.substring(1)] : str\n );\n\n let responseData = null;\n\n const additionalRequestSettings = { ...endpointSettings };\n\n delete additionalRequestSettings.url;\n delete additionalRequestSettings.method;\n\n responseData = await this.requestHandler[\n (endpointSettings.method || 'get').toLowerCase()\n ](uri, queryParams, {\n ...requestConfig,\n ...additionalRequestSettings,\n });\n\n return responseData;\n }\n\n /**\n * Triggered when trying to use non-existent endpoints\n *\n * @param prop Method Name\n * @returns {Promise}\n */\n protected handleNonImplemented(prop: string): Promise {\n if (this.logger?.log) {\n this.logger.log(`${prop} endpoint not implemented.`);\n }\n\n return Promise.resolve(null);\n }\n}\n\nexport const createApiFetcher = (options: APIHandlerConfig) =>\n new ApiHandler(options);\n","// 3rd party libs\nimport type { AxiosInstance, AxiosStatic, Method } from 'axios';\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Shared Modules\nimport { RequestErrorHandler } from './request-error-handler';\n\n// Types\nimport type {\n IRequestData,\n IRequestResponse,\n ErrorHandlingStrategy,\n RequestHandlerConfig,\n EndpointConfig,\n RequestError,\n} from './types/http-request';\n\n/**\n * Generic Request Handler\n * It creates an Axios instance and handles requests within that instance\n * It handles errors depending on a chosen error handling strategy\n */\n@applyMagic\nexport class RequestHandler implements MagicalClass {\n /**\n * @var requestInstance Provider's instance\n */\n public requestInstance: AxiosInstance;\n\n /**\n * @var timeout Request timeout\n */\n public timeout: number = 30000;\n\n /**\n * @var cancellable Response cancellation\n */\n public cancellable: boolean = false;\n\n /**\n * @var strategy Request timeout\n */\n public strategy: ErrorHandlingStrategy = 'reject';\n\n /**\n * @var flattenResponse Response flattening\n */\n public flattenResponse: boolean = true;\n\n /**\n * @var defaultResponse Response flattening\n */\n public defaultResponse: any = null;\n\n /**\n * @var axios Axios instance\n */\n protected axios: AxiosStatic;\n\n /**\n * @var logger Logger\n */\n protected logger: any;\n\n /**\n * @var requestErrorService HTTP error service\n */\n protected requestErrorService: any;\n\n /**\n * @var requestsQueue Queue of requests\n */\n protected requestsQueue: Map;\n\n /**\n * Creates an instance of HttpRequestHandler\n *\n * @param {string} config.axios Axios instance\n * @param {string} config.baseURL Base URL for all API calls\n * @param {number} config.timeout Request timeout\n * @param {string} config.strategy Error Handling Strategy\n * @param {string} config.flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} config.logger Instance of Logger Class\n * @param {*} config.requestErrorService Instance of Error Service Class\n */\n public constructor({\n axios,\n baseURL = '',\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: RequestHandlerConfig) {\n this.axios = axios;\n this.timeout = timeout !== null ? timeout : this.timeout;\n this.strategy = strategy !== null ? strategy : this.strategy;\n this.cancellable = cancellable || this.cancellable;\n this.flattenResponse =\n flattenResponse !== null ? flattenResponse : this.flattenResponse;\n this.defaultResponse = defaultResponse;\n this.logger = logger || global.console || window.console || null;\n this.requestErrorService = onError;\n this.requestsQueue = new Map();\n\n this.requestInstance = axios.create({\n ...config,\n baseURL,\n timeout: this.timeout,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestInstance;\n }\n\n /**\n * Maps all API requests\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public __get(prop: string) {\n if (prop in this) {\n return this[prop];\n }\n\n return this.prepareRequest.bind(this, prop);\n }\n\n /**\n * Prepare Request\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public prepareRequest(\n type: Method,\n url: string,\n data: any = null,\n config: EndpointConfig = null\n ): Promise {\n return this.handleRequest({\n type,\n url,\n data,\n config,\n });\n }\n\n /**\n * Build request configuration\n *\n * @param {string} method Request method\n * @param {string} url Request url\n * @param {*} data Request data\n * @param {EndpointConfig} config Request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected buildRequestConfig(\n method: string,\n url: string,\n data: any,\n config: EndpointConfig\n ): EndpointConfig {\n const methodLowerCase = method.toLowerCase() as Method;\n const key =\n methodLowerCase === 'get' || methodLowerCase === 'head'\n ? 'params'\n : 'data';\n\n return {\n ...config,\n url,\n method: methodLowerCase,\n [key]: data || {},\n };\n }\n\n /**\n * Process global Request Error\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected processRequestError(\n error: RequestError,\n requestConfig: EndpointConfig\n ): void {\n if (this.isRequestCancelled(error, requestConfig)) {\n return;\n }\n\n // Invoke per request \"onError\" call\n if (requestConfig.onError && typeof requestConfig.onError === 'function') {\n requestConfig.onError(error);\n }\n\n const errorHandler = new RequestErrorHandler(\n this.logger,\n this.requestErrorService\n );\n\n errorHandler.process(error);\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected async outputErrorResponse(\n error: RequestError,\n requestConfig: EndpointConfig\n ): Promise {\n const isRequestCancelled = this.isRequestCancelled(error, requestConfig);\n const errorHandlingStrategy = requestConfig.strategy || this.strategy;\n\n // By default cancelled requests aren't rejected\n if (isRequestCancelled && !requestConfig.rejectCancelled) {\n return this.defaultResponse;\n }\n\n if (errorHandlingStrategy === 'silent') {\n // Hang the promise\n await new Promise(() => null);\n\n return this.defaultResponse;\n }\n\n // Simply rejects a request promise\n if (\n errorHandlingStrategy === 'reject' ||\n errorHandlingStrategy === 'throwError'\n ) {\n return Promise.reject(error);\n }\n\n return this.defaultResponse;\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} _requestConfig Per endpoint request config\n * @returns {*} Error response\n */\n public isRequestCancelled(\n error: RequestError,\n _requestConfig: EndpointConfig\n ): boolean {\n return this.axios.isCancel(error);\n }\n\n /**\n * Automatically Cancel Previous Requests\n *\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected addCancellationToken(requestConfig: EndpointConfig) {\n // Both disabled\n if (!this.cancellable && !requestConfig.cancellable) {\n return {};\n }\n\n // Explicitly disabled per request\n if (\n typeof requestConfig.cancellable !== 'undefined' &&\n !requestConfig.cancellable\n ) {\n return {};\n }\n\n // Check if AbortController is available\n if (typeof AbortController === 'undefined') {\n console.error('AbortController is unavailable in your ENV.');\n\n return {};\n }\n\n const { method, baseURL, url, params, data } = requestConfig;\n\n // Generate unique key as a cancellation token. Make sure it fits Map\n const key = JSON.stringify([method, baseURL, url, params, data]).substring(\n 0,\n 55 ** 5\n );\n const previousRequest = this.requestsQueue.get(key);\n\n if (previousRequest) {\n previousRequest.abort();\n }\n\n const controller = new AbortController();\n\n this.requestsQueue.set(key, controller);\n\n return {\n signal: controller.signal,\n };\n }\n\n /**\n * Handle Request depending on used strategy\n *\n * @param {object} payload Payload\n * @param {string} payload.type Request type\n * @param {string} payload.url Request url\n * @param {*} payload.data Request data\n * @param {EndpointConfig} payload.config Request config\n * @throws {RequestError}\n * @returns {Promise} Response Data\n */\n protected async handleRequest({\n type,\n url,\n data = null,\n config = null,\n }: IRequestData): Promise {\n let response = null;\n const endpointConfig = config || {};\n let requestConfig = this.buildRequestConfig(\n type,\n url,\n data,\n endpointConfig\n );\n\n requestConfig = {\n ...this.addCancellationToken(requestConfig),\n ...requestConfig,\n };\n\n try {\n response = await this.requestInstance.request(requestConfig);\n } catch (error) {\n this.processRequestError(error, requestConfig);\n\n return this.outputErrorResponse(error, requestConfig);\n }\n\n return this.processResponseData(response);\n }\n\n /**\n * Process request response\n *\n * @param response Response object\n * @returns {*} Response data\n */\n protected processResponseData(response) {\n if (response.data) {\n if (!this.flattenResponse) {\n return response;\n }\n\n // Special case of data property within Axios data object\n // This is in fact a proper response but we may want to flatten it\n // To ease developers' lives when obtaining the response\n if (\n typeof response.data === 'object' &&\n typeof response.data.data !== 'undefined' &&\n Object.keys(response.data).length === 1\n ) {\n return response.data.data;\n }\n\n return response.data;\n }\n\n return this.defaultResponse;\n }\n}\n","export class RequestErrorHandler {\n /**\n * Logger Class\n *\n * @type {*}\n * @memberof RequestErrorHandler\n */\n protected logger: any;\n\n /**\n * Error Service Class\n *\n * @type {*}\n * @memberof RequestErrorHandler\n */\n public requestErrorService: any;\n\n public constructor(logger: any, requestErrorService: any) {\n this.logger = logger;\n this.requestErrorService = requestErrorService;\n }\n\n /**\n * Process and Error\n *\n * @param {*} error Error instance or message\n * @throws Request error context\n * @returns {void}\n */\n public process(error: string | Error): void {\n if (this.logger?.warn) {\n this.logger.warn('API ERROR', error);\n }\n\n let errorContext = error;\n\n if (typeof error === 'string') {\n errorContext = new Error(error);\n }\n\n if (this.requestErrorService) {\n if (typeof this.requestErrorService.process !== 'undefined') {\n this.requestErrorService.process(errorContext);\n } else if (typeof this.requestErrorService === 'function') {\n this.requestErrorService(errorContext);\n }\n }\n }\n}\n"],"mappings":"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","names":["exports","warnedInvokeDeprecation","applyMagic","target","proxyOnly","proxify","PseudoClass","args","invoke","checkType","proto","setProp","obj","ctor","fn","name","argLength","prop","value","writable","get","set","has","_delete","import_js_magic","import_js_magic","RequestErrorHandler","logger","requestErrorService","error","_a","errorContext","RequestHandler","axios","baseURL","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","prop","type","url","data","method","methodLowerCase","error","requestConfig","RequestErrorHandler","isRequestCancelled","errorHandlingStrategy","_requestConfig","params","key","previousRequest","controller","response","endpointConfig","__decorateClass","ApiHandler","axios","apiUrl","endpoints","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","RequestHandler","prop","args","endpointSettings","queryParams","uriParams","requestConfig","uri","str","responseData","additionalRequestSettings","_a","__decorateClass","createApiFetcher","options"]}
\ No newline at end of file
diff --git a/dist/browser/index.mjs b/dist/browser/index.mjs
index 0a08d22..41f527b 100644
--- a/dist/browser/index.mjs
+++ b/dist/browser/index.mjs
@@ -1,2 +1,2 @@
-var R=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var h=(u,e,t,r)=>{for(var n=r>1?void 0:r?b(e,t):e,s=u.length-1,o;s>=0;s--)(o=u[s])&&(n=(r?o(e,t,n):o(n))||n);return r&&n&&R(e,t,n),n};import{applyMagic as q}from"js-magic";import f from"axios";import{applyMagic as m}from"js-magic";var g=class{constructor(e,t){this.logger=e,this.httpRequestErrorService=t}process(e){this.logger&&this.logger.warn&&this.logger.warn("API ERROR",e);let t=e;typeof e=="string"&&(t=new Error(e)),this.httpRequestErrorService&&(typeof this.httpRequestErrorService.process<"u"?this.httpRequestErrorService.process(t):typeof this.httpRequestErrorService=="function"&&this.httpRequestErrorService(t))}};var c=class{constructor({baseURL:e="",timeout:t=null,cancellable:r=!1,strategy:n=null,flattenResponse:s=null,defaultResponse:o={},logger:i=null,onError:l=null,...a}){this.timeout=3e4;this.cancellable=!1;this.strategy="reject";this.flattenResponse=!0;this.defaultResponse=null;this.timeout=t!==null?t:this.timeout,this.strategy=n!==null?n:this.strategy,this.cancellable=r||this.cancellable,this.flattenResponse=s!==null?s:this.flattenResponse,this.defaultResponse=o,this.logger=i||global.console||window.console||null,this.httpRequestErrorService=l,this.requestsQueue=new Map,this.requestInstance=f.create({...a,baseURL:e,timeout:this.timeout})}getInstance(){return this.requestInstance}interceptRequest(e){this.getInstance().interceptors.request.use(e)}__get(e){return e in this?this[e]:this.prepareRequest.bind(this,e)}prepareRequest(e,t,r=null,n=null){return this.handleRequest({type:e,url:t,data:r,config:n})}buildRequestConfig(e,t,r,n){let s=e.toLowerCase();return{...n,url:t,method:s,[s==="get"||s==="head"?"params":"data"]:r||{}}}processRequestError(e,t){if(this.isRequestCancelled(e,t))return;t.onError&&typeof t.onError=="function"&&t.onError(e),new g(this.logger,this.httpRequestErrorService).process(e)}async outputErrorResponse(e,t){let r=this.isRequestCancelled(e,t),n=t.strategy||this.strategy;return r&&!t.rejectCancelled?this.defaultResponse:n==="silent"?(await new Promise(()=>null),this.defaultResponse):n==="reject"||n==="throwError"?Promise.reject(e):this.defaultResponse}isRequestCancelled(e,t){return f.isCancel(e)}addCancellationToken(e){if(!this.cancellable&&!e.cancellable)return{};if(typeof e.cancellable<"u"&&!e.cancellable)return{};if(typeof AbortController>"u")return console.error("AbortController is unavailable in your ENV."),{};let{method:t,baseURL:r,url:n,params:s,data:o}=e,i=JSON.stringify([t,r,n,s,o]).substring(0,55**5),l=this.requestsQueue.get(i);l&&l.abort();let a=new AbortController;return this.requestsQueue.set(i,a),{signal:a.signal}}async handleRequest({type:e,url:t,data:r=null,config:n=null}){let s=null,o=n||{},i=this.buildRequestConfig(e,t,r,o);i={...this.addCancellationToken(i),...i};try{s=await this.requestInstance.request(i)}catch(l){return this.processRequestError(l,i),this.outputErrorResponse(l,i)}return this.processResponseData(s)}processResponseData(e){return e.data?this.flattenResponse?typeof e.data=="object"&&typeof e.data.data<"u"&&Object.keys(e.data).length===1?e.data.data:e.data:e:this.defaultResponse}};c=h([m],c);var d=class{constructor({apiUrl:e,endpoints:t,timeout:r=null,cancellable:n=!1,strategy:s=null,flattenResponse:o=null,defaultResponse:i={},logger:l=null,onError:a=null,...p}){this.apiUrl="";this.apiUrl=e,this.endpoints=t,this.logger=l,this.httpRequestHandler=new c({...p,baseURL:this.apiUrl,timeout:r,cancellable:n,strategy:s,flattenResponse:o,defaultResponse:i,logger:l,onError:a})}getInstance(){return this.httpRequestHandler.getInstance()}__get(e){return e in this?this[e]:this.endpoints[e]?this.handleRequest.bind(this,e):this.handleNonImplemented.bind(this,e)}async handleRequest(...e){let t=e[0],r=this.endpoints[t],n=e[1]||{},s=e[2]||{},o=e[3]||{},i=r.url.replace(/:[a-z]+/gi,p=>s[p.substring(1)]?s[p.substring(1)]:p),l=null,a={...r};return delete a.url,delete a.method,l=await this.httpRequestHandler[(r.method||"get").toLowerCase()](i,n,{...o,...a}),l}handleNonImplemented(e){return this.logger&&this.logger.log&&this.logger.log(`${e} endpoint not implemented.`),Promise.resolve(null)}};d=h([q],d);var k=u=>new d(u);export{d as ApiHandler,g as HttpRequestErrorHandler,c as HttpRequestHandler,k as createApiFetcher};
+var m=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var h=(u,e,t,r)=>{for(var n=r>1?void 0:r?R(e,t):e,s=u.length-1,o;s>=0;s--)(o=u[s])&&(n=(r?o(e,t,n):o(n))||n);return r&&n&&m(e,t,n),n};import{applyMagic as q}from"js-magic";import{applyMagic as b}from"js-magic";var g=class{logger;requestErrorService;constructor(e,t){this.logger=e,this.requestErrorService=t}process(e){var r;(r=this.logger)!=null&&r.warn&&this.logger.warn("API ERROR",e);let t=e;typeof e=="string"&&(t=new Error(e)),this.requestErrorService&&(typeof this.requestErrorService.process<"u"?this.requestErrorService.process(t):typeof this.requestErrorService=="function"&&this.requestErrorService(t))}};var p=class{requestInstance;timeout=3e4;cancellable=!1;strategy="reject";flattenResponse=!0;defaultResponse=null;axios;logger;requestErrorService;requestsQueue;constructor({axios:e,baseURL:t="",timeout:r=null,cancellable:n=!1,strategy:s=null,flattenResponse:o=null,defaultResponse:i={},logger:l=null,onError:a=null,...c}){this.axios=e,this.timeout=r!==null?r:this.timeout,this.strategy=s!==null?s:this.strategy,this.cancellable=n||this.cancellable,this.flattenResponse=o!==null?o:this.flattenResponse,this.defaultResponse=i,this.logger=l||global.console||window.console||null,this.requestErrorService=a,this.requestsQueue=new Map,this.requestInstance=e.create({...c,baseURL:t,timeout:this.timeout})}getInstance(){return this.requestInstance}__get(e){return e in this?this[e]:this.prepareRequest.bind(this,e)}prepareRequest(e,t,r=null,n=null){return this.handleRequest({type:e,url:t,data:r,config:n})}buildRequestConfig(e,t,r,n){let s=e.toLowerCase();return{...n,url:t,method:s,[s==="get"||s==="head"?"params":"data"]:r||{}}}processRequestError(e,t){if(this.isRequestCancelled(e,t))return;t.onError&&typeof t.onError=="function"&&t.onError(e),new g(this.logger,this.requestErrorService).process(e)}async outputErrorResponse(e,t){let r=this.isRequestCancelled(e,t),n=t.strategy||this.strategy;return r&&!t.rejectCancelled?this.defaultResponse:n==="silent"?(await new Promise(()=>null),this.defaultResponse):n==="reject"||n==="throwError"?Promise.reject(e):this.defaultResponse}isRequestCancelled(e,t){return this.axios.isCancel(e)}addCancellationToken(e){if(!this.cancellable&&!e.cancellable)return{};if(typeof e.cancellable<"u"&&!e.cancellable)return{};if(typeof AbortController>"u")return console.error("AbortController is unavailable in your ENV."),{};let{method:t,baseURL:r,url:n,params:s,data:o}=e,i=JSON.stringify([t,r,n,s,o]).substring(0,55**5),l=this.requestsQueue.get(i);l&&l.abort();let a=new AbortController;return this.requestsQueue.set(i,a),{signal:a.signal}}async handleRequest({type:e,url:t,data:r=null,config:n=null}){let s=null,o=n||{},i=this.buildRequestConfig(e,t,r,o);i={...this.addCancellationToken(i),...i};try{s=await this.requestInstance.request(i)}catch(l){return this.processRequestError(l,i),this.outputErrorResponse(l,i)}return this.processResponseData(s)}processResponseData(e){return e.data?this.flattenResponse?typeof e.data=="object"&&typeof e.data.data<"u"&&Object.keys(e.data).length===1?e.data.data:e.data:e:this.defaultResponse}};p=h([b],p);var d=class{requestHandler;endpoints;logger;constructor({axios:e,apiUrl:t,endpoints:r,timeout:n=null,cancellable:s=!1,strategy:o=null,flattenResponse:i=null,defaultResponse:l={},logger:a=null,onError:c=null,...f}){this.endpoints=r,this.logger=a,this.requestHandler=new p({...f,baseURL:t,axios:e,timeout:n,cancellable:s,strategy:o,flattenResponse:i,defaultResponse:l,logger:a,onError:c})}getInstance(){return this.requestHandler.getInstance()}__get(e){return e in this?this[e]:this.endpoints[e]?this.handleRequest.bind(this,e):this.handleNonImplemented.bind(this,e)}async handleRequest(...e){let t=e[0],r=this.endpoints[t],n=e[1]||{},s=e[2]||{},o=e[3]||{},i=r.url.replace(/:[a-z]+/gi,c=>s[c.substring(1)]?s[c.substring(1)]:c),l=null,a={...r};return delete a.url,delete a.method,l=await this.requestHandler[(r.method||"get").toLowerCase()](i,n,{...o,...a}),l}handleNonImplemented(e){var t;return(t=this.logger)!=null&&t.log&&this.logger.log(`${e} endpoint not implemented.`),Promise.resolve(null)}};d=h([q],d);var j=u=>new d(u);export{d as ApiHandler,g as RequestErrorHandler,p as RequestHandler,j as createApiFetcher};
//# sourceMappingURL=index.mjs.map
\ No newline at end of file
diff --git a/dist/browser/index.mjs.map b/dist/browser/index.mjs.map
index 4ebe41f..5f96efc 100644
--- a/dist/browser/index.mjs.map
+++ b/dist/browser/index.mjs.map
@@ -1 +1 @@
-{"version":3,"sources":["../src/api-handler.ts","../src/http-request-handler.ts","../src/http-request-error-handler.ts"],"sourcesContent":["// 3rd party libs\nimport {\n applyMagic,\n MagicalClass,\n} from 'js-magic';\n\n// Types\nimport {\n AxiosInstance,\n} from 'axios';\n\nimport {\n IRequestResponse,\n APIHandlerConfig,\n EndpointConfig,\n} from './types/http-request';\n\nimport {\n HttpRequestHandler,\n} from './http-request-handler';\n\n/**\n * Handles dispatching of API requests\n */\n@applyMagic\nexport class ApiHandler implements MagicalClass {\n /**\n * TS Index signature\n */\n [x: string]: any;\n\n /**\n * Api Url\n */\n public apiUrl = '';\n\n /**\n * @var httpRequestHandler Request Wrapper Instance\n */\n public httpRequestHandler: HttpRequestHandler;\n\n /**\n * Endpoints\n */\n public endpoints: Record;\n\n /**\n * Logger\n */\n public logger: any;\n\n /**\n * Creates an instance of API Handler\n *\n * @param {string} apiUrl Base URL for all API calls\n * @param {number} timeout Request timeout\n * @param {string} strategy Error Handling Strategy\n * @param {string} flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} logger Instance of Logger Class\n * @param {*} onError Instance of Error Service Class\n */\n public constructor({\n apiUrl,\n endpoints,\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: APIHandlerConfig) {\n this.apiUrl = apiUrl;\n this.endpoints = endpoints;\n this.logger = logger;\n\n this.httpRequestHandler = new HttpRequestHandler({\n ...config,\n baseURL: this.apiUrl,\n timeout,\n cancellable,\n strategy,\n flattenResponse,\n defaultResponse,\n logger,\n onError,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.httpRequestHandler.getInstance();\n }\n\n /**\n * Maps all API requests\n *\n * @param {*} prop Caller\n * @returns {Function} Tailored request function\n */\n public __get(prop: any): any {\n if (prop in this) {\n return this[prop];\n }\n\n // Prevent handler from running for non-existent endpoints\n if (!this.endpoints[prop]) {\n return this.handleNonImplemented.bind(this, prop)\n }\n\n return this.handleRequest.bind(this, prop);\n }\n\n /**\n * Handle Single API Request\n *\n * @param {*} args Arguments\n * @returns {Promise} Resolvable API provider promise\n */\n public async handleRequest(...args: any): Promise {\n const prop = args[0];\n const endpointSettings = this.endpoints[prop];\n\n const queryParams = args[1] || {};\n const uriParams = args[2] || {};\n const requestConfig = args[3] || {};\n\n const uri = endpointSettings.url.replace(/:[a-z]+/gi, (str: string) =>\n uriParams[str.substring(1)] ? uriParams[str.substring(1)] : str\n );\n\n let responseData = null;\n\n const additionalRequestSettings = { ...endpointSettings };\n\n delete additionalRequestSettings.url;\n delete additionalRequestSettings.method;\n\n responseData = await this.httpRequestHandler[(endpointSettings.method || 'get').toLowerCase()](uri, queryParams, {\n ...requestConfig,\n ...additionalRequestSettings,\n });\n\n return responseData;\n }\n\n /**\n * Triggered when trying to use non-existent endpoints\n *\n * @param prop Method Name\n * @returns {Promise}\n */\n protected handleNonImplemented(prop: string): Promise {\n if (this.logger && this.logger.log) {\n this.logger.log(`${prop} endpoint not implemented.`)\n }\n\n return Promise.resolve(null);\n }\n}\n\nexport const createApiFetcher = (options: APIHandlerConfig) => new ApiHandler(options);\n","// 3rd party libs\nimport axios, { AxiosInstance, Method } from 'axios';\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Shared Modules\nimport { HttpRequestErrorHandler } from './http-request-error-handler';\n\n// Types\nimport {\n IRequestData,\n IRequestResponse,\n InterceptorCallback,\n ErrorHandlingStrategy,\n RequestHandlerConfig,\n EndpointConfig,\n RequestError,\n} from './types/http-request';\n\n/**\n * Generic Request Handler\n * It creates an Axios instance and handles requests within that instance\n * It handles errors depending on a chosen error handling strategy\n */\n@applyMagic\nexport class HttpRequestHandler implements MagicalClass {\n /**\n * @var requestInstance Provider's instance\n */\n public requestInstance: AxiosInstance;\n\n /**\n * @var timeout Request timeout\n */\n public timeout: number = 30000;\n\n /**\n * @var cancellable Response cancellation\n */\n public cancellable: boolean = false;\n\n /**\n * @var strategy Request timeout\n */\n public strategy: ErrorHandlingStrategy = 'reject';\n\n /**\n * @var flattenResponse Response flattening\n */\n public flattenResponse: boolean = true;\n\n /**\n * @var defaultResponse Response flattening\n */\n public defaultResponse: any = null;\n\n /**\n * @var logger Logger\n */\n protected logger: any;\n\n /**\n * @var httpRequestErrorService HTTP error service\n */\n protected httpRequestErrorService: any;\n\n /**\n * @var requestsQueue Queue of requests\n */\n protected requestsQueue: Map;\n\n /**\n * Creates an instance of HttpRequestHandler\n *\n * @param {string} baseURL Base URL for all API calls\n * @param {number} timeout Request timeout\n * @param {string} strategy Error Handling Strategy\n * @param {string} flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} logger Instance of Logger Class\n * @param {*} httpRequestErrorService Instance of Error Service Class\n */\n public constructor({\n baseURL = '',\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: RequestHandlerConfig) {\n this.timeout = timeout !== null ? timeout : this.timeout;\n this.strategy = strategy !== null ? strategy : this.strategy;\n this.cancellable = cancellable || this.cancellable;\n this.flattenResponse =\n flattenResponse !== null ? flattenResponse : this.flattenResponse;\n this.defaultResponse = defaultResponse;\n this.logger = logger || global.console || window.console || null;\n this.httpRequestErrorService = onError;\n this.requestsQueue = new Map();\n\n this.requestInstance = axios.create({\n ...config,\n baseURL,\n timeout: this.timeout,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestInstance;\n }\n\n /**\n * Intercept Request\n *\n * @param {*} callback callback to use before request\n * @returns {void}\n */\n public interceptRequest(callback: InterceptorCallback): void {\n this.getInstance().interceptors.request.use(callback);\n }\n\n /**\n * Maps all API requests\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public __get(prop: string) {\n if (prop in this) {\n return this[prop];\n }\n\n return this.prepareRequest.bind(this, prop);\n }\n\n /**\n * Prepare Request\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public prepareRequest(\n type: Method,\n url: string,\n data: any = null,\n config: EndpointConfig = null\n ): Promise {\n return this.handleRequest({\n type,\n url,\n data,\n config,\n });\n }\n\n /**\n * Build request configuration\n *\n * @param {string} method Request method\n * @param {string} url Request url\n * @param {*} data Request data\n * @param {EndpointConfig} config Request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected buildRequestConfig(\n method: string,\n url: string,\n data: any,\n config: EndpointConfig\n ): EndpointConfig {\n const methodLowerCase = method.toLowerCase() as Method;\n const key =\n methodLowerCase === 'get' || methodLowerCase === 'head'\n ? 'params'\n : 'data';\n\n return {\n ...config,\n url,\n method: methodLowerCase,\n [key]: data || {},\n };\n }\n\n /**\n * Process global Request Error\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected processRequestError(\n error: RequestError,\n requestConfig: EndpointConfig\n ): void {\n if (this.isRequestCancelled(error, requestConfig)) {\n return;\n }\n\n // Invoke per request \"onError\" call\n if (requestConfig.onError && typeof requestConfig.onError === 'function') {\n requestConfig.onError(error);\n }\n\n const errorHandler = new HttpRequestErrorHandler(\n this.logger,\n this.httpRequestErrorService\n );\n\n errorHandler.process(error);\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected async outputErrorResponse(\n error: RequestError,\n requestConfig: EndpointConfig\n ): Promise {\n const isRequestCancelled = this.isRequestCancelled(error, requestConfig);\n const errorHandlingStrategy = requestConfig.strategy || this.strategy;\n\n // By default cancelled requests aren't rejected\n if (isRequestCancelled && !requestConfig.rejectCancelled) {\n return this.defaultResponse;\n }\n\n if (errorHandlingStrategy === 'silent') {\n // Hang the promise\n await new Promise(() => null);\n\n return this.defaultResponse;\n }\n\n // Simply rejects a request promise\n if (\n errorHandlingStrategy === 'reject' ||\n errorHandlingStrategy === 'throwError'\n ) {\n return Promise.reject(error);\n }\n\n return this.defaultResponse;\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} _requestConfig Per endpoint request config\n * @returns {*} Error response\n */\n public isRequestCancelled(\n error: RequestError,\n _requestConfig: EndpointConfig\n ): boolean {\n return axios.isCancel(error);\n }\n\n /**\n * Automatically Cancel Previous Requests\n *\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected addCancellationToken(requestConfig: EndpointConfig) {\n // Both disabled\n if (!this.cancellable && !requestConfig.cancellable) {\n return {};\n }\n\n // Explicitly disabled per request\n if (\n typeof requestConfig.cancellable !== 'undefined' &&\n !requestConfig.cancellable\n ) {\n return {};\n }\n\n // Check if AbortController is available\n if (typeof AbortController === 'undefined') {\n console.error('AbortController is unavailable in your ENV.');\n\n return {};\n }\n\n const {\n method,\n baseURL,\n url,\n params,\n data,\n } = requestConfig;\n\n // Generate unique key as a cancellation token. Make sure it fits Map\n const key = JSON.stringify([\n method,\n baseURL,\n url,\n params,\n data,\n ]).substring(0, 55 ** 5);\n const previousRequest = this.requestsQueue.get(key);\n\n if (previousRequest) {\n previousRequest.abort();\n }\n\n const controller = new AbortController();\n\n this.requestsQueue.set(key, controller);\n\n return {\n signal: controller.signal,\n };\n }\n\n /**\n * Handle Request depending on used strategy\n *\n * @param {object} payload Payload\n * @param {string} payload.type Request type\n * @param {string} payload.url Request url\n * @param {*} payload.data Request data\n * @param {EndpointConfig} payload.config Request config\n * @throws {RequestError}\n * @returns {Promise} Response Data\n */\n protected async handleRequest({\n type,\n url,\n data = null,\n config = null,\n }: IRequestData): Promise {\n let response = null;\n const endpointConfig = config || {};\n let requestConfig = this.buildRequestConfig(\n type,\n url,\n data,\n endpointConfig\n );\n\n requestConfig = {\n ...this.addCancellationToken(requestConfig),\n ...requestConfig,\n };\n\n try {\n response = await this.requestInstance.request(requestConfig);\n } catch (error) {\n this.processRequestError(error, requestConfig);\n\n return this.outputErrorResponse(error, requestConfig);\n }\n\n return this.processResponseData(response);\n }\n\n /**\n * Process request response\n *\n * @param response Response object\n * @returns {*} Response data\n */\n protected processResponseData(response) {\n if (response.data) {\n if (!this.flattenResponse) {\n return response;\n }\n\n // Special case of data property within Axios data object\n // This is in fact a proper response but we may want to flatten it\n // To ease developers' lives when obtaining the response\n if (\n typeof response.data === 'object' &&\n typeof response.data.data !== 'undefined' &&\n Object.keys(response.data).length === 1\n ) {\n return response.data.data;\n }\n\n return response.data;\n }\n\n return this.defaultResponse;\n }\n}\n","export class HttpRequestErrorHandler {\n /**\n * Logger Class\n *\n * @type {*}\n * @memberof HttpRequestErrorHandler\n */\n public logger: any;\n\n /**\n * Error Service Class\n *\n * @type {*}\n * @memberof HttpRequestErrorHandler\n */\n public httpRequestErrorService: any;\n\n public constructor(logger: any, httpRequestErrorService: any) {\n this.logger = logger;\n this.httpRequestErrorService = httpRequestErrorService;\n }\n\n /**\n * Process and Error\n *\n * @param {*} error Error instance or message\n * @throws Request error context\n * @returns {void}\n */\n public process(error: string | Error) {\n if (this.logger && this.logger.warn) {\n this.logger.warn('API ERROR', error);\n }\n\n let errorContext = error;\n\n if (typeof error === 'string') {\n errorContext = new Error(error);\n }\n\n if (this.httpRequestErrorService) {\n if (typeof this.httpRequestErrorService.process !== 'undefined') {\n this.httpRequestErrorService.process(errorContext);\n } else if (typeof this.httpRequestErrorService === 'function') {\n this.httpRequestErrorService(errorContext);\n }\n }\n }\n}"],"mappings":"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","names":["applyMagic","axios","applyMagic","HttpRequestErrorHandler","logger","httpRequestErrorService","error","errorContext","HttpRequestHandler","baseURL","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","axios","callback","prop","type","url","data","method","methodLowerCase","error","requestConfig","HttpRequestErrorHandler","isRequestCancelled","errorHandlingStrategy","_requestConfig","params","key","previousRequest","controller","response","endpointConfig","__decorateClass","applyMagic","ApiHandler","apiUrl","endpoints","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","HttpRequestHandler","prop","args","endpointSettings","queryParams","uriParams","requestConfig","uri","str","responseData","additionalRequestSettings","__decorateClass","applyMagic","createApiFetcher","options"]}
\ No newline at end of file
+{"version":3,"sources":["../src/api-handler.ts","../src/request-handler.ts","../src/request-error-handler.ts"],"sourcesContent":["// 3rd party libs\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Types\nimport type { AxiosInstance } from 'axios';\n\nimport {\n IRequestResponse,\n APIHandlerConfig,\n EndpointConfig,\n} from './types/http-request';\n\nimport { RequestHandler } from './request-handler';\n\n/**\n * Handles dispatching of API requests\n */\n@applyMagic\nexport class ApiHandler implements MagicalClass {\n /**\n * TS Index signature\n */\n [x: string]: any;\n\n /**\n * @var requestHandler Request Wrapper Instance\n */\n public requestHandler: RequestHandler;\n\n /**\n * Endpoints\n */\n protected endpoints: Record;\n\n /**\n * Logger\n */\n protected logger: any;\n\n /**\n * Creates an instance of API Handler\n *\n * @param {string} config.apiUrl Base URL for all API calls\n * @param {number} config.timeout Request timeout\n * @param {string} config.strategy Error Handling Strategy\n * @param {string} config.flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} config.logger Instance of Logger Class\n * @param {*} config.onError Instance of Error Service Class\n */\n public constructor({\n axios,\n apiUrl,\n endpoints,\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: APIHandlerConfig) {\n this.endpoints = endpoints;\n this.logger = logger;\n\n this.requestHandler = new RequestHandler({\n ...config,\n baseURL: apiUrl,\n axios,\n timeout,\n cancellable,\n strategy,\n flattenResponse,\n defaultResponse,\n logger,\n onError,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestHandler.getInstance();\n }\n\n /**\n * Maps all API requests\n *\n * @param {*} prop Caller\n * @returns {Function} Tailored request function\n */\n public __get(prop: any): any {\n if (prop in this) {\n return this[prop];\n }\n\n // Prevent handler from running for non-existent endpoints\n if (!this.endpoints[prop]) {\n return this.handleNonImplemented.bind(this, prop);\n }\n\n return this.handleRequest.bind(this, prop);\n }\n\n /**\n * Handle Single API Request\n *\n * @param {*} args Arguments\n * @returns {Promise} Resolvable API provider promise\n */\n public async handleRequest(...args: any): Promise {\n const prop = args[0];\n const endpointSettings = this.endpoints[prop];\n\n const queryParams = args[1] || {};\n const uriParams = args[2] || {};\n const requestConfig = args[3] || {};\n\n const uri = endpointSettings.url.replace(/:[a-z]+/gi, (str: string) =>\n uriParams[str.substring(1)] ? uriParams[str.substring(1)] : str\n );\n\n let responseData = null;\n\n const additionalRequestSettings = { ...endpointSettings };\n\n delete additionalRequestSettings.url;\n delete additionalRequestSettings.method;\n\n responseData = await this.requestHandler[\n (endpointSettings.method || 'get').toLowerCase()\n ](uri, queryParams, {\n ...requestConfig,\n ...additionalRequestSettings,\n });\n\n return responseData;\n }\n\n /**\n * Triggered when trying to use non-existent endpoints\n *\n * @param prop Method Name\n * @returns {Promise}\n */\n protected handleNonImplemented(prop: string): Promise {\n if (this.logger?.log) {\n this.logger.log(`${prop} endpoint not implemented.`);\n }\n\n return Promise.resolve(null);\n }\n}\n\nexport const createApiFetcher = (options: APIHandlerConfig) =>\n new ApiHandler(options);\n","// 3rd party libs\nimport type { AxiosInstance, AxiosStatic, Method } from 'axios';\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Shared Modules\nimport { RequestErrorHandler } from './request-error-handler';\n\n// Types\nimport type {\n IRequestData,\n IRequestResponse,\n ErrorHandlingStrategy,\n RequestHandlerConfig,\n EndpointConfig,\n RequestError,\n} from './types/http-request';\n\n/**\n * Generic Request Handler\n * It creates an Axios instance and handles requests within that instance\n * It handles errors depending on a chosen error handling strategy\n */\n@applyMagic\nexport class RequestHandler implements MagicalClass {\n /**\n * @var requestInstance Provider's instance\n */\n public requestInstance: AxiosInstance;\n\n /**\n * @var timeout Request timeout\n */\n public timeout: number = 30000;\n\n /**\n * @var cancellable Response cancellation\n */\n public cancellable: boolean = false;\n\n /**\n * @var strategy Request timeout\n */\n public strategy: ErrorHandlingStrategy = 'reject';\n\n /**\n * @var flattenResponse Response flattening\n */\n public flattenResponse: boolean = true;\n\n /**\n * @var defaultResponse Response flattening\n */\n public defaultResponse: any = null;\n\n /**\n * @var axios Axios instance\n */\n protected axios: AxiosStatic;\n\n /**\n * @var logger Logger\n */\n protected logger: any;\n\n /**\n * @var requestErrorService HTTP error service\n */\n protected requestErrorService: any;\n\n /**\n * @var requestsQueue Queue of requests\n */\n protected requestsQueue: Map;\n\n /**\n * Creates an instance of HttpRequestHandler\n *\n * @param {string} config.axios Axios instance\n * @param {string} config.baseURL Base URL for all API calls\n * @param {number} config.timeout Request timeout\n * @param {string} config.strategy Error Handling Strategy\n * @param {string} config.flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} config.logger Instance of Logger Class\n * @param {*} config.requestErrorService Instance of Error Service Class\n */\n public constructor({\n axios,\n baseURL = '',\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: RequestHandlerConfig) {\n this.axios = axios;\n this.timeout = timeout !== null ? timeout : this.timeout;\n this.strategy = strategy !== null ? strategy : this.strategy;\n this.cancellable = cancellable || this.cancellable;\n this.flattenResponse =\n flattenResponse !== null ? flattenResponse : this.flattenResponse;\n this.defaultResponse = defaultResponse;\n this.logger = logger || global.console || window.console || null;\n this.requestErrorService = onError;\n this.requestsQueue = new Map();\n\n this.requestInstance = axios.create({\n ...config,\n baseURL,\n timeout: this.timeout,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestInstance;\n }\n\n /**\n * Maps all API requests\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public __get(prop: string) {\n if (prop in this) {\n return this[prop];\n }\n\n return this.prepareRequest.bind(this, prop);\n }\n\n /**\n * Prepare Request\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public prepareRequest(\n type: Method,\n url: string,\n data: any = null,\n config: EndpointConfig = null\n ): Promise {\n return this.handleRequest({\n type,\n url,\n data,\n config,\n });\n }\n\n /**\n * Build request configuration\n *\n * @param {string} method Request method\n * @param {string} url Request url\n * @param {*} data Request data\n * @param {EndpointConfig} config Request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected buildRequestConfig(\n method: string,\n url: string,\n data: any,\n config: EndpointConfig\n ): EndpointConfig {\n const methodLowerCase = method.toLowerCase() as Method;\n const key =\n methodLowerCase === 'get' || methodLowerCase === 'head'\n ? 'params'\n : 'data';\n\n return {\n ...config,\n url,\n method: methodLowerCase,\n [key]: data || {},\n };\n }\n\n /**\n * Process global Request Error\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected processRequestError(\n error: RequestError,\n requestConfig: EndpointConfig\n ): void {\n if (this.isRequestCancelled(error, requestConfig)) {\n return;\n }\n\n // Invoke per request \"onError\" call\n if (requestConfig.onError && typeof requestConfig.onError === 'function') {\n requestConfig.onError(error);\n }\n\n const errorHandler = new RequestErrorHandler(\n this.logger,\n this.requestErrorService\n );\n\n errorHandler.process(error);\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected async outputErrorResponse(\n error: RequestError,\n requestConfig: EndpointConfig\n ): Promise {\n const isRequestCancelled = this.isRequestCancelled(error, requestConfig);\n const errorHandlingStrategy = requestConfig.strategy || this.strategy;\n\n // By default cancelled requests aren't rejected\n if (isRequestCancelled && !requestConfig.rejectCancelled) {\n return this.defaultResponse;\n }\n\n if (errorHandlingStrategy === 'silent') {\n // Hang the promise\n await new Promise(() => null);\n\n return this.defaultResponse;\n }\n\n // Simply rejects a request promise\n if (\n errorHandlingStrategy === 'reject' ||\n errorHandlingStrategy === 'throwError'\n ) {\n return Promise.reject(error);\n }\n\n return this.defaultResponse;\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} _requestConfig Per endpoint request config\n * @returns {*} Error response\n */\n public isRequestCancelled(\n error: RequestError,\n _requestConfig: EndpointConfig\n ): boolean {\n return this.axios.isCancel(error);\n }\n\n /**\n * Automatically Cancel Previous Requests\n *\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected addCancellationToken(requestConfig: EndpointConfig) {\n // Both disabled\n if (!this.cancellable && !requestConfig.cancellable) {\n return {};\n }\n\n // Explicitly disabled per request\n if (\n typeof requestConfig.cancellable !== 'undefined' &&\n !requestConfig.cancellable\n ) {\n return {};\n }\n\n // Check if AbortController is available\n if (typeof AbortController === 'undefined') {\n console.error('AbortController is unavailable in your ENV.');\n\n return {};\n }\n\n const { method, baseURL, url, params, data } = requestConfig;\n\n // Generate unique key as a cancellation token. Make sure it fits Map\n const key = JSON.stringify([method, baseURL, url, params, data]).substring(\n 0,\n 55 ** 5\n );\n const previousRequest = this.requestsQueue.get(key);\n\n if (previousRequest) {\n previousRequest.abort();\n }\n\n const controller = new AbortController();\n\n this.requestsQueue.set(key, controller);\n\n return {\n signal: controller.signal,\n };\n }\n\n /**\n * Handle Request depending on used strategy\n *\n * @param {object} payload Payload\n * @param {string} payload.type Request type\n * @param {string} payload.url Request url\n * @param {*} payload.data Request data\n * @param {EndpointConfig} payload.config Request config\n * @throws {RequestError}\n * @returns {Promise} Response Data\n */\n protected async handleRequest({\n type,\n url,\n data = null,\n config = null,\n }: IRequestData): Promise {\n let response = null;\n const endpointConfig = config || {};\n let requestConfig = this.buildRequestConfig(\n type,\n url,\n data,\n endpointConfig\n );\n\n requestConfig = {\n ...this.addCancellationToken(requestConfig),\n ...requestConfig,\n };\n\n try {\n response = await this.requestInstance.request(requestConfig);\n } catch (error) {\n this.processRequestError(error, requestConfig);\n\n return this.outputErrorResponse(error, requestConfig);\n }\n\n return this.processResponseData(response);\n }\n\n /**\n * Process request response\n *\n * @param response Response object\n * @returns {*} Response data\n */\n protected processResponseData(response) {\n if (response.data) {\n if (!this.flattenResponse) {\n return response;\n }\n\n // Special case of data property within Axios data object\n // This is in fact a proper response but we may want to flatten it\n // To ease developers' lives when obtaining the response\n if (\n typeof response.data === 'object' &&\n typeof response.data.data !== 'undefined' &&\n Object.keys(response.data).length === 1\n ) {\n return response.data.data;\n }\n\n return response.data;\n }\n\n return this.defaultResponse;\n }\n}\n","export class RequestErrorHandler {\n /**\n * Logger Class\n *\n * @type {*}\n * @memberof RequestErrorHandler\n */\n protected logger: any;\n\n /**\n * Error Service Class\n *\n * @type {*}\n * @memberof RequestErrorHandler\n */\n public requestErrorService: any;\n\n public constructor(logger: any, requestErrorService: any) {\n this.logger = logger;\n this.requestErrorService = requestErrorService;\n }\n\n /**\n * Process and Error\n *\n * @param {*} error Error instance or message\n * @throws Request error context\n * @returns {void}\n */\n public process(error: string | Error): void {\n if (this.logger?.warn) {\n this.logger.warn('API ERROR', error);\n }\n\n let errorContext = error;\n\n if (typeof error === 'string') {\n errorContext = new Error(error);\n }\n\n if (this.requestErrorService) {\n if (typeof this.requestErrorService.process !== 'undefined') {\n this.requestErrorService.process(errorContext);\n } else if (typeof this.requestErrorService === 'function') {\n this.requestErrorService(errorContext);\n }\n }\n }\n}\n"],"mappings":"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","names":["applyMagic","applyMagic","RequestErrorHandler","logger","requestErrorService","error","_a","errorContext","RequestHandler","axios","baseURL","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","prop","type","url","data","method","methodLowerCase","error","requestConfig","RequestErrorHandler","isRequestCancelled","errorHandlingStrategy","_requestConfig","params","key","previousRequest","controller","response","endpointConfig","__decorateClass","applyMagic","ApiHandler","axios","apiUrl","endpoints","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","RequestHandler","prop","args","endpointSettings","queryParams","uriParams","requestConfig","uri","str","responseData","additionalRequestSettings","_a","__decorateClass","applyMagic","createApiFetcher","options"]}
\ No newline at end of file
diff --git a/dist/node/index.js b/dist/node/index.js
index 1a02e4f..bd76032 100644
--- a/dist/node/index.js
+++ b/dist/node/index.js
@@ -1,2 +1,2 @@
-var E=Object.create;var h=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var x=(s,e)=>{for(var t in e)h(s,t,{get:e[t],enumerable:!0})},m=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of C(e))!w.call(s,n)&&n!==t&&h(s,n,{get:()=>e[n],enumerable:!(r=b(e,n))||r.enumerable});return s};var S=(s,e,t)=>(t=s!=null?E(I(s)):{},m(e||!s||!s.__esModule?h(t,"default",{value:s,enumerable:!0}):t,s)),v=s=>m(h({},"__esModule",{value:!0}),s),f=(s,e,t,r)=>{for(var n=r>1?void 0:r?b(e,t):e,i=s.length-1,l;i>=0;i--)(l=s[i])&&(n=(r?l(e,t,n):l(n))||n);return r&&n&&h(e,t,n),n};var A={};x(A,{ApiHandler:()=>p,HttpRequestErrorHandler:()=>g,HttpRequestHandler:()=>c,createApiFetcher:()=>P});module.exports=v(A);var y=require("js-magic");var R=S(require("axios")),q=require("js-magic");var g=class{constructor(e,t){this.logger=e,this.httpRequestErrorService=t}process(e){this.logger&&this.logger.warn&&this.logger.warn("API ERROR",e);let t=e;typeof e=="string"&&(t=new Error(e)),this.httpRequestErrorService&&(typeof this.httpRequestErrorService.process<"u"?this.httpRequestErrorService.process(t):typeof this.httpRequestErrorService=="function"&&this.httpRequestErrorService(t))}};var c=class{constructor({baseURL:e="",timeout:t=null,cancellable:r=!1,strategy:n=null,flattenResponse:i=null,defaultResponse:l={},logger:o=null,onError:a=null,...u}){this.timeout=3e4;this.cancellable=!1;this.strategy="reject";this.flattenResponse=!0;this.defaultResponse=null;this.timeout=t!==null?t:this.timeout,this.strategy=n!==null?n:this.strategy,this.cancellable=r||this.cancellable,this.flattenResponse=i!==null?i:this.flattenResponse,this.defaultResponse=l,this.logger=o||global.console||window.console||null,this.httpRequestErrorService=a,this.requestsQueue=new Map,this.requestInstance=R.default.create({...u,baseURL:e,timeout:this.timeout})}getInstance(){return this.requestInstance}interceptRequest(e){this.getInstance().interceptors.request.use(e)}__get(e){return e in this?this[e]:this.prepareRequest.bind(this,e)}prepareRequest(e,t,r=null,n=null){return this.handleRequest({type:e,url:t,data:r,config:n})}buildRequestConfig(e,t,r,n){let i=e.toLowerCase();return{...n,url:t,method:i,[i==="get"||i==="head"?"params":"data"]:r||{}}}processRequestError(e,t){if(this.isRequestCancelled(e,t))return;t.onError&&typeof t.onError=="function"&&t.onError(e),new g(this.logger,this.httpRequestErrorService).process(e)}async outputErrorResponse(e,t){let r=this.isRequestCancelled(e,t),n=t.strategy||this.strategy;return r&&!t.rejectCancelled?this.defaultResponse:n==="silent"?(await new Promise(()=>null),this.defaultResponse):n==="reject"||n==="throwError"?Promise.reject(e):this.defaultResponse}isRequestCancelled(e,t){return R.default.isCancel(e)}addCancellationToken(e){if(!this.cancellable&&!e.cancellable)return{};if(typeof e.cancellable<"u"&&!e.cancellable)return{};if(typeof AbortController>"u")return console.error("AbortController is unavailable in your ENV."),{};let{method:t,baseURL:r,url:n,params:i,data:l}=e,o=JSON.stringify([t,r,n,i,l]).substring(0,55**5),a=this.requestsQueue.get(o);a&&a.abort();let u=new AbortController;return this.requestsQueue.set(o,u),{signal:u.signal}}async handleRequest({type:e,url:t,data:r=null,config:n=null}){let i=null,l=n||{},o=this.buildRequestConfig(e,t,r,l);o={...this.addCancellationToken(o),...o};try{i=await this.requestInstance.request(o)}catch(a){return this.processRequestError(a,o),this.outputErrorResponse(a,o)}return this.processResponseData(i)}processResponseData(e){return e.data?this.flattenResponse?typeof e.data=="object"&&typeof e.data.data<"u"&&Object.keys(e.data).length===1?e.data.data:e.data:e:this.defaultResponse}};c=f([q.applyMagic],c);var p=class{constructor({apiUrl:e,endpoints:t,timeout:r=null,cancellable:n=!1,strategy:i=null,flattenResponse:l=null,defaultResponse:o={},logger:a=null,onError:u=null,...d}){this.apiUrl="";this.apiUrl=e,this.endpoints=t,this.logger=a,this.httpRequestHandler=new c({...d,baseURL:this.apiUrl,timeout:r,cancellable:n,strategy:i,flattenResponse:l,defaultResponse:o,logger:a,onError:u})}getInstance(){return this.httpRequestHandler.getInstance()}__get(e){return e in this?this[e]:this.endpoints[e]?this.handleRequest.bind(this,e):this.handleNonImplemented.bind(this,e)}async handleRequest(...e){let t=e[0],r=this.endpoints[t],n=e[1]||{},i=e[2]||{},l=e[3]||{},o=r.url.replace(/:[a-z]+/gi,d=>i[d.substring(1)]?i[d.substring(1)]:d),a=null,u={...r};return delete u.url,delete u.method,a=await this.httpRequestHandler[(r.method||"get").toLowerCase()](o,n,{...l,...u}),a}handleNonImplemented(e){return this.logger&&this.logger.log&&this.logger.log(`${e} endpoint not implemented.`),Promise.resolve(null)}};p=f([y.applyMagic],p);var P=s=>new p(s);0&&(module.exports={ApiHandler,HttpRequestErrorHandler,HttpRequestHandler,createApiFetcher});
+var g=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var C=(o,e)=>{for(var t in e)g(o,t,{get:e[t],enumerable:!0})},I=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of y(e))!E.call(o,r)&&r!==t&&g(o,r,{get:()=>e[r],enumerable:!(n=m(e,r))||n.enumerable});return o};var x=o=>I(g({},"__esModule",{value:!0}),o),f=(o,e,t,n)=>{for(var r=n>1?void 0:n?m(e,t):e,s=o.length-1,i;s>=0;s--)(i=o[s])&&(r=(n?i(e,t,r):i(r))||r);return n&&r&&g(e,t,r),r};var S={};C(S,{ApiHandler:()=>d,RequestErrorHandler:()=>h,RequestHandler:()=>p,createApiFetcher:()=>w});module.exports=x(S);var b=require("js-magic");var R=require("js-magic");var h=class{logger;requestErrorService;constructor(e,t){this.logger=e,this.requestErrorService=t}process(e){var n;(n=this.logger)!=null&&n.warn&&this.logger.warn("API ERROR",e);let t=e;typeof e=="string"&&(t=new Error(e)),this.requestErrorService&&(typeof this.requestErrorService.process<"u"?this.requestErrorService.process(t):typeof this.requestErrorService=="function"&&this.requestErrorService(t))}};var p=class{requestInstance;timeout=3e4;cancellable=!1;strategy="reject";flattenResponse=!0;defaultResponse=null;axios;logger;requestErrorService;requestsQueue;constructor({axios:e,baseURL:t="",timeout:n=null,cancellable:r=!1,strategy:s=null,flattenResponse:i=null,defaultResponse:l={},logger:a=null,onError:u=null,...c}){this.axios=e,this.timeout=n!==null?n:this.timeout,this.strategy=s!==null?s:this.strategy,this.cancellable=r||this.cancellable,this.flattenResponse=i!==null?i:this.flattenResponse,this.defaultResponse=l,this.logger=a||global.console||window.console||null,this.requestErrorService=u,this.requestsQueue=new Map,this.requestInstance=e.create({...c,baseURL:t,timeout:this.timeout})}getInstance(){return this.requestInstance}__get(e){return e in this?this[e]:this.prepareRequest.bind(this,e)}prepareRequest(e,t,n=null,r=null){return this.handleRequest({type:e,url:t,data:n,config:r})}buildRequestConfig(e,t,n,r){let s=e.toLowerCase();return{...r,url:t,method:s,[s==="get"||s==="head"?"params":"data"]:n||{}}}processRequestError(e,t){if(this.isRequestCancelled(e,t))return;t.onError&&typeof t.onError=="function"&&t.onError(e),new h(this.logger,this.requestErrorService).process(e)}async outputErrorResponse(e,t){let n=this.isRequestCancelled(e,t),r=t.strategy||this.strategy;return n&&!t.rejectCancelled?this.defaultResponse:r==="silent"?(await new Promise(()=>null),this.defaultResponse):r==="reject"||r==="throwError"?Promise.reject(e):this.defaultResponse}isRequestCancelled(e,t){return this.axios.isCancel(e)}addCancellationToken(e){if(!this.cancellable&&!e.cancellable)return{};if(typeof e.cancellable<"u"&&!e.cancellable)return{};if(typeof AbortController>"u")return console.error("AbortController is unavailable in your ENV."),{};let{method:t,baseURL:n,url:r,params:s,data:i}=e,l=JSON.stringify([t,n,r,s,i]).substring(0,55**5),a=this.requestsQueue.get(l);a&&a.abort();let u=new AbortController;return this.requestsQueue.set(l,u),{signal:u.signal}}async handleRequest({type:e,url:t,data:n=null,config:r=null}){let s=null,i=r||{},l=this.buildRequestConfig(e,t,n,i);l={...this.addCancellationToken(l),...l};try{s=await this.requestInstance.request(l)}catch(a){return this.processRequestError(a,l),this.outputErrorResponse(a,l)}return this.processResponseData(s)}processResponseData(e){return e.data?this.flattenResponse?typeof e.data=="object"&&typeof e.data.data<"u"&&Object.keys(e.data).length===1?e.data.data:e.data:e:this.defaultResponse}};p=f([R.applyMagic],p);var d=class{requestHandler;endpoints;logger;constructor({axios:e,apiUrl:t,endpoints:n,timeout:r=null,cancellable:s=!1,strategy:i=null,flattenResponse:l=null,defaultResponse:a={},logger:u=null,onError:c=null,...q}){this.endpoints=n,this.logger=u,this.requestHandler=new p({...q,baseURL:t,axios:e,timeout:r,cancellable:s,strategy:i,flattenResponse:l,defaultResponse:a,logger:u,onError:c})}getInstance(){return this.requestHandler.getInstance()}__get(e){return e in this?this[e]:this.endpoints[e]?this.handleRequest.bind(this,e):this.handleNonImplemented.bind(this,e)}async handleRequest(...e){let t=e[0],n=this.endpoints[t],r=e[1]||{},s=e[2]||{},i=e[3]||{},l=n.url.replace(/:[a-z]+/gi,c=>s[c.substring(1)]?s[c.substring(1)]:c),a=null,u={...n};return delete u.url,delete u.method,a=await this.requestHandler[(n.method||"get").toLowerCase()](l,r,{...i,...u}),a}handleNonImplemented(e){var t;return(t=this.logger)!=null&&t.log&&this.logger.log(`${e} endpoint not implemented.`),Promise.resolve(null)}};d=f([b.applyMagic],d);var w=o=>new d(o);0&&(module.exports={ApiHandler,RequestErrorHandler,RequestHandler,createApiFetcher});
//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/dist/node/index.js.map b/dist/node/index.js.map
index 64beb18..6148c38 100644
--- a/dist/node/index.js.map
+++ b/dist/node/index.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../src/index.ts","../src/api-handler.ts","../src/http-request-handler.ts","../src/http-request-error-handler.ts"],"sourcesContent":["// List of exports\nexport * from './types/api';\nexport * from './types/http-request';\nexport * from './api-handler';\nexport * from './http-request-handler';\nexport * from './http-request-error-handler';","// 3rd party libs\nimport {\n applyMagic,\n MagicalClass,\n} from 'js-magic';\n\n// Types\nimport {\n AxiosInstance,\n} from 'axios';\n\nimport {\n IRequestResponse,\n APIHandlerConfig,\n EndpointConfig,\n} from './types/http-request';\n\nimport {\n HttpRequestHandler,\n} from './http-request-handler';\n\n/**\n * Handles dispatching of API requests\n */\n@applyMagic\nexport class ApiHandler implements MagicalClass {\n /**\n * TS Index signature\n */\n [x: string]: any;\n\n /**\n * Api Url\n */\n public apiUrl = '';\n\n /**\n * @var httpRequestHandler Request Wrapper Instance\n */\n public httpRequestHandler: HttpRequestHandler;\n\n /**\n * Endpoints\n */\n public endpoints: Record;\n\n /**\n * Logger\n */\n public logger: any;\n\n /**\n * Creates an instance of API Handler\n *\n * @param {string} apiUrl Base URL for all API calls\n * @param {number} timeout Request timeout\n * @param {string} strategy Error Handling Strategy\n * @param {string} flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} logger Instance of Logger Class\n * @param {*} onError Instance of Error Service Class\n */\n public constructor({\n apiUrl,\n endpoints,\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: APIHandlerConfig) {\n this.apiUrl = apiUrl;\n this.endpoints = endpoints;\n this.logger = logger;\n\n this.httpRequestHandler = new HttpRequestHandler({\n ...config,\n baseURL: this.apiUrl,\n timeout,\n cancellable,\n strategy,\n flattenResponse,\n defaultResponse,\n logger,\n onError,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.httpRequestHandler.getInstance();\n }\n\n /**\n * Maps all API requests\n *\n * @param {*} prop Caller\n * @returns {Function} Tailored request function\n */\n public __get(prop: any): any {\n if (prop in this) {\n return this[prop];\n }\n\n // Prevent handler from running for non-existent endpoints\n if (!this.endpoints[prop]) {\n return this.handleNonImplemented.bind(this, prop)\n }\n\n return this.handleRequest.bind(this, prop);\n }\n\n /**\n * Handle Single API Request\n *\n * @param {*} args Arguments\n * @returns {Promise} Resolvable API provider promise\n */\n public async handleRequest(...args: any): Promise {\n const prop = args[0];\n const endpointSettings = this.endpoints[prop];\n\n const queryParams = args[1] || {};\n const uriParams = args[2] || {};\n const requestConfig = args[3] || {};\n\n const uri = endpointSettings.url.replace(/:[a-z]+/gi, (str: string) =>\n uriParams[str.substring(1)] ? uriParams[str.substring(1)] : str\n );\n\n let responseData = null;\n\n const additionalRequestSettings = { ...endpointSettings };\n\n delete additionalRequestSettings.url;\n delete additionalRequestSettings.method;\n\n responseData = await this.httpRequestHandler[(endpointSettings.method || 'get').toLowerCase()](uri, queryParams, {\n ...requestConfig,\n ...additionalRequestSettings,\n });\n\n return responseData;\n }\n\n /**\n * Triggered when trying to use non-existent endpoints\n *\n * @param prop Method Name\n * @returns {Promise}\n */\n protected handleNonImplemented(prop: string): Promise {\n if (this.logger && this.logger.log) {\n this.logger.log(`${prop} endpoint not implemented.`)\n }\n\n return Promise.resolve(null);\n }\n}\n\nexport const createApiFetcher = (options: APIHandlerConfig) => new ApiHandler(options);\n","// 3rd party libs\nimport axios, { AxiosInstance, Method } from 'axios';\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Shared Modules\nimport { HttpRequestErrorHandler } from './http-request-error-handler';\n\n// Types\nimport {\n IRequestData,\n IRequestResponse,\n InterceptorCallback,\n ErrorHandlingStrategy,\n RequestHandlerConfig,\n EndpointConfig,\n RequestError,\n} from './types/http-request';\n\n/**\n * Generic Request Handler\n * It creates an Axios instance and handles requests within that instance\n * It handles errors depending on a chosen error handling strategy\n */\n@applyMagic\nexport class HttpRequestHandler implements MagicalClass {\n /**\n * @var requestInstance Provider's instance\n */\n public requestInstance: AxiosInstance;\n\n /**\n * @var timeout Request timeout\n */\n public timeout: number = 30000;\n\n /**\n * @var cancellable Response cancellation\n */\n public cancellable: boolean = false;\n\n /**\n * @var strategy Request timeout\n */\n public strategy: ErrorHandlingStrategy = 'reject';\n\n /**\n * @var flattenResponse Response flattening\n */\n public flattenResponse: boolean = true;\n\n /**\n * @var defaultResponse Response flattening\n */\n public defaultResponse: any = null;\n\n /**\n * @var logger Logger\n */\n protected logger: any;\n\n /**\n * @var httpRequestErrorService HTTP error service\n */\n protected httpRequestErrorService: any;\n\n /**\n * @var requestsQueue Queue of requests\n */\n protected requestsQueue: Map;\n\n /**\n * Creates an instance of HttpRequestHandler\n *\n * @param {string} baseURL Base URL for all API calls\n * @param {number} timeout Request timeout\n * @param {string} strategy Error Handling Strategy\n * @param {string} flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} logger Instance of Logger Class\n * @param {*} httpRequestErrorService Instance of Error Service Class\n */\n public constructor({\n baseURL = '',\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: RequestHandlerConfig) {\n this.timeout = timeout !== null ? timeout : this.timeout;\n this.strategy = strategy !== null ? strategy : this.strategy;\n this.cancellable = cancellable || this.cancellable;\n this.flattenResponse =\n flattenResponse !== null ? flattenResponse : this.flattenResponse;\n this.defaultResponse = defaultResponse;\n this.logger = logger || global.console || window.console || null;\n this.httpRequestErrorService = onError;\n this.requestsQueue = new Map();\n\n this.requestInstance = axios.create({\n ...config,\n baseURL,\n timeout: this.timeout,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestInstance;\n }\n\n /**\n * Intercept Request\n *\n * @param {*} callback callback to use before request\n * @returns {void}\n */\n public interceptRequest(callback: InterceptorCallback): void {\n this.getInstance().interceptors.request.use(callback);\n }\n\n /**\n * Maps all API requests\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public __get(prop: string) {\n if (prop in this) {\n return this[prop];\n }\n\n return this.prepareRequest.bind(this, prop);\n }\n\n /**\n * Prepare Request\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public prepareRequest(\n type: Method,\n url: string,\n data: any = null,\n config: EndpointConfig = null\n ): Promise {\n return this.handleRequest({\n type,\n url,\n data,\n config,\n });\n }\n\n /**\n * Build request configuration\n *\n * @param {string} method Request method\n * @param {string} url Request url\n * @param {*} data Request data\n * @param {EndpointConfig} config Request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected buildRequestConfig(\n method: string,\n url: string,\n data: any,\n config: EndpointConfig\n ): EndpointConfig {\n const methodLowerCase = method.toLowerCase() as Method;\n const key =\n methodLowerCase === 'get' || methodLowerCase === 'head'\n ? 'params'\n : 'data';\n\n return {\n ...config,\n url,\n method: methodLowerCase,\n [key]: data || {},\n };\n }\n\n /**\n * Process global Request Error\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected processRequestError(\n error: RequestError,\n requestConfig: EndpointConfig\n ): void {\n if (this.isRequestCancelled(error, requestConfig)) {\n return;\n }\n\n // Invoke per request \"onError\" call\n if (requestConfig.onError && typeof requestConfig.onError === 'function') {\n requestConfig.onError(error);\n }\n\n const errorHandler = new HttpRequestErrorHandler(\n this.logger,\n this.httpRequestErrorService\n );\n\n errorHandler.process(error);\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected async outputErrorResponse(\n error: RequestError,\n requestConfig: EndpointConfig\n ): Promise {\n const isRequestCancelled = this.isRequestCancelled(error, requestConfig);\n const errorHandlingStrategy = requestConfig.strategy || this.strategy;\n\n // By default cancelled requests aren't rejected\n if (isRequestCancelled && !requestConfig.rejectCancelled) {\n return this.defaultResponse;\n }\n\n if (errorHandlingStrategy === 'silent') {\n // Hang the promise\n await new Promise(() => null);\n\n return this.defaultResponse;\n }\n\n // Simply rejects a request promise\n if (\n errorHandlingStrategy === 'reject' ||\n errorHandlingStrategy === 'throwError'\n ) {\n return Promise.reject(error);\n }\n\n return this.defaultResponse;\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} _requestConfig Per endpoint request config\n * @returns {*} Error response\n */\n public isRequestCancelled(\n error: RequestError,\n _requestConfig: EndpointConfig\n ): boolean {\n return axios.isCancel(error);\n }\n\n /**\n * Automatically Cancel Previous Requests\n *\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected addCancellationToken(requestConfig: EndpointConfig) {\n // Both disabled\n if (!this.cancellable && !requestConfig.cancellable) {\n return {};\n }\n\n // Explicitly disabled per request\n if (\n typeof requestConfig.cancellable !== 'undefined' &&\n !requestConfig.cancellable\n ) {\n return {};\n }\n\n // Check if AbortController is available\n if (typeof AbortController === 'undefined') {\n console.error('AbortController is unavailable in your ENV.');\n\n return {};\n }\n\n const {\n method,\n baseURL,\n url,\n params,\n data,\n } = requestConfig;\n\n // Generate unique key as a cancellation token. Make sure it fits Map\n const key = JSON.stringify([\n method,\n baseURL,\n url,\n params,\n data,\n ]).substring(0, 55 ** 5);\n const previousRequest = this.requestsQueue.get(key);\n\n if (previousRequest) {\n previousRequest.abort();\n }\n\n const controller = new AbortController();\n\n this.requestsQueue.set(key, controller);\n\n return {\n signal: controller.signal,\n };\n }\n\n /**\n * Handle Request depending on used strategy\n *\n * @param {object} payload Payload\n * @param {string} payload.type Request type\n * @param {string} payload.url Request url\n * @param {*} payload.data Request data\n * @param {EndpointConfig} payload.config Request config\n * @throws {RequestError}\n * @returns {Promise} Response Data\n */\n protected async handleRequest({\n type,\n url,\n data = null,\n config = null,\n }: IRequestData): Promise {\n let response = null;\n const endpointConfig = config || {};\n let requestConfig = this.buildRequestConfig(\n type,\n url,\n data,\n endpointConfig\n );\n\n requestConfig = {\n ...this.addCancellationToken(requestConfig),\n ...requestConfig,\n };\n\n try {\n response = await this.requestInstance.request(requestConfig);\n } catch (error) {\n this.processRequestError(error, requestConfig);\n\n return this.outputErrorResponse(error, requestConfig);\n }\n\n return this.processResponseData(response);\n }\n\n /**\n * Process request response\n *\n * @param response Response object\n * @returns {*} Response data\n */\n protected processResponseData(response) {\n if (response.data) {\n if (!this.flattenResponse) {\n return response;\n }\n\n // Special case of data property within Axios data object\n // This is in fact a proper response but we may want to flatten it\n // To ease developers' lives when obtaining the response\n if (\n typeof response.data === 'object' &&\n typeof response.data.data !== 'undefined' &&\n Object.keys(response.data).length === 1\n ) {\n return response.data.data;\n }\n\n return response.data;\n }\n\n return this.defaultResponse;\n }\n}\n","export class HttpRequestErrorHandler {\n /**\n * Logger Class\n *\n * @type {*}\n * @memberof HttpRequestErrorHandler\n */\n public logger: any;\n\n /**\n * Error Service Class\n *\n * @type {*}\n * @memberof HttpRequestErrorHandler\n */\n public httpRequestErrorService: any;\n\n public constructor(logger: any, httpRequestErrorService: any) {\n this.logger = logger;\n this.httpRequestErrorService = httpRequestErrorService;\n }\n\n /**\n * Process and Error\n *\n * @param {*} error Error instance or message\n * @throws Request error context\n * @returns {void}\n */\n public process(error: string | Error) {\n if (this.logger && this.logger.warn) {\n this.logger.warn('API ERROR', error);\n }\n\n let errorContext = error;\n\n if (typeof error === 'string') {\n errorContext = new Error(error);\n }\n\n if (this.httpRequestErrorService) {\n if (typeof this.httpRequestErrorService.process !== 'undefined') {\n this.httpRequestErrorService.process(errorContext);\n } else if (typeof this.httpRequestErrorService === 'function') {\n this.httpRequestErrorService(errorContext);\n }\n }\n }\n}"],"mappings":"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","names":["src_exports","__export","ApiHandler","HttpRequestErrorHandler","HttpRequestHandler","createApiFetcher","__toCommonJS","import_js_magic","import_axios","import_js_magic","HttpRequestErrorHandler","logger","httpRequestErrorService","error","errorContext","HttpRequestHandler","baseURL","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","axios","callback","prop","type","url","data","method","methodLowerCase","error","requestConfig","HttpRequestErrorHandler","isRequestCancelled","errorHandlingStrategy","_requestConfig","params","key","previousRequest","controller","response","endpointConfig","__decorateClass","ApiHandler","apiUrl","endpoints","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","HttpRequestHandler","prop","args","endpointSettings","queryParams","uriParams","requestConfig","uri","str","responseData","additionalRequestSettings","__decorateClass","createApiFetcher","options"]}
\ No newline at end of file
+{"version":3,"sources":["../src/index.ts","../src/api-handler.ts","../src/request-handler.ts","../src/request-error-handler.ts"],"sourcesContent":["export * from './types';\nexport * from './api-handler';\nexport * from './request-handler';\nexport * from './request-error-handler';\n","// 3rd party libs\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Types\nimport type { AxiosInstance } from 'axios';\n\nimport {\n IRequestResponse,\n APIHandlerConfig,\n EndpointConfig,\n} from './types/http-request';\n\nimport { RequestHandler } from './request-handler';\n\n/**\n * Handles dispatching of API requests\n */\n@applyMagic\nexport class ApiHandler implements MagicalClass {\n /**\n * TS Index signature\n */\n [x: string]: any;\n\n /**\n * @var requestHandler Request Wrapper Instance\n */\n public requestHandler: RequestHandler;\n\n /**\n * Endpoints\n */\n protected endpoints: Record;\n\n /**\n * Logger\n */\n protected logger: any;\n\n /**\n * Creates an instance of API Handler\n *\n * @param {string} config.apiUrl Base URL for all API calls\n * @param {number} config.timeout Request timeout\n * @param {string} config.strategy Error Handling Strategy\n * @param {string} config.flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} config.logger Instance of Logger Class\n * @param {*} config.onError Instance of Error Service Class\n */\n public constructor({\n axios,\n apiUrl,\n endpoints,\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: APIHandlerConfig) {\n this.endpoints = endpoints;\n this.logger = logger;\n\n this.requestHandler = new RequestHandler({\n ...config,\n baseURL: apiUrl,\n axios,\n timeout,\n cancellable,\n strategy,\n flattenResponse,\n defaultResponse,\n logger,\n onError,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestHandler.getInstance();\n }\n\n /**\n * Maps all API requests\n *\n * @param {*} prop Caller\n * @returns {Function} Tailored request function\n */\n public __get(prop: any): any {\n if (prop in this) {\n return this[prop];\n }\n\n // Prevent handler from running for non-existent endpoints\n if (!this.endpoints[prop]) {\n return this.handleNonImplemented.bind(this, prop);\n }\n\n return this.handleRequest.bind(this, prop);\n }\n\n /**\n * Handle Single API Request\n *\n * @param {*} args Arguments\n * @returns {Promise} Resolvable API provider promise\n */\n public async handleRequest(...args: any): Promise {\n const prop = args[0];\n const endpointSettings = this.endpoints[prop];\n\n const queryParams = args[1] || {};\n const uriParams = args[2] || {};\n const requestConfig = args[3] || {};\n\n const uri = endpointSettings.url.replace(/:[a-z]+/gi, (str: string) =>\n uriParams[str.substring(1)] ? uriParams[str.substring(1)] : str\n );\n\n let responseData = null;\n\n const additionalRequestSettings = { ...endpointSettings };\n\n delete additionalRequestSettings.url;\n delete additionalRequestSettings.method;\n\n responseData = await this.requestHandler[\n (endpointSettings.method || 'get').toLowerCase()\n ](uri, queryParams, {\n ...requestConfig,\n ...additionalRequestSettings,\n });\n\n return responseData;\n }\n\n /**\n * Triggered when trying to use non-existent endpoints\n *\n * @param prop Method Name\n * @returns {Promise}\n */\n protected handleNonImplemented(prop: string): Promise {\n if (this.logger?.log) {\n this.logger.log(`${prop} endpoint not implemented.`);\n }\n\n return Promise.resolve(null);\n }\n}\n\nexport const createApiFetcher = (options: APIHandlerConfig) =>\n new ApiHandler(options);\n","// 3rd party libs\nimport type { AxiosInstance, AxiosStatic, Method } from 'axios';\nimport { applyMagic, MagicalClass } from 'js-magic';\n\n// Shared Modules\nimport { RequestErrorHandler } from './request-error-handler';\n\n// Types\nimport type {\n IRequestData,\n IRequestResponse,\n ErrorHandlingStrategy,\n RequestHandlerConfig,\n EndpointConfig,\n RequestError,\n} from './types/http-request';\n\n/**\n * Generic Request Handler\n * It creates an Axios instance and handles requests within that instance\n * It handles errors depending on a chosen error handling strategy\n */\n@applyMagic\nexport class RequestHandler implements MagicalClass {\n /**\n * @var requestInstance Provider's instance\n */\n public requestInstance: AxiosInstance;\n\n /**\n * @var timeout Request timeout\n */\n public timeout: number = 30000;\n\n /**\n * @var cancellable Response cancellation\n */\n public cancellable: boolean = false;\n\n /**\n * @var strategy Request timeout\n */\n public strategy: ErrorHandlingStrategy = 'reject';\n\n /**\n * @var flattenResponse Response flattening\n */\n public flattenResponse: boolean = true;\n\n /**\n * @var defaultResponse Response flattening\n */\n public defaultResponse: any = null;\n\n /**\n * @var axios Axios instance\n */\n protected axios: AxiosStatic;\n\n /**\n * @var logger Logger\n */\n protected logger: any;\n\n /**\n * @var requestErrorService HTTP error service\n */\n protected requestErrorService: any;\n\n /**\n * @var requestsQueue Queue of requests\n */\n protected requestsQueue: Map;\n\n /**\n * Creates an instance of HttpRequestHandler\n *\n * @param {string} config.axios Axios instance\n * @param {string} config.baseURL Base URL for all API calls\n * @param {number} config.timeout Request timeout\n * @param {string} config.strategy Error Handling Strategy\n * @param {string} config.flattenResponse Whether to flatten response \"data\" object within \"data\" one\n * @param {*} config.logger Instance of Logger Class\n * @param {*} config.requestErrorService Instance of Error Service Class\n */\n public constructor({\n axios,\n baseURL = '',\n timeout = null,\n cancellable = false,\n strategy = null,\n flattenResponse = null,\n defaultResponse = {},\n logger = null,\n onError = null,\n ...config\n }: RequestHandlerConfig) {\n this.axios = axios;\n this.timeout = timeout !== null ? timeout : this.timeout;\n this.strategy = strategy !== null ? strategy : this.strategy;\n this.cancellable = cancellable || this.cancellable;\n this.flattenResponse =\n flattenResponse !== null ? flattenResponse : this.flattenResponse;\n this.defaultResponse = defaultResponse;\n this.logger = logger || global.console || window.console || null;\n this.requestErrorService = onError;\n this.requestsQueue = new Map();\n\n this.requestInstance = axios.create({\n ...config,\n baseURL,\n timeout: this.timeout,\n });\n }\n\n /**\n * Get Provider Instance\n *\n * @returns {AxiosInstance} Provider's instance\n */\n public getInstance(): AxiosInstance {\n return this.requestInstance;\n }\n\n /**\n * Maps all API requests\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public __get(prop: string) {\n if (prop in this) {\n return this[prop];\n }\n\n return this.prepareRequest.bind(this, prop);\n }\n\n /**\n * Prepare Request\n *\n * @param {string} url Url\n * @param {*} data Payload\n * @param {EndpointConfig} config Config\n * @throws {RequestError} If request fails\n * @returns {Promise} Request response or error info\n */\n public prepareRequest(\n type: Method,\n url: string,\n data: any = null,\n config: EndpointConfig = null\n ): Promise {\n return this.handleRequest({\n type,\n url,\n data,\n config,\n });\n }\n\n /**\n * Build request configuration\n *\n * @param {string} method Request method\n * @param {string} url Request url\n * @param {*} data Request data\n * @param {EndpointConfig} config Request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected buildRequestConfig(\n method: string,\n url: string,\n data: any,\n config: EndpointConfig\n ): EndpointConfig {\n const methodLowerCase = method.toLowerCase() as Method;\n const key =\n methodLowerCase === 'get' || methodLowerCase === 'head'\n ? 'params'\n : 'data';\n\n return {\n ...config,\n url,\n method: methodLowerCase,\n [key]: data || {},\n };\n }\n\n /**\n * Process global Request Error\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected processRequestError(\n error: RequestError,\n requestConfig: EndpointConfig\n ): void {\n if (this.isRequestCancelled(error, requestConfig)) {\n return;\n }\n\n // Invoke per request \"onError\" call\n if (requestConfig.onError && typeof requestConfig.onError === 'function') {\n requestConfig.onError(error);\n }\n\n const errorHandler = new RequestErrorHandler(\n this.logger,\n this.requestErrorService\n );\n\n errorHandler.process(error);\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected async outputErrorResponse(\n error: RequestError,\n requestConfig: EndpointConfig\n ): Promise {\n const isRequestCancelled = this.isRequestCancelled(error, requestConfig);\n const errorHandlingStrategy = requestConfig.strategy || this.strategy;\n\n // By default cancelled requests aren't rejected\n if (isRequestCancelled && !requestConfig.rejectCancelled) {\n return this.defaultResponse;\n }\n\n if (errorHandlingStrategy === 'silent') {\n // Hang the promise\n await new Promise(() => null);\n\n return this.defaultResponse;\n }\n\n // Simply rejects a request promise\n if (\n errorHandlingStrategy === 'reject' ||\n errorHandlingStrategy === 'throwError'\n ) {\n return Promise.reject(error);\n }\n\n return this.defaultResponse;\n }\n\n /**\n * Output error response depending on chosen strategy\n *\n * @param {RequestError} error Error instance\n * @param {EndpointConfig} _requestConfig Per endpoint request config\n * @returns {*} Error response\n */\n public isRequestCancelled(\n error: RequestError,\n _requestConfig: EndpointConfig\n ): boolean {\n return this.axios.isCancel(error);\n }\n\n /**\n * Automatically Cancel Previous Requests\n *\n * @param {EndpointConfig} requestConfig Per endpoint request config\n * @returns {AxiosInstance} Provider's instance\n */\n protected addCancellationToken(requestConfig: EndpointConfig) {\n // Both disabled\n if (!this.cancellable && !requestConfig.cancellable) {\n return {};\n }\n\n // Explicitly disabled per request\n if (\n typeof requestConfig.cancellable !== 'undefined' &&\n !requestConfig.cancellable\n ) {\n return {};\n }\n\n // Check if AbortController is available\n if (typeof AbortController === 'undefined') {\n console.error('AbortController is unavailable in your ENV.');\n\n return {};\n }\n\n const { method, baseURL, url, params, data } = requestConfig;\n\n // Generate unique key as a cancellation token. Make sure it fits Map\n const key = JSON.stringify([method, baseURL, url, params, data]).substring(\n 0,\n 55 ** 5\n );\n const previousRequest = this.requestsQueue.get(key);\n\n if (previousRequest) {\n previousRequest.abort();\n }\n\n const controller = new AbortController();\n\n this.requestsQueue.set(key, controller);\n\n return {\n signal: controller.signal,\n };\n }\n\n /**\n * Handle Request depending on used strategy\n *\n * @param {object} payload Payload\n * @param {string} payload.type Request type\n * @param {string} payload.url Request url\n * @param {*} payload.data Request data\n * @param {EndpointConfig} payload.config Request config\n * @throws {RequestError}\n * @returns {Promise} Response Data\n */\n protected async handleRequest({\n type,\n url,\n data = null,\n config = null,\n }: IRequestData): Promise {\n let response = null;\n const endpointConfig = config || {};\n let requestConfig = this.buildRequestConfig(\n type,\n url,\n data,\n endpointConfig\n );\n\n requestConfig = {\n ...this.addCancellationToken(requestConfig),\n ...requestConfig,\n };\n\n try {\n response = await this.requestInstance.request(requestConfig);\n } catch (error) {\n this.processRequestError(error, requestConfig);\n\n return this.outputErrorResponse(error, requestConfig);\n }\n\n return this.processResponseData(response);\n }\n\n /**\n * Process request response\n *\n * @param response Response object\n * @returns {*} Response data\n */\n protected processResponseData(response) {\n if (response.data) {\n if (!this.flattenResponse) {\n return response;\n }\n\n // Special case of data property within Axios data object\n // This is in fact a proper response but we may want to flatten it\n // To ease developers' lives when obtaining the response\n if (\n typeof response.data === 'object' &&\n typeof response.data.data !== 'undefined' &&\n Object.keys(response.data).length === 1\n ) {\n return response.data.data;\n }\n\n return response.data;\n }\n\n return this.defaultResponse;\n }\n}\n","export class RequestErrorHandler {\n /**\n * Logger Class\n *\n * @type {*}\n * @memberof RequestErrorHandler\n */\n protected logger: any;\n\n /**\n * Error Service Class\n *\n * @type {*}\n * @memberof RequestErrorHandler\n */\n public requestErrorService: any;\n\n public constructor(logger: any, requestErrorService: any) {\n this.logger = logger;\n this.requestErrorService = requestErrorService;\n }\n\n /**\n * Process and Error\n *\n * @param {*} error Error instance or message\n * @throws Request error context\n * @returns {void}\n */\n public process(error: string | Error): void {\n if (this.logger?.warn) {\n this.logger.warn('API ERROR', error);\n }\n\n let errorContext = error;\n\n if (typeof error === 'string') {\n errorContext = new Error(error);\n }\n\n if (this.requestErrorService) {\n if (typeof this.requestErrorService.process !== 'undefined') {\n this.requestErrorService.process(errorContext);\n } else if (typeof this.requestErrorService === 'function') {\n this.requestErrorService(errorContext);\n }\n }\n }\n}\n"],"mappings":"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","names":["src_exports","__export","ApiHandler","RequestErrorHandler","RequestHandler","createApiFetcher","__toCommonJS","import_js_magic","import_js_magic","RequestErrorHandler","logger","requestErrorService","error","_a","errorContext","RequestHandler","axios","baseURL","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","prop","type","url","data","method","methodLowerCase","error","requestConfig","RequestErrorHandler","isRequestCancelled","errorHandlingStrategy","_requestConfig","params","key","previousRequest","controller","response","endpointConfig","__decorateClass","ApiHandler","axios","apiUrl","endpoints","timeout","cancellable","strategy","flattenResponse","defaultResponse","logger","onError","config","RequestHandler","prop","args","endpointSettings","queryParams","uriParams","requestConfig","uri","str","responseData","additionalRequestSettings","_a","__decorateClass","createApiFetcher","options"]}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index b43a90c..342c7aa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,33 +1,43 @@
{
"name": "axios-multi-api",
- "version": "1.4.2",
- "lockfileVersion": 2,
+ "version": "1.5.0",
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "axios-multi-api",
- "version": "1.4.2",
+ "version": "1.5.0",
"license": "MIT",
"dependencies": {
- "axios": "^0.27.2",
- "js-magic": "^1.2.3"
+ "js-magic": "^1.2.4"
},
"devDependencies": {
- "@size-limit/preset-small-lib": "^8.0.1",
- "@types/jest": "^29.0.0",
- "eslint": "^8.23.0",
- "husky": "^8.0.1",
- "jest": "^29.0.1",
+ "@size-limit/preset-small-lib": "^8.2.6",
+ "@types/jest": "^29.5.2",
+ "eslint": "^8.44.0",
+ "jest": "^29.5.0",
"promise-any": "0.2.0",
"rollup-plugin-bundle-imports": "^1.5.1",
- "size-limit": "^8.0.1",
- "ts-jest": "^29.0.0-next.0",
- "tslib": "^2.4.0",
- "tsup": "^6.2.3",
- "typescript": "^4.8.2"
+ "size-limit": "^8.2.6",
+ "ts-jest": "^29.1.1",
+ "tslib": "^2.6.0",
+ "tsup": "^7.1.0",
+ "typescript": "^5.1.6"
},
"engines": {
"node": ">=16"
+ },
+ "peerDependencies": {
+ "axios": "^1"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/@ampproject/remapping": {
@@ -224,9 +234,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz",
- "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -257,18 +267,18 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz",
- "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
- "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
+ "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -383,9 +393,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.18.13",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz",
- "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz",
+ "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -455,12 +465,12 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
- "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+ "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -557,12 +567,12 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz",
- "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
+ "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -607,13 +617,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.18.13",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz",
- "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
+ "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
"dev": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.18.10",
- "@babel/helper-validator-identifier": "^7.18.6",
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -626,32 +636,56 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.6.tgz",
- "integrity": "sha512-hqmVU2mUjH6J2ZivHphJ/Pdse2ZD+uGCHK0uvsiLDk/JnSedEVj77CiVUnbMKuU4tih1TZZL8tG9DExQg/GZsw==",
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz",
+ "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==",
"cpu": [
- "loong64"
+ "arm64"
],
"dev": true,
"optional": true,
"os": [
- "linux"
+ "darwin"
],
"engines": {
"node": ">=12"
}
},
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
+ "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz",
- "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz",
+ "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.4.0",
- "globals": "^13.15.0",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@@ -672,9 +706,9 @@
"dev": true
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.17.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
- "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -710,30 +744,29 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@eslint/js": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz",
+ "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
"node_modules/@humanwhocodes/config-array": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz",
- "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==",
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+ "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
- "minimatch": "^3.0.4"
+ "minimatch": "^3.0.5"
},
"engines": {
"node": ">=10.10.0"
}
},
- "node_modules/@humanwhocodes/gitignore-to-minimatch": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz",
- "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -779,16 +812,16 @@
}
},
"node_modules/@jest/console": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.1.tgz",
- "integrity": "sha512-SxLvSKf9gk4Rvt3p2KRQWVQ3sVj7S37rjlCHwp2+xNcRO/X+Uw0idbkfOtciUpjghHIxyggqcrrKhThQ+vClLQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
+ "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.0.1",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
"chalk": "^4.0.0",
- "jest-message-util": "^29.0.1",
- "jest-util": "^29.0.1",
+ "jest-message-util": "^29.5.0",
+ "jest-util": "^29.5.0",
"slash": "^3.0.0"
},
"engines": {
@@ -796,37 +829,37 @@
}
},
"node_modules/@jest/core": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.1.tgz",
- "integrity": "sha512-EcFrXkYh8I1GYHRH9V4TU7jr4P6ckaPqGo/z4AIJjHDZxicjYgWB6fx1xFb5bhEM87eUjCF4FAY5t+RamLWQmA==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
+ "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.0.1",
- "@jest/reporters": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/console": "^29.5.0",
+ "@jest/reporters": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.0.0",
- "jest-config": "^29.0.1",
- "jest-haste-map": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-regex-util": "^29.0.0",
- "jest-resolve": "^29.0.1",
- "jest-resolve-dependencies": "^29.0.1",
- "jest-runner": "^29.0.1",
- "jest-runtime": "^29.0.1",
- "jest-snapshot": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-validate": "^29.0.1",
- "jest-watcher": "^29.0.1",
+ "jest-changed-files": "^29.5.0",
+ "jest-config": "^29.5.0",
+ "jest-haste-map": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.5.0",
+ "jest-resolve-dependencies": "^29.5.0",
+ "jest-runner": "^29.5.0",
+ "jest-runtime": "^29.5.0",
+ "jest-snapshot": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-validate": "^29.5.0",
+ "jest-watcher": "^29.5.0",
"micromatch": "^4.0.4",
- "pretty-format": "^29.0.1",
+ "pretty-format": "^29.5.0",
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
},
@@ -843,88 +876,88 @@
}
},
"node_modules/@jest/environment": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.1.tgz",
- "integrity": "sha512-iLcFfoq2K6DAB+Mc+2VNLzZVmHdwQFeSqvoM/X8SMON6s/+yEi1iuRX3snx/JfwSnvmiMXjSr0lktxNxOcqXYA==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
+ "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
"dev": true,
"dependencies": {
- "@jest/fake-timers": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/fake-timers": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
- "jest-mock": "^29.0.1"
+ "jest-mock": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/expect": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.1.tgz",
- "integrity": "sha512-qKB3q52XDV8VUEiqKKLgLrJx7puQ8sYVqIDlul6n7SIXWS97DOK3KqbR2rDDaMtmenRHqEUl2fI+aFzx0oSemA==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
+ "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
"dev": true,
"dependencies": {
- "expect": "^29.0.1",
- "jest-snapshot": "^29.0.1"
+ "expect": "^29.5.0",
+ "jest-snapshot": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/expect-utils": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.1.tgz",
- "integrity": "sha512-Tw5kUUOKmXGQDmQ9TSgTraFFS7HMC1HG/B7y0AN2G2UzjdAXz9BzK2rmNpCSDl7g7y0Gf/VLBm//blonvhtOTQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
+ "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
"dev": true,
"dependencies": {
- "jest-get-type": "^29.0.0"
+ "jest-get-type": "^29.4.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/fake-timers": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.1.tgz",
- "integrity": "sha512-XZ+kAhLChVQ+KJNa5034p7O1Mz3vtWrelxDcMoxhZkgqmWDaEQAW9qJeutaeCfPvwaEwKYVyKDYfWpcyT8RiMw==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
+ "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.0.1",
- "@sinonjs/fake-timers": "^9.1.2",
+ "@jest/types": "^29.5.0",
+ "@sinonjs/fake-timers": "^10.0.2",
"@types/node": "*",
- "jest-message-util": "^29.0.1",
- "jest-mock": "^29.0.1",
- "jest-util": "^29.0.1"
+ "jest-message-util": "^29.5.0",
+ "jest-mock": "^29.5.0",
+ "jest-util": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/globals": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.1.tgz",
- "integrity": "sha512-BtZWrVrKRKNUt7T1H2S8Mz31PN7ItROCmH+V5pn10hJDUfjOCTIUwb0WtLZzm0f1tJ3Uvx+5lVZrF/VTKqNaFg==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
+ "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.0.1",
- "@jest/expect": "^29.0.1",
- "@jest/types": "^29.0.1",
- "jest-mock": "^29.0.1"
+ "@jest/environment": "^29.5.0",
+ "@jest/expect": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "jest-mock": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/reporters": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.1.tgz",
- "integrity": "sha512-dM3L8JmYYOsdeXUUVZClQy67Tz/v1sMo9h4AQv2U+716VLHV0zdA6Hh4FQNAHMhYw/95dbZbPX8Q+TRR7Rw+wA==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
+ "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
"dev": true,
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/console": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@jridgewell/trace-mapping": "^0.3.15",
"@types/node": "*",
"chalk": "^4.0.0",
@@ -937,13 +970,12 @@
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
"istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-worker": "^29.0.1",
+ "jest-message-util": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-worker": "^29.5.0",
"slash": "^3.0.0",
"string-length": "^4.0.1",
"strip-ansi": "^6.0.0",
- "terminal-link": "^2.0.0",
"v8-to-istanbul": "^9.0.1"
},
"engines": {
@@ -959,21 +991,21 @@
}
},
"node_modules/@jest/schemas": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz",
- "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
+ "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
"dev": true,
"dependencies": {
- "@sinclair/typebox": "^0.24.1"
+ "@sinclair/typebox": "^0.25.16"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/source-map": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.0.0.tgz",
- "integrity": "sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
+ "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
"dev": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.15",
@@ -985,13 +1017,13 @@
}
},
"node_modules/@jest/test-result": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.1.tgz",
- "integrity": "sha512-XCA4whh/igxjBaR/Hg8qwFd/uTsauoD7QAdAYUjV2CSGx0+iunhjoCRRWTwqjQrETRqOJABx6kNfw0+C0vMSgQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
+ "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/console": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
},
@@ -1000,14 +1032,14 @@
}
},
"node_modules/@jest/test-sequencer": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.1.tgz",
- "integrity": "sha512-3GhSBMCRcWXGluP2Dw7CLP6mNke/t+EcftF5YjzhX1BJmqcatMbtZVwjuCfZy0TCME1GevXy3qTyV5PLpwIFKQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
+ "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^29.0.1",
+ "@jest/test-result": "^29.5.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.0.1",
+ "jest-haste-map": "^29.5.0",
"slash": "^3.0.0"
},
"engines": {
@@ -1015,38 +1047,44 @@
}
},
"node_modules/@jest/transform": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.1.tgz",
- "integrity": "sha512-6UxXtqrPScFdDhoip8ys60dQAIYppQinyR87n9nlasR/ZnFfJohKToqzM29KK4gb9gHRv5oDFChdqZKE0SIhsg==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
+ "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
- "@jest/types": "^29.0.1",
+ "@jest/types": "^29.5.0",
"@jridgewell/trace-mapping": "^0.3.15",
"babel-plugin-istanbul": "^6.1.1",
"chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
+ "convert-source-map": "^2.0.0",
"fast-json-stable-stringify": "^2.1.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.0.1",
- "jest-regex-util": "^29.0.0",
- "jest-util": "^29.0.1",
+ "jest-haste-map": "^29.5.0",
+ "jest-regex-util": "^29.4.3",
+ "jest-util": "^29.5.0",
"micromatch": "^4.0.4",
"pirates": "^4.0.4",
"slash": "^3.0.0",
- "write-file-atomic": "^4.0.1"
+ "write-file-atomic": "^4.0.2"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
+ "node_modules/@jest/transform/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
"node_modules/@jest/types": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.1.tgz",
- "integrity": "sha512-ft01rxzVsbh9qZPJ6EFgAIj3PT9FCRfBF9Xljo2/33VDOUjLZr0ZJ2oKANqh9S/K0/GERCsHDAQlBwj7RxA+9g==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+ "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
"dev": true,
"dependencies": {
- "@jest/schemas": "^29.0.0",
+ "@jest/schemas": "^29.4.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -1208,81 +1246,82 @@
"peer": true
},
"node_modules/@sinclair/typebox": {
- "version": "0.24.31",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.31.tgz",
- "integrity": "sha512-uWZaAsh9WFhcY1rWLLcMU/omiIIAQ/PmgqplaF6UWY6ULPH0ZO8hupJRAydzlTQZJIK3Voz8o8dYlEx+Cm6BAA==",
+ "version": "0.25.24",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
+ "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
"dev": true
},
"node_modules/@sinonjs/commons": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
- "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
+ "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
"dev": true,
"dependencies": {
"type-detect": "4.0.8"
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
- "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==",
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
"dev": true,
"dependencies": {
- "@sinonjs/commons": "^1.7.0"
+ "@sinonjs/commons": "^3.0.0"
}
},
"node_modules/@size-limit/esbuild": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@size-limit/esbuild/-/esbuild-8.0.1.tgz",
- "integrity": "sha512-EnfRweoQc4P91G45sPfzAWMVPibK5SEV6sUWC46DcGlT9xrYeCQYtInbsny1/lSorC/sfJKN84aGm4A+q6SgOw==",
+ "version": "8.2.6",
+ "resolved": "https://registry.npmjs.org/@size-limit/esbuild/-/esbuild-8.2.6.tgz",
+ "integrity": "sha512-a4c8xVDuDMYw5jF655ADjQDluw3jGPPYer6UJock5rSnUlWnIbmT/Ohud7gJGq5gqyLUQOCrBD7NB3g+mlhj4g==",
"dev": true,
"dependencies": {
- "esbuild": "^0.15.1",
- "nanoid": "^3.3.4"
+ "esbuild": "^0.18.6",
+ "nanoid": "^3.3.6"
},
"engines": {
"node": "^14.0.0 || ^16.0.0 || >=18.0.0"
},
"peerDependencies": {
- "size-limit": "8.0.1"
+ "size-limit": "8.2.6"
}
},
"node_modules/@size-limit/file": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@size-limit/file/-/file-8.0.1.tgz",
- "integrity": "sha512-kwgc5UJQIz5qbRow3atSiW2K7vEIIw4DelT4WLn09cOwcJgWs82Imgz2UqVivHJmCisn/ltPjT4qmxaDfjFflw==",
+ "version": "8.2.6",
+ "resolved": "https://registry.npmjs.org/@size-limit/file/-/file-8.2.6.tgz",
+ "integrity": "sha512-B7ayjxiJsbtXdIIWazJkB5gezi5WBMecdHTFPMDhI3NwEML1RVvUjAkrb1mPAAkIpt2LVHPnhdCUHjqDdjugwg==",
"dev": true,
"dependencies": {
- "semver": "7.3.7"
+ "semver": "7.5.3"
},
"engines": {
"node": "^14.0.0 || ^16.0.0 || >=18.0.0"
},
"peerDependencies": {
- "size-limit": "8.0.1"
+ "size-limit": "8.2.6"
}
},
"node_modules/@size-limit/preset-small-lib": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@size-limit/preset-small-lib/-/preset-small-lib-8.0.1.tgz",
- "integrity": "sha512-EV+UXGZJU9kiT8R4N9dxjRAJ37tzjuP+e2DfpRtv7cx1ErFiB6k//wEhw9nLmJMWWhfvcVEvJYyKm3+i0pbWUQ==",
+ "version": "8.2.6",
+ "resolved": "https://registry.npmjs.org/@size-limit/preset-small-lib/-/preset-small-lib-8.2.6.tgz",
+ "integrity": "sha512-roanEuscDaaXDsT5Cg9agMbmsQVlMr66eRg3AwT2o4vE7WFLR8Z42p0AHZiwucW1nGpCxAh8E08Qa/yyVuj5nA==",
"dev": true,
"dependencies": {
- "@size-limit/esbuild": "8.0.1",
- "@size-limit/file": "8.0.1"
+ "@size-limit/esbuild": "8.2.6",
+ "@size-limit/file": "8.2.6",
+ "size-limit": "8.2.6"
},
"peerDependencies": {
- "size-limit": "8.0.1"
+ "size-limit": "8.2.6"
}
},
"node_modules/@types/babel__core": {
- "version": "7.1.19",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz",
- "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==",
+ "version": "7.20.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
+ "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==",
"dev": true,
"dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0",
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
"@types/babel__generator": "*",
"@types/babel__template": "*",
"@types/babel__traverse": "*"
@@ -1324,9 +1363,9 @@
"peer": true
},
"node_modules/@types/graceful-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
- "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+ "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -1357,9 +1396,9 @@
}
},
"node_modules/@types/jest": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.0.0.tgz",
- "integrity": "sha512-X6Zjz3WO4cT39Gkl0lZ2baFRaEMqJl5NC1OjElkwtNzAlbkr2K/WJXkBkH5VP0zx4Hgsd2TZYdOEfvp2Dxia+Q==",
+ "version": "29.5.2",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz",
+ "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==",
"dev": true,
"dependencies": {
"expect": "^29.0.0",
@@ -1373,9 +1412,9 @@
"dev": true
},
"node_modules/@types/prettier": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz",
- "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==",
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
"dev": true
},
"node_modules/@types/resolve": {
@@ -1410,9 +1449,9 @@
"dev": true
},
"node_modules/acorn": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
- "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
+ "version": "8.9.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
+ "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -1525,27 +1564,30 @@
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "peer": true
},
"node_modules/axios": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
- "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
+ "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
+ "peer": true,
"dependencies": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
}
},
"node_modules/babel-jest": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.1.tgz",
- "integrity": "sha512-wyI9r8tqwsZEMWiIaYjdUJ6ztZIO4DMWpGq7laW34wR71WtRS+D/iBEtXOP5W2aSYCVUQMsypRl/xiJYZznnTg==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
+ "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
"dev": true,
"dependencies": {
- "@jest/transform": "^29.0.1",
+ "@jest/transform": "^29.5.0",
"@types/babel__core": "^7.1.14",
"babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.0.0",
+ "babel-preset-jest": "^29.5.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"slash": "^3.0.0"
@@ -1574,9 +1616,9 @@
}
},
"node_modules/babel-plugin-jest-hoist": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.0.tgz",
- "integrity": "sha512-B9oaXrlxXHFWeWqhDPg03iqQd2UN/mg/VdZOsLaqAVBkztru3ctTryAI4zisxLEEgmcUnLTKewqx0gGifoXD3A==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
+ "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
"dev": true,
"dependencies": {
"@babel/template": "^7.3.3",
@@ -1612,12 +1654,12 @@
}
},
"node_modules/babel-preset-jest": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.0.0.tgz",
- "integrity": "sha512-B5Ke47Xcs8rDF3p1korT3LoilpADCwbG93ALqtvqu6Xpf4d8alKkrCBTExbNzdHJcIuEPpfYvEaFFRGee2kUgQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
+ "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
"dev": true,
"dependencies": {
- "babel-plugin-jest-hoist": "^29.0.0",
+ "babel-plugin-jest-hoist": "^29.5.0",
"babel-preset-current-node-syntax": "^1.0.0"
},
"engines": {
@@ -1733,18 +1775,18 @@
}
},
"node_modules/bundle-require": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-3.1.0.tgz",
- "integrity": "sha512-IIXtAO7fKcwPHNPt9kY/WNVJqy7NDy6YqJvv6ENH0TOZoJ+yjpEsn1w40WKZbR2ibfu5g1rfgJTvmFHpm5aOMA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.1.tgz",
+ "integrity": "sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==",
"dev": true,
"dependencies": {
- "load-tsconfig": "^0.2.0"
+ "load-tsconfig": "^0.2.3"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"peerDependencies": {
- "esbuild": ">=0.13"
+ "esbuild": ">=0.17"
}
},
"node_modules/bytes-iec": {
@@ -1857,44 +1899,24 @@
"integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==",
"dev": true
},
- "node_modules/ci-job-number": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/ci-job-number/-/ci-job-number-1.2.2.tgz",
- "integrity": "sha512-CLOGsVDrVamzv8sXJGaILUVI6dsuAkouJP/n6t+OxLPeeA4DDby7zn9SB6EUpa1H7oIKoE+rMmkW80zYsFfUjA==",
- "dev": true
- },
"node_modules/cjs-module-lexer": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
- "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
"dev": true
},
"node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
+ "strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/cliui/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": ">=12"
}
},
"node_modules/co": {
@@ -1935,6 +1957,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "peer": true,
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -2020,6 +2043,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "peer": true,
"engines": {
"node": ">=0.4.0"
}
@@ -2034,9 +2058,9 @@
}
},
"node_modules/diff-sequences": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz",
- "integrity": "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
+ "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -2073,9 +2097,9 @@
"dev": true
},
"node_modules/emittery": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz",
- "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==",
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
"dev": true,
"engines": {
"node": ">=12"
@@ -2084,6 +2108,12 @@
"url": "https://github.com/sindresorhus/emittery?sponsor=1"
}
},
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -2094,9 +2124,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.6.tgz",
- "integrity": "sha512-sgLOv3l4xklvXzzczhRwKRotyrfyZ2i1fCS6PTOLPd9wevDPArGU8HFtHrHCOcsMwTjLjzGm15gvC8uxVzQf+w==",
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz",
+ "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==",
"dev": true,
"hasInstallScript": true,
"bin": {
@@ -2106,522 +2136,182 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/linux-loong64": "0.15.6",
- "esbuild-android-64": "0.15.6",
- "esbuild-android-arm64": "0.15.6",
- "esbuild-darwin-64": "0.15.6",
- "esbuild-darwin-arm64": "0.15.6",
- "esbuild-freebsd-64": "0.15.6",
- "esbuild-freebsd-arm64": "0.15.6",
- "esbuild-linux-32": "0.15.6",
- "esbuild-linux-64": "0.15.6",
- "esbuild-linux-arm": "0.15.6",
- "esbuild-linux-arm64": "0.15.6",
- "esbuild-linux-mips64le": "0.15.6",
- "esbuild-linux-ppc64le": "0.15.6",
- "esbuild-linux-riscv64": "0.15.6",
- "esbuild-linux-s390x": "0.15.6",
- "esbuild-netbsd-64": "0.15.6",
- "esbuild-openbsd-64": "0.15.6",
- "esbuild-sunos-64": "0.15.6",
- "esbuild-windows-32": "0.15.6",
- "esbuild-windows-64": "0.15.6",
- "esbuild-windows-arm64": "0.15.6"
- }
- },
- "node_modules/esbuild-android-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.6.tgz",
- "integrity": "sha512-Z1CHSgB1crVQi2LKSBwSkpaGtaloVz0ZIYcRMsvHc3uSXcR/x5/bv9wcZspvH/25lIGTaViosciS/NS09ERmVA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
+ "@esbuild/android-arm": "0.18.11",
+ "@esbuild/android-arm64": "0.18.11",
+ "@esbuild/android-x64": "0.18.11",
+ "@esbuild/darwin-arm64": "0.18.11",
+ "@esbuild/darwin-x64": "0.18.11",
+ "@esbuild/freebsd-arm64": "0.18.11",
+ "@esbuild/freebsd-x64": "0.18.11",
+ "@esbuild/linux-arm": "0.18.11",
+ "@esbuild/linux-arm64": "0.18.11",
+ "@esbuild/linux-ia32": "0.18.11",
+ "@esbuild/linux-loong64": "0.18.11",
+ "@esbuild/linux-mips64el": "0.18.11",
+ "@esbuild/linux-ppc64": "0.18.11",
+ "@esbuild/linux-riscv64": "0.18.11",
+ "@esbuild/linux-s390x": "0.18.11",
+ "@esbuild/linux-x64": "0.18.11",
+ "@esbuild/netbsd-x64": "0.18.11",
+ "@esbuild/openbsd-x64": "0.18.11",
+ "@esbuild/sunos-x64": "0.18.11",
+ "@esbuild/win32-arm64": "0.18.11",
+ "@esbuild/win32-ia32": "0.18.11",
+ "@esbuild/win32-x64": "0.18.11"
}
},
- "node_modules/esbuild-android-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.6.tgz",
- "integrity": "sha512-mvM+gqNxqKm2pCa3dnjdRzl7gIowuc4ga7P7c3yHzs58Im8v/Lfk1ixSgQ2USgIywT48QWaACRa3F4MG7djpSw==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"dev": true,
- "optional": true,
- "os": [
- "android"
- ],
"engines": {
- "node": ">=12"
+ "node": ">=6"
}
},
- "node_modules/esbuild-darwin-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.6.tgz",
- "integrity": "sha512-BsfVt3usScAfGlXJiGtGamwVEOTM8AiYiw1zqDWhGv6BncLXCnTg1As+90mxWewdTZKq3iIy8s9g8CKkrrAXVw==",
- "cpu": [
- "x64"
- ],
+ "node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
"engines": {
- "node": ">=12"
+ "node": ">=8"
}
},
- "node_modules/esbuild-darwin-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.6.tgz",
- "integrity": "sha512-CnrAeJaEpPakUobhqO4wVSA4Zm6TPaI5UY4EsI62j9mTrjIyQPXA1n4Ju6Iu5TVZRnEqV6q8blodgYJ6CJuwCA==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/eslint": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz",
+ "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==",
"dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.4.0",
+ "@eslint/eslintrc": "^2.1.0",
+ "@eslint/js": "8.44.0",
+ "@humanwhocodes/config-array": "^0.11.10",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.0",
+ "eslint-visitor-keys": "^3.4.1",
+ "espree": "^9.6.0",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "strip-json-comments": "^3.1.0",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
"engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/esbuild-freebsd-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.6.tgz",
- "integrity": "sha512-+qFdmqi+jkAsxsNJkaWVrnxEUUI50nu6c3MBVarv3RCDCbz7ZS1a4ZrdkwEYFnKcVWu6UUE0Kkb1SQ1yGEG6sg==",
- "cpu": [
- "x64"
- ],
+ "node_modules/eslint-scope": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
+ "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
"dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
"engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/esbuild-freebsd-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.6.tgz",
- "integrity": "sha512-KtQkQOhnNciXm2yrTYZMD3MOm2zBiiwFSU+dkwNbcfDumzzUprr1x70ClTdGuZwieBS1BM/k0KajRQX7r504Xw==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+ "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
"engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/esbuild-linux-32": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.6.tgz",
- "integrity": "sha512-IAkDNz3TpxwISTGVdQijwyHBZrbFgLlRi5YXcvaEHtgbmayLSDcJmH5nV1MFgo/x2QdKcHBkOYHdjhKxUAcPwg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
+ "node_modules/eslint/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
},
- "node_modules/esbuild-linux-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.6.tgz",
- "integrity": "sha512-gQPksyrEYfA4LJwyfTQWAZaVZCx4wpaLrSzo2+Xc9QLC+i/sMWmX31jBjrn4nLJCd79KvwCinto36QC7BEIU/A==",
- "cpu": [
- "x64"
- ],
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
"engines": {
- "node": ">=12"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/esbuild-linux-arm": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.6.tgz",
- "integrity": "sha512-xZ0Bq2aivsthDjA/ytQZzxrxIZbG0ATJYMJxNeOIBc1zUjpbVpzBKgllOZMsTSXMHFHGrow6TnCcgwqY0+oEoQ==",
- "cpu": [
- "arm"
- ],
+ "node_modules/eslint/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/esbuild-linux-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.6.tgz",
- "integrity": "sha512-aovDkclFa6C9EdZVBuOXxqZx83fuoq8097xZKhEPSygwuy4Lxs8J4anHG7kojAsR+31lfUuxzOo2tHxv7EiNHA==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=10.13.0"
}
},
- "node_modules/esbuild-linux-mips64le": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.6.tgz",
- "integrity": "sha512-wVpW8wkWOGizsCqCwOR/G3SHwhaecpGy3fic9BF1r7vq4djLjUcA8KunDaBCjJ6TgLQFhJ98RjDuyEf8AGjAvw==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-ppc64le": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.6.tgz",
- "integrity": "sha512-z6w6gsPH/Y77uchocluDC8tkCg9rfkcPTePzZKNr879bF4tu7j9t255wuNOCE396IYEGxY7y8u2HJ9i7kjCLVw==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-riscv64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.6.tgz",
- "integrity": "sha512-pfK/3MJcmbfU399TnXW5RTPS1S+ID6ra+CVj9TFZ2s0q9Ja1F5A1VirUUvViPkjiw+Kq3zveyn6U09Wg1zJXrw==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-s390x": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.6.tgz",
- "integrity": "sha512-OZeeDu32liefcwAE63FhVqM4heWTC8E3MglOC7SK0KYocDdY/6jyApw0UDkDHlcEK9mW6alX/SH9r3PDjcCo/Q==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-netbsd-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.6.tgz",
- "integrity": "sha512-kaxw61wcHMyiEsSsi5ut1YYs/hvTC2QkxJwyRvC2Cnsz3lfMLEu8zAjpBKWh9aU/N0O/gsRap4wTur5GRuSvBA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-openbsd-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.6.tgz",
- "integrity": "sha512-CuoY60alzYfIZapUHqFXqXbj88bbRJu8Fp9okCSHRX2zWIcGz4BXAHXiG7dlCye5nFVrY72psesLuWdusyf2qw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-sunos-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.6.tgz",
- "integrity": "sha512-1ceefLdPWcd1nW/ZLruPEYxeUEAVX0YHbG7w+BB4aYgfknaLGotI/ZvPWUZpzhC8l1EybrVlz++lm3E6ODIJOg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-32": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.6.tgz",
- "integrity": "sha512-pBqdOsKqCD5LRYiwF29PJRDJZi7/Wgkz46u3d17MRFmrLFcAZDke3nbdDa1c8YgY78RiemudfCeAemN8EBlIpA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.6.tgz",
- "integrity": "sha512-KpPOh4aTOo//g9Pk2oVAzXMpc9Sz9n5A9sZTmWqDSXCiiachfFhbuFlsKBGATYCVitXfmBIJ4nNYYWSOdz4hQg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.6.tgz",
- "integrity": "sha512-DB3G2x9OvFEa00jV+OkDBYpufq5x/K7a6VW6E2iM896DG4ZnAvJKQksOsCPiM1DUaa+DrijXAQ/ZOcKAqf/3Hg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz",
- "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==",
- "dev": true,
- "dependencies": {
- "@eslint/eslintrc": "^1.3.1",
- "@humanwhocodes/config-array": "^0.10.4",
- "@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
- "@humanwhocodes/module-importer": "^1.0.1",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.1",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.4.0",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^6.0.1",
- "globals": "^13.15.0",
- "globby": "^11.1.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "regexpp": "^3.2.0",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/eslint/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/eslint/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/eslint/node_modules/globals": {
- "version": "13.17.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
- "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -2688,14 +2378,14 @@
}
},
"node_modules/espree": {
- "version": "9.4.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz",
- "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==",
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz",
+ "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==",
"dev": true,
"dependencies": {
- "acorn": "^8.8.0",
+ "acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.3.0"
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2718,9 +2408,9 @@
}
},
"node_modules/esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
"dependencies": {
"estraverse": "^5.1.0"
@@ -2799,16 +2489,16 @@
}
},
"node_modules/expect": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.1.tgz",
- "integrity": "sha512-yQgemsjLU+1S8t2A7pXT3Sn/v5/37LY8J+tocWtKEA0iEYYc6gfKbbJJX2fxHZmd7K9WpdbQqXUpmYkq1aewYg==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
+ "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
"dev": true,
"dependencies": {
- "@jest/expect-utils": "^29.0.1",
- "jest-get-type": "^29.0.0",
- "jest-matcher-utils": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-util": "^29.0.1"
+ "@jest/expect-utils": "^29.5.0",
+ "jest-get-type": "^29.4.3",
+ "jest-matcher-utils": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-util": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -2858,9 +2548,9 @@
}
},
"node_modules/fb-watchman": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
- "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
"dev": true,
"dependencies": {
"bser": "2.1.1"
@@ -2932,6 +2622,7 @@
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "peer": true,
"engines": {
"node": ">=4.0"
},
@@ -2945,6 +2636,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "peer": true,
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@@ -2980,12 +2672,6 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -3092,20 +2778,12 @@
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
"dev": true
},
- "node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
- "node_modules/growly": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==",
- "dev": true,
- "optional": true,
- "peer": true
- },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -3142,21 +2820,6 @@
"node": ">=10.17.0"
}
},
- "node_modules/husky": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz",
- "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==",
- "dev": true,
- "bin": {
- "husky": "lib/bin.js"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/typicode"
- }
- },
"node_modules/ignore": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
@@ -3281,23 +2944,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true,
- "optional": true,
- "peer": true,
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -3353,6 +2999,15 @@
"node": ">=0.12.0"
}
},
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/is-reference": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
@@ -3375,20 +3030,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -3471,15 +3112,15 @@
}
},
"node_modules/jest": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.1.tgz",
- "integrity": "sha512-liHkwzaW6iwQyhRBFj0A4ZYKcsQ7ers1s62CCT95fPeNzoxT/vQRWwjTT4e7jpSCwrvPP2t1VESuy7GrXcr2ug==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
+ "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==",
"dev": true,
"dependencies": {
- "@jest/core": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/core": "^29.5.0",
+ "@jest/types": "^29.5.0",
"import-local": "^3.0.2",
- "jest-cli": "^29.0.1"
+ "jest-cli": "^29.5.0"
},
"bin": {
"jest": "bin/jest.js"
@@ -3497,9 +3138,9 @@
}
},
"node_modules/jest-changed-files": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.0.0.tgz",
- "integrity": "sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
+ "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
"dev": true,
"dependencies": {
"execa": "^5.0.0",
@@ -3510,28 +3151,29 @@
}
},
"node_modules/jest-circus": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.1.tgz",
- "integrity": "sha512-I5J4LyK3qPo8EnqPmxsMAVR+2SFx7JOaZsbqW9xQmk4UDmTCD92EQgS162Ey3Jq6CfpKJKFDhzhG3QqiE0fRbw==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
+ "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.0.1",
- "@jest/expect": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/environment": "^29.5.0",
+ "@jest/expect": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"dedent": "^0.7.0",
"is-generator-fn": "^2.0.0",
- "jest-each": "^29.0.1",
- "jest-matcher-utils": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-runtime": "^29.0.1",
- "jest-snapshot": "^29.0.1",
- "jest-util": "^29.0.1",
+ "jest-each": "^29.5.0",
+ "jest-matcher-utils": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-runtime": "^29.5.0",
+ "jest-snapshot": "^29.5.0",
+ "jest-util": "^29.5.0",
"p-limit": "^3.1.0",
- "pretty-format": "^29.0.1",
+ "pretty-format": "^29.5.0",
+ "pure-rand": "^6.0.0",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
},
@@ -3540,21 +3182,21 @@
}
},
"node_modules/jest-cli": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.1.tgz",
- "integrity": "sha512-XozBHtoJCS6mnjCxNESyGm47Y4xSWzNlBJj4tix9nGrG6m068B83lrTWKtjYAenYSfOqyYVpQCkyqUp35IT+qA==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
+ "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
"dev": true,
"dependencies": {
- "@jest/core": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/core": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/types": "^29.5.0",
"chalk": "^4.0.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
"import-local": "^3.0.2",
- "jest-config": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-validate": "^29.0.1",
+ "jest-config": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-validate": "^29.5.0",
"prompts": "^2.0.1",
"yargs": "^17.3.1"
},
@@ -3574,31 +3216,31 @@
}
},
"node_modules/jest-config": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.1.tgz",
- "integrity": "sha512-3duIx5ucEPIsUOESDTuasMfqHonD0oZRjqHycIMHSC4JwbvHDjAWNKN/NiM0ZxHXjAYrMTLt2QxSQ+IqlbYE5A==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
+ "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.0.1",
- "@jest/types": "^29.0.1",
- "babel-jest": "^29.0.1",
+ "@jest/test-sequencer": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "babel-jest": "^29.5.0",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"deepmerge": "^4.2.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-circus": "^29.0.1",
- "jest-environment-node": "^29.0.1",
- "jest-get-type": "^29.0.0",
- "jest-regex-util": "^29.0.0",
- "jest-resolve": "^29.0.1",
- "jest-runner": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-validate": "^29.0.1",
+ "jest-circus": "^29.5.0",
+ "jest-environment-node": "^29.5.0",
+ "jest-get-type": "^29.4.3",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.5.0",
+ "jest-runner": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-validate": "^29.5.0",
"micromatch": "^4.0.4",
"parse-json": "^5.2.0",
- "pretty-format": "^29.0.1",
+ "pretty-format": "^29.5.0",
"slash": "^3.0.0",
"strip-json-comments": "^3.1.1"
},
@@ -3619,24 +3261,24 @@
}
},
"node_modules/jest-diff": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.1.tgz",
- "integrity": "sha512-l8PYeq2VhcdxG9tl5cU78ClAlg/N7RtVSp0v3MlXURR0Y99i6eFnegmasOandyTmO6uEdo20+FByAjBFEO9nuw==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
+ "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "diff-sequences": "^29.0.0",
- "jest-get-type": "^29.0.0",
- "pretty-format": "^29.0.1"
+ "diff-sequences": "^29.4.3",
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-docblock": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.0.0.tgz",
- "integrity": "sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
+ "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
"dev": true,
"dependencies": {
"detect-newline": "^3.0.0"
@@ -3646,62 +3288,62 @@
}
},
"node_modules/jest-each": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.1.tgz",
- "integrity": "sha512-UmCZYU9LPvRfSDoCrKJqrCNmgTYGGb3Ga6IVsnnVjedBTRRR9GJMca7UmDKRrJ1s+U632xrVtiRD27BxaG1aaQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
+ "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.0.1",
+ "@jest/types": "^29.5.0",
"chalk": "^4.0.0",
- "jest-get-type": "^29.0.0",
- "jest-util": "^29.0.1",
- "pretty-format": "^29.0.1"
+ "jest-get-type": "^29.4.3",
+ "jest-util": "^29.5.0",
+ "pretty-format": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-environment-node": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.1.tgz",
- "integrity": "sha512-PcIRBrEBFAPBqkbL53ZpEvTptcAnOW6/lDfqBfACMm3vkVT0N7DcfkH/hqNSbDmSxzGr0FtJI6Ej3TPhveWCMA==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
+ "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.0.1",
- "@jest/fake-timers": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/environment": "^29.5.0",
+ "@jest/fake-timers": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
- "jest-mock": "^29.0.1",
- "jest-util": "^29.0.1"
+ "jest-mock": "^29.5.0",
+ "jest-util": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-get-type": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz",
- "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
+ "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-haste-map": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.1.tgz",
- "integrity": "sha512-gcKOAydafpGoSBvcj/mGCfhOKO8fRLkAeee1KXGdcJ1Pb9O2nnOl4I8bQSIID2MaZeMHtLLgNboukh/pUGkBtg==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
+ "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.0.1",
+ "@jest/types": "^29.5.0",
"@types/graceful-fs": "^4.1.3",
"@types/node": "*",
"anymatch": "^3.0.3",
"fb-watchman": "^2.0.0",
"graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.0.0",
- "jest-util": "^29.0.1",
- "jest-worker": "^29.0.1",
+ "jest-regex-util": "^29.4.3",
+ "jest-util": "^29.5.0",
+ "jest-worker": "^29.5.0",
"micromatch": "^4.0.4",
"walker": "^1.0.8"
},
@@ -3713,46 +3355,46 @@
}
},
"node_modules/jest-leak-detector": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.1.tgz",
- "integrity": "sha512-5tISHJphB+sCmKXtVHJGQGltj7ksrLLb9vkuNWwFR86Of1tfzjskvrrrZU1gSzEfWC+qXIn4tuh8noKHYGMIPA==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
+ "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
"dev": true,
"dependencies": {
- "jest-get-type": "^29.0.0",
- "pretty-format": "^29.0.1"
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-matcher-utils": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.1.tgz",
- "integrity": "sha512-/e6UbCDmprRQFnl7+uBKqn4G22c/OmwriE5KCMVqxhElKCQUDcFnq5XM9iJeKtzy4DUjxT27y9VHmKPD8BQPaw==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
+ "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "jest-diff": "^29.0.1",
- "jest-get-type": "^29.0.0",
- "pretty-format": "^29.0.1"
+ "jest-diff": "^29.5.0",
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-message-util": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.1.tgz",
- "integrity": "sha512-wRMAQt3HrLpxSubdnzOo68QoTfQ+NLXFzU0Heb18ZUzO2S9GgaXNEdQ4rpd0fI9dq2NXkpCk1IUWSqzYKji64A==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
+ "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.0.1",
+ "@jest/types": "^29.5.0",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"micromatch": "^4.0.4",
- "pretty-format": "^29.0.1",
+ "pretty-format": "^29.5.0",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
},
@@ -3761,22 +3403,23 @@
}
},
"node_modules/jest-mock": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.1.tgz",
- "integrity": "sha512-i1yTceg2GKJwUNZFjIzrH7Y74fN1SKJWxQX/Vu3LT4TiJerFARH5l+4URNyapZ+DNpchHYrGOP2deVbn3ma8JA==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
+ "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.0.1",
- "@types/node": "*"
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "jest-util": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-pnp-resolver": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
- "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
"dev": true,
"engines": {
"node": ">=6"
@@ -3791,28 +3434,28 @@
}
},
"node_modules/jest-regex-util": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.0.0.tgz",
- "integrity": "sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==",
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
+ "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.1.tgz",
- "integrity": "sha512-dwb5Z0lLZbptlBtPExqsHfdDamXeiRLv4vdkfPrN84vBwLSWHWcXjlM2JXD/KLSQfljBcXbzI/PDvUJuTQ84Nw==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
+ "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.0.1",
+ "jest-haste-map": "^29.5.0",
"jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.0.1",
- "jest-validate": "^29.0.1",
+ "jest-util": "^29.5.0",
+ "jest-validate": "^29.5.0",
"resolve": "^1.20.0",
- "resolve.exports": "^1.1.0",
+ "resolve.exports": "^2.0.0",
"slash": "^3.0.0"
},
"engines": {
@@ -3820,43 +3463,43 @@
}
},
"node_modules/jest-resolve-dependencies": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.1.tgz",
- "integrity": "sha512-fUGcYlSc1NzNz+tsHDjjG0rclw6blJcFZsLEsezxm/n54bAm9HFvJxgBuCV1CJQoPtIx6AfR+tXkR9lpWJs2LQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
+ "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
"dev": true,
"dependencies": {
- "jest-regex-util": "^29.0.0",
- "jest-snapshot": "^29.0.1"
+ "jest-regex-util": "^29.4.3",
+ "jest-snapshot": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-runner": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.1.tgz",
- "integrity": "sha512-XeFfPmHtO7HyZyD1uJeO4Oqa8PyTbDHzS1YdGrvsFXk/A5eXinbqA5a42VUEqvsKQgNnKTl5NJD0UtDWg7cQ2A==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
+ "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.0.1",
- "@jest/environment": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/console": "^29.5.0",
+ "@jest/environment": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
"chalk": "^4.0.0",
- "emittery": "^0.10.2",
+ "emittery": "^0.13.1",
"graceful-fs": "^4.2.9",
- "jest-docblock": "^29.0.0",
- "jest-environment-node": "^29.0.1",
- "jest-haste-map": "^29.0.1",
- "jest-leak-detector": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-resolve": "^29.0.1",
- "jest-runtime": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-watcher": "^29.0.1",
- "jest-worker": "^29.0.1",
+ "jest-docblock": "^29.4.3",
+ "jest-environment-node": "^29.5.0",
+ "jest-haste-map": "^29.5.0",
+ "jest-leak-detector": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-resolve": "^29.5.0",
+ "jest-runtime": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-watcher": "^29.5.0",
+ "jest-worker": "^29.5.0",
"p-limit": "^3.1.0",
"source-map-support": "0.5.13"
},
@@ -3865,31 +3508,31 @@
}
},
"node_modules/jest-runtime": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.1.tgz",
- "integrity": "sha512-yDgz5OE0Rm44PUAfTqwA6cDFnTYnVcYbRpPECsokSASQ0I5RXpnKPVr2g0CYZWKzbsXqqtmM7TIk7CAutZJ7gQ==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^29.0.1",
- "@jest/fake-timers": "^29.0.1",
- "@jest/globals": "^29.0.1",
- "@jest/source-map": "^29.0.0",
- "@jest/test-result": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
+ "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.5.0",
+ "@jest/fake-timers": "^29.5.0",
+ "@jest/globals": "^29.5.0",
+ "@jest/source-map": "^29.4.3",
+ "@jest/test-result": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
"collect-v8-coverage": "^1.0.0",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-mock": "^29.0.1",
- "jest-regex-util": "^29.0.0",
- "jest-resolve": "^29.0.1",
- "jest-snapshot": "^29.0.1",
- "jest-util": "^29.0.1",
+ "jest-haste-map": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-mock": "^29.5.0",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.5.0",
+ "jest-snapshot": "^29.5.0",
+ "jest-util": "^29.5.0",
"slash": "^3.0.0",
"strip-bom": "^4.0.0"
},
@@ -3898,9 +3541,9 @@
}
},
"node_modules/jest-snapshot": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.1.tgz",
- "integrity": "sha512-OuYGp+lsh7RhB3DDX36z/pzrGm2F740e5ERG9PQpJyDknCRtWdhaehBQyMqDnsQdKkvC2zOcetcxskiHjO7e8Q==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
+ "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
@@ -3909,23 +3552,22 @@
"@babel/plugin-syntax-typescript": "^7.7.2",
"@babel/traverse": "^7.7.2",
"@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/expect-utils": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/babel__traverse": "^7.0.6",
"@types/prettier": "^2.1.5",
"babel-preset-current-node-syntax": "^1.0.0",
"chalk": "^4.0.0",
- "expect": "^29.0.1",
+ "expect": "^29.5.0",
"graceful-fs": "^4.2.9",
- "jest-diff": "^29.0.1",
- "jest-get-type": "^29.0.0",
- "jest-haste-map": "^29.0.1",
- "jest-matcher-utils": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-util": "^29.0.1",
+ "jest-diff": "^29.5.0",
+ "jest-get-type": "^29.4.3",
+ "jest-matcher-utils": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-util": "^29.5.0",
"natural-compare": "^1.4.0",
- "pretty-format": "^29.0.1",
+ "pretty-format": "^29.5.0",
"semver": "^7.3.5"
},
"engines": {
@@ -3933,12 +3575,12 @@
}
},
"node_modules/jest-util": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.1.tgz",
- "integrity": "sha512-GIWkgNfkeA9d84rORDHPGGTFBrRD13A38QVSKE0bVrGSnoR1KDn8Kqz+0yI5kezMgbT/7zrWaruWP1Kbghlb2A==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
+ "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.0.1",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
@@ -3950,17 +3592,17 @@
}
},
"node_modules/jest-validate": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.1.tgz",
- "integrity": "sha512-mS4q7F738YXZFWBPqE+NjHU/gEOs7IBIFQ8i9zq5EO691cLrUbLhFq4larf8/lNcmauRO71tn/+DTW2y+MrLow==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
+ "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.0.1",
+ "@jest/types": "^29.5.0",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
- "jest-get-type": "^29.0.0",
+ "jest-get-type": "^29.4.3",
"leven": "^3.1.0",
- "pretty-format": "^29.0.1"
+ "pretty-format": "^29.5.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -3979,18 +3621,18 @@
}
},
"node_modules/jest-watcher": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.1.tgz",
- "integrity": "sha512-0LBWDL3sZ+vyHRYxjqm2irhfwhUXHonjLSbd0oDeGq44U1e1uUh3icWNXYF8HO/UEnOoa6+OJDncLUXP2Hdg9A==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
+ "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^29.0.1",
- "@jest/types": "^29.0.1",
+ "@jest/test-result": "^29.5.0",
+ "@jest/types": "^29.5.0",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
- "emittery": "^0.10.2",
- "jest-util": "^29.0.1",
+ "emittery": "^0.13.1",
+ "jest-util": "^29.5.0",
"string-length": "^4.0.1"
},
"engines": {
@@ -3998,12 +3640,13 @@
}
},
"node_modules/jest-worker": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.1.tgz",
- "integrity": "sha512-+B/2/8WW7goit7qVezG9vnI1QP3dlmuzi2W0zxazAQQ8dcDIA63dDn6j4pjOGBARha/ZevcwYQtNIzCySbS7fQ==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
+ "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
"dev": true,
"dependencies": {
"@types/node": "*",
+ "jest-util": "^29.5.0",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
@@ -4036,9 +3679,9 @@
}
},
"node_modules/js-magic": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/js-magic/-/js-magic-1.2.3.tgz",
- "integrity": "sha512-UuLRJB1ZFrKLYJHed+pB1P6FOYu0Hc7p2M76NEGjGY8cfYdFE+bIiEljupn6EFT1qS/fx8psQ7R31E3+WHC0sA==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/js-magic/-/js-magic-1.2.4.tgz",
+ "integrity": "sha512-Jlt79uUBryLEyJnrKzBiIxISOfjkZzA5Nd+A3gg765QjPMHonF0z2C8tzo912jndgXovS+w/HLAWsAJuho1aCA==",
"engines": {
"node": ">=6"
}
@@ -4093,9 +3736,9 @@
"dev": true
},
"node_modules/json5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
- "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
"bin": {
"json5": "lib/cli.js"
@@ -4136,9 +3779,9 @@
}
},
"node_modules/lilconfig": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
- "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
"dev": true,
"engines": {
"node": ">=10"
@@ -4151,9 +3794,9 @@
"dev": true
},
"node_modules/load-tsconfig": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.3.tgz",
- "integrity": "sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==",
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz",
+ "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==",
"dev": true,
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -4282,6 +3925,7 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "peer": true,
"engines": {
"node": ">= 0.6"
}
@@ -4290,6 +3934,7 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "peer": true,
"dependencies": {
"mime-db": "1.52.0"
},
@@ -4318,18 +3963,6 @@
"node": "*"
}
},
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -4348,10 +3981,16 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -4380,22 +4019,6 @@
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
"dev": true
},
- "node_modules/node-notifier": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-10.0.1.tgz",
- "integrity": "sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "growly": "^1.3.0",
- "is-wsl": "^2.2.0",
- "semver": "^7.3.5",
- "shellwords": "^0.1.1",
- "uuid": "^8.3.2",
- "which": "^2.0.2"
- }
- },
"node_modules/node-releases": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
@@ -4457,17 +4080,17 @@
}
},
"node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"dev": true,
"dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "type-check": "^0.4.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -4636,16 +4259,16 @@
}
},
"node_modules/postcss-load-config": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
- "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz",
+ "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==",
"dev": true,
"dependencies": {
"lilconfig": "^2.0.5",
- "yaml": "^1.10.2"
+ "yaml": "^2.1.1"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 14"
},
"funding": {
"type": "opencollective",
@@ -4674,12 +4297,12 @@
}
},
"node_modules/pretty-format": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.1.tgz",
- "integrity": "sha512-iTHy3QZMzuL484mSTYbQIM1AHhEQsH8mXWS2/vd2yFBYnG3EBqGiMONo28PlPgrW7P/8s/1ISv+y7WH306l8cw==",
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
"dev": true,
"dependencies": {
- "@jest/schemas": "^29.0.0",
+ "@jest/schemas": "^29.4.3",
"ansi-styles": "^5.0.0",
"react-is": "^18.0.0"
},
@@ -4721,6 +4344,12 @@
"node": ">= 6"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "peer": true
+ },
"node_modules/punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
@@ -4730,6 +4359,22 @@
"node": ">=6"
}
},
+ "node_modules/pure-rand": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
+ "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ]
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -4768,18 +4413,6 @@
"node": ">=8.10.0"
}
},
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -4828,9 +4461,9 @@
}
},
"node_modules/resolve.exports": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
- "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
"dev": true,
"engines": {
"node": ">=10"
@@ -4866,6 +4499,7 @@
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
"integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
"dev": true,
+ "peer": true,
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -4935,9 +4569,9 @@
"dev": true
},
"node_modules/semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "version": "7.5.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+ "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -4970,14 +4604,6 @@
"node": ">=8"
}
},
- "node_modules/shellwords": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
- "dev": true,
- "optional": true,
- "peer": true
- },
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
@@ -4991,17 +4617,15 @@
"dev": true
},
"node_modules/size-limit": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/size-limit/-/size-limit-8.0.1.tgz",
- "integrity": "sha512-VHrozqkQTYfcv1OlZIRIL0x6f+xhZ3TT+RTXC5AvKn/yA+3PIWERrKWqHMJPD7G/Vi0SuBtWAn3IvCGx2/UB1g==",
+ "version": "8.2.6",
+ "resolved": "https://registry.npmjs.org/size-limit/-/size-limit-8.2.6.tgz",
+ "integrity": "sha512-zpznim/tX/NegjoQuRKgWTF4XiB0cn2qt90uJzxYNTFAqexk4b94DOAkBD3TwhC6c3kw2r0KcnA5upziVMZqDg==",
"dev": true,
"dependencies": {
"bytes-iec": "^3.1.1",
"chokidar": "^3.5.3",
- "ci-job-number": "^1.2.2",
"globby": "^11.1.0",
- "lilconfig": "^2.0.6",
- "mkdirp": "^1.0.4",
+ "lilconfig": "^2.1.0",
"nanospinner": "^1.1.0",
"picocolors": "^1.0.0"
},
@@ -5092,12 +4716,6 @@
"node": ">=8"
}
},
- "node_modules/string-width/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -5202,19 +4820,6 @@
"node": ">=8"
}
},
- "node_modules/supports-hyperlinks": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
- "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@@ -5227,22 +4832,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/test-exclude": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
@@ -5336,32 +4925,32 @@
"dev": true
},
"node_modules/ts-jest": {
- "version": "29.0.0-next.0",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.0-next.0.tgz",
- "integrity": "sha512-eZS6d2uH4Piwp2k7SwyLpKhBpwL1idvba/5LnkkBd8YcPA5Q0h/OgpBwt7702gOYF8WRGNxhVj6OZ988zoGWtg==",
+ "version": "29.1.1",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
+ "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
"dev": true,
"dependencies": {
"bs-logger": "0.x",
"fast-json-stable-stringify": "2.x",
"jest-util": "^29.0.0",
- "json5": "^2.2.1",
+ "json5": "^2.2.3",
"lodash.memoize": "4.x",
"make-error": "1.x",
- "semver": "7.x",
+ "semver": "^7.5.3",
"yargs-parser": "^21.0.1"
},
"bin": {
"ts-jest": "cli.js"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
"peerDependencies": {
"@babel/core": ">=7.0.0-beta.0 <8",
"@jest/types": "^29.0.0",
"babel-jest": "^29.0.0",
"jest": "^29.0.0",
- "typescript": ">=4.3"
+ "typescript": ">=4.3 <6"
},
"peerDependenciesMeta": {
"@babel/core": {
@@ -5379,28 +4968,28 @@
}
},
"node_modules/tslib": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
- "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz",
+ "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==",
"dev": true
},
"node_modules/tsup": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/tsup/-/tsup-6.2.3.tgz",
- "integrity": "sha512-J5Pu2Dx0E1wlpIEsVFv9ryzP1pZ1OYsJ2cBHZ7GrKteytNdzaSz5hmLX7/nAxtypq+jVkVvA79d7S83ETgHQ5w==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/tsup/-/tsup-7.1.0.tgz",
+ "integrity": "sha512-mazl/GRAk70j8S43/AbSYXGgvRP54oQeX8Un4iZxzATHt0roW0t6HYDVZIXMw0ZQIpvr1nFMniIVnN5186lW7w==",
"dev": true,
"dependencies": {
- "bundle-require": "^3.1.0",
+ "bundle-require": "^4.0.0",
"cac": "^6.7.12",
"chokidar": "^3.5.1",
"debug": "^4.3.1",
- "esbuild": "^0.15.1",
+ "esbuild": "^0.18.2",
"execa": "^5.0.0",
"globby": "^11.0.3",
"joycon": "^3.0.1",
- "postcss-load-config": "^3.0.1",
+ "postcss-load-config": "^4.0.1",
"resolve-from": "^5.0.0",
- "rollup": "^2.74.1",
+ "rollup": "^3.2.5",
"source-map": "0.8.0-beta.0",
"sucrase": "^3.20.3",
"tree-kill": "^1.2.2"
@@ -5410,12 +4999,12 @@
"tsup-node": "dist/cli-node.js"
},
"engines": {
- "node": ">=14"
+ "node": ">=16.14"
},
"peerDependencies": {
"@swc/core": "^1",
"postcss": "^8.4.12",
- "typescript": "^4.1.0"
+ "typescript": ">=4.1.0"
},
"peerDependenciesMeta": {
"@swc/core": {
@@ -5429,6 +5018,22 @@
}
}
},
+ "node_modules/tsup/node_modules/rollup": {
+ "version": "3.26.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.0.tgz",
+ "integrity": "sha512-YzJH0eunH2hr3knvF3i6IkLO/jTjAEwU4HoMUbQl4//Tnl3ou0e7P5SjxdDr8HQJdeUJShlbEHXrrnEHy1l7Yg==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/tsup/node_modules/source-map": {
"version": "0.8.0-beta.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
@@ -5475,16 +5080,16 @@
}
},
"node_modules/typescript": {
- "version": "4.8.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz",
- "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
+ "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
"node_modules/update-browserslist-db": {
@@ -5522,21 +5127,10 @@
"punycode": "^2.1.0"
}
},
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "optional": true,
- "peer": true,
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
"node_modules/v8-to-istanbul": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
- "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+ "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
"dev": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.12",
@@ -5588,13 +5182,21 @@
"node": ">= 8"
}
},
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrappy": {
@@ -5632,27 +5234,27 @@
"dev": true
},
"node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz",
+ "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==",
"dev": true,
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/yargs": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
- "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"dependencies": {
- "cliui": "^7.0.2",
+ "cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.3",
"y18n": "^5.0.5",
- "yargs-parser": "^21.0.0"
+ "yargs-parser": "^21.1.1"
},
"engines": {
"node": ">=12"
@@ -5679,4103 +5281,5 @@
"url": "https://github.com/sponsors/sindresorhus"
}
}
- },
- "dependencies": {
- "@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.18.6"
- }
- },
- "@babel/compat-data": {
- "version": "7.18.13",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz",
- "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.18.13",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.13.tgz",
- "integrity": "sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==",
- "dev": true,
- "requires": {
- "@ampproject/remapping": "^2.1.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.18.13",
- "@babel/helper-compilation-targets": "^7.18.9",
- "@babel/helper-module-transforms": "^7.18.9",
- "@babel/helpers": "^7.18.9",
- "@babel/parser": "^7.18.13",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.18.13",
- "@babel/types": "^7.18.13",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.1",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "@babel/generator": {
- "version": "7.18.13",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz",
- "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.13",
- "@jridgewell/gen-mapping": "^0.3.2",
- "jsesc": "^2.5.1"
- },
- "dependencies": {
- "@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- }
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz",
- "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.18.8",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.20.2",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "dev": true
- },
- "@babel/helper-function-name": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz",
- "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.18.6",
- "@babel/types": "^7.18.9"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz",
- "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.18.6",
- "@babel/template": "^7.18.6",
- "@babel/traverse": "^7.18.9",
- "@babel/types": "^7.18.9"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz",
- "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==",
- "dev": true
- },
- "@babel/helper-simple-access": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
- "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz",
- "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
- "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true
- },
- "@babel/helpers": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz",
- "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.18.6",
- "@babel/traverse": "^7.18.9",
- "@babel/types": "^7.18.9"
- }
- },
- "@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@babel/parser": {
- "version": "7.18.13",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz",
- "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==",
- "dev": true
- },
- "@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-jsx": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
- "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-typescript": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz",
- "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/template": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
- "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.18.10",
- "@babel/types": "^7.18.10"
- }
- },
- "@babel/traverse": {
- "version": "7.18.13",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz",
- "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.18.13",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.18.9",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.18.13",
- "@babel/types": "^7.18.13",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- }
- },
- "@babel/types": {
- "version": "7.18.13",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz",
- "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.18.10",
- "@babel/helper-validator-identifier": "^7.18.6",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
- },
- "@esbuild/linux-loong64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.6.tgz",
- "integrity": "sha512-hqmVU2mUjH6J2ZivHphJ/Pdse2ZD+uGCHK0uvsiLDk/JnSedEVj77CiVUnbMKuU4tih1TZZL8tG9DExQg/GZsw==",
- "dev": true,
- "optional": true
- },
- "@eslint/eslintrc": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz",
- "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.4.0",
- "globals": "^13.15.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "dependencies": {
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "globals": {
- "version": "13.17.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
- "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- }
- }
- },
- "@humanwhocodes/config-array": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz",
- "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- }
- },
- "@humanwhocodes/gitignore-to-minimatch": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz",
- "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==",
- "dev": true
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- }
- },
- "@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
- "dev": true
- },
- "@jest/console": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.0.1.tgz",
- "integrity": "sha512-SxLvSKf9gk4Rvt3p2KRQWVQ3sVj7S37rjlCHwp2+xNcRO/X+Uw0idbkfOtciUpjghHIxyggqcrrKhThQ+vClLQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.0.1",
- "jest-util": "^29.0.1",
- "slash": "^3.0.0"
- }
- },
- "@jest/core": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.0.1.tgz",
- "integrity": "sha512-EcFrXkYh8I1GYHRH9V4TU7jr4P6ckaPqGo/z4AIJjHDZxicjYgWB6fx1xFb5bhEM87eUjCF4FAY5t+RamLWQmA==",
- "dev": true,
- "requires": {
- "@jest/console": "^29.0.1",
- "@jest/reporters": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.0.0",
- "jest-config": "^29.0.1",
- "jest-haste-map": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-regex-util": "^29.0.0",
- "jest-resolve": "^29.0.1",
- "jest-resolve-dependencies": "^29.0.1",
- "jest-runner": "^29.0.1",
- "jest-runtime": "^29.0.1",
- "jest-snapshot": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-validate": "^29.0.1",
- "jest-watcher": "^29.0.1",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.0.1",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "@jest/environment": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.0.1.tgz",
- "integrity": "sha512-iLcFfoq2K6DAB+Mc+2VNLzZVmHdwQFeSqvoM/X8SMON6s/+yEi1iuRX3snx/JfwSnvmiMXjSr0lktxNxOcqXYA==",
- "dev": true,
- "requires": {
- "@jest/fake-timers": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "jest-mock": "^29.0.1"
- }
- },
- "@jest/expect": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.0.1.tgz",
- "integrity": "sha512-qKB3q52XDV8VUEiqKKLgLrJx7puQ8sYVqIDlul6n7SIXWS97DOK3KqbR2rDDaMtmenRHqEUl2fI+aFzx0oSemA==",
- "dev": true,
- "requires": {
- "expect": "^29.0.1",
- "jest-snapshot": "^29.0.1"
- }
- },
- "@jest/expect-utils": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.1.tgz",
- "integrity": "sha512-Tw5kUUOKmXGQDmQ9TSgTraFFS7HMC1HG/B7y0AN2G2UzjdAXz9BzK2rmNpCSDl7g7y0Gf/VLBm//blonvhtOTQ==",
- "dev": true,
- "requires": {
- "jest-get-type": "^29.0.0"
- }
- },
- "@jest/fake-timers": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.0.1.tgz",
- "integrity": "sha512-XZ+kAhLChVQ+KJNa5034p7O1Mz3vtWrelxDcMoxhZkgqmWDaEQAW9qJeutaeCfPvwaEwKYVyKDYfWpcyT8RiMw==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.0.1",
- "@sinonjs/fake-timers": "^9.1.2",
- "@types/node": "*",
- "jest-message-util": "^29.0.1",
- "jest-mock": "^29.0.1",
- "jest-util": "^29.0.1"
- }
- },
- "@jest/globals": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.0.1.tgz",
- "integrity": "sha512-BtZWrVrKRKNUt7T1H2S8Mz31PN7ItROCmH+V5pn10hJDUfjOCTIUwb0WtLZzm0f1tJ3Uvx+5lVZrF/VTKqNaFg==",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.0.1",
- "@jest/expect": "^29.0.1",
- "@jest/types": "^29.0.1",
- "jest-mock": "^29.0.1"
- }
- },
- "@jest/reporters": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.1.tgz",
- "integrity": "sha512-dM3L8JmYYOsdeXUUVZClQy67Tz/v1sMo9h4AQv2U+716VLHV0zdA6Hh4FQNAHMhYw/95dbZbPX8Q+TRR7Rw+wA==",
- "dev": true,
- "requires": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@jridgewell/trace-mapping": "^0.3.15",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^5.1.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-worker": "^29.0.1",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "terminal-link": "^2.0.0",
- "v8-to-istanbul": "^9.0.1"
- }
- },
- "@jest/schemas": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz",
- "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==",
- "dev": true,
- "requires": {
- "@sinclair/typebox": "^0.24.1"
- }
- },
- "@jest/source-map": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.0.0.tgz",
- "integrity": "sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "^0.3.15",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
- }
- },
- "@jest/test-result": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.1.tgz",
- "integrity": "sha512-XCA4whh/igxjBaR/Hg8qwFd/uTsauoD7QAdAYUjV2CSGx0+iunhjoCRRWTwqjQrETRqOJABx6kNfw0+C0vMSgQ==",
- "dev": true,
- "requires": {
- "@jest/console": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- }
- },
- "@jest/test-sequencer": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.1.tgz",
- "integrity": "sha512-3GhSBMCRcWXGluP2Dw7CLP6mNke/t+EcftF5YjzhX1BJmqcatMbtZVwjuCfZy0TCME1GevXy3qTyV5PLpwIFKQ==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^29.0.1",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.0.1",
- "slash": "^3.0.0"
- }
- },
- "@jest/transform": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.0.1.tgz",
- "integrity": "sha512-6UxXtqrPScFdDhoip8ys60dQAIYppQinyR87n9nlasR/ZnFfJohKToqzM29KK4gb9gHRv5oDFChdqZKE0SIhsg==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@jest/types": "^29.0.1",
- "@jridgewell/trace-mapping": "^0.3.15",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.1.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.0.1",
- "jest-regex-util": "^29.0.0",
- "jest-util": "^29.0.1",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
- "slash": "^3.0.0",
- "write-file-atomic": "^4.0.1"
- }
- },
- "@jest/types": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.0.1.tgz",
- "integrity": "sha512-ft01rxzVsbh9qZPJ6EFgAIj3PT9FCRfBF9Xljo2/33VDOUjLZr0ZJ2oKANqh9S/K0/GERCsHDAQlBwj7RxA+9g==",
- "dev": true,
- "requires": {
- "@jest/schemas": "^29.0.0",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- }
- },
- "@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
- "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@rollup/plugin-commonjs": {
- "version": "21.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz",
- "integrity": "sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==",
- "dev": true,
- "peer": true,
- "requires": {
- "@rollup/pluginutils": "^3.1.0",
- "commondir": "^1.0.1",
- "estree-walker": "^2.0.1",
- "glob": "^7.1.6",
- "is-reference": "^1.2.1",
- "magic-string": "^0.25.7",
- "resolve": "^1.17.0"
- }
- },
- "@rollup/plugin-node-resolve": {
- "version": "13.3.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz",
- "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==",
- "dev": true,
- "peer": true,
- "requires": {
- "@rollup/pluginutils": "^3.1.0",
- "@types/resolve": "1.17.1",
- "deepmerge": "^4.2.2",
- "is-builtin-module": "^3.1.0",
- "is-module": "^1.0.0",
- "resolve": "^1.19.0"
- }
- },
- "@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
- },
- "dependencies": {
- "estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
- "dev": true,
- "peer": true
- }
- }
- },
- "@sinclair/typebox": {
- "version": "0.24.31",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.31.tgz",
- "integrity": "sha512-uWZaAsh9WFhcY1rWLLcMU/omiIIAQ/PmgqplaF6UWY6ULPH0ZO8hupJRAydzlTQZJIK3Voz8o8dYlEx+Cm6BAA==",
- "dev": true
- },
- "@sinonjs/commons": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
- "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==",
- "dev": true,
- "requires": {
- "type-detect": "4.0.8"
- }
- },
- "@sinonjs/fake-timers": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
- "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "@size-limit/esbuild": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@size-limit/esbuild/-/esbuild-8.0.1.tgz",
- "integrity": "sha512-EnfRweoQc4P91G45sPfzAWMVPibK5SEV6sUWC46DcGlT9xrYeCQYtInbsny1/lSorC/sfJKN84aGm4A+q6SgOw==",
- "dev": true,
- "requires": {
- "esbuild": "^0.15.1",
- "nanoid": "^3.3.4"
- }
- },
- "@size-limit/file": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@size-limit/file/-/file-8.0.1.tgz",
- "integrity": "sha512-kwgc5UJQIz5qbRow3atSiW2K7vEIIw4DelT4WLn09cOwcJgWs82Imgz2UqVivHJmCisn/ltPjT4qmxaDfjFflw==",
- "dev": true,
- "requires": {
- "semver": "7.3.7"
- }
- },
- "@size-limit/preset-small-lib": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@size-limit/preset-small-lib/-/preset-small-lib-8.0.1.tgz",
- "integrity": "sha512-EV+UXGZJU9kiT8R4N9dxjRAJ37tzjuP+e2DfpRtv7cx1ErFiB6k//wEhw9nLmJMWWhfvcVEvJYyKm3+i0pbWUQ==",
- "dev": true,
- "requires": {
- "@size-limit/esbuild": "8.0.1",
- "@size-limit/file": "8.0.1"
- }
- },
- "@types/babel__core": {
- "version": "7.1.19",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz",
- "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "@types/babel__generator": {
- "version": "7.6.4",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
- "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
- "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.18.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz",
- "integrity": "sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.3.0"
- }
- },
- "@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
- "dev": true,
- "peer": true
- },
- "@types/graceful-fs": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
- "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
- "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
- "dev": true
- },
- "@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/jest": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.0.0.tgz",
- "integrity": "sha512-X6Zjz3WO4cT39Gkl0lZ2baFRaEMqJl5NC1OjElkwtNzAlbkr2K/WJXkBkH5VP0zx4Hgsd2TZYdOEfvp2Dxia+Q==",
- "dev": true,
- "requires": {
- "expect": "^29.0.0",
- "pretty-format": "^29.0.0"
- }
- },
- "@types/node": {
- "version": "18.7.14",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz",
- "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==",
- "dev": true
- },
- "@types/prettier": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz",
- "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==",
- "dev": true
- },
- "@types/resolve": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
- "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/stack-utils": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
- "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
- "dev": true
- },
- "@types/yargs": {
- "version": "17.0.12",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.12.tgz",
- "integrity": "sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "21.0.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
- "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
- "dev": true
- },
- "acorn": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
- "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
- "dev": true
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "axios": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
- "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
- "requires": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
- }
- },
- "babel-jest": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.1.tgz",
- "integrity": "sha512-wyI9r8tqwsZEMWiIaYjdUJ6ztZIO4DMWpGq7laW34wR71WtRS+D/iBEtXOP5W2aSYCVUQMsypRl/xiJYZznnTg==",
- "dev": true,
- "requires": {
- "@jest/transform": "^29.0.1",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "slash": "^3.0.0"
- }
- },
- "babel-plugin-istanbul": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
- "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
- "test-exclude": "^6.0.0"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.0.tgz",
- "integrity": "sha512-B9oaXrlxXHFWeWqhDPg03iqQd2UN/mg/VdZOsLaqAVBkztru3ctTryAI4zisxLEEgmcUnLTKewqx0gGifoXD3A==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.1.14",
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
- "dev": true,
- "requires": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- }
- },
- "babel-preset-jest": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.0.0.tgz",
- "integrity": "sha512-B5Ke47Xcs8rDF3p1korT3LoilpADCwbG93ALqtvqu6Xpf4d8alKkrCBTExbNzdHJcIuEPpfYvEaFFRGee2kUgQ==",
- "dev": true,
- "requires": {
- "babel-plugin-jest-hoist": "^29.0.0",
- "babel-preset-current-node-syntax": "^1.0.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.21.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
- "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001370",
- "electron-to-chromium": "^1.4.202",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.5"
- }
- },
- "bs-logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
- "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
- "dev": true,
- "requires": {
- "fast-json-stable-stringify": "2.x"
- }
- },
- "bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "dev": true,
- "requires": {
- "node-int64": "^0.4.0"
- }
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "dev": true,
- "peer": true
- },
- "bundle-require": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-3.1.0.tgz",
- "integrity": "sha512-IIXtAO7fKcwPHNPt9kY/WNVJqy7NDy6YqJvv6ENH0TOZoJ+yjpEsn1w40WKZbR2ibfu5g1rfgJTvmFHpm5aOMA==",
- "dev": true,
- "requires": {
- "load-tsconfig": "^0.2.0"
- }
- },
- "bytes-iec": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/bytes-iec/-/bytes-iec-3.1.1.tgz",
- "integrity": "sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==",
- "dev": true
- },
- "cac": {
- "version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
- "dev": true
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "caniuse-lite": {
- "version": "1.0.30001385",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001385.tgz",
- "integrity": "sha512-MpiCqJGhBkHgpyimE9GWmZTnyHyEEM35u115bD3QBrXpjvL/JgcP8cUhKJshfmg4OtEHFenifcK5sZayEw5tvQ==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- }
- },
- "ci-info": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz",
- "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==",
- "dev": true
- },
- "ci-job-number": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/ci-job-number/-/ci-job-number-1.2.2.tgz",
- "integrity": "sha512-CLOGsVDrVamzv8sXJGaILUVI6dsuAkouJP/n6t+OxLPeeA4DDby7zn9SB6EUpa1H7oIKoE+rMmkW80zYsFfUjA==",
- "dev": true
- },
- "cjs-module-lexer": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
- "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
- "dev": true
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "dev": true
- },
- "collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
- "dev": true
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true,
- "peer": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
- "dev": true
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
- },
- "detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true
- },
- "diff-sequences": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz",
- "integrity": "sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "electron-to-chromium": {
- "version": "1.4.235",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.235.tgz",
- "integrity": "sha512-eNU2SmVZYTzYVA5aAWmhAJbdVil5/8H5nMq6kGD0Yxd4k2uKIuT8YmS46I0QXY7iOoPPcb6jjem9/2xyuH5+XQ==",
- "dev": true
- },
- "emittery": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz",
- "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==",
- "dev": true
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "esbuild": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.6.tgz",
- "integrity": "sha512-sgLOv3l4xklvXzzczhRwKRotyrfyZ2i1fCS6PTOLPd9wevDPArGU8HFtHrHCOcsMwTjLjzGm15gvC8uxVzQf+w==",
- "dev": true,
- "requires": {
- "@esbuild/linux-loong64": "0.15.6",
- "esbuild-android-64": "0.15.6",
- "esbuild-android-arm64": "0.15.6",
- "esbuild-darwin-64": "0.15.6",
- "esbuild-darwin-arm64": "0.15.6",
- "esbuild-freebsd-64": "0.15.6",
- "esbuild-freebsd-arm64": "0.15.6",
- "esbuild-linux-32": "0.15.6",
- "esbuild-linux-64": "0.15.6",
- "esbuild-linux-arm": "0.15.6",
- "esbuild-linux-arm64": "0.15.6",
- "esbuild-linux-mips64le": "0.15.6",
- "esbuild-linux-ppc64le": "0.15.6",
- "esbuild-linux-riscv64": "0.15.6",
- "esbuild-linux-s390x": "0.15.6",
- "esbuild-netbsd-64": "0.15.6",
- "esbuild-openbsd-64": "0.15.6",
- "esbuild-sunos-64": "0.15.6",
- "esbuild-windows-32": "0.15.6",
- "esbuild-windows-64": "0.15.6",
- "esbuild-windows-arm64": "0.15.6"
- }
- },
- "esbuild-android-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.6.tgz",
- "integrity": "sha512-Z1CHSgB1crVQi2LKSBwSkpaGtaloVz0ZIYcRMsvHc3uSXcR/x5/bv9wcZspvH/25lIGTaViosciS/NS09ERmVA==",
- "dev": true,
- "optional": true
- },
- "esbuild-android-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.6.tgz",
- "integrity": "sha512-mvM+gqNxqKm2pCa3dnjdRzl7gIowuc4ga7P7c3yHzs58Im8v/Lfk1ixSgQ2USgIywT48QWaACRa3F4MG7djpSw==",
- "dev": true,
- "optional": true
- },
- "esbuild-darwin-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.6.tgz",
- "integrity": "sha512-BsfVt3usScAfGlXJiGtGamwVEOTM8AiYiw1zqDWhGv6BncLXCnTg1As+90mxWewdTZKq3iIy8s9g8CKkrrAXVw==",
- "dev": true,
- "optional": true
- },
- "esbuild-darwin-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.6.tgz",
- "integrity": "sha512-CnrAeJaEpPakUobhqO4wVSA4Zm6TPaI5UY4EsI62j9mTrjIyQPXA1n4Ju6Iu5TVZRnEqV6q8blodgYJ6CJuwCA==",
- "dev": true,
- "optional": true
- },
- "esbuild-freebsd-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.6.tgz",
- "integrity": "sha512-+qFdmqi+jkAsxsNJkaWVrnxEUUI50nu6c3MBVarv3RCDCbz7ZS1a4ZrdkwEYFnKcVWu6UUE0Kkb1SQ1yGEG6sg==",
- "dev": true,
- "optional": true
- },
- "esbuild-freebsd-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.6.tgz",
- "integrity": "sha512-KtQkQOhnNciXm2yrTYZMD3MOm2zBiiwFSU+dkwNbcfDumzzUprr1x70ClTdGuZwieBS1BM/k0KajRQX7r504Xw==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-32": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.6.tgz",
- "integrity": "sha512-IAkDNz3TpxwISTGVdQijwyHBZrbFgLlRi5YXcvaEHtgbmayLSDcJmH5nV1MFgo/x2QdKcHBkOYHdjhKxUAcPwg==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.6.tgz",
- "integrity": "sha512-gQPksyrEYfA4LJwyfTQWAZaVZCx4wpaLrSzo2+Xc9QLC+i/sMWmX31jBjrn4nLJCd79KvwCinto36QC7BEIU/A==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-arm": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.6.tgz",
- "integrity": "sha512-xZ0Bq2aivsthDjA/ytQZzxrxIZbG0ATJYMJxNeOIBc1zUjpbVpzBKgllOZMsTSXMHFHGrow6TnCcgwqY0+oEoQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.6.tgz",
- "integrity": "sha512-aovDkclFa6C9EdZVBuOXxqZx83fuoq8097xZKhEPSygwuy4Lxs8J4anHG7kojAsR+31lfUuxzOo2tHxv7EiNHA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-mips64le": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.6.tgz",
- "integrity": "sha512-wVpW8wkWOGizsCqCwOR/G3SHwhaecpGy3fic9BF1r7vq4djLjUcA8KunDaBCjJ6TgLQFhJ98RjDuyEf8AGjAvw==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-ppc64le": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.6.tgz",
- "integrity": "sha512-z6w6gsPH/Y77uchocluDC8tkCg9rfkcPTePzZKNr879bF4tu7j9t255wuNOCE396IYEGxY7y8u2HJ9i7kjCLVw==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-riscv64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.6.tgz",
- "integrity": "sha512-pfK/3MJcmbfU399TnXW5RTPS1S+ID6ra+CVj9TFZ2s0q9Ja1F5A1VirUUvViPkjiw+Kq3zveyn6U09Wg1zJXrw==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-s390x": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.6.tgz",
- "integrity": "sha512-OZeeDu32liefcwAE63FhVqM4heWTC8E3MglOC7SK0KYocDdY/6jyApw0UDkDHlcEK9mW6alX/SH9r3PDjcCo/Q==",
- "dev": true,
- "optional": true
- },
- "esbuild-netbsd-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.6.tgz",
- "integrity": "sha512-kaxw61wcHMyiEsSsi5ut1YYs/hvTC2QkxJwyRvC2Cnsz3lfMLEu8zAjpBKWh9aU/N0O/gsRap4wTur5GRuSvBA==",
- "dev": true,
- "optional": true
- },
- "esbuild-openbsd-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.6.tgz",
- "integrity": "sha512-CuoY60alzYfIZapUHqFXqXbj88bbRJu8Fp9okCSHRX2zWIcGz4BXAHXiG7dlCye5nFVrY72psesLuWdusyf2qw==",
- "dev": true,
- "optional": true
- },
- "esbuild-sunos-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.6.tgz",
- "integrity": "sha512-1ceefLdPWcd1nW/ZLruPEYxeUEAVX0YHbG7w+BB4aYgfknaLGotI/ZvPWUZpzhC8l1EybrVlz++lm3E6ODIJOg==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-32": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.6.tgz",
- "integrity": "sha512-pBqdOsKqCD5LRYiwF29PJRDJZi7/Wgkz46u3d17MRFmrLFcAZDke3nbdDa1c8YgY78RiemudfCeAemN8EBlIpA==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.6.tgz",
- "integrity": "sha512-KpPOh4aTOo//g9Pk2oVAzXMpc9Sz9n5A9sZTmWqDSXCiiachfFhbuFlsKBGATYCVitXfmBIJ4nNYYWSOdz4hQg==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-arm64": {
- "version": "0.15.6",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.6.tgz",
- "integrity": "sha512-DB3G2x9OvFEa00jV+OkDBYpufq5x/K7a6VW6E2iM896DG4ZnAvJKQksOsCPiM1DUaa+DrijXAQ/ZOcKAqf/3Hg==",
- "dev": true,
- "optional": true
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- },
- "eslint": {
- "version": "8.23.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz",
- "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==",
- "dev": true,
- "requires": {
- "@eslint/eslintrc": "^1.3.1",
- "@humanwhocodes/config-array": "^0.10.4",
- "@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
- "@humanwhocodes/module-importer": "^1.0.1",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.1",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.4.0",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^6.0.1",
- "globals": "^13.15.0",
- "globby": "^11.1.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "regexpp": "^3.2.0",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.17.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
- "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- }
- }
- },
- "eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true
- }
- }
- },
- "eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
- "dev": true
- },
- "espree": {
- "version": "9.4.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz",
- "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- },
- "estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true,
- "peer": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- }
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true
- },
- "expect": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.0.1.tgz",
- "integrity": "sha512-yQgemsjLU+1S8t2A7pXT3Sn/v5/37LY8J+tocWtKEA0iEYYc6gfKbbJJX2fxHZmd7K9WpdbQqXUpmYkq1aewYg==",
- "dev": true,
- "requires": {
- "@jest/expect-utils": "^29.0.1",
- "jest-get-type": "^29.0.0",
- "jest-matcher-utils": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-util": "^29.0.1"
- }
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
- "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fb-watchman": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
- "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
- "dev": true,
- "requires": {
- "bser": "2.1.1"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
- "dev": true
- },
- "follow-redirects": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
- "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA=="
- },
- "form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "dev": true
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "dev": true
- },
- "growly": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
- "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
- },
- "human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true
- },
- "husky": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz",
- "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==",
- "dev": true
- },
- "ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- }
- }
- },
- "import-local": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
- "dev": true,
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-builtin-module": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz",
- "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==",
- "dev": true,
- "peer": true,
- "requires": {
- "builtin-modules": "^3.3.0"
- }
- },
- "is-core-module": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
- "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
- "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
- "dev": true,
- "peer": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-reference": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
- "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@types/estree": "*"
- }
- },
- "is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "optional": true,
- "peer": true,
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "istanbul-lib-coverage": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
- "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
- "dev": true
- },
- "istanbul-lib-instrument": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz",
- "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- }
- },
- "istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
- "dev": true,
- "requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- }
- },
- "istanbul-reports": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
- "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
- "dev": true,
- "requires": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- }
- },
- "jest": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.1.tgz",
- "integrity": "sha512-liHkwzaW6iwQyhRBFj0A4ZYKcsQ7ers1s62CCT95fPeNzoxT/vQRWwjTT4e7jpSCwrvPP2t1VESuy7GrXcr2ug==",
- "dev": true,
- "requires": {
- "@jest/core": "^29.0.1",
- "@jest/types": "^29.0.1",
- "import-local": "^3.0.2",
- "jest-cli": "^29.0.1"
- }
- },
- "jest-changed-files": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.0.0.tgz",
- "integrity": "sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==",
- "dev": true,
- "requires": {
- "execa": "^5.0.0",
- "p-limit": "^3.1.0"
- }
- },
- "jest-circus": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.1.tgz",
- "integrity": "sha512-I5J4LyK3qPo8EnqPmxsMAVR+2SFx7JOaZsbqW9xQmk4UDmTCD92EQgS162Ey3Jq6CfpKJKFDhzhG3QqiE0fRbw==",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.0.1",
- "@jest/expect": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^0.7.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.0.1",
- "jest-matcher-utils": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-runtime": "^29.0.1",
- "jest-snapshot": "^29.0.1",
- "jest-util": "^29.0.1",
- "p-limit": "^3.1.0",
- "pretty-format": "^29.0.1",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- }
- },
- "jest-cli": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.1.tgz",
- "integrity": "sha512-XozBHtoJCS6mnjCxNESyGm47Y4xSWzNlBJj4tix9nGrG6m068B83lrTWKtjYAenYSfOqyYVpQCkyqUp35IT+qA==",
- "dev": true,
- "requires": {
- "@jest/core": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/types": "^29.0.1",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "import-local": "^3.0.2",
- "jest-config": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-validate": "^29.0.1",
- "prompts": "^2.0.1",
- "yargs": "^17.3.1"
- }
- },
- "jest-config": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.0.1.tgz",
- "integrity": "sha512-3duIx5ucEPIsUOESDTuasMfqHonD0oZRjqHycIMHSC4JwbvHDjAWNKN/NiM0ZxHXjAYrMTLt2QxSQ+IqlbYE5A==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.0.1",
- "@jest/types": "^29.0.1",
- "babel-jest": "^29.0.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.0.1",
- "jest-environment-node": "^29.0.1",
- "jest-get-type": "^29.0.0",
- "jest-regex-util": "^29.0.0",
- "jest-resolve": "^29.0.1",
- "jest-runner": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-validate": "^29.0.1",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^29.0.1",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
- }
- },
- "jest-diff": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.1.tgz",
- "integrity": "sha512-l8PYeq2VhcdxG9tl5cU78ClAlg/N7RtVSp0v3MlXURR0Y99i6eFnegmasOandyTmO6uEdo20+FByAjBFEO9nuw==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.0.0",
- "jest-get-type": "^29.0.0",
- "pretty-format": "^29.0.1"
- }
- },
- "jest-docblock": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.0.0.tgz",
- "integrity": "sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==",
- "dev": true,
- "requires": {
- "detect-newline": "^3.0.0"
- }
- },
- "jest-each": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.0.1.tgz",
- "integrity": "sha512-UmCZYU9LPvRfSDoCrKJqrCNmgTYGGb3Ga6IVsnnVjedBTRRR9GJMca7UmDKRrJ1s+U632xrVtiRD27BxaG1aaQ==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.0.1",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.0.0",
- "jest-util": "^29.0.1",
- "pretty-format": "^29.0.1"
- }
- },
- "jest-environment-node": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.1.tgz",
- "integrity": "sha512-PcIRBrEBFAPBqkbL53ZpEvTptcAnOW6/lDfqBfACMm3vkVT0N7DcfkH/hqNSbDmSxzGr0FtJI6Ej3TPhveWCMA==",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.0.1",
- "@jest/fake-timers": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "jest-mock": "^29.0.1",
- "jest-util": "^29.0.1"
- }
- },
- "jest-get-type": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz",
- "integrity": "sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==",
- "dev": true
- },
- "jest-haste-map": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.1.tgz",
- "integrity": "sha512-gcKOAydafpGoSBvcj/mGCfhOKO8fRLkAeee1KXGdcJ1Pb9O2nnOl4I8bQSIID2MaZeMHtLLgNboukh/pUGkBtg==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.0.1",
- "@types/graceful-fs": "^4.1.3",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.3.2",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.0.0",
- "jest-util": "^29.0.1",
- "jest-worker": "^29.0.1",
- "micromatch": "^4.0.4",
- "walker": "^1.0.8"
- }
- },
- "jest-leak-detector": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.1.tgz",
- "integrity": "sha512-5tISHJphB+sCmKXtVHJGQGltj7ksrLLb9vkuNWwFR86Of1tfzjskvrrrZU1gSzEfWC+qXIn4tuh8noKHYGMIPA==",
- "dev": true,
- "requires": {
- "jest-get-type": "^29.0.0",
- "pretty-format": "^29.0.1"
- }
- },
- "jest-matcher-utils": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.1.tgz",
- "integrity": "sha512-/e6UbCDmprRQFnl7+uBKqn4G22c/OmwriE5KCMVqxhElKCQUDcFnq5XM9iJeKtzy4DUjxT27y9VHmKPD8BQPaw==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "jest-diff": "^29.0.1",
- "jest-get-type": "^29.0.0",
- "pretty-format": "^29.0.1"
- }
- },
- "jest-message-util": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.1.tgz",
- "integrity": "sha512-wRMAQt3HrLpxSubdnzOo68QoTfQ+NLXFzU0Heb18ZUzO2S9GgaXNEdQ4rpd0fI9dq2NXkpCk1IUWSqzYKji64A==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.0.1",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.0.1",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- }
- },
- "jest-mock": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.0.1.tgz",
- "integrity": "sha512-i1yTceg2GKJwUNZFjIzrH7Y74fN1SKJWxQX/Vu3LT4TiJerFARH5l+4URNyapZ+DNpchHYrGOP2deVbn3ma8JA==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.0.1",
- "@types/node": "*"
- }
- },
- "jest-pnp-resolver": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
- "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==",
- "dev": true,
- "requires": {}
- },
- "jest-regex-util": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.0.0.tgz",
- "integrity": "sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==",
- "dev": true
- },
- "jest-resolve": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.1.tgz",
- "integrity": "sha512-dwb5Z0lLZbptlBtPExqsHfdDamXeiRLv4vdkfPrN84vBwLSWHWcXjlM2JXD/KLSQfljBcXbzI/PDvUJuTQ84Nw==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.0.1",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.0.1",
- "jest-validate": "^29.0.1",
- "resolve": "^1.20.0",
- "resolve.exports": "^1.1.0",
- "slash": "^3.0.0"
- }
- },
- "jest-resolve-dependencies": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.1.tgz",
- "integrity": "sha512-fUGcYlSc1NzNz+tsHDjjG0rclw6blJcFZsLEsezxm/n54bAm9HFvJxgBuCV1CJQoPtIx6AfR+tXkR9lpWJs2LQ==",
- "dev": true,
- "requires": {
- "jest-regex-util": "^29.0.0",
- "jest-snapshot": "^29.0.1"
- }
- },
- "jest-runner": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.1.tgz",
- "integrity": "sha512-XeFfPmHtO7HyZyD1uJeO4Oqa8PyTbDHzS1YdGrvsFXk/A5eXinbqA5a42VUEqvsKQgNnKTl5NJD0UtDWg7cQ2A==",
- "dev": true,
- "requires": {
- "@jest/console": "^29.0.1",
- "@jest/environment": "^29.0.1",
- "@jest/test-result": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.10.2",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.0.0",
- "jest-environment-node": "^29.0.1",
- "jest-haste-map": "^29.0.1",
- "jest-leak-detector": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-resolve": "^29.0.1",
- "jest-runtime": "^29.0.1",
- "jest-util": "^29.0.1",
- "jest-watcher": "^29.0.1",
- "jest-worker": "^29.0.1",
- "p-limit": "^3.1.0",
- "source-map-support": "0.5.13"
- }
- },
- "jest-runtime": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.1.tgz",
- "integrity": "sha512-yDgz5OE0Rm44PUAfTqwA6cDFnTYnVcYbRpPECsokSASQ0I5RXpnKPVr2g0CYZWKzbsXqqtmM7TIk7CAutZJ7gQ==",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.0.1",
- "@jest/fake-timers": "^29.0.1",
- "@jest/globals": "^29.0.1",
- "@jest/source-map": "^29.0.0",
- "@jest/test-result": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-mock": "^29.0.1",
- "jest-regex-util": "^29.0.0",
- "jest-resolve": "^29.0.1",
- "jest-snapshot": "^29.0.1",
- "jest-util": "^29.0.1",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- }
- },
- "jest-snapshot": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.1.tgz",
- "integrity": "sha512-OuYGp+lsh7RhB3DDX36z/pzrGm2F740e5ERG9PQpJyDknCRtWdhaehBQyMqDnsQdKkvC2zOcetcxskiHjO7e8Q==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/traverse": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.0.1",
- "@jest/transform": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/babel__traverse": "^7.0.6",
- "@types/prettier": "^2.1.5",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.0.1",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.0.1",
- "jest-get-type": "^29.0.0",
- "jest-haste-map": "^29.0.1",
- "jest-matcher-utils": "^29.0.1",
- "jest-message-util": "^29.0.1",
- "jest-util": "^29.0.1",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.0.1",
- "semver": "^7.3.5"
- }
- },
- "jest-util": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.0.1.tgz",
- "integrity": "sha512-GIWkgNfkeA9d84rORDHPGGTFBrRD13A38QVSKE0bVrGSnoR1KDn8Kqz+0yI5kezMgbT/7zrWaruWP1Kbghlb2A==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- }
- },
- "jest-validate": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.1.tgz",
- "integrity": "sha512-mS4q7F738YXZFWBPqE+NjHU/gEOs7IBIFQ8i9zq5EO691cLrUbLhFq4larf8/lNcmauRO71tn/+DTW2y+MrLow==",
- "dev": true,
- "requires": {
- "@jest/types": "^29.0.1",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.0.0",
- "leven": "^3.1.0",
- "pretty-format": "^29.0.1"
- },
- "dependencies": {
- "camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true
- }
- }
- },
- "jest-watcher": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.1.tgz",
- "integrity": "sha512-0LBWDL3sZ+vyHRYxjqm2irhfwhUXHonjLSbd0oDeGq44U1e1uUh3icWNXYF8HO/UEnOoa6+OJDncLUXP2Hdg9A==",
- "dev": true,
- "requires": {
- "@jest/test-result": "^29.0.1",
- "@jest/types": "^29.0.1",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.10.2",
- "jest-util": "^29.0.1",
- "string-length": "^4.0.1"
- }
- },
- "jest-worker": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.1.tgz",
- "integrity": "sha512-+B/2/8WW7goit7qVezG9vnI1QP3dlmuzi2W0zxazAQQ8dcDIA63dDn6j4pjOGBARha/ZevcwYQtNIzCySbS7fQ==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "joycon": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
- "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==",
- "dev": true
- },
- "js-magic": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/js-magic/-/js-magic-1.2.3.tgz",
- "integrity": "sha512-UuLRJB1ZFrKLYJHed+pB1P6FOYu0Hc7p2M76NEGjGY8cfYdFE+bIiEljupn6EFT1qS/fx8psQ7R31E3+WHC0sA=="
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "json5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
- "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
- "dev": true
- },
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- },
- "leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "lilconfig": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
- "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
- "dev": true
- },
- "lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "load-tsconfig": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.3.tgz",
- "integrity": "sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==",
- "dev": true
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash.memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
- "dev": true
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "sourcemap-codec": "^1.4.8"
- }
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "makeerror": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
- "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
- "dev": true,
- "requires": {
- "tmpl": "1.0.5"
- }
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dev": true,
- "requires": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true
- },
- "nanospinner": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/nanospinner/-/nanospinner-1.1.0.tgz",
- "integrity": "sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==",
- "dev": true,
- "requires": {
- "picocolors": "^1.0.0"
- }
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
- },
- "node-notifier": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-10.0.1.tgz",
- "integrity": "sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==",
- "dev": true,
- "optional": true,
- "peer": true,
- "requires": {
- "growly": "^1.3.0",
- "is-wsl": "^2.2.0",
- "semver": "^7.3.5",
- "shellwords": "^0.1.1",
- "uuid": "^8.3.2",
- "which": "^2.0.2"
- }
- },
- "node-releases": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
- "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
- "dev": true
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- },
- "dependencies": {
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- }
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "pirates": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
- "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "postcss-load-config": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
- "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
- "dev": true,
- "requires": {
- "lilconfig": "^2.0.5",
- "yaml": "^1.10.2"
- }
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "pretty-format": {
- "version": "29.0.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.1.tgz",
- "integrity": "sha512-iTHy3QZMzuL484mSTYbQIM1AHhEQsH8mXWS2/vd2yFBYnG3EBqGiMONo28PlPgrW7P/8s/1ISv+y7WH306l8cw==",
- "dev": true,
- "requires": {
- "@jest/schemas": "^29.0.0",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true
- }
- }
- },
- "promise-any": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/promise-any/-/promise-any-0.2.0.tgz",
- "integrity": "sha512-w+vpHI6XKtg/b+2vYhR2WwUkhLYEjJPpdFyJjDd3UUnYSqX0XvPzfr/tK02qOOwV5i4QwkvIvx2h5tIIvitJvQ==",
- "dev": true
- },
- "prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- }
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true
- },
- "resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "requires": {
- "resolve-from": "^5.0.0"
- }
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- },
- "resolve.exports": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
- "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "rollup": {
- "version": "2.78.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
- "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
- "dev": true,
- "requires": {
- "fsevents": "~2.3.2"
- }
- },
- "rollup-plugin-bundle-imports": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-bundle-imports/-/rollup-plugin-bundle-imports-1.5.1.tgz",
- "integrity": "sha512-EIOiPV3Pk+RJtujTAXOdiKBV82qd+PM44uczsZI07XQ53nmMy5rFq2+YcMSRmGWRz9aCGEmib7Q6Ge4EZaRG+A==",
- "dev": true,
- "requires": {
- "rollup-pluginutils": "^2.8.1"
- }
- },
- "rollup-pluginutils": {
- "version": "2.8.2",
- "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
- "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
- "dev": true,
- "requires": {
- "estree-walker": "^0.6.1"
- },
- "dependencies": {
- "estree-walker": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
- "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
- "dev": true
- }
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "shellwords": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
- "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "size-limit": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/size-limit/-/size-limit-8.0.1.tgz",
- "integrity": "sha512-VHrozqkQTYfcv1OlZIRIL0x6f+xhZ3TT+RTXC5AvKn/yA+3PIWERrKWqHMJPD7G/Vi0SuBtWAn3IvCGx2/UB1g==",
- "dev": true,
- "requires": {
- "bytes-iec": "^3.1.1",
- "chokidar": "^3.5.3",
- "ci-job-number": "^1.2.2",
- "globby": "^11.1.0",
- "lilconfig": "^2.0.6",
- "mkdirp": "^1.0.4",
- "nanospinner": "^1.1.0",
- "picocolors": "^1.0.0"
- }
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.13",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
- "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true,
- "peer": true
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
- "stack-utils": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
- "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^2.0.0"
- }
- },
- "string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
- "dev": true,
- "requires": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "dependencies": {
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- }
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "sucrase": {
- "version": "3.25.0",
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.25.0.tgz",
- "integrity": "sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ==",
- "dev": true,
- "requires": {
- "commander": "^4.0.0",
- "glob": "7.1.6",
- "lines-and-columns": "^1.1.6",
- "mz": "^2.7.0",
- "pirates": "^4.0.1",
- "ts-interface-checker": "^0.1.9"
- },
- "dependencies": {
- "commander": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
- "dev": true
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "supports-hyperlinks": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
- "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "terminal-link": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
- "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- }
- },
- "test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "dev": true,
- "requires": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "dev": true,
- "requires": {
- "any-promise": "^1.0.0"
- }
- },
- "thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
- "dev": true,
- "requires": {
- "thenify": ">= 3.1.0 < 4"
- }
- },
- "tmpl": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
- "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "dev": true
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true
- },
- "ts-interface-checker": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
- "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
- "dev": true
- },
- "ts-jest": {
- "version": "29.0.0-next.0",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.0-next.0.tgz",
- "integrity": "sha512-eZS6d2uH4Piwp2k7SwyLpKhBpwL1idvba/5LnkkBd8YcPA5Q0h/OgpBwt7702gOYF8WRGNxhVj6OZ988zoGWtg==",
- "dev": true,
- "requires": {
- "bs-logger": "0.x",
- "fast-json-stable-stringify": "2.x",
- "jest-util": "^29.0.0",
- "json5": "^2.2.1",
- "lodash.memoize": "4.x",
- "make-error": "1.x",
- "semver": "7.x",
- "yargs-parser": "^21.0.1"
- }
- },
- "tslib": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
- "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
- "dev": true
- },
- "tsup": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/tsup/-/tsup-6.2.3.tgz",
- "integrity": "sha512-J5Pu2Dx0E1wlpIEsVFv9ryzP1pZ1OYsJ2cBHZ7GrKteytNdzaSz5hmLX7/nAxtypq+jVkVvA79d7S83ETgHQ5w==",
- "dev": true,
- "requires": {
- "bundle-require": "^3.1.0",
- "cac": "^6.7.12",
- "chokidar": "^3.5.1",
- "debug": "^4.3.1",
- "esbuild": "^0.15.1",
- "execa": "^5.0.0",
- "globby": "^11.0.3",
- "joycon": "^3.0.1",
- "postcss-load-config": "^3.0.1",
- "resolve-from": "^5.0.0",
- "rollup": "^2.74.1",
- "source-map": "0.8.0-beta.0",
- "sucrase": "^3.20.3",
- "tree-kill": "^1.2.2"
- },
- "dependencies": {
- "source-map": {
- "version": "0.8.0-beta.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
- "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
- "dev": true,
- "requires": {
- "whatwg-url": "^7.0.0"
- }
- }
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- },
- "typescript": {
- "version": "4.8.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz",
- "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
- "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "v8-to-istanbul": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
- "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "^0.3.12",
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0"
- }
- },
- "walker": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
- "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
- "dev": true,
- "requires": {
- "makeerror": "1.0.12"
- }
- },
- "webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
- "whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "write-file-atomic": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
- }
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true
- },
- "yargs": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
- "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
- "dev": true,
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.0.0"
- }
- },
- "yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
- }
}
}
diff --git a/package.json b/package.json
index adb9de7..62bd6e3 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "version": "1.4.2",
+ "version": "1.5.0",
"license": "MIT",
"name": "axios-multi-api",
"author": "Matt Czapliński ",
@@ -26,6 +26,7 @@
"build": "node ./scripts/build.js",
"build:browser": "tsup src/index.ts --dts --format esm,iife --sourcemap --env.NODE_ENV production --minify --dts-resolve",
"build:node": "tsup src/index.ts --dts --format cjs --sourcemap --env.NODE_ENV production --minify",
+ "types-check": "tsc --noEmit",
"test": "jest --forceExit",
"lint": "eslint --ext .js,.ts",
"release": "npm version patch && git push --tags",
@@ -33,11 +34,6 @@
"size": "size-limit",
"analyze": "size-limit --why"
},
- "husky": {
- "hooks": {
- "pre-commit": "npm run lint"
- }
- },
"prettier": {
"printWidth": 80,
"semi": true,
@@ -56,21 +52,22 @@
}
],
"devDependencies": {
- "@size-limit/preset-small-lib": "^8.0.1",
- "@types/jest": "^29.0.0",
- "eslint": "^8.23.0",
- "husky": "^8.0.1",
- "jest": "^29.0.1",
+ "@size-limit/preset-small-lib": "^8.2.6",
+ "@types/jest": "^29.5.2",
+ "eslint": "^8.44.0",
+ "jest": "^29.5.0",
"promise-any": "0.2.0",
"rollup-plugin-bundle-imports": "^1.5.1",
- "size-limit": "^8.0.1",
- "ts-jest": "^29.0.0-next.0",
- "tslib": "^2.4.0",
- "tsup": "^6.2.3",
- "typescript": "^4.8.2"
+ "size-limit": "^8.2.6",
+ "ts-jest": "^29.1.1",
+ "tslib": "^2.6.0",
+ "tsup": "^7.1.0",
+ "typescript": "^5.1.6"
+ },
+ "peerDependencies": {
+ "axios": "^1"
},
"dependencies": {
- "axios": "^0.27.2",
- "js-magic": "^1.2.3"
+ "js-magic": "^1.2.4"
}
}
diff --git a/src/api-handler.ts b/src/api-handler.ts
index e0a362a..adb992a 100644
--- a/src/api-handler.ts
+++ b/src/api-handler.ts
@@ -1,167 +1,159 @@
// 3rd party libs
-import {
- applyMagic,
- MagicalClass,
-} from 'js-magic';
+import { applyMagic, MagicalClass } from 'js-magic';
// Types
-import {
- AxiosInstance,
-} from 'axios';
+import type { AxiosInstance } from 'axios';
import {
- IRequestResponse,
- APIHandlerConfig,
- EndpointConfig,
+ IRequestResponse,
+ APIHandlerConfig,
+ EndpointConfig,
} from './types/http-request';
-import {
- HttpRequestHandler,
-} from './http-request-handler';
+import { RequestHandler } from './request-handler';
/**
* Handles dispatching of API requests
*/
@applyMagic
export class ApiHandler implements MagicalClass {
- /**
- * TS Index signature
- */
- [x: string]: any;
-
- /**
- * Api Url
- */
- public apiUrl = '';
-
- /**
- * @var httpRequestHandler Request Wrapper Instance
- */
- public httpRequestHandler: HttpRequestHandler;
-
- /**
- * Endpoints
- */
- public endpoints: Record;
-
- /**
- * Logger
- */
- public logger: any;
-
- /**
- * Creates an instance of API Handler
- *
- * @param {string} apiUrl Base URL for all API calls
- * @param {number} timeout Request timeout
- * @param {string} strategy Error Handling Strategy
- * @param {string} flattenResponse Whether to flatten response "data" object within "data" one
- * @param {*} logger Instance of Logger Class
- * @param {*} onError Instance of Error Service Class
- */
- public constructor({
- apiUrl,
- endpoints,
- timeout = null,
- cancellable = false,
- strategy = null,
- flattenResponse = null,
- defaultResponse = {},
- logger = null,
- onError = null,
- ...config
- }: APIHandlerConfig) {
- this.apiUrl = apiUrl;
- this.endpoints = endpoints;
- this.logger = logger;
-
- this.httpRequestHandler = new HttpRequestHandler({
- ...config,
- baseURL: this.apiUrl,
- timeout,
- cancellable,
- strategy,
- flattenResponse,
- defaultResponse,
- logger,
- onError,
- });
+ /**
+ * TS Index signature
+ */
+ [x: string]: any;
+
+ /**
+ * @var requestHandler Request Wrapper Instance
+ */
+ public requestHandler: RequestHandler;
+
+ /**
+ * Endpoints
+ */
+ protected endpoints: Record;
+
+ /**
+ * Logger
+ */
+ protected logger: any;
+
+ /**
+ * Creates an instance of API Handler
+ *
+ * @param {string} config.apiUrl Base URL for all API calls
+ * @param {number} config.timeout Request timeout
+ * @param {string} config.strategy Error Handling Strategy
+ * @param {string} config.flattenResponse Whether to flatten response "data" object within "data" one
+ * @param {*} config.logger Instance of Logger Class
+ * @param {*} config.onError Instance of Error Service Class
+ */
+ public constructor({
+ axios,
+ apiUrl,
+ endpoints,
+ timeout = null,
+ cancellable = false,
+ strategy = null,
+ flattenResponse = null,
+ defaultResponse = {},
+ logger = null,
+ onError = null,
+ ...config
+ }: APIHandlerConfig) {
+ this.endpoints = endpoints;
+ this.logger = logger;
+
+ this.requestHandler = new RequestHandler({
+ ...config,
+ baseURL: apiUrl,
+ axios,
+ timeout,
+ cancellable,
+ strategy,
+ flattenResponse,
+ defaultResponse,
+ logger,
+ onError,
+ });
+ }
+
+ /**
+ * Get Provider Instance
+ *
+ * @returns {AxiosInstance} Provider's instance
+ */
+ public getInstance(): AxiosInstance {
+ return this.requestHandler.getInstance();
+ }
+
+ /**
+ * Maps all API requests
+ *
+ * @param {*} prop Caller
+ * @returns {Function} Tailored request function
+ */
+ public __get(prop: any): any {
+ if (prop in this) {
+ return this[prop];
}
- /**
- * Get Provider Instance
- *
- * @returns {AxiosInstance} Provider's instance
- */
- public getInstance(): AxiosInstance {
- return this.httpRequestHandler.getInstance();
+ // Prevent handler from running for non-existent endpoints
+ if (!this.endpoints[prop]) {
+ return this.handleNonImplemented.bind(this, prop);
}
- /**
- * Maps all API requests
- *
- * @param {*} prop Caller
- * @returns {Function} Tailored request function
- */
- public __get(prop: any): any {
- if (prop in this) {
- return this[prop];
- }
-
- // Prevent handler from running for non-existent endpoints
- if (!this.endpoints[prop]) {
- return this.handleNonImplemented.bind(this, prop)
- }
-
- return this.handleRequest.bind(this, prop);
+ return this.handleRequest.bind(this, prop);
+ }
+
+ /**
+ * Handle Single API Request
+ *
+ * @param {*} args Arguments
+ * @returns {Promise} Resolvable API provider promise
+ */
+ public async handleRequest(...args: any): Promise {
+ const prop = args[0];
+ const endpointSettings = this.endpoints[prop];
+
+ const queryParams = args[1] || {};
+ const uriParams = args[2] || {};
+ const requestConfig = args[3] || {};
+
+ const uri = endpointSettings.url.replace(/:[a-z]+/gi, (str: string) =>
+ uriParams[str.substring(1)] ? uriParams[str.substring(1)] : str
+ );
+
+ let responseData = null;
+
+ const additionalRequestSettings = { ...endpointSettings };
+
+ delete additionalRequestSettings.url;
+ delete additionalRequestSettings.method;
+
+ responseData = await this.requestHandler[
+ (endpointSettings.method || 'get').toLowerCase()
+ ](uri, queryParams, {
+ ...requestConfig,
+ ...additionalRequestSettings,
+ });
+
+ return responseData;
+ }
+
+ /**
+ * Triggered when trying to use non-existent endpoints
+ *
+ * @param prop Method Name
+ * @returns {Promise}
+ */
+ protected handleNonImplemented(prop: string): Promise {
+ if (this.logger?.log) {
+ this.logger.log(`${prop} endpoint not implemented.`);
}
- /**
- * Handle Single API Request
- *
- * @param {*} args Arguments
- * @returns {Promise} Resolvable API provider promise
- */
- public async handleRequest(...args: any): Promise {
- const prop = args[0];
- const endpointSettings = this.endpoints[prop];
-
- const queryParams = args[1] || {};
- const uriParams = args[2] || {};
- const requestConfig = args[3] || {};
-
- const uri = endpointSettings.url.replace(/:[a-z]+/gi, (str: string) =>
- uriParams[str.substring(1)] ? uriParams[str.substring(1)] : str
- );
-
- let responseData = null;
-
- const additionalRequestSettings = { ...endpointSettings };
-
- delete additionalRequestSettings.url;
- delete additionalRequestSettings.method;
-
- responseData = await this.httpRequestHandler[(endpointSettings.method || 'get').toLowerCase()](uri, queryParams, {
- ...requestConfig,
- ...additionalRequestSettings,
- });
-
- return responseData;
- }
-
- /**
- * Triggered when trying to use non-existent endpoints
- *
- * @param prop Method Name
- * @returns {Promise}
- */
- protected handleNonImplemented(prop: string): Promise {
- if (this.logger && this.logger.log) {
- this.logger.log(`${prop} endpoint not implemented.`)
- }
-
- return Promise.resolve(null);
- }
+ return Promise.resolve(null);
+ }
}
-export const createApiFetcher = (options: APIHandlerConfig) => new ApiHandler(options);
+export const createApiFetcher = (options: APIHandlerConfig) =>
+ new ApiHandler(options);
diff --git a/src/http-request-error-handler.ts b/src/http-request-error-handler.ts
deleted file mode 100644
index 373d5c2..0000000
--- a/src/http-request-error-handler.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-export class HttpRequestErrorHandler {
- /**
- * Logger Class
- *
- * @type {*}
- * @memberof HttpRequestErrorHandler
- */
- public logger: any;
-
- /**
- * Error Service Class
- *
- * @type {*}
- * @memberof HttpRequestErrorHandler
- */
- public httpRequestErrorService: any;
-
- public constructor(logger: any, httpRequestErrorService: any) {
- this.logger = logger;
- this.httpRequestErrorService = httpRequestErrorService;
- }
-
- /**
- * Process and Error
- *
- * @param {*} error Error instance or message
- * @throws Request error context
- * @returns {void}
- */
- public process(error: string | Error) {
- if (this.logger && this.logger.warn) {
- this.logger.warn('API ERROR', error);
- }
-
- let errorContext = error;
-
- if (typeof error === 'string') {
- errorContext = new Error(error);
- }
-
- if (this.httpRequestErrorService) {
- if (typeof this.httpRequestErrorService.process !== 'undefined') {
- this.httpRequestErrorService.process(errorContext);
- } else if (typeof this.httpRequestErrorService === 'function') {
- this.httpRequestErrorService(errorContext);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/http-request-handler.ts b/src/http-request-handler.ts
deleted file mode 100644
index de2f658..0000000
--- a/src/http-request-handler.ts
+++ /dev/null
@@ -1,404 +0,0 @@
-// 3rd party libs
-import axios, { AxiosInstance, Method } from 'axios';
-import { applyMagic, MagicalClass } from 'js-magic';
-
-// Shared Modules
-import { HttpRequestErrorHandler } from './http-request-error-handler';
-
-// Types
-import {
- IRequestData,
- IRequestResponse,
- InterceptorCallback,
- ErrorHandlingStrategy,
- RequestHandlerConfig,
- EndpointConfig,
- RequestError,
-} from './types/http-request';
-
-/**
- * Generic Request Handler
- * It creates an Axios instance and handles requests within that instance
- * It handles errors depending on a chosen error handling strategy
- */
-@applyMagic
-export class HttpRequestHandler implements MagicalClass {
- /**
- * @var requestInstance Provider's instance
- */
- public requestInstance: AxiosInstance;
-
- /**
- * @var timeout Request timeout
- */
- public timeout: number = 30000;
-
- /**
- * @var cancellable Response cancellation
- */
- public cancellable: boolean = false;
-
- /**
- * @var strategy Request timeout
- */
- public strategy: ErrorHandlingStrategy = 'reject';
-
- /**
- * @var flattenResponse Response flattening
- */
- public flattenResponse: boolean = true;
-
- /**
- * @var defaultResponse Response flattening
- */
- public defaultResponse: any = null;
-
- /**
- * @var logger Logger
- */
- protected logger: any;
-
- /**
- * @var httpRequestErrorService HTTP error service
- */
- protected httpRequestErrorService: any;
-
- /**
- * @var requestsQueue Queue of requests
- */
- protected requestsQueue: Map;
-
- /**
- * Creates an instance of HttpRequestHandler
- *
- * @param {string} baseURL Base URL for all API calls
- * @param {number} timeout Request timeout
- * @param {string} strategy Error Handling Strategy
- * @param {string} flattenResponse Whether to flatten response "data" object within "data" one
- * @param {*} logger Instance of Logger Class
- * @param {*} httpRequestErrorService Instance of Error Service Class
- */
- public constructor({
- baseURL = '',
- timeout = null,
- cancellable = false,
- strategy = null,
- flattenResponse = null,
- defaultResponse = {},
- logger = null,
- onError = null,
- ...config
- }: RequestHandlerConfig) {
- this.timeout = timeout !== null ? timeout : this.timeout;
- this.strategy = strategy !== null ? strategy : this.strategy;
- this.cancellable = cancellable || this.cancellable;
- this.flattenResponse =
- flattenResponse !== null ? flattenResponse : this.flattenResponse;
- this.defaultResponse = defaultResponse;
- this.logger = logger || global.console || window.console || null;
- this.httpRequestErrorService = onError;
- this.requestsQueue = new Map();
-
- this.requestInstance = axios.create({
- ...config,
- baseURL,
- timeout: this.timeout,
- });
- }
-
- /**
- * Get Provider Instance
- *
- * @returns {AxiosInstance} Provider's instance
- */
- public getInstance(): AxiosInstance {
- return this.requestInstance;
- }
-
- /**
- * Intercept Request
- *
- * @param {*} callback callback to use before request
- * @returns {void}
- */
- public interceptRequest(callback: InterceptorCallback): void {
- this.getInstance().interceptors.request.use(callback);
- }
-
- /**
- * Maps all API requests
- *
- * @param {string} url Url
- * @param {*} data Payload
- * @param {EndpointConfig} config Config
- * @throws {RequestError} If request fails
- * @returns {Promise} Request response or error info
- */
- public __get(prop: string) {
- if (prop in this) {
- return this[prop];
- }
-
- return this.prepareRequest.bind(this, prop);
- }
-
- /**
- * Prepare Request
- *
- * @param {string} url Url
- * @param {*} data Payload
- * @param {EndpointConfig} config Config
- * @throws {RequestError} If request fails
- * @returns {Promise} Request response or error info
- */
- public prepareRequest(
- type: Method,
- url: string,
- data: any = null,
- config: EndpointConfig = null
- ): Promise {
- return this.handleRequest({
- type,
- url,
- data,
- config,
- });
- }
-
- /**
- * Build request configuration
- *
- * @param {string} method Request method
- * @param {string} url Request url
- * @param {*} data Request data
- * @param {EndpointConfig} config Request config
- * @returns {AxiosInstance} Provider's instance
- */
- protected buildRequestConfig(
- method: string,
- url: string,
- data: any,
- config: EndpointConfig
- ): EndpointConfig {
- const methodLowerCase = method.toLowerCase() as Method;
- const key =
- methodLowerCase === 'get' || methodLowerCase === 'head'
- ? 'params'
- : 'data';
-
- return {
- ...config,
- url,
- method: methodLowerCase,
- [key]: data || {},
- };
- }
-
- /**
- * Process global Request Error
- *
- * @param {RequestError} error Error instance
- * @param {EndpointConfig} requestConfig Per endpoint request config
- * @returns {AxiosInstance} Provider's instance
- */
- protected processRequestError(
- error: RequestError,
- requestConfig: EndpointConfig
- ): void {
- if (this.isRequestCancelled(error, requestConfig)) {
- return;
- }
-
- // Invoke per request "onError" call
- if (requestConfig.onError && typeof requestConfig.onError === 'function') {
- requestConfig.onError(error);
- }
-
- const errorHandler = new HttpRequestErrorHandler(
- this.logger,
- this.httpRequestErrorService
- );
-
- errorHandler.process(error);
- }
-
- /**
- * Output error response depending on chosen strategy
- *
- * @param {RequestError} error Error instance
- * @param {EndpointConfig} requestConfig Per endpoint request config
- * @returns {AxiosInstance} Provider's instance
- */
- protected async outputErrorResponse(
- error: RequestError,
- requestConfig: EndpointConfig
- ): Promise {
- const isRequestCancelled = this.isRequestCancelled(error, requestConfig);
- const errorHandlingStrategy = requestConfig.strategy || this.strategy;
-
- // By default cancelled requests aren't rejected
- if (isRequestCancelled && !requestConfig.rejectCancelled) {
- return this.defaultResponse;
- }
-
- if (errorHandlingStrategy === 'silent') {
- // Hang the promise
- await new Promise(() => null);
-
- return this.defaultResponse;
- }
-
- // Simply rejects a request promise
- if (
- errorHandlingStrategy === 'reject' ||
- errorHandlingStrategy === 'throwError'
- ) {
- return Promise.reject(error);
- }
-
- return this.defaultResponse;
- }
-
- /**
- * Output error response depending on chosen strategy
- *
- * @param {RequestError} error Error instance
- * @param {EndpointConfig} _requestConfig Per endpoint request config
- * @returns {*} Error response
- */
- public isRequestCancelled(
- error: RequestError,
- _requestConfig: EndpointConfig
- ): boolean {
- return axios.isCancel(error);
- }
-
- /**
- * Automatically Cancel Previous Requests
- *
- * @param {EndpointConfig} requestConfig Per endpoint request config
- * @returns {AxiosInstance} Provider's instance
- */
- protected addCancellationToken(requestConfig: EndpointConfig) {
- // Both disabled
- if (!this.cancellable && !requestConfig.cancellable) {
- return {};
- }
-
- // Explicitly disabled per request
- if (
- typeof requestConfig.cancellable !== 'undefined' &&
- !requestConfig.cancellable
- ) {
- return {};
- }
-
- // Check if AbortController is available
- if (typeof AbortController === 'undefined') {
- console.error('AbortController is unavailable in your ENV.');
-
- return {};
- }
-
- const {
- method,
- baseURL,
- url,
- params,
- data,
- } = requestConfig;
-
- // Generate unique key as a cancellation token. Make sure it fits Map
- const key = JSON.stringify([
- method,
- baseURL,
- url,
- params,
- data,
- ]).substring(0, 55 ** 5);
- const previousRequest = this.requestsQueue.get(key);
-
- if (previousRequest) {
- previousRequest.abort();
- }
-
- const controller = new AbortController();
-
- this.requestsQueue.set(key, controller);
-
- return {
- signal: controller.signal,
- };
- }
-
- /**
- * Handle Request depending on used strategy
- *
- * @param {object} payload Payload
- * @param {string} payload.type Request type
- * @param {string} payload.url Request url
- * @param {*} payload.data Request data
- * @param {EndpointConfig} payload.config Request config
- * @throws {RequestError}
- * @returns {Promise} Response Data
- */
- protected async handleRequest({
- type,
- url,
- data = null,
- config = null,
- }: IRequestData): Promise {
- let response = null;
- const endpointConfig = config || {};
- let requestConfig = this.buildRequestConfig(
- type,
- url,
- data,
- endpointConfig
- );
-
- requestConfig = {
- ...this.addCancellationToken(requestConfig),
- ...requestConfig,
- };
-
- try {
- response = await this.requestInstance.request(requestConfig);
- } catch (error) {
- this.processRequestError(error, requestConfig);
-
- return this.outputErrorResponse(error, requestConfig);
- }
-
- return this.processResponseData(response);
- }
-
- /**
- * Process request response
- *
- * @param response Response object
- * @returns {*} Response data
- */
- protected processResponseData(response) {
- if (response.data) {
- if (!this.flattenResponse) {
- return response;
- }
-
- // Special case of data property within Axios data object
- // This is in fact a proper response but we may want to flatten it
- // To ease developers' lives when obtaining the response
- if (
- typeof response.data === 'object' &&
- typeof response.data.data !== 'undefined' &&
- Object.keys(response.data).length === 1
- ) {
- return response.data.data;
- }
-
- return response.data;
- }
-
- return this.defaultResponse;
- }
-}
diff --git a/src/index.ts b/src/index.ts
index 9422ad7..7e20623 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,6 +1,4 @@
-// List of exports
-export * from './types/api';
-export * from './types/http-request';
+export * from './types';
export * from './api-handler';
-export * from './http-request-handler';
-export * from './http-request-error-handler';
\ No newline at end of file
+export * from './request-handler';
+export * from './request-error-handler';
diff --git a/src/request-error-handler.ts b/src/request-error-handler.ts
new file mode 100644
index 0000000..7bd0a6a
--- /dev/null
+++ b/src/request-error-handler.ts
@@ -0,0 +1,49 @@
+export class RequestErrorHandler {
+ /**
+ * Logger Class
+ *
+ * @type {*}
+ * @memberof RequestErrorHandler
+ */
+ protected logger: any;
+
+ /**
+ * Error Service Class
+ *
+ * @type {*}
+ * @memberof RequestErrorHandler
+ */
+ public requestErrorService: any;
+
+ public constructor(logger: any, requestErrorService: any) {
+ this.logger = logger;
+ this.requestErrorService = requestErrorService;
+ }
+
+ /**
+ * Process and Error
+ *
+ * @param {*} error Error instance or message
+ * @throws Request error context
+ * @returns {void}
+ */
+ public process(error: string | Error): void {
+ if (this.logger?.warn) {
+ this.logger.warn('API ERROR', error);
+ }
+
+ let errorContext = error;
+
+ if (typeof error === 'string') {
+ errorContext = new Error(error);
+ }
+
+ if (this.requestErrorService) {
+ if (typeof this.requestErrorService.process !== 'undefined') {
+ this.requestErrorService.process(errorContext);
+ } else if (typeof this.requestErrorService === 'function') {
+ this.requestErrorService(errorContext);
+ }
+ }
+ }
+}
diff --git a/src/request-handler.ts b/src/request-handler.ts
new file mode 100644
index 0000000..a9bfc76
--- /dev/null
+++ b/src/request-handler.ts
@@ -0,0 +1,392 @@
+// 3rd party libs
+import type { AxiosInstance, AxiosStatic, Method } from 'axios';
+import { applyMagic, MagicalClass } from 'js-magic';
+
+// Shared Modules
+import { RequestErrorHandler } from './request-error-handler';
+
+// Types
+import type {
+ IRequestData,
+ IRequestResponse,
+ ErrorHandlingStrategy,
+ RequestHandlerConfig,
+ EndpointConfig,
+ RequestError,
+} from './types/http-request';
+
+/**
+ * Generic Request Handler
+ * It creates an Axios instance and handles requests within that instance
+ * It handles errors depending on a chosen error handling strategy
+ */
+@applyMagic
+export class RequestHandler implements MagicalClass {
+ /**
+ * @var requestInstance Provider's instance
+ */
+ public requestInstance: AxiosInstance;
+
+ /**
+ * @var timeout Request timeout
+ */
+ public timeout: number = 30000;
+
+ /**
+ * @var cancellable Response cancellation
+ */
+ public cancellable: boolean = false;
+
+ /**
+ * @var strategy Request timeout
+ */
+ public strategy: ErrorHandlingStrategy = 'reject';
+
+ /**
+ * @var flattenResponse Response flattening
+ */
+ public flattenResponse: boolean = true;
+
+ /**
+ * @var defaultResponse Response flattening
+ */
+ public defaultResponse: any = null;
+
+ /**
+ * @var axios Axios instance
+ */
+ protected axios: AxiosStatic;
+
+ /**
+ * @var logger Logger
+ */
+ protected logger: any;
+
+ /**
+ * @var requestErrorService HTTP error service
+ */
+ protected requestErrorService: any;
+
+ /**
+ * @var requestsQueue Queue of requests
+ */
+ protected requestsQueue: Map;
+
+ /**
+ * Creates an instance of HttpRequestHandler
+ *
+ * @param {string} config.axios Axios instance
+ * @param {string} config.baseURL Base URL for all API calls
+ * @param {number} config.timeout Request timeout
+ * @param {string} config.strategy Error Handling Strategy
+ * @param {string} config.flattenResponse Whether to flatten response "data" object within "data" one
+ * @param {*} config.logger Instance of Logger Class
+ * @param {*} config.requestErrorService Instance of Error Service Class
+ */
+ public constructor({
+ axios,
+ baseURL = '',
+ timeout = null,
+ cancellable = false,
+ strategy = null,
+ flattenResponse = null,
+ defaultResponse = {},
+ logger = null,
+ onError = null,
+ ...config
+ }: RequestHandlerConfig) {
+ this.axios = axios;
+ this.timeout = timeout !== null ? timeout : this.timeout;
+ this.strategy = strategy !== null ? strategy : this.strategy;
+ this.cancellable = cancellable || this.cancellable;
+ this.flattenResponse =
+ flattenResponse !== null ? flattenResponse : this.flattenResponse;
+ this.defaultResponse = defaultResponse;
+ this.logger = logger || global.console || window.console || null;
+ this.requestErrorService = onError;
+ this.requestsQueue = new Map();
+
+ this.requestInstance = axios.create({
+ ...config,
+ baseURL,
+ timeout: this.timeout,
+ });
+ }
+
+ /**
+ * Get Provider Instance
+ *
+ * @returns {AxiosInstance} Provider's instance
+ */
+ public getInstance(): AxiosInstance {
+ return this.requestInstance;
+ }
+
+ /**
+ * Maps all API requests
+ *
+ * @param {string} url Url
+ * @param {*} data Payload
+ * @param {EndpointConfig} config Config
+ * @throws {RequestError} If request fails
+ * @returns {Promise} Request response or error info
+ */
+ public __get(prop: string) {
+ if (prop in this) {
+ return this[prop];
+ }
+
+ return this.prepareRequest.bind(this, prop);
+ }
+
+ /**
+ * Prepare Request
+ *
+ * @param {string} url Url
+ * @param {*} data Payload
+ * @param {EndpointConfig} config Config
+ * @throws {RequestError} If request fails
+ * @returns {Promise} Request response or error info
+ */
+ public prepareRequest(
+ type: Method,
+ url: string,
+ data: any = null,
+ config: EndpointConfig = null
+ ): Promise {
+ return this.handleRequest({
+ type,
+ url,
+ data,
+ config,
+ });
+ }
+
+ /**
+ * Build request configuration
+ *
+ * @param {string} method Request method
+ * @param {string} url Request url
+ * @param {*} data Request data
+ * @param {EndpointConfig} config Request config
+ * @returns {AxiosInstance} Provider's instance
+ */
+ protected buildRequestConfig(
+ method: string,
+ url: string,
+ data: any,
+ config: EndpointConfig
+ ): EndpointConfig {
+ const methodLowerCase = method.toLowerCase() as Method;
+ const key =
+ methodLowerCase === 'get' || methodLowerCase === 'head'
+ ? 'params'
+ : 'data';
+
+ return {
+ ...config,
+ url,
+ method: methodLowerCase,
+ [key]: data || {},
+ };
+ }
+
+ /**
+ * Process global Request Error
+ *
+ * @param {RequestError} error Error instance
+ * @param {EndpointConfig} requestConfig Per endpoint request config
+ * @returns {AxiosInstance} Provider's instance
+ */
+ protected processRequestError(
+ error: RequestError,
+ requestConfig: EndpointConfig
+ ): void {
+ if (this.isRequestCancelled(error, requestConfig)) {
+ return;
+ }
+
+ // Invoke per request "onError" call
+ if (requestConfig.onError && typeof requestConfig.onError === 'function') {
+ requestConfig.onError(error);
+ }
+
+ const errorHandler = new RequestErrorHandler(
+ this.logger,
+ this.requestErrorService
+ );
+
+ errorHandler.process(error);
+ }
+
+ /**
+ * Output error response depending on chosen strategy
+ *
+ * @param {RequestError} error Error instance
+ * @param {EndpointConfig} requestConfig Per endpoint request config
+ * @returns {AxiosInstance} Provider's instance
+ */
+ protected async outputErrorResponse(
+ error: RequestError,
+ requestConfig: EndpointConfig
+ ): Promise {
+ const isRequestCancelled = this.isRequestCancelled(error, requestConfig);
+ const errorHandlingStrategy = requestConfig.strategy || this.strategy;
+
+ // By default cancelled requests aren't rejected
+ if (isRequestCancelled && !requestConfig.rejectCancelled) {
+ return this.defaultResponse;
+ }
+
+ if (errorHandlingStrategy === 'silent') {
+ // Hang the promise
+ await new Promise(() => null);
+
+ return this.defaultResponse;
+ }
+
+ // Simply rejects a request promise
+ if (
+ errorHandlingStrategy === 'reject' ||
+ errorHandlingStrategy === 'throwError'
+ ) {
+ return Promise.reject(error);
+ }
+
+ return this.defaultResponse;
+ }
+
+ /**
+ * Output error response depending on chosen strategy
+ *
+ * @param {RequestError} error Error instance
+ * @param {EndpointConfig} _requestConfig Per endpoint request config
+ * @returns {*} Error response
+ */
+ public isRequestCancelled(
+ error: RequestError,
+ _requestConfig: EndpointConfig
+ ): boolean {
+ return this.axios.isCancel(error);
+ }
+
+ /**
+ * Automatically Cancel Previous Requests
+ *
+ * @param {EndpointConfig} requestConfig Per endpoint request config
+ * @returns {AxiosInstance} Provider's instance
+ */
+ protected addCancellationToken(requestConfig: EndpointConfig) {
+ // Both disabled
+ if (!this.cancellable && !requestConfig.cancellable) {
+ return {};
+ }
+
+ // Explicitly disabled per request
+ if (
+ typeof requestConfig.cancellable !== 'undefined' &&
+ !requestConfig.cancellable
+ ) {
+ return {};
+ }
+
+ // Check if AbortController is available
+ if (typeof AbortController === 'undefined') {
+ console.error('AbortController is unavailable in your ENV.');
+
+ return {};
+ }
+
+ const { method, baseURL, url, params, data } = requestConfig;
+
+ // Generate unique key as a cancellation token. Make sure it fits Map
+ const key = JSON.stringify([method, baseURL, url, params, data]).substring(
+ 0,
+ 55 ** 5
+ );
+ const previousRequest = this.requestsQueue.get(key);
+
+ if (previousRequest) {
+ previousRequest.abort();
+ }
+
+ const controller = new AbortController();
+
+ this.requestsQueue.set(key, controller);
+
+ return {
+ signal: controller.signal,
+ };
+ }
+
+ /**
+ * Handle Request depending on used strategy
+ *
+ * @param {object} payload Payload
+ * @param {string} payload.type Request type
+ * @param {string} payload.url Request url
+ * @param {*} payload.data Request data
+ * @param {EndpointConfig} payload.config Request config
+ * @throws {RequestError}
+ * @returns {Promise} Response Data
+ */
+ protected async handleRequest({
+ type,
+ url,
+ data = null,
+ config = null,
+ }: IRequestData): Promise {
+ let response = null;
+ const endpointConfig = config || {};
+ let requestConfig = this.buildRequestConfig(
+ type,
+ url,
+ data,
+ endpointConfig
+ );
+
+ requestConfig = {
+ ...this.addCancellationToken(requestConfig),
+ ...requestConfig,
+ };
+
+ try {
+ response = await this.requestInstance.request(requestConfig);
+ } catch (error) {
+ this.processRequestError(error, requestConfig);
+
+ return this.outputErrorResponse(error, requestConfig);
+ }
+
+ return this.processResponseData(response);
+ }
+
+ /**
+ * Process request response
+ *
+ * @param response Response object
+ * @returns {*} Response data
+ */
+ protected processResponseData(response) {
+ if (response.data) {
+ if (!this.flattenResponse) {
+ return response;
+ }
+
+ // Special case of data property within Axios data object
+ // This is in fact a proper response but we may want to flatten it
+ // To ease developers' lives when obtaining the response
+ if (
+ typeof response.data === 'object' &&
+ typeof response.data.data !== 'undefined' &&
+ Object.keys(response.data).length === 1
+ ) {
+ return response.data.data;
+ }
+
+ return response.data;
+ }
+
+ return this.defaultResponse;
+ }
+}
diff --git a/src/tsconfig.json b/src/tsconfig.json
index 2d41855..6a797dd 100644
--- a/src/tsconfig.json
+++ b/src/tsconfig.json
@@ -1,35 +1,27 @@
{
- "compilerOptions": {
- "rootDir": ".",
- "target": "ESNext",
- "module": "esnext",
- "moduleResolution": "node",
- "sourceMap": true,
- "declaration": true,
- "removeComments": true,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "noEmitOnError": false,
- "noEmitHelpers": true,
- "diagnostics": true,
- "skipLibCheck": true,
- "skipDefaultLibCheck": true,
- "pretty": true,
- "allowUnreachableCode": false,
- "allowUnusedLabels": false,
- "noImplicitAny": false,
- "noImplicitReturns": true,
- "noImplicitUseStrict": false,
- "noFallthroughCasesInSwitch": true,
- "lib": [
- "esnext",
- "es2017",
- "dom"
- ]
- },
- "exclude": [
- "demo",
- "scripts",
- "node_modules"
- ]
-}
\ No newline at end of file
+ "compilerOptions": {
+ "rootDir": ".",
+ "target": "ESNext",
+ "module": "esnext",
+ "moduleResolution": "node",
+ "sourceMap": true,
+ "declaration": true,
+ "removeComments": true,
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "noEmitOnError": false,
+ "noEmitHelpers": true,
+ "diagnostics": true,
+ "skipLibCheck": true,
+ "skipDefaultLibCheck": true,
+ "pretty": true,
+ "allowUnreachableCode": false,
+ "allowUnusedLabels": false,
+ "noImplicitAny": false,
+ "noImplicitReturns": true,
+ "noImplicitUseStrict": false,
+ "noFallthroughCasesInSwitch": true,
+ "lib": ["esnext", "es2017", "dom"]
+ },
+ "exclude": ["demo", "scripts", "node_modules"]
+}
diff --git a/src/types/api.ts b/src/types/api.ts
index 706f2a7..7fe6771 100644
--- a/src/types/api.ts
+++ b/src/types/api.ts
@@ -1,12 +1,20 @@
-import { EndpointConfig } from "./http-request";
+import { EndpointConfig } from './http-request';
export declare type APIQueryParams = Record;
export declare type APIUrlParams = Record;
export declare type APIRequestConfig = EndpointConfig;
export declare type APIResponse = any;
-export declare type Endpoint = (queryParams?: T, urlParams?: T2, requestConfig?: EndpointConfig) => Promise;
+export declare type Endpoint<
+ T = APIQueryParams,
+ T2 = APIUrlParams,
+ T3 = APIResponse
+> = (
+ queryParams?: T | null,
+ urlParams?: T2,
+ requestConfig?: EndpointConfig
+) => Promise;
export interface Endpoints {
- [x: string]: Endpoint;
-};
+ [x: string]: Endpoint;
+}
diff --git a/src/types/http-request.ts b/src/types/http-request.ts
index 868979b..cfbeda7 100644
--- a/src/types/http-request.ts
+++ b/src/types/http-request.ts
@@ -1,41 +1,49 @@
-import { AxiosError, AxiosRequestConfig, AxiosResponse } from "axios";
+import type {
+ AxiosStatic,
+ AxiosError,
+ AxiosRequestConfig,
+ AxiosResponse,
+} from 'axios';
export type IRequestResponse = Promise>;
-export type InterceptorCallback = (value: AxiosRequestConfig) => AxiosRequestConfig | Promise;
-
-export type ErrorHandlingStrategy = 'throwError' | 'reject' | 'silent' | 'defaultResponse';
+export type ErrorHandlingStrategy =
+ | 'throwError'
+ | 'reject'
+ | 'silent'
+ | 'defaultResponse';
export type RequestError = AxiosError;
interface ErrorHandlerClass {
- process(error?: RequestError): unknown;
-};
+ process(error?: RequestError): unknown;
+}
type ErrorHandlerFunction = (error: RequestError) => any;
export interface EndpointConfig extends AxiosRequestConfig {
- cancellable?: boolean;
- rejectCancelled?: boolean;
- strategy?: ErrorHandlingStrategy;
- onError?: ErrorHandlerFunction | ErrorHandlerClass;
+ cancellable?: boolean;
+ rejectCancelled?: boolean;
+ strategy?: ErrorHandlingStrategy;
+ onError?: ErrorHandlerFunction | ErrorHandlerClass;
}
export interface RequestHandlerConfig extends EndpointConfig {
- flattenResponse?: boolean;
- defaultResponse?: any;
- logger?: any;
- onError?: ErrorHandlerFunction | ErrorHandlerClass;
+ axios: AxiosStatic;
+ flattenResponse?: boolean;
+ defaultResponse?: any;
+ logger?: any;
+ onError?: ErrorHandlerFunction | ErrorHandlerClass;
}
export interface APIHandlerConfig extends RequestHandlerConfig {
- apiUrl: string;
- endpoints: Record;
+ apiUrl: string;
+ endpoints: Record;
}
export interface IRequestData {
- type: string;
- url: string;
- data?: any;
- config: EndpointConfig;
+ type: string;
+ url: string;
+ data?: any;
+ config: EndpointConfig;
}
diff --git a/src/types/index.ts b/src/types/index.ts
new file mode 100644
index 0000000..581a2cf
--- /dev/null
+++ b/src/types/index.ts
@@ -0,0 +1,2 @@
+export * from './api';
+export * from './http-request';
diff --git a/test/api-handler.spec.ts b/test/api-handler.spec.ts
index b3e8dae..2c514a3 100644
--- a/test/api-handler.spec.ts
+++ b/test/api-handler.spec.ts
@@ -1,84 +1,107 @@
+import axios from 'axios';
import { ApiHandler } from '../src/api-handler';
import { mockErrorCallbackClass } from './http-request-error-handler.spec';
-import { endpoints, IEndpoints } from "./mocks/endpoints";
+import { endpoints, IEndpoints } from './mocks/endpoints';
describe('API Handler', () => {
- const apiUrl = 'http://example.com/api/';
- const config = {
- apiUrl,
- endpoints,
- onError: new mockErrorCallbackClass(),
- };
- const userDataMock = { "name": "Mark", "age": 20 };
-
- console.warn = jest.fn();
-
- afterEach((done) => {
- done();
- });
-
- it('getInstance() - should obtain method of the API request provider', () => {
- const api = new ApiHandler(config);
-
- expect(typeof api.getInstance().request).toBe("function");
- });
-
- describe('__get()', () => {
- it('should trigger request handler for an existent endpoint', async () => {
- const api = new ApiHandler(config);
+ const apiUrl = 'http://example.com/api/';
+ const config = {
+ axios,
+ apiUrl,
+ endpoints,
+ onError: new mockErrorCallbackClass(),
+ };
+ const userDataMock = { name: 'Mark', age: 20 };
- api.handleRequest = jest.fn().mockResolvedValueOnce(userDataMock);
+ console.warn = jest.fn();
- const endpoints = api as unknown as IEndpoints;
- const response = await endpoints.getUserDetails({ userId: 1 });
+ afterEach((done) => {
+ done();
+ });
- expect(api.handleRequest).toHaveBeenCalledTimes(1);
- expect(api.handleRequest).toHaveBeenCalledWith("getUserDetails", { "userId": 1 });
- expect(response).toBe(userDataMock);
- });
+ it('getInstance() - should obtain method of the API request provider', () => {
+ const api = new ApiHandler(config);
- it('should not trigger request handler for non-existent endpoint', async () => {
- const api = new ApiHandler(config);
+ expect(typeof api.getInstance().request).toBe('function');
+ });
- api.handleRequest = jest.fn().mockResolvedValueOnce(userDataMock);
+ describe('__get()', () => {
+ it('should trigger request handler for an existent endpoint', async () => {
+ const api = new ApiHandler(config);
- const response = await api.getUserAddress({ userId: 1 });
+ api.handleRequest = jest.fn().mockResolvedValueOnce(userDataMock);
- expect(api.handleRequest).not.toHaveBeenCalled();
- expect(response).toBeNull();
- });
- })
+ const endpoints = api as unknown as IEndpoints;
+ const response = await endpoints.getUserDetails({ userId: 1 });
- describe('handleRequest()', () => {
- it('should properly replace multiple URL params', async () => {
- const api = new ApiHandler(config);
-
- (api.httpRequestHandler as any).get = jest.fn().mockResolvedValueOnce(userDataMock);
-
- const endpoints = api as unknown as IEndpoints;
- const response = await endpoints.getUserDetailsByIdAndName(null, { id: 1, "name": "Mark" });
+ expect(api.handleRequest).toHaveBeenCalledTimes(1);
+ expect(api.handleRequest).toHaveBeenCalledWith('getUserDetails', {
+ userId: 1,
+ });
+ expect(response).toBe(userDataMock);
+ });
- expect((api.httpRequestHandler as any).get).toHaveBeenCalledTimes(1);
- expect((api.httpRequestHandler as any).get).toHaveBeenCalledWith('/user-details/get/1/Mark', {}, {});
- expect(response).toBe(userDataMock);
- });
+ it('should not trigger request handler for non-existent endpoint', async () => {
+ const api = new ApiHandler(config);
- it('should properly fill Axios compatible config', async () => {
- const api = new ApiHandler(config);
- const headers = {
- headers: {
- 'Content-Type': 'application/json',
- }
- };
+ api.handleRequest = jest.fn().mockResolvedValueOnce(userDataMock);
- (api.httpRequestHandler as any).get = jest.fn().mockResolvedValueOnce(userDataMock);
+ const response = await api.getUserAddress({ userId: 1 });
- const endpoints = api as unknown as IEndpoints;
- const response = await endpoints.getUserDetailsByIdAndName(null, { id: 1, "name": "Mark" }, headers);
+ expect(api.handleRequest).not.toHaveBeenCalled();
+ expect(response).toBeNull();
+ });
+ });
+
+ describe('handleRequest()', () => {
+ it('should properly replace multiple URL params', async () => {
+ const api = new ApiHandler(config);
+
+ (api.requestHandler as any).get = jest
+ .fn()
+ .mockResolvedValueOnce(userDataMock);
+
+ const endpoints = api as unknown as IEndpoints;
+ const response = await endpoints.getUserDetailsByIdAndName(null, {
+ id: 1,
+ name: 'Mark',
+ });
+
+ expect((api.requestHandler as any).get).toHaveBeenCalledTimes(1);
+ expect((api.requestHandler as any).get).toHaveBeenCalledWith(
+ '/user-details/get/1/Mark',
+ {},
+ {}
+ );
+ expect(response).toBe(userDataMock);
+ });
- expect((api.httpRequestHandler as any).get).toHaveBeenCalledTimes(1);
- expect((api.httpRequestHandler as any).get).toHaveBeenCalledWith('/user-details/get/1/Mark', {}, headers);
- expect(response).toBe(userDataMock);
- });
+ it('should properly fill Axios compatible config', async () => {
+ const api = new ApiHandler(config);
+ const headers = {
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ };
+
+ (api.requestHandler as any).get = jest
+ .fn()
+ .mockResolvedValueOnce(userDataMock);
+
+ const endpoints = api as unknown as IEndpoints;
+ const response = await endpoints.getUserDetailsByIdAndName(
+ null,
+ { id: 1, name: 'Mark' },
+ headers
+ );
+
+ expect((api.requestHandler as any).get).toHaveBeenCalledTimes(1);
+ expect((api.requestHandler as any).get).toHaveBeenCalledWith(
+ '/user-details/get/1/Mark',
+ {},
+ headers
+ );
+ expect(response).toBe(userDataMock);
});
+ });
});
diff --git a/test/http-request-error-handler.spec.ts b/test/http-request-error-handler.spec.ts
index 32cb1f5..923dfd1 100644
--- a/test/http-request-error-handler.spec.ts
+++ b/test/http-request-error-handler.spec.ts
@@ -1,32 +1,44 @@
-import { HttpRequestErrorHandler } from '../src/http-request-error-handler';
+import { RequestErrorHandler } from '../src/request-error-handler';
export const mockErrorCallbackClass = class CustomErrorHandler {
- public process() {
- return 'function called';
- }
-}
+ public process() {
+ return 'function called';
+ }
+};
describe('API Handler', () => {
- const mockErrorCallback = () => 'function called';
-
- it('should call provided error callback', () => {
- const httpRequestHandler = new HttpRequestErrorHandler(null, mockErrorCallback);
- httpRequestHandler.httpRequestErrorService = jest.fn().mockResolvedValue(mockErrorCallback);
-
- httpRequestHandler.process('My error text');
-
- expect(httpRequestHandler.httpRequestErrorService).toHaveBeenCalledTimes(1);
- expect(httpRequestHandler.httpRequestErrorService).toHaveBeenCalledWith(new Error('My error text'));
- });
-
- it('should call provided error class', () => {
- const httpRequestHandler = new HttpRequestErrorHandler(null, mockErrorCallbackClass);
- httpRequestHandler.httpRequestErrorService.process = jest.fn().mockResolvedValue(mockErrorCallbackClass);
-
- httpRequestHandler.process('My error text');
-
- expect(httpRequestHandler.httpRequestErrorService.process).toHaveBeenCalledTimes(1);
- expect(httpRequestHandler.httpRequestErrorService.process).toHaveBeenCalledWith(new Error('My error text'));
- });
-
+ const mockErrorCallback = () => 'function called';
+
+ it('should call provided error callback', () => {
+ const httpRequestHandler = new RequestErrorHandler(null, mockErrorCallback);
+ httpRequestHandler.requestErrorService = jest
+ .fn()
+ .mockResolvedValue(mockErrorCallback);
+
+ httpRequestHandler.process('My error text');
+
+ expect(httpRequestHandler.requestErrorService).toHaveBeenCalledTimes(1);
+ expect(httpRequestHandler.requestErrorService).toHaveBeenCalledWith(
+ new Error('My error text')
+ );
+ });
+
+ it('should call provided error class', () => {
+ const httpRequestHandler = new RequestErrorHandler(
+ null,
+ mockErrorCallbackClass
+ );
+ httpRequestHandler.requestErrorService.process = jest
+ .fn()
+ .mockResolvedValue(mockErrorCallbackClass);
+
+ httpRequestHandler.process('My error text');
+
+ expect(
+ httpRequestHandler.requestErrorService.process
+ ).toHaveBeenCalledTimes(1);
+ expect(httpRequestHandler.requestErrorService.process).toHaveBeenCalledWith(
+ new Error('My error text')
+ );
+ });
});
diff --git a/test/http-request-handler.spec.ts b/test/http-request-handler.spec.ts
index f062b69..d4a1b37 100644
--- a/test/http-request-handler.spec.ts
+++ b/test/http-request-handler.spec.ts
@@ -1,265 +1,316 @@
+import axios from 'axios';
import PromiseAny from 'promise-any';
-import { HttpRequestHandler } from '../src/http-request-handler';
+import { RequestHandler } from '../src/request-handler';
describe('API Handler', () => {
- const apiUrl = 'http://example.com/api/';
- const axiosResponseMock = {
- data: {
- 'test': 'data'
- }
- }
-
- console.warn = jest.fn();
-
- afterEach((done) => {
- done();
- });
-
- it('should get request instance', async () => {
- const httpRequestHandler = new HttpRequestHandler({});
-
- const response = await httpRequestHandler.getInstance();
-
- expect(response).toBeTruthy();
+ const apiUrl = 'http://example.com/api/';
+ const axiosResponseMock = {
+ data: {
+ test: 'data',
+ },
+ };
+
+ console.warn = jest.fn();
+
+ afterEach((done) => {
+ done();
+ });
+
+ it('should get request instance', () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
});
- describe('handleRequest()', () => {
- it('should properly hang promise when using Silent strategy', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'silent',
- });
-
- httpRequestHandler.requestInstance.request = jest.fn().mockRejectedValue(new Error('Request Failed'));
-
- let response;
- const request = (httpRequestHandler as any).get(apiUrl);
-
- let timeout = new Promise((resolve) => {
- let wait = setTimeout(() => {
- clearTimeout(wait);
+ const response = httpRequestHandler.getInstance();
- resolve('timeout');
- }, 2000)
- })
+ expect(response).toBeTruthy();
+ });
- expect(typeof request.then).toBe('function');
+ describe('handleRequest()', () => {
+ it('should properly hang promise when using Silent strategy', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'silent',
+ });
- response = await PromiseAny([
- request,
- timeout,
- ]);
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockRejectedValue(new Error('Request Failed'));
- expect(response).toBe("timeout");
- });
-
- it('should reject promise when using rejection strategy', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'reject',
- });
-
- httpRequestHandler.requestInstance.request = jest.fn().mockRejectedValue(new Error('Request Failed'));
+ let response;
+ const request = (httpRequestHandler as any).get(apiUrl);
- let response;
+ let timeout = new Promise((resolve) => {
+ let wait = setTimeout(() => {
+ clearTimeout(wait);
- try {
- response = await (httpRequestHandler as any).delete(apiUrl);
- } catch (error) {
- expect(typeof error).toBe("object");
- }
-
- expect(response).toBe(undefined);
- });
+ resolve('timeout');
+ }, 2000);
+ });
- it('should reject promise when using reject strategy per endpoing', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'silent',
- });
+ expect(typeof request.then).toBe('function');
- httpRequestHandler.requestInstance.request = jest.fn().mockRejectedValue(new Error('Request Failed'));
+ response = await PromiseAny([request, timeout]);
- try {
- await (httpRequestHandler as any).delete(apiUrl, null, {
- strategy: 'throwError',
- });
- } catch (error) {
- expect(typeof error).toBe("object");
- }
- });
+ expect(response).toBe('timeout');
});
- describe('handleCancellation()', () => {
- it('should not set cancel token if cancellation is globally disabled', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'reject',
- cancellable: false,
- });
+ it('should reject promise when using rejection strategy', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'reject',
+ });
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue(axiosResponseMock);
- const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockRejectedValue(new Error('Request Failed'));
- await (httpRequestHandler as any).get(apiUrl);
+ let response;
- expect(spy).toHaveBeenCalledWith(expect.not.objectContaining({
- signal: expect.any(Object),
- }));
- });
+ try {
+ response = await (httpRequestHandler as any).delete(apiUrl);
+ } catch (error) {
+ expect(typeof error).toBe('object');
+ }
- it('should not set cancel token if cancellation is disabled per route', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'reject',
- cancellable: true,
- });
+ expect(response).toBe(undefined);
+ });
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue(axiosResponseMock);
- const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+ it('should reject promise when using reject strategy per endpoing', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'silent',
+ });
- await (httpRequestHandler as any).get(apiUrl, {}, {
- cancellable: false,
- });
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockRejectedValue(new Error('Request Failed'));
- expect(spy).toHaveBeenCalledWith(
- expect.not.objectContaining({
- signal: expect.any(Object),
- })
- );
+ try {
+ await (httpRequestHandler as any).delete(apiUrl, null, {
+ strategy: 'throwError',
});
+ } catch (error) {
+ expect(typeof error).toBe('object');
+ }
+ });
+ });
+
+ describe('handleCancellation()', () => {
+ it('should not set cancel token if cancellation is globally disabled', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'reject',
+ cancellable: false,
+ });
+
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue(axiosResponseMock);
+ const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+
+ await (httpRequestHandler as any).get(apiUrl);
+
+ expect(spy).toHaveBeenCalledWith(
+ expect.not.objectContaining({
+ signal: expect.any(Object),
+ })
+ );
+ });
- it('should set cancel token if cancellation is enabled per route', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'reject',
- cancellable: true,
- });
-
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue(axiosResponseMock);
- const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
-
- await (httpRequestHandler as any).get(apiUrl, {}, {
- cancellable: true,
- });
+ it('should not set cancel token if cancellation is disabled per route', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'reject',
+ cancellable: true,
+ });
+
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue(axiosResponseMock);
+ const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+
+ await (httpRequestHandler as any).get(
+ apiUrl,
+ {},
+ {
+ cancellable: false,
+ }
+ );
- expect(spy).not.toHaveBeenCalledWith({});
- });
+ expect(spy).toHaveBeenCalledWith(
+ expect.not.objectContaining({
+ signal: expect.any(Object),
+ })
+ );
+ });
- it('should set cancel token if cancellation is enabled per route but globally cancellation is disabled', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'reject',
- cancellable: false,
- });
+ it('should set cancel token if cancellation is enabled per route', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'reject',
+ cancellable: true,
+ });
+
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue(axiosResponseMock);
+ const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+
+ await (httpRequestHandler as any).get(
+ apiUrl,
+ {},
+ {
+ cancellable: true,
+ }
+ );
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue(axiosResponseMock);
- const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+ expect(spy).not.toHaveBeenCalledWith({});
+ });
- await (httpRequestHandler as any).get(apiUrl, {}, {
- cancellable: true,
- });
+ it('should set cancel token if cancellation is enabled per route but globally cancellation is disabled', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'reject',
+ cancellable: false,
+ });
+
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue(axiosResponseMock);
+ const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+
+ await (httpRequestHandler as any).get(
+ apiUrl,
+ {},
+ {
+ cancellable: true,
+ }
+ );
- expect(spy).not.toHaveBeenCalledWith({});
- });
+ expect(spy).not.toHaveBeenCalledWith({});
+ });
- it('should set cancel token if cancellation is not enabled per route but globally only', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'reject',
- cancellable: true,
- });
+ it('should set cancel token if cancellation is not enabled per route but globally only', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'reject',
+ cancellable: true,
+ });
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue(axiosResponseMock);
- const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue(axiosResponseMock);
+ const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
- await (httpRequestHandler as any).get(apiUrl);
+ await (httpRequestHandler as any).get(apiUrl);
- expect(spy).not.toHaveBeenCalledWith({});
- });
+ expect(spy).not.toHaveBeenCalledWith({});
+ });
- it('should cancel previous request when successive request is made', async () => {
- let response;
+ it('should cancel previous request when successive request is made', async () => {
+ let response;
- const httpRequestHandler = new HttpRequestHandler({
- strategy: 'silent',
- cancellable: true,
- });
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ strategy: 'silent',
+ cancellable: true,
+ });
- httpRequestHandler.requestInstance.request = jest.fn().mockRejectedValue(new Error('Request Failed'));
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockRejectedValue(new Error('Request Failed'));
- const request = (httpRequestHandler as any).get(apiUrl);
+ const request = (httpRequestHandler as any).get(apiUrl);
- const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue(axiosResponseMock);
+ const spy = jest.spyOn(httpRequestHandler.requestInstance, 'request');
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue(axiosResponseMock);
- const request2 = (httpRequestHandler as any).get(apiUrl);
+ const request2 = (httpRequestHandler as any).get(apiUrl);
- expect(spy).toHaveBeenCalledTimes(1);
- expect(spy).toHaveBeenCalledWith(
- expect.objectContaining({
- signal: expect.any(Object),
- })
- );
+ expect(spy).toHaveBeenCalledTimes(1);
+ expect(spy).toHaveBeenCalledWith(
+ expect.objectContaining({
+ signal: expect.any(Object),
+ })
+ );
- let timeout = new Promise((resolve) => {
- let wait = setTimeout(() => {
- clearTimeout(wait);
+ let timeout = new Promise((resolve) => {
+ let wait = setTimeout(() => {
+ clearTimeout(wait);
- resolve('timeout');
- }, 2000)
- })
+ resolve('timeout');
+ }, 2000);
+ });
- expect(typeof request.then).toBe('function');
+ expect(typeof request.then).toBe('function');
- response = await PromiseAny([
- request,
- request2,
- timeout,
- ]);
+ response = await PromiseAny([request, request2, timeout]);
- expect(response).toStrictEqual({"test": "data"});
- });
+ expect(response).toStrictEqual({ test: 'data' });
});
+ });
- describe('processResponseData()', () => {
- it('should show nested data object if flattening is off', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- flattenResponse: false,
- });
+ describe('processResponseData()', () => {
+ it('should show nested data object if flattening is off', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ flattenResponse: false,
+ });
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue(axiosResponseMock);
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue(axiosResponseMock);
- const response = await (httpRequestHandler as any).put(apiUrl);
+ const response = await (httpRequestHandler as any).put(apiUrl);
- expect(response).toMatchObject(axiosResponseMock);
- });
+ expect(response).toMatchObject(axiosResponseMock);
+ });
- it('should handle nested data if data flattening is on', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- flattenResponse: true,
- });
+ it('should handle nested data if data flattening is on', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ flattenResponse: true,
+ });
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue(axiosResponseMock);
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue(axiosResponseMock);
- const response = await (httpRequestHandler as any).post(apiUrl);
+ const response = await (httpRequestHandler as any).post(apiUrl);
- expect(response).toMatchObject(axiosResponseMock.data);
- });
+ expect(response).toMatchObject(axiosResponseMock.data);
+ });
- it('should handle deeply nested data if data flattening is on', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- flattenResponse: true,
- });
+ it('should handle deeply nested data if data flattening is on', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ flattenResponse: true,
+ });
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue({ data: axiosResponseMock });
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue({ data: axiosResponseMock });
- const response = await (httpRequestHandler as any).patch(apiUrl);
+ const response = await (httpRequestHandler as any).patch(apiUrl);
- expect(response).toMatchObject(axiosResponseMock.data);
- });
+ expect(response).toMatchObject(axiosResponseMock.data);
+ });
- it('should return null if there is no data', async () => {
- const httpRequestHandler = new HttpRequestHandler({
- flattenResponse: true,
- defaultResponse: null,
- });
+ it('should return null if there is no data', async () => {
+ const httpRequestHandler = new RequestHandler({
+ axios,
+ flattenResponse: true,
+ defaultResponse: null,
+ });
- httpRequestHandler.requestInstance.request = jest.fn().mockResolvedValue({});
+ httpRequestHandler.requestInstance.request = jest
+ .fn()
+ .mockResolvedValue({});
- expect(await (httpRequestHandler as any).head(apiUrl)).toBe(null);
- });
+ expect(await (httpRequestHandler as any).head(apiUrl)).toBe(null);
});
+ });
});
diff --git a/test/mocks/endpoints.ts b/test/mocks/endpoints.ts
index dca6693..accf7de 100644
--- a/test/mocks/endpoints.ts
+++ b/test/mocks/endpoints.ts
@@ -1,36 +1,40 @@
import {
- Endpoint,
- APIQueryParams as QueryParams,
- APIUrlParams as UrlParams,
+ Endpoint,
+ APIQueryParams as QueryParams,
+ APIUrlParams as UrlParams,
} from '../../src/types/api';
export const endpoints = {
- getUserDetails: {
- method: 'get',
- url: '/user-details/get',
- },
- getUserDetailsByIdAndName: {
- method: 'get',
- url: '/user-details/get/:id/:name',
- },
- updateUserDetails: {
- method: 'post',
- url: '/user-details/update/:userId',
- },
+ getUserDetails: {
+ method: 'get',
+ url: '/user-details/get',
+ },
+ getUserDetailsByIdAndName: {
+ method: 'get',
+ url: '/user-details/get/:id/:name',
+ },
+ updateUserDetails: {
+ method: 'post',
+ url: '/user-details/update/:userId',
+ },
};
interface CustomURLParams {
- id: number;
- name: string;
+ id: number;
+ name: string;
}
interface CustomResponse {
- name: string;
- age: number;
+ name: string;
+ age: number;
}
export interface IEndpoints {
- getUserDetails: Endpoint;
- updateUserDetails: Endpoint;
- getUserDetailsByIdAndName: Endpoint;
-}
\ No newline at end of file
+ getUserDetails: Endpoint;
+ updateUserDetails: Endpoint;
+ getUserDetailsByIdAndName: Endpoint<
+ QueryParams,
+ CustomURLParams,
+ CustomResponse
+ >;
+}
diff --git a/tsconfig.json b/tsconfig.json
index 1a482ce..20a0e9d 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -22,8 +22,6 @@
"noUnusedParameters": true,
// use Node's module resolution algorithm, instead of the legacy TS one
"moduleResolution": "node",
- // transpile JSX to React.createElement
- "jsx": "react",
// interop between ESM and CJS modules. Recommended by TS
"esModuleInterop": true,
// significant perf increase by skipping checking .d.ts files, particularly those in node_modules. Recommended by TS
@@ -31,6 +29,6 @@
// error out if import and file system have a casing mismatch. Recommended by TS
"forceConsistentCasingInFileNames": true,
// `tsdx build` ignores this option, but it is commonly used when type-checking separately with `tsc`
- "noEmit": true,
+ "noEmit": true
}
}