UNPKG

devextreme-angular

Version:

Angular UI and visualization components based on DevExtreme widgets

1 lines • 20.4 kB
{"version":3,"file":"devextreme-angular-http.mjs","sources":["../../../dist/http/ajax.ts","../../../dist/http/index.ts","../../../dist/http/devextreme-angular-http.ts"],"sourcesContent":["/*!\n * devextreme-angular\n * Version: 25.1.4\n * Build date: Tue Aug 05 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\nimport {\r\n HttpClient, HttpEventType, HttpParams, HttpEvent, HttpErrorResponse, HttpResponse,\r\n} from '@angular/common/http';\r\nimport { throwError, Subject } from 'rxjs';\r\nimport { takeUntil, timeoutWith } from 'rxjs/operators';\r\nimport { Deferred, DeferredObj } from 'devextreme/core/utils/deferred';\r\nimport { isDefined } from 'devextreme/core/utils/type';\r\nimport { getWindow } from 'devextreme/core/utils/window';\r\nimport {\r\n isCrossDomain,\r\n evalCrossDomainScript,\r\n getRequestOptions,\r\n getJsonpCallbackName,\r\n getRequestHeaders as getAjaxRequestHeaders,\r\n getAcceptHeader,\r\n getMethod,\r\n evalScript,\r\n} from 'devextreme/core/utils/ajax_utils';\r\n\r\ntype Result = Promise<any> & { abort: () => void };\r\ntype DeferredResult = DeferredObj<any>;\r\ninterface Options {\r\n url: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface XHRSurrogate {\r\n type?: string;\r\n aborted: boolean;\r\n abort: () => void;\r\n response?: HttpResponse<object>;\r\n status?: number;\r\n statusText?: string;\r\n}\r\n\r\nconst PARSER_ERROR = 'parsererror';\r\nconst SUCCESS = 'success';\r\nconst ERROR = 'error';\r\nconst NO_CONTENT = 'nocontent';\r\nconst TIMEOUT = 'timeout';\r\nconst STATUS_ABORT = 0;\r\nconst CONTENT_TYPE = 'Content-Type';\r\nconst URLENCODED = 'application/x-www-form-urlencoded';\r\n\r\nfunction assignResponseProps(xhrSurrogate: XHRSurrogate, response: HttpResponse<any> | HttpErrorResponse) {\r\n const getResponseHeader = (name: string) => response.headers.get(name);\r\n\r\n function makeResponseText() {\r\n const body = 'error' in response ? response.error : response.body;\r\n\r\n if (typeof body !== 'string' || String(getResponseHeader(CONTENT_TYPE)).startsWith('application/json')) {\r\n return JSON.stringify(body);\r\n }\r\n\r\n return body;\r\n }\r\n\r\n Object.assign(xhrSurrogate, {\r\n status: response.status,\r\n statusText: response.statusText,\r\n getResponseHeader,\r\n responseText: makeResponseText(),\r\n });\r\n\r\n return xhrSurrogate;\r\n}\r\n\r\nfunction isGetMethod(options: Options) {\r\n return getMethod(options) === 'GET';\r\n}\r\n\r\nfunction isCacheNeed(options: Options) {\r\n if (options.cache === undefined) {\r\n return !(isUsedScript(options) || isUsedJSONP(options));\r\n }\r\n\r\n return options.cache;\r\n}\r\n\r\nfunction isUsedScript(options: Options) {\r\n return options.dataType === 'script';\r\n}\r\n\r\nfunction isUsedJSONP(options: Options) {\r\n return options.dataType === 'jsonp';\r\n}\r\n\r\nfunction getRequestHeaders(options: Options) {\r\n const headers = getAjaxRequestHeaders(options);\r\n const { upload } = options;\r\n\r\n if (!headers.Accept) {\r\n headers.Accept = getAcceptHeader(options);\r\n }\r\n\r\n if (!upload && !isGetMethod(options) && !headers[CONTENT_TYPE]) {\r\n headers[CONTENT_TYPE] = options.contentType || `${URLENCODED};charset=utf-8`;\r\n }\r\n\r\n return Object.keys(headers).reduce((acc, key) => {\r\n if (isDefined(headers[key])) {\r\n acc[key] = headers[key];\r\n }\r\n return acc;\r\n }, {});\r\n}\r\n\r\nfunction rejectIfAborted(deferred: DeferredResult, xhrSurrogate: XHRSurrogate, callback?: () => void) {\r\n if (xhrSurrogate.aborted) {\r\n deferred.reject({ status: STATUS_ABORT, statusText: 'aborted', ok: false });\r\n callback?.();\r\n }\r\n}\r\n\r\nfunction getJsonpParameters(options: Options) {\r\n const patchedOptions = { ...options };\r\n const callbackName = getJsonpCallbackName(patchedOptions);\r\n\r\n return { callbackName, data: patchedOptions.data };\r\n}\r\n\r\nfunction addJsonpCallback(callbackName: string, deferred: DeferredResult, xhrSurrogate: XHRSurrogate) {\r\n getWindow()[callbackName] = (data) => deferred.resolve(data, SUCCESS, xhrSurrogate);\r\n}\r\n\r\nfunction sendRequestByScript(url: string, deferred: DeferredResult, xhrSurrogate: XHRSurrogate) {\r\n evalCrossDomainScript(url).then(\r\n () => deferred.resolve(null, SUCCESS, xhrSurrogate),\r\n () => deferred.reject(xhrSurrogate, ERROR),\r\n );\r\n}\r\n\r\nfunction getRequestCallbacks(options: Options, deferred: DeferredResult, xhrSurrogate: XHRSurrogate) {\r\n return {\r\n next(response: HttpResponse<any>) {\r\n if (isUsedJSONP(options)) {\r\n return options.crossDomain\r\n ? deferred.resolve(response, 'success', assignResponseProps(xhrSurrogate, response))\r\n : evalScript(response.body);\r\n }\r\n\r\n if (isUsedScript(options)) {\r\n evalScript(response.body);\r\n }\r\n\r\n return deferred.resolve(\r\n response.body,\r\n response.body ? 'success' : NO_CONTENT,\r\n assignResponseProps(xhrSurrogate, response),\r\n );\r\n },\r\n error(error: HttpErrorResponse) {\r\n error = error && typeof error === 'object' ? error : { error } as unknown as HttpErrorResponse;\r\n let errorStatus = error?.statusText === TIMEOUT ? TIMEOUT : 'error';\r\n\r\n errorStatus = options.dataType === 'json' && error?.message?.includes?.('parsing')\r\n ? PARSER_ERROR\r\n : errorStatus;\r\n\r\n return deferred.reject(assignResponseProps(xhrSurrogate, { status: 400, ...error } as HttpErrorResponse), errorStatus, error);\r\n },\r\n complete() {\r\n rejectIfAborted(deferred, xhrSurrogate);\r\n },\r\n };\r\n}\r\n\r\nfunction getUploadCallbacks(options: Options, deferred: DeferredResult, xhrSurrogate: XHRSurrogate) {\r\n let total = 0;\r\n let isUploadStarted = false;\r\n\r\n return {\r\n next: (event: HttpEvent<object>) => {\r\n if (!isUploadStarted\r\n && [HttpEventType.UploadProgress, HttpEventType.Sent].includes(event.type)) {\r\n options.upload.onloadstart?.(event);\r\n isUploadStarted = true;\r\n }\r\n\r\n if (event.type === HttpEventType.UploadProgress) {\r\n total += event.loaded;\r\n options.upload.onprogress?.({ ...event, total });\r\n } else if (event.type === HttpEventType.Response) {\r\n xhrSurrogate.status = event.status;\r\n xhrSurrogate.statusText = event.statusText;\r\n xhrSurrogate.response = event;\r\n\r\n const result = options?.dataType === 'json' && typeof event.body === 'object'\r\n ? event.body\r\n : xhrSurrogate;\r\n\r\n return deferred.resolve(result, SUCCESS);\r\n }\r\n return null;\r\n },\r\n error(error: HttpErrorResponse) {\r\n error = error && typeof error === 'object' ? error : { error } as unknown as HttpErrorResponse;\r\n return deferred.reject(assignResponseProps(xhrSurrogate, { status: 400, ...error } as HttpErrorResponse), error.status, error);\r\n },\r\n complete() {\r\n rejectIfAborted(deferred, xhrSurrogate, () => {\r\n options.upload?.onabort?.(xhrSurrogate);\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport const sendRequestFactory = (httpClient: HttpClient) => (options: Options) => {\r\n const abort$ = new Subject<void>();\r\n const deferred: DeferredResult = Deferred();\r\n const result = deferred.promise() as Result;\r\n const isGet = isGetMethod(options);\r\n const isJSONP = isUsedJSONP(options);\r\n const isScript = isUsedScript(options);\r\n\r\n options.crossDomain = isCrossDomain(options.url);\r\n options.cache = isCacheNeed(options);\r\n\r\n const headers = getRequestHeaders(options);\r\n const xhrSurrogate: XHRSurrogate = {\r\n type: 'XMLHttpRequestSurrogate',\r\n aborted: false,\r\n abort() {\r\n this.aborted = true;\r\n abort$.next();\r\n },\r\n };\r\n\r\n result.abort = () => xhrSurrogate.abort();\r\n\r\n if (!options.crossDomain && isJSONP) {\r\n const { callbackName, data } = getJsonpParameters(options);\r\n\r\n options.data = { ...options.data, ...data };\r\n\r\n addJsonpCallback(callbackName, deferred, xhrSurrogate);\r\n }\r\n\r\n const { url, parameters: data } = getRequestOptions(options, headers);\r\n const { upload, beforeSend, xhrFields } = options;\r\n\r\n beforeSend?.(xhrSurrogate);\r\n\r\n if (options.crossDomain && isScript && !xhrSurrogate.aborted) {\r\n sendRequestByScript(url, deferred, xhrSurrogate);\r\n return result;\r\n }\r\n\r\n if (options.cache === false && isGet && data) {\r\n data._ = Date.now() + 1;\r\n }\r\n\r\n const makeBody = () => (!upload && typeof data === 'object' && headers[CONTENT_TYPE].indexOf(URLENCODED) === 0\r\n ? Object.keys(data).reduce(\r\n (httpParams, key) => httpParams.set(key, data[key]),\r\n new HttpParams(),\r\n ).toString()\r\n : data);\r\n\r\n const body = isGet ? undefined : makeBody();\r\n const params = isGet ? data : undefined;\r\n\r\n const request = options.crossDomain && isJSONP\r\n ? httpClient.jsonp(url, options.jsonp || 'callback')\r\n : httpClient.request(\r\n getMethod(options),\r\n url,\r\n {\r\n params,\r\n body,\r\n headers,\r\n reportProgress: true,\r\n withCredentials: xhrFields?.withCredentials,\r\n observe: upload ? 'events' : 'response',\r\n responseType: options.responseType || (isScript || isJSONP ? 'text' : options.dataType),\r\n },\r\n );\r\n\r\n const subscriptionCallbacks = upload\r\n ? getUploadCallbacks\r\n : getRequestCallbacks;\r\n\r\n request.pipe.apply(request, [\r\n takeUntil(abort$) as any,\r\n ...options.timeout\r\n ? [timeoutWith(options.timeout, throwError({ statusText: TIMEOUT, status: 0, ok: false })) as any]\r\n : [],\r\n ]).subscribe(\r\n subscriptionCallbacks(options, deferred, xhrSurrogate),\r\n );\r\n\r\n return result;\r\n};\r\n","/*!\n * devextreme-angular\n * Version: 25.1.4\n * Build date: Tue Aug 05 2025\n *\n * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-angular\n */\n\nimport { NgModule, Injector, createNgModuleRef } from '@angular/core';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport devextremeAjax from 'devextreme/core/utils/ajax';\r\nimport { sendRequestFactory } from './ajax';\r\n\r\n@NgModule({\r\n exports: [],\r\n imports: [],\r\n providers: [],\r\n})\r\nexport class DxHttpModule {\r\n constructor(injector: Injector) {\r\n let httpClient: HttpClient = injector.get(HttpClient, null);\r\n\r\n if (!httpClient) {\r\n const moduleRef = createNgModuleRef(HttpClientModule, injector);\r\n\r\n httpClient = moduleRef.injector.get(HttpClient);\r\n }\r\n\r\n devextremeAjax.inject({ sendRequest: sendRequestFactory(httpClient) });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getAjaxRequestHeaders"],"mappings":"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"}