@gcmdev/faxios 0.1.0
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/LICENSE +7 -0
- package/README.md +1817 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/adapters/fetch-helpers.d.ts +16 -0
- package/dist/lib/adapters/fetch-helpers.js +91 -0
- package/dist/lib/adapters/fetch-helpers.js.map +1 -0
- package/dist/lib/adapters/fetch.d.ts +3 -0
- package/dist/lib/adapters/fetch.js +417 -0
- package/dist/lib/adapters/fetch.js.map +1 -0
- package/dist/lib/cancel/CanceledError.d.ts +15 -0
- package/dist/lib/cancel/CanceledError.js +20 -0
- package/dist/lib/cancel/CanceledError.js.map +1 -0
- package/dist/lib/cancel/isCancel.d.ts +1 -0
- package/dist/lib/cancel/isCancel.js +5 -0
- package/dist/lib/cancel/isCancel.js.map +1 -0
- package/dist/lib/core/Faxios.d.ts +68 -0
- package/dist/lib/core/Faxios.js +269 -0
- package/dist/lib/core/Faxios.js.map +1 -0
- package/dist/lib/core/FaxiosError.d.ts +71 -0
- package/dist/lib/core/FaxiosError.js +192 -0
- package/dist/lib/core/FaxiosError.js.map +1 -0
- package/dist/lib/core/FaxiosHeaders.d.ts +45 -0
- package/dist/lib/core/FaxiosHeaders.js +299 -0
- package/dist/lib/core/FaxiosHeaders.js.map +1 -0
- package/dist/lib/core/InterceptorManager.d.ts +9 -0
- package/dist/lib/core/InterceptorManager.js +28 -0
- package/dist/lib/core/InterceptorManager.js.map +1 -0
- package/dist/lib/core/buildFullPath.d.ts +11 -0
- package/dist/lib/core/buildFullPath.js +41 -0
- package/dist/lib/core/buildFullPath.js.map +1 -0
- package/dist/lib/core/define.d.ts +28 -0
- package/dist/lib/core/define.js +35 -0
- package/dist/lib/core/define.js.map +1 -0
- package/dist/lib/core/dispatchRequest.d.ts +2 -0
- package/dist/lib/core/dispatchRequest.js +127 -0
- package/dist/lib/core/dispatchRequest.js.map +1 -0
- package/dist/lib/core/mergeConfig.d.ts +11 -0
- package/dist/lib/core/mergeConfig.js +152 -0
- package/dist/lib/core/mergeConfig.js.map +1 -0
- package/dist/lib/core/prepareRequest.d.ts +3 -0
- package/dist/lib/core/prepareRequest.js +112 -0
- package/dist/lib/core/prepareRequest.js.map +1 -0
- package/dist/lib/core/route.d.ts +14 -0
- package/dist/lib/core/route.js +24 -0
- package/dist/lib/core/route.js.map +1 -0
- package/dist/lib/core/settle.d.ts +2 -0
- package/dist/lib/core/settle.js +12 -0
- package/dist/lib/core/settle.js.map +1 -0
- package/dist/lib/core/transformData.d.ts +8 -0
- package/dist/lib/core/transformData.js +16 -0
- package/dist/lib/core/transformData.js.map +1 -0
- package/dist/lib/core/validateSchema.d.ts +6 -0
- package/dist/lib/core/validateSchema.js +32 -0
- package/dist/lib/core/validateSchema.js.map +1 -0
- package/dist/lib/defaults/index.d.ts +3 -0
- package/dist/lib/defaults/index.js +150 -0
- package/dist/lib/defaults/index.js.map +1 -0
- package/dist/lib/defaults/transitional.d.ts +9 -0
- package/dist/lib/defaults/transitional.js +10 -0
- package/dist/lib/defaults/transitional.js.map +1 -0
- package/dist/lib/env/data.d.ts +1 -0
- package/dist/lib/env/data.js +2 -0
- package/dist/lib/env/data.js.map +1 -0
- package/dist/lib/faxios.d.ts +99 -0
- package/dist/lib/faxios.js +68 -0
- package/dist/lib/faxios.js.map +1 -0
- package/dist/lib/helpers/FaxiosURLSearchParams.d.ts +7 -0
- package/dist/lib/helpers/FaxiosURLSearchParams.js +44 -0
- package/dist/lib/helpers/FaxiosURLSearchParams.js.map +1 -0
- package/dist/lib/helpers/HttpStatusCode.d.ts +72 -0
- package/dist/lib/helpers/HttpStatusCode.js +76 -0
- package/dist/lib/helpers/HttpStatusCode.js.map +1 -0
- package/dist/lib/helpers/buildURL.d.ts +19 -0
- package/dist/lib/helpers/buildURL.js +60 -0
- package/dist/lib/helpers/buildURL.js.map +1 -0
- package/dist/lib/helpers/combineURLs.d.ts +1 -0
- package/dist/lib/helpers/combineURLs.js +14 -0
- package/dist/lib/helpers/combineURLs.js.map +1 -0
- package/dist/lib/helpers/composeSignals.d.ts +8 -0
- package/dist/lib/helpers/composeSignals.js +48 -0
- package/dist/lib/helpers/composeSignals.js.map +1 -0
- package/dist/lib/helpers/cookies.d.ts +6 -0
- package/dist/lib/helpers/cookies.js +58 -0
- package/dist/lib/helpers/cookies.js.map +1 -0
- package/dist/lib/helpers/estimateDataURLDecodedBytes.d.ts +1 -0
- package/dist/lib/helpers/estimateDataURLDecodedBytes.js +91 -0
- package/dist/lib/helpers/estimateDataURLDecodedBytes.js.map +1 -0
- package/dist/lib/helpers/formDataToJSON.d.ts +9 -0
- package/dist/lib/helpers/formDataToJSON.js +98 -0
- package/dist/lib/helpers/formDataToJSON.js.map +1 -0
- package/dist/lib/helpers/isAbsoluteURL.d.ts +1 -0
- package/dist/lib/helpers/isAbsoluteURL.js +14 -0
- package/dist/lib/helpers/isAbsoluteURL.js.map +1 -0
- package/dist/lib/helpers/isFaxiosError.d.ts +8 -0
- package/dist/lib/helpers/isFaxiosError.js +13 -0
- package/dist/lib/helpers/isFaxiosError.js.map +1 -0
- package/dist/lib/helpers/isURLSameOrigin.d.ts +2 -0
- package/dist/lib/helpers/isURLSameOrigin.js +10 -0
- package/dist/lib/helpers/isURLSameOrigin.js.map +1 -0
- package/dist/lib/helpers/parseHeaders.d.ts +16 -0
- package/dist/lib/helpers/parseHeaders.js +70 -0
- package/dist/lib/helpers/parseHeaders.js.map +1 -0
- package/dist/lib/helpers/progressEventReducer.d.ts +5 -0
- package/dist/lib/helpers/progressEventReducer.js +45 -0
- package/dist/lib/helpers/progressEventReducer.js.map +1 -0
- package/dist/lib/helpers/sanitizeHeaderValue.d.ts +4 -0
- package/dist/lib/helpers/sanitizeHeaderValue.js +43 -0
- package/dist/lib/helpers/sanitizeHeaderValue.js.map +1 -0
- package/dist/lib/helpers/speedometer.d.ts +8 -0
- package/dist/lib/helpers/speedometer.js +42 -0
- package/dist/lib/helpers/speedometer.js.map +1 -0
- package/dist/lib/helpers/substitutePathParams.d.ts +2 -0
- package/dist/lib/helpers/substitutePathParams.js +14 -0
- package/dist/lib/helpers/substitutePathParams.js.map +1 -0
- package/dist/lib/helpers/throttle.d.ts +8 -0
- package/dist/lib/helpers/throttle.js +42 -0
- package/dist/lib/helpers/throttle.js.map +1 -0
- package/dist/lib/helpers/toFormData.d.ts +26 -0
- package/dist/lib/helpers/toFormData.js +233 -0
- package/dist/lib/helpers/toFormData.js.map +1 -0
- package/dist/lib/helpers/toURLEncodedForm.d.ts +2 -0
- package/dist/lib/helpers/toURLEncodedForm.js +8 -0
- package/dist/lib/helpers/toURLEncodedForm.js.map +1 -0
- package/dist/lib/helpers/trackStream.d.ts +1 -0
- package/dist/lib/helpers/trackStream.js +81 -0
- package/dist/lib/helpers/trackStream.js.map +1 -0
- package/dist/lib/helpers/validator.d.ts +16 -0
- package/dist/lib/helpers/validator.js +86 -0
- package/dist/lib/helpers/validator.js.map +1 -0
- package/dist/lib/platform.d.ts +22 -0
- package/dist/lib/platform.js +26 -0
- package/dist/lib/platform.js.map +1 -0
- package/dist/lib/types/standard-schema.d.ts +37 -0
- package/dist/lib/types/standard-schema.js +8 -0
- package/dist/lib/types/standard-schema.js.map +1 -0
- package/dist/lib/types.d.ts +219 -0
- package/dist/lib/types.js +5 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +143 -0
- package/dist/lib/utils.js +805 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +110 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import faxios from "./lib/faxios.js";
|
|
2
|
+
import type { FaxiosInstance } from "./lib/faxios.js";
|
|
3
|
+
import type { FaxiosRequestConfig } from "./lib/types.js";
|
|
4
|
+
export { default as Faxios } from "./lib/core/Faxios.js";
|
|
5
|
+
export { default as FaxiosError, isSchemaValidationError } from "./lib/core/FaxiosError.js";
|
|
6
|
+
export { default as CanceledError, default as Cancel } from "./lib/cancel/CanceledError.js";
|
|
7
|
+
export { default as isCancel } from "./lib/cancel/isCancel.js";
|
|
8
|
+
export { default as isFaxiosError } from "./lib/helpers/isFaxiosError.js";
|
|
9
|
+
export { default as toFormData } from "./lib/helpers/toFormData.js";
|
|
10
|
+
export { default as FaxiosHeaders } from "./lib/core/FaxiosHeaders.js";
|
|
11
|
+
export { default as HttpStatusCode } from "./lib/helpers/HttpStatusCode.js";
|
|
12
|
+
export { default as mergeConfig } from "./lib/core/mergeConfig.js";
|
|
13
|
+
export { VERSION } from "./lib/env/data.js";
|
|
14
|
+
export type { StandardSchemaV1 } from "./lib/types/standard-schema.js";
|
|
15
|
+
export type { BasePerCallConfig, DefineConfig, DefinedEndpoint, FaxiosLike, PerCallConfig } from "./lib/core/define.js";
|
|
16
|
+
export type { RouteConfig, RouteMethodConfig, RouteBuilder } from "./lib/core/route.js";
|
|
17
|
+
export type { FaxiosRequestConfig, InternalFaxiosRequestConfig, FaxiosResponse, FaxiosRequestHeaders, FaxiosResponseHeadersLike, FaxiosHeaderValue, Method, ResponseType, GenericHTMLFormElement, RawFaxiosRequestConfig, FaxiosPromise, CreateFaxiosDefaults } from "./lib/types.js";
|
|
18
|
+
export declare const all: FaxiosInstance["all"];
|
|
19
|
+
export declare const formToJSON: FaxiosInstance["formToJSON"];
|
|
20
|
+
export declare const create: (instanceConfig?: FaxiosRequestConfig) => FaxiosInstance;
|
|
21
|
+
export { faxios as default };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// @ts-self-types="./index.d.ts"
|
|
2
|
+
/* eslint-disable no-barrel-files/no-barrel-files */
|
|
3
|
+
import faxios from "./lib/faxios.js";
|
|
4
|
+
// Static re-exports so the emitted .d.ts references source modules.
|
|
5
|
+
// zshy rewrites .ts -> .js for static import/export, but NOT for inline
|
|
6
|
+
// import() type expressions (ImportTypeNode). Destructuring these off the
|
|
7
|
+
// runtime instance forced TS to emit the broken inline `import("./x.ts")` form.
|
|
8
|
+
export { default as Faxios } from "./lib/core/Faxios.js";
|
|
9
|
+
export { default as FaxiosError, isSchemaValidationError } from "./lib/core/FaxiosError.js";
|
|
10
|
+
export { default as CanceledError, default as Cancel } from "./lib/cancel/CanceledError.js";
|
|
11
|
+
export { default as isCancel } from "./lib/cancel/isCancel.js";
|
|
12
|
+
export { default as isFaxiosError } from "./lib/helpers/isFaxiosError.js";
|
|
13
|
+
export { default as toFormData } from "./lib/helpers/toFormData.js";
|
|
14
|
+
export { default as FaxiosHeaders } from "./lib/core/FaxiosHeaders.js";
|
|
15
|
+
export { default as HttpStatusCode } from "./lib/helpers/HttpStatusCode.js";
|
|
16
|
+
export { default as mergeConfig } from "./lib/core/mergeConfig.js";
|
|
17
|
+
export { VERSION } from "./lib/env/data.js";
|
|
18
|
+
// Instance-synthesized members (no 1:1 source module). Types are self-contained
|
|
19
|
+
// (all/formToJSON) or annotated with statically imported types (create), so no
|
|
20
|
+
// inline import() is emitted. Runtime values are the same references as on the instance.
|
|
21
|
+
export const all = faxios.all;
|
|
22
|
+
export const formToJSON = faxios.formToJSON;
|
|
23
|
+
export const create = faxios.create;
|
|
24
|
+
export { faxios as default };
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,oDAAoD;AACpD,OAAO,MAAM,wBAAwB;AAIrC,oEAAoE;AACpE,wEAAwE;AACxE,0EAA0E;AAC1E,gFAAgF;AAChF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,6BAA6B;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,uBAAuB,EAAE,kCAAkC;AAC5F,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,MAAM,EAAE,sCAAsC;AAC5F,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,iCAAiC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,uCAAuC;AAC1E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,oCAAoC;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,oCAAoC;AACvE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,wCAAwC;AAC5E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,kCAAkC;AACnE,OAAO,EAAE,OAAO,EAAE,0BAA0B;AAqB5C,gFAAgF;AAChF,+EAA+E;AAC/E,yFAAyF;AACzF,MAAM,CAAC,MAAM,GAAG,GAA0B,MAAM,CAAC,GAAG,CAAC;AACrD,MAAM,CAAC,MAAM,UAAU,GAAiC,MAAM,CAAC,UAAU,CAAC;AAC1E,MAAM,CAAC,MAAM,MAAM,GAA6D,MAAM,CAAC,MAAM,CAAC;AAE9F,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import FaxiosError from "../core/FaxiosError.js";
|
|
2
|
+
import type FaxiosHeaders from "../core/FaxiosHeaders.js";
|
|
3
|
+
import type { InternalFaxiosRequestConfig, FaxiosRequestHeaders } from "../types.js";
|
|
4
|
+
export type ComposedSignal = AbortSignal & {
|
|
5
|
+
unsubscribe?: () => void;
|
|
6
|
+
};
|
|
7
|
+
export type PendingBodyErrorRef = {
|
|
8
|
+
value: (FaxiosError & {
|
|
9
|
+
request?: unknown;
|
|
10
|
+
}) | null;
|
|
11
|
+
};
|
|
12
|
+
export declare const checkDeclaredContentLength: (responseHeaders: FaxiosHeaders, hasMaxContentLength: boolean, maxContentLength: number, config: InternalFaxiosRequestConfig, request: unknown) => void;
|
|
13
|
+
export declare const checkMaterializedSize: (responseData: unknown, hasMaxContentLength: boolean, maxContentLength: number, isStreamResponse: boolean, supportsResponseStream: boolean, config: InternalFaxiosRequestConfig, request: unknown) => void;
|
|
14
|
+
export declare const handleFetchCaughtError: (err: unknown, composedSignal: ComposedSignal | undefined, pendingBodyErrorRef: PendingBodyErrorRef, config: InternalFaxiosRequestConfig, request: unknown) => never;
|
|
15
|
+
export declare const cleanFormDataContentType: (data: unknown, headers: FaxiosRequestHeaders) => void;
|
|
16
|
+
export declare const encodeBodyIfNeeded: (data: unknown, headers: Record<string, unknown>, encode: (str: string) => Promise<Uint8Array> | Uint8Array) => Promise<unknown> | unknown;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import FaxiosError from "../core/FaxiosError.js";
|
|
3
|
+
import utils from "../utils.js";
|
|
4
|
+
const _textEncoder = typeof globalThis.TextEncoder === "function" ? new globalThis.TextEncoder() : undefined;
|
|
5
|
+
// ponytail: exported for unit testing only — not part of public API
|
|
6
|
+
export const checkDeclaredContentLength = (responseHeaders, hasMaxContentLength, maxContentLength, config, request) => {
|
|
7
|
+
if (!hasMaxContentLength)
|
|
8
|
+
return;
|
|
9
|
+
const declaredLength = utils.toFiniteNumber(responseHeaders.getContentLength());
|
|
10
|
+
if (declaredLength != null && declaredLength > maxContentLength) {
|
|
11
|
+
throw new FaxiosError("maxContentLength size of " + maxContentLength + " exceeded", FaxiosError.ERR_BAD_RESPONSE, config, request);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
// ponytail: exported for unit testing only — not part of public API
|
|
15
|
+
export const checkMaterializedSize = (responseData, hasMaxContentLength, maxContentLength, isStreamResponse, supportsResponseStream, config, request) => {
|
|
16
|
+
if (!hasMaxContentLength || supportsResponseStream || isStreamResponse)
|
|
17
|
+
return;
|
|
18
|
+
if (responseData == null)
|
|
19
|
+
return;
|
|
20
|
+
let materializedSize;
|
|
21
|
+
const rd = responseData;
|
|
22
|
+
if (typeof rd["byteLength"] === "number") {
|
|
23
|
+
materializedSize = rd["byteLength"];
|
|
24
|
+
}
|
|
25
|
+
else if (typeof rd["size"] === "number") {
|
|
26
|
+
materializedSize = rd["size"];
|
|
27
|
+
}
|
|
28
|
+
else if (typeof responseData === "string") {
|
|
29
|
+
materializedSize = _textEncoder
|
|
30
|
+
? _textEncoder.encode(responseData).byteLength
|
|
31
|
+
: responseData.length;
|
|
32
|
+
}
|
|
33
|
+
if (typeof materializedSize === "number" && materializedSize > maxContentLength) {
|
|
34
|
+
throw new FaxiosError("maxContentLength size of " + maxContentLength + " exceeded", FaxiosError.ERR_BAD_RESPONSE, config, request);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
// ponytail: exported for unit testing only — not part of public API
|
|
38
|
+
export const handleFetchCaughtError = (err, composedSignal, pendingBodyErrorRef, config, request) => {
|
|
39
|
+
// Safari can surface fetch aborts as a DOMException-like object whose
|
|
40
|
+
// branded getters throw. Prefer our composed signal reason before reading
|
|
41
|
+
// the caught error, preserving timeout vs cancellation semantics.
|
|
42
|
+
if (composedSignal &&
|
|
43
|
+
composedSignal.aborted &&
|
|
44
|
+
composedSignal.reason instanceof FaxiosError) {
|
|
45
|
+
const canceledError = composedSignal.reason;
|
|
46
|
+
canceledError.config = config;
|
|
47
|
+
request && (canceledError.request = request);
|
|
48
|
+
err !== canceledError && (canceledError.cause = err);
|
|
49
|
+
throw canceledError;
|
|
50
|
+
}
|
|
51
|
+
// Surface a maxBodyLength violation we raised while the request body was
|
|
52
|
+
// being streamed. Matching by identity keeps the error deterministic across
|
|
53
|
+
// runtimes and avoids prototype-pollution reads.
|
|
54
|
+
if (pendingBodyErrorRef.value) {
|
|
55
|
+
const _pbe = pendingBodyErrorRef.value;
|
|
56
|
+
request && !_pbe.request && (_pbe.request = request);
|
|
57
|
+
throw _pbe;
|
|
58
|
+
}
|
|
59
|
+
// Re-throw FaxiosErrors we raised synchronously without re-wrapping them.
|
|
60
|
+
if (err instanceof FaxiosError) {
|
|
61
|
+
request && !err.request && (err.request = request);
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
64
|
+
const _err = err;
|
|
65
|
+
if (_err.name === "TypeError" &&
|
|
66
|
+
/Load failed|fetch/i.test(_err.message)) {
|
|
67
|
+
throw Object.assign(new FaxiosError("Network Error", FaxiosError.ERR_NETWORK, config, request, _err["response"]), {
|
|
68
|
+
cause: _err["cause"] || _err,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
throw FaxiosError.from(_err, _err["code"], config, request, _err["response"]);
|
|
72
|
+
};
|
|
73
|
+
// ponytail: exported for unit testing only — not part of public API
|
|
74
|
+
export const cleanFormDataContentType = (data, headers) => {
|
|
75
|
+
if (utils.isFormData(data)) {
|
|
76
|
+
const contentType = headers.getContentType();
|
|
77
|
+
if (contentType &&
|
|
78
|
+
/^multipart\/form-data/i.test(contentType) &&
|
|
79
|
+
!/boundary=/i.test(contentType)) {
|
|
80
|
+
headers.delete("content-type");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
// ponytail: exported for unit testing only — not part of public API
|
|
85
|
+
export const encodeBodyIfNeeded = (data, headers, encode) => {
|
|
86
|
+
if (!utils.isString(data) || utils.findKey(headers, "content-type"))
|
|
87
|
+
return data;
|
|
88
|
+
// ponytail: skip await when TextEncoder is sync (avoids microtask hop on every string body)
|
|
89
|
+
return encode(data);
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=fetch-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-helpers.js","sourceRoot":"","sources":["../../../src/lib/adapters/fetch-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import FaxiosError from "../core/FaxiosError.js";
|
|
2
|
+
import FaxiosHeaders from "../core/FaxiosHeaders.js";
|
|
3
|
+
import prepareRequest from "../core/prepareRequest.js";
|
|
4
|
+
import { settle } from "../core/settle.js";
|
|
5
|
+
import { VERSION } from "../env/data.js";
|
|
6
|
+
import composeSignals from "../helpers/composeSignals.js";
|
|
7
|
+
import estimateDataURLDecodedBytes from "../helpers/estimateDataURLDecodedBytes.js";
|
|
8
|
+
import { progressEventReducer, progressEventDecorator, asyncDecorator } from "../helpers/progressEventReducer.js";
|
|
9
|
+
import { toByteStringHeaderObject } from "../helpers/sanitizeHeaderValue.js";
|
|
10
|
+
import { trackStream } from "../helpers/trackStream.js";
|
|
11
|
+
import platform from "../platform.js";
|
|
12
|
+
import utils from "../utils.js";
|
|
13
|
+
import { checkDeclaredContentLength, checkMaterializedSize, handleFetchCaughtError, cleanFormDataContentType, encodeBodyIfNeeded } from "./fetch-helpers.js";
|
|
14
|
+
// btoa is a global in Node 16+ and browsers; accessed via globalThis for no-DOM lib compat
|
|
15
|
+
const _btoa = globalThis["btoa"];
|
|
16
|
+
const DEFAULT_CHUNK_SIZE = 64 * 1024;
|
|
17
|
+
const { isFunction } = utils;
|
|
18
|
+
/**
|
|
19
|
+
* Encode a UTF-8 string to a Latin-1 byte string for use with btoa().
|
|
20
|
+
* This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} str The string to encode
|
|
23
|
+
*
|
|
24
|
+
* @returns {string} UTF-8 bytes as a Latin-1 string
|
|
25
|
+
*/
|
|
26
|
+
const encodeUTF8 = (str) => encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
|
|
27
|
+
// Node's WHATWG URL parser returns `username` and `password` percent-encoded.
|
|
28
|
+
// Decode before composing the `auth` option so credentials such as
|
|
29
|
+
// `my%40email.com:pass` are sent as `my@email.com:pass`. Falls back to the
|
|
30
|
+
// original value for malformed input so a bad encoding never throws.
|
|
31
|
+
const decodeURIComponentSafe = (value) => {
|
|
32
|
+
if (!utils.isString(value)) {
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
return decodeURIComponent(value);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const test = (fn, ...args) => {
|
|
43
|
+
try {
|
|
44
|
+
return !!fn(...args);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const maybeWithAuthCredentials = (url) => {
|
|
51
|
+
const protocolIndex = url.indexOf("://");
|
|
52
|
+
const urlToCheck = protocolIndex !== -1 ? url.slice(protocolIndex + 3) : url;
|
|
53
|
+
// Only `@` indicates credentials in the authority; `:` alone is a port separator.
|
|
54
|
+
return urlToCheck.includes("@");
|
|
55
|
+
};
|
|
56
|
+
// eslint-disable-next-line sonarjs/function-return-type
|
|
57
|
+
const factory = (env) => {
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
59
|
+
const globalObject = utils.global ?? globalThis;
|
|
60
|
+
const ReadableStream = globalObject["ReadableStream"];
|
|
61
|
+
const TextEncoder = globalObject["TextEncoder"];
|
|
62
|
+
env = utils.merge.call({
|
|
63
|
+
skipUndefined: true,
|
|
64
|
+
}, {
|
|
65
|
+
Request: globalObject["Request"],
|
|
66
|
+
Response: globalObject["Response"],
|
|
67
|
+
}, env);
|
|
68
|
+
const { fetch: envFetch, Request, Response, } = env;
|
|
69
|
+
const _globalFetch = globalThis["fetch"];
|
|
70
|
+
const isFetchSupported = envFetch
|
|
71
|
+
? isFunction(envFetch)
|
|
72
|
+
: isFunction(_globalFetch);
|
|
73
|
+
const isRequestSupported = isFunction(Request);
|
|
74
|
+
const isResponseSupported = isFunction(Response);
|
|
75
|
+
if (!isFetchSupported) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
const isReadableStreamSupported = isFunction(ReadableStream);
|
|
79
|
+
const encodeText = typeof TextEncoder === "function"
|
|
80
|
+
? ((encoder) => (str) => encoder.encode(str))(new TextEncoder())
|
|
81
|
+
: async (str) => new Uint8Array(await new Request(str).arrayBuffer());
|
|
82
|
+
const supportsRequestStream = isRequestSupported &&
|
|
83
|
+
isReadableStreamSupported &&
|
|
84
|
+
test(() => {
|
|
85
|
+
let duplexAccessed = false;
|
|
86
|
+
const request = new Request(platform.origin, {
|
|
87
|
+
body: new ReadableStream(),
|
|
88
|
+
method: "POST",
|
|
89
|
+
get duplex() {
|
|
90
|
+
duplexAccessed = true;
|
|
91
|
+
return "half";
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
const hasContentType = request.headers.has("Content-Type");
|
|
95
|
+
if (request.body != null) {
|
|
96
|
+
request.body.cancel().catch(() => { });
|
|
97
|
+
}
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
99
|
+
return duplexAccessed && !hasContentType;
|
|
100
|
+
});
|
|
101
|
+
const supportsResponseStream = isResponseSupported &&
|
|
102
|
+
isReadableStreamSupported &&
|
|
103
|
+
test(() => utils.isReadableStream(new Response("").body));
|
|
104
|
+
const resolvers = {
|
|
105
|
+
stream: supportsResponseStream && ((res) => res.body),
|
|
106
|
+
};
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
108
|
+
isFetchSupported &&
|
|
109
|
+
(() => {
|
|
110
|
+
["text", "arrayBuffer", "blob", "formData", "stream"].forEach(type => {
|
|
111
|
+
!resolvers[type] &&
|
|
112
|
+
(resolvers[type] = (res, config) => {
|
|
113
|
+
const method = res[type];
|
|
114
|
+
if (method) {
|
|
115
|
+
return method.call(res);
|
|
116
|
+
}
|
|
117
|
+
throw new FaxiosError(`Response type '${type}' is not supported`, FaxiosError.ERR_NOT_SUPPORT, config);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
})();
|
|
121
|
+
const getBodyLength = async (body) => {
|
|
122
|
+
if (body == null) {
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
if (utils.isBlob(body)) {
|
|
126
|
+
return body.size;
|
|
127
|
+
}
|
|
128
|
+
if (utils.isSpecCompliantForm(body)) {
|
|
129
|
+
const _request = new Request(platform.origin, {
|
|
130
|
+
method: "POST",
|
|
131
|
+
body,
|
|
132
|
+
});
|
|
133
|
+
return (await _request.arrayBuffer()).byteLength;
|
|
134
|
+
}
|
|
135
|
+
if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {
|
|
136
|
+
return body.byteLength;
|
|
137
|
+
}
|
|
138
|
+
if (utils.isURLSearchParams(body)) {
|
|
139
|
+
body = body + "";
|
|
140
|
+
}
|
|
141
|
+
if (utils.isString(body)) {
|
|
142
|
+
return (await encodeText(body)).byteLength;
|
|
143
|
+
}
|
|
144
|
+
return undefined;
|
|
145
|
+
};
|
|
146
|
+
const resolveBodyLength = async (headers, body) => {
|
|
147
|
+
const length = utils.toFiniteNumber(headers.getContentLength());
|
|
148
|
+
return length == null ? getBodyLength(body) : length;
|
|
149
|
+
};
|
|
150
|
+
const normalizeCredentials = (wc) => {
|
|
151
|
+
if (utils.isString(wc))
|
|
152
|
+
return wc;
|
|
153
|
+
return wc ? "include" : "omit";
|
|
154
|
+
};
|
|
155
|
+
// HTTP basic authentication: extract auth from config or URL, set Authorization header,
|
|
156
|
+
// strip credentials from URL. Returns the (possibly updated) URL.
|
|
157
|
+
const applyAuthToRequest = (url, headers, own) => {
|
|
158
|
+
let auth;
|
|
159
|
+
const configAuth = own("auth");
|
|
160
|
+
if (configAuth) {
|
|
161
|
+
auth = {
|
|
162
|
+
username: utils.getSafeProp(configAuth, "username") || "",
|
|
163
|
+
password: utils.getSafeProp(configAuth, "password") || "",
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
if (maybeWithAuthCredentials(url)) {
|
|
167
|
+
const parsedURL = new URL(url, platform.origin);
|
|
168
|
+
if (!auth && (parsedURL.username || parsedURL.password)) {
|
|
169
|
+
auth = {
|
|
170
|
+
username: decodeURIComponentSafe(parsedURL.username),
|
|
171
|
+
password: decodeURIComponentSafe(parsedURL.password),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
if (parsedURL.username || parsedURL.password) {
|
|
175
|
+
parsedURL.username = "";
|
|
176
|
+
parsedURL.password = "";
|
|
177
|
+
url = parsedURL.href;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (auth) {
|
|
181
|
+
headers.delete("authorization");
|
|
182
|
+
headers.set("Authorization", "Basic " +
|
|
183
|
+
_btoa(encodeUTF8(String(auth.username || "") + ":" + String(auth.password || ""))));
|
|
184
|
+
}
|
|
185
|
+
return url;
|
|
186
|
+
};
|
|
187
|
+
// Pre-flight size checks: data: URL content-length and known-size body maxBodyLength.
|
|
188
|
+
// Returns requestContentLength if computed, else undefined.
|
|
189
|
+
const checkPreflightLimits = async (url, data, method, hasMaxContentLength, maxContentLength, hasMaxBodyLength, maxBodyLength, config, request) => {
|
|
190
|
+
// Enforce maxContentLength for data: URLs up-front so we never materialize
|
|
191
|
+
// an oversized payload. The HTTP adapter applies the same check.
|
|
192
|
+
if (hasMaxContentLength &&
|
|
193
|
+
typeof url === "string" &&
|
|
194
|
+
url.startsWith("data:")) {
|
|
195
|
+
const estimated = estimateDataURLDecodedBytes(url);
|
|
196
|
+
if (estimated > maxContentLength) {
|
|
197
|
+
throw new FaxiosError("maxContentLength size of " + maxContentLength + " exceeded", FaxiosError.ERR_BAD_RESPONSE, config, request);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Enforce maxBodyLength against known-size bodies before dispatch using
|
|
201
|
+
// the body's actual size — never a caller-declared Content-Length.
|
|
202
|
+
if (hasMaxBodyLength && method !== "get" && method !== "head") {
|
|
203
|
+
const outboundLength = await getBodyLength(data);
|
|
204
|
+
if (typeof outboundLength === "number" && isFinite(outboundLength)) {
|
|
205
|
+
if (outboundLength > maxBodyLength) {
|
|
206
|
+
throw new FaxiosError("Request body larger than maxBodyLength limit", FaxiosError.ERR_BAD_REQUEST, config, request);
|
|
207
|
+
}
|
|
208
|
+
return outboundLength;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return undefined;
|
|
212
|
+
};
|
|
213
|
+
// Wrap a Request body with upload progress tracking and optional maxBodyLength enforcement.
|
|
214
|
+
const applyUploadProgress = (_request, data, headers, requestContentLength, onUploadProgress, _trackStream) => {
|
|
215
|
+
let contentTypeHeader;
|
|
216
|
+
if (utils.isFormData(data) &&
|
|
217
|
+
(contentTypeHeader = _request.headers.get("content-type"))) {
|
|
218
|
+
headers.setContentType(contentTypeHeader);
|
|
219
|
+
}
|
|
220
|
+
if (_request.body) {
|
|
221
|
+
const [onProgress, flush] = onUploadProgress
|
|
222
|
+
? progressEventDecorator(requestContentLength, progressEventReducer(asyncDecorator(onUploadProgress), false))
|
|
223
|
+
: [];
|
|
224
|
+
return _trackStream(_request.body, onProgress, flush);
|
|
225
|
+
}
|
|
226
|
+
return data;
|
|
227
|
+
};
|
|
228
|
+
// Set up request body streaming with upload progress and/or maxBodyLength enforcement.
|
|
229
|
+
const buildUploadStream = async (data, url, method, headers, onUploadProgress, mustEnforceStreamBody, requestContentLength, hasMaxBodyLength, maxBodyLength, config, request, pendingBodyErrorRef) => {
|
|
230
|
+
const _makeBodyLengthError = () => new FaxiosError("Request body larger than maxBodyLength limit", FaxiosError.ERR_BAD_REQUEST, config, request);
|
|
231
|
+
const _trackStream = (stream, onProgress, flush) => trackStream(stream, DEFAULT_CHUNK_SIZE, (loadedBytes) => {
|
|
232
|
+
if (hasMaxBodyLength && loadedBytes > maxBodyLength) {
|
|
233
|
+
pendingBodyErrorRef.value = _makeBodyLengthError();
|
|
234
|
+
throw pendingBodyErrorRef.value;
|
|
235
|
+
}
|
|
236
|
+
onProgress && onProgress(loadedBytes);
|
|
237
|
+
}, flush);
|
|
238
|
+
if (supportsRequestStream &&
|
|
239
|
+
method !== "get" &&
|
|
240
|
+
method !== "head" &&
|
|
241
|
+
(onUploadProgress || mustEnforceStreamBody)) {
|
|
242
|
+
requestContentLength =
|
|
243
|
+
requestContentLength == null
|
|
244
|
+
? await resolveBodyLength(headers, data)
|
|
245
|
+
: requestContentLength;
|
|
246
|
+
// A declared length of 0 is only trusted to skip the wrap when we are
|
|
247
|
+
// not enforcing a stream limit (which must not rely on that header).
|
|
248
|
+
if (requestContentLength !== 0 || mustEnforceStreamBody) {
|
|
249
|
+
const _request = new Request(url, {
|
|
250
|
+
method: "POST",
|
|
251
|
+
body: data,
|
|
252
|
+
duplex: "half",
|
|
253
|
+
});
|
|
254
|
+
data = applyUploadProgress(_request, data, headers, requestContentLength, onUploadProgress, _trackStream);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else if (mustEnforceStreamBody &&
|
|
258
|
+
!isRequestSupported &&
|
|
259
|
+
isReadableStreamSupported &&
|
|
260
|
+
method !== "get" &&
|
|
261
|
+
method !== "head") {
|
|
262
|
+
data = _trackStream(data);
|
|
263
|
+
}
|
|
264
|
+
else if (mustEnforceStreamBody &&
|
|
265
|
+
isRequestSupported &&
|
|
266
|
+
!supportsRequestStream &&
|
|
267
|
+
method !== "get" &&
|
|
268
|
+
method !== "head") {
|
|
269
|
+
throw new FaxiosError("Stream request bodies are not supported by the current fetch implementation", FaxiosError.ERR_NOT_SUPPORT, config, request);
|
|
270
|
+
}
|
|
271
|
+
return { data, requestContentLength };
|
|
272
|
+
};
|
|
273
|
+
// Wrap the response body stream with download progress tracking and maxContentLength enforcement.
|
|
274
|
+
const buildDownloadStream = (response, responseHeaders, onDownloadProgress, hasMaxContentLength, maxContentLength, isStreamResponse, unsubscribe, config, request) => {
|
|
275
|
+
const needsWrapping = onDownloadProgress || hasMaxContentLength || (isStreamResponse && unsubscribe);
|
|
276
|
+
if (!supportsResponseStream || !response.body || !needsWrapping) {
|
|
277
|
+
return response;
|
|
278
|
+
}
|
|
279
|
+
const options = {};
|
|
280
|
+
["status", "statusText", "headers"].forEach(prop => {
|
|
281
|
+
options[prop] = response[prop];
|
|
282
|
+
});
|
|
283
|
+
const responseContentLength = utils.toFiniteNumber(responseHeaders.getContentLength());
|
|
284
|
+
const [onProgress, flush] = onDownloadProgress
|
|
285
|
+
? progressEventDecorator(responseContentLength, progressEventReducer(asyncDecorator(onDownloadProgress), true))
|
|
286
|
+
: [];
|
|
287
|
+
let bytesRead = 0;
|
|
288
|
+
const onChunkProgress = (loadedBytes) => {
|
|
289
|
+
if (hasMaxContentLength) {
|
|
290
|
+
bytesRead = loadedBytes;
|
|
291
|
+
if (bytesRead > maxContentLength) {
|
|
292
|
+
throw new FaxiosError("maxContentLength size of " + maxContentLength + " exceeded", FaxiosError.ERR_BAD_RESPONSE, config, request);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
onProgress && onProgress(loadedBytes);
|
|
296
|
+
};
|
|
297
|
+
return new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, onChunkProgress, () => {
|
|
298
|
+
flush && flush();
|
|
299
|
+
unsubscribe && unsubscribe();
|
|
300
|
+
}), options);
|
|
301
|
+
};
|
|
302
|
+
const unsubscribeOnComplete = (isStreamResponse, unsubscribe) => {
|
|
303
|
+
if (!isStreamResponse)
|
|
304
|
+
unsubscribe?.();
|
|
305
|
+
};
|
|
306
|
+
return async (config) => {
|
|
307
|
+
const _resolved = prepareRequest(config);
|
|
308
|
+
let { url, method, data, signal, timeout, timeoutErrorMessage, onDownloadProgress, onUploadProgress, responseType, fetchOptions, maxContentLength, maxBodyLength, } = _resolved;
|
|
309
|
+
let headers = _resolved.headers;
|
|
310
|
+
let withCredentials = _resolved.withCredentials ?? "same-origin";
|
|
311
|
+
const hasMaxContentLength = utils.isNumber(maxContentLength) && maxContentLength > -1;
|
|
312
|
+
const hasMaxBodyLength = utils.isNumber(maxBodyLength) && maxBodyLength > -1;
|
|
313
|
+
const own = (key) => utils.hasOwnProp(config, key)
|
|
314
|
+
? config[key]
|
|
315
|
+
: undefined;
|
|
316
|
+
const _fetch = (envFetch || globalThis["fetch"]);
|
|
317
|
+
if (timeout != null && !Number.isFinite(Number(timeout))) {
|
|
318
|
+
throw new FaxiosError("error trying to parse `config.timeout` to int", FaxiosError.ERR_BAD_OPTION_VALUE, config);
|
|
319
|
+
}
|
|
320
|
+
responseType = (responseType ? (responseType + "").toLowerCase() : "text");
|
|
321
|
+
const composedSignal = composeSignals([signal], timeout, timeoutErrorMessage);
|
|
322
|
+
const unsubscribe = composedSignal?.unsubscribe?.bind(composedSignal);
|
|
323
|
+
let request = null;
|
|
324
|
+
const pendingBodyErrorRef = { value: null };
|
|
325
|
+
try {
|
|
326
|
+
url = applyAuthToRequest(url, headers, own);
|
|
327
|
+
const preflightContentLength = await checkPreflightLimits(url, data, method, hasMaxContentLength, maxContentLength, hasMaxBodyLength, maxBodyLength, config, request);
|
|
328
|
+
// A streamed body under maxBodyLength must be counted as fetch consumes
|
|
329
|
+
// it; its size is never trusted from a caller-declared Content-Length.
|
|
330
|
+
const isStreamLike = utils.isReadableStream(data) || utils.isStream(data);
|
|
331
|
+
const mustEnforceStreamBody = hasMaxBodyLength && isStreamLike;
|
|
332
|
+
({ data } = await buildUploadStream(data, url, method, headers, onUploadProgress, mustEnforceStreamBody, preflightContentLength, hasMaxBodyLength, maxBodyLength, config, request, pendingBodyErrorRef));
|
|
333
|
+
withCredentials = normalizeCredentials(withCredentials);
|
|
334
|
+
// Cloudflare Workers throws when credentials are defined
|
|
335
|
+
// see https://github.com/cloudflare/workerd/issues/902
|
|
336
|
+
const isCredentialsSupported = isRequestSupported &&
|
|
337
|
+
Request != null &&
|
|
338
|
+
"credentials" in Request.prototype;
|
|
339
|
+
cleanFormDataContentType(data, headers);
|
|
340
|
+
// Set User-Agent header if not already set (fetch defaults to 'node' in Node.js)
|
|
341
|
+
headers.set("User-Agent", "faxios/" + VERSION, false);
|
|
342
|
+
const serializedHeaders = toByteStringHeaderObject(headers.normalize(false));
|
|
343
|
+
// Browsers auto-add "text/plain;charset=UTF-8" for string bodies when no Content-Type is set.
|
|
344
|
+
// Encoding as Uint8Array prevents the browser from injecting a content-type.
|
|
345
|
+
// Case-insensitive check: toByteStringHeaderObject may normalize to lowercase.
|
|
346
|
+
data = await encodeBodyIfNeeded(data, serializedHeaders, encodeText);
|
|
347
|
+
const resolvedOptions = {
|
|
348
|
+
...fetchOptions,
|
|
349
|
+
signal: composedSignal,
|
|
350
|
+
method: method.toUpperCase(),
|
|
351
|
+
headers: serializedHeaders,
|
|
352
|
+
body: data,
|
|
353
|
+
duplex: "half",
|
|
354
|
+
credentials: isCredentialsSupported ? withCredentials : undefined,
|
|
355
|
+
};
|
|
356
|
+
request = isRequestSupported
|
|
357
|
+
? new Request(url, resolvedOptions)
|
|
358
|
+
: null;
|
|
359
|
+
// Pass resolvedOptions (all own-properties) as the fetch init even when a
|
|
360
|
+
// Request object is supplied: undici re-reads RequestInit fields (method,
|
|
361
|
+
// headers, body, credentials) off Object.prototype when init is absent,
|
|
362
|
+
// so a polluted Object.prototype.method would override the Request's verb.
|
|
363
|
+
// An explicit own-property init neutralizes every such gadget.
|
|
364
|
+
let response = await (isRequestSupported
|
|
365
|
+
? _fetch(request, resolvedOptions)
|
|
366
|
+
: _fetch(url, resolvedOptions));
|
|
367
|
+
const responseHeaders = FaxiosHeaders.from(response.headers);
|
|
368
|
+
checkDeclaredContentLength(responseHeaders, hasMaxContentLength, maxContentLength, config, request);
|
|
369
|
+
const isStreamResponse = supportsResponseStream &&
|
|
370
|
+
(responseType === "stream" || responseType === "response");
|
|
371
|
+
response = buildDownloadStream(response, responseHeaders, onDownloadProgress, hasMaxContentLength, maxContentLength, isStreamResponse, unsubscribe, config, request);
|
|
372
|
+
responseType = responseType || "text";
|
|
373
|
+
const resolverKey = utils.findKey(resolvers, responseType) || "text";
|
|
374
|
+
const resolver = resolvers[resolverKey];
|
|
375
|
+
const responseData = await (resolver && resolver(response, config));
|
|
376
|
+
checkMaterializedSize(responseData, hasMaxContentLength, maxContentLength, isStreamResponse, supportsResponseStream, config, request);
|
|
377
|
+
unsubscribeOnComplete(isStreamResponse, unsubscribe);
|
|
378
|
+
return await new Promise((resolve, reject) => {
|
|
379
|
+
settle(resolve, reject, {
|
|
380
|
+
data: responseData,
|
|
381
|
+
headers: FaxiosHeaders.from(response.headers),
|
|
382
|
+
status: response.status,
|
|
383
|
+
statusText: response.statusText,
|
|
384
|
+
config,
|
|
385
|
+
request,
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
catch (err) {
|
|
390
|
+
unsubscribe && unsubscribe();
|
|
391
|
+
throw handleFetchCaughtError(err, composedSignal, pendingBodyErrorRef, config, request);
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
};
|
|
395
|
+
const seedCache = new Map();
|
|
396
|
+
export const getFetch = (config) => {
|
|
397
|
+
const env = (config && config.env) || {};
|
|
398
|
+
const { fetch, Request, Response } = env;
|
|
399
|
+
const seeds = [Request, Response, fetch];
|
|
400
|
+
const len = seeds.length;
|
|
401
|
+
let i = len;
|
|
402
|
+
let seed;
|
|
403
|
+
let target;
|
|
404
|
+
let map = seedCache;
|
|
405
|
+
while (i--) {
|
|
406
|
+
seed = seeds[i];
|
|
407
|
+
target = map.get(seed);
|
|
408
|
+
if (target === undefined) {
|
|
409
|
+
target = i ? new Map() : factory(env);
|
|
410
|
+
map.set(seed, target);
|
|
411
|
+
}
|
|
412
|
+
map = target;
|
|
413
|
+
}
|
|
414
|
+
return target;
|
|
415
|
+
};
|
|
416
|
+
getFetch();
|
|
417
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/lib/adapters/fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import FaxiosError from "../core/FaxiosError.js";
|
|
2
|
+
import type { FaxiosRequestConfig } from "../types.js";
|
|
3
|
+
declare class CanceledError extends FaxiosError {
|
|
4
|
+
/**
|
|
5
|
+
* A `CanceledError` is an object that is thrown when an operation is canceled.
|
|
6
|
+
*
|
|
7
|
+
* @param {string=} message The message.
|
|
8
|
+
* @param {Object=} config The config.
|
|
9
|
+
* @param {Object=} request The request.
|
|
10
|
+
*
|
|
11
|
+
* @returns {CanceledError} The created error.
|
|
12
|
+
*/
|
|
13
|
+
constructor(message?: string | null, config?: FaxiosRequestConfig, request?: unknown);
|
|
14
|
+
}
|
|
15
|
+
export default CanceledError;
|