aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/ajax/AjaxResponse.ts
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2025-06-28 17:26:46 -0700
committerPinapelz <yukais@pinapelz.com>2025-06-28 17:43:56 -0700
commite4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch)
tree06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/ajax/AjaxResponse.ts
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/ajax/AjaxResponse.ts')
-rw-r--r--node_modules/rxjs/src/internal/ajax/AjaxResponse.ts124
1 files changed, 124 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/ajax/AjaxResponse.ts b/node_modules/rxjs/src/internal/ajax/AjaxResponse.ts
new file mode 100644
index 0000000..c9ca915
--- /dev/null
+++ b/node_modules/rxjs/src/internal/ajax/AjaxResponse.ts
@@ -0,0 +1,124 @@
+import { AjaxRequest, AjaxResponseType } from './types';
+import { getXHRResponse } from './getXHRResponse';
+
+/**
+ * A normalized response from an AJAX request. To get the data from the response,
+ * you will want to read the `response` property.
+ *
+ * - DO NOT create instances of this class directly.
+ * - DO NOT subclass this class.
+ *
+ * It is advised not to hold this object in memory, as it has a reference to
+ * the original XHR used to make the request, as well as properties containing
+ * request and response data.
+ *
+ * @see {@link ajax}
+ * @see {@link AjaxConfig}
+ */
+export class AjaxResponse<T> {
+ /** The HTTP status code */
+ readonly status: number;
+
+ /**
+ * The response data, if any. Note that this will automatically be converted to the proper type
+ */
+ readonly response: T;
+
+ /**
+ * The responseType set on the request. (For example: `""`, `"arraybuffer"`, `"blob"`, `"document"`, `"json"`, or `"text"`)
+ * @deprecated There isn't much reason to examine this. It's the same responseType set (or defaulted) on the ajax config.
+ * If you really need to examine this value, you can check it on the `request` or the `xhr`. Will be removed in v8.
+ */
+ readonly responseType: XMLHttpRequestResponseType;
+
+ /**
+ * The total number of bytes loaded so far. To be used with {@link total} while
+ * calculating progress. (You will want to set {@link includeDownloadProgress} or
+ * {@link includeDownloadProgress})
+ */
+ readonly loaded: number;
+
+ /**
+ * The total number of bytes to be loaded. To be used with {@link loaded} while
+ * calculating progress. (You will want to set {@link includeDownloadProgress} or
+ * {@link includeDownloadProgress})
+ */
+ readonly total: number;
+
+ /**
+ * A dictionary of the response headers.
+ */
+ readonly responseHeaders: Record<string, string>;
+
+ /**
+ * A normalized response from an AJAX request. To get the data from the response,
+ * you will want to read the `response` property.
+ *
+ * - DO NOT create instances of this class directly.
+ * - DO NOT subclass this class.
+ *
+ * @param originalEvent The original event object from the XHR `onload` event.
+ * @param xhr The `XMLHttpRequest` object used to make the request. This is useful for examining status code, etc.
+ * @param request The request settings used to make the HTTP request.
+ * @param type The type of the event emitted by the {@link ajax} Observable
+ */
+ constructor(
+ /**
+ * The original event object from the raw XHR event.
+ */
+ public readonly originalEvent: ProgressEvent,
+ /**
+ * The XMLHttpRequest object used to make the request.
+ * NOTE: It is advised not to hold this in memory, as it will retain references to all of it's event handlers
+ * and many other things related to the request.
+ */
+ public readonly xhr: XMLHttpRequest,
+ /**
+ * The request parameters used to make the HTTP request.
+ */
+ public readonly request: AjaxRequest,
+ /**
+ * The event type. This can be used to discern between different events
+ * if you're using progress events with {@link includeDownloadProgress} or
+ * {@link includeUploadProgress} settings in {@link AjaxConfig}.
+ *
+ * The event type consists of two parts: the {@link AjaxDirection} and the
+ * the event type. Merged with `_`, they form the `type` string. The
+ * direction can be an `upload` or a `download` direction, while an event can
+ * be `loadstart`, `progress` or `load`.
+ *
+ * `download_load` is the type of event when download has finished and the
+ * response is available.
+ */
+ public readonly type: AjaxResponseType = 'download_load'
+ ) {
+ const { status, responseType } = xhr;
+ this.status = status ?? 0;
+ this.responseType = responseType ?? '';
+
+ // Parse the response headers in advance for the user. There's really
+ // not a great way to get all of them. So we need to parse the header string
+ // we get back. It comes in a simple enough format:
+ //
+ // header-name: value here
+ // content-type: application/json
+ // other-header-here: some, other, values, or, whatever
+ const allHeaders = xhr.getAllResponseHeaders();
+ this.responseHeaders = allHeaders
+ ? // Split the header text into lines
+ allHeaders.split('\n').reduce((headers: Record<string, string>, line) => {
+ // Split the lines on the first ": " as
+ // "key: value". Note that the value could
+ // technically have a ": " in it.
+ const index = line.indexOf(': ');
+ headers[line.slice(0, index)] = line.slice(index + 2);
+ return headers;
+ }, {})
+ : {};
+
+ this.response = getXHRResponse(xhr);
+ const { loaded, total } = originalEvent;
+ this.loaded = loaded;
+ this.total = total;
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage