@libs-ui/services-base-request-abstract 0.2.159 → 0.2.161

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.
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-services-base-request-abstract.mjs","sources":["../../../../../libs-ui/services/base-request-abstract/src/base-request-abstract.service.ts","../../../../../libs-ui/services/base-request-abstract/src/libs-ui-services-base-request-abstract.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams, HttpStatusCode } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { IHttpProcessUpload, IHttpResponse, IPaging } from '@libs-ui/interfaces-types';\nimport { DEFAULT_START_PAGE_0, UtilsCache, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, endCodeUrl, get, getKeyCacheByArrayObject, isNil, md5, omitBy } from '@libs-ui/utils';\nimport { lastValueFrom, Observable } from 'rxjs';\nimport { Observer } from 'rxjs/internal/types';\nimport { catchError, map } from 'rxjs/operators';\ntype TYPE_METHOD = 'POST' | 'PATCH' | 'PUT';\n\nexport abstract class LibsUiBaseRequestAbstractService {\n protected keyCacheUniqueByIdUserLogin = '';\n protected baseUrl!: string;\n protected ignoreRedirect401?: boolean;\n protected http = inject(HttpClient);\n protected isStartZeroPage = false;\n\n protected abstract getOptions<TypeParams>(httpParams: UtilsHttpParamsRequest<TypeParams>, contentType?: string): { headers: HttpHeaders, params: HttpParams };\n protected abstract redirectToLogin(): void;\n protected abstract replaceURLByPattern<TypeParams>(url: string, params: UtilsHttpParamsRequest<TypeParams>): { url: string, params: UtilsHttpParamsRequest<TypeParams> };\n\n\n get<TypeResponse, TypeParams = any>(path: string, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.get<IHttpResponse<TypeResponse>>(result.url, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n post<TypeResponse, TypeParams = any, TypeBody = any>(path: string, body: TypeBody, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.post<IHttpResponse<TypeResponse>>(result.url, body, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n postUrlEndCode<TypeResponse, TypeParams = any, TypeBody = any>(path: string, body: TypeBody, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const bodyValue = endCodeUrl(body, true);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.post<IHttpResponse<TypeResponse>>(result.url, bodyValue, this.getOptions(params, 'application/x-www-form-urlencoded')).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n put<TypeResponse, TypeParams = any, TypeBody = any>(path: string, body: TypeBody, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.put<IHttpResponse<TypeResponse>>(result.url, body, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n patch<TypeResponse, TypeParams = any>(path: string, body: unknown, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.patch<IHttpResponse<TypeResponse>>(result.url, body, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n patchUrlEndCode<TypeResponse, TypeParams = any>(path: string, body: unknown, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const bodyValue = endCodeUrl(body, true);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.patch<IHttpResponse<TypeResponse>>(result.url, bodyValue, this.getOptions(params, 'application/x-www-form-urlencoded')).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n delete<TypeResponse, TypeParams = any>(path: string, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.delete<IHttpResponse<TypeResponse>>(result.url, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n public sendWithFile<TypeResponse, TypeParams = any, TypeBody = any>(path: string, params: UtilsHttpParamsRequest<TypeParams>, argumentsValue: { method: TYPE_METHOD; bodyData: TypeBody; keepFileOfBody?: boolean; keepArrayValue?: boolean; processUpload?: (process: IHttpProcessUpload) => void }): Observable<IHttpResponse<TypeResponse>> {\n const { method, keepFileOfBody, keepArrayValue, processUpload } = argumentsValue;\n const bodyData = omitBy<Record<string, any>>(argumentsValue.bodyData as any, (dataItem: any) => isNil(dataItem));\n\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, resultCheckPageZero.params);\n const url = result.url;\n const options = this.getOptions(result.params);\n\n return new Observable((observer: Observer<IHttpResponse<TypeResponse>>) => {\n const formData: FormData = argumentsValue.bodyData instanceof FormData ? argumentsValue.bodyData : new FormData();\n const xhr: XMLHttpRequest = new XMLHttpRequest();\n const paramsStr = options.params.toString();\n const headers = options.headers;\n\n if (processUpload) {\n xhr.upload.onprogress = (e) => {\n processUpload({\n loaded: e.loaded,\n total: e.total,\n percent: (e.loaded / e.total) * 100\n });\n };\n }\n\n if (!(argumentsValue.bodyData instanceof FormData)) {\n for (const property in bodyData) {\n this.appendRecursive(formData, bodyData[property], property, keepFileOfBody, keepArrayValue);\n }\n }\n xhr.open(method, `${url}${paramsStr ? `?${paramsStr}` : ''}`, true);\n headers.keys().forEach((key: string) => key.toLocaleLowerCase() !== 'content-type' && xhr.setRequestHeader(key, headers.get(key) || ''));\n xhr.send(formData);\n xhr.onreadystatechange = () => {\n if (xhr.readyState !== 4) {\n return;\n }\n if (xhr.status === 200) {\n observer.next(this.handlerResponse<TypeResponse>(this.convertResponseXHR<TypeResponse>(xhr), resultCheckPageZero.isStartZero));\n\n return observer.complete();\n }\n observer.error(this.convertResponseXHR<TypeResponse>(xhr));\n\n return observer.complete();\n };\n });\n }\n\n private appendRecursive<TypeBody>(fData: FormData, data: TypeBody, prop: string, keepFileOfBody?: boolean, keepArrayValue?: boolean) {\n if (keepFileOfBody) {\n if (data instanceof File || data instanceof Blob || Object.prototype.toString.call(data) === '[object File]') {\n this.appendFileToFormData(fData, prop, data as File);\n\n return;\n }\n if (data instanceof Array && data.length && data[0] instanceof File) {\n for (const file of data) {\n this.appendFileToFormData(fData, prop, file);\n }\n\n return;\n }\n }\n if (keepArrayValue && data instanceof Array) {\n fData.append(prop, JSON.stringify(data));\n\n return;\n }\n if ('object' === typeof data) {\n fData.append(prop, JSON.stringify(data));\n\n return;\n }\n fData.append(prop, data as any);\n }\n\n private appendFileToFormData(formData: FormData, prop: string, file: File) {\n formData.append(prop, file, file.name);\n }\n\n\n private convertResponseXHR<TypeResponse>(_xhr: XMLHttpRequest): IHttpResponse<TypeResponse> {\n const XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n let code: number = _xhr.status === 1223 ? 204 : _xhr.status;\n let message = _xhr.statusText;\n let data: any = null;\n\n if (code !== 204) {\n data = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n if (typeof data === 'string') {\n data = data.replace(XSSI_PREFIX, '');\n }\n }\n\n if (code === 0) {\n code = data ? 200 : 0;\n }\n if (data) {\n\n data = JSON.parse(data);\n code = data.code ?? 200;\n message = data.message || message;\n }\n\n message = message ?? 'OK';\n\n return { ...data, code, message };\n }\n\n public getResponseURL(xhr: any): string {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n\n return '';\n }\n\n protected checkStartPageIsZero<TypeParams>(params?: UtilsHttpParamsRequest<TypeParams>): { params: UtilsHttpParamsRequest<TypeParams>, isStartZero: boolean } {\n if (!params) {\n return { params: new UtilsHttpParamsRequest(), isStartZero: false };\n }\n if (params.has(DEFAULT_START_PAGE_0) || this.isStartZeroPage) {\n params.delete(DEFAULT_START_PAGE_0);\n const page = params.get('page') ? Number(params.get('page')) : -1;\n\n if (isNil(page) || page === -1) {\n return { params: params, isStartZero: false };\n }\n params.set('page', page - 1);\n\n return { params: params, isStartZero: true };\n }\n\n return { params: params, isStartZero: false };\n }\n\n protected handlerResponse<TypeResponse>(res: any, isPageStartZero: boolean): IHttpResponse<TypeResponse> {\n const resConvert: any = {\n message: get(res, 'message'),\n code: 200\n };\n const code = get(res, 'code', 200);\n\n if (`${code}` !== '200' && `${code}` !== '001') {\n resConvert.feCloneCode = code;\n }\n\n if (typeof res !== 'object' || res === null) {\n resConvert['data'] = res;\n return resConvert;\n }\n\n const paging: IPaging = {\n page: get(res, 'paging.page') || get(res, 'page'),\n per_page: get(res, 'paging.per_page') || get(res, 'size'),\n total_items: get(res, 'paging.total_items') || get(res, 'paging.total_count') || get(res, 'paging.total_item') || get(res, 'totalElements'),\n total_pages: get(res, 'paging.total_pages') || get(res, 'paging.total_page') || get(res, 'paging.page_count') || get(res, 'paging.page_count') || get(res, 'totalPages'),\n before: get(res, 'paging.cursors.before') || get(res, 'paging.before') || get(res, 'cursors.before') || get(res, 'paging.before_token') || get(res, 'paging.cursors.before_token'),\n after: get(res, 'paging.cursors.after') || get(res, 'paging.after') || get(res, 'cursors.after') || get(res, 'paging.after_token') || get(res, 'paging.cursors.after_token'),\n previous: get(res, 'paging.previous') || get(res, 'paging.cursors.previous') || get(res, 'cursors.previous'),\n next: get(res, 'paging.next') || get(res, 'paging.next_page') || get(res, 'paging.cursors.next') || get(res, 'cursors.next')\n };\n const keysPaging = Object.keys(paging);\n\n keysPaging.forEach((key: string) => {\n if (isNil((paging as any)[key])) {\n delete (paging as any)[key];\n\n return;\n }\n });\n\n if (Object.keys(paging).length) {\n if (isPageStartZero && !isNil(paging.page)) {\n paging.page += 1;\n }\n if (paging.total_items && paging.page && paging.per_page && (paging.page * paging.per_page >= paging.total_items)) {\n paging.total_pages = paging.page;\n }\n if (resConvert.data instanceof Array && !resConvert.data.length) {\n paging.total_pages = paging.page || 0;\n }\n resConvert.paging = paging;\n }\n const fieldDelete = ['code', 'message', 'paging', 'totalElements', 'size', 'totalPages', 'page'];\n\n fieldDelete.forEach(field => {\n if (!isNil(res[field])) {\n delete res[field];\n }\n });\n const fieldNotMergeToData = ['lang'];\n\n fieldNotMergeToData.forEach(field => {\n if (!isNil(res[field])) {\n resConvert[field] = res[field];\n delete res[field];\n }\n });\n const keys = Object.keys(res);\n\n if (keys.length === 1) {\n resConvert.data = keys[0] === '0' ? res : res[keys[0]];\n }\n if (keys.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isNil(res.data) ? (resConvert.data = res) : Object.assign(resConvert, res);\n }\n\n return resConvert;\n }\n\n protected handlerCatchError<TypeResponse>(err: HttpErrorResponse): Observable<IHttpResponse<TypeResponse>> {\n if (err.status === HttpStatusCode.Unauthorized && !this.ignoreRedirect401) {\n this.redirectToLogin();\n }\n const code = get(err, 'error.code', get(err, 'status', 0));\n const message = code >= 100 && code < 500 ? (err?.error?.message || err?.message || 'i18n_alert_connect_server_error') : 'i18n_alert_connect_server_error';\n const data = get(err, 'error.data', '');\n\n throw { code: code >= 100 && code < 500 ? code : 500, message, subMessage: get(err, 'error.errors', get(err, 'errors')), data: data };\n }\n\n\n /**\n * Lưu trữ dữ liệu phản hồi vào cache.\n * @param observable - Observable của phản hồi HTTP.\n * @param key - Khóa cache.Lưu ý không md5 key trước khi truyền vào\n * @param params - Các tham số để tạo khóa cache.\n * @param timeCache - Thời gian lưu trữ cache (mặc định là CACHE_EXPIRE_TIME_DEFAULT).\n * @param reloadCache - Nếu true, luôn gọi để lấy giá trị mới. giá trị này có để sử dụng với các nghiệp vụ gọi luôn luôn lấy dữ liệu mới nhất\n * @returns Observable của phản hồi HTTP đã được cache.\n */\n public cacheResponseData<T>(observable: Observable<IHttpResponse<T>>, key: string, params: Array<any>, timeCache = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, reloadCache = false): Observable<IHttpResponse<T>> {\n return new Observable((observe) => {\n this.promiseCacheResponseData(observable, key, params, timeCache, reloadCache).then((res) => {\n observe?.next(res);\n observe?.complete();\n }).catch(err => {\n observe?.error(err);\n observe?.complete();\n });\n });\n }\n\n /**\n * Xóa các khóa cache bắt đầu với một chuỗi nhất định.\n * Lưu ý: không md5 key trước khi truyền vào.\n * Sử dụng hàm này trong các trường hợp như gọi API update hoặc xóa dữ liệu,khi đó cần xóa cache đi để khi gọi danh sách sẽ lấy được giá trị mới nhất.\n * @param key - Chuỗi khóa cache cần xóa.\n */\n public async deleteCacheKeyStartWidth(key: string) {\n return await UtilsCache.DeleteKeyStartWithAsync(md5(key), true);\n }\n\n private async promiseCacheResponseData<T>(observable: Observable<IHttpResponse<T>>, key: string, params: Array<any>, timeCache = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, reloadCache = false): Promise<IHttpResponse<T>> {\n params = Array.isArray(params) ? params : [params];\n params.push(this.keyCacheUniqueByIdUserLogin);\n\n const keyCache = getKeyCacheByArrayObject(key, params);\n if (reloadCache) {\n await this.deleteCacheKeyStartWidth(key);\n }\n const data = await UtilsCache.GetAsync(keyCache, undefined, true);\n\n if (data) {\n return data;\n }\n const result = await lastValueFrom(observable);\n\n if (result && result.data) {\n UtilsCache.SetAsync(keyCache, result, timeCache, true);\n }\n\n return result;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-services-base-request-abstract.mjs","sources":["../../../../../libs-ui/services/base-request-abstract/src/base-request-abstract.service.ts","../../../../../libs-ui/services/base-request-abstract/src/libs-ui-services-base-request-abstract.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams, HttpStatusCode } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { IHttpProcessUpload, IHttpResponse, IPaging } from '@libs-ui/interfaces-types';\nimport { DEFAULT_START_PAGE_0, UtilsCache, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, endCodeUrl, get, getKeyCacheByArrayObject, isNil, md5, omitBy } from '@libs-ui/utils';\nimport { lastValueFrom, Observable } from 'rxjs';\nimport { Observer } from 'rxjs/internal/types';\nimport { catchError, map } from 'rxjs/operators';\ntype TYPE_METHOD = 'POST' | 'PATCH' | 'PUT';\n\nexport abstract class LibsUiBaseRequestAbstractService {\n protected keyCacheUniqueByIdUserLogin = '';\n protected baseUrl!: string;\n protected ignoreRedirect401?: boolean;\n protected http = inject(HttpClient);\n protected isStartZeroPage = false;\n\n protected abstract getOptions<TypeParams>(httpParams: UtilsHttpParamsRequest<TypeParams>, contentType?: string): { headers: HttpHeaders, params: HttpParams };\n protected abstract redirectToLogin(): void;\n protected abstract replaceURLByPattern<TypeParams>(url: string, params: UtilsHttpParamsRequest<TypeParams>): { url: string, params: UtilsHttpParamsRequest<TypeParams> };\n\n\n get<TypeResponse, TypeParams = any>(path: string, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.get<IHttpResponse<TypeResponse>>(result.url, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n post<TypeResponse, TypeParams = any, TypeBody = any>(path: string, body: TypeBody, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.post<IHttpResponse<TypeResponse>>(result.url, body, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n postUrlEndCode<TypeResponse, TypeParams = any, TypeBody = any>(path: string, body: TypeBody, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const bodyValue = endCodeUrl(body, true);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.post<IHttpResponse<TypeResponse>>(result.url, bodyValue, this.getOptions(params, 'application/x-www-form-urlencoded')).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n put<TypeResponse, TypeParams = any, TypeBody = any>(path: string, body: TypeBody, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.put<IHttpResponse<TypeResponse>>(result.url, body, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n patch<TypeResponse, TypeParams = any>(path: string, body: unknown, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.patch<IHttpResponse<TypeResponse>>(result.url, body, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n patchUrlEndCode<TypeResponse, TypeParams = any>(path: string, body: unknown, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const bodyValue = endCodeUrl(body, true);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.patch<IHttpResponse<TypeResponse>>(result.url, bodyValue, this.getOptions(params, 'application/x-www-form-urlencoded')).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n delete<TypeResponse, TypeParams = any>(path: string, params?: UtilsHttpParamsRequest<TypeParams>) {\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, params);\n\n return this.http.delete<IHttpResponse<TypeResponse>>(result.url, this.getOptions(params)).pipe(\n map((res: any) => this.handlerResponse<TypeResponse>(res, resultCheckPageZero.isStartZero)),\n catchError((err: any) => this.handlerCatchError<TypeResponse>(err))\n );\n }\n\n public sendWithFile<TypeResponse, TypeParams = any, TypeBody = any>(path: string, params: UtilsHttpParamsRequest<TypeParams>, argumentsValue: { method: TYPE_METHOD; bodyData: TypeBody; keepFileOfBody?: boolean; keepArrayValue?: boolean; processUpload?: (process: IHttpProcessUpload) => void }): Observable<IHttpResponse<TypeResponse>> {\n const { method, keepFileOfBody, keepArrayValue, processUpload } = argumentsValue;\n const bodyData = omitBy<Record<string, any>>(argumentsValue.bodyData as any, (dataItem: any) => isNil(dataItem));\n\n params = UtilsHttpParamsRequestInstance(undefined, params);\n const resultCheckPageZero = this.checkStartPageIsZero<TypeParams>(params);\n\n const result = this.replaceURLByPattern<TypeParams>(`${this.baseUrl}${path ? path : ''}`, resultCheckPageZero.params);\n const url = result.url;\n const options = this.getOptions(result.params);\n\n return new Observable((observer: Observer<IHttpResponse<TypeResponse>>) => {\n const formData: FormData = argumentsValue.bodyData instanceof FormData ? argumentsValue.bodyData : new FormData();\n const xhr: XMLHttpRequest = new XMLHttpRequest();\n const paramsStr = options.params.toString();\n const headers = options.headers;\n\n if (processUpload) {\n xhr.upload.onprogress = (e) => {\n processUpload({\n loaded: e.loaded,\n total: e.total,\n percent: (e.loaded / e.total) * 100\n });\n };\n }\n\n if (!(argumentsValue.bodyData instanceof FormData)) {\n for (const property in bodyData) {\n this.appendRecursive(formData, bodyData[property], property, keepFileOfBody, keepArrayValue);\n }\n }\n xhr.open(method, `${url}${paramsStr ? `?${paramsStr}` : ''}`, true);\n headers.keys().forEach((key: string) => key.toLocaleLowerCase() !== 'content-type' && xhr.setRequestHeader(key, headers.get(key) || ''));\n xhr.send(formData);\n xhr.onreadystatechange = () => {\n if (xhr.readyState !== 4) {\n return;\n }\n if (xhr.status === 200) {\n observer.next(this.handlerResponse<TypeResponse>(this.convertResponseXHR<TypeResponse>(xhr), resultCheckPageZero.isStartZero));\n\n return observer.complete();\n }\n observer.error(this.convertResponseXHR<TypeResponse>(xhr));\n\n return observer.complete();\n };\n });\n }\n\n private appendRecursive<TypeBody>(fData: FormData, data: TypeBody, prop: string, keepFileOfBody?: boolean, keepArrayValue?: boolean) {\n if (keepFileOfBody) {\n if (data instanceof File || data instanceof Blob || Object.prototype.toString.call(data) === '[object File]') {\n this.appendFileToFormData(fData, prop, data as File);\n\n return;\n }\n if (data instanceof Array && data.length && data[0] instanceof File) {\n for (const file of data) {\n this.appendFileToFormData(fData, prop, file);\n }\n\n return;\n }\n }\n if (keepArrayValue && data instanceof Array) {\n fData.append(prop, JSON.stringify(data));\n\n return;\n }\n if ('object' === typeof data) {\n fData.append(prop, JSON.stringify(data));\n\n return;\n }\n fData.append(prop, data as any);\n }\n\n private appendFileToFormData(formData: FormData, prop: string, file: File) {\n formData.append(prop, file, file.name);\n }\n\n\n private convertResponseXHR<TypeResponse>(_xhr: XMLHttpRequest): IHttpResponse<TypeResponse> {\n const XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n let code: number = _xhr.status === 1223 ? 204 : _xhr.status;\n let message = _xhr.statusText;\n let data: any = null;\n\n if (code !== 204) {\n data = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n if (typeof data === 'string') {\n data = data.replace(XSSI_PREFIX, '');\n }\n }\n\n if (code === 0) {\n code = data ? 200 : 0;\n }\n if (data) {\n\n data = JSON.parse(data);\n code = data.code ?? 200;\n message = data.message || message;\n }\n\n message = message ?? 'OK';\n\n return { ...data, code, message };\n }\n\n public getResponseURL(xhr: any): string {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n\n return '';\n }\n\n protected checkStartPageIsZero<TypeParams>(params?: UtilsHttpParamsRequest<TypeParams>): { params: UtilsHttpParamsRequest<TypeParams>, isStartZero: boolean } {\n if (!params) {\n return { params: new UtilsHttpParamsRequest(), isStartZero: false };\n }\n if (params.has(DEFAULT_START_PAGE_0) || this.isStartZeroPage) {\n params.delete(DEFAULT_START_PAGE_0);\n const page = params.get('page') ? Number(params.get('page')) : -1;\n\n if (isNil(page) || page === -1) {\n return { params: params, isStartZero: false };\n }\n params.set('page', page - 1);\n\n return { params: params, isStartZero: true };\n }\n\n return { params: params, isStartZero: false };\n }\n\n protected handlerResponse<TypeResponse>(res: any, isPageStartZero: boolean): IHttpResponse<TypeResponse> {\n const resConvert: any = {\n message: get(res, 'message'),\n code: 200\n };\n const code = get(res, 'code', 200);\n\n if (`${code}` !== '200' && `${code}` !== '001') {\n resConvert.feCloneCode = code;\n }\n\n if (typeof res !== 'object' || res === null) {\n resConvert['data'] = res;\n return resConvert;\n }\n\n const paging: IPaging = {\n page: get(res, 'paging.page') || get(res, 'page'),\n per_page: get(res, 'paging.per_page') || get(res, 'size'),\n total_items: get(res, 'paging.total_items') || get(res, 'paging.total_count') || get(res, 'paging.total_item') || get(res, 'totalElements'),\n total_pages: get(res, 'paging.total_pages') || get(res, 'paging.total_page') || get(res, 'paging.page_count') || get(res, 'paging.page_count') || get(res, 'totalPages'),\n before: get(res, 'paging.cursors.before') || get(res, 'paging.before') || get(res, 'cursors.before') || get(res, 'paging.before_token') || get(res, 'paging.cursors.before_token'),\n after: get(res, 'paging.cursors.after') || get(res, 'paging.after') || get(res, 'cursors.after') || get(res, 'paging.after_token') || get(res, 'paging.cursors.after_token'),\n previous: get(res, 'paging.previous') || get(res, 'paging.cursors.previous') || get(res, 'cursors.previous'),\n next: get(res, 'paging.next') || get(res, 'paging.next_page') || get(res, 'paging.cursors.next') || get(res, 'cursors.next')\n };\n const keysPaging = Object.keys(paging);\n\n keysPaging.forEach((key: string) => {\n if (isNil((paging as any)[key])) {\n delete (paging as any)[key];\n\n return;\n }\n });\n\n if (Object.keys(paging).length) {\n if (isPageStartZero && !isNil(paging.page)) {\n paging.page += 1;\n }\n if (paging.total_items && paging.page && paging.per_page && (paging.page * paging.per_page >= paging.total_items)) {\n paging.total_pages = paging.page;\n }\n if (resConvert.data instanceof Array && !resConvert.data.length) {\n paging.total_pages = paging.page || 0;\n }\n resConvert.paging = paging;\n }\n const fieldDelete = ['code', 'message', 'paging', 'totalElements', 'size', 'totalPages', 'page'];\n\n fieldDelete.forEach(field => {\n if (!isNil(res[field])) {\n delete res[field];\n }\n });\n const fieldNotMergeToData = ['lang'];\n\n fieldNotMergeToData.forEach(field => {\n if (!isNil(res[field])) {\n resConvert[field] = res[field];\n delete res[field];\n }\n });\n const keys = Object.keys(res);\n\n if (keys.length === 1) {\n resConvert.data = keys[0] === '0' ? res : res[keys[0]];\n }\n if (keys.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isNil(res.data) ? (resConvert.data = res) : Object.assign(resConvert, res);\n }\n\n return resConvert;\n }\n\n protected handlerCatchError<TypeResponse>(err: HttpErrorResponse): Observable<IHttpResponse<TypeResponse>> {\n if (err.status === HttpStatusCode.Unauthorized && !this.ignoreRedirect401) {\n this.redirectToLogin();\n }\n const code = get(err, 'error.code', get(err, 'status', 0));\n const message = code >= 100 && code < 500 ? (err?.error?.message || err?.message || 'i18n_alert_connect_server_error') : 'i18n_alert_connect_server_error';\n const data = get(err, 'error.data', '');\n\n throw { code: code >= 100 && code < 500 ? code : 500, message, subMessage: get(err, 'error.errors', get(err, 'errors')), data: data };\n }\n\n\n /**\n * Lưu trữ dữ liệu phản hồi vào cache.\n * @param observable - Observable của phản hồi HTTP.\n * @param key - Khóa cache.Lưu ý không md5 key trước khi truyền vào\n * @param params - Các tham số để tạo khóa cache.\n * @param timeCache - Thời gian lưu trữ cache (mặc định là CACHE_EXPIRE_TIME_DEFAULT).\n * @param reloadCache - Nếu true, luôn gọi để lấy giá trị mới. giá trị này có để sử dụng với các nghiệp vụ gọi luôn luôn lấy dữ liệu mới nhất\n * @returns Observable của phản hồi HTTP đã được cache.\n */\n public cacheResponseData<T>(observable: Observable<IHttpResponse<T>>, key: string, params: Array<any>, timeCache = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, reloadCache = false): Observable<IHttpResponse<T>> {\n return new Observable((observe) => {\n this.promiseCacheResponseData(observable, key, params, timeCache, reloadCache).then((res) => {\n observe?.next(res);\n observe?.complete();\n }).catch(err => {\n observe?.error(err);\n observe?.complete();\n });\n });\n }\n\n /**\n * Xóa các khóa cache bắt đầu với một chuỗi nhất định.\n * Lưu ý: không md5 key trước khi truyền vào.\n * Sử dụng hàm này trong các trường hợp như gọi API update hoặc xóa dữ liệu,khi đó cần xóa cache đi để khi gọi danh sách sẽ lấy được giá trị mới nhất.\n * @param key - Chuỗi khóa cache cần xóa.\n */\n public async deleteCacheKeyStartWidth(key: string) {\n return await UtilsCache.DeleteKeyStartWithAsync(md5(key), true);\n }\n\n private async promiseCacheResponseData<T>(observable: Observable<IHttpResponse<T>>, key: string, params: Array<any>, timeCache = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, reloadCache = false): Promise<IHttpResponse<T>> {\n params = Array.isArray(params) ? params : [params];\n params.push(this.keyCacheUniqueByIdUserLogin);\n\n const keyCache = getKeyCacheByArrayObject(key, params);\n if (reloadCache) {\n await this.deleteCacheKeyStartWidth(key);\n }\n const data = await UtilsCache.GetAsync(keyCache, undefined, true);\n\n if (data) {\n return data;\n }\n const result = await lastValueFrom(observable);\n\n if (result && result.data) {\n UtilsCache.SetAsync(keyCache, result, timeCache, true);\n }\n\n return result;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/services-base-request-abstract",
3
- "version": "0.2.159",
3
+ "version": "0.2.161",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"