@orbis-systems/orbis-api-clients 0.8.6 → 0.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aesmidas/index.d.ts +20 -0
- package/dist/aesmidas/index.d.ts.map +1 -1
- package/dist/aesmidas/index.esm.js +1 -1
- package/dist/aesmidas/index.esm.js.map +1 -1
- package/dist/aesmidas/index.js +1 -1
- package/dist/aesmidas/index.js.map +1 -1
- package/dist/bridgewise/index.d.ts +712 -712
- package/dist/bridgewise/index.d.ts.map +1 -1
- package/dist/bridgewise/index.esm.js +1 -1
- package/dist/bridgewise/index.esm.js.map +1 -1
- package/dist/bridgewise/index.js +1 -1
- package/dist/bridgewise/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/insight/index.d.ts +67 -67
- package/dist/insight/index.d.ts.map +1 -1
- package/dist/insight/index.esm.js +1 -1
- package/dist/insight/index.esm.js.map +1 -1
- package/dist/insight/index.js +1 -1
- package/dist/insight/index.js.map +1 -1
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.esm.js.map +1 -1
- package/dist/middleware/index.js.map +1 -1
- package/dist/orbis/index.d.ts.map +1 -1
- package/dist/orbis/index.esm.js.map +1 -1
- package/dist/orbis/index.js.map +1 -1
- package/dist/uma/index.d.ts +302 -191
- package/dist/uma/index.d.ts.map +1 -1
- package/dist/uma/index.esm.js +1 -1
- package/dist/uma/index.esm.js.map +1 -1
- package/dist/uma/index.js +1 -1
- package/dist/uma/index.js.map +1 -1
- package/package.json +154 -154
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["src/src/BaseClient.ts","src/src/BaseApi.ts","src/src/JwtClient.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,"export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\n"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../"}
|
|
1
|
+
{"mappings":"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","sources":["src/src/BaseClient.ts","src/src/BaseApi.ts","src/src/JwtClient.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,"export * from './BaseApi';\r\nexport * from './BaseClient';\r\nexport * from './JwtClient';\r\n"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../"}
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["<anon>","src/index.ts","src/BaseApi.ts","src/BaseClient.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 {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 $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 });\n (0, $hfdUH$axiosbetterstacktrace)(this.axiosInstance);\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: data, status: status, statusText: statusText } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: data,\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.data = 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\nexport {$bc46d0f9a75295f8$export$3ad201792064a82b as BaseApi, $7f0ef0073dbac97f$export$e2e108cbe2e4f865 as ContentType, $7f0ef0073dbac97f$export$4f22f74eddb7716a as BaseClient, $c53992c281676acd$export$f280b732bbc5934b as JwtClient};\n//# sourceMappingURL=index.esm.js.map\n","export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\n","import autoBind from 'auto-bind';\nimport { BaseClient } from './BaseClient';\n\nexport class BaseApi<\n HandleError extends boolean = boolean,\n ApiClient extends BaseClient<HandleError> = BaseClient<HandleError>,\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';\n\nexport interface BaseClientConfig<HandleError extends boolean = boolean> {\n debug?: boolean;\n baseUrl: string;\n handleError?: HandleError;\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> = ResponseStatus & {\n success: true;\n data: Data;\n};\n\nexport type ErrorClientResponse = ResponseStatus & {\n success: false;\n data?: any;\n error: unknown;\n};\n\nexport type ClientResponse<Data = unknown, HandleError extends boolean = boolean> = HandleError extends true\n ? SuccessClientResponse<Data> | ErrorClientResponse\n : SuccessClientResponse<Data>;\n\nexport abstract class BaseClient<HandleError extends boolean = boolean, AuthData = unknown> {\n protected readonly axiosInstance: AxiosInstance;\n protected readonly storage: Storage;\n\n constructor(protected readonly config: BaseClientConfig<HandleError>) {\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 });\n axiosBetterStacktrace(this.axiosInstance);\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>> {\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 { data, status, statusText } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(\n mergedConfig,\n );\n\n return {\n success: true,\n data,\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.data = 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>;\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> {\n return this.config;\n }\n\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\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';\n\nexport interface JwtClientConfig<HandleError extends boolean = boolean, AuthData extends JwtAuthData = JwtAuthData>\n extends BaseClientConfig<HandleError> {\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 AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, AuthData> {\n private readonly lock = new Mutex();\n private renewTokensCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError, AuthData>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError> {\n return super.getConfig() as JwtClientConfig<HandleError>;\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$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","ContentType","$7f0ef0073dbac97f$exports","$7f0ef0073dbac97f$export$e2e108cbe2e4f865","$7f0ef0073dbac97f$export$4f22f74eddb7716a","config","storage","sessionStorage","axiosInstance","create","axiosConfig","baseURL","baseUrl","headers","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","keys","reduce","formData","key","property","Array","isFileType","Blob","File","append","request","requestConfig","contentType","data","mergedConfig","secure","defaultSecure","prepareAuthRequestConfig","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"],"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/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 {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 $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 });\n (0, $hfdUH$axiosbetterstacktrace)(this.axiosInstance);\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: data, status: status, statusText: statusText } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: data,\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.data = 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\nexport {$bc46d0f9a75295f8$export$3ad201792064a82b as BaseApi, $7f0ef0073dbac97f$export$e2e108cbe2e4f865 as ContentType, $7f0ef0073dbac97f$export$4f22f74eddb7716a as BaseClient, $c53992c281676acd$export$f280b732bbc5934b as JwtClient};\n//# sourceMappingURL=index.esm.js.map\n","export * from './BaseApi';\r\nexport * from './BaseClient';\r\nexport * from './JwtClient';\r\n","import autoBind from 'auto-bind';\r\nimport { BaseClient } from './BaseClient';\r\n\r\nexport class BaseApi<\r\n HandleError extends boolean = boolean,\r\n ApiClient extends BaseClient<HandleError> = BaseClient<HandleError>,\r\n> {\r\n // request: ApiClient['request'];\r\n // get: ApiClient['get'];\r\n // delete: ApiClient['delete'];\r\n // head: ApiClient['head'];\r\n // options: ApiClient['options'];\r\n // post: ApiClient['post'];\r\n // put: ApiClient['put'];\r\n // patch: ApiClient['patch'];\r\n\r\n constructor(protected readonly apiClient: ApiClient) {\r\n autoBind(this);\r\n // this.request = this.client.request;\r\n // this.get = this.client.get;\r\n // this.delete = this.client.delete;\r\n // this.head = this.client.head;\r\n // this.options = this.client.options;\r\n // this.post = this.client.post;\r\n // this.put = this.client.put;\r\n // this.patch = this.client.patch;\r\n // this.get = this.client.get;\r\n }\r\n\r\n getApiClient(): ApiClient {\r\n return this.apiClient;\r\n }\r\n}\r\n","import autoBind from 'auto-bind';\r\nimport axios, {\r\n AxiosError,\r\n AxiosInstance,\r\n AxiosRequestConfig,\r\n AxiosResponse,\r\n HttpStatusCode,\r\n isAxiosError,\r\n} from 'axios';\r\nimport axiosBetterStacktrace from 'axios-better-stacktrace';\r\nimport { isNil, merge } from 'lodash';\r\n\r\nexport interface BaseClientConfig<HandleError extends boolean = boolean> {\r\n debug?: boolean;\r\n baseUrl: string;\r\n handleError?: HandleError;\r\n storage?: Storage;\r\n defaultSecure?: boolean;\r\n authDataStorageKey?: string;\r\n axiosConfig?: AxiosRequestConfig;\r\n onAxiosError?: (error: AxiosError) => void;\r\n onError?: (error: unknown) => void;\r\n}\r\n\r\nexport enum ContentType {\r\n Json = 'application/json',\r\n FormData = 'multipart/form-data',\r\n UrlEncoded = 'application/x-www-form-urlencoded',\r\n Text = 'text/plain',\r\n}\r\n\r\nexport type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {\r\n secure?: boolean;\r\n contentType?: ContentType;\r\n handleError?: boolean;\r\n};\r\n\r\nexport type ResponseStatus = {\r\n status: HttpStatusCode | -1;\r\n statusText: string;\r\n};\r\n\r\nexport type SuccessClientResponse<Data = unknown> = ResponseStatus & {\r\n success: true;\r\n data: Data;\r\n};\r\n\r\nexport type ErrorClientResponse = ResponseStatus & {\r\n success: false;\r\n data?: any;\r\n error: unknown;\r\n};\r\n\r\nexport type ClientResponse<Data = unknown, HandleError extends boolean = boolean> = HandleError extends true\r\n ? SuccessClientResponse<Data> | ErrorClientResponse\r\n : SuccessClientResponse<Data>;\r\n\r\nexport abstract class BaseClient<HandleError extends boolean = boolean, AuthData = unknown> {\r\n protected readonly axiosInstance: AxiosInstance;\r\n protected readonly storage: Storage;\r\n\r\n constructor(protected readonly config: BaseClientConfig<HandleError>) {\r\n autoBind(this);\r\n this.storage = config.storage ?? sessionStorage;\r\n this.axiosInstance = axios.create({\r\n ...config.axiosConfig,\r\n baseURL: config.baseUrl,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...config.axiosConfig?.headers,\r\n },\r\n });\r\n axiosBetterStacktrace(this.axiosInstance);\r\n }\r\n\r\n protected stringifyFormItem(formItem: unknown) {\r\n if (typeof formItem === 'object' && formItem !== null) {\r\n return JSON.stringify(formItem);\r\n } else {\r\n return `${formItem}`;\r\n }\r\n }\r\n\r\n protected createFormData(input: Record<string, unknown>): FormData {\r\n if (input instanceof FormData) {\r\n return input;\r\n }\r\n\r\n return Object.keys(input).reduce((formData, key) => {\r\n const property = input[key];\r\n const propertyContent: any[] = property instanceof Array ? property : [property];\r\n\r\n for (const formItem of propertyContent) {\r\n const isFileType = formItem instanceof Blob || formItem instanceof File;\r\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\r\n }\r\n\r\n return formData;\r\n }, new FormData());\r\n }\r\n\r\n async request<Data = unknown, Error = unknown, Body = unknown>(\r\n requestConfig: RequestConfig<Body>,\r\n ): Promise<ClientResponse<Data, HandleError>> {\r\n const { contentType, data } = requestConfig;\r\n\r\n if (!isNil(data)) {\r\n if (contentType === ContentType.FormData && typeof data === 'object') {\r\n requestConfig.data = this.createFormData(data as Record<string, unknown>) as any;\r\n }\r\n\r\n if (contentType === ContentType.Text && typeof data !== 'string') {\r\n requestConfig.data = JSON.stringify(data) as any;\r\n }\r\n }\r\n\r\n const mergedConfig = merge(\r\n (requestConfig.secure ?? this.config.defaultSecure ?? true) ? await this.prepareAuthRequestConfig() : {},\r\n contentType ? { headers: { 'Content-Type': contentType } } : {},\r\n requestConfig,\r\n );\r\n\r\n try {\r\n const { data, status, statusText } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(\r\n mergedConfig,\r\n );\r\n\r\n return {\r\n success: true,\r\n data,\r\n status,\r\n statusText,\r\n };\r\n } catch (error) {\r\n const result: ErrorClientResponse = {\r\n success: false,\r\n status: -1,\r\n statusText: String(error),\r\n error,\r\n };\r\n\r\n if (isAxiosError<Error, Data>(error)) {\r\n this.config.onAxiosError?.(error);\r\n result.data = error.response?.data;\r\n result.status = error.response?.status ?? result.status;\r\n result.statusText = error.response?.statusText ?? result.statusText;\r\n }\r\n\r\n this.config.onError?.(error);\r\n\r\n if (!this.config.handleError && !requestConfig.handleError) {\r\n throw error;\r\n }\r\n\r\n return result as ClientResponse<Data, HandleError>;\r\n }\r\n }\r\n\r\n get<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'GET',\r\n url,\r\n });\r\n }\r\n\r\n delete<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'DELETE',\r\n url,\r\n });\r\n }\r\n\r\n head<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'HEAD',\r\n url,\r\n });\r\n }\r\n\r\n options<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'OPTIONS',\r\n url,\r\n });\r\n }\r\n\r\n post<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'POST',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n put<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'PUT',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n patch<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'PATCH',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n getAxios(): AxiosInstance {\r\n return this.axiosInstance;\r\n }\r\n\r\n setAuthData(data: AuthData | null) {\r\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\r\n }\r\n\r\n getAuthData(): AuthData | null {\r\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\r\n return data ? (JSON.parse(data) as AuthData) : null;\r\n }\r\n\r\n getConfig(): BaseClientConfig<HandleError> {\r\n return this.config;\r\n }\r\n\r\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\r\n}\r\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';\n\nexport interface JwtClientConfig<HandleError extends boolean = boolean, AuthData extends JwtAuthData = JwtAuthData>\n extends BaseClientConfig<HandleError> {\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 AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, AuthData> {\n private readonly lock = new Mutex();\n private renewTokensCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError, AuthData>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError> {\n return super.getConfig() as JwtClientConfig<HandleError>;\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$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","ContentType","$7f0ef0073dbac97f$exports","$7f0ef0073dbac97f$export$e2e108cbe2e4f865","$7f0ef0073dbac97f$export$4f22f74eddb7716a","config","storage","sessionStorage","axiosInstance","create","axiosConfig","baseURL","baseUrl","headers","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","keys","reduce","formData","key","property","Array","isFileType","Blob","File","append","request","requestConfig","contentType","data","mergedConfig","secure","defaultSecure","prepareAuthRequestConfig","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"],"version":3,"file":"index.esm.js.map","sourceRoot":"../"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"A,I,gB,Q,a,a,Q,S,6B,Q,2B,c,Q,U,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,0CEGO,OAAM,0CAaT,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,2CCRO,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,EAiCL,OAAe,0CAIlB,YAA+B,CAAqC,CAAE,CAAvC,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,CACJ,GACA,AAAA,uBAAA,8BAAsB,IAAI,CAAC,aAAa,CAC5C,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,EA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","sources":["<anon>","src/index.ts","src/BaseApi.ts","src/BaseClient.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$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 $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 });\n (0, ($parcel$interopDefault($5Sh66$axiosbetterstacktrace)))(this.axiosInstance);\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: data, status: status, statusText: statusText } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: data,\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.data = 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$parcel$exportWildcard(module.exports, $d6fbd40018854b1b$exports);\n$parcel$exportWildcard(module.exports, $e147b9ba9f5381c6$exports);\n$parcel$exportWildcard(module.exports, $f04719e3bb600f8d$exports);\n\n\n//# sourceMappingURL=index.js.map\n","export * from './BaseApi';\nexport * from './BaseClient';\nexport * from './JwtClient';\n","import autoBind from 'auto-bind';\nimport { BaseClient } from './BaseClient';\n\nexport class BaseApi<\n HandleError extends boolean = boolean,\n ApiClient extends BaseClient<HandleError> = BaseClient<HandleError>,\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';\n\nexport interface BaseClientConfig<HandleError extends boolean = boolean> {\n debug?: boolean;\n baseUrl: string;\n handleError?: HandleError;\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> = ResponseStatus & {\n success: true;\n data: Data;\n};\n\nexport type ErrorClientResponse = ResponseStatus & {\n success: false;\n data?: any;\n error: unknown;\n};\n\nexport type ClientResponse<Data = unknown, HandleError extends boolean = boolean> = HandleError extends true\n ? SuccessClientResponse<Data> | ErrorClientResponse\n : SuccessClientResponse<Data>;\n\nexport abstract class BaseClient<HandleError extends boolean = boolean, AuthData = unknown> {\n protected readonly axiosInstance: AxiosInstance;\n protected readonly storage: Storage;\n\n constructor(protected readonly config: BaseClientConfig<HandleError>) {\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 });\n axiosBetterStacktrace(this.axiosInstance);\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>> {\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 { data, status, statusText } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(\n mergedConfig,\n );\n\n return {\n success: true,\n data,\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.data = 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>;\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> {\n return this.config;\n }\n\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\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';\n\nexport interface JwtClientConfig<HandleError extends boolean = boolean, AuthData extends JwtAuthData = JwtAuthData>\n extends BaseClientConfig<HandleError> {\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 AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, AuthData> {\n private readonly lock = new Mutex();\n private renewTokensCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError, AuthData>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError> {\n return super.getConfig() as JwtClientConfig<HandleError>;\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$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","ContentType","config","storage","sessionStorage","axiosInstance","create","axiosConfig","baseURL","baseUrl","headers","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","reduce","formData","property","Array","isFileType","Blob","File","append","request","requestConfig","contentType","data","isNil","mergedConfig","merge","secure","defaultSecure","prepareAuthRequestConfig","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,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,0CEGO,OAAM,0CAaT,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,2CCRO,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,EAiCL,OAAe,0CAIlB,YAA+B,CAAqC,CAAE,CAAvC,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,CACJ,GACA,AAAA,uBAAA,8BAAsB,IAAI,CAAC,aAAa,CAC5C,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,EA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","sources":["<anon>","src/index.ts","src/BaseApi.ts","src/BaseClient.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$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 $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 });\n (0, ($parcel$interopDefault($5Sh66$axiosbetterstacktrace)))(this.axiosInstance);\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: data, status: status, statusText: statusText } = await this.axiosInstance.request(mergedConfig);\n return {\n success: true,\n data: data,\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.data = 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$parcel$exportWildcard(module.exports, $d6fbd40018854b1b$exports);\n$parcel$exportWildcard(module.exports, $e147b9ba9f5381c6$exports);\n$parcel$exportWildcard(module.exports, $f04719e3bb600f8d$exports);\n\n\n//# sourceMappingURL=index.js.map\n","export * from './BaseApi';\r\nexport * from './BaseClient';\r\nexport * from './JwtClient';\r\n","import autoBind from 'auto-bind';\r\nimport { BaseClient } from './BaseClient';\r\n\r\nexport class BaseApi<\r\n HandleError extends boolean = boolean,\r\n ApiClient extends BaseClient<HandleError> = BaseClient<HandleError>,\r\n> {\r\n // request: ApiClient['request'];\r\n // get: ApiClient['get'];\r\n // delete: ApiClient['delete'];\r\n // head: ApiClient['head'];\r\n // options: ApiClient['options'];\r\n // post: ApiClient['post'];\r\n // put: ApiClient['put'];\r\n // patch: ApiClient['patch'];\r\n\r\n constructor(protected readonly apiClient: ApiClient) {\r\n autoBind(this);\r\n // this.request = this.client.request;\r\n // this.get = this.client.get;\r\n // this.delete = this.client.delete;\r\n // this.head = this.client.head;\r\n // this.options = this.client.options;\r\n // this.post = this.client.post;\r\n // this.put = this.client.put;\r\n // this.patch = this.client.patch;\r\n // this.get = this.client.get;\r\n }\r\n\r\n getApiClient(): ApiClient {\r\n return this.apiClient;\r\n }\r\n}\r\n","import autoBind from 'auto-bind';\r\nimport axios, {\r\n AxiosError,\r\n AxiosInstance,\r\n AxiosRequestConfig,\r\n AxiosResponse,\r\n HttpStatusCode,\r\n isAxiosError,\r\n} from 'axios';\r\nimport axiosBetterStacktrace from 'axios-better-stacktrace';\r\nimport { isNil, merge } from 'lodash';\r\n\r\nexport interface BaseClientConfig<HandleError extends boolean = boolean> {\r\n debug?: boolean;\r\n baseUrl: string;\r\n handleError?: HandleError;\r\n storage?: Storage;\r\n defaultSecure?: boolean;\r\n authDataStorageKey?: string;\r\n axiosConfig?: AxiosRequestConfig;\r\n onAxiosError?: (error: AxiosError) => void;\r\n onError?: (error: unknown) => void;\r\n}\r\n\r\nexport enum ContentType {\r\n Json = 'application/json',\r\n FormData = 'multipart/form-data',\r\n UrlEncoded = 'application/x-www-form-urlencoded',\r\n Text = 'text/plain',\r\n}\r\n\r\nexport type RequestConfig<Body = unknown> = AxiosRequestConfig<Body> & {\r\n secure?: boolean;\r\n contentType?: ContentType;\r\n handleError?: boolean;\r\n};\r\n\r\nexport type ResponseStatus = {\r\n status: HttpStatusCode | -1;\r\n statusText: string;\r\n};\r\n\r\nexport type SuccessClientResponse<Data = unknown> = ResponseStatus & {\r\n success: true;\r\n data: Data;\r\n};\r\n\r\nexport type ErrorClientResponse = ResponseStatus & {\r\n success: false;\r\n data?: any;\r\n error: unknown;\r\n};\r\n\r\nexport type ClientResponse<Data = unknown, HandleError extends boolean = boolean> = HandleError extends true\r\n ? SuccessClientResponse<Data> | ErrorClientResponse\r\n : SuccessClientResponse<Data>;\r\n\r\nexport abstract class BaseClient<HandleError extends boolean = boolean, AuthData = unknown> {\r\n protected readonly axiosInstance: AxiosInstance;\r\n protected readonly storage: Storage;\r\n\r\n constructor(protected readonly config: BaseClientConfig<HandleError>) {\r\n autoBind(this);\r\n this.storage = config.storage ?? sessionStorage;\r\n this.axiosInstance = axios.create({\r\n ...config.axiosConfig,\r\n baseURL: config.baseUrl,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...config.axiosConfig?.headers,\r\n },\r\n });\r\n axiosBetterStacktrace(this.axiosInstance);\r\n }\r\n\r\n protected stringifyFormItem(formItem: unknown) {\r\n if (typeof formItem === 'object' && formItem !== null) {\r\n return JSON.stringify(formItem);\r\n } else {\r\n return `${formItem}`;\r\n }\r\n }\r\n\r\n protected createFormData(input: Record<string, unknown>): FormData {\r\n if (input instanceof FormData) {\r\n return input;\r\n }\r\n\r\n return Object.keys(input).reduce((formData, key) => {\r\n const property = input[key];\r\n const propertyContent: any[] = property instanceof Array ? property : [property];\r\n\r\n for (const formItem of propertyContent) {\r\n const isFileType = formItem instanceof Blob || formItem instanceof File;\r\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\r\n }\r\n\r\n return formData;\r\n }, new FormData());\r\n }\r\n\r\n async request<Data = unknown, Error = unknown, Body = unknown>(\r\n requestConfig: RequestConfig<Body>,\r\n ): Promise<ClientResponse<Data, HandleError>> {\r\n const { contentType, data } = requestConfig;\r\n\r\n if (!isNil(data)) {\r\n if (contentType === ContentType.FormData && typeof data === 'object') {\r\n requestConfig.data = this.createFormData(data as Record<string, unknown>) as any;\r\n }\r\n\r\n if (contentType === ContentType.Text && typeof data !== 'string') {\r\n requestConfig.data = JSON.stringify(data) as any;\r\n }\r\n }\r\n\r\n const mergedConfig = merge(\r\n (requestConfig.secure ?? this.config.defaultSecure ?? true) ? await this.prepareAuthRequestConfig() : {},\r\n contentType ? { headers: { 'Content-Type': contentType } } : {},\r\n requestConfig,\r\n );\r\n\r\n try {\r\n const { data, status, statusText } = await this.axiosInstance.request<Data, AxiosResponse<Data>, Body>(\r\n mergedConfig,\r\n );\r\n\r\n return {\r\n success: true,\r\n data,\r\n status,\r\n statusText,\r\n };\r\n } catch (error) {\r\n const result: ErrorClientResponse = {\r\n success: false,\r\n status: -1,\r\n statusText: String(error),\r\n error,\r\n };\r\n\r\n if (isAxiosError<Error, Data>(error)) {\r\n this.config.onAxiosError?.(error);\r\n result.data = error.response?.data;\r\n result.status = error.response?.status ?? result.status;\r\n result.statusText = error.response?.statusText ?? result.statusText;\r\n }\r\n\r\n this.config.onError?.(error);\r\n\r\n if (!this.config.handleError && !requestConfig.handleError) {\r\n throw error;\r\n }\r\n\r\n return result as ClientResponse<Data, HandleError>;\r\n }\r\n }\r\n\r\n get<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'GET',\r\n url,\r\n });\r\n }\r\n\r\n delete<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'DELETE',\r\n url,\r\n });\r\n }\r\n\r\n head<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'HEAD',\r\n url,\r\n });\r\n }\r\n\r\n options<Data = unknown, Error = unknown, Body = unknown>(url: string, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'OPTIONS',\r\n url,\r\n });\r\n }\r\n\r\n post<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'POST',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n put<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'PUT',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n patch<Data = unknown, Error = unknown, Body = unknown>(url: string, data?: Body, config?: RequestConfig<Body>) {\r\n return this.request<Data, Error, Body>({\r\n ...config,\r\n method: 'PATCH',\r\n url,\r\n data,\r\n });\r\n }\r\n\r\n getAxios(): AxiosInstance {\r\n return this.axiosInstance;\r\n }\r\n\r\n setAuthData(data: AuthData | null) {\r\n this.storage.setItem(this.config.authDataStorageKey || 'auth', JSON.stringify(data));\r\n }\r\n\r\n getAuthData(): AuthData | null {\r\n const data = this.storage.getItem(this.config.authDataStorageKey || 'auth');\r\n return data ? (JSON.parse(data) as AuthData) : null;\r\n }\r\n\r\n getConfig(): BaseClientConfig<HandleError> {\r\n return this.config;\r\n }\r\n\r\n protected abstract prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;\r\n}\r\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';\n\nexport interface JwtClientConfig<HandleError extends boolean = boolean, AuthData extends JwtAuthData = JwtAuthData>\n extends BaseClientConfig<HandleError> {\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 AuthData extends JwtAuthData = JwtAuthData,\n> extends BaseClient<HandleError, AuthData> {\n private readonly lock = new Mutex();\n private renewTokensCallback?: () => Promise<AuthData>;\n\n constructor(protected override readonly config: JwtClientConfig<HandleError, AuthData>) {\n super(config);\n }\n\n override getConfig(): JwtClientConfig<HandleError> {\n return super.getConfig() as JwtClientConfig<HandleError>;\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$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","ContentType","config","storage","sessionStorage","axiosInstance","create","axiosConfig","baseURL","baseUrl","headers","stringifyFormItem","formItem","JSON","stringify","createFormData","input","FormData","reduce","formData","property","Array","isFileType","Blob","File","append","request","requestConfig","contentType","data","isNil","mergedConfig","merge","secure","defaultSecure","prepareAuthRequestConfig","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":"../"}
|
package/dist/insight/index.d.ts
CHANGED
|
@@ -78,6 +78,69 @@ declare class JwtClient<HandleError extends boolean = boolean, AuthData extends
|
|
|
78
78
|
protected prepareAuthRequestConfig(): Promise<Pick<RequestConfig<any>, 'headers' | 'data' | 'params'>>;
|
|
79
79
|
protected renewTokens(): Promise<AuthData>;
|
|
80
80
|
}
|
|
81
|
+
export enum InsightTrendingType {
|
|
82
|
+
TrendingTypeMostRated = "most-rated",
|
|
83
|
+
TrendingTypeBestRated = "best-rated",
|
|
84
|
+
TrendingTypeWorstRated = "worst-rated"
|
|
85
|
+
}
|
|
86
|
+
export enum InsightPeriodType {
|
|
87
|
+
PeriodDay = "day",
|
|
88
|
+
PeriodWeek = "week",
|
|
89
|
+
PeriodMonth = "month",
|
|
90
|
+
PeriodYear = "year"
|
|
91
|
+
}
|
|
92
|
+
export enum InsightOrderDirection {
|
|
93
|
+
OrderASC = "asc",
|
|
94
|
+
OrderDESC = "desc"
|
|
95
|
+
}
|
|
96
|
+
export enum InsightMostPopularTagsTypesType {
|
|
97
|
+
MostPopularTagsTypesTypeSymbol = "symbol",
|
|
98
|
+
MostPopularTagsTypesTypePrimary = "primary",
|
|
99
|
+
MostPopularTagsTypesTypeTags = "tags"
|
|
100
|
+
}
|
|
101
|
+
export enum InsightMostPopularTagsTimeType {
|
|
102
|
+
MostPopularTagsTimeTypeWeek = "week",
|
|
103
|
+
MostPopularTagsTimeTypeMonth = "month",
|
|
104
|
+
MostPopularTagsTimeTypeYear = "year"
|
|
105
|
+
}
|
|
106
|
+
export enum InsightLatestAnalystRatingsOnStockSort {
|
|
107
|
+
LatestAnalystRatingsOnStockSortDate = "date",
|
|
108
|
+
LatestAnalystRatingsOnStockSortRank = "rank"
|
|
109
|
+
}
|
|
110
|
+
export enum InsightIpoStatus {
|
|
111
|
+
PricedIpoStatus = "Priced",
|
|
112
|
+
FiledIpoStatus = "Filed",
|
|
113
|
+
WithdrawnIpoStatus = "Withdrawn",
|
|
114
|
+
PostponedIpoStatus = "Postponed"
|
|
115
|
+
}
|
|
116
|
+
export enum InsightFilterType {
|
|
117
|
+
FilterAnalysts = "analysts",
|
|
118
|
+
FilterBloggers = "bloggers"
|
|
119
|
+
}
|
|
120
|
+
export enum InsightConversion {
|
|
121
|
+
ConversionOriginal = "original",
|
|
122
|
+
ConversionDefault = "default",
|
|
123
|
+
ConversionNormal = "normal",
|
|
124
|
+
ConversionThumbnail = "thumbnail",
|
|
125
|
+
ConversionSquare = "square",
|
|
126
|
+
ConversionSquareStrict = "square_strict",
|
|
127
|
+
ConversionSquareStrictOrNormal = "square_strict_or_normal",
|
|
128
|
+
ConversionBestMatch = "best_match"
|
|
129
|
+
}
|
|
130
|
+
export enum InsightConsensusInterval {
|
|
131
|
+
ConsensusIntervalWeek = "week",
|
|
132
|
+
ConsensusIntervalMonth = "month"
|
|
133
|
+
}
|
|
134
|
+
export enum InsightArticlesRequestType {
|
|
135
|
+
ArticlesRequestTypeEducation = "education",
|
|
136
|
+
ArticlesRequestTypeNonEducation = "non-education"
|
|
137
|
+
}
|
|
138
|
+
export enum InsightArticleSearchType {
|
|
139
|
+
ArticleSearchTypeAll = "all",
|
|
140
|
+
ArticleSearchTypeTag = "tag",
|
|
141
|
+
ArticleSearchTypePrimary = "primary",
|
|
142
|
+
ArticleSearchTypeSymbol = "symbol"
|
|
143
|
+
}
|
|
81
144
|
export interface InsightQuote {
|
|
82
145
|
ask_px: number;
|
|
83
146
|
ask_sz: number;
|
|
@@ -268,12 +331,6 @@ export interface InsightArticleFeaturedImageInfo {
|
|
|
268
331
|
url: string;
|
|
269
332
|
width: number;
|
|
270
333
|
}
|
|
271
|
-
export enum InsightArticleSearchType {
|
|
272
|
-
ArticleSearchTypeAll = "all",
|
|
273
|
-
ArticleSearchTypeTag = "tag",
|
|
274
|
-
ArticleSearchTypePrimary = "primary",
|
|
275
|
-
ArticleSearchTypeSymbol = "symbol"
|
|
276
|
-
}
|
|
277
334
|
export interface InsightArticlesRequest {
|
|
278
335
|
/** @example 10 */
|
|
279
336
|
count?: number;
|
|
@@ -292,10 +349,6 @@ export interface InsightArticlesRequest {
|
|
|
292
349
|
/** @example "education" */
|
|
293
350
|
type?: InsightArticlesRequestType;
|
|
294
351
|
}
|
|
295
|
-
export enum InsightArticlesRequestType {
|
|
296
|
-
ArticlesRequestTypeEducation = "education",
|
|
297
|
-
ArticlesRequestTypeNonEducation = "non-education"
|
|
298
|
-
}
|
|
299
352
|
export interface InsightAssetAllocationBreakdown {
|
|
300
353
|
breakdown: string;
|
|
301
354
|
percentage: number;
|
|
@@ -530,10 +583,6 @@ export interface InsightConfidenceSignal {
|
|
|
530
583
|
/** @format float32 */
|
|
531
584
|
stockScore: number;
|
|
532
585
|
}
|
|
533
|
-
export enum InsightConsensusInterval {
|
|
534
|
-
ConsensusIntervalWeek = "week",
|
|
535
|
-
ConsensusIntervalMonth = "month"
|
|
536
|
-
}
|
|
537
586
|
export interface InsightContinent {
|
|
538
587
|
id: string;
|
|
539
588
|
name: string;
|
|
@@ -543,16 +592,6 @@ export interface InsightContinentBreakdown {
|
|
|
543
592
|
code: string;
|
|
544
593
|
percentage: number;
|
|
545
594
|
}
|
|
546
|
-
export enum InsightConversion {
|
|
547
|
-
ConversionOriginal = "original",
|
|
548
|
-
ConversionDefault = "default",
|
|
549
|
-
ConversionNormal = "normal",
|
|
550
|
-
ConversionThumbnail = "thumbnail",
|
|
551
|
-
ConversionSquare = "square",
|
|
552
|
-
ConversionSquareStrict = "square_strict",
|
|
553
|
-
ConversionSquareStrictOrNormal = "square_strict_or_normal",
|
|
554
|
-
ConversionBestMatch = "best_match"
|
|
555
|
-
}
|
|
556
595
|
export interface InsightCountryBreakdown {
|
|
557
596
|
breakdown: string;
|
|
558
597
|
percentage: number;
|
|
@@ -866,10 +905,6 @@ export interface InsightFilterCustomIndexesRequest {
|
|
|
866
905
|
paging: InsightPaging;
|
|
867
906
|
symbols?: string[];
|
|
868
907
|
}
|
|
869
|
-
export enum InsightFilterType {
|
|
870
|
-
FilterAnalysts = "analysts",
|
|
871
|
-
FilterBloggers = "bloggers"
|
|
872
|
-
}
|
|
873
908
|
export interface InsightFilteredCustomIndexResponse {
|
|
874
909
|
created_at?: string;
|
|
875
910
|
description?: string;
|
|
@@ -3075,12 +3110,6 @@ export interface InsightInvestorsAlsoBought {
|
|
|
3075
3110
|
sentiment: string;
|
|
3076
3111
|
ticker: string;
|
|
3077
3112
|
}
|
|
3078
|
-
export enum InsightIpoStatus {
|
|
3079
|
-
PricedIpoStatus = "Priced",
|
|
3080
|
-
FiledIpoStatus = "Filed",
|
|
3081
|
-
WithdrawnIpoStatus = "Withdrawn",
|
|
3082
|
-
PostponedIpoStatus = "Postponed"
|
|
3083
|
-
}
|
|
3084
3113
|
export interface InsightLatestAnalystRatingsOnStockRequest {
|
|
3085
3114
|
/** Get analyst ratings from the past X months (OPTIONAL) */
|
|
3086
3115
|
months?: number;
|
|
@@ -3124,10 +3153,6 @@ export interface InsightLatestAnalystRatingsOnStockResponse {
|
|
|
3124
3153
|
total_recommendations: number;
|
|
3125
3154
|
url: string;
|
|
3126
3155
|
}
|
|
3127
|
-
export enum InsightLatestAnalystRatingsOnStockSort {
|
|
3128
|
-
LatestAnalystRatingsOnStockSortDate = "date",
|
|
3129
|
-
LatestAnalystRatingsOnStockSortRank = "rank"
|
|
3130
|
-
}
|
|
3131
3156
|
export interface InsightLessAndMore {
|
|
3132
3157
|
less_than?: number;
|
|
3133
3158
|
more_than?: number;
|
|
@@ -3285,16 +3310,6 @@ export interface InsightMostPopularTagsRequest {
|
|
|
3285
3310
|
/** @example "symbol" */
|
|
3286
3311
|
type: InsightMostPopularTagsTypesType;
|
|
3287
3312
|
}
|
|
3288
|
-
export enum InsightMostPopularTagsTimeType {
|
|
3289
|
-
MostPopularTagsTimeTypeWeek = "week",
|
|
3290
|
-
MostPopularTagsTimeTypeMonth = "month",
|
|
3291
|
-
MostPopularTagsTimeTypeYear = "year"
|
|
3292
|
-
}
|
|
3293
|
-
export enum InsightMostPopularTagsTypesType {
|
|
3294
|
-
MostPopularTagsTypesTypeSymbol = "symbol",
|
|
3295
|
-
MostPopularTagsTypesTypePrimary = "primary",
|
|
3296
|
-
MostPopularTagsTypesTypeTags = "tags"
|
|
3297
|
-
}
|
|
3298
3313
|
export interface InsightMover {
|
|
3299
3314
|
company_name: string;
|
|
3300
3315
|
ticker: string;
|
|
@@ -3478,10 +3493,6 @@ export interface InsightOptionValues {
|
|
|
3478
3493
|
option_value: number;
|
|
3479
3494
|
time_value: number;
|
|
3480
3495
|
}
|
|
3481
|
-
export enum InsightOrderDirection {
|
|
3482
|
-
OrderASC = "asc",
|
|
3483
|
-
OrderDESC = "desc"
|
|
3484
|
-
}
|
|
3485
3496
|
export interface InsightOrdering {
|
|
3486
3497
|
/**
|
|
3487
3498
|
* @default "asc"
|
|
@@ -3557,12 +3568,6 @@ export interface InsightPeriodFilter {
|
|
|
3557
3568
|
*/
|
|
3558
3569
|
value: number;
|
|
3559
3570
|
}
|
|
3560
|
-
export enum InsightPeriodType {
|
|
3561
|
-
PeriodDay = "day",
|
|
3562
|
-
PeriodWeek = "week",
|
|
3563
|
-
PeriodMonth = "month",
|
|
3564
|
-
PeriodYear = "year"
|
|
3565
|
-
}
|
|
3566
3571
|
export interface InsightPortfoliosRequest {
|
|
3567
3572
|
/** (REQUIRED) */
|
|
3568
3573
|
expert_uid?: string;
|
|
@@ -4343,11 +4348,6 @@ export interface InsightTrendingStocksResponse {
|
|
|
4343
4348
|
sentiment: number;
|
|
4344
4349
|
ticker: string;
|
|
4345
4350
|
}
|
|
4346
|
-
export enum InsightTrendingType {
|
|
4347
|
-
TrendingTypeMostRated = "most-rated",
|
|
4348
|
-
TrendingTypeBestRated = "best-rated",
|
|
4349
|
-
TrendingTypeWorstRated = "worst-rated"
|
|
4350
|
-
}
|
|
4351
4351
|
export interface InsightUnderwriteResponse {
|
|
4352
4352
|
company_name: string;
|
|
4353
4353
|
id: number;
|
|
@@ -5153,6 +5153,10 @@ export class FixedIncome<HandleError extends boolean = boolean> {
|
|
|
5153
5153
|
*/
|
|
5154
5154
|
getSingleFixedIncomeEntry(id: string, config?: RequestConfig<HandleError>): Promise<ClientResponse<InsightFixedIncome, HandleError>>;
|
|
5155
5155
|
}
|
|
5156
|
+
export enum InsightOrderDirectionV2 {
|
|
5157
|
+
OrderASC = "asc",
|
|
5158
|
+
OrderDESC = "desc"
|
|
5159
|
+
}
|
|
5156
5160
|
export interface InsightBeforeAndAfterV2 {
|
|
5157
5161
|
after?: string;
|
|
5158
5162
|
before?: string;
|
|
@@ -5300,10 +5304,6 @@ export interface InsightLessAndMoreV2 {
|
|
|
5300
5304
|
less_than?: number;
|
|
5301
5305
|
more_than?: number;
|
|
5302
5306
|
}
|
|
5303
|
-
export enum InsightOrderDirectionV2 {
|
|
5304
|
-
OrderASC = "asc",
|
|
5305
|
-
OrderDESC = "desc"
|
|
5306
|
-
}
|
|
5307
5307
|
export interface InsightOrderingV2 {
|
|
5308
5308
|
/**
|
|
5309
5309
|
* @default "asc"
|