UNPKG

devextreme-angular

Version:

DevExtreme UI and Visualization Components for Angular

1 lines • 20.6 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: 26.1.3\n * Build date: Wed Jun 10 2026\n *\n * Copyright (c) 2012 - 2026 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\n */\n\nimport {\n HttpClient,\n HttpEventType,\n HttpParams,\n HttpEvent,\n HttpErrorResponse,\n HttpResponse,\n HttpHeaders,\n} from '@angular/common/http';\nimport { Deferred, DeferredObj } from 'devextreme/core/utils/deferred';\nimport { isDefined } from 'devextreme/core/utils/type';\nimport { getWindow } from 'devextreme/core/utils/window';\nimport {\n isCrossDomain,\n evalCrossDomainScript,\n getRequestOptions,\n getJsonpCallbackName,\n getRequestHeaders as getAjaxRequestHeaders,\n getAcceptHeader,\n getMethod,\n evalScript,\n} from 'devextreme/core/utils/ajax_utils';\n\ntype Result = Promise<any> & { abort: () => void };\ntype DeferredResult = DeferredObj<any>;\ninterface Options {\n url: string;\n [key: string]: any;\n}\n\ninterface XHRSurrogate {\n type?: string;\n aborted: boolean;\n abort: () => void;\n response?: HttpResponse<object>;\n status?: number;\n statusText?: string;\n}\n\ninterface SubscriptionLike {\n unsubscribe: () => void;\n}\n\nconst PARSER_ERROR = 'parsererror';\nconst SUCCESS = 'success';\nconst ERROR = 'error';\nconst NO_CONTENT = 'nocontent';\nconst TIMEOUT = 'timeout';\nconst STATUS_ABORT = 0;\nconst CONTENT_TYPE = 'Content-Type';\nconst URLENCODED = 'application/x-www-form-urlencoded';\n\nfunction assignResponseProps(xhrSurrogate: XHRSurrogate, response: HttpResponse<any> | HttpErrorResponse) {\n const getResponseHeader = (name: string) => response.headers.get(name);\n\n function makeResponseText() {\n const body = 'error' in response ? response.error : response.body;\n\n if (typeof body !== 'string' || String(getResponseHeader(CONTENT_TYPE)).startsWith('application/json')) {\n return JSON.stringify(body);\n }\n\n return body;\n }\n\n Object.assign(xhrSurrogate, {\n status: response.status,\n statusText: response.statusText,\n getResponseHeader,\n responseText: makeResponseText(),\n });\n\n return xhrSurrogate;\n}\n\nfunction isGetMethod(options: Options) {\n return getMethod(options) === 'GET';\n}\n\nfunction isCacheNeed(options: Options) {\n if (options.cache === undefined) {\n return !(isUsedScript(options) || isUsedJSONP(options));\n }\n\n return options.cache;\n}\n\nfunction isUsedScript(options: Options) {\n return options.dataType === 'script';\n}\n\nfunction isUsedJSONP(options: Options) {\n return options.dataType === 'jsonp';\n}\n\nfunction getRequestHeaders(options: Options) {\n const headers = getAjaxRequestHeaders(options);\n const { upload } = options;\n\n if (!headers.Accept) {\n headers.Accept = getAcceptHeader(options);\n }\n\n if (!upload && !isGetMethod(options) && !headers[CONTENT_TYPE]) {\n headers[CONTENT_TYPE] = options.contentType || `${URLENCODED};charset=utf-8`;\n }\n\n return Object.keys(headers).reduce((acc, key) => {\n if (isDefined(headers[key])) {\n acc[key] = headers[key];\n }\n return acc;\n }, {});\n}\n\nfunction rejectIfAborted(deferred: DeferredResult, xhrSurrogate: XHRSurrogate, callback?: () => void) {\n if (xhrSurrogate.aborted) {\n deferred.reject({ status: STATUS_ABORT, statusText: 'aborted', ok: false });\n callback?.();\n }\n}\n\nfunction getJsonpParameters(options: Options) {\n const patchedOptions = { ...options };\n const callbackName = getJsonpCallbackName(patchedOptions);\n\n return { callbackName, data: patchedOptions.data };\n}\n\nfunction addJsonpCallback(callbackName: string, deferred: DeferredResult, xhrSurrogate: XHRSurrogate) {\n getWindow()[callbackName] = (data) => deferred.resolve(data, SUCCESS, xhrSurrogate);\n}\n\nfunction sendRequestByScript(url: string, deferred: DeferredResult, xhrSurrogate: XHRSurrogate) {\n evalCrossDomainScript(url).then(\n () => deferred.resolve(null, SUCCESS, xhrSurrogate),\n () => deferred.reject(xhrSurrogate, ERROR),\n );\n}\n\nfunction getRequestCallbacks(options: Options, deferred: DeferredResult, xhrSurrogate: XHRSurrogate) {\n return {\n next(response: HttpResponse<any>) {\n if (isUsedJSONP(options)) {\n return options.crossDomain\n ? deferred.resolve(response, 'success', assignResponseProps(xhrSurrogate, response))\n : evalScript(response.body);\n }\n\n if (isUsedScript(options)) {\n evalScript(response.body);\n }\n\n return deferred.resolve(\n response.body,\n response.body ? 'success' : NO_CONTENT,\n assignResponseProps(xhrSurrogate, response),\n );\n },\n error(error: HttpErrorResponse) {\n error = error && typeof error === 'object' ? error : { error } as unknown as HttpErrorResponse;\n let errorStatus = error?.statusText === TIMEOUT ? TIMEOUT : 'error';\n\n errorStatus = options.dataType === 'json' && error?.message?.includes?.('parsing')\n ? PARSER_ERROR\n : errorStatus;\n\n return deferred.reject(assignResponseProps(xhrSurrogate, { status: 400, ...error } as HttpErrorResponse), errorStatus, error);\n },\n complete() {\n rejectIfAborted(deferred, xhrSurrogate);\n },\n };\n}\n\nfunction getUploadCallbacks(options: Options, deferred: DeferredResult, xhrSurrogate: XHRSurrogate) {\n let total = 0;\n let isUploadStarted = false;\n\n return {\n next: (event: HttpEvent<object>) => {\n if (!isUploadStarted\n && [HttpEventType.UploadProgress, HttpEventType.Sent].includes(event.type)) {\n options.upload.onloadstart?.(event);\n isUploadStarted = true;\n }\n\n if (event.type === HttpEventType.UploadProgress) {\n total += event.loaded;\n options.upload.onprogress?.({ ...event, total });\n } else if (event.type === HttpEventType.Response) {\n xhrSurrogate.status = event.status;\n xhrSurrogate.statusText = event.statusText;\n xhrSurrogate.response = event;\n\n const result = options?.dataType === 'json' && typeof event.body === 'object'\n ? event.body\n : xhrSurrogate;\n\n return deferred.resolve(result, SUCCESS);\n }\n return null;\n },\n error(error: HttpErrorResponse) {\n error = error && typeof error === 'object' ? error : { error } as unknown as HttpErrorResponse;\n return deferred.reject(assignResponseProps(xhrSurrogate, { status: 400, ...error } as HttpErrorResponse), error.status, error);\n },\n complete() {\n rejectIfAborted(deferred, xhrSurrogate, () => {\n options.upload?.onabort?.(xhrSurrogate);\n });\n },\n };\n}\n\nexport const sendRequestFactory = (httpClient: HttpClient) => (options: Options) => {\n let subscription: SubscriptionLike | null = null;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const deferred: DeferredResult = Deferred();\n const result = deferred.promise() as Result;\n const isGet = isGetMethod(options);\n const isJSONP = isUsedJSONP(options);\n const isScript = isUsedScript(options);\n\n options.crossDomain = isCrossDomain(options.url);\n options.cache = isCacheNeed(options);\n\n const clearTimeoutIfSet = () => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n const headers = getRequestHeaders(options);\n const xhrSurrogate: XHRSurrogate = {\n type: 'XMLHttpRequestSurrogate',\n aborted: false,\n abort() {\n this.aborted = true;\n clearTimeoutIfSet();\n subscription?.unsubscribe();\n subscription = null;\n rejectIfAborted(deferred, this, () => options.upload?.onabort?.(this));\n },\n };\n\n result.abort = () => xhrSurrogate.abort();\n\n if (!options.crossDomain && isJSONP) {\n const { callbackName, data } = getJsonpParameters(options);\n\n options.data = { ...options.data, ...data };\n\n addJsonpCallback(callbackName, deferred, xhrSurrogate);\n }\n\n const { url, parameters: data } = getRequestOptions(options, headers);\n const { upload, beforeSend, xhrFields } = options;\n\n beforeSend?.(xhrSurrogate);\n\n if (options.crossDomain && isScript && !xhrSurrogate.aborted) {\n sendRequestByScript(url, deferred, xhrSurrogate);\n return result;\n }\n\n if (options.cache === false && isGet && data) {\n data._ = Date.now() + 1;\n }\n\n const makeBody = () => (!upload && typeof data === 'object' && headers[CONTENT_TYPE].indexOf(URLENCODED) === 0\n ? Object.keys(data).reduce(\n (httpParams, key) => httpParams.set(key, data[key]),\n new HttpParams(),\n ).toString()\n : data);\n\n const body = isGet ? undefined : makeBody();\n const params = isGet ? data : undefined;\n\n const request = options.crossDomain && isJSONP\n ? httpClient.jsonp(url, options.jsonp || 'callback')\n : httpClient.request(\n getMethod(options),\n url,\n {\n params,\n body,\n headers,\n reportProgress: true,\n withCredentials: xhrFields?.withCredentials,\n observe: upload ? 'events' : 'response',\n responseType: options.responseType || (isScript || isJSONP ? 'text' : options.dataType),\n },\n );\n\n const callbacks = upload\n ? getUploadCallbacks(options, deferred, xhrSurrogate)\n : getRequestCallbacks(options, deferred, xhrSurrogate);\n\n if (options.timeout) {\n timeoutId = setTimeout(() => {\n timeoutId = null;\n subscription?.unsubscribe();\n subscription = null;\n const timeoutError = {\n statusText: TIMEOUT,\n status: 0,\n ok: false,\n headers: new HttpHeaders(),\n } as HttpErrorResponse;\n callbacks.error(timeoutError);\n }, options.timeout);\n }\n\n subscription = request.subscribe({\n next(value) {\n clearTimeoutIfSet();\n callbacks.next(value);\n },\n error(err) {\n clearTimeoutIfSet();\n callbacks.error(err);\n },\n complete: callbacks.complete,\n });\n\n return result;\n};\n","/*!\n * devextreme-angular\n * Version: 26.1.3\n * Build date: Wed Jun 10 2026\n *\n * Copyright (c) 2012 - 2026 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\n */\n\nimport { NgModule, Injector, createNgModule } from '@angular/core';\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\nimport devextremeAjax from 'devextreme/core/utils/ajax';\nimport { sendRequestFactory } from './ajax';\n\n@NgModule({\n exports: [],\n imports: [],\n providers: [],\n})\nexport class DxHttpModule {\n constructor(injector: Injector) {\n let httpClient: HttpClient = injector.get(HttpClient, null);\n\n if (!httpClient) {\n const moduleRef = createNgModule(HttpClientModule, injector);\n\n httpClient = moduleRef.injector.get(HttpClient);\n }\n\n devextremeAjax.inject({ sendRequest: sendRequestFactory(httpClient) });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getAjaxRequestHeaders"],"mappings":"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"}