@orbis-systems/orbis-api-clients 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/aesmidas/index.d.ts +3 -1
  2. package/dist/aesmidas/index.d.ts.map +1 -1
  3. package/dist/aesmidas/index.esm.js +1 -1
  4. package/dist/aesmidas/index.esm.js.map +1 -1
  5. package/dist/aesmidas/index.js +1 -1
  6. package/dist/aesmidas/index.js.map +1 -1
  7. package/dist/bridgewise/index.d.ts +57 -6
  8. package/dist/bridgewise/index.d.ts.map +1 -1
  9. package/dist/bridgewise/index.esm.js +1 -1
  10. package/dist/bridgewise/index.esm.js.map +1 -1
  11. package/dist/bridgewise/index.js +1 -1
  12. package/dist/bridgewise/index.js.map +1 -1
  13. package/dist/index.d.ts +3 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.esm.js +1 -1
  16. package/dist/index.esm.js.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/insight/index.d.ts +3 -1
  20. package/dist/insight/index.d.ts.map +1 -1
  21. package/dist/insight/index.esm.js +1 -1
  22. package/dist/insight/index.esm.js.map +1 -1
  23. package/dist/insight/index.js +1 -1
  24. package/dist/insight/index.js.map +1 -1
  25. package/dist/middleware/index.d.ts +3 -1
  26. package/dist/middleware/index.d.ts.map +1 -1
  27. package/dist/middleware/index.esm.js +1 -1
  28. package/dist/middleware/index.esm.js.map +1 -1
  29. package/dist/middleware/index.js +1 -1
  30. package/dist/middleware/index.js.map +1 -1
  31. package/dist/orbis/index.d.ts +3 -1
  32. package/dist/orbis/index.d.ts.map +1 -1
  33. package/dist/orbis/index.esm.js +1 -1
  34. package/dist/orbis/index.esm.js.map +1 -1
  35. package/dist/orbis/index.js +1 -1
  36. package/dist/orbis/index.js.map +1 -1
  37. package/dist/uma/index.d.ts +3 -1
  38. package/dist/uma/index.d.ts.map +1 -1
  39. package/dist/uma/index.esm.js +1 -1
  40. package/dist/uma/index.esm.js.map +1 -1
  41. package/dist/uma/index.js +1 -1
  42. package/dist/uma/index.js.map +1 -1
  43. package/package.json +157 -157
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AxiosError, AxiosInstance, AxiosRequestConfig, HttpStatusCode } from "axios";
1
+ import { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponseHeaders, HttpStatusCode } from "axios";
2
2
  export enum CaseFormat {
3
3
  Camel = "camel",
4
4
  Snake = "snake",
@@ -46,12 +46,14 @@ export type SuccessClientResponse<Data = unknown, RawData = unknown> = ResponseS
46
46
  success: true;
47
47
  data: Data;
48
48
  rawData: RawData;
49
+ headers: AxiosResponseHeaders;
49
50
  };
50
51
  export type ErrorClientResponse = ResponseStatus & {
51
52
  success: false;
52
53
  data?: any;
53
54
  rawData?: any;
54
55
  error: unknown;
56
+ headers?: AxiosResponseHeaders;
55
57
  };
56
58
  export type ClientResponse<Data = unknown, HandleError extends boolean = boolean, Format extends CaseFormat = CaseFormat.Original> = HandleError extends true ? SuccessClientResponse<TransformData<Data, Format>, Data> | ErrorClientResponse : SuccessClientResponse<TransformData<Data, Format>, Data>;
57
59
  export abstract class BaseClient<HandleError extends boolean = boolean, Format extends CaseFormat = CaseFormat.Original, AuthData = unknown> {
@@ -1 +1 @@
1
- {"mappings":"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","sources":["src/src/utils.ts","src/src/BaseClient.ts","src/src/BaseApi.ts","src/src/JwtClient.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,null,"export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\nexport * from './utils';\n"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../"}
1
+ {"mappings":"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","sources":["src/src/utils.ts","src/src/BaseClient.ts","src/src/BaseApi.ts","src/src/JwtClient.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,null,"export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\nexport * from './utils';\n"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../"}
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import t from"auto-bind";import e,{isAxiosError as a}from"axios";import s from"axios-better-stacktrace";import{isNil as r,merge as o}from"lodash";import{camelCase as n,snakeCase as i}from"change-case/keys";import{Mutex as c,E_CANCELED as u}from"async-mutex";import{consola as f}from"consola";import{isBefore as h,subMinutes as l}from"date-fns";import{jwtDecode as p}from"jwt-decode";function d(t,e,a,s){Object.defineProperty(t,e,{get:a,set:s,enumerable:!0,configurable:!0})}d({},"BaseApi",()=>m);class m{constructor(e){this.apiClient=e,t(this)}getApiClient(){return this.apiClient}}var g,x,C={};d(C,"ContentType",()=>y),d(C,"BaseClient",()=>$);var w={};d(w,"CaseFormat",()=>b),d(w,"toCamelCase",()=>k),d(w,"toSnakeCase",()=>T);var b=((g={}).Camel="camel",g.Snake="snake",g.Original="original",g);let k=t=>n(t,1/0),T=t=>i(t,1/0);var y=((x={}).Json="application/json",x.FormData="multipart/form-data",x.UrlEncoded="application/x-www-form-urlencoded",x.Text="text/plain",x);class ${constructor(a){this.config=a,t(this),this.storage=a.storage??sessionStorage,this.axiosInstance=e.create({...a.axiosConfig,baseURL:a.baseUrl,headers:{"Content-Type":"application/json",...a.axiosConfig?.headers},transformResponse:[...Array.isArray(e.defaults.transformResponse)?e.defaults.transformResponse:e.defaults.transformResponse?[e.defaults.transformResponse]:[]]}),s(this.axiosInstance)}transformData(t){return this.config.caseFormat===b.Camel?k(t):this.config.caseFormat===b.Snake?T(t):t}stringifyFormItem(t){return"object"==typeof t&&null!==t?JSON.stringify(t):`${t}`}createFormData(t){return t instanceof FormData?t:Object.keys(t).reduce((e,a)=>{let s=t[a];for(let t of s instanceof Array?s:[s]){let s=t instanceof Blob||t instanceof File;e.append(a,s?t:this.stringifyFormItem(t))}return e},new FormData)}async request(t){let{contentType:e,data:s}=t;r(s)||("multipart/form-data"===e&&"object"==typeof s&&(t.data=this.createFormData(s)),"text/plain"===e&&"string"!=typeof s&&(t.data=JSON.stringify(s)));let n=o(t.secure??this.config.defaultSecure??!0?await this.prepareAuthRequestConfig():{},e?{headers:{"Content-Type":e}}:{},t);try{let{data:t,status:e,statusText:a}=await this.axiosInstance.request(n);return{success:!0,data:this.transformData(t),rawData:t,status:e,statusText:a}}catch(s){let e={success:!1,status:-1,statusText:String(s),error:s};if(a(s)&&(this.config.onAxiosError?.(s),e.rawData=s.response?.data,e.data=this.transformData(s.response?.data),e.status=s.response?.status??e.status,e.statusText=s.response?.statusText??e.statusText),this.config.onError?.(s),!this.config.handleError&&!t.handleError)throw s;return e}}get(t,e){return this.request({...e,method:"GET",url:t})}delete(t,e){return this.request({...e,method:"DELETE",url:t})}head(t,e){return this.request({...e,method:"HEAD",url:t})}options(t,e){return this.request({...e,method:"OPTIONS",url:t})}post(t,e,a){return this.request({...a,method:"POST",url:t,data:e})}put(t,e,a){return this.request({...a,method:"PUT",url:t,data:e})}patch(t,e,a){return this.request({...a,method:"PATCH",url:t,data:e})}getAxios(){return this.axiosInstance}setAuthData(t){this.storage.setItem(this.config.authDataStorageKey||"auth",JSON.stringify(t))}getAuthData(){let t=this.storage.getItem(this.config.authDataStorageKey||"auth");return t?JSON.parse(t):null}getConfig(){return this.config}}d({},"JwtClient",()=>D);class D extends ${constructor(t){super(t),this.config=t,this.lock=new c}getConfig(){return super.getConfig()}setRenewTokensCallback(t){this.renewTokensCallback=t}async prepareAuthRequestConfig(){if(this.config.axiosConfig?.withCredentials)return{};let{accessToken:t}=this.getAuthData()||{};if(!t)return f.warn("No access token found. Please set auth data after authorization."),{};if(!1!==this.config.autoRenewToken&&this.isTokenExpired(t))try{await this.lock.runExclusive(async()=>{this.config.debug&&f.debug("Access token expired. Renewing…"),t=(await this.renewTokens()).accessToken,this.lock.cancel()})}catch(e){if(e===u)t=this.getAuthData()?.accessToken;else throw e}return{headers:{Authorization:`${this.config.authSchema??"Bearer"} ${t}`}}}isTokenExpired(t){let e=p(t);return!e.exp||h(l(1e3*e.exp,1),Date.now())}async renewTokens(){let t=this.config.onRenewTokens??this.renewTokensCallback;if(!t)throw Error("No renew tokens callback provided");try{let e=await t();return this.setAuthData(e),e}catch(t){throw f.warn("Could not renew tokens",t),t}}}export{m as BaseApi,y as ContentType,$ as BaseClient,D as JwtClient,b as CaseFormat,k as toCamelCase,T as toSnakeCase};
1
+ import e from"auto-bind";import t,{isAxiosError as a}from"axios";import s from"axios-better-stacktrace";import{isNil as r,merge as o}from"lodash";import{camelCase as n,snakeCase as i}from"change-case/keys";import{Mutex as c,E_CANCELED as u}from"async-mutex";import{consola as h}from"consola";import{isBefore as f,subMinutes as l}from"date-fns";import{jwtDecode as d}from"jwt-decode";function p(e,t,a,s){Object.defineProperty(e,t,{get:a,set:s,enumerable:!0,configurable:!0})}p({},"BaseApi",()=>m);class m{constructor(t){this.apiClient=t,e(this)}getApiClient(){return this.apiClient}}var g,x,C={};p(C,"ContentType",()=>y),p(C,"BaseClient",()=>$);var w={};p(w,"CaseFormat",()=>b),p(w,"toCamelCase",()=>k),p(w,"toSnakeCase",()=>T);var b=((g={}).Camel="camel",g.Snake="snake",g.Original="original",g);let k=e=>n(e,1/0),T=e=>i(e,1/0);var y=((x={}).Json="application/json",x.FormData="multipart/form-data",x.UrlEncoded="application/x-www-form-urlencoded",x.Text="text/plain",x);class ${constructor(a){this.config=a,e(this),this.storage=a.storage??sessionStorage,this.axiosInstance=t.create({...a.axiosConfig,baseURL:a.baseUrl,headers:{"Content-Type":"application/json",...a.axiosConfig?.headers},transformResponse:[...Array.isArray(t.defaults.transformResponse)?t.defaults.transformResponse:t.defaults.transformResponse?[t.defaults.transformResponse]:[]]}),s(this.axiosInstance)}transformData(e){return this.config.caseFormat===b.Camel?k(e):this.config.caseFormat===b.Snake?T(e):e}stringifyFormItem(e){return"object"==typeof e&&null!==e?JSON.stringify(e):`${e}`}createFormData(e){return e instanceof FormData?e:Object.keys(e).reduce((t,a)=>{let s=e[a];for(let e of s instanceof Array?s:[s]){let s=e instanceof Blob||e instanceof File;t.append(a,s?e:this.stringifyFormItem(e))}return t},new FormData)}async request(e){let{contentType:t,data:s}=e;r(s)||("multipart/form-data"===t&&"object"==typeof s&&(e.data=this.createFormData(s)),"text/plain"===t&&"string"!=typeof s&&(e.data=JSON.stringify(s)));let n=o(e.secure??this.config.defaultSecure??!0?await this.prepareAuthRequestConfig():{},t?{headers:{"Content-Type":t}}:{},e);try{let{data:e,status:t,statusText:a,headers:s}=await this.axiosInstance.request(n);return{success:!0,data:this.transformData(e),rawData:e,status:t,statusText:a,headers:s}}catch(s){let t={success:!1,status:-1,statusText:String(s),error:s};if(a(s)&&(this.config.onAxiosError?.(s),t.rawData=s.response?.data,t.data=this.transformData(s.response?.data),t.status=s.response?.status??t.status,t.statusText=s.response?.statusText??t.statusText,t.headers=s.response?.headers),this.config.onError?.(s),!this.config.handleError&&!e.handleError)throw s;return t}}get(e,t){return this.request({...t,method:"GET",url:e})}delete(e,t){return this.request({...t,method:"DELETE",url:e})}head(e,t){return this.request({...t,method:"HEAD",url:e})}options(e,t){return this.request({...t,method:"OPTIONS",url:e})}post(e,t,a){return this.request({...a,method:"POST",url:e,data:t})}put(e,t,a){return this.request({...a,method:"PUT",url:e,data:t})}patch(e,t,a){return this.request({...a,method:"PATCH",url:e,data:t})}getAxios(){return this.axiosInstance}setAuthData(e){this.storage.setItem(this.config.authDataStorageKey||"auth",JSON.stringify(e))}getAuthData(){let e=this.storage.getItem(this.config.authDataStorageKey||"auth");return e?JSON.parse(e):null}getConfig(){return this.config}}p({},"JwtClient",()=>D);class D extends ${constructor(e){super(e),this.config=e,this.lock=new c}getConfig(){return super.getConfig()}setRenewTokensCallback(e){this.renewTokensCallback=e}async prepareAuthRequestConfig(){if(this.config.axiosConfig?.withCredentials)return{};let{accessToken:e}=this.getAuthData()||{};if(!e)return h.warn("No access token found. Please set auth data after authorization."),{};if(!1!==this.config.autoRenewToken&&this.isTokenExpired(e))try{await this.lock.runExclusive(async()=>{this.config.debug&&h.debug("Access token expired. Renewing…"),e=(await this.renewTokens()).accessToken,this.lock.cancel()})}catch(t){if(t===u)e=this.getAuthData()?.accessToken;else throw t}return{headers:{Authorization:`${this.config.authSchema??"Bearer"} ${e}`}}}isTokenExpired(e){let t=d(e);return!t.exp||f(l(1e3*t.exp,1),Date.now())}async renewTokens(){let e=this.config.onRenewTokens??this.renewTokensCallback;if(!e)throw Error("No renew tokens callback provided");try{let t=await e();return this.setAuthData(t),t}catch(e){throw h.warn("Could not renew tokens",e),e}}}export{m as BaseApi,y as ContentType,$ as BaseClient,D as JwtClient,b as CaseFormat,k as toCamelCase,T as toSnakeCase};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"mappings":"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","sources":["<anon>","src/index.ts","src/BaseApi.ts","src/BaseClient.ts","src/utils.ts","src/JwtClient.ts"],"sourcesContent":["import $hfdUH$autobind from \"auto-bind\";\nimport $hfdUH$axios, {isAxiosError as $hfdUH$isAxiosError} from \"axios\";\nimport $hfdUH$axiosbetterstacktrace from \"axios-better-stacktrace\";\nimport {isNil as $hfdUH$isNil, merge as $hfdUH$merge} from \"lodash\";\nimport {camelCase as $hfdUH$camelCase, snakeCase as $hfdUH$snakeCase} from \"change-case/keys\";\nimport {Mutex as $hfdUH$Mutex, E_CANCELED as $hfdUH$E_CANCELED} from \"async-mutex\";\nimport {consola as $hfdUH$consola} from \"consola\";\nimport {isBefore as $hfdUH$isBefore, subMinutes as $hfdUH$subMinutes} from \"date-fns\";\nimport {jwtDecode as $hfdUH$jwtDecode} from \"jwt-decode\";\n\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $bc46d0f9a75295f8$exports = {};\n\n$parcel$export($bc46d0f9a75295f8$exports, \"BaseApi\", () => $bc46d0f9a75295f8$export$3ad201792064a82b);\n\nclass $bc46d0f9a75295f8$export$3ad201792064a82b {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n constructor(apiClient){\n this.apiClient = apiClient;\n (0, $hfdUH$autobind)(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n getApiClient() {\n return this.apiClient;\n }\n}\n\n\nvar $7f0ef0073dbac97f$exports = {};\n\n$parcel$export($7f0ef0073dbac97f$exports, \"ContentType\", () => $7f0ef0073dbac97f$export$e2e108cbe2e4f865);\n$parcel$export($7f0ef0073dbac97f$exports, \"BaseClient\", () => $7f0ef0073dbac97f$export$4f22f74eddb7716a);\n\n\n\n\nvar $ecb16c2068e560e3$exports = {};\n\n$parcel$export($ecb16c2068e560e3$exports, \"CaseFormat\", () => $ecb16c2068e560e3$export$6d78a2325ef337dd);\n$parcel$export($ecb16c2068e560e3$exports, \"toCamelCase\", () => $ecb16c2068e560e3$export$86f54f62aa7a7514);\n$parcel$export($ecb16c2068e560e3$exports, \"toSnakeCase\", () => $ecb16c2068e560e3$export$cc8b315fc368b20a);\n\nvar $ecb16c2068e560e3$export$6d78a2325ef337dd = /*#__PURE__*/ function(CaseFormat) {\n CaseFormat[\"Camel\"] = \"camel\";\n CaseFormat[\"Snake\"] = \"snake\";\n CaseFormat[\"Original\"] = \"original\";\n return CaseFormat;\n}({});\nconst $ecb16c2068e560e3$export$86f54f62aa7a7514 = (obj)=>{\n return $hfdUH$camelCase(obj, Infinity);\n};\nconst $ecb16c2068e560e3$export$cc8b315fc368b20a = (obj)=>{\n return $hfdUH$snakeCase(obj, Infinity);\n};\n\n\nvar $7f0ef0073dbac97f$export$e2e108cbe2e4f865 = /*#__PURE__*/ function(ContentType) {\n ContentType[\"Json\"] = \"application/json\";\n ContentType[\"FormData\"] = \"multipart/form-data\";\n ContentType[\"UrlEncoded\"] = \"application/x-www-form-urlencoded\";\n ContentType[\"Text\"] = \"text/plain\";\n return ContentType;\n}({});\nclass $7f0ef0073dbac97f$export$4f22f74eddb7716a {\n constructor(config){\n this.config = config;\n (0, $hfdUH$autobind)(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = (0, $hfdUH$axios).create({\n ...config.axiosConfig,\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.axiosConfig?.headers\n },\n transformResponse: [\n ...Array.isArray((0, $hfdUH$axios).defaults.transformResponse) ? (0, $hfdUH$axios).defaults.transformResponse : (0, $hfdUH$axios).defaults.transformResponse ? [\n (0, $hfdUH$axios).defaults.transformResponse\n ] : []\n ]\n });\n (0, $hfdUH$axiosbetterstacktrace)(this.axiosInstance);\n }\n transformData(data) {\n if (this.config.caseFormat === (0, $ecb16c2068e560e3$export$6d78a2325ef337dd).Camel) return (0, $ecb16c2068e560e3$export$86f54f62aa7a7514)(data);\n if (this.config.caseFormat === (0, $ecb16c2068e560e3$export$6d78a2325ef337dd).Snake) return (0, $ecb16c2068e560e3$export$cc8b315fc368b20a)(data);\n return data;\n }\n stringifyFormItem(formItem) {\n if (typeof formItem === 'object' && formItem !== null) return JSON.stringify(formItem);\n else return `${formItem}`;\n }\n createFormData(input) {\n if (input instanceof FormData) return input;\n return Object.keys(input).reduce((formData, key)=>{\n const property = input[key];\n const propertyContent = property instanceof Array ? property : [\n property\n ];\n for (const formItem of propertyContent){\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n return formData;\n }, new FormData());\n }\n async request(requestConfig) {\n const { contentType: contentType, data: data } = requestConfig;\n if (!(0, $hfdUH$isNil)(data)) {\n if (contentType === \"multipart/form-data\" && typeof data === 'object') requestConfig.data = this.createFormData(data);\n if (contentType === \"text/plain\" && typeof data !== 'string') requestConfig.data = JSON.stringify(data);\n }\n const mergedConfig = (0, $hfdUH$merge)(requestConfig.secure ?? this.config.defaultSecure ?? true ? await this.prepareAuthRequestConfig() : {}, contentType ? {\n headers: {\n 'Content-Type': contentType\n }\n } : {}, requestConfig);\n try {\n const { data: rawData, status: status, statusText: statusText } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: this.transformData(rawData),\n rawData: rawData,\n status: status,\n statusText: statusText\n };\n } catch (error) {\n const result = {\n success: false,\n status: -1,\n statusText: String(error),\n error: error\n };\n if ((0, $hfdUH$isAxiosError)(error)) {\n this.config.onAxiosError?.(error);\n result.rawData = error.response?.data;\n result.data = this.transformData(error.response?.data);\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n }\n this.config.onError?.(error);\n if (!this.config.handleError && !requestConfig.handleError) throw error;\n return result;\n }\n }\n get(url, config) {\n return this.request({\n ...config,\n method: 'GET',\n url: url\n });\n }\n delete(url, config) {\n return this.request({\n ...config,\n method: 'DELETE',\n url: url\n });\n }\n head(url, config) {\n return this.request({\n ...config,\n method: 'HEAD',\n url: url\n });\n }\n options(url, config) {\n return this.request({\n ...config,\n method: 'OPTIONS',\n url: url\n });\n }\n post(url, data, config) {\n return this.request({\n ...config,\n method: 'POST',\n url: url,\n data: data\n });\n }\n put(url, data, config) {\n return this.request({\n ...config,\n method: 'PUT',\n url: url,\n data: data\n });\n }\n patch(url, data, config) {\n return this.request({\n ...config,\n method: 'PATCH',\n url: url,\n data: data\n });\n }\n getAxios() {\n return this.axiosInstance;\n }\n setAuthData(data) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n getAuthData() {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? JSON.parse(data) : null;\n }\n getConfig() {\n return this.config;\n }\n}\n\n\nvar $c53992c281676acd$exports = {};\n\n$parcel$export($c53992c281676acd$exports, \"JwtClient\", () => $c53992c281676acd$export$f280b732bbc5934b);\n\n\n\n\n\nclass $c53992c281676acd$export$f280b732bbc5934b extends (0, $7f0ef0073dbac97f$export$4f22f74eddb7716a) {\n constructor(config){\n super(config), this.config = config, this.lock = new (0, $hfdUH$Mutex)();\n }\n getConfig() {\n return super.getConfig();\n }\n setRenewTokensCallback(renewTokensCallback) {\n this.renewTokensCallback = renewTokensCallback;\n }\n async prepareAuthRequestConfig() {\n if (this.config.axiosConfig?.withCredentials) return {};\n let { accessToken: accessToken } = this.getAuthData() || {};\n if (!accessToken) {\n (0, $hfdUH$consola).warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) try {\n await this.lock.runExclusive(async ()=>{\n if (this.config.debug) (0, $hfdUH$consola).debug(\"Access token expired. Renewing\\u2026\");\n accessToken = (await this.renewTokens()).accessToken;\n this.lock.cancel();\n });\n } catch (error) {\n if (error === (0, $hfdUH$E_CANCELED)) accessToken = this.getAuthData()?.accessToken;\n else throw error;\n }\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`\n }\n };\n }\n isTokenExpired(token) {\n const payload = (0, $hfdUH$jwtDecode)(token);\n if (!payload.exp) return true;\n return (0, $hfdUH$isBefore)((0, $hfdUH$subMinutes)(payload.exp * 1000, 1), Date.now());\n }\n async renewTokens() {\n const callback = this.config.onRenewTokens ?? this.renewTokensCallback;\n if (!callback) throw new Error('No renew tokens callback provided');\n try {\n const authData = await callback();\n this.setAuthData(authData);\n return authData;\n } catch (error) {\n (0, $hfdUH$consola).warn('Could not renew tokens', error);\n throw error;\n }\n }\n}\n\n\n\n\n\nexport {$bc46d0f9a75295f8$export$3ad201792064a82b as BaseApi, $7f0ef0073dbac97f$export$e2e108cbe2e4f865 as ContentType, $7f0ef0073dbac97f$export$4f22f74eddb7716a as BaseClient, $c53992c281676acd$export$f280b732bbc5934b as JwtClient, $ecb16c2068e560e3$export$6d78a2325ef337dd as CaseFormat, $ecb16c2068e560e3$export$86f54f62aa7a7514 as toCamelCase, $ecb16c2068e560e3$export$cc8b315fc368b20a as toSnakeCase};\n//# sourceMappingURL=index.esm.js.map\n","export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\nexport * from './utils';\n","import autoBind from 'auto-bind';\nimport { BaseClient } from './BaseClient';\nimport { CaseFormat } from './utils';\n\nexport abstract class BaseApi<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n ApiClient extends BaseClient<HandleError, Format, unknown> = BaseClient<HandleError, Format>,\n> {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n\n constructor(protected readonly apiClient: ApiClient) {\n autoBind(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n\n getApiClient(): ApiClient {\n return this.apiClient;\n }\n}\n","import autoBind from 'auto-bind';\nimport axios, {\n AxiosError,\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n HttpStatusCode,\n isAxiosError,\n} from 'axios';\nimport axiosBetterStacktrace from 'axios-better-stacktrace';\nimport { isNil, merge } from 'lodash';\nimport { CaseFormat, toCamelCase, toSnakeCase, TransformData } from './utils';\n\nexport interface BaseClientConfig<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n> {\n debug?: boolean;\n baseUrl: string;\n handleError?: HandleError;\n caseFormat?: Format;\n storage?: Storage;\n defaultSecure?: boolean;\n authDataStorageKey?: string;\n axiosConfig?: AxiosRequestConfig;\n onAxiosError?: (error: AxiosError) => void;\n onError?: (error: unknown) => void;\n}\n\nexport enum ContentType {\n Json = 'application/json',\n FormData = 'multipart/form-data',\n UrlEncoded = 'application/x-www-form-urlencoded',\n Text = 'text/plain',\n}\n\nexport type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {\n secure?: boolean;\n contentType?: ContentType;\n handleError?: boolean;\n};\n\nexport type ResponseStatus = {\n status: HttpStatusCode | -1;\n statusText: string;\n};\n\nexport type SuccessClientResponse<Data = unknown, RawData = unknown> = ResponseStatus & {\n success: true;\n data: Data;\n rawData: RawData;\n};\n\nexport type ErrorClientResponse = ResponseStatus & {\n success: false;\n data?: any;\n rawData?: any;\n error: unknown;\n};\n\nexport type ClientResponse<\n Data = unknown,\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n> = HandleError extends true\n ? SuccessClientResponse<TransformData<Data, Format>, Data> | ErrorClientResponse\n : SuccessClientResponse<TransformData<Data, Format>, Data>;\n\nexport abstract class BaseClient<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData = unknown,\n> {\n protected readonly axiosInstance: AxiosInstance;\n protected readonly storage: Storage;\n\n constructor(protected readonly config: BaseClientConfig<HandleError, Format>) {\n autoBind(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = axios.create({\n ...config.axiosConfig,\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.axiosConfig?.headers,\n },\n transformResponse: [\n ...(Array.isArray(axios.defaults.transformResponse)\n ? axios.defaults.transformResponse\n : axios.defaults.transformResponse\n ? [axios.defaults.transformResponse]\n : []),\n ],\n });\n axiosBetterStacktrace(this.axiosInstance);\n }\n\n protected transformData<T>(data: any): TransformData<T, Format> {\n if (this.config.caseFormat === CaseFormat.Camel) {\n return toCamelCase(data);\n }\n if (this.config.caseFormat === CaseFormat.Snake) {\n return toSnakeCase(data);\n }\n return data;\n }\n\n protected stringifyFormItem(formItem: unknown) {\n if (typeof formItem === 'object' && formItem !== null) {\n return JSON.stringify(formItem);\n } else {\n return `${formItem}`;\n }\n }\n\n protected createFormData(input: Record<string, unknown>): FormData {\n if (input instanceof FormData) {\n return input;\n }\n\n return Object.keys(input).reduce((formData, key) => {\n const property = input[key];\n const propertyContent: any[] = property instanceof Array ? property : [property];\n\n for (const formItem of propertyContent) {\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n\n return formData;\n }, new FormData());\n }\n\n async request<Data = unknown, Error = unknown, Body = unknown>(\n requestConfig: RequestConfig<Body>,\n ): Promise<ClientResponse<Data, HandleError, Format>> {\n const { contentType, data } = requestConfig;\n\n if (!isNil(data)) {\n if (contentType === ContentType.FormData && typeof data === 'object') {\n requestConfig.data = this.createFormData(data as Record<string, unknown>) as any;\n }\n\n if (contentType === ContentType.Text && typeof data !== 'string') {\n requestConfig.data = JSON.stringify(data) as any;\n }\n }\n\n const mergedConfig = merge(\n (requestConfig.secure ?? this.config.defaultSecure ?? true) ? await this.prepareAuthRequestConfig() : {},\n contentType ? { headers: { 'Content-Type': contentType } } : {},\n requestConfig,\n );\n\n try {\n const {\n data: rawData,\n status,\n statusText,\n } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(mergedConfig);\n\n return {\n success: true,\n data: this.transformData<Data>(rawData),\n rawData,\n status,\n statusText,\n };\n } catch (error) {\n const result: ErrorClientResponse = {\n success: false,\n status: -1,\n statusText: String(error),\n error,\n };\n\n if (isAxiosError<Error, Data>(error)) {\n this.config.onAxiosError?.(error);\n result.rawData = error.response?.data;\n result.data = this.transformData<Error>(error.response?.data);\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n }\n\n this.config.onError?.(error);\n\n if (!this.config.handleError && !requestConfig.handleError) {\n throw error;\n }\n\n return result as ClientResponse<Data, HandleError, Format>;\n }\n }\n\n get<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'GET',\n url,\n });\n }\n\n delete<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'DELETE',\n url,\n });\n }\n\n head<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'HEAD',\n url,\n });\n }\n\n options<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'OPTIONS',\n url,\n });\n }\n\n post<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'POST',\n url,\n data,\n });\n }\n\n put<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PUT',\n url,\n data,\n });\n }\n\n patch<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PATCH',\n url,\n data,\n });\n }\n\n getAxios(): AxiosInstance {\n return this.axiosInstance;\n }\n\n setAuthData(data: AuthData | null) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n\n getAuthData(): AuthData | null {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? (JSON.parse(data) as AuthData) : null;\n }\n\n getConfig(): BaseClientConfig<HandleError, Format> {\n return this.config;\n }\n\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\n}\n","import * as changeKeys from 'change-case/keys';\n\nexport enum CaseFormat {\n Camel = 'camel',\n Snake = 'snake',\n Original = 'original',\n}\n\nexport type CamelCase<S extends string> = S extends `${infer T}_${infer U}`\n ? `${Lowercase<T>}${Capitalize<CamelCase<U>>}`\n : S extends Uppercase<S>\n ? Lowercase<S>\n : S;\n\nexport type SnakeCase<S extends string> = S extends `${infer T}${infer U}`\n ? T extends Uppercase<T>\n ? T extends Lowercase<T>\n ? `${T}${SnakeCase<U>}`\n : `_${Lowercase<T>}${SnakeCase<U>}`\n : `${T}${SnakeCase<U>}`\n : S;\n\nexport type CamelCaseKeys<T> =\n T extends Array<infer U>\n ? Array<CamelCaseKeys<U>>\n : T extends object\n ? { [K in keyof T as CamelCase<K & string>]: CamelCaseKeys<T[K]> }\n : T;\n\nexport type SnakeCaseKeys<T> =\n T extends Array<infer U>\n ? Array<SnakeCaseKeys<U>>\n : T extends object\n ? { [K in keyof T as SnakeCase<K & string>]: SnakeCaseKeys<T[K]> }\n : T;\n\nexport type TransformData<T, F extends CaseFormat | undefined> = CaseFormat.Original | undefined extends F\n ? T\n : F extends CaseFormat.Camel\n ? CamelCaseKeys<T>\n : F extends CaseFormat.Snake\n ? SnakeCaseKeys<T>\n : T;\n\nexport const toCamelCase = (obj: any): any => {\n return changeKeys.camelCase(obj, Infinity);\n};\n\nexport const toSnakeCase = (obj: any): any => {\n return changeKeys.snakeCase(obj, Infinity);\n};\n","import { E_CANCELED, Mutex } from 'async-mutex';\nimport { consola } from 'consola';\nimport { isBefore, subMinutes } from 'date-fns';\nimport { jwtDecode } from 'jwt-decode';\nimport { BaseClient, BaseClientConfig, RequestConfig } from './BaseClient';\nimport { CaseFormat } from './utils';\n\nexport interface JwtClientConfig<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClientConfig<HandleError, Format> {\n authSchema?: string;\n autoRenewToken?: boolean;\n onRenewTokens?: () => Promise<AuthData>;\n}\n\nexport interface JwtAuthData {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport class JwtClient<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, Format, AuthData> {\n private readonly lock = new Mutex();\n private renewTokensCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError, Format, AuthData>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError, Format, AuthData> {\n return super.getConfig() as JwtClientConfig<HandleError, Format, AuthData>;\n }\n\n setRenewTokensCallback(renewTokensCallback: () => Promise<AuthData>) {\n this.renewTokensCallback = renewTokensCallback;\n }\n\n protected override async prepareAuthRequestConfig(): Promise<\n Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>\n > {\n if (this.config.axiosConfig?.withCredentials) {\n return {};\n }\n\n let { accessToken } = this.getAuthData() || {};\n\n if (!accessToken) {\n consola.warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) {\n try {\n await this.lock.runExclusive(async () => {\n if (this.config.debug) {\n consola.debug('Access token expired. Renewing…');\n }\n accessToken = (await this.renewTokens()).accessToken;\n this.lock.cancel();\n });\n } catch (error) {\n if (error === E_CANCELED) {\n accessToken = this.getAuthData()?.accessToken;\n } else {\n throw error;\n }\n }\n }\n\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`,\n },\n };\n }\n\n private isTokenExpired(token: string): boolean {\n const payload = jwtDecode(token);\n\n if (!payload.exp) {\n return true;\n }\n\n return isBefore(subMinutes(payload.exp * 1000, 1), Date.now());\n }\n\n protected async renewTokens() {\n const callback = this.config.onRenewTokens ?? this.renewTokensCallback;\n\n if (!callback) {\n throw new Error('No renew tokens callback provided');\n }\n\n try {\n const authData = await callback();\n this.setAuthData(authData);\n return authData;\n } catch (error) {\n consola.warn('Could not renew tokens', error);\n throw error;\n }\n }\n}\n"],"names":["$hfdUH$autobind","$hfdUH$axios","$hfdUH$isAxiosError","$hfdUH$axiosbetterstacktrace","$hfdUH$isNil","$hfdUH$merge","$hfdUH$camelCase","$hfdUH$snakeCase","$hfdUH$Mutex","$hfdUH$E_CANCELED","$hfdUH$consola","$hfdUH$isBefore","$hfdUH$subMinutes","$hfdUH$jwtDecode","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$bc46d0f9a75295f8$export$3ad201792064a82b","apiClient","getApiClient","CaseFormat","ContentType","$7f0ef0073dbac97f$exports","$7f0ef0073dbac97f$export$e2e108cbe2e4f865","$7f0ef0073dbac97f$export$4f22f74eddb7716a","$ecb16c2068e560e3$exports","$ecb16c2068e560e3$export$6d78a2325ef337dd","$ecb16c2068e560e3$export$86f54f62aa7a7514","$ecb16c2068e560e3$export$cc8b315fc368b20a","obj","Infinity","config","storage","sessionStorage","axiosInstance","create","axiosConfig","baseURL","baseUrl","headers","transformResponse","Array","isArray","defaults","transformData","data","caseFormat","Camel","Snake","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","keys","reduce","formData","key","property","isFileType","Blob","File","append","request","requestConfig","contentType","mergedConfig","secure","defaultSecure","prepareAuthRequestConfig","rawData","status","statusText","success","error","result","String","onAxiosError","response","onError","handleError","url","method","delete","head","options","post","put","patch","getAxios","setAuthData","setItem","authDataStorageKey","getAuthData","getItem","parse","getConfig","$c53992c281676acd$export$f280b732bbc5934b","lock","setRenewTokensCallback","renewTokensCallback","withCredentials","accessToken","warn","autoRenewToken","isTokenExpired","runExclusive","debug","renewTokens","cancel","Authorization","authSchema","token","payload","exp","Date","now","callback","onRenewTokens","Error","authData","BaseApi","BaseClient","JwtClient","toCamelCase","toSnakeCase"],"version":3,"file":"index.esm.js.map","sourceRoot":"../"}
1
+ {"mappings":"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","sources":["<anon>","src/index.ts","src/BaseApi.ts","src/BaseClient.ts","src/utils.ts","src/JwtClient.ts"],"sourcesContent":["import $hfdUH$autobind from \"auto-bind\";\nimport $hfdUH$axios, {isAxiosError as $hfdUH$isAxiosError} from \"axios\";\nimport $hfdUH$axiosbetterstacktrace from \"axios-better-stacktrace\";\nimport {isNil as $hfdUH$isNil, merge as $hfdUH$merge} from \"lodash\";\nimport {camelCase as $hfdUH$camelCase, snakeCase as $hfdUH$snakeCase} from \"change-case/keys\";\nimport {Mutex as $hfdUH$Mutex, E_CANCELED as $hfdUH$E_CANCELED} from \"async-mutex\";\nimport {consola as $hfdUH$consola} from \"consola\";\nimport {isBefore as $hfdUH$isBefore, subMinutes as $hfdUH$subMinutes} from \"date-fns\";\nimport {jwtDecode as $hfdUH$jwtDecode} from \"jwt-decode\";\n\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $bc46d0f9a75295f8$exports = {};\n\n$parcel$export($bc46d0f9a75295f8$exports, \"BaseApi\", () => $bc46d0f9a75295f8$export$3ad201792064a82b);\n\nclass $bc46d0f9a75295f8$export$3ad201792064a82b {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n constructor(apiClient){\n this.apiClient = apiClient;\n (0, $hfdUH$autobind)(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n getApiClient() {\n return this.apiClient;\n }\n}\n\n\nvar $7f0ef0073dbac97f$exports = {};\n\n$parcel$export($7f0ef0073dbac97f$exports, \"ContentType\", () => $7f0ef0073dbac97f$export$e2e108cbe2e4f865);\n$parcel$export($7f0ef0073dbac97f$exports, \"BaseClient\", () => $7f0ef0073dbac97f$export$4f22f74eddb7716a);\n\n\n\n\nvar $ecb16c2068e560e3$exports = {};\n\n$parcel$export($ecb16c2068e560e3$exports, \"CaseFormat\", () => $ecb16c2068e560e3$export$6d78a2325ef337dd);\n$parcel$export($ecb16c2068e560e3$exports, \"toCamelCase\", () => $ecb16c2068e560e3$export$86f54f62aa7a7514);\n$parcel$export($ecb16c2068e560e3$exports, \"toSnakeCase\", () => $ecb16c2068e560e3$export$cc8b315fc368b20a);\n\nvar $ecb16c2068e560e3$export$6d78a2325ef337dd = /*#__PURE__*/ function(CaseFormat) {\n CaseFormat[\"Camel\"] = \"camel\";\n CaseFormat[\"Snake\"] = \"snake\";\n CaseFormat[\"Original\"] = \"original\";\n return CaseFormat;\n}({});\nconst $ecb16c2068e560e3$export$86f54f62aa7a7514 = (obj)=>{\n return $hfdUH$camelCase(obj, Infinity);\n};\nconst $ecb16c2068e560e3$export$cc8b315fc368b20a = (obj)=>{\n return $hfdUH$snakeCase(obj, Infinity);\n};\n\n\nvar $7f0ef0073dbac97f$export$e2e108cbe2e4f865 = /*#__PURE__*/ function(ContentType) {\n ContentType[\"Json\"] = \"application/json\";\n ContentType[\"FormData\"] = \"multipart/form-data\";\n ContentType[\"UrlEncoded\"] = \"application/x-www-form-urlencoded\";\n ContentType[\"Text\"] = \"text/plain\";\n return ContentType;\n}({});\nclass $7f0ef0073dbac97f$export$4f22f74eddb7716a {\n constructor(config){\n this.config = config;\n (0, $hfdUH$autobind)(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = (0, $hfdUH$axios).create({\n ...config.axiosConfig,\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.axiosConfig?.headers\n },\n transformResponse: [\n ...Array.isArray((0, $hfdUH$axios).defaults.transformResponse) ? (0, $hfdUH$axios).defaults.transformResponse : (0, $hfdUH$axios).defaults.transformResponse ? [\n (0, $hfdUH$axios).defaults.transformResponse\n ] : []\n ]\n });\n (0, $hfdUH$axiosbetterstacktrace)(this.axiosInstance);\n }\n transformData(data) {\n if (this.config.caseFormat === (0, $ecb16c2068e560e3$export$6d78a2325ef337dd).Camel) return (0, $ecb16c2068e560e3$export$86f54f62aa7a7514)(data);\n if (this.config.caseFormat === (0, $ecb16c2068e560e3$export$6d78a2325ef337dd).Snake) return (0, $ecb16c2068e560e3$export$cc8b315fc368b20a)(data);\n return data;\n }\n stringifyFormItem(formItem) {\n if (typeof formItem === 'object' && formItem !== null) return JSON.stringify(formItem);\n else return `${formItem}`;\n }\n createFormData(input) {\n if (input instanceof FormData) return input;\n return Object.keys(input).reduce((formData, key)=>{\n const property = input[key];\n const propertyContent = property instanceof Array ? property : [\n property\n ];\n for (const formItem of propertyContent){\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n return formData;\n }, new FormData());\n }\n async request(requestConfig) {\n const { contentType: contentType, data: data } = requestConfig;\n if (!(0, $hfdUH$isNil)(data)) {\n if (contentType === \"multipart/form-data\" && typeof data === 'object') requestConfig.data = this.createFormData(data);\n if (contentType === \"text/plain\" && typeof data !== 'string') requestConfig.data = JSON.stringify(data);\n }\n const mergedConfig = (0, $hfdUH$merge)(requestConfig.secure ?? this.config.defaultSecure ?? true ? await this.prepareAuthRequestConfig() : {}, contentType ? {\n headers: {\n 'Content-Type': contentType\n }\n } : {}, requestConfig);\n try {\n const { data: rawData, status: status, statusText: statusText, headers: headers } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: this.transformData(rawData),\n rawData: rawData,\n status: status,\n statusText: statusText,\n headers: headers\n };\n } catch (error) {\n const result = {\n success: false,\n status: -1,\n statusText: String(error),\n error: error\n };\n if ((0, $hfdUH$isAxiosError)(error)) {\n this.config.onAxiosError?.(error);\n result.rawData = error.response?.data;\n result.data = this.transformData(error.response?.data);\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n result.headers = error.response?.headers;\n }\n this.config.onError?.(error);\n if (!this.config.handleError && !requestConfig.handleError) throw error;\n return result;\n }\n }\n get(url, config) {\n return this.request({\n ...config,\n method: 'GET',\n url: url\n });\n }\n delete(url, config) {\n return this.request({\n ...config,\n method: 'DELETE',\n url: url\n });\n }\n head(url, config) {\n return this.request({\n ...config,\n method: 'HEAD',\n url: url\n });\n }\n options(url, config) {\n return this.request({\n ...config,\n method: 'OPTIONS',\n url: url\n });\n }\n post(url, data, config) {\n return this.request({\n ...config,\n method: 'POST',\n url: url,\n data: data\n });\n }\n put(url, data, config) {\n return this.request({\n ...config,\n method: 'PUT',\n url: url,\n data: data\n });\n }\n patch(url, data, config) {\n return this.request({\n ...config,\n method: 'PATCH',\n url: url,\n data: data\n });\n }\n getAxios() {\n return this.axiosInstance;\n }\n setAuthData(data) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n getAuthData() {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? JSON.parse(data) : null;\n }\n getConfig() {\n return this.config;\n }\n}\n\n\nvar $c53992c281676acd$exports = {};\n\n$parcel$export($c53992c281676acd$exports, \"JwtClient\", () => $c53992c281676acd$export$f280b732bbc5934b);\n\n\n\n\n\nclass $c53992c281676acd$export$f280b732bbc5934b extends (0, $7f0ef0073dbac97f$export$4f22f74eddb7716a) {\n constructor(config){\n super(config), this.config = config, this.lock = new (0, $hfdUH$Mutex)();\n }\n getConfig() {\n return super.getConfig();\n }\n setRenewTokensCallback(renewTokensCallback) {\n this.renewTokensCallback = renewTokensCallback;\n }\n async prepareAuthRequestConfig() {\n if (this.config.axiosConfig?.withCredentials) return {};\n let { accessToken: accessToken } = this.getAuthData() || {};\n if (!accessToken) {\n (0, $hfdUH$consola).warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) try {\n await this.lock.runExclusive(async ()=>{\n if (this.config.debug) (0, $hfdUH$consola).debug(\"Access token expired. Renewing\\u2026\");\n accessToken = (await this.renewTokens()).accessToken;\n this.lock.cancel();\n });\n } catch (error) {\n if (error === (0, $hfdUH$E_CANCELED)) accessToken = this.getAuthData()?.accessToken;\n else throw error;\n }\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`\n }\n };\n }\n isTokenExpired(token) {\n const payload = (0, $hfdUH$jwtDecode)(token);\n if (!payload.exp) return true;\n return (0, $hfdUH$isBefore)((0, $hfdUH$subMinutes)(payload.exp * 1000, 1), Date.now());\n }\n async renewTokens() {\n const callback = this.config.onRenewTokens ?? this.renewTokensCallback;\n if (!callback) throw new Error('No renew tokens callback provided');\n try {\n const authData = await callback();\n this.setAuthData(authData);\n return authData;\n } catch (error) {\n (0, $hfdUH$consola).warn('Could not renew tokens', error);\n throw error;\n }\n }\n}\n\n\n\n\n\nexport {$bc46d0f9a75295f8$export$3ad201792064a82b as BaseApi, $7f0ef0073dbac97f$export$e2e108cbe2e4f865 as ContentType, $7f0ef0073dbac97f$export$4f22f74eddb7716a as BaseClient, $c53992c281676acd$export$f280b732bbc5934b as JwtClient, $ecb16c2068e560e3$export$6d78a2325ef337dd as CaseFormat, $ecb16c2068e560e3$export$86f54f62aa7a7514 as toCamelCase, $ecb16c2068e560e3$export$cc8b315fc368b20a as toSnakeCase};\n//# sourceMappingURL=index.esm.js.map\n","export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\nexport * from './utils';\n","import autoBind from 'auto-bind';\nimport { BaseClient } from './BaseClient';\nimport { CaseFormat } from './utils';\n\nexport abstract class BaseApi<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n ApiClient extends BaseClient<HandleError, Format, unknown> = BaseClient<HandleError, Format>,\n> {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n\n constructor(protected readonly apiClient: ApiClient) {\n autoBind(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n\n getApiClient(): ApiClient {\n return this.apiClient;\n }\n}\n","import autoBind from 'auto-bind';\nimport axios, {\n AxiosError,\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n AxiosResponseHeaders,\n HttpStatusCode,\n isAxiosError,\n} from 'axios';\nimport axiosBetterStacktrace from 'axios-better-stacktrace';\nimport { isNil, merge } from 'lodash';\nimport { CaseFormat, toCamelCase, toSnakeCase, TransformData } from './utils';\n\nexport interface BaseClientConfig<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n> {\n debug?: boolean;\n baseUrl: string;\n handleError?: HandleError;\n caseFormat?: Format;\n storage?: Storage;\n defaultSecure?: boolean;\n authDataStorageKey?: string;\n axiosConfig?: AxiosRequestConfig;\n onAxiosError?: (error: AxiosError) => void;\n onError?: (error: unknown) => void;\n}\n\nexport enum ContentType {\n Json = 'application/json',\n FormData = 'multipart/form-data',\n UrlEncoded = 'application/x-www-form-urlencoded',\n Text = 'text/plain',\n}\n\nexport type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {\n secure?: boolean;\n contentType?: ContentType;\n handleError?: boolean;\n};\n\nexport type ResponseStatus = {\n status: HttpStatusCode | -1;\n statusText: string;\n};\n\nexport type SuccessClientResponse<Data = unknown, RawData = unknown> = ResponseStatus & {\n success: true;\n data: Data;\n rawData: RawData;\n headers: AxiosResponseHeaders;\n};\n\nexport type ErrorClientResponse = ResponseStatus & {\n success: false;\n data?: any;\n rawData?: any;\n error: unknown;\n headers?: AxiosResponseHeaders;\n};\n\nexport type ClientResponse<\n Data = unknown,\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n> = HandleError extends true\n ? SuccessClientResponse<TransformData<Data, Format>, Data> | ErrorClientResponse\n : SuccessClientResponse<TransformData<Data, Format>, Data>;\n\nexport abstract class BaseClient<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData = unknown,\n> {\n protected readonly axiosInstance: AxiosInstance;\n protected readonly storage: Storage;\n\n constructor(protected readonly config: BaseClientConfig<HandleError, Format>) {\n autoBind(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = axios.create({\n ...config.axiosConfig,\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.axiosConfig?.headers,\n },\n transformResponse: [\n ...(Array.isArray(axios.defaults.transformResponse)\n ? axios.defaults.transformResponse\n : axios.defaults.transformResponse\n ? [axios.defaults.transformResponse]\n : []),\n ],\n });\n axiosBetterStacktrace(this.axiosInstance);\n }\n\n protected transformData<T>(data: any): TransformData<T, Format> {\n if (this.config.caseFormat === CaseFormat.Camel) {\n return toCamelCase(data);\n }\n if (this.config.caseFormat === CaseFormat.Snake) {\n return toSnakeCase(data);\n }\n return data;\n }\n\n protected stringifyFormItem(formItem: unknown) {\n if (typeof formItem === 'object' && formItem !== null) {\n return JSON.stringify(formItem);\n } else {\n return `${formItem}`;\n }\n }\n\n protected createFormData(input: Record<string, unknown>): FormData {\n if (input instanceof FormData) {\n return input;\n }\n\n return Object.keys(input).reduce((formData, key) => {\n const property = input[key];\n const propertyContent: any[] = property instanceof Array ? property : [property];\n\n for (const formItem of propertyContent) {\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n\n return formData;\n }, new FormData());\n }\n\n async request<Data = unknown, Error = unknown, Body = unknown>(\n requestConfig: RequestConfig<Body>,\n ): Promise<ClientResponse<Data, HandleError, Format>> {\n const { contentType, data } = requestConfig;\n\n if (!isNil(data)) {\n if (contentType === ContentType.FormData && typeof data === 'object') {\n requestConfig.data = this.createFormData(data as Record<string, unknown>) as any;\n }\n\n if (contentType === ContentType.Text && typeof data !== 'string') {\n requestConfig.data = JSON.stringify(data) as any;\n }\n }\n\n const mergedConfig = merge(\n (requestConfig.secure ?? this.config.defaultSecure ?? true) ? await this.prepareAuthRequestConfig() : {},\n contentType ? { headers: { 'Content-Type': contentType } } : {},\n requestConfig,\n );\n\n try {\n const {\n data: rawData,\n status,\n statusText,\n headers,\n } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(mergedConfig);\n\n return {\n success: true,\n data: this.transformData<Data>(rawData),\n rawData,\n status,\n statusText,\n headers: headers as AxiosResponseHeaders,\n };\n } catch (error) {\n const result: ErrorClientResponse = {\n success: false,\n status: -1,\n statusText: String(error),\n error,\n };\n\n if (isAxiosError<Error, Data>(error)) {\n this.config.onAxiosError?.(error);\n result.rawData = error.response?.data;\n result.data = this.transformData<Error>(error.response?.data);\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n result.headers = error.response?.headers as AxiosResponseHeaders;\n }\n\n this.config.onError?.(error);\n\n if (!this.config.handleError && !requestConfig.handleError) {\n throw error;\n }\n\n return result as ClientResponse<Data, HandleError, Format>;\n }\n }\n\n get<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'GET',\n url,\n });\n }\n\n delete<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'DELETE',\n url,\n });\n }\n\n head<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'HEAD',\n url,\n });\n }\n\n options<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'OPTIONS',\n url,\n });\n }\n\n post<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'POST',\n url,\n data,\n });\n }\n\n put<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PUT',\n url,\n data,\n });\n }\n\n patch<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PATCH',\n url,\n data,\n });\n }\n\n getAxios(): AxiosInstance {\n return this.axiosInstance;\n }\n\n setAuthData(data: AuthData | null) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n\n getAuthData(): AuthData | null {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? (JSON.parse(data) as AuthData) : null;\n }\n\n getConfig(): BaseClientConfig<HandleError, Format> {\n return this.config;\n }\n\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\n}\n","import * as changeKeys from 'change-case/keys';\n\nexport enum CaseFormat {\n Camel = 'camel',\n Snake = 'snake',\n Original = 'original',\n}\n\nexport type CamelCase<S extends string> = S extends `${infer T}_${infer U}`\n ? `${Lowercase<T>}${Capitalize<CamelCase<U>>}`\n : S extends Uppercase<S>\n ? Lowercase<S>\n : S;\n\nexport type SnakeCase<S extends string> = S extends `${infer T}${infer U}`\n ? T extends Uppercase<T>\n ? T extends Lowercase<T>\n ? `${T}${SnakeCase<U>}`\n : `_${Lowercase<T>}${SnakeCase<U>}`\n : `${T}${SnakeCase<U>}`\n : S;\n\nexport type CamelCaseKeys<T> =\n T extends Array<infer U>\n ? Array<CamelCaseKeys<U>>\n : T extends object\n ? { [K in keyof T as CamelCase<K & string>]: CamelCaseKeys<T[K]> }\n : T;\n\nexport type SnakeCaseKeys<T> =\n T extends Array<infer U>\n ? Array<SnakeCaseKeys<U>>\n : T extends object\n ? { [K in keyof T as SnakeCase<K & string>]: SnakeCaseKeys<T[K]> }\n : T;\n\nexport type TransformData<T, F extends CaseFormat | undefined> = CaseFormat.Original | undefined extends F\n ? T\n : F extends CaseFormat.Camel\n ? CamelCaseKeys<T>\n : F extends CaseFormat.Snake\n ? SnakeCaseKeys<T>\n : T;\n\nexport const toCamelCase = (obj: any): any => {\n return changeKeys.camelCase(obj, Infinity);\n};\n\nexport const toSnakeCase = (obj: any): any => {\n return changeKeys.snakeCase(obj, Infinity);\n};\n","import { E_CANCELED, Mutex } from 'async-mutex';\nimport { consola } from 'consola';\nimport { isBefore, subMinutes } from 'date-fns';\nimport { jwtDecode } from 'jwt-decode';\nimport { BaseClient, BaseClientConfig, RequestConfig } from './BaseClient';\nimport { CaseFormat } from './utils';\n\nexport interface JwtClientConfig<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClientConfig<HandleError, Format> {\n authSchema?: string;\n autoRenewToken?: boolean;\n onRenewTokens?: () => Promise<AuthData>;\n}\n\nexport interface JwtAuthData {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport class JwtClient<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, Format, AuthData> {\n private readonly lock = new Mutex();\n private renewTokensCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError, Format, AuthData>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError, Format, AuthData> {\n return super.getConfig() as JwtClientConfig<HandleError, Format, AuthData>;\n }\n\n setRenewTokensCallback(renewTokensCallback: () => Promise<AuthData>) {\n this.renewTokensCallback = renewTokensCallback;\n }\n\n protected override async prepareAuthRequestConfig(): Promise<\n Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>\n > {\n if (this.config.axiosConfig?.withCredentials) {\n return {};\n }\n\n let { accessToken } = this.getAuthData() || {};\n\n if (!accessToken) {\n consola.warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) {\n try {\n await this.lock.runExclusive(async () => {\n if (this.config.debug) {\n consola.debug('Access token expired. Renewing…');\n }\n accessToken = (await this.renewTokens()).accessToken;\n this.lock.cancel();\n });\n } catch (error) {\n if (error === E_CANCELED) {\n accessToken = this.getAuthData()?.accessToken;\n } else {\n throw error;\n }\n }\n }\n\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`,\n },\n };\n }\n\n private isTokenExpired(token: string): boolean {\n const payload = jwtDecode(token);\n\n if (!payload.exp) {\n return true;\n }\n\n return isBefore(subMinutes(payload.exp * 1000, 1), Date.now());\n }\n\n protected async renewTokens() {\n const callback = this.config.onRenewTokens ?? this.renewTokensCallback;\n\n if (!callback) {\n throw new Error('No renew tokens callback provided');\n }\n\n try {\n const authData = await callback();\n this.setAuthData(authData);\n return authData;\n } catch (error) {\n consola.warn('Could not renew tokens', error);\n throw error;\n }\n }\n}\n"],"names":["$hfdUH$autobind","$hfdUH$axios","$hfdUH$isAxiosError","$hfdUH$axiosbetterstacktrace","$hfdUH$isNil","$hfdUH$merge","$hfdUH$camelCase","$hfdUH$snakeCase","$hfdUH$Mutex","$hfdUH$E_CANCELED","$hfdUH$consola","$hfdUH$isBefore","$hfdUH$subMinutes","$hfdUH$jwtDecode","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$bc46d0f9a75295f8$export$3ad201792064a82b","apiClient","getApiClient","CaseFormat","ContentType","$7f0ef0073dbac97f$exports","$7f0ef0073dbac97f$export$e2e108cbe2e4f865","$7f0ef0073dbac97f$export$4f22f74eddb7716a","$ecb16c2068e560e3$exports","$ecb16c2068e560e3$export$6d78a2325ef337dd","$ecb16c2068e560e3$export$86f54f62aa7a7514","$ecb16c2068e560e3$export$cc8b315fc368b20a","obj","Infinity","config","storage","sessionStorage","axiosInstance","create","axiosConfig","baseURL","baseUrl","headers","transformResponse","Array","isArray","defaults","transformData","data","caseFormat","Camel","Snake","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","keys","reduce","formData","key","property","isFileType","Blob","File","append","request","requestConfig","contentType","mergedConfig","secure","defaultSecure","prepareAuthRequestConfig","rawData","status","statusText","success","error","result","String","onAxiosError","response","onError","handleError","url","method","delete","head","options","post","put","patch","getAxios","setAuthData","setItem","authDataStorageKey","getAuthData","getItem","parse","getConfig","$c53992c281676acd$export$f280b732bbc5934b","lock","setRenewTokensCallback","renewTokensCallback","withCredentials","accessToken","warn","autoRenewToken","isTokenExpired","runExclusive","debug","renewTokens","cancel","Authorization","authSchema","token","payload","exp","Date","now","callback","onRenewTokens","Error","authData","BaseApi","BaseClient","JwtClient","toCamelCase","toSnakeCase"],"version":3,"file":"index.esm.js.map","sourceRoot":"../"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var $5Sh66$autobind=require("auto-bind"),$5Sh66$axios=require("axios"),$5Sh66$axiosbetterstacktrace=require("axios-better-stacktrace"),$5Sh66$lodash=require("lodash"),$5Sh66$changecasekeys=require("change-case/keys"),$5Sh66$asyncmutex=require("async-mutex"),$5Sh66$consola=require("consola"),$5Sh66$datefns=require("date-fns"),$5Sh66$jwtdecode=require("jwt-decode");function $parcel$exportWildcard(e,t){return Object.keys(t).forEach(function(a){"default"===a||"__esModule"===a||Object.prototype.hasOwnProperty.call(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[a]}})}),e}function $parcel$interopDefault(e){return e&&e.__esModule?e.default:e}function $parcel$export(e,t,a,r){Object.defineProperty(e,t,{get:a,set:r,enumerable:!0,configurable:!0})}var $d6fbd40018854b1b$exports={};$parcel$export($d6fbd40018854b1b$exports,"BaseApi",()=>$d6fbd40018854b1b$export$3ad201792064a82b);class $d6fbd40018854b1b$export$3ad201792064a82b{constructor(e){this.apiClient=e,$parcel$interopDefault($5Sh66$autobind)(this)}getApiClient(){return this.apiClient}}var $e147b9ba9f5381c6$exports={};$parcel$export($e147b9ba9f5381c6$exports,"ContentType",()=>$e147b9ba9f5381c6$export$e2e108cbe2e4f865),$parcel$export($e147b9ba9f5381c6$exports,"BaseClient",()=>$e147b9ba9f5381c6$export$4f22f74eddb7716a);var $9d1cc81eab16d180$exports={};$parcel$export($9d1cc81eab16d180$exports,"CaseFormat",()=>$9d1cc81eab16d180$export$6d78a2325ef337dd),$parcel$export($9d1cc81eab16d180$exports,"toCamelCase",()=>$9d1cc81eab16d180$export$86f54f62aa7a7514),$parcel$export($9d1cc81eab16d180$exports,"toSnakeCase",()=>$9d1cc81eab16d180$export$cc8b315fc368b20a);var $9d1cc81eab16d180$export$6d78a2325ef337dd=function(e){return e.Camel="camel",e.Snake="snake",e.Original="original",e}({});const $9d1cc81eab16d180$export$86f54f62aa7a7514=e=>$5Sh66$changecasekeys.camelCase(e,1/0),$9d1cc81eab16d180$export$cc8b315fc368b20a=e=>$5Sh66$changecasekeys.snakeCase(e,1/0);var $e147b9ba9f5381c6$export$e2e108cbe2e4f865=function(e){return e.Json="application/json",e.FormData="multipart/form-data",e.UrlEncoded="application/x-www-form-urlencoded",e.Text="text/plain",e}({});class $e147b9ba9f5381c6$export$4f22f74eddb7716a{constructor(e){this.config=e,$parcel$interopDefault($5Sh66$autobind)(this),this.storage=e.storage??sessionStorage,this.axiosInstance=$parcel$interopDefault($5Sh66$axios).create({...e.axiosConfig,baseURL:e.baseUrl,headers:{"Content-Type":"application/json",...e.axiosConfig?.headers},transformResponse:[...Array.isArray($parcel$interopDefault($5Sh66$axios).defaults.transformResponse)?$parcel$interopDefault($5Sh66$axios).defaults.transformResponse:$parcel$interopDefault($5Sh66$axios).defaults.transformResponse?[$parcel$interopDefault($5Sh66$axios).defaults.transformResponse]:[]]}),$parcel$interopDefault($5Sh66$axiosbetterstacktrace)(this.axiosInstance)}transformData(e){return this.config.caseFormat===$9d1cc81eab16d180$export$6d78a2325ef337dd.Camel?$9d1cc81eab16d180$export$86f54f62aa7a7514(e):this.config.caseFormat===$9d1cc81eab16d180$export$6d78a2325ef337dd.Snake?$9d1cc81eab16d180$export$cc8b315fc368b20a(e):e}stringifyFormItem(e){return"object"==typeof e&&null!==e?JSON.stringify(e):`${e}`}createFormData(e){return e instanceof FormData?e:Object.keys(e).reduce((t,a)=>{let r=e[a];for(let e of r instanceof Array?r:[r]){let r=e instanceof Blob||e instanceof File;t.append(a,r?e:this.stringifyFormItem(e))}return t},new FormData)}async request(e){let{contentType:t,data:a}=e;(0,$5Sh66$lodash.isNil)(a)||("multipart/form-data"===t&&"object"==typeof a&&(e.data=this.createFormData(a)),"text/plain"===t&&"string"!=typeof a&&(e.data=JSON.stringify(a)));let r=(0,$5Sh66$lodash.merge)(e.secure??this.config.defaultSecure??!0?await this.prepareAuthRequestConfig():{},t?{headers:{"Content-Type":t}}:{},e);try{let{data:e,status:t,statusText:a}=await this.axiosInstance.request(r);return{success:!0,data:this.transformData(e),rawData:e,status:t,statusText:a}}catch(a){let t={success:!1,status:-1,statusText:String(a),error:a};if((0,$5Sh66$axios.isAxiosError)(a)&&(this.config.onAxiosError?.(a),t.rawData=a.response?.data,t.data=this.transformData(a.response?.data),t.status=a.response?.status??t.status,t.statusText=a.response?.statusText??t.statusText),this.config.onError?.(a),!this.config.handleError&&!e.handleError)throw a;return t}}get(e,t){return this.request({...t,method:"GET",url:e})}delete(e,t){return this.request({...t,method:"DELETE",url:e})}head(e,t){return this.request({...t,method:"HEAD",url:e})}options(e,t){return this.request({...t,method:"OPTIONS",url:e})}post(e,t,a){return this.request({...a,method:"POST",url:e,data:t})}put(e,t,a){return this.request({...a,method:"PUT",url:e,data:t})}patch(e,t,a){return this.request({...a,method:"PATCH",url:e,data:t})}getAxios(){return this.axiosInstance}setAuthData(e){this.storage.setItem(this.config.authDataStorageKey||"auth",JSON.stringify(e))}getAuthData(){let e=this.storage.getItem(this.config.authDataStorageKey||"auth");return e?JSON.parse(e):null}getConfig(){return this.config}}var $f04719e3bb600f8d$exports={};$parcel$export($f04719e3bb600f8d$exports,"JwtClient",()=>$f04719e3bb600f8d$export$f280b732bbc5934b);class $f04719e3bb600f8d$export$f280b732bbc5934b extends $e147b9ba9f5381c6$export$4f22f74eddb7716a{constructor(e){super(e),this.config=e,this.lock=new(0,$5Sh66$asyncmutex.Mutex)}getConfig(){return super.getConfig()}setRenewTokensCallback(e){this.renewTokensCallback=e}async prepareAuthRequestConfig(){if(this.config.axiosConfig?.withCredentials)return{};let{accessToken:e}=this.getAuthData()||{};if(!e)return $5Sh66$consola.consola.warn("No access token found. Please set auth data after authorization."),{};if(!1!==this.config.autoRenewToken&&this.isTokenExpired(e))try{await this.lock.runExclusive(async()=>{this.config.debug&&$5Sh66$consola.consola.debug("Access token expired. Renewing…"),e=(await this.renewTokens()).accessToken,this.lock.cancel()})}catch(t){if(t===$5Sh66$asyncmutex.E_CANCELED)e=this.getAuthData()?.accessToken;else throw t}return{headers:{Authorization:`${this.config.authSchema??"Bearer"} ${e}`}}}isTokenExpired(e){let t=(0,$5Sh66$jwtdecode.jwtDecode)(e);return!t.exp||(0,$5Sh66$datefns.isBefore)((0,$5Sh66$datefns.subMinutes)(1e3*t.exp,1),Date.now())}async renewTokens(){let e=this.config.onRenewTokens??this.renewTokensCallback;if(!e)throw Error("No renew tokens callback provided");try{let t=await e();return this.setAuthData(t),t}catch(e){throw $5Sh66$consola.consola.warn("Could not renew tokens",e),e}}}$parcel$exportWildcard(module.exports,$d6fbd40018854b1b$exports),$parcel$exportWildcard(module.exports,$e147b9ba9f5381c6$exports),$parcel$exportWildcard(module.exports,$f04719e3bb600f8d$exports),$parcel$exportWildcard(module.exports,$9d1cc81eab16d180$exports);
1
+ var $5Sh66$autobind=require("auto-bind"),$5Sh66$axios=require("axios"),$5Sh66$axiosbetterstacktrace=require("axios-better-stacktrace"),$5Sh66$lodash=require("lodash"),$5Sh66$changecasekeys=require("change-case/keys"),$5Sh66$asyncmutex=require("async-mutex"),$5Sh66$consola=require("consola"),$5Sh66$datefns=require("date-fns"),$5Sh66$jwtdecode=require("jwt-decode");function $parcel$exportWildcard(e,t){return Object.keys(t).forEach(function(a){"default"===a||"__esModule"===a||Object.prototype.hasOwnProperty.call(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[a]}})}),e}function $parcel$interopDefault(e){return e&&e.__esModule?e.default:e}function $parcel$export(e,t,a,r){Object.defineProperty(e,t,{get:a,set:r,enumerable:!0,configurable:!0})}var $d6fbd40018854b1b$exports={};$parcel$export($d6fbd40018854b1b$exports,"BaseApi",()=>$d6fbd40018854b1b$export$3ad201792064a82b);class $d6fbd40018854b1b$export$3ad201792064a82b{constructor(e){this.apiClient=e,$parcel$interopDefault($5Sh66$autobind)(this)}getApiClient(){return this.apiClient}}var $e147b9ba9f5381c6$exports={};$parcel$export($e147b9ba9f5381c6$exports,"ContentType",()=>$e147b9ba9f5381c6$export$e2e108cbe2e4f865),$parcel$export($e147b9ba9f5381c6$exports,"BaseClient",()=>$e147b9ba9f5381c6$export$4f22f74eddb7716a);var $9d1cc81eab16d180$exports={};$parcel$export($9d1cc81eab16d180$exports,"CaseFormat",()=>$9d1cc81eab16d180$export$6d78a2325ef337dd),$parcel$export($9d1cc81eab16d180$exports,"toCamelCase",()=>$9d1cc81eab16d180$export$86f54f62aa7a7514),$parcel$export($9d1cc81eab16d180$exports,"toSnakeCase",()=>$9d1cc81eab16d180$export$cc8b315fc368b20a);var $9d1cc81eab16d180$export$6d78a2325ef337dd=function(e){return e.Camel="camel",e.Snake="snake",e.Original="original",e}({});const $9d1cc81eab16d180$export$86f54f62aa7a7514=e=>$5Sh66$changecasekeys.camelCase(e,1/0),$9d1cc81eab16d180$export$cc8b315fc368b20a=e=>$5Sh66$changecasekeys.snakeCase(e,1/0);var $e147b9ba9f5381c6$export$e2e108cbe2e4f865=function(e){return e.Json="application/json",e.FormData="multipart/form-data",e.UrlEncoded="application/x-www-form-urlencoded",e.Text="text/plain",e}({});class $e147b9ba9f5381c6$export$4f22f74eddb7716a{constructor(e){this.config=e,$parcel$interopDefault($5Sh66$autobind)(this),this.storage=e.storage??sessionStorage,this.axiosInstance=$parcel$interopDefault($5Sh66$axios).create({...e.axiosConfig,baseURL:e.baseUrl,headers:{"Content-Type":"application/json",...e.axiosConfig?.headers},transformResponse:[...Array.isArray($parcel$interopDefault($5Sh66$axios).defaults.transformResponse)?$parcel$interopDefault($5Sh66$axios).defaults.transformResponse:$parcel$interopDefault($5Sh66$axios).defaults.transformResponse?[$parcel$interopDefault($5Sh66$axios).defaults.transformResponse]:[]]}),$parcel$interopDefault($5Sh66$axiosbetterstacktrace)(this.axiosInstance)}transformData(e){return this.config.caseFormat===$9d1cc81eab16d180$export$6d78a2325ef337dd.Camel?$9d1cc81eab16d180$export$86f54f62aa7a7514(e):this.config.caseFormat===$9d1cc81eab16d180$export$6d78a2325ef337dd.Snake?$9d1cc81eab16d180$export$cc8b315fc368b20a(e):e}stringifyFormItem(e){return"object"==typeof e&&null!==e?JSON.stringify(e):`${e}`}createFormData(e){return e instanceof FormData?e:Object.keys(e).reduce((t,a)=>{let r=e[a];for(let e of r instanceof Array?r:[r]){let r=e instanceof Blob||e instanceof File;t.append(a,r?e:this.stringifyFormItem(e))}return t},new FormData)}async request(e){let{contentType:t,data:a}=e;(0,$5Sh66$lodash.isNil)(a)||("multipart/form-data"===t&&"object"==typeof a&&(e.data=this.createFormData(a)),"text/plain"===t&&"string"!=typeof a&&(e.data=JSON.stringify(a)));let r=(0,$5Sh66$lodash.merge)(e.secure??this.config.defaultSecure??!0?await this.prepareAuthRequestConfig():{},t?{headers:{"Content-Type":t}}:{},e);try{let{data:e,status:t,statusText:a,headers:s}=await this.axiosInstance.request(r);return{success:!0,data:this.transformData(e),rawData:e,status:t,statusText:a,headers:s}}catch(a){let t={success:!1,status:-1,statusText:String(a),error:a};if((0,$5Sh66$axios.isAxiosError)(a)&&(this.config.onAxiosError?.(a),t.rawData=a.response?.data,t.data=this.transformData(a.response?.data),t.status=a.response?.status??t.status,t.statusText=a.response?.statusText??t.statusText,t.headers=a.response?.headers),this.config.onError?.(a),!this.config.handleError&&!e.handleError)throw a;return t}}get(e,t){return this.request({...t,method:"GET",url:e})}delete(e,t){return this.request({...t,method:"DELETE",url:e})}head(e,t){return this.request({...t,method:"HEAD",url:e})}options(e,t){return this.request({...t,method:"OPTIONS",url:e})}post(e,t,a){return this.request({...a,method:"POST",url:e,data:t})}put(e,t,a){return this.request({...a,method:"PUT",url:e,data:t})}patch(e,t,a){return this.request({...a,method:"PATCH",url:e,data:t})}getAxios(){return this.axiosInstance}setAuthData(e){this.storage.setItem(this.config.authDataStorageKey||"auth",JSON.stringify(e))}getAuthData(){let e=this.storage.getItem(this.config.authDataStorageKey||"auth");return e?JSON.parse(e):null}getConfig(){return this.config}}var $f04719e3bb600f8d$exports={};$parcel$export($f04719e3bb600f8d$exports,"JwtClient",()=>$f04719e3bb600f8d$export$f280b732bbc5934b);class $f04719e3bb600f8d$export$f280b732bbc5934b extends $e147b9ba9f5381c6$export$4f22f74eddb7716a{constructor(e){super(e),this.config=e,this.lock=new(0,$5Sh66$asyncmutex.Mutex)}getConfig(){return super.getConfig()}setRenewTokensCallback(e){this.renewTokensCallback=e}async prepareAuthRequestConfig(){if(this.config.axiosConfig?.withCredentials)return{};let{accessToken:e}=this.getAuthData()||{};if(!e)return $5Sh66$consola.consola.warn("No access token found. Please set auth data after authorization."),{};if(!1!==this.config.autoRenewToken&&this.isTokenExpired(e))try{await this.lock.runExclusive(async()=>{this.config.debug&&$5Sh66$consola.consola.debug("Access token expired. Renewing…"),e=(await this.renewTokens()).accessToken,this.lock.cancel()})}catch(t){if(t===$5Sh66$asyncmutex.E_CANCELED)e=this.getAuthData()?.accessToken;else throw t}return{headers:{Authorization:`${this.config.authSchema??"Bearer"} ${e}`}}}isTokenExpired(e){let t=(0,$5Sh66$jwtdecode.jwtDecode)(e);return!t.exp||(0,$5Sh66$datefns.isBefore)((0,$5Sh66$datefns.subMinutes)(1e3*t.exp,1),Date.now())}async renewTokens(){let e=this.config.onRenewTokens??this.renewTokensCallback;if(!e)throw Error("No renew tokens callback provided");try{let t=await e();return this.setAuthData(t),t}catch(e){throw $5Sh66$consola.consola.warn("Could not renew tokens",e),e}}}$parcel$exportWildcard(module.exports,$d6fbd40018854b1b$exports),$parcel$exportWildcard(module.exports,$e147b9ba9f5381c6$exports),$parcel$exportWildcard(module.exports,$f04719e3bb600f8d$exports),$parcel$exportWildcard(module.exports,$9d1cc81eab16d180$exports);
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"A,I,gB,Q,a,a,Q,S,6B,Q,2B,c,Q,U,sB,Q,oB,kB,Q,e,e,Q,W,e,Q,Y,iB,Q,c,S,uB,C,C,C,E,O,O,I,C,G,O,C,S,C,E,Y,G,A,e,G,O,S,C,c,C,I,C,E,I,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,G,C,C,S,uB,C,E,O,G,E,U,C,E,O,C,C,C,S,e,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,I,0B,C,E,e,0B,U,I,0CEIO,OAAe,0CAclB,YAA+B,CAAoB,CAAE,CAAtB,IAAA,CAAA,SAAA,CAAA,EAC3B,AAAA,uBAAA,iBAAS,IAAI,CAUjB,CAEA,cAA0B,CACtB,OAAO,IAAI,CAAC,SAAS,AACzB,CACJ,C,I,0B,C,E,e,0B,c,I,2C,e,0B,a,I,2C,I,0B,C,E,e,0B,a,I,2C,e,0B,c,I,2C,e,0B,c,I,2CEhCO,IAAK,0CAAA,SAAA,CAAL,EAAK,O,E,K,C,Q,E,K,C,Q,E,Q,C,WAAA,C,E,C,GA0CL,MAAM,0CAAc,AAAC,GACjB,sBAAA,SAAA,CAAqB,EAAK,KAGxB,0CAAc,AAAC,GACjB,sBAAA,SAAA,CAAqB,EAAK,KDpB9B,IAAK,0CAAA,SAAA,CAAL,EAAK,O,E,I,C,mB,E,Q,C,sB,E,U,C,oC,E,I,C,aAAA,C,E,C,EAuCL,OAAe,0CAQlB,YAA+B,CAA6C,CAAE,CAA/C,IAAA,CAAA,MAAA,CAAA,EAC3B,AAAA,uBAAA,iBAAS,IAAI,EACb,IAAI,CAAC,OAAO,CAAG,EAAO,OAAO,EAAI,eACjC,IAAI,CAAC,aAAa,CAAG,AAAA,uBAAA,cAAM,MAAM,CAAC,CAC9B,GAAG,EAAO,WAAW,CACrB,QAAS,EAAO,OAAO,CACvB,QAAS,CACL,eAAgB,mBAChB,GAAG,EAAO,WAAW,EAAE,OAAO,AAClC,EACA,kBAAmB,IACX,MAAM,OAAO,CAAC,AAAA,uBAAA,cAAM,QAAQ,CAAC,iBAAiB,EAC5C,AAAA,uBAAA,cAAM,QAAQ,CAAC,iBAAiB,CAChC,AAAA,uBAAA,cAAM,QAAQ,CAAC,iBAAiB,CAC9B,CAAC,AAAA,uBAAA,cAAM,QAAQ,CAAC,iBAAiB,CAAC,CAClC,EAAE,CACb,AACL,GACA,AAAA,uBAAA,8BAAsB,IAAI,CAAC,aAAa,CAC5C,CAEU,cAAiB,CAAS,CAA4B,QAC5D,AAAI,IAAI,CAAC,MAAM,CAAC,UAAU,GAAK,AAAA,0CAAW,KAAK,CACpC,AAAA,0CAAY,GAEnB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAK,AAAA,0CAAW,KAAK,CACpC,AAAA,0CAAY,GAEhB,CACX,CAEU,kBAAkB,CAAiB,CAAE,OAC3C,AAAI,AAAoB,UAApB,OAAO,GAAyB,AAAa,OAAb,EACzB,KAAK,SAAS,CAAC,GAEf,CAAA,EAAG,EAAA,CAAU,AAE5B,CAEU,eAAe,CAA8B,CAAY,QAC/D,AAAI,aAAiB,SACV,EAGJ,OAAO,IAAI,CAAC,GAAO,MAAM,CAAC,CAAC,EAAU,KACxC,IAAM,EAAW,CAAK,CAAC,EAAI,CAG3B,IAAK,IAAM,KAFoB,aAAoB,MAAQ,EAAW,CAAC,EAAS,CAExC,CACpC,IAAM,EAAa,aAAoB,MAAQ,aAAoB,KACnE,EAAS,MAAM,CAAC,EAAK,EAAa,EAAW,IAAI,CAAC,iBAAiB,CAAC,GACxE,CAEA,OAAO,CACX,EAAG,IAAI,SACX,CAEA,MAAM,QACF,CAAkC,CACgB,CAClD,GAAM,CAAA,YAAE,CAAW,CAAA,KAAE,CAAI,CAAE,CAAG,EAEzB,AAAA,CAAA,EAAA,cAAA,KAAI,AAAJ,EAAM,KACH,AAAA,wBAAA,GAAwC,AAAgB,UAAhB,OAAO,GAC/C,CAAA,EAAc,IAAI,CAAG,IAAI,CAAC,cAAc,CAAC,EAD7C,EAII,AAAA,eAAA,GAAoC,AAAgB,UAAhB,OAAO,GAC3C,CAAA,EAAc,IAAI,CAAG,KAAK,SAAS,CAAC,EADxC,GAKJ,IAAM,EAAe,AAAA,CAAA,EAAA,cAAA,KAAI,AAAJ,EACjB,EAAe,MAAM,EAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAI,CAAA,EAAQ,MAAM,IAAI,CAAC,wBAAwB,GAAK,CAAC,EACvG,EAAc,CAAE,QAAS,CAAE,eAAgB,CAAY,CAAE,EAAI,CAAC,EAC9D,GAGJ,GAAI,CACA,GAAM,CACF,KAAM,CAAO,CAAA,OACb,CAAM,CAAA,WACN,CAAU,CACb,CAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAkC,GAEtE,MAAO,CACH,QAAS,CAAA,EACT,KAAM,IAAI,CAAC,aAAa,CAAO,GAC/B,QAAA,EACA,OAAA,EACA,WAAA,CACJ,CACJ,CAAE,MAAO,EAAO,CACZ,IAAM,EAA8B,CAChC,QAAS,CAAA,EACT,OAAQ,GACR,WAAY,OAAO,GACnB,MAAA,CACJ,EAYA,GAVI,AAAA,CAAA,EAAA,aAAA,YAAW,AAAX,EAA0B,KAC1B,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,GAC3B,EAAO,OAAO,CAAG,EAAM,QAAQ,EAAE,KACjC,EAAO,IAAI,CAAG,IAAI,CAAC,aAAa,CAAQ,EAAM,QAAQ,EAAE,MACxD,EAAO,MAAM,CAAG,EAAM,QAAQ,EAAE,QAAU,EAAO,MAAM,CACvD,EAAO,UAAU,CAAG,EAAM,QAAQ,EAAE,YAAc,EAAO,UAAU,EAGvE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,GAElB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAI,CAAC,EAAc,WAAW,CACtD,MAAM,EAGV,OAAO,CACX,CACJ,CAEA,IAAqD,CAAW,CAAE,CAA4B,CAAE,CAC5F,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,MACR,IAAA,CACJ,EACJ,CAEA,OAAwD,CAAW,CAAE,CAA4B,CAAE,CAC/F,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,SACR,IAAA,CACJ,EACJ,CAEA,KAAsD,CAAW,CAAE,CAA4B,CAAE,CAC7F,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,OACR,IAAA,CACJ,EACJ,CAEA,QAAyD,CAAW,CAAE,CAA4B,CAAE,CAChG,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,UACR,IAAA,CACJ,EACJ,CAEA,KAAsD,CAAW,CAAE,CAAW,CAAE,CAA4B,CAAE,CAC1G,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,OACR,IAAA,EACA,KAAA,CACJ,EACJ,CAEA,IAAqD,CAAW,CAAE,CAAW,CAAE,CAA4B,CAAE,CACzG,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,MACR,IAAA,EACA,KAAA,CACJ,EACJ,CAEA,MAAuD,CAAW,CAAE,CAAW,CAAE,CAA4B,CAAE,CAC3G,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,QACR,IAAA,EACA,KAAA,CACJ,EACJ,CAEA,UAA0B,CACtB,OAAO,IAAI,CAAC,aAAa,AAC7B,CAEA,YAAY,CAAqB,CAAE,CAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAI,OAAQ,KAAK,SAAS,CAAC,GAClF,CAEA,aAA+B,CAC3B,IAAM,EAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAI,QACpE,OAAO,EAAQ,KAAK,KAAK,CAAC,GAAqB,IACnD,CAEA,WAAmD,CAC/C,OAAO,IAAI,CAAC,MAAM,AACtB,CAGJ,C,I,0B,C,E,e,0B,Y,I,0CEzPO,OAAM,kDAIH,0CAIN,YAAwC,CAAsD,CAAE,CAC5F,KAAK,CAAC,GAAA,IAAA,CAD8B,MAAA,CAAA,EAAA,IAAA,CAHvB,IAAA,CAAO,GAAI,CAAA,EAAA,kBAAA,KAAI,AAAJ,CAK5B,CAES,WAA4D,CACjE,OAAO,KAAK,CAAC,WACjB,CAEA,uBAAuB,CAA4C,CAAE,CACjE,IAAI,CAAC,mBAAmB,CAAG,CAC/B,CAEA,MAAyB,0BAEvB,CACE,GAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,gBACzB,MAAO,CAAC,EAGZ,GAAI,CAAA,YAAE,CAAW,CAAE,CAAG,IAAI,CAAC,WAAW,IAAM,CAAC,EAE7C,GAAI,CAAC,EAED,OADA,AAAA,eAAA,OAAM,CAAE,IAAI,CAAC,oEACN,CAAC,EAGZ,GAAI,AAA+B,CAAA,IAA/B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAc,IAAI,CAAC,cAAc,CAAC,GAC5D,GAAI,CACA,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UACrB,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,AAAA,eAAA,OAAM,CAAE,KAAK,CAAC,mCAElB,EAAe,AAAA,CAAA,MAAM,IAAI,CAAC,WAAW,EAAA,EAAI,WAAW,CACpD,IAAI,CAAC,IAAI,CAAC,MAAM,EACpB,EACJ,CAAE,MAAO,EAAO,CACZ,GAAI,IAAU,kBAAA,UAAS,CACnB,EAAc,IAAI,CAAC,WAAW,IAAI,iBAElC,MAAM,CAEd,CAGJ,MAAO,CACH,QAAS,CACL,cAAe,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAI,SAAS,CAAC,EAAE,EAAA,CAAa,AACzE,CACJ,CACJ,CAEQ,eAAe,CAAa,CAAW,CAC3C,IAAM,EAAU,AAAA,CAAA,EAAA,iBAAA,SAAQ,AAAR,EAAU,SAE1B,CAAK,EAAQ,GAAG,EAIT,AAAA,CAAA,EAAA,eAAA,QAAO,AAAP,EAAS,AAAA,CAAA,EAAA,eAAA,UAAS,AAAT,EAAW,AAAc,IAAd,EAAQ,GAAG,CAAS,GAAI,KAAK,GAAG,GAC/D,CAEA,MAAgB,aAAc,CAC1B,IAAM,EAAW,IAAI,CAAC,MAAM,CAAC,aAAa,EAAI,IAAI,CAAC,mBAAmB,CAEtE,GAAI,CAAC,EACD,MAAM,AAAI,MAAM,qCAGpB,GAAI,CACA,IAAM,EAAW,MAAM,IAEvB,OADA,IAAI,CAAC,WAAW,CAAC,GACV,CACX,CAAE,MAAO,EAAO,CAEZ,MADA,AAAA,eAAA,OAAM,CAAE,IAAI,CAAC,yBAA0B,GACjC,CACV,CACJ,CACJ,C,uB,O,O,C,2B,uB,O,O,C,2B,uB,O,O,C,2B,uB,O,O,C","sources":["<anon>","src/index.ts","src/BaseApi.ts","src/BaseClient.ts","src/utils.ts","src/JwtClient.ts"],"sourcesContent":["var $5Sh66$autobind = require(\"auto-bind\");\nvar $5Sh66$axios = require(\"axios\");\nvar $5Sh66$axiosbetterstacktrace = require(\"axios-better-stacktrace\");\nvar $5Sh66$lodash = require(\"lodash\");\nvar $5Sh66$changecasekeys = require(\"change-case/keys\");\nvar $5Sh66$asyncmutex = require(\"async-mutex\");\nvar $5Sh66$consola = require(\"consola\");\nvar $5Sh66$datefns = require(\"date-fns\");\nvar $5Sh66$jwtdecode = require(\"jwt-decode\");\n\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $d6fbd40018854b1b$exports = {};\n\n$parcel$export($d6fbd40018854b1b$exports, \"BaseApi\", () => $d6fbd40018854b1b$export$3ad201792064a82b);\n\nclass $d6fbd40018854b1b$export$3ad201792064a82b {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n constructor(apiClient){\n this.apiClient = apiClient;\n (0, ($parcel$interopDefault($5Sh66$autobind)))(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n getApiClient() {\n return this.apiClient;\n }\n}\n\n\nvar $e147b9ba9f5381c6$exports = {};\n\n$parcel$export($e147b9ba9f5381c6$exports, \"ContentType\", () => $e147b9ba9f5381c6$export$e2e108cbe2e4f865);\n$parcel$export($e147b9ba9f5381c6$exports, \"BaseClient\", () => $e147b9ba9f5381c6$export$4f22f74eddb7716a);\n\n\n\n\nvar $9d1cc81eab16d180$exports = {};\n\n$parcel$export($9d1cc81eab16d180$exports, \"CaseFormat\", () => $9d1cc81eab16d180$export$6d78a2325ef337dd);\n$parcel$export($9d1cc81eab16d180$exports, \"toCamelCase\", () => $9d1cc81eab16d180$export$86f54f62aa7a7514);\n$parcel$export($9d1cc81eab16d180$exports, \"toSnakeCase\", () => $9d1cc81eab16d180$export$cc8b315fc368b20a);\n\nvar $9d1cc81eab16d180$export$6d78a2325ef337dd = /*#__PURE__*/ function(CaseFormat) {\n CaseFormat[\"Camel\"] = \"camel\";\n CaseFormat[\"Snake\"] = \"snake\";\n CaseFormat[\"Original\"] = \"original\";\n return CaseFormat;\n}({});\nconst $9d1cc81eab16d180$export$86f54f62aa7a7514 = (obj)=>{\n return $5Sh66$changecasekeys.camelCase(obj, Infinity);\n};\nconst $9d1cc81eab16d180$export$cc8b315fc368b20a = (obj)=>{\n return $5Sh66$changecasekeys.snakeCase(obj, Infinity);\n};\n\n\nvar $e147b9ba9f5381c6$export$e2e108cbe2e4f865 = /*#__PURE__*/ function(ContentType) {\n ContentType[\"Json\"] = \"application/json\";\n ContentType[\"FormData\"] = \"multipart/form-data\";\n ContentType[\"UrlEncoded\"] = \"application/x-www-form-urlencoded\";\n ContentType[\"Text\"] = \"text/plain\";\n return ContentType;\n}({});\nclass $e147b9ba9f5381c6$export$4f22f74eddb7716a {\n constructor(config){\n this.config = config;\n (0, ($parcel$interopDefault($5Sh66$autobind)))(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = (0, ($parcel$interopDefault($5Sh66$axios))).create({\n ...config.axiosConfig,\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.axiosConfig?.headers\n },\n transformResponse: [\n ...Array.isArray((0, ($parcel$interopDefault($5Sh66$axios))).defaults.transformResponse) ? (0, ($parcel$interopDefault($5Sh66$axios))).defaults.transformResponse : (0, ($parcel$interopDefault($5Sh66$axios))).defaults.transformResponse ? [\n (0, ($parcel$interopDefault($5Sh66$axios))).defaults.transformResponse\n ] : []\n ]\n });\n (0, ($parcel$interopDefault($5Sh66$axiosbetterstacktrace)))(this.axiosInstance);\n }\n transformData(data) {\n if (this.config.caseFormat === (0, $9d1cc81eab16d180$export$6d78a2325ef337dd).Camel) return (0, $9d1cc81eab16d180$export$86f54f62aa7a7514)(data);\n if (this.config.caseFormat === (0, $9d1cc81eab16d180$export$6d78a2325ef337dd).Snake) return (0, $9d1cc81eab16d180$export$cc8b315fc368b20a)(data);\n return data;\n }\n stringifyFormItem(formItem) {\n if (typeof formItem === 'object' && formItem !== null) return JSON.stringify(formItem);\n else return `${formItem}`;\n }\n createFormData(input) {\n if (input instanceof FormData) return input;\n return Object.keys(input).reduce((formData, key)=>{\n const property = input[key];\n const propertyContent = property instanceof Array ? property : [\n property\n ];\n for (const formItem of propertyContent){\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n return formData;\n }, new FormData());\n }\n async request(requestConfig) {\n const { contentType: contentType, data: data } = requestConfig;\n if (!(0, $5Sh66$lodash.isNil)(data)) {\n if (contentType === \"multipart/form-data\" && typeof data === 'object') requestConfig.data = this.createFormData(data);\n if (contentType === \"text/plain\" && typeof data !== 'string') requestConfig.data = JSON.stringify(data);\n }\n const mergedConfig = (0, $5Sh66$lodash.merge)(requestConfig.secure ?? this.config.defaultSecure ?? true ? await this.prepareAuthRequestConfig() : {}, contentType ? {\n headers: {\n 'Content-Type': contentType\n }\n } : {}, requestConfig);\n try {\n const { data: rawData, status: status, statusText: statusText } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: this.transformData(rawData),\n rawData: rawData,\n status: status,\n statusText: statusText\n };\n } catch (error) {\n const result = {\n success: false,\n status: -1,\n statusText: String(error),\n error: error\n };\n if ((0, $5Sh66$axios.isAxiosError)(error)) {\n this.config.onAxiosError?.(error);\n result.rawData = error.response?.data;\n result.data = this.transformData(error.response?.data);\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n }\n this.config.onError?.(error);\n if (!this.config.handleError && !requestConfig.handleError) throw error;\n return result;\n }\n }\n get(url, config) {\n return this.request({\n ...config,\n method: 'GET',\n url: url\n });\n }\n delete(url, config) {\n return this.request({\n ...config,\n method: 'DELETE',\n url: url\n });\n }\n head(url, config) {\n return this.request({\n ...config,\n method: 'HEAD',\n url: url\n });\n }\n options(url, config) {\n return this.request({\n ...config,\n method: 'OPTIONS',\n url: url\n });\n }\n post(url, data, config) {\n return this.request({\n ...config,\n method: 'POST',\n url: url,\n data: data\n });\n }\n put(url, data, config) {\n return this.request({\n ...config,\n method: 'PUT',\n url: url,\n data: data\n });\n }\n patch(url, data, config) {\n return this.request({\n ...config,\n method: 'PATCH',\n url: url,\n data: data\n });\n }\n getAxios() {\n return this.axiosInstance;\n }\n setAuthData(data) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n getAuthData() {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? JSON.parse(data) : null;\n }\n getConfig() {\n return this.config;\n }\n}\n\n\nvar $f04719e3bb600f8d$exports = {};\n\n$parcel$export($f04719e3bb600f8d$exports, \"JwtClient\", () => $f04719e3bb600f8d$export$f280b732bbc5934b);\n\n\n\n\n\nclass $f04719e3bb600f8d$export$f280b732bbc5934b extends (0, $e147b9ba9f5381c6$export$4f22f74eddb7716a) {\n constructor(config){\n super(config), this.config = config, this.lock = new (0, $5Sh66$asyncmutex.Mutex)();\n }\n getConfig() {\n return super.getConfig();\n }\n setRenewTokensCallback(renewTokensCallback) {\n this.renewTokensCallback = renewTokensCallback;\n }\n async prepareAuthRequestConfig() {\n if (this.config.axiosConfig?.withCredentials) return {};\n let { accessToken: accessToken } = this.getAuthData() || {};\n if (!accessToken) {\n (0, $5Sh66$consola.consola).warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) try {\n await this.lock.runExclusive(async ()=>{\n if (this.config.debug) (0, $5Sh66$consola.consola).debug(\"Access token expired. Renewing\\u2026\");\n accessToken = (await this.renewTokens()).accessToken;\n this.lock.cancel();\n });\n } catch (error) {\n if (error === (0, $5Sh66$asyncmutex.E_CANCELED)) accessToken = this.getAuthData()?.accessToken;\n else throw error;\n }\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`\n }\n };\n }\n isTokenExpired(token) {\n const payload = (0, $5Sh66$jwtdecode.jwtDecode)(token);\n if (!payload.exp) return true;\n return (0, $5Sh66$datefns.isBefore)((0, $5Sh66$datefns.subMinutes)(payload.exp * 1000, 1), Date.now());\n }\n async renewTokens() {\n const callback = this.config.onRenewTokens ?? this.renewTokensCallback;\n if (!callback) throw new Error('No renew tokens callback provided');\n try {\n const authData = await callback();\n this.setAuthData(authData);\n return authData;\n } catch (error) {\n (0, $5Sh66$consola.consola).warn('Could not renew tokens', error);\n throw error;\n }\n }\n}\n\n\n\n$parcel$exportWildcard(module.exports, $d6fbd40018854b1b$exports);\n$parcel$exportWildcard(module.exports, $e147b9ba9f5381c6$exports);\n$parcel$exportWildcard(module.exports, $f04719e3bb600f8d$exports);\n$parcel$exportWildcard(module.exports, $9d1cc81eab16d180$exports);\n\n\n//# sourceMappingURL=index.js.map\n","export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\nexport * from './utils';\n","import autoBind from 'auto-bind';\nimport { BaseClient } from './BaseClient';\nimport { CaseFormat } from './utils';\n\nexport abstract class BaseApi<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n ApiClient extends BaseClient<HandleError, Format, unknown> = BaseClient<HandleError, Format>,\n> {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n\n constructor(protected readonly apiClient: ApiClient) {\n autoBind(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n\n getApiClient(): ApiClient {\n return this.apiClient;\n }\n}\n","import autoBind from 'auto-bind';\nimport axios, {\n AxiosError,\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n HttpStatusCode,\n isAxiosError,\n} from 'axios';\nimport axiosBetterStacktrace from 'axios-better-stacktrace';\nimport { isNil, merge } from 'lodash';\nimport { CaseFormat, toCamelCase, toSnakeCase, TransformData } from './utils';\n\nexport interface BaseClientConfig<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n> {\n debug?: boolean;\n baseUrl: string;\n handleError?: HandleError;\n caseFormat?: Format;\n storage?: Storage;\n defaultSecure?: boolean;\n authDataStorageKey?: string;\n axiosConfig?: AxiosRequestConfig;\n onAxiosError?: (error: AxiosError) => void;\n onError?: (error: unknown) => void;\n}\n\nexport enum ContentType {\n Json = 'application/json',\n FormData = 'multipart/form-data',\n UrlEncoded = 'application/x-www-form-urlencoded',\n Text = 'text/plain',\n}\n\nexport type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {\n secure?: boolean;\n contentType?: ContentType;\n handleError?: boolean;\n};\n\nexport type ResponseStatus = {\n status: HttpStatusCode | -1;\n statusText: string;\n};\n\nexport type SuccessClientResponse<Data = unknown, RawData = unknown> = ResponseStatus & {\n success: true;\n data: Data;\n rawData: RawData;\n};\n\nexport type ErrorClientResponse = ResponseStatus & {\n success: false;\n data?: any;\n rawData?: any;\n error: unknown;\n};\n\nexport type ClientResponse<\n Data = unknown,\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n> = HandleError extends true\n ? SuccessClientResponse<TransformData<Data, Format>, Data> | ErrorClientResponse\n : SuccessClientResponse<TransformData<Data, Format>, Data>;\n\nexport abstract class BaseClient<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData = unknown,\n> {\n protected readonly axiosInstance: AxiosInstance;\n protected readonly storage: Storage;\n\n constructor(protected readonly config: BaseClientConfig<HandleError, Format>) {\n autoBind(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = axios.create({\n ...config.axiosConfig,\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.axiosConfig?.headers,\n },\n transformResponse: [\n ...(Array.isArray(axios.defaults.transformResponse)\n ? axios.defaults.transformResponse\n : axios.defaults.transformResponse\n ? [axios.defaults.transformResponse]\n : []),\n ],\n });\n axiosBetterStacktrace(this.axiosInstance);\n }\n\n protected transformData<T>(data: any): TransformData<T, Format> {\n if (this.config.caseFormat === CaseFormat.Camel) {\n return toCamelCase(data);\n }\n if (this.config.caseFormat === CaseFormat.Snake) {\n return toSnakeCase(data);\n }\n return data;\n }\n\n protected stringifyFormItem(formItem: unknown) {\n if (typeof formItem === 'object' && formItem !== null) {\n return JSON.stringify(formItem);\n } else {\n return `${formItem}`;\n }\n }\n\n protected createFormData(input: Record<string, unknown>): FormData {\n if (input instanceof FormData) {\n return input;\n }\n\n return Object.keys(input).reduce((formData, key) => {\n const property = input[key];\n const propertyContent: any[] = property instanceof Array ? property : [property];\n\n for (const formItem of propertyContent) {\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n\n return formData;\n }, new FormData());\n }\n\n async request<Data = unknown, Error = unknown, Body = unknown>(\n requestConfig: RequestConfig<Body>,\n ): Promise<ClientResponse<Data, HandleError, Format>> {\n const { contentType, data } = requestConfig;\n\n if (!isNil(data)) {\n if (contentType === ContentType.FormData && typeof data === 'object') {\n requestConfig.data = this.createFormData(data as Record<string, unknown>) as any;\n }\n\n if (contentType === ContentType.Text && typeof data !== 'string') {\n requestConfig.data = JSON.stringify(data) as any;\n }\n }\n\n const mergedConfig = merge(\n (requestConfig.secure ?? this.config.defaultSecure ?? true) ? await this.prepareAuthRequestConfig() : {},\n contentType ? { headers: { 'Content-Type': contentType } } : {},\n requestConfig,\n );\n\n try {\n const {\n data: rawData,\n status,\n statusText,\n } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(mergedConfig);\n\n return {\n success: true,\n data: this.transformData<Data>(rawData),\n rawData,\n status,\n statusText,\n };\n } catch (error) {\n const result: ErrorClientResponse = {\n success: false,\n status: -1,\n statusText: String(error),\n error,\n };\n\n if (isAxiosError<Error, Data>(error)) {\n this.config.onAxiosError?.(error);\n result.rawData = error.response?.data;\n result.data = this.transformData<Error>(error.response?.data);\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n }\n\n this.config.onError?.(error);\n\n if (!this.config.handleError && !requestConfig.handleError) {\n throw error;\n }\n\n return result as ClientResponse<Data, HandleError, Format>;\n }\n }\n\n get<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'GET',\n url,\n });\n }\n\n delete<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'DELETE',\n url,\n });\n }\n\n head<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'HEAD',\n url,\n });\n }\n\n options<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'OPTIONS',\n url,\n });\n }\n\n post<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'POST',\n url,\n data,\n });\n }\n\n put<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PUT',\n url,\n data,\n });\n }\n\n patch<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PATCH',\n url,\n data,\n });\n }\n\n getAxios(): AxiosInstance {\n return this.axiosInstance;\n }\n\n setAuthData(data: AuthData | null) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n\n getAuthData(): AuthData | null {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? (JSON.parse(data) as AuthData) : null;\n }\n\n getConfig(): BaseClientConfig<HandleError, Format> {\n return this.config;\n }\n\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\n}\n","import * as changeKeys from 'change-case/keys';\n\nexport enum CaseFormat {\n Camel = 'camel',\n Snake = 'snake',\n Original = 'original',\n}\n\nexport type CamelCase<S extends string> = S extends `${infer T}_${infer U}`\n ? `${Lowercase<T>}${Capitalize<CamelCase<U>>}`\n : S extends Uppercase<S>\n ? Lowercase<S>\n : S;\n\nexport type SnakeCase<S extends string> = S extends `${infer T}${infer U}`\n ? T extends Uppercase<T>\n ? T extends Lowercase<T>\n ? `${T}${SnakeCase<U>}`\n : `_${Lowercase<T>}${SnakeCase<U>}`\n : `${T}${SnakeCase<U>}`\n : S;\n\nexport type CamelCaseKeys<T> =\n T extends Array<infer U>\n ? Array<CamelCaseKeys<U>>\n : T extends object\n ? { [K in keyof T as CamelCase<K & string>]: CamelCaseKeys<T[K]> }\n : T;\n\nexport type SnakeCaseKeys<T> =\n T extends Array<infer U>\n ? Array<SnakeCaseKeys<U>>\n : T extends object\n ? { [K in keyof T as SnakeCase<K & string>]: SnakeCaseKeys<T[K]> }\n : T;\n\nexport type TransformData<T, F extends CaseFormat | undefined> = CaseFormat.Original | undefined extends F\n ? T\n : F extends CaseFormat.Camel\n ? CamelCaseKeys<T>\n : F extends CaseFormat.Snake\n ? SnakeCaseKeys<T>\n : T;\n\nexport const toCamelCase = (obj: any): any => {\n return changeKeys.camelCase(obj, Infinity);\n};\n\nexport const toSnakeCase = (obj: any): any => {\n return changeKeys.snakeCase(obj, Infinity);\n};\n","import { E_CANCELED, Mutex } from 'async-mutex';\nimport { consola } from 'consola';\nimport { isBefore, subMinutes } from 'date-fns';\nimport { jwtDecode } from 'jwt-decode';\nimport { BaseClient, BaseClientConfig, RequestConfig } from './BaseClient';\nimport { CaseFormat } from './utils';\n\nexport interface JwtClientConfig<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClientConfig<HandleError, Format> {\n authSchema?: string;\n autoRenewToken?: boolean;\n onRenewTokens?: () => Promise<AuthData>;\n}\n\nexport interface JwtAuthData {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport class JwtClient<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, Format, AuthData> {\n private readonly lock = new Mutex();\n private renewTokensCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError, Format, AuthData>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError, Format, AuthData> {\n return super.getConfig() as JwtClientConfig<HandleError, Format, AuthData>;\n }\n\n setRenewTokensCallback(renewTokensCallback: () => Promise<AuthData>) {\n this.renewTokensCallback = renewTokensCallback;\n }\n\n protected override async prepareAuthRequestConfig(): Promise<\n Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>\n > {\n if (this.config.axiosConfig?.withCredentials) {\n return {};\n }\n\n let { accessToken } = this.getAuthData() || {};\n\n if (!accessToken) {\n consola.warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) {\n try {\n await this.lock.runExclusive(async () => {\n if (this.config.debug) {\n consola.debug('Access token expired. Renewing…');\n }\n accessToken = (await this.renewTokens()).accessToken;\n this.lock.cancel();\n });\n } catch (error) {\n if (error === E_CANCELED) {\n accessToken = this.getAuthData()?.accessToken;\n } else {\n throw error;\n }\n }\n }\n\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`,\n },\n };\n }\n\n private isTokenExpired(token: string): boolean {\n const payload = jwtDecode(token);\n\n if (!payload.exp) {\n return true;\n }\n\n return isBefore(subMinutes(payload.exp * 1000, 1), Date.now());\n }\n\n protected async renewTokens() {\n const callback = this.config.onRenewTokens ?? this.renewTokensCallback;\n\n if (!callback) {\n throw new Error('No renew tokens callback provided');\n }\n\n try {\n const authData = await callback();\n this.setAuthData(authData);\n return authData;\n } catch (error) {\n consola.warn('Could not renew tokens', error);\n throw error;\n }\n }\n}\n"],"names":["$5Sh66$autobind","require","$5Sh66$axios","$5Sh66$axiosbetterstacktrace","$5Sh66$lodash","$5Sh66$changecasekeys","$5Sh66$asyncmutex","$5Sh66$consola","$5Sh66$datefns","$5Sh66$jwtdecode","$parcel$exportWildcard","dest","source","Object","keys","forEach","key","prototype","hasOwnProperty","call","defineProperty","enumerable","get","$parcel$interopDefault","a","__esModule","default","$parcel$export","e","n","v","s","set","configurable","$d6fbd40018854b1b$exports","$d6fbd40018854b1b$export$3ad201792064a82b","apiClient","getApiClient","$e147b9ba9f5381c6$exports","$e147b9ba9f5381c6$export$e2e108cbe2e4f865","$e147b9ba9f5381c6$export$4f22f74eddb7716a","$9d1cc81eab16d180$exports","$9d1cc81eab16d180$export$6d78a2325ef337dd","$9d1cc81eab16d180$export$86f54f62aa7a7514","$9d1cc81eab16d180$export$cc8b315fc368b20a","CaseFormat","obj","camelCase","Infinity","snakeCase","ContentType","config","storage","sessionStorage","axiosInstance","create","axiosConfig","baseURL","baseUrl","headers","transformResponse","Array","isArray","defaults","transformData","data","caseFormat","Camel","Snake","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","reduce","formData","property","isFileType","Blob","File","append","request","requestConfig","contentType","isNil","mergedConfig","merge","secure","defaultSecure","prepareAuthRequestConfig","rawData","status","statusText","success","error","result","String","isAxiosError","onAxiosError","response","onError","handleError","url","method","delete","head","options","post","put","patch","getAxios","setAuthData","setItem","authDataStorageKey","getAuthData","getItem","parse","getConfig","$f04719e3bb600f8d$exports","$f04719e3bb600f8d$export$f280b732bbc5934b","lock","Mutex","setRenewTokensCallback","renewTokensCallback","withCredentials","accessToken","consola","warn","autoRenewToken","isTokenExpired","runExclusive","debug","renewTokens","cancel","E_CANCELED","Authorization","authSchema","token","payload","jwtDecode","exp","isBefore","subMinutes","Date","now","callback","onRenewTokens","Error","authData","module","exports"],"version":3,"file":"index.js.map","sourceRoot":"../"}
1
+ {"mappings":"A,I,gB,Q,a,a,Q,S,6B,Q,2B,c,Q,U,sB,Q,oB,kB,Q,e,e,Q,W,e,Q,Y,iB,Q,c,S,uB,C,C,C,E,O,O,I,C,G,O,C,S,C,E,Y,G,A,e,G,O,S,C,c,C,I,C,E,I,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,G,C,C,S,uB,C,E,O,G,E,U,C,E,O,C,C,C,S,e,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,I,0B,C,E,e,0B,U,I,0CEIO,OAAe,0CAclB,YAA+B,CAAoB,CAAE,CAAtB,IAAA,CAAA,SAAA,CAAA,EAC3B,AAAA,uBAAA,iBAAS,IAAI,CAUjB,CAEA,cAA0B,CACtB,OAAO,IAAI,CAAC,SAAS,AACzB,CACJ,C,I,0B,C,E,e,0B,c,I,2C,e,0B,a,I,2C,I,0B,C,E,e,0B,a,I,2C,e,0B,c,I,2C,e,0B,c,I,2CEhCO,IAAK,0CAAA,SAAA,CAAL,EAAK,O,E,K,C,Q,E,K,C,Q,E,Q,C,WAAA,C,E,C,GA0CL,MAAM,0CAAc,AAAC,GACjB,sBAAA,SAAA,CAAqB,EAAK,KAGxB,0CAAc,AAAC,GACjB,sBAAA,SAAA,CAAqB,EAAK,KDnB9B,IAAK,0CAAA,SAAA,CAAL,EAAK,O,E,I,C,mB,E,Q,C,sB,E,U,C,oC,E,I,C,aAAA,C,E,C,EAyCL,OAAe,0CAQlB,YAA+B,CAA6C,CAAE,CAA/C,IAAA,CAAA,MAAA,CAAA,EAC3B,AAAA,uBAAA,iBAAS,IAAI,EACb,IAAI,CAAC,OAAO,CAAG,EAAO,OAAO,EAAI,eACjC,IAAI,CAAC,aAAa,CAAG,AAAA,uBAAA,cAAM,MAAM,CAAC,CAC9B,GAAG,EAAO,WAAW,CACrB,QAAS,EAAO,OAAO,CACvB,QAAS,CACL,eAAgB,mBAChB,GAAG,EAAO,WAAW,EAAE,OAAO,AAClC,EACA,kBAAmB,IACX,MAAM,OAAO,CAAC,AAAA,uBAAA,cAAM,QAAQ,CAAC,iBAAiB,EAC5C,AAAA,uBAAA,cAAM,QAAQ,CAAC,iBAAiB,CAChC,AAAA,uBAAA,cAAM,QAAQ,CAAC,iBAAiB,CAC9B,CAAC,AAAA,uBAAA,cAAM,QAAQ,CAAC,iBAAiB,CAAC,CAClC,EAAE,CACb,AACL,GACA,AAAA,uBAAA,8BAAsB,IAAI,CAAC,aAAa,CAC5C,CAEU,cAAiB,CAAS,CAA4B,QAC5D,AAAI,IAAI,CAAC,MAAM,CAAC,UAAU,GAAK,AAAA,0CAAW,KAAK,CACpC,AAAA,0CAAY,GAEnB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAK,AAAA,0CAAW,KAAK,CACpC,AAAA,0CAAY,GAEhB,CACX,CAEU,kBAAkB,CAAiB,CAAE,OAC3C,AAAI,AAAoB,UAApB,OAAO,GAAyB,AAAa,OAAb,EACzB,KAAK,SAAS,CAAC,GAEf,CAAA,EAAG,EAAA,CAAU,AAE5B,CAEU,eAAe,CAA8B,CAAY,QAC/D,AAAI,aAAiB,SACV,EAGJ,OAAO,IAAI,CAAC,GAAO,MAAM,CAAC,CAAC,EAAU,KACxC,IAAM,EAAW,CAAK,CAAC,EAAI,CAG3B,IAAK,IAAM,KAFoB,aAAoB,MAAQ,EAAW,CAAC,EAAS,CAExC,CACpC,IAAM,EAAa,aAAoB,MAAQ,aAAoB,KACnE,EAAS,MAAM,CAAC,EAAK,EAAa,EAAW,IAAI,CAAC,iBAAiB,CAAC,GACxE,CAEA,OAAO,CACX,EAAG,IAAI,SACX,CAEA,MAAM,QACF,CAAkC,CACgB,CAClD,GAAM,CAAA,YAAE,CAAW,CAAA,KAAE,CAAI,CAAE,CAAG,EAEzB,AAAA,CAAA,EAAA,cAAA,KAAI,AAAJ,EAAM,KACH,AAAA,wBAAA,GAAwC,AAAgB,UAAhB,OAAO,GAC/C,CAAA,EAAc,IAAI,CAAG,IAAI,CAAC,cAAc,CAAC,EAD7C,EAII,AAAA,eAAA,GAAoC,AAAgB,UAAhB,OAAO,GAC3C,CAAA,EAAc,IAAI,CAAG,KAAK,SAAS,CAAC,EADxC,GAKJ,IAAM,EAAe,AAAA,CAAA,EAAA,cAAA,KAAI,AAAJ,EACjB,EAAe,MAAM,EAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAI,CAAA,EAAQ,MAAM,IAAI,CAAC,wBAAwB,GAAK,CAAC,EACvG,EAAc,CAAE,QAAS,CAAE,eAAgB,CAAY,CAAE,EAAI,CAAC,EAC9D,GAGJ,GAAI,CACA,GAAM,CACF,KAAM,CAAO,CAAA,OACb,CAAM,CAAA,WACN,CAAU,CAAA,QACV,CAAO,CACV,CAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAkC,GAEtE,MAAO,CACH,QAAS,CAAA,EACT,KAAM,IAAI,CAAC,aAAa,CAAO,GAC/B,QAAA,EACA,OAAA,EACA,WAAA,EACA,QAAS,CACb,CACJ,CAAE,MAAO,EAAO,CACZ,IAAM,EAA8B,CAChC,QAAS,CAAA,EACT,OAAQ,GACR,WAAY,OAAO,GACnB,MAAA,CACJ,EAaA,GAXI,AAAA,CAAA,EAAA,aAAA,YAAW,AAAX,EAA0B,KAC1B,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,GAC3B,EAAO,OAAO,CAAG,EAAM,QAAQ,EAAE,KACjC,EAAO,IAAI,CAAG,IAAI,CAAC,aAAa,CAAQ,EAAM,QAAQ,EAAE,MACxD,EAAO,MAAM,CAAG,EAAM,QAAQ,EAAE,QAAU,EAAO,MAAM,CACvD,EAAO,UAAU,CAAG,EAAM,QAAQ,EAAE,YAAc,EAAO,UAAU,CACnE,EAAO,OAAO,CAAG,EAAM,QAAQ,EAAE,SAGrC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,GAElB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAI,CAAC,EAAc,WAAW,CACtD,MAAM,EAGV,OAAO,CACX,CACJ,CAEA,IAAqD,CAAW,CAAE,CAA4B,CAAE,CAC5F,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,MACR,IAAA,CACJ,EACJ,CAEA,OAAwD,CAAW,CAAE,CAA4B,CAAE,CAC/F,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,SACR,IAAA,CACJ,EACJ,CAEA,KAAsD,CAAW,CAAE,CAA4B,CAAE,CAC7F,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,OACR,IAAA,CACJ,EACJ,CAEA,QAAyD,CAAW,CAAE,CAA4B,CAAE,CAChG,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,UACR,IAAA,CACJ,EACJ,CAEA,KAAsD,CAAW,CAAE,CAAW,CAAE,CAA4B,CAAE,CAC1G,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,OACR,IAAA,EACA,KAAA,CACJ,EACJ,CAEA,IAAqD,CAAW,CAAE,CAAW,CAAE,CAA4B,CAAE,CACzG,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,MACR,IAAA,EACA,KAAA,CACJ,EACJ,CAEA,MAAuD,CAAW,CAAE,CAAW,CAAE,CAA4B,CAAE,CAC3G,OAAO,IAAI,CAAC,OAAO,CAAoB,CACnC,GAAG,CAAM,CACT,OAAQ,QACR,IAAA,EACA,KAAA,CACJ,EACJ,CAEA,UAA0B,CACtB,OAAO,IAAI,CAAC,aAAa,AAC7B,CAEA,YAAY,CAAqB,CAAE,CAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAI,OAAQ,KAAK,SAAS,CAAC,GAClF,CAEA,aAA+B,CAC3B,IAAM,EAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAI,QACpE,OAAO,EAAQ,KAAK,KAAK,CAAC,GAAqB,IACnD,CAEA,WAAmD,CAC/C,OAAO,IAAI,CAAC,MAAM,AACtB,CAGJ,C,I,0B,C,E,e,0B,Y,I,0CE/PO,OAAM,kDAIH,0CAIN,YAAwC,CAAsD,CAAE,CAC5F,KAAK,CAAC,GAAA,IAAA,CAD8B,MAAA,CAAA,EAAA,IAAA,CAHvB,IAAA,CAAO,GAAI,CAAA,EAAA,kBAAA,KAAI,AAAJ,CAK5B,CAES,WAA4D,CACjE,OAAO,KAAK,CAAC,WACjB,CAEA,uBAAuB,CAA4C,CAAE,CACjE,IAAI,CAAC,mBAAmB,CAAG,CAC/B,CAEA,MAAyB,0BAEvB,CACE,GAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,gBACzB,MAAO,CAAC,EAGZ,GAAI,CAAA,YAAE,CAAW,CAAE,CAAG,IAAI,CAAC,WAAW,IAAM,CAAC,EAE7C,GAAI,CAAC,EAED,OADA,AAAA,eAAA,OAAM,CAAE,IAAI,CAAC,oEACN,CAAC,EAGZ,GAAI,AAA+B,CAAA,IAA/B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAc,IAAI,CAAC,cAAc,CAAC,GAC5D,GAAI,CACA,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UACrB,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,AAAA,eAAA,OAAM,CAAE,KAAK,CAAC,mCAElB,EAAe,AAAA,CAAA,MAAM,IAAI,CAAC,WAAW,EAAA,EAAI,WAAW,CACpD,IAAI,CAAC,IAAI,CAAC,MAAM,EACpB,EACJ,CAAE,MAAO,EAAO,CACZ,GAAI,IAAU,kBAAA,UAAS,CACnB,EAAc,IAAI,CAAC,WAAW,IAAI,iBAElC,MAAM,CAEd,CAGJ,MAAO,CACH,QAAS,CACL,cAAe,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAI,SAAS,CAAC,EAAE,EAAA,CAAa,AACzE,CACJ,CACJ,CAEQ,eAAe,CAAa,CAAW,CAC3C,IAAM,EAAU,AAAA,CAAA,EAAA,iBAAA,SAAQ,AAAR,EAAU,SAE1B,CAAK,EAAQ,GAAG,EAIT,AAAA,CAAA,EAAA,eAAA,QAAO,AAAP,EAAS,AAAA,CAAA,EAAA,eAAA,UAAS,AAAT,EAAW,AAAc,IAAd,EAAQ,GAAG,CAAS,GAAI,KAAK,GAAG,GAC/D,CAEA,MAAgB,aAAc,CAC1B,IAAM,EAAW,IAAI,CAAC,MAAM,CAAC,aAAa,EAAI,IAAI,CAAC,mBAAmB,CAEtE,GAAI,CAAC,EACD,MAAM,AAAI,MAAM,qCAGpB,GAAI,CACA,IAAM,EAAW,MAAM,IAEvB,OADA,IAAI,CAAC,WAAW,CAAC,GACV,CACX,CAAE,MAAO,EAAO,CAEZ,MADA,AAAA,eAAA,OAAM,CAAE,IAAI,CAAC,yBAA0B,GACjC,CACV,CACJ,CACJ,C,uB,O,O,C,2B,uB,O,O,C,2B,uB,O,O,C,2B,uB,O,O,C","sources":["<anon>","src/index.ts","src/BaseApi.ts","src/BaseClient.ts","src/utils.ts","src/JwtClient.ts"],"sourcesContent":["var $5Sh66$autobind = require(\"auto-bind\");\nvar $5Sh66$axios = require(\"axios\");\nvar $5Sh66$axiosbetterstacktrace = require(\"axios-better-stacktrace\");\nvar $5Sh66$lodash = require(\"lodash\");\nvar $5Sh66$changecasekeys = require(\"change-case/keys\");\nvar $5Sh66$asyncmutex = require(\"async-mutex\");\nvar $5Sh66$consola = require(\"consola\");\nvar $5Sh66$datefns = require(\"date-fns\");\nvar $5Sh66$jwtdecode = require(\"jwt-decode\");\n\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $d6fbd40018854b1b$exports = {};\n\n$parcel$export($d6fbd40018854b1b$exports, \"BaseApi\", () => $d6fbd40018854b1b$export$3ad201792064a82b);\n\nclass $d6fbd40018854b1b$export$3ad201792064a82b {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n constructor(apiClient){\n this.apiClient = apiClient;\n (0, ($parcel$interopDefault($5Sh66$autobind)))(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n getApiClient() {\n return this.apiClient;\n }\n}\n\n\nvar $e147b9ba9f5381c6$exports = {};\n\n$parcel$export($e147b9ba9f5381c6$exports, \"ContentType\", () => $e147b9ba9f5381c6$export$e2e108cbe2e4f865);\n$parcel$export($e147b9ba9f5381c6$exports, \"BaseClient\", () => $e147b9ba9f5381c6$export$4f22f74eddb7716a);\n\n\n\n\nvar $9d1cc81eab16d180$exports = {};\n\n$parcel$export($9d1cc81eab16d180$exports, \"CaseFormat\", () => $9d1cc81eab16d180$export$6d78a2325ef337dd);\n$parcel$export($9d1cc81eab16d180$exports, \"toCamelCase\", () => $9d1cc81eab16d180$export$86f54f62aa7a7514);\n$parcel$export($9d1cc81eab16d180$exports, \"toSnakeCase\", () => $9d1cc81eab16d180$export$cc8b315fc368b20a);\n\nvar $9d1cc81eab16d180$export$6d78a2325ef337dd = /*#__PURE__*/ function(CaseFormat) {\n CaseFormat[\"Camel\"] = \"camel\";\n CaseFormat[\"Snake\"] = \"snake\";\n CaseFormat[\"Original\"] = \"original\";\n return CaseFormat;\n}({});\nconst $9d1cc81eab16d180$export$86f54f62aa7a7514 = (obj)=>{\n return $5Sh66$changecasekeys.camelCase(obj, Infinity);\n};\nconst $9d1cc81eab16d180$export$cc8b315fc368b20a = (obj)=>{\n return $5Sh66$changecasekeys.snakeCase(obj, Infinity);\n};\n\n\nvar $e147b9ba9f5381c6$export$e2e108cbe2e4f865 = /*#__PURE__*/ function(ContentType) {\n ContentType[\"Json\"] = \"application/json\";\n ContentType[\"FormData\"] = \"multipart/form-data\";\n ContentType[\"UrlEncoded\"] = \"application/x-www-form-urlencoded\";\n ContentType[\"Text\"] = \"text/plain\";\n return ContentType;\n}({});\nclass $e147b9ba9f5381c6$export$4f22f74eddb7716a {\n constructor(config){\n this.config = config;\n (0, ($parcel$interopDefault($5Sh66$autobind)))(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = (0, ($parcel$interopDefault($5Sh66$axios))).create({\n ...config.axiosConfig,\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.axiosConfig?.headers\n },\n transformResponse: [\n ...Array.isArray((0, ($parcel$interopDefault($5Sh66$axios))).defaults.transformResponse) ? (0, ($parcel$interopDefault($5Sh66$axios))).defaults.transformResponse : (0, ($parcel$interopDefault($5Sh66$axios))).defaults.transformResponse ? [\n (0, ($parcel$interopDefault($5Sh66$axios))).defaults.transformResponse\n ] : []\n ]\n });\n (0, ($parcel$interopDefault($5Sh66$axiosbetterstacktrace)))(this.axiosInstance);\n }\n transformData(data) {\n if (this.config.caseFormat === (0, $9d1cc81eab16d180$export$6d78a2325ef337dd).Camel) return (0, $9d1cc81eab16d180$export$86f54f62aa7a7514)(data);\n if (this.config.caseFormat === (0, $9d1cc81eab16d180$export$6d78a2325ef337dd).Snake) return (0, $9d1cc81eab16d180$export$cc8b315fc368b20a)(data);\n return data;\n }\n stringifyFormItem(formItem) {\n if (typeof formItem === 'object' && formItem !== null) return JSON.stringify(formItem);\n else return `${formItem}`;\n }\n createFormData(input) {\n if (input instanceof FormData) return input;\n return Object.keys(input).reduce((formData, key)=>{\n const property = input[key];\n const propertyContent = property instanceof Array ? property : [\n property\n ];\n for (const formItem of propertyContent){\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n return formData;\n }, new FormData());\n }\n async request(requestConfig) {\n const { contentType: contentType, data: data } = requestConfig;\n if (!(0, $5Sh66$lodash.isNil)(data)) {\n if (contentType === \"multipart/form-data\" && typeof data === 'object') requestConfig.data = this.createFormData(data);\n if (contentType === \"text/plain\" && typeof data !== 'string') requestConfig.data = JSON.stringify(data);\n }\n const mergedConfig = (0, $5Sh66$lodash.merge)(requestConfig.secure ?? this.config.defaultSecure ?? true ? await this.prepareAuthRequestConfig() : {}, contentType ? {\n headers: {\n 'Content-Type': contentType\n }\n } : {}, requestConfig);\n try {\n const { data: rawData, status: status, statusText: statusText, headers: headers } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: this.transformData(rawData),\n rawData: rawData,\n status: status,\n statusText: statusText,\n headers: headers\n };\n } catch (error) {\n const result = {\n success: false,\n status: -1,\n statusText: String(error),\n error: error\n };\n if ((0, $5Sh66$axios.isAxiosError)(error)) {\n this.config.onAxiosError?.(error);\n result.rawData = error.response?.data;\n result.data = this.transformData(error.response?.data);\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n result.headers = error.response?.headers;\n }\n this.config.onError?.(error);\n if (!this.config.handleError && !requestConfig.handleError) throw error;\n return result;\n }\n }\n get(url, config) {\n return this.request({\n ...config,\n method: 'GET',\n url: url\n });\n }\n delete(url, config) {\n return this.request({\n ...config,\n method: 'DELETE',\n url: url\n });\n }\n head(url, config) {\n return this.request({\n ...config,\n method: 'HEAD',\n url: url\n });\n }\n options(url, config) {\n return this.request({\n ...config,\n method: 'OPTIONS',\n url: url\n });\n }\n post(url, data, config) {\n return this.request({\n ...config,\n method: 'POST',\n url: url,\n data: data\n });\n }\n put(url, data, config) {\n return this.request({\n ...config,\n method: 'PUT',\n url: url,\n data: data\n });\n }\n patch(url, data, config) {\n return this.request({\n ...config,\n method: 'PATCH',\n url: url,\n data: data\n });\n }\n getAxios() {\n return this.axiosInstance;\n }\n setAuthData(data) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n getAuthData() {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? JSON.parse(data) : null;\n }\n getConfig() {\n return this.config;\n }\n}\n\n\nvar $f04719e3bb600f8d$exports = {};\n\n$parcel$export($f04719e3bb600f8d$exports, \"JwtClient\", () => $f04719e3bb600f8d$export$f280b732bbc5934b);\n\n\n\n\n\nclass $f04719e3bb600f8d$export$f280b732bbc5934b extends (0, $e147b9ba9f5381c6$export$4f22f74eddb7716a) {\n constructor(config){\n super(config), this.config = config, this.lock = new (0, $5Sh66$asyncmutex.Mutex)();\n }\n getConfig() {\n return super.getConfig();\n }\n setRenewTokensCallback(renewTokensCallback) {\n this.renewTokensCallback = renewTokensCallback;\n }\n async prepareAuthRequestConfig() {\n if (this.config.axiosConfig?.withCredentials) return {};\n let { accessToken: accessToken } = this.getAuthData() || {};\n if (!accessToken) {\n (0, $5Sh66$consola.consola).warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) try {\n await this.lock.runExclusive(async ()=>{\n if (this.config.debug) (0, $5Sh66$consola.consola).debug(\"Access token expired. Renewing\\u2026\");\n accessToken = (await this.renewTokens()).accessToken;\n this.lock.cancel();\n });\n } catch (error) {\n if (error === (0, $5Sh66$asyncmutex.E_CANCELED)) accessToken = this.getAuthData()?.accessToken;\n else throw error;\n }\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`\n }\n };\n }\n isTokenExpired(token) {\n const payload = (0, $5Sh66$jwtdecode.jwtDecode)(token);\n if (!payload.exp) return true;\n return (0, $5Sh66$datefns.isBefore)((0, $5Sh66$datefns.subMinutes)(payload.exp * 1000, 1), Date.now());\n }\n async renewTokens() {\n const callback = this.config.onRenewTokens ?? this.renewTokensCallback;\n if (!callback) throw new Error('No renew tokens callback provided');\n try {\n const authData = await callback();\n this.setAuthData(authData);\n return authData;\n } catch (error) {\n (0, $5Sh66$consola.consola).warn('Could not renew tokens', error);\n throw error;\n }\n }\n}\n\n\n\n$parcel$exportWildcard(module.exports, $d6fbd40018854b1b$exports);\n$parcel$exportWildcard(module.exports, $e147b9ba9f5381c6$exports);\n$parcel$exportWildcard(module.exports, $f04719e3bb600f8d$exports);\n$parcel$exportWildcard(module.exports, $9d1cc81eab16d180$exports);\n\n\n//# sourceMappingURL=index.js.map\n","export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\nexport * from './utils';\n","import autoBind from 'auto-bind';\nimport { BaseClient } from './BaseClient';\nimport { CaseFormat } from './utils';\n\nexport abstract class BaseApi<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n ApiClient extends BaseClient<HandleError, Format, unknown> = BaseClient<HandleError, Format>,\n> {\n // request: ApiClient['request'];\n // get: ApiClient['get'];\n // delete: ApiClient['delete'];\n // head: ApiClient['head'];\n // options: ApiClient['options'];\n // post: ApiClient['post'];\n // put: ApiClient['put'];\n // patch: ApiClient['patch'];\n\n constructor(protected readonly apiClient: ApiClient) {\n autoBind(this);\n // this.request = this.client.request;\n // this.get = this.client.get;\n // this.delete = this.client.delete;\n // this.head = this.client.head;\n // this.options = this.client.options;\n // this.post = this.client.post;\n // this.put = this.client.put;\n // this.patch = this.client.patch;\n // this.get = this.client.get;\n }\n\n getApiClient(): ApiClient {\n return this.apiClient;\n }\n}\n","import autoBind from 'auto-bind';\nimport axios, {\n AxiosError,\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n AxiosResponseHeaders,\n HttpStatusCode,\n isAxiosError,\n} from 'axios';\nimport axiosBetterStacktrace from 'axios-better-stacktrace';\nimport { isNil, merge } from 'lodash';\nimport { CaseFormat, toCamelCase, toSnakeCase, TransformData } from './utils';\n\nexport interface BaseClientConfig<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n> {\n debug?: boolean;\n baseUrl: string;\n handleError?: HandleError;\n caseFormat?: Format;\n storage?: Storage;\n defaultSecure?: boolean;\n authDataStorageKey?: string;\n axiosConfig?: AxiosRequestConfig;\n onAxiosError?: (error: AxiosError) => void;\n onError?: (error: unknown) => void;\n}\n\nexport enum ContentType {\n Json = 'application/json',\n FormData = 'multipart/form-data',\n UrlEncoded = 'application/x-www-form-urlencoded',\n Text = 'text/plain',\n}\n\nexport type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {\n secure?: boolean;\n contentType?: ContentType;\n handleError?: boolean;\n};\n\nexport type ResponseStatus = {\n status: HttpStatusCode | -1;\n statusText: string;\n};\n\nexport type SuccessClientResponse<Data = unknown, RawData = unknown> = ResponseStatus & {\n success: true;\n data: Data;\n rawData: RawData;\n headers: AxiosResponseHeaders;\n};\n\nexport type ErrorClientResponse = ResponseStatus & {\n success: false;\n data?: any;\n rawData?: any;\n error: unknown;\n headers?: AxiosResponseHeaders;\n};\n\nexport type ClientResponse<\n Data = unknown,\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n> = HandleError extends true\n ? SuccessClientResponse<TransformData<Data, Format>, Data> | ErrorClientResponse\n : SuccessClientResponse<TransformData<Data, Format>, Data>;\n\nexport abstract class BaseClient<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData = unknown,\n> {\n protected readonly axiosInstance: AxiosInstance;\n protected readonly storage: Storage;\n\n constructor(protected readonly config: BaseClientConfig<HandleError, Format>) {\n autoBind(this);\n this.storage = config.storage ?? sessionStorage;\n this.axiosInstance = axios.create({\n ...config.axiosConfig,\n baseURL: config.baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...config.axiosConfig?.headers,\n },\n transformResponse: [\n ...(Array.isArray(axios.defaults.transformResponse)\n ? axios.defaults.transformResponse\n : axios.defaults.transformResponse\n ? [axios.defaults.transformResponse]\n : []),\n ],\n });\n axiosBetterStacktrace(this.axiosInstance);\n }\n\n protected transformData<T>(data: any): TransformData<T, Format> {\n if (this.config.caseFormat === CaseFormat.Camel) {\n return toCamelCase(data);\n }\n if (this.config.caseFormat === CaseFormat.Snake) {\n return toSnakeCase(data);\n }\n return data;\n }\n\n protected stringifyFormItem(formItem: unknown) {\n if (typeof formItem === 'object' && formItem !== null) {\n return JSON.stringify(formItem);\n } else {\n return `${formItem}`;\n }\n }\n\n protected createFormData(input: Record<string, unknown>): FormData {\n if (input instanceof FormData) {\n return input;\n }\n\n return Object.keys(input).reduce((formData, key) => {\n const property = input[key];\n const propertyContent: any[] = property instanceof Array ? property : [property];\n\n for (const formItem of propertyContent) {\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n\n return formData;\n }, new FormData());\n }\n\n async request<Data = unknown, Error = unknown, Body = unknown>(\n requestConfig: RequestConfig<Body>,\n ): Promise<ClientResponse<Data, HandleError, Format>> {\n const { contentType, data } = requestConfig;\n\n if (!isNil(data)) {\n if (contentType === ContentType.FormData && typeof data === 'object') {\n requestConfig.data = this.createFormData(data as Record<string, unknown>) as any;\n }\n\n if (contentType === ContentType.Text && typeof data !== 'string') {\n requestConfig.data = JSON.stringify(data) as any;\n }\n }\n\n const mergedConfig = merge(\n (requestConfig.secure ?? this.config.defaultSecure ?? true) ? await this.prepareAuthRequestConfig() : {},\n contentType ? { headers: { 'Content-Type': contentType } } : {},\n requestConfig,\n );\n\n try {\n const {\n data: rawData,\n status,\n statusText,\n headers,\n } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(mergedConfig);\n\n return {\n success: true,\n data: this.transformData<Data>(rawData),\n rawData,\n status,\n statusText,\n headers: headers as AxiosResponseHeaders,\n };\n } catch (error) {\n const result: ErrorClientResponse = {\n success: false,\n status: -1,\n statusText: String(error),\n error,\n };\n\n if (isAxiosError<Error, Data>(error)) {\n this.config.onAxiosError?.(error);\n result.rawData = error.response?.data;\n result.data = this.transformData<Error>(error.response?.data);\n result.status = error.response?.status ?? result.status;\n result.statusText = error.response?.statusText ?? result.statusText;\n result.headers = error.response?.headers as AxiosResponseHeaders;\n }\n\n this.config.onError?.(error);\n\n if (!this.config.handleError && !requestConfig.handleError) {\n throw error;\n }\n\n return result as ClientResponse<Data, HandleError, Format>;\n }\n }\n\n get<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'GET',\n url,\n });\n }\n\n delete<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'DELETE',\n url,\n });\n }\n\n head<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'HEAD',\n url,\n });\n }\n\n options<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'OPTIONS',\n url,\n });\n }\n\n post<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'POST',\n url,\n data,\n });\n }\n\n put<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PUT',\n url,\n data,\n });\n }\n\n patch<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\n return this.request<Data, Error, Body>({\n ...config,\n method: 'PATCH',\n url,\n data,\n });\n }\n\n getAxios(): AxiosInstance {\n return this.axiosInstance;\n }\n\n setAuthData(data: AuthData | null) {\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\n }\n\n getAuthData(): AuthData | null {\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\n return data ? (JSON.parse(data) as AuthData) : null;\n }\n\n getConfig(): BaseClientConfig<HandleError, Format> {\n return this.config;\n }\n\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\n}\n","import * as changeKeys from 'change-case/keys';\n\nexport enum CaseFormat {\n Camel = 'camel',\n Snake = 'snake',\n Original = 'original',\n}\n\nexport type CamelCase<S extends string> = S extends `${infer T}_${infer U}`\n ? `${Lowercase<T>}${Capitalize<CamelCase<U>>}`\n : S extends Uppercase<S>\n ? Lowercase<S>\n : S;\n\nexport type SnakeCase<S extends string> = S extends `${infer T}${infer U}`\n ? T extends Uppercase<T>\n ? T extends Lowercase<T>\n ? `${T}${SnakeCase<U>}`\n : `_${Lowercase<T>}${SnakeCase<U>}`\n : `${T}${SnakeCase<U>}`\n : S;\n\nexport type CamelCaseKeys<T> =\n T extends Array<infer U>\n ? Array<CamelCaseKeys<U>>\n : T extends object\n ? { [K in keyof T as CamelCase<K & string>]: CamelCaseKeys<T[K]> }\n : T;\n\nexport type SnakeCaseKeys<T> =\n T extends Array<infer U>\n ? Array<SnakeCaseKeys<U>>\n : T extends object\n ? { [K in keyof T as SnakeCase<K & string>]: SnakeCaseKeys<T[K]> }\n : T;\n\nexport type TransformData<T, F extends CaseFormat | undefined> = CaseFormat.Original | undefined extends F\n ? T\n : F extends CaseFormat.Camel\n ? CamelCaseKeys<T>\n : F extends CaseFormat.Snake\n ? SnakeCaseKeys<T>\n : T;\n\nexport const toCamelCase = (obj: any): any => {\n return changeKeys.camelCase(obj, Infinity);\n};\n\nexport const toSnakeCase = (obj: any): any => {\n return changeKeys.snakeCase(obj, Infinity);\n};\n","import { E_CANCELED, Mutex } from 'async-mutex';\nimport { consola } from 'consola';\nimport { isBefore, subMinutes } from 'date-fns';\nimport { jwtDecode } from 'jwt-decode';\nimport { BaseClient, BaseClientConfig, RequestConfig } from './BaseClient';\nimport { CaseFormat } from './utils';\n\nexport interface JwtClientConfig<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClientConfig<HandleError, Format> {\n authSchema?: string;\n autoRenewToken?: boolean;\n onRenewTokens?: () => Promise<AuthData>;\n}\n\nexport interface JwtAuthData {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport class JwtClient<\n HandleError extends boolean = boolean,\n Format extends CaseFormat = CaseFormat.Original,\n AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, Format, AuthData> {\n private readonly lock = new Mutex();\n private renewTokensCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError, Format, AuthData>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError, Format, AuthData> {\n return super.getConfig() as JwtClientConfig<HandleError, Format, AuthData>;\n }\n\n setRenewTokensCallback(renewTokensCallback: () => Promise<AuthData>) {\n this.renewTokensCallback = renewTokensCallback;\n }\n\n protected override async prepareAuthRequestConfig(): Promise<\n Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>\n > {\n if (this.config.axiosConfig?.withCredentials) {\n return {};\n }\n\n let { accessToken } = this.getAuthData() || {};\n\n if (!accessToken) {\n consola.warn('No access token found. Please set auth data after authorization.');\n return {};\n }\n\n if (this.config.autoRenewToken !== false && this.isTokenExpired(accessToken)) {\n try {\n await this.lock.runExclusive(async () => {\n if (this.config.debug) {\n consola.debug('Access token expired. Renewing…');\n }\n accessToken = (await this.renewTokens()).accessToken;\n this.lock.cancel();\n });\n } catch (error) {\n if (error === E_CANCELED) {\n accessToken = this.getAuthData()?.accessToken;\n } else {\n throw error;\n }\n }\n }\n\n return {\n headers: {\n Authorization: `${this.config.authSchema ?? 'Bearer'} ${accessToken}`,\n },\n };\n }\n\n private isTokenExpired(token: string): boolean {\n const payload = jwtDecode(token);\n\n if (!payload.exp) {\n return true;\n }\n\n return isBefore(subMinutes(payload.exp * 1000, 1), Date.now());\n }\n\n protected async renewTokens() {\n const callback = this.config.onRenewTokens ?? this.renewTokensCallback;\n\n if (!callback) {\n throw new Error('No renew tokens callback provided');\n }\n\n try {\n const authData = await callback();\n this.setAuthData(authData);\n return authData;\n } catch (error) {\n consola.warn('Could not renew tokens', error);\n throw error;\n }\n }\n}\n"],"names":["$5Sh66$autobind","require","$5Sh66$axios","$5Sh66$axiosbetterstacktrace","$5Sh66$lodash","$5Sh66$changecasekeys","$5Sh66$asyncmutex","$5Sh66$consola","$5Sh66$datefns","$5Sh66$jwtdecode","$parcel$exportWildcard","dest","source","Object","keys","forEach","key","prototype","hasOwnProperty","call","defineProperty","enumerable","get","$parcel$interopDefault","a","__esModule","default","$parcel$export","e","n","v","s","set","configurable","$d6fbd40018854b1b$exports","$d6fbd40018854b1b$export$3ad201792064a82b","apiClient","getApiClient","$e147b9ba9f5381c6$exports","$e147b9ba9f5381c6$export$e2e108cbe2e4f865","$e147b9ba9f5381c6$export$4f22f74eddb7716a","$9d1cc81eab16d180$exports","$9d1cc81eab16d180$export$6d78a2325ef337dd","$9d1cc81eab16d180$export$86f54f62aa7a7514","$9d1cc81eab16d180$export$cc8b315fc368b20a","CaseFormat","obj","camelCase","Infinity","snakeCase","ContentType","config","storage","sessionStorage","axiosInstance","create","axiosConfig","baseURL","baseUrl","headers","transformResponse","Array","isArray","defaults","transformData","data","caseFormat","Camel","Snake","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","reduce","formData","property","isFileType","Blob","File","append","request","requestConfig","contentType","isNil","mergedConfig","merge","secure","defaultSecure","prepareAuthRequestConfig","rawData","status","statusText","success","error","result","String","isAxiosError","onAxiosError","response","onError","handleError","url","method","delete","head","options","post","put","patch","getAxios","setAuthData","setItem","authDataStorageKey","getAuthData","getItem","parse","getConfig","$f04719e3bb600f8d$exports","$f04719e3bb600f8d$export$f280b732bbc5934b","lock","Mutex","setRenewTokensCallback","renewTokensCallback","withCredentials","accessToken","consola","warn","autoRenewToken","isTokenExpired","runExclusive","debug","renewTokens","cancel","E_CANCELED","Authorization","authSchema","token","payload","jwtDecode","exp","isBefore","subMinutes","Date","now","callback","onRenewTokens","Error","authData","module","exports"],"version":3,"file":"index.js.map","sourceRoot":"../"}
@@ -1,4 +1,4 @@
1
- import { AxiosError, AxiosInstance, AxiosRequestConfig, HttpStatusCode } from "axios";
1
+ import { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponseHeaders, HttpStatusCode } from "axios";
2
2
  enum CaseFormat {
3
3
  Camel = "camel",
4
4
  Snake = "snake",
@@ -44,12 +44,14 @@ type SuccessClientResponse<Data = unknown, RawData = unknown> = ResponseStatus &
44
44
  success: true;
45
45
  data: Data;
46
46
  rawData: RawData;
47
+ headers: AxiosResponseHeaders;
47
48
  };
48
49
  type ErrorClientResponse = ResponseStatus & {
49
50
  success: false;
50
51
  data?: any;
51
52
  rawData?: any;
52
53
  error: unknown;
54
+ headers?: AxiosResponseHeaders;
53
55
  };
54
56
  type ClientResponse<Data = unknown, HandleError extends boolean = boolean, Format extends CaseFormat = CaseFormat.Original> = HandleError extends true ? SuccessClientResponse<TransformData<Data, Format>, Data> | ErrorClientResponse : SuccessClientResponse<TransformData<Data, Format>, Data>;
55
57
  declare abstract class BaseClient<HandleError extends boolean = boolean, Format extends CaseFormat = CaseFormat.Original, AuthData = unknown> {