@zayne-labs/callapi 1.7.4 → 1.7.6
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/dist/esm/{chunk-FE6ZVVZS.js → chunk-UVFIGKZS.js} +44 -44
- package/dist/esm/chunk-UVFIGKZS.js.map +1 -0
- package/dist/{cjs/common-DiBiESb2.d.cts → esm/common-BwOrtpui.d.ts} +103 -102
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +82 -54
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/package.json +5 -6
- package/dist/cjs/index.cjs +0 -964
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/index.d.cts +0 -9
- package/dist/cjs/utils/index.cjs +0 -95
- package/dist/cjs/utils/index.cjs.map +0 -1
- package/dist/cjs/utils/index.d.cts +0 -12
- package/dist/esm/chunk-FE6ZVVZS.js.map +0 -1
- package/dist/esm/common-DiBiESb2.d.ts +0 -774
@@ -1,3 +1,36 @@
|
|
1
|
+
// src/utils/type-helpers.ts
|
2
|
+
var defineEnum = (value) => value;
|
3
|
+
|
4
|
+
// src/constants/default-options.ts
|
5
|
+
var retryDefaults = defineEnum({
|
6
|
+
attempts: 0,
|
7
|
+
condition: () => true,
|
8
|
+
delay: 1e3,
|
9
|
+
maxDelay: 1e4,
|
10
|
+
methods: ["GET", "POST"],
|
11
|
+
statusCodes: [],
|
12
|
+
strategy: "linear"
|
13
|
+
});
|
14
|
+
var commonDefaults = defineEnum({
|
15
|
+
bodySerializer: JSON.stringify,
|
16
|
+
defaultErrorMessage: "Failed to fetch data from server!"
|
17
|
+
});
|
18
|
+
var responseDefaults = defineEnum({
|
19
|
+
responseParser: JSON.parse,
|
20
|
+
responseType: "json",
|
21
|
+
resultMode: "all"
|
22
|
+
});
|
23
|
+
var hookDefaults = defineEnum({
|
24
|
+
mergedHooksExecutionMode: "parallel",
|
25
|
+
mergedHooksExecutionOrder: "mainHooksAfterPlugins"
|
26
|
+
});
|
27
|
+
var dedupeDefaults = defineEnum({
|
28
|
+
dedupeStrategy: "cancel"
|
29
|
+
});
|
30
|
+
var requestOptionDefaults = defineEnum({
|
31
|
+
method: "GET"
|
32
|
+
});
|
33
|
+
|
1
34
|
// src/error.ts
|
2
35
|
var resolveErrorResult = (info) => {
|
3
36
|
const { cloneResponse, defaultErrorMessage, error, message: customErrorMessage, resultMode } = info;
|
@@ -11,7 +44,8 @@ var resolveErrorResult = (info) => {
|
|
11
44
|
response: null
|
12
45
|
};
|
13
46
|
if (isHTTPErrorInstance(error)) {
|
14
|
-
const
|
47
|
+
const selectedDefaultErrorMessage = defaultErrorMessage ?? commonDefaults.defaultErrorMessage;
|
48
|
+
const { errorData, message = selectedDefaultErrorMessage, name, response } = error;
|
15
49
|
apiDetails = {
|
16
50
|
data: null,
|
17
51
|
error: {
|
@@ -53,7 +87,8 @@ var HTTPError = class {
|
|
53
87
|
response;
|
54
88
|
constructor(errorDetails, errorOptions) {
|
55
89
|
const { defaultErrorMessage, errorData, response } = errorDetails;
|
56
|
-
|
90
|
+
const selectedDefaultErrorMessage = defaultErrorMessage ?? commonDefaults.defaultErrorMessage;
|
91
|
+
this.message = errorData?.message ?? selectedDefaultErrorMessage;
|
57
92
|
errorOptions?.cause && (this.cause = errorOptions.cause);
|
58
93
|
this.errorData = errorData;
|
59
94
|
this.response = response;
|
@@ -154,13 +189,7 @@ var getAuthHeader = (auth) => {
|
|
154
189
|
}
|
155
190
|
};
|
156
191
|
|
157
|
-
// src/
|
158
|
-
var defineEnum = (value) => value;
|
159
|
-
|
160
|
-
// src/types/common.ts
|
161
|
-
var optionsEnumToOmitFromBase = defineEnum(["dedupeKey"]);
|
162
|
-
|
163
|
-
// src/utils/constants.ts
|
192
|
+
// src/constants/common.ts
|
164
193
|
var fetchSpecificKeys = defineEnum([
|
165
194
|
"body",
|
166
195
|
"integrity",
|
@@ -178,38 +207,9 @@ var fetchSpecificKeys = defineEnum([
|
|
178
207
|
"mode",
|
179
208
|
"referrerPolicy"
|
180
209
|
]);
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
425: "Too Early",
|
185
|
-
429: "Too Many Requests",
|
186
|
-
500: "Internal Server Error",
|
187
|
-
502: "Bad Gateway",
|
188
|
-
503: "Service Unavailable",
|
189
|
-
504: "Gateway Timeout"
|
190
|
-
});
|
191
|
-
var defaultRetryMethods = ["GET", "POST"];
|
192
|
-
var defaultRetryStatusCodes = Object.keys(retryStatusCodesLookup).map(Number);
|
193
|
-
var defaultExtraOptions = {
|
194
|
-
baseURL: "",
|
195
|
-
bodySerializer: JSON.stringify,
|
196
|
-
dedupeStrategy: "cancel",
|
197
|
-
defaultErrorMessage: "Failed to fetch data from server!",
|
198
|
-
mergedHooksExecutionMode: "parallel",
|
199
|
-
mergedHooksExecutionOrder: "mainHooksAfterPlugins",
|
200
|
-
responseType: "json",
|
201
|
-
resultMode: "all",
|
202
|
-
retryAttempts: 0,
|
203
|
-
retryDelay: 1e3,
|
204
|
-
retryMaxDelay: 1e4,
|
205
|
-
retryMethods: defaultRetryMethods,
|
206
|
-
retryStatusCodes: defaultRetryStatusCodes,
|
207
|
-
retryStrategy: "linear"
|
208
|
-
};
|
209
|
-
var defaultRequestOptions = {
|
210
|
-
method: "GET"
|
211
|
-
};
|
212
|
-
var getDefaultOptions = () => defaultExtraOptions;
|
210
|
+
|
211
|
+
// src/types/common.ts
|
212
|
+
var optionsEnumToOmitFromBase = defineEnum(["dedupeKey"]);
|
213
213
|
|
214
214
|
// src/utils/common.ts
|
215
215
|
var omitKeys = (initialObject, keysToOmit) => {
|
@@ -302,6 +302,6 @@ var waitUntil = (delay) => {
|
|
302
302
|
var createCombinedSignal = (...signals) => AbortSignal.any(signals.filter(Boolean));
|
303
303
|
var createTimeoutSignal = (milliseconds) => AbortSignal.timeout(milliseconds);
|
304
304
|
|
305
|
-
export { HTTPError, createCombinedSignal, createTimeoutSignal,
|
306
|
-
//# sourceMappingURL=chunk-
|
307
|
-
//# sourceMappingURL=chunk-
|
305
|
+
export { HTTPError, commonDefaults, createCombinedSignal, createTimeoutSignal, dedupeDefaults, getFetchImpl, hookDefaults, isArray, isFunction, isHTTPError, isHTTPErrorInstance, isObject, isPlainObject, isReadableStream, isSerializable, isString, mergeAndResolveHeaders, omitKeys, requestOptionDefaults, resolveErrorResult, responseDefaults, retryDefaults, splitBaseConfig, splitConfig, toQueryString, waitUntil };
|
306
|
+
//# sourceMappingURL=chunk-UVFIGKZS.js.map
|
307
|
+
//# sourceMappingURL=chunk-UVFIGKZS.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/utils/type-helpers.ts","../../src/constants/default-options.ts","../../src/error.ts","../../src/utils/guards.ts","../../src/auth.ts","../../src/constants/common.ts","../../src/types/common.ts","../../src/utils/common.ts"],"names":[],"mappings":";AAuDO,IAAM,UAAA,GAAa,CAAe,KAAkB,KAAA,KAAA;;;ACpDpD,IAAM,gBAAgB,UAAW,CAAA;AAAA,EACvC,QAAU,EAAA,CAAA;AAAA,EACV,WAAW,MAAM,IAAA;AAAA,EACjB,KAAO,EAAA,GAAA;AAAA,EACP,QAAU,EAAA,GAAA;AAAA,EACV,OAAA,EAAS,CAAC,KAAA,EAAO,MAAM,CAAA;AAAA,EACvB,aAAa,EAAC;AAAA,EACd,QAAU,EAAA;AACX,CAAC;AAaM,IAAM,iBAAiB,UAAW,CAAA;AAAA,EACxC,gBAAgB,IAAK,CAAA,SAAA;AAAA,EACrB,mBAAqB,EAAA;AACtB,CAAC;AAEM,IAAM,mBAAmB,UAAW,CAAA;AAAA,EAC1C,gBAAgB,IAAK,CAAA,KAAA;AAAA,EACrB,YAAc,EAAA,MAAA;AAAA,EACd,UAAY,EAAA;AACb,CAAC;AAEM,IAAM,eAAe,UAAW,CAAA;AAAA,EACtC,wBAA0B,EAAA,UAAA;AAAA,EAC1B,yBAA2B,EAAA;AAC5B,CAAC;AAEM,IAAM,iBAAiB,UAAW,CAAA;AAAA,EACxC,cAAgB,EAAA;AACjB,CAAC;AAEM,IAAM,wBAAwB,UAAW,CAAA;AAAA,EAC/C,MAAQ,EAAA;AACT,CAAC;;;AC/BY,IAAA,kBAAA,GAAqB,CAAyB,IAAoB,KAAA;AAC9E,EAAA,MAAM,EAAE,aAAe,EAAA,mBAAA,EAAqB,OAAO,OAAS,EAAA,kBAAA,EAAoB,YAAe,GAAA,IAAA;AAE/F,EAAA,IAAI,UAAiD,GAAA;AAAA,IACpD,IAAM,EAAA,IAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACN,SAAW,EAAA,KAAA;AAAA,MACX,OAAA,EAAS,sBAAuB,KAAgB,CAAA,OAAA;AAAA,MAChD,MAAO,KAAgB,CAAA;AAAA,KACxB;AAAA,IACA,QAAU,EAAA;AAAA,GACX;AAEA,EAAI,IAAA,mBAAA,CAA2B,KAAK,CAAG,EAAA;AACtC,IAAM,MAAA,2BAAA,GAA8B,uBAAuB,cAAe,CAAA,mBAAA;AAE1E,IAAA,MAAM,EAAE,SAAW,EAAA,OAAA,GAAU,2BAA6B,EAAA,IAAA,EAAM,UAAa,GAAA,KAAA;AAE7E,IAAa,UAAA,GAAA;AAAA,MACZ,IAAM,EAAA,IAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACN,SAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACD;AAAA,MACA,QAAU,EAAA,aAAA,GAAgB,QAAS,CAAA,KAAA,EAAU,GAAA;AAAA,KAC9C;AAAA;AAGD,EAAA,MAAM,aAAgB,GAAA;AAAA,IACrB,GAAK,EAAA,UAAA;AAAA,IACL,gBAAkB,EAAA,UAAA;AAAA,IAClB,kBAAoB,EAAA,QAAA,CAAS,UAAY,EAAA,CAAC,UAAU,CAAC,CAAA;AAAA,IACrD,WAAW,UAAW,CAAA,KAAA;AAAA,IACtB,cAAc,UAAW,CAAA,QAAA;AAAA,IACzB,2BAA2B,UAAW,CAAA,QAAA;AAAA,IACtC,aAAa,UAAW,CAAA,IAAA;AAAA,IACxB,0BAA0B,UAAW,CAAA;AAAA,GACtC;AAEA,EAAM,MAAA,cAAA,GAAiB,CAAC,eAAiD,KAAA;AACxE,IAAM,MAAA,kBAAA,GAAqB,aAAc,CAAA,UAAA,IAAc,KAAK,CAAA;AAE5D,IAAA,OAAO,eACJ,GAAA;AAAA,MACA,GAAG,kBAAA;AAAA,MACH,KAAO,EAAA;AAAA,QACN,GAAI,kBAA0D,CAAA,KAAA;AAAA,QAC9D,GAAG;AAAA;AACJ,KAEA,GAAA,kBAAA;AAAA,GACJ;AAEA,EAAO,OAAA,EAAE,YAAY,cAAe,EAAA;AACrC;AAYO,IAAM,YAAN,MAA0D;AAAA,EAChE,KAAA;AAAA,EAEA,SAAA;AAAA,EAEA,WAAc,GAAA,IAAA;AAAA,EAEd,OAAA;AAAA,EAEA,IAAO,GAAA,WAAA;AAAA,EAEP,QAAA;AAAA,EAEA,WAAA,CAAY,cAA4C,YAA6B,EAAA;AACpF,IAAA,MAAM,EAAE,mBAAA,EAAqB,SAAW,EAAA,QAAA,EAAa,GAAA,YAAA;AAErD,IAAM,MAAA,2BAAA,GAA8B,uBAAuB,cAAe,CAAA,mBAAA;AAE1E,IAAK,IAAA,CAAA,OAAA,GACH,WAAgD,OAAW,IAAA,2BAAA;AAC7D,IAAc,YAAA,EAAA,KAAA,KAAU,IAAK,CAAA,KAAA,GAAQ,YAAa,CAAA,KAAA,CAAA;AAClD,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA;AACjB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAM,KAAA,CAAA,iBAAA,CAAkB,IAAM,EAAA,IAAA,CAAK,WAAW,CAAA;AAAA;AAEhD;;;ACvGa,IAAA,WAAA,GAAc,CAC1B,KAC4C,KAAA;AAC5C,EAAA,OAAO,aAAc,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,IAAS,KAAA,WAAA;AAC/C;AAEa,IAAA,mBAAA,GAAsB,CAClC,KACwC,KAAA;AACxC,EAAA;AAAA;AAAA,IAEC,KAAA,YAAiB,aAAa,aAAc,CAAA,KAAK,KAAK,KAAM,CAAA,IAAA,KAAS,WAAe,IAAA,KAAA,CAAM,WAAgB,KAAA;AAAA;AAE5G;AAIO,IAAM,OAAU,GAAA,CAAa,KAA0C,KAAA,KAAA,CAAM,QAAQ,KAAK;AAE1F,IAAM,WAAW,CAAC,KAAA,KAAmB,OAAO,KAAA,KAAU,YAAY,KAAU,KAAA;AAEnF,IAAM,kBAAA,GAAqB,CAAC,KAAmB,KAAA;AAC9C,EAAA,OAAO,MAAO,CAAA,SAAA,CAAU,QAAS,CAAA,IAAA,CAAK,KAAK,CAAM,KAAA,iBAAA;AAClD,CAAA;AAMa,IAAA,aAAA,GAAgB,CAC5B,KAC2B,KAAA;AAC3B,EAAI,IAAA,CAAC,kBAAmB,CAAA,KAAK,CAAG,EAAA;AAC/B,IAAO,OAAA,KAAA;AAAA;AAIR,EAAA,MAAM,cAAe,KAA8B,EAAA,WAAA;AACnD,EAAA,IAAI,gBAAgB,MAAW,EAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AAIR,EAAA,MAAM,YAAY,WAAY,CAAA,SAAA;AAC9B,EAAI,IAAA,CAAC,kBAAmB,CAAA,SAAS,CAAG,EAAA;AACnC,IAAO,OAAA,KAAA;AAAA;AAIR,EAAA,IAAI,CAAC,MAAA,CAAO,MAAO,CAAA,SAAA,EAAW,eAAe,CAAG,EAAA;AAC/C,IAAO,OAAA,KAAA;AAAA;AAIR,EAAA,IAAI,MAAO,CAAA,cAAA,CAAe,KAAK,CAAA,KAAM,OAAO,SAAW,EAAA;AACtD,IAAO,OAAA,KAAA;AAAA;AAIR,EAAO,OAAA,IAAA;AACR;AAEO,IAAM,YAAA,GAAe,CAAC,KAAoC,KAAA;AAChE,EAAI,IAAA,CAAC,QAAS,CAAA,KAAK,CAAG,EAAA;AACrB,IAAO,OAAA,KAAA;AAAA;AAGR,EAAI,IAAA;AACH,IAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAChB,IAAO,OAAA,IAAA;AAAA,GACA,CAAA,MAAA;AACP,IAAO,OAAA,KAAA;AAAA;AAET,CAAA;AAEa,IAAA,cAAA,GAAiB,CAAC,KAAmB,KAAA;AACjD,EACC,OAAA,aAAA,CAAc,KAAK,CAChB,IAAA,OAAA,CAAQ,KAAK,CACb,IAAA,OAAQ,OAA2C,MAAW,KAAA,UAAA;AAEnE;AAEO,IAAM,UAAa,GAAA,CAAgC,KACzD,KAAA,OAAO,KAAU,KAAA;AAEX,IAAM,aAAA,GAAgB,CAAC,KAAoC,KAAA,QAAA,CAAS,KAAK,CAAK,IAAA,KAAA,CAAM,SAAS,GAAG,CAAA;AAEhG,IAAM,QAAW,GAAA,CAAC,KAAmB,KAAA,OAAO,KAAU,KAAA;AA8BhD,IAAA,gBAAA,GAAmB,CAAC,KAAqD,KAAA;AACrF,EAAA,OAAO,KAAiB,YAAA,cAAA;AACzB;;;AC/DA,IAAM,QAAA,GAAW,CAAC,KAA4D,KAAA;AAC7E,EAAA,OAAO,UAAW,CAAA,KAAK,CAAI,GAAA,KAAA,EAAU,GAAA,KAAA;AACtC,CAAA;AAMO,IAAM,aAAA,GAAgB,CAAC,IAAwE,KAAA;AACrG,EAAA,IAAI,SAAS,MAAW,EAAA;AAExB,EAAA,IAAI,QAAS,CAAA,IAAI,CAAK,IAAA,IAAA,KAAS,IAAM,EAAA;AACpC,IAAA,OAAO,EAAE,aAAA,EAAe,CAAU,OAAA,EAAA,IAAI,CAAG,CAAA,EAAA;AAAA;AAG1C,EAAA,QAAQ,KAAK,IAAM;AAAA,IAClB,KAAK,OAAS,EAAA;AACb,MAAM,MAAA,QAAA,GAAW,QAAS,CAAA,IAAA,CAAK,QAAQ,CAAA;AACvC,MAAM,MAAA,QAAA,GAAW,QAAS,CAAA,IAAA,CAAK,QAAQ,CAAA;AAEvC,MAAI,IAAA,QAAA,KAAa,MAAa,IAAA,QAAA,KAAa,MAAW,EAAA;AAEtD,MAAO,OAAA;AAAA,QACN,aAAA,EAAe,SAAS,UAAW,CAAA,IAAA,CAAK,GAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC,CAAA;AAAA,OACnE;AAAA;AACD,IAEA,KAAK,QAAU,EAAA;AACd,MAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,IAAA,CAAK,KAAK,CAAA;AAEjC,MAAA,IAAI,UAAU,MAAW,EAAA;AAEzB,MAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,CAAK,MAAM,CAAA;AAEnC,MAAO,OAAA;AAAA,QACN,aAAe,EAAA,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,OAClC;AAAA;AACD,IAEA,SAAS;AACR,MAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,CAAK,MAAM,CAAA;AACnC,MAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,IAAA,CAAK,KAAK,CAAA;AAEjC,MAAI,IAAA,OAAA,IAAW,IAAQ,IAAA,KAAA,KAAU,MAAW,EAAA;AAC3C,QAAA,OAAO,EAAE,aAAA,EAAe,CAAS,MAAA,EAAA,KAAK,CAAG,CAAA,EAAA;AAAA;AAG1C,MAAA,OAAO,WAAW,MAAa,IAAA,EAAE,aAAe,EAAA,CAAA,OAAA,EAAU,MAAM,CAAG,CAAA,EAAA;AAAA;AACpE;AAEF,CAAA;;;AC5GO,IAAM,oBAAoB,UAAW,CAAA;AAAA,EAC3C,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA;AACD,CAAgF,CAAA;;;ACqLzE,IAAM,yBAA4B,GAAA,UAAA,CAAW,CAAC,WAAW,CAE/D,CAAA;;;AChMY,IAAA,QAAA,GAAW,CAIvB,aAAA,EACA,UACI,KAAA;AACJ,EAAA,MAAM,gBAAgB,EAAC;AAEvB,EAAM,MAAA,aAAA,GAAgB,IAAI,GAAA,CAAI,UAAU,CAAA;AAExC,EAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,aAAa,CAAG,EAAA;AACzD,IAAA,IAAI,CAAC,aAAA,CAAc,GAAI,CAAA,GAAG,CAAG,EAAA;AAC5B,MAAA,aAAA,CAAc,GAAG,CAAI,GAAA,KAAA;AAAA;AACtB;AAGD,EAAO,OAAA,aAAA;AACR;AAEO,IAAM,QAAA,GAAW,CAIvB,aAAA,EACA,UACI,KAAA;AACJ,EAAA,MAAM,gBAAgB,EAAC;AAEvB,EAAM,MAAA,aAAA,GAAgB,IAAI,GAAA,CAAI,UAAU,CAAA;AAExC,EAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,aAAa,CAAG,EAAA;AACzD,IAAI,IAAA,aAAA,CAAc,GAAI,CAAA,GAAG,CAAG,EAAA;AAC3B,MAAA,aAAA,CAAc,GAAG,CAAI,GAAA,KAAA;AAAA;AACtB;AAGD,EAAO,OAAA,aAAA;AACR,CAAA;AAGa,IAAA,eAAA,GAAkB,CAAC,UAC/B,KAAA;AAAA,EACC,QAAA,CAAS,YAAY,iBAAiB,CAAA;AAAA,EACtC,SAAS,UAAY,EAAA;AAAA,IACpB,GAAG,iBAAA;AAAA,IACH,GAAG;AAAA,GACH;AACF;AAGY,IAAA,WAAA,GAAc,CAAC,MAC3B,KAAA;AAAA,EACC,QAAA,CAAS,QAAQ,iBAAiB,CAAA;AAAA,EAClC,QAAA,CAAS,QAAQ,iBAAiB;AACnC;AAOY,IAAA,aAAA,GAAiC,CAAC,MAAW,KAAA;AACzD,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAQ,OAAA,CAAA,KAAA,CAAM,kBAAkB,2BAA2B,CAAA;AAE3D,IAAO,OAAA,IAAA;AAAA;AAGR,EAAA,OAAO,IAAI,eAAA,CAAgB,MAAgC,CAAA,CAAE,QAAS,EAAA;AACvE;AAEO,IAAM,gBAAA,GAAmB,CAAC,OAA8C,KAAA;AAC9E,EAAA,IAAI,CAAC,OAAA,IAAW,aAAc,CAAA,OAAO,CAAG,EAAA;AACvC,IAAO,OAAA,OAAA;AAAA;AAGR,EAAO,OAAA,MAAA,CAAO,YAAY,OAAO,CAAA;AAClC,CAAA;AASa,IAAA,sBAAA,GAAyB,CAAC,OAA2C,KAAA;AACjF,EAAA,MAAM,EAAE,IAAA,EAAM,WAAa,EAAA,IAAA,EAAM,SAAY,GAAA,OAAA;AAG7C,EAAA,MAAM,oBAAuB,GAAA,OAAA,CAAQ,WAAe,IAAA,OAAA,IAAW,QAAQ,IAAI,CAAA;AAM3E,EAAA,IAAI,CAAC,oBAAsB,EAAA;AAE3B,EAAA,MAAM,aAAoD,GAAA;AAAA,IACzD,GAAG,cAAc,IAAI,CAAA;AAAA,IACrB,GAAG,iBAAiB,WAAW,CAAA;AAAA,IAC/B,GAAG,iBAAiB,OAAO;AAAA,GAC5B;AAEA,EAAI,IAAA,aAAA,CAAc,IAAI,CAAG,EAAA;AACxB,IAAA,aAAA,CAAc,cAAc,CAAI,GAAA,mCAAA;AAEhC,IAAO,OAAA,aAAA;AAAA;AAGR,EAAA,IAAI,cAAe,CAAA,IAAI,CAAK,IAAA,YAAA,CAAa,IAAI,CAAG,EAAA;AAC/C,IAAA,aAAA,CAAc,cAAc,CAAI,GAAA,kBAAA;AAChC,IAAA,aAAA,CAAc,MAAS,GAAA,kBAAA;AAAA;AAGxB,EAAO,OAAA,aAAA;AACR;AAEa,IAAA,YAAA,GAAe,CAAC,eAA4D,KAAA;AACxF,EAAA,IAAI,eAAiB,EAAA;AACpB,IAAO,OAAA,eAAA;AAAA;AAGR,EAAA,IAAI,OAAO,UAAe,KAAA,WAAA,IAAe,UAAW,CAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtE,IAAA,OAAO,UAAW,CAAA,KAAA;AAAA;AAGnB,EAAM,MAAA,IAAI,MAAM,+BAA+B,CAAA;AAChD;AAEA,IAAM,uBAAuB,MAAM;AAClC,EAAI,IAAA,MAAA;AACJ,EAAI,IAAA,OAAA;AAEJ,EAAA,MAAM,OAAU,GAAA,IAAI,OAAQ,CAAA,CAAC,KAAK,GAAQ,KAAA;AACzC,IAAU,OAAA,GAAA,GAAA;AACV,IAAS,MAAA,GAAA,GAAA;AAAA,GACT,CAAA;AAED,EAAO,OAAA,EAAE,OAAS,EAAA,MAAA,EAAQ,OAAQ,EAAA;AACnC,CAAA;AAEa,IAAA,SAAA,GAAY,CAAC,KAAkB,KAAA;AAC3C,EAAA,IAAI,UAAU,CAAG,EAAA;AAEjB,EAAA,MAAM,EAAE,OAAA,EAAS,OAAQ,EAAA,GAAI,oBAAqB,EAAA;AAElD,EAAA,UAAA,CAAW,SAAS,KAAK,CAAA;AAEzB,EAAO,OAAA,OAAA;AACR;AAEa,IAAA,oBAAA,GAAuB,IAAI,OACvC,KAAA,WAAA,CAAY,IAAI,OAAQ,CAAA,MAAA,CAAO,OAAO,CAAC;AAEjC,IAAM,mBAAsB,GAAA,CAAC,YAAyB,KAAA,WAAA,CAAY,QAAQ,YAAY","file":"chunk-UVFIGKZS.js","sourcesContent":["// == These two types allows for adding arbitrary literal types, while still provided autocomplete for defaults.\n// == Usually intersection with \"{}\" or \"NonNullable<unknown>\" would make it work fine, but the placeholder with never type is added to make the AnyWhatever type appear last in a given union.\nexport type AnyString = string & { z_placeholder?: never };\nexport type AnyNumber = number & { z_placeholder?: never };\n\n// eslint-disable-next-line ts-eslint/no-explicit-any -- Any is fine here\nexport type AnyObject = Record<keyof any, any>;\n\n// eslint-disable-next-line ts-eslint/no-explicit-any -- Any is required here so that one can pass custom function type without type errors\nexport type AnyFunction<TResult = unknown> = (...args: any) => TResult;\n\nexport type CallbackFn<in TParams, out TResult = void> = (...params: TParams[]) => TResult;\n\nexport type Prettify<TObject> = NonNullable<unknown> & { [Key in keyof TObject]: TObject[Key] };\n\nexport type WriteableVariantUnion = \"deep\" | \"shallow\";\n\n/**\n * Makes all properties in an object type writeable (removes readonly modifiers).\n * Supports both shallow and deep modes, and handles special cases like arrays, tuples, and unions.\n * @template TObject - The object type to make writeable\n * @template TVariant - The level of writeable transformation (\"shallow\" | \"deep\")\n */\n\ntype ArrayOrObject = Record<number | string | symbol, unknown> | unknown[];\n\nexport type Writeable<\n\tTObject,\n\tTVariant extends WriteableVariantUnion = \"shallow\",\n> = TObject extends readonly [...infer TTupleItems]\n\t? TVariant extends \"deep\"\n\t\t? [\n\t\t\t\t...{\n\t\t\t\t\t[Key in keyof TTupleItems]: TTupleItems[Key] extends ArrayOrObject\n\t\t\t\t\t\t? Writeable<TTupleItems[Key], TVariant>\n\t\t\t\t\t\t: TTupleItems[Key];\n\t\t\t\t},\n\t\t\t]\n\t\t: [...TTupleItems]\n\t: TObject extends ReadonlyArray<infer TArrayItem>\n\t\t? TVariant extends \"deep\"\n\t\t\t? Array<TArrayItem extends ArrayOrObject ? Writeable<TArrayItem, TVariant> : TArrayItem>\n\t\t\t: TArrayItem[]\n\t\t: TObject extends ArrayOrObject\n\t\t\t? {\n\t\t\t\t\t-readonly [Key in keyof TObject]: TVariant extends \"shallow\"\n\t\t\t\t\t\t? TObject[Key]\n\t\t\t\t\t\t: TVariant extends \"deep\"\n\t\t\t\t\t\t\t? TObject[Key] extends ArrayOrObject\n\t\t\t\t\t\t\t\t? Writeable<TObject[Key], TVariant>\n\t\t\t\t\t\t\t\t: TObject[Key]\n\t\t\t\t\t\t\t: never;\n\t\t\t\t}\n\t\t\t: TObject;\n\nexport const defineEnum = <const TValue>(value: TValue) => value as Prettify<Writeable<TValue, \"deep\">>;\n\n// == Using this Immediately Indexed Mapped type helper to help show computed type of anything passed to it instead of just the type name\nexport type UnmaskType<TValue> = { _: TValue }[\"_\"];\n\nexport type Awaitable<TValue> = Promise<TValue> | TValue;\n\nexport type CommonRequestHeaders =\n\t| \"Access-Control-Allow-Credentials\"\n\t| \"Access-Control-Allow-Headers\"\n\t| \"Access-Control-Allow-Methods\"\n\t| \"Access-Control-Allow-Origin\"\n\t| \"Access-Control-Expose-Headers\"\n\t| \"Access-Control-Max-Age\"\n\t| \"Age\"\n\t| \"Allow\"\n\t| \"Cache-Control\"\n\t| \"Clear-Site-Data\"\n\t| \"Content-Disposition\"\n\t| \"Content-Encoding\"\n\t| \"Content-Language\"\n\t| \"Content-Length\"\n\t| \"Content-Location\"\n\t| \"Content-Range\"\n\t| \"Content-Security-Policy-Report-Only\"\n\t| \"Content-Security-Policy\"\n\t| \"Cookie\"\n\t| \"Cross-Origin-Embedder-Policy\"\n\t| \"Cross-Origin-Opener-Policy\"\n\t| \"Cross-Origin-Resource-Policy\"\n\t| \"Date\"\n\t| \"ETag\"\n\t| \"Expires\"\n\t| \"Last-Modified\"\n\t| \"Location\"\n\t| \"Permissions-Policy\"\n\t| \"Pragma\"\n\t| \"Retry-After\"\n\t| \"Save-Data\"\n\t| \"Sec-CH-Prefers-Color-Scheme\"\n\t| \"Sec-CH-Prefers-Reduced-Motion\"\n\t| \"Sec-CH-UA-Arch\"\n\t| \"Sec-CH-UA-Bitness\"\n\t| \"Sec-CH-UA-Form-Factor\"\n\t| \"Sec-CH-UA-Full-Version-List\"\n\t| \"Sec-CH-UA-Full-Version\"\n\t| \"Sec-CH-UA-Mobile\"\n\t| \"Sec-CH-UA-Model\"\n\t| \"Sec-CH-UA-Platform-Version\"\n\t| \"Sec-CH-UA-Platform\"\n\t| \"Sec-CH-UA-WoW64\"\n\t| \"Sec-CH-UA\"\n\t| \"Sec-Fetch-Dest\"\n\t| \"Sec-Fetch-Mode\"\n\t| \"Sec-Fetch-Site\"\n\t| \"Sec-Fetch-User\"\n\t| \"Sec-GPC\"\n\t| \"Server-Timing\"\n\t| \"Server\"\n\t| \"Service-Worker-Navigation-Preload\"\n\t| \"Set-Cookie\"\n\t| \"Strict-Transport-Security\"\n\t| \"Timing-Allow-Origin\"\n\t| \"Trailer\"\n\t| \"Transfer-Encoding\"\n\t| \"Upgrade\"\n\t| \"Vary\"\n\t| \"Warning\"\n\t| \"WWW-Authenticate\"\n\t| \"X-Content-Type-Options\"\n\t| \"X-DNS-Prefetch-Control\"\n\t| \"X-Frame-Options\"\n\t| \"X-Permitted-Cross-Domain-Policies\"\n\t| \"X-Powered-By\"\n\t| \"X-Robots-Tag\"\n\t| \"X-XSS-Protection\"\n\t| AnyString;\n\nexport type CommonAuthorizationHeaders = `${\"Basic\" | \"Bearer\" | \"Token\"} ${string}`;\n\nexport type CommonContentTypes =\n\t| \"application/epub+zip\"\n\t| \"application/gzip\"\n\t| \"application/json\"\n\t| \"application/ld+json\"\n\t| \"application/octet-stream\"\n\t| \"application/ogg\"\n\t| \"application/pdf\"\n\t| \"application/rtf\"\n\t| \"application/vnd.ms-fontobject\"\n\t| \"application/wasm\"\n\t| \"application/xhtml+xml\"\n\t| \"application/xml\"\n\t| \"application/zip\"\n\t| \"audio/aac\"\n\t| \"audio/mpeg\"\n\t| \"audio/ogg\"\n\t| \"audio/opus\"\n\t| \"audio/webm\"\n\t| \"audio/x-midi\"\n\t| \"font/otf\"\n\t| \"font/ttf\"\n\t| \"font/woff\"\n\t| \"font/woff2\"\n\t| \"image/avif\"\n\t| \"image/bmp\"\n\t| \"image/gif\"\n\t| \"image/jpeg\"\n\t| \"image/png\"\n\t| \"image/svg+xml\"\n\t| \"image/tiff\"\n\t| \"image/webp\"\n\t| \"image/x-icon\"\n\t| \"model/gltf-binary\"\n\t| \"model/gltf+json\"\n\t| \"text/calendar\"\n\t| \"text/css\"\n\t| \"text/csv\"\n\t| \"text/html\"\n\t| \"text/javascript\"\n\t| \"text/plain\"\n\t| \"video/3gpp\"\n\t| \"video/3gpp2\"\n\t| \"video/av1\"\n\t| \"video/mp2t\"\n\t| \"video/mp4\"\n\t| \"video/mpeg\"\n\t| \"video/ogg\"\n\t| \"video/webm\"\n\t| \"video/x-msvideo\"\n\t| AnyString;\n","import type { BaseCallApiExtraOptions } from \"../types\";\nimport { defineEnum } from \"../utils/type-helpers\";\n\nexport const retryDefaults = defineEnum({\n\tattempts: 0,\n\tcondition: () => true,\n\tdelay: 1000,\n\tmaxDelay: 10000,\n\tmethods: [\"GET\", \"POST\"] satisfies BaseCallApiExtraOptions[\"retryMethods\"],\n\tstatusCodes: [] satisfies BaseCallApiExtraOptions[\"retryStatusCodes\"],\n\tstrategy: \"linear\",\n});\n\nexport const defaultRetryStatusCodesLookup = defineEnum({\n\t408: \"Request Timeout\",\n\t409: \"Conflict\",\n\t425: \"Too Early\",\n\t429: \"Too Many Requests\",\n\t500: \"Internal Server Error\",\n\t502: \"Bad Gateway\",\n\t503: \"Service Unavailable\",\n\t504: \"Gateway Timeout\",\n});\n\nexport const commonDefaults = defineEnum({\n\tbodySerializer: JSON.stringify,\n\tdefaultErrorMessage: \"Failed to fetch data from server!\",\n});\n\nexport const responseDefaults = defineEnum({\n\tresponseParser: JSON.parse,\n\tresponseType: \"json\",\n\tresultMode: \"all\",\n});\n\nexport const hookDefaults = defineEnum({\n\tmergedHooksExecutionMode: \"parallel\",\n\tmergedHooksExecutionOrder: \"mainHooksAfterPlugins\",\n});\n\nexport const dedupeDefaults = defineEnum({\n\tdedupeStrategy: \"cancel\",\n});\n\nexport const requestOptionDefaults = defineEnum({\n\tmethod: \"GET\",\n});\n","import { commonDefaults } from \"./constants/default-options\";\nimport type { ResultModeMap } from \"./response\";\nimport type { CallApiExtraOptions, CallApiResultErrorVariant } from \"./types/common\";\nimport { omitKeys } from \"./utils/common\";\nimport { isHTTPErrorInstance } from \"./utils/guards\";\nimport type { UnmaskType } from \"./utils/type-helpers\";\n\ntype ErrorInfo = {\n\tcloneResponse: CallApiExtraOptions[\"cloneResponse\"];\n\tdefaultErrorMessage: CallApiExtraOptions[\"defaultErrorMessage\"];\n\terror?: unknown;\n\tmessage?: string;\n\tresultMode: CallApiExtraOptions[\"resultMode\"];\n};\n\nexport const resolveErrorResult = <TCallApiResult = never>(info: ErrorInfo) => {\n\tconst { cloneResponse, defaultErrorMessage, error, message: customErrorMessage, resultMode } = info;\n\n\tlet apiDetails: CallApiResultErrorVariant<unknown> = {\n\t\tdata: null,\n\t\terror: {\n\t\t\terrorData: error as Error,\n\t\t\tmessage: customErrorMessage ?? (error as Error).message,\n\t\t\tname: (error as Error).name as PossibleJavaScriptError[\"name\"],\n\t\t},\n\t\tresponse: null,\n\t};\n\n\tif (isHTTPErrorInstance<never>(error)) {\n\t\tconst selectedDefaultErrorMessage = defaultErrorMessage ?? commonDefaults.defaultErrorMessage;\n\n\t\tconst { errorData, message = selectedDefaultErrorMessage, name, response } = error;\n\n\t\tapiDetails = {\n\t\t\tdata: null,\n\t\t\terror: {\n\t\t\t\terrorData,\n\t\t\t\tmessage,\n\t\t\t\tname,\n\t\t\t},\n\t\t\tresponse: cloneResponse ? response.clone() : response,\n\t\t};\n\t}\n\n\tconst resultModeMap = {\n\t\tall: apiDetails,\n\t\tallWithException: apiDetails as never,\n\t\tallWithoutResponse: omitKeys(apiDetails, [\"response\"]),\n\t\tonlyError: apiDetails.error,\n\t\tonlyResponse: apiDetails.response,\n\t\tonlyResponseWithException: apiDetails.response as never,\n\t\tonlySuccess: apiDetails.data,\n\t\tonlySuccessWithException: apiDetails.data,\n\t} satisfies ResultModeMap;\n\n\tconst getErrorResult = (customErrorInfo?: Pick<ErrorInfo, \"message\">) => {\n\t\tconst errorVariantResult = resultModeMap[resultMode ?? \"all\"] as TCallApiResult;\n\n\t\treturn customErrorInfo\n\t\t\t? {\n\t\t\t\t\t...errorVariantResult,\n\t\t\t\t\terror: {\n\t\t\t\t\t\t...(errorVariantResult as CallApiResultErrorVariant<unknown>).error,\n\t\t\t\t\t\t...customErrorInfo,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: errorVariantResult;\n\t};\n\n\treturn { apiDetails, getErrorResult };\n};\n\ntype ErrorDetails<TErrorResponse> = {\n\tdefaultErrorMessage: CallApiExtraOptions[\"defaultErrorMessage\"];\n\terrorData: TErrorResponse;\n\tresponse: Response;\n};\n\ntype ErrorOptions = {\n\tcause?: unknown;\n};\n\nexport class HTTPError<TErrorResponse = Record<string, unknown>> {\n\tcause: ErrorOptions[\"cause\"];\n\n\terrorData: ErrorDetails<TErrorResponse>[\"errorData\"];\n\n\tisHTTPError = true;\n\n\tmessage: string;\n\n\tname = \"HTTPError\" as const;\n\n\tresponse: ErrorDetails<TErrorResponse>[\"response\"];\n\n\tconstructor(errorDetails: ErrorDetails<TErrorResponse>, errorOptions?: ErrorOptions) {\n\t\tconst { defaultErrorMessage, errorData, response } = errorDetails;\n\n\t\tconst selectedDefaultErrorMessage = defaultErrorMessage ?? commonDefaults.defaultErrorMessage;\n\n\t\tthis.message =\n\t\t\t(errorData as { message?: string } | undefined)?.message ?? selectedDefaultErrorMessage;\n\t\terrorOptions?.cause && (this.cause = errorOptions.cause);\n\t\tthis.errorData = errorData;\n\t\tthis.response = response;\n\t\tError.captureStackTrace(this, this.constructor);\n\t}\n}\n\nexport type PossibleJavaScriptError = UnmaskType<{\n\terrorData: DOMException | Error | SyntaxError | TypeError;\n\tmessage: string;\n\tname: \"AbortError\" | \"Error\" | \"SyntaxError\" | \"TimeoutError\" | \"TypeError\" | (`${string}Error` & {});\n}>;\n\nexport type PossibleHTTPError<TErrorData> = UnmaskType<{\n\terrorData: TErrorData;\n\tmessage: string;\n\tname: \"HTTPError\";\n}>;\n","import { HTTPError, type PossibleHTTPError } from \"../error\";\nimport type { CallApiResultErrorVariant } from \"../types\";\nimport type { AnyFunction } from \"./type-helpers\";\n\nexport const isHTTPError = <TErrorData>(\n\terror: CallApiResultErrorVariant<TErrorData>[\"error\"] | null\n): error is PossibleHTTPError<TErrorData> => {\n\treturn isPlainObject(error) && error.name === \"HTTPError\";\n};\n\nexport const isHTTPErrorInstance = <TErrorResponse>(\n\terror: unknown\n): error is HTTPError<TErrorResponse> => {\n\treturn (\n\t\t// prettier-ignore\n\t\terror instanceof HTTPError|| (isPlainObject(error) && error.name === \"HTTPError\" && error.isHTTPError === true)\n\t);\n};\n\n// FIXME: Outsource to type-helpers later as a peer dependency\n\nexport const isArray = <TArrayItem>(value: unknown): value is TArrayItem[] => Array.isArray(value);\n\nexport const isObject = (value: unknown) => typeof value === \"object\" && value !== null;\n\nconst hasObjectPrototype = (value: unknown) => {\n\treturn Object.prototype.toString.call(value) === \"[object Object]\";\n};\n\n/**\n * @description Copied from TanStack Query's isPlainObject\n * @see https://github.com/TanStack/query/blob/main/packages/query-core/src/utils.ts#L321\n */\nexport const isPlainObject = <TPlainObject extends Record<string, unknown>>(\n\tvalue: unknown\n): value is TPlainObject => {\n\tif (!hasObjectPrototype(value)) {\n\t\treturn false;\n\t}\n\n\t// If has no constructor\n\tconst constructor = (value as object | undefined)?.constructor;\n\tif (constructor === undefined) {\n\t\treturn true;\n\t}\n\n\t// If has modified prototype\n\tconst prototype = constructor.prototype as object;\n\tif (!hasObjectPrototype(prototype)) {\n\t\treturn false;\n\t}\n\n\t// If constructor does not have an Object-specific method\n\tif (!Object.hasOwn(prototype, \"isPrototypeOf\")) {\n\t\treturn false;\n\t}\n\n\t// Handles Objects created by Object.create(<arbitrary prototype>)\n\tif (Object.getPrototypeOf(value) !== Object.prototype) {\n\t\treturn false;\n\t}\n\n\t// It's probably a plain object at this point\n\treturn true;\n};\n\nexport const isJsonString = (value: unknown): value is string => {\n\tif (!isString(value)) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tJSON.parse(value);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport const isSerializable = (value: unknown) => {\n\treturn (\n\t\tisPlainObject(value)\n\t\t|| isArray(value)\n\t\t|| typeof (value as { toJSON: unknown } | undefined)?.toJSON === \"function\"\n\t);\n};\n\nexport const isFunction = <TFunction extends AnyFunction>(value: unknown): value is TFunction =>\n\ttypeof value === \"function\";\n\nexport const isQueryString = (value: unknown): value is string => isString(value) && value.includes(\"=\");\n\nexport const isString = (value: unknown) => typeof value === \"string\";\n\n// https://github.com/unjs/ofetch/blob/main/src/utils.ts\n// TODO Find a way to incorporate this function in checking when to apply the bodySerializer on the body and also whether to add the content type application/json\nexport const isJSONSerializable = (value: unknown) => {\n\tif (value === undefined) {\n\t\treturn false;\n\t}\n\tconst t = typeof value;\n\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- No time to make this more type-safe\n\tif (t === \"string\" || t === \"number\" || t === \"boolean\" || t === null) {\n\t\treturn true;\n\t}\n\tif (t !== \"object\") {\n\t\treturn false;\n\t}\n\tif (isArray(value)) {\n\t\treturn true;\n\t}\n\tif ((value as Buffer | null)?.buffer) {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\t(value?.constructor && value.constructor.name === \"Object\")\n\t\t// eslint-disable-next-line ts-eslint/prefer-nullish-coalescing -- Nullish coalescing makes no sense in this boolean context\n\t\t|| typeof (value as { toJSON: () => unknown } | null)?.toJSON === \"function\"\n\t);\n};\n\nexport const isReadableStream = (value: unknown): value is ReadableStream<unknown> => {\n\treturn value instanceof ReadableStream;\n};\n","/* eslint-disable perfectionist/sort-object-types -- Avoid Sorting for now */\n\nimport type { ExtraOptions } from \"./types/common\";\nimport { isFunction, isString } from \"./utils/guards\";\n\ntype ValueOrFunctionResult<TValue> = TValue | (() => TValue);\n\n/**\n * Bearer Or Token authentication\n *\n * The value of `bearer` will be added to a header as\n * `auth: Bearer some-auth-token`,\n *\n * The value of `token` will be added to a header as\n * `auth: Token some-auth-token`,\n */\nexport type BearerOrTokenAuth =\n\t| {\n\t\t\ttype?: \"Bearer\";\n\t\t\tbearer?: ValueOrFunctionResult<string | null>;\n\t\t\ttoken?: never;\n\t }\n\t| {\n\t\t\ttype?: \"Token\";\n\t\t\tbearer?: never;\n\t\t\ttoken?: ValueOrFunctionResult<string | null>;\n\t };\n\n/**\n * Basic auth\n */\nexport type BasicAuth = {\n\ttype: \"Basic\";\n\tusername: ValueOrFunctionResult<string | null | undefined>;\n\tpassword: ValueOrFunctionResult<string | null | undefined>;\n};\n\n/**\n * Custom auth\n *\n * @param prefix - prefix of the header\n * @param authValue - value of the header\n *\n * @example\n * ```ts\n * {\n * type: \"Custom\",\n * prefix: \"Token\",\n * authValue: \"token\"\n * }\n * ```\n */\nexport type CustomAuth = {\n\ttype: \"Custom\";\n\tprefix: ValueOrFunctionResult<string | null | undefined>;\n\tvalue: ValueOrFunctionResult<string | null | undefined>;\n};\n\n// eslint-disable-next-line perfectionist/sort-union-types -- Let the first one be first\nexport type Auth = BearerOrTokenAuth | BasicAuth | CustomAuth;\n\nconst getValue = (value: ValueOrFunctionResult<string | null | undefined>) => {\n\treturn isFunction(value) ? value() : value;\n};\n\ntype AuthorizationHeader = {\n\tAuthorization: string;\n};\n\nexport const getAuthHeader = (auth: ExtraOptions[\"auth\"]): false | AuthorizationHeader | undefined => {\n\tif (auth === undefined) return;\n\n\tif (isString(auth) || auth === null) {\n\t\treturn { Authorization: `Bearer ${auth}` };\n\t}\n\n\tswitch (auth.type) {\n\t\tcase \"Basic\": {\n\t\t\tconst username = getValue(auth.username);\n\t\t\tconst password = getValue(auth.password);\n\n\t\t\tif (username === undefined || password === undefined) return;\n\n\t\t\treturn {\n\t\t\t\tAuthorization: `Basic ${globalThis.btoa(`${username}:${password}`)}`,\n\t\t\t};\n\t\t}\n\n\t\tcase \"Custom\": {\n\t\t\tconst value = getValue(auth.value);\n\n\t\t\tif (value === undefined) return;\n\n\t\t\tconst prefix = getValue(auth.prefix);\n\n\t\t\treturn {\n\t\t\t\tAuthorization: `${prefix} ${value}`,\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\tconst bearer = getValue(auth.bearer);\n\t\t\tconst token = getValue(auth.token);\n\n\t\t\tif (\"token\" in auth && token !== undefined) {\n\t\t\t\treturn { Authorization: `Token ${token}` };\n\t\t\t}\n\n\t\t\treturn bearer !== undefined && { Authorization: `Bearer ${bearer}` };\n\t\t}\n\t}\n};\n","import type { ModifiedRequestInit } from \"../types\";\nimport { defineEnum } from \"../utils/type-helpers\";\n\nexport const fetchSpecificKeys = defineEnum([\n\t\"body\",\n\t\"integrity\",\n\t\"duplex\",\n\t\"method\",\n\t\"headers\",\n\t\"signal\",\n\t\"cache\",\n\t\"redirect\",\n\t\"window\",\n\t\"credentials\",\n\t\"keepalive\",\n\t\"referrer\",\n\t\"priority\",\n\t\"mode\",\n\t\"referrerPolicy\",\n] satisfies Array<keyof ModifiedRequestInit> as Array<keyof ModifiedRequestInit>);\n","import type { Auth } from \"../auth\";\nimport type { fetchSpecificKeys } from \"../constants/common\";\nimport type { PossibleHTTPError, PossibleJavaScriptError } from \"../error\";\nimport type { ErrorContext, Hooks, HooksOrHooksArray } from \"../hooks\";\nimport type { CallApiPlugin, InferPluginOptions, Plugins } from \"../plugins\";\nimport type { GetCallApiResult, ResponseTypeUnion, ResultModeUnion } from \"../response\";\nimport type { RetryOptions } from \"../retry\";\nimport type { InitURL, UrlOptions } from \"../url\";\nimport { type Awaitable, type Prettify, type UnmaskType, defineEnum } from \"../utils/type-helpers\";\nimport type { CallApiSchemas, CallApiValidators, InferSchemaResult } from \"../validation\";\nimport type {\n\tBodyOption,\n\tHeadersOption,\n\tMetaOption,\n\tMethodOption,\n\tResultModeOption,\n} from \"./conditional-types\";\nimport type {\n\tDefaultDataType,\n\tDefaultMoreOptions,\n\tDefaultPluginArray,\n\tDefaultThrowOnError,\n} from \"./default-types\";\n\ntype FetchSpecificKeysUnion = Exclude<(typeof fetchSpecificKeys)[number], \"body\" | \"headers\" | \"method\">;\n\nexport type ModifiedRequestInit = RequestInit & { duplex?: \"half\" };\n\nexport type CallApiRequestOptions<TSchemas extends CallApiSchemas = DefaultMoreOptions> = Prettify<\n\tBodyOption<TSchemas>\n\t\t& HeadersOption<TSchemas>\n\t\t& MethodOption<TSchemas>\n\t\t& Pick<ModifiedRequestInit, FetchSpecificKeysUnion>\n>;\n\nexport type CallApiRequestOptionsForHooks<TSchemas extends CallApiSchemas = DefaultMoreOptions> = Omit<\n\tCallApiRequestOptions<TSchemas>,\n\t\"headers\"\n> & {\n\theaders?: Record<string, string | undefined>;\n};\n\ntype FetchImpl = UnmaskType<(input: string | Request | URL, init?: RequestInit) => Promise<Response>>;\n\nexport type ExtraOptions<\n\tTData = DefaultDataType,\n\tTErrorData = DefaultDataType,\n\tTResultMode extends ResultModeUnion = ResultModeUnion,\n\tTThrowOnError extends boolean = DefaultThrowOnError,\n\tTResponseType extends ResponseTypeUnion = ResponseTypeUnion,\n\tTPluginArray extends CallApiPlugin[] = DefaultPluginArray,\n\tTSchemas extends CallApiSchemas = DefaultMoreOptions,\n> = {\n\t/**\n\t * Authorization header value.\n\t */\n\tauth?: string | Auth | null;\n\t/**\n\t * Base URL to be prepended to all request URLs\n\t */\n\tbaseURL?: string;\n\n\t/**\n\t * Custom function to serialize the body object into a string.\n\t */\n\tbodySerializer?: (bodyData: Record<string, unknown>) => string;\n\n\t/**\n\t * Whether or not to clone the response, so response.json() and the like, can be read again else where.\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Response/clone\n\t * @default false\n\t */\n\tcloneResponse?: boolean;\n\n\t/**\n\t * Custom fetch implementation\n\t */\n\tcustomFetchImpl?: FetchImpl;\n\n\t/**\n\t * Custom request key to be used to identify a request in the fetch deduplication strategy.\n\t * @default the full request url + string formed from the request options\n\t */\n\tdedupeKey?: string;\n\n\t/**\n\t * Defines the deduplication strategy for the request, can be set to \"none\" | \"defer\" | \"cancel\".\n\t * - If set to \"cancel\", the previous pending request with the same request key will be cancelled and lets the new request through.\n\t * - If set to \"defer\", all new request with the same request key will be share the same response, until the previous one is completed.\n\t * - If set to \"none\", deduplication is disabled.\n\t * @default \"cancel\"\n\t */\n\tdedupeStrategy?: \"cancel\" | \"defer\" | \"none\";\n\n\t/**\n\t * Default error message to use if none is provided from a response.\n\t * @default \"Failed to fetch data from server!\"\n\t */\n\tdefaultErrorMessage?: string;\n\n\t/**\n\t * If true, forces the calculation of the total byte size from the request or response body, in case the content-length header is not present or is incorrect.\n\t * @default false\n\t */\n\tforceCalculateStreamSize?: boolean | { request?: boolean; response?: boolean };\n\n\t/**\n\t * Resolved request URL\n\t */\n\treadonly fullURL?: string;\n\n\t/**\n\t * Defines the mode in which the composed hooks are executed\".\n\t * - If set to \"parallel\", main and plugin hooks will be executed in parallel.\n\t * - If set to \"sequential\", the plugin hooks will be executed first, followed by the main hook.\n\t * @default \"parallel\"\n\t */\n\tmergedHooksExecutionMode?: \"parallel\" | \"sequential\";\n\n\t/**\n\t * - Controls what order in which the composed hooks execute\n\t * @default \"mainHooksAfterPlugins\"\n\t */\n\tmergedHooksExecutionOrder?: \"mainHooksAfterPlugins\" | \"mainHooksBeforePlugins\";\n\n\t/**\n\t * An array of CallApi plugins. It allows you to extend the behavior of the library.\n\t */\n\tplugins?: Plugins<TPluginArray>;\n\n\t/**\n\t * Custom function to parse the response string\n\t */\n\tresponseParser?: (responseString: string) => Awaitable<Record<string, unknown>>;\n\n\t/**\n\t * Expected response type, affects how response is parsed\n\t * @default \"json\"\n\t */\n\tresponseType?: TResponseType;\n\n\t/**\n\t * Mode of the result, can influence how results are handled or returned.\n\t * Can be set to \"all\" | \"onlySuccess\" | \"onlyError\" | \"onlyResponse\".\n\t * @default \"all\"\n\t */\n\tresultMode?: TResultMode;\n\n\t/**\n\t * Type-safe schemas for the response validation.\n\t */\n\tschemas?: TSchemas;\n\n\t/**\n\t * If true or the function returns true, throws errors instead of returning them\n\t * The function is passed the error object and can be used to conditionally throw the error\n\t * @default false\n\t */\n\tthrowOnError?: TThrowOnError | ((context: ErrorContext<TErrorData>) => TThrowOnError);\n\n\t/**\n\t * Request timeout in milliseconds\n\t */\n\ttimeout?: number;\n\n\t/**\n\t * Custom validation functions for response validation\n\t */\n\tvalidators?: CallApiValidators<TData, TErrorData>;\n\t/* eslint-disable perfectionist/sort-intersection-types -- Allow these to be last for the sake of docs */\n} & HooksOrHooksArray<TData, TErrorData, Partial<InferPluginOptions<TPluginArray>>>\n\t& Partial<InferPluginOptions<TPluginArray>>\n\t& MetaOption<TSchemas>\n\t& RetryOptions<TErrorData>\n\t& ResultModeOption<TErrorData, TResultMode>\n\t& UrlOptions<TSchemas>;\n/* eslint-enable perfectionist/sort-intersection-types -- Allow these to be last for the sake of docs */\n\nexport type CallApiExtraOptions<\n\tTData = DefaultDataType,\n\tTErrorData = DefaultDataType,\n\tTResultMode extends ResultModeUnion = ResultModeUnion,\n\tTThrowOnError extends boolean = DefaultThrowOnError,\n\tTResponseType extends ResponseTypeUnion = ResponseTypeUnion,\n\tTPluginArray extends CallApiPlugin[] = DefaultPluginArray,\n\tTSchemas extends CallApiSchemas = DefaultMoreOptions,\n> = ExtraOptions<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TPluginArray, TSchemas> & {\n\tplugins?:\n\t\t| Plugins<TPluginArray>\n\t\t| ((context: { basePlugins: Plugins<TPluginArray> }) => Plugins<TPluginArray>);\n\n\tschemas?: TSchemas | ((context: { baseSchemas: TSchemas }) => TSchemas);\n\n\tvalidators?:\n\t\t| CallApiValidators<TData, TErrorData>\n\t\t| ((context: {\n\t\t\t\tbaseValidators: CallApiValidators<TData, TErrorData>;\n\t\t }) => CallApiValidators<TData, TErrorData>);\n};\n\nexport const optionsEnumToOmitFromBase = defineEnum([\"dedupeKey\"] satisfies Array<\n\tkeyof CallApiExtraOptions\n>);\n\nexport type BaseCallApiExtraOptions<\n\tTBaseData = DefaultDataType,\n\tTBaseErrorData = DefaultDataType,\n\tTBaseResultMode extends ResultModeUnion = ResultModeUnion,\n\tTBaseThrowOnError extends boolean = DefaultThrowOnError,\n\tTBaseResponseType extends ResponseTypeUnion = ResponseTypeUnion,\n\tTBasePluginArray extends CallApiPlugin[] = DefaultPluginArray,\n\tTBaseSchemas extends CallApiSchemas = DefaultMoreOptions,\n> = Omit<\n\tPartial<\n\t\tCallApiExtraOptions<\n\t\t\tTBaseData,\n\t\t\tTBaseErrorData,\n\t\t\tTBaseResultMode,\n\t\t\tTBaseThrowOnError,\n\t\t\tTBaseResponseType,\n\t\t\tTBasePluginArray,\n\t\t\tTBaseSchemas\n\t\t>\n\t>,\n\t(typeof optionsEnumToOmitFromBase)[number]\n> & {\n\t/**\n\t * Specifies which configuration parts should skip automatic merging between base and main configs.\n\t * Use this when you need manual control over how configs are combined.\n\t *\n\t * @values\n\t * - \"all\" - Disables automatic merging for both request and options\n\t * - \"options\" - Disables automatic merging of options only\n\t * - \"request\" - Disables automatic merging of request only\n\t *\n\t * @example\n\t * ```ts\n\t * const client = createFetchClient((ctx) => ({\n\t * skipAutoMergeFor: \"options\",\n\t *\n\t * // Now you can manually merge options in your config function\n\t * ...ctx.options,\n\t * }));\n\t * ```\n\t */\n\tskipAutoMergeFor?: \"all\" | \"options\" | \"request\";\n};\n\ntype CombinedExtraOptionsWithoutHooks = Omit<BaseCallApiExtraOptions & CallApiExtraOptions, keyof Hooks>;\n\n// eslint-disable-next-line ts-eslint/consistent-type-definitions -- Allow this to be an interface\nexport interface CombinedCallApiExtraOptions extends CombinedExtraOptionsWithoutHooks, Hooks {}\n\nexport type BaseCallApiConfig<\n\tTBaseData = DefaultDataType,\n\tTBaseErrorData = DefaultDataType,\n\tTBaseResultMode extends ResultModeUnion = ResultModeUnion,\n\tTBaseThrowOnError extends boolean = DefaultThrowOnError,\n\tTBaseResponseType extends ResponseTypeUnion = ResponseTypeUnion,\n\tTBasePluginArray extends CallApiPlugin[] = DefaultPluginArray,\n\tTBaseSchemas extends CallApiSchemas = DefaultMoreOptions,\n> =\n\t| (CallApiRequestOptions<TBaseSchemas> // eslint-disable-next-line perfectionist/sort-intersection-types -- Allow\n\t\t\t& BaseCallApiExtraOptions<\n\t\t\t\tTBaseData,\n\t\t\t\tTBaseErrorData,\n\t\t\t\tTBaseResultMode,\n\t\t\t\tTBaseThrowOnError,\n\t\t\t\tTBaseResponseType,\n\t\t\t\tTBasePluginArray,\n\t\t\t\tTBaseSchemas\n\t\t\t>)\n\t| ((context: {\n\t\t\tinitURL: string;\n\t\t\toptions: CallApiExtraOptions;\n\t\t\trequest: CallApiRequestOptions;\n\t }) => CallApiRequestOptions<TBaseSchemas> // eslint-disable-next-line perfectionist/sort-intersection-types -- Allow\n\t\t\t& BaseCallApiExtraOptions<\n\t\t\t\tTBaseData,\n\t\t\t\tTBaseErrorData,\n\t\t\t\tTBaseResultMode,\n\t\t\t\tTBaseThrowOnError,\n\t\t\t\tTBaseResponseType,\n\t\t\t\tTBasePluginArray,\n\t\t\t\tTBaseSchemas\n\t\t\t>);\n\nexport type CallApiConfig<\n\tTData = DefaultDataType,\n\tTErrorData = DefaultDataType,\n\tTResultMode extends ResultModeUnion = ResultModeUnion,\n\tTThrowOnError extends boolean = DefaultThrowOnError,\n\tTResponseType extends ResponseTypeUnion = ResponseTypeUnion,\n\tTPluginArray extends CallApiPlugin[] = DefaultPluginArray,\n\tTSchemas extends CallApiSchemas = DefaultMoreOptions,\n> = CallApiRequestOptions<TSchemas> // eslint-disable-next-line perfectionist/sort-intersection-types -- Allow these to be last for the sake of docs\n\t& CallApiExtraOptions<\n\t\tTData,\n\t\tTErrorData,\n\t\tTResultMode,\n\t\tTThrowOnError,\n\t\tTResponseType,\n\t\tTPluginArray,\n\t\tTSchemas\n\t>;\n\nexport type CallApiParameters<\n\tTData = DefaultDataType,\n\tTErrorData = DefaultDataType,\n\tTResultMode extends ResultModeUnion = ResultModeUnion,\n\tTThrowOnError extends boolean = DefaultThrowOnError,\n\tTResponseType extends ResponseTypeUnion = ResponseTypeUnion,\n\tTPluginArray extends CallApiPlugin[] = DefaultPluginArray,\n\tTSchemas extends CallApiSchemas = DefaultMoreOptions,\n> = [\n\tinitURL: InferSchemaResult<TSchemas[\"initURL\"], InitURL>,\n\tconfig?: CallApiConfig<\n\t\tTData,\n\t\tTErrorData,\n\t\tTResultMode,\n\t\tTThrowOnError,\n\t\tTResponseType,\n\t\tTPluginArray,\n\t\tTSchemas\n\t>,\n];\n\nexport type CallApiResultSuccessVariant<TData> = {\n\tdata: TData;\n\terror: null;\n\tresponse: Response;\n};\n\nexport type CallApiResultErrorVariant<TErrorData> =\n\t| {\n\t\t\tdata: null;\n\t\t\terror: PossibleHTTPError<TErrorData>;\n\t\t\tresponse: Response;\n\t }\n\t| {\n\t\t\tdata: null;\n\t\t\terror: PossibleJavaScriptError;\n\t\t\tresponse: null;\n\t };\n\nexport type CallApiResult<\n\tTData,\n\tTErrorData,\n\tTResultMode extends ResultModeUnion,\n\tTThrowOnError extends boolean,\n\tTResponseType extends ResponseTypeUnion,\n> = Promise<GetCallApiResult<TData, TErrorData, TResultMode, TThrowOnError, TResponseType>>;\n","import { getAuthHeader } from \"../auth\";\nimport { fetchSpecificKeys } from \"../constants/common\";\nimport {\n\ttype BaseCallApiExtraOptions,\n\ttype CallApiExtraOptions,\n\ttype CallApiRequestOptions,\n\toptionsEnumToOmitFromBase,\n} from \"../types/common\";\nimport { isFunction, isJsonString, isPlainObject, isQueryString, isSerializable } from \"./guards\";\n\nexport const omitKeys = <\n\tTObject extends Record<string, unknown>,\n\tconst TOmitArray extends Array<keyof TObject>,\n>(\n\tinitialObject: TObject,\n\tkeysToOmit: TOmitArray\n) => {\n\tconst updatedObject = {} as Record<string, unknown>;\n\n\tconst keysToOmitSet = new Set(keysToOmit);\n\n\tfor (const [key, value] of Object.entries(initialObject)) {\n\t\tif (!keysToOmitSet.has(key)) {\n\t\t\tupdatedObject[key] = value;\n\t\t}\n\t}\n\n\treturn updatedObject as Omit<TObject, TOmitArray[number]>;\n};\n\nexport const pickKeys = <\n\tTObject extends Record<string, unknown>,\n\tconst TPickArray extends Array<keyof TObject>,\n>(\n\tinitialObject: TObject,\n\tkeysToPick: TPickArray\n) => {\n\tconst updatedObject = {} as Record<string, unknown>;\n\n\tconst keysToPickSet = new Set(keysToPick);\n\n\tfor (const [key, value] of Object.entries(initialObject)) {\n\t\tif (keysToPickSet.has(key)) {\n\t\t\tupdatedObject[key] = value;\n\t\t}\n\t}\n\n\treturn updatedObject as Pick<TObject, TPickArray[number]>;\n};\n\n// eslint-disable-next-line ts-eslint/no-explicit-any -- Any is required here so that one can pass custom function type without type errors\nexport const splitBaseConfig = (baseConfig: Record<string, any>) =>\n\t[\n\t\tpickKeys(baseConfig, fetchSpecificKeys) as CallApiRequestOptions,\n\t\tomitKeys(baseConfig, [\n\t\t\t...fetchSpecificKeys,\n\t\t\t...optionsEnumToOmitFromBase,\n\t\t]) as BaseCallApiExtraOptions,\n\t] as const;\n\n// eslint-disable-next-line ts-eslint/no-explicit-any -- Any is required here so that one can pass custom function type without type errors\nexport const splitConfig = (config: Record<string, any>) =>\n\t[\n\t\tpickKeys(config, fetchSpecificKeys) as CallApiRequestOptions,\n\t\tomitKeys(config, fetchSpecificKeys) as CallApiExtraOptions,\n\t] as const;\n\ntype ToQueryStringFn = {\n\t(params: CallApiExtraOptions[\"query\"]): string | null;\n\t(params: Required<CallApiExtraOptions>[\"query\"]): string;\n};\n\nexport const toQueryString: ToQueryStringFn = (params) => {\n\tif (!params) {\n\t\tconsole.error(\"toQueryString:\", \"No query params provided!\");\n\n\t\treturn null as never;\n\t}\n\n\treturn new URLSearchParams(params as Record<string, string>).toString();\n};\n\nexport const objectifyHeaders = (headers: CallApiRequestOptions[\"headers\"]) => {\n\tif (!headers || isPlainObject(headers)) {\n\t\treturn headers;\n\t}\n\n\treturn Object.fromEntries(headers);\n};\n\ntype MergeAndResolveHeadersOptions = {\n\tauth: CallApiExtraOptions[\"auth\"];\n\tbaseHeaders?: CallApiRequestOptions[\"headers\"];\n\tbody: CallApiRequestOptions[\"body\"];\n\theaders: CallApiRequestOptions[\"headers\"];\n};\n\nexport const mergeAndResolveHeaders = (options: MergeAndResolveHeadersOptions) => {\n\tconst { auth, baseHeaders, body, headers } = options;\n\n\t// eslint-disable-next-line ts-eslint/prefer-nullish-coalescing -- Nullish coalescing makes no sense in this boolean context\n\tconst shouldResolveHeaders = Boolean(baseHeaders || headers || body || auth);\n\n\t// == Return early if any of the following conditions are not met (so that native fetch would auto set the correct headers):\n\t// == - headers are provided\n\t// == - The body is an object\n\t// == - The auth option is provided\n\tif (!shouldResolveHeaders) return;\n\n\tconst headersObject: Record<string, string | undefined> = {\n\t\t...getAuthHeader(auth),\n\t\t...objectifyHeaders(baseHeaders),\n\t\t...objectifyHeaders(headers),\n\t};\n\n\tif (isQueryString(body)) {\n\t\theadersObject[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\n\n\t\treturn headersObject;\n\t}\n\n\tif (isSerializable(body) || isJsonString(body)) {\n\t\theadersObject[\"Content-Type\"] = \"application/json\";\n\t\theadersObject.Accept = \"application/json\";\n\t}\n\n\treturn headersObject;\n};\n\nexport const getFetchImpl = (customFetchImpl: CallApiExtraOptions[\"customFetchImpl\"]) => {\n\tif (customFetchImpl) {\n\t\treturn customFetchImpl;\n\t}\n\n\tif (typeof globalThis !== \"undefined\" && isFunction(globalThis.fetch)) {\n\t\treturn globalThis.fetch;\n\t}\n\n\tthrow new Error(\"No fetch implementation found\");\n};\n\nconst PromiseWithResolvers = () => {\n\tlet reject!: (reason?: unknown) => void;\n\tlet resolve!: (value: unknown) => void;\n\n\tconst promise = new Promise((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\n\treturn { promise, reject, resolve };\n};\n\nexport const waitUntil = (delay: number) => {\n\tif (delay === 0) return;\n\n\tconst { promise, resolve } = PromiseWithResolvers();\n\n\tsetTimeout(resolve, delay);\n\n\treturn promise;\n};\n\nexport const createCombinedSignal = (...signals: Array<AbortSignal | null | undefined>) =>\n\tAbortSignal.any(signals.filter(Boolean));\n\nexport const createTimeoutSignal = (milliseconds: number) => AbortSignal.timeout(milliseconds);\n"]}
|
@@ -47,6 +47,8 @@ type CustomAuth = {
|
|
47
47
|
};
|
48
48
|
type Auth = BearerOrTokenAuth | BasicAuth | CustomAuth;
|
49
49
|
|
50
|
+
declare const fetchSpecificKeys: (keyof RequestInit | "duplex")[];
|
51
|
+
|
50
52
|
type AnyString = string & {
|
51
53
|
z_placeholder?: never;
|
52
54
|
};
|
@@ -66,7 +68,7 @@ type CommonAuthorizationHeaders = `${"Basic" | "Bearer" | "Token"} ${string}`;
|
|
66
68
|
type CommonContentTypes = "application/epub+zip" | "application/gzip" | "application/json" | "application/ld+json" | "application/octet-stream" | "application/ogg" | "application/pdf" | "application/rtf" | "application/vnd.ms-fontobject" | "application/wasm" | "application/xhtml+xml" | "application/xml" | "application/zip" | "audio/aac" | "audio/mpeg" | "audio/ogg" | "audio/opus" | "audio/webm" | "audio/x-midi" | "font/otf" | "font/ttf" | "font/woff" | "font/woff2" | "image/avif" | "image/bmp" | "image/gif" | "image/jpeg" | "image/png" | "image/svg+xml" | "image/tiff" | "image/webp" | "image/x-icon" | "model/gltf-binary" | "model/gltf+json" | "text/calendar" | "text/css" | "text/csv" | "text/html" | "text/javascript" | "text/plain" | "video/3gpp" | "video/3gpp2" | "video/av1" | "video/mp2t" | "video/mp4" | "video/mpeg" | "video/ogg" | "video/webm" | "video/x-msvideo" | AnyString;
|
67
69
|
|
68
70
|
type ErrorDetails<TErrorResponse> = {
|
69
|
-
defaultErrorMessage:
|
71
|
+
defaultErrorMessage: CallApiExtraOptions["defaultErrorMessage"];
|
70
72
|
errorData: TErrorResponse;
|
71
73
|
response: Response;
|
72
74
|
};
|
@@ -93,6 +95,30 @@ type PossibleHTTPError<TErrorData> = UnmaskType<{
|
|
93
95
|
name: "HTTPError";
|
94
96
|
}>;
|
95
97
|
|
98
|
+
type StreamProgressEvent = {
|
99
|
+
/**
|
100
|
+
* Current chunk of data being streamed
|
101
|
+
*/
|
102
|
+
chunk: Uint8Array;
|
103
|
+
/**
|
104
|
+
* Progress in percentage
|
105
|
+
*/
|
106
|
+
progress: number;
|
107
|
+
/**
|
108
|
+
* Total size of data in bytes
|
109
|
+
*/
|
110
|
+
totalBytes: number;
|
111
|
+
/**
|
112
|
+
* Amount of data transferred so far
|
113
|
+
*/
|
114
|
+
transferredBytes: number;
|
115
|
+
};
|
116
|
+
declare global {
|
117
|
+
interface ReadableStream<R> {
|
118
|
+
[Symbol.asyncIterator]: () => AsyncIterableIterator<R>;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
96
122
|
/**
|
97
123
|
* The Standard Schema interface.
|
98
124
|
* @see https://github.com/standard-schema/standard-schema
|
@@ -192,24 +218,6 @@ declare namespace StandardSchemaV1 {
|
|
192
218
|
type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
|
193
219
|
}
|
194
220
|
|
195
|
-
type Params = UnmaskType<Record<string, boolean | number | string> | Array<boolean | number | string>>;
|
196
|
-
type Query = UnmaskType<Record<string, boolean | number | string>>;
|
197
|
-
type InitURL = UnmaskType<string | URL>;
|
198
|
-
interface UrlOptions<TSchemas extends CallApiSchemas> {
|
199
|
-
/**
|
200
|
-
* URL to be used in the request.
|
201
|
-
*/
|
202
|
-
readonly initURL?: string;
|
203
|
-
/**
|
204
|
-
* Parameters to be appended to the URL (i.e: /:id)
|
205
|
-
*/
|
206
|
-
params?: InferSchemaResult<TSchemas["params"], Params>;
|
207
|
-
/**
|
208
|
-
* Query parameters to append to the URL.
|
209
|
-
*/
|
210
|
-
query?: InferSchemaResult<TSchemas["query"], Query>;
|
211
|
-
}
|
212
|
-
|
213
221
|
interface CallApiSchemas {
|
214
222
|
/**
|
215
223
|
* The schema to use for validating the request body.
|
@@ -261,56 +269,36 @@ interface CallApiValidators<TData = unknown, TErrorData = unknown> {
|
|
261
269
|
}
|
262
270
|
type InferSchemaResult<TSchema, TData> = TSchema extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<TSchema> : TData;
|
263
271
|
|
264
|
-
type
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
formData: () => Promise<FormData>;
|
269
|
-
json: () => Promise<TResponse>;
|
270
|
-
stream: () => ReadableStream<Uint8Array<ArrayBufferLike>> | null;
|
271
|
-
text: () => Promise<string>;
|
272
|
-
};
|
273
|
-
type InitResponseTypeMap<TResponse = unknown> = ReturnType<typeof getResponseType<TResponse>>;
|
274
|
-
type ResponseTypeUnion = keyof InitResponseTypeMap | undefined;
|
275
|
-
type ResponseTypeMap<TResponse> = {
|
276
|
-
[Key in keyof InitResponseTypeMap<TResponse>]: Awaited<ReturnType<InitResponseTypeMap<TResponse>[Key]>>;
|
277
|
-
};
|
278
|
-
type GetResponseType<TResponse, TResponseType extends ResponseTypeUnion, TComputedMap extends ResponseTypeMap<TResponse> = ResponseTypeMap<TResponse>> = undefined extends TResponseType ? TComputedMap["json"] : TResponseType extends NonNullable<ResponseTypeUnion> ? TComputedMap[TResponseType] : never;
|
279
|
-
|
280
|
-
type StreamProgressEvent = {
|
281
|
-
/**
|
282
|
-
* Current chunk of data being streamed
|
283
|
-
*/
|
284
|
-
chunk: Uint8Array;
|
272
|
+
type Params = UnmaskType<Record<string, boolean | number | string> | Array<boolean | number | string>>;
|
273
|
+
type Query = UnmaskType<Record<string, boolean | number | string>>;
|
274
|
+
type InitURL = UnmaskType<string | URL>;
|
275
|
+
interface UrlOptions<TSchemas extends CallApiSchemas> {
|
285
276
|
/**
|
286
|
-
*
|
277
|
+
* URL to be used in the request.
|
287
278
|
*/
|
288
|
-
|
279
|
+
readonly initURL?: string;
|
289
280
|
/**
|
290
|
-
*
|
281
|
+
* Parameters to be appended to the URL (i.e: /:id)
|
291
282
|
*/
|
292
|
-
|
283
|
+
params?: InferSchemaResult<TSchemas["params"], Params>;
|
293
284
|
/**
|
294
|
-
*
|
285
|
+
* Query parameters to append to the URL.
|
295
286
|
*/
|
296
|
-
|
297
|
-
};
|
298
|
-
declare global {
|
299
|
-
interface ReadableStream<R> {
|
300
|
-
[Symbol.asyncIterator]: () => AsyncIterableIterator<R>;
|
301
|
-
}
|
287
|
+
query?: InferSchemaResult<TSchemas["query"], Query>;
|
302
288
|
}
|
303
289
|
|
304
290
|
type UnionToIntersection<TUnion> = (TUnion extends unknown ? (param: TUnion) => void : never) extends (param: infer TParam) => void ? TParam : never;
|
305
291
|
type InferSchema<TResult> = TResult extends StandardSchemaV1 ? InferSchemaResult<TResult, NonNullable<unknown>> : TResult;
|
306
292
|
type InferPluginOptions<TPluginArray extends CallApiPlugin[]> = UnionToIntersection<InferSchema<ReturnType<NonNullable<TPluginArray[number]["createExtraOptions"]>>>>;
|
307
|
-
type PluginInitContext<TMoreOptions = DefaultMoreOptions> = Prettify<SharedHookContext
|
293
|
+
type PluginInitContext<TMoreOptions = DefaultMoreOptions> = Prettify<SharedHookContext<TMoreOptions> & {
|
308
294
|
initURL: InitURL | undefined;
|
309
295
|
}>;
|
310
296
|
type PluginInitResult = Partial<Omit<PluginInitContext, "request"> & {
|
311
297
|
request: CallApiRequestOptions;
|
312
298
|
}>;
|
313
|
-
|
299
|
+
type PluginHooksWithMoreOptions<TMoreOptions = DefaultMoreOptions> = HooksOrHooksArray<never, never, TMoreOptions>;
|
300
|
+
type PluginHooks<TData = never, TErrorData = never, TMoreOptions = DefaultMoreOptions> = HooksOrHooksArray<TData, TErrorData, TMoreOptions>;
|
301
|
+
interface CallApiPlugin {
|
314
302
|
/**
|
315
303
|
* Defines additional options that can be passed to callApi
|
316
304
|
*/
|
@@ -322,7 +310,7 @@ interface CallApiPlugin<TData = never, TErrorData = never> {
|
|
322
310
|
/**
|
323
311
|
* Hooks / Interceptors for the plugin
|
324
312
|
*/
|
325
|
-
hooks?:
|
313
|
+
hooks?: PluginHooks;
|
326
314
|
/**
|
327
315
|
* A unique id for the plugin
|
328
316
|
*/
|
@@ -390,10 +378,10 @@ type Hooks<TData = DefaultDataType, TErrorData = DefaultDataType, TMoreOptions =
|
|
390
378
|
*/
|
391
379
|
onSuccess?: (context: Prettify<SuccessContext<TData> & WithMoreOptions<TMoreOptions>>) => Awaitable<unknown>;
|
392
380
|
};
|
393
|
-
type
|
381
|
+
type HooksOrHooksArray<TData = DefaultDataType, TErrorData = DefaultDataType, TMoreOptions = DefaultMoreOptions> = {
|
394
382
|
[Key in keyof Hooks<TData, TErrorData, TMoreOptions>]: Hooks<TData, TErrorData, TMoreOptions>[Key] | Array<Hooks<TData, TErrorData, TMoreOptions>[Key]>;
|
395
383
|
};
|
396
|
-
type SharedHookContext = {
|
384
|
+
type SharedHookContext<TMoreOptions = DefaultMoreOptions> = {
|
397
385
|
/**
|
398
386
|
* Config object passed to createFetchClient
|
399
387
|
*/
|
@@ -406,7 +394,7 @@ type SharedHookContext = {
|
|
406
394
|
* Merged options consisting of extra options from createFetchClient, the callApi instance and default options.
|
407
395
|
*
|
408
396
|
*/
|
409
|
-
options: CombinedCallApiExtraOptions
|
397
|
+
options: CombinedCallApiExtraOptions & Partial<TMoreOptions>;
|
410
398
|
/**
|
411
399
|
* Merged request consisting of request options from createFetchClient, the callApi instance and default request options.
|
412
400
|
*/
|
@@ -450,13 +438,60 @@ type ResponseStreamContext = UnmaskType<Prettify<SharedHookContext & {
|
|
450
438
|
response: Response;
|
451
439
|
}>>;
|
452
440
|
|
441
|
+
type Parser = (responseString: string) => Awaitable<Record<string, unknown>>;
|
442
|
+
declare const getResponseType: <TResponse>(response: Response, parser: Parser) => {
|
443
|
+
arrayBuffer: () => Promise<ArrayBuffer>;
|
444
|
+
blob: () => Promise<Blob>;
|
445
|
+
formData: () => Promise<FormData>;
|
446
|
+
json: () => Promise<TResponse>;
|
447
|
+
stream: () => ReadableStream<Uint8Array<ArrayBufferLike>> | null;
|
448
|
+
text: () => Promise<string>;
|
449
|
+
};
|
450
|
+
type InitResponseTypeMap<TResponse = unknown> = ReturnType<typeof getResponseType<TResponse>>;
|
451
|
+
type ResponseTypeUnion = keyof InitResponseTypeMap | null;
|
452
|
+
type ResponseTypeMap<TResponse> = {
|
453
|
+
[Key in keyof InitResponseTypeMap<TResponse>]: Awaited<ReturnType<InitResponseTypeMap<TResponse>[Key]>>;
|
454
|
+
};
|
455
|
+
type GetResponseType<TResponse, TResponseType extends ResponseTypeUnion, TComputedResponseTypeMap extends ResponseTypeMap<TResponse> = ResponseTypeMap<TResponse>> = null extends TResponseType ? TComputedResponseTypeMap["json"] : TResponseType extends NonNullable<ResponseTypeUnion> ? TComputedResponseTypeMap[TResponseType] : never;
|
456
|
+
type ResultModeMap<TData = DefaultDataType, TErrorData = DefaultDataType, TResponseType extends ResponseTypeUnion = ResponseTypeUnion, TComputedData = GetResponseType<TData, TResponseType>, TComputedErrorData = GetResponseType<TErrorData, TResponseType>> = UnmaskType<{
|
457
|
+
all: CallApiResultSuccessVariant<TComputedData> | CallApiResultErrorVariant<TComputedErrorData>;
|
458
|
+
allWithException: CallApiResultSuccessVariant<TComputedData>;
|
459
|
+
allWithoutResponse: CallApiResultSuccessVariant<TComputedData>["data" | "error"] | CallApiResultErrorVariant<TComputedErrorData>["data" | "error"];
|
460
|
+
onlyError: CallApiResultSuccessVariant<TComputedData>["error"] | CallApiResultErrorVariant<TComputedErrorData>["error"];
|
461
|
+
onlyResponse: CallApiResultErrorVariant<TComputedErrorData>["response"] | CallApiResultSuccessVariant<TComputedData>["response"];
|
462
|
+
onlyResponseWithException: CallApiResultSuccessVariant<TComputedData>["response"];
|
463
|
+
onlySuccess: CallApiResultErrorVariant<TComputedErrorData>["data"] | CallApiResultSuccessVariant<TComputedData>["data"];
|
464
|
+
onlySuccessWithException: CallApiResultSuccessVariant<TComputedData>["data"];
|
465
|
+
}>;
|
466
|
+
type ResultModeUnion = keyof ResultModeMap | null;
|
467
|
+
type GetCallApiResult<TData, TErrorData, TResultMode extends ResultModeUnion, TThrowOnError extends boolean, TResponseType extends ResponseTypeUnion> = TErrorData extends false | undefined ? ResultModeMap<TData, TErrorData, TResponseType>["onlySuccessWithException"] : null extends TResultMode ? TThrowOnError extends true ? ResultModeMap<TData, TErrorData, TResponseType>["allWithException"] : ResultModeMap<TData, TErrorData, TResponseType>["all"] : TResultMode extends NonNullable<ResultModeUnion> ? TResultMode extends "onlySuccess" ? ResultModeMap<TData, TErrorData, TResponseType>["onlySuccessWithException"] : TResultMode extends "onlyResponse" ? ResultModeMap<TData, TErrorData, TResponseType>["onlyResponseWithException"] : ResultModeMap<TData, TErrorData, TResponseType>[TResultMode] : never;
|
468
|
+
|
469
|
+
declare const defaultRetryStatusCodesLookup: {
|
470
|
+
408: "Request Timeout";
|
471
|
+
409: "Conflict";
|
472
|
+
425: "Too Early";
|
473
|
+
429: "Too Many Requests";
|
474
|
+
500: "Internal Server Error";
|
475
|
+
502: "Bad Gateway";
|
476
|
+
503: "Service Unavailable";
|
477
|
+
504: "Gateway Timeout";
|
478
|
+
};
|
479
|
+
|
453
480
|
type RetryCondition<TErrorData> = (context: ErrorContext<TErrorData>) => Awaitable<boolean>;
|
481
|
+
type InnerRetryKeys<TErrorData> = Exclude<keyof RetryOptions<TErrorData>, "~retryCount" | "retry">;
|
482
|
+
type InnerRetryOptions<TErrorData> = UnmaskType<{
|
483
|
+
[Key in InnerRetryKeys<TErrorData> as Key extends `retry${infer TRest}` ? Uncapitalize<TRest> extends "attempts" ? never : Uncapitalize<TRest> : Key]?: RetryOptions<TErrorData>[Key];
|
484
|
+
} & {
|
485
|
+
attempts: NonNullable<RetryOptions<TErrorData>["retryAttempts"]>;
|
486
|
+
}>;
|
487
|
+
type RetryStatusCodes = UnmaskType<Array<keyof typeof defaultRetryStatusCodesLookup | AnyNumber>>;
|
454
488
|
interface RetryOptions<TErrorData> {
|
455
489
|
/**
|
456
490
|
* Keeps track of the number of times the request has already been retried
|
457
491
|
* @deprecated This property is used internally to track retries. Please abstain from modifying it.
|
458
492
|
*/
|
459
|
-
readonly ["~
|
493
|
+
readonly ["~retryAttemptCount"]?: number;
|
494
|
+
retry?: InnerRetryOptions<TErrorData>;
|
460
495
|
/**
|
461
496
|
* Number of allowed retry attempts on HTTP errors
|
462
497
|
* @default 0
|
@@ -470,7 +505,7 @@ interface RetryOptions<TErrorData> {
|
|
470
505
|
* Delay between retries in milliseconds
|
471
506
|
* @default 1000
|
472
507
|
*/
|
473
|
-
retryDelay?: number;
|
508
|
+
retryDelay?: number | ((currentAttemptCount: number) => number);
|
474
509
|
/**
|
475
510
|
* Maximum delay in milliseconds. Only applies to exponential strategy
|
476
511
|
* @default 10000
|
@@ -483,9 +518,8 @@ interface RetryOptions<TErrorData> {
|
|
483
518
|
retryMethods?: Method[];
|
484
519
|
/**
|
485
520
|
* HTTP status codes that trigger a retry
|
486
|
-
* @default [409, 425, 429, 500, 502, 503, 504]
|
487
521
|
*/
|
488
|
-
retryStatusCodes?:
|
522
|
+
retryStatusCodes?: RetryStatusCodes;
|
489
523
|
/**
|
490
524
|
* Strategy to use when retrying
|
491
525
|
* @default "linear"
|
@@ -493,30 +527,6 @@ interface RetryOptions<TErrorData> {
|
|
493
527
|
retryStrategy?: "exponential" | "linear";
|
494
528
|
}
|
495
529
|
|
496
|
-
type ModifiedRequestInit = RequestInit & {
|
497
|
-
duplex?: "half";
|
498
|
-
};
|
499
|
-
declare const fetchSpecificKeys: (keyof RequestInit | "duplex")[];
|
500
|
-
declare const getDefaultOptions: () => {
|
501
|
-
baseURL: string;
|
502
|
-
bodySerializer: {
|
503
|
-
(value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
|
504
|
-
(value: any, replacer?: (number | string)[] | null, space?: string | number): string;
|
505
|
-
};
|
506
|
-
dedupeStrategy: "cancel";
|
507
|
-
defaultErrorMessage: string;
|
508
|
-
mergedHooksExecutionMode: "parallel";
|
509
|
-
mergedHooksExecutionOrder: "mainHooksAfterPlugins";
|
510
|
-
responseType: "json";
|
511
|
-
resultMode: "all";
|
512
|
-
retryAttempts: number;
|
513
|
-
retryDelay: number;
|
514
|
-
retryMaxDelay: number;
|
515
|
-
retryMethods: ("GET" | "POST")[];
|
516
|
-
retryStatusCodes: (AnyNumber | 409 | 425 | 429 | 500 | 502 | 503 | 504)[];
|
517
|
-
retryStrategy: "linear";
|
518
|
-
};
|
519
|
-
|
520
530
|
/**
|
521
531
|
* @description Makes a type required if TSchema type is undefined or if the output type of TSchema contains undefined, otherwise keeps it as is
|
522
532
|
*/
|
@@ -581,13 +591,16 @@ type ResultModeOption<TErrorData, TResultMode extends ResultModeUnion> = TErrorD
|
|
581
591
|
resultMode: "onlySuccessWithException";
|
582
592
|
} : TErrorData extends false | undefined ? {
|
583
593
|
resultMode?: "onlySuccessWithException";
|
584
|
-
} :
|
594
|
+
} : null extends TResultMode ? {
|
585
595
|
resultMode?: TResultMode;
|
586
596
|
} : {
|
587
597
|
resultMode: TResultMode;
|
588
598
|
};
|
589
599
|
|
590
600
|
type FetchSpecificKeysUnion = Exclude<(typeof fetchSpecificKeys)[number], "body" | "headers" | "method">;
|
601
|
+
type ModifiedRequestInit = RequestInit & {
|
602
|
+
duplex?: "half";
|
603
|
+
};
|
591
604
|
type CallApiRequestOptions<TSchemas extends CallApiSchemas = DefaultMoreOptions> = Prettify<BodyOption<TSchemas> & HeadersOption<TSchemas> & MethodOption<TSchemas> & Pick<ModifiedRequestInit, FetchSpecificKeysUnion>>;
|
592
605
|
type CallApiRequestOptionsForHooks<TSchemas extends CallApiSchemas = DefaultMoreOptions> = Omit<CallApiRequestOptions<TSchemas>, "headers"> & {
|
593
606
|
headers?: Record<string, string | undefined>;
|
@@ -695,7 +708,7 @@ type ExtraOptions<TData = DefaultDataType, TErrorData = DefaultDataType, TResult
|
|
695
708
|
* Custom validation functions for response validation
|
696
709
|
*/
|
697
710
|
validators?: CallApiValidators<TData, TErrorData>;
|
698
|
-
} &
|
711
|
+
} & HooksOrHooksArray<TData, TErrorData, Partial<InferPluginOptions<TPluginArray>>> & Partial<InferPluginOptions<TPluginArray>> & MetaOption<TSchemas> & RetryOptions<TErrorData> & ResultModeOption<TErrorData, TResultMode> & UrlOptions<TSchemas>;
|
699
712
|
type CallApiExtraOptions<TData = DefaultDataType, TErrorData = DefaultDataType, TResultMode extends ResultModeUnion = ResultModeUnion, TThrowOnError extends boolean = DefaultThrowOnError, TResponseType extends ResponseTypeUnion = ResponseTypeUnion, TPluginArray extends CallApiPlugin[] = DefaultPluginArray, TSchemas extends CallApiSchemas = DefaultMoreOptions> = ExtraOptions<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TPluginArray, TSchemas> & {
|
700
713
|
plugins?: Plugins<TPluginArray> | ((context: {
|
701
714
|
basePlugins: Plugins<TPluginArray>;
|
@@ -731,8 +744,8 @@ type BaseCallApiExtraOptions<TBaseData = DefaultDataType, TBaseErrorData = Defau
|
|
731
744
|
skipAutoMergeFor?: "all" | "options" | "request";
|
732
745
|
};
|
733
746
|
type CombinedExtraOptionsWithoutHooks = Omit<BaseCallApiExtraOptions & CallApiExtraOptions, keyof Hooks>;
|
734
|
-
|
735
|
-
|
747
|
+
interface CombinedCallApiExtraOptions extends CombinedExtraOptionsWithoutHooks, Hooks {
|
748
|
+
}
|
736
749
|
type BaseCallApiConfig<TBaseData = DefaultDataType, TBaseErrorData = DefaultDataType, TBaseResultMode extends ResultModeUnion = ResultModeUnion, TBaseThrowOnError extends boolean = DefaultThrowOnError, TBaseResponseType extends ResponseTypeUnion = ResponseTypeUnion, TBasePluginArray extends CallApiPlugin[] = DefaultPluginArray, TBaseSchemas extends CallApiSchemas = DefaultMoreOptions> = (CallApiRequestOptions<TBaseSchemas> & BaseCallApiExtraOptions<TBaseData, TBaseErrorData, TBaseResultMode, TBaseThrowOnError, TBaseResponseType, TBasePluginArray, TBaseSchemas>) | ((context: {
|
737
750
|
initURL: string;
|
738
751
|
options: CallApiExtraOptions;
|
@@ -757,18 +770,6 @@ type CallApiResultErrorVariant<TErrorData> = {
|
|
757
770
|
error: PossibleJavaScriptError;
|
758
771
|
response: null;
|
759
772
|
};
|
760
|
-
type ResultModeMap<TData = DefaultDataType, TErrorData = DefaultDataType, TResponseType extends ResponseTypeUnion = ResponseTypeUnion, TComputedData = GetResponseType<TData, TResponseType>, TComputedErrorData = GetResponseType<TErrorData, TResponseType>> = UnmaskType<{
|
761
|
-
all: CallApiResultSuccessVariant<TComputedData> | CallApiResultErrorVariant<TComputedErrorData>;
|
762
|
-
allWithException: CallApiResultSuccessVariant<TComputedData>;
|
763
|
-
allWithoutResponse: CallApiResultSuccessVariant<TComputedData>["data" | "error"] | CallApiResultErrorVariant<TComputedErrorData>["data" | "error"];
|
764
|
-
onlyError: CallApiResultSuccessVariant<TComputedData>["error"] | CallApiResultErrorVariant<TComputedErrorData>["error"];
|
765
|
-
onlyResponse: CallApiResultErrorVariant<TComputedErrorData>["response"] | CallApiResultSuccessVariant<TComputedData>["response"];
|
766
|
-
onlyResponseWithException: CallApiResultSuccessVariant<TComputedData>["response"];
|
767
|
-
onlySuccess: CallApiResultErrorVariant<TComputedErrorData>["data"] | CallApiResultSuccessVariant<TComputedData>["data"];
|
768
|
-
onlySuccessWithException: CallApiResultSuccessVariant<TComputedData>["data"];
|
769
|
-
}>;
|
770
|
-
type ResultModeUnion = keyof ResultModeMap | undefined;
|
771
|
-
type GetCallApiResult<TData, TErrorData, TResultMode extends ResultModeUnion, TThrowOnError extends boolean, TResponseType extends ResponseTypeUnion> = TErrorData extends false | undefined ? ResultModeMap<TData, TErrorData, TResponseType>["onlySuccessWithException"] : ResultModeUnion | undefined extends TResultMode ? TThrowOnError extends true ? ResultModeMap<TData, TErrorData, TResponseType>["allWithException"] : ResultModeMap<TData, TErrorData, TResponseType>["all"] : TResultMode extends NonNullable<ResultModeUnion> ? TResultMode extends "onlySuccess" ? ResultModeMap<TData, TErrorData, TResponseType>["onlySuccessWithException"] : TResultMode extends "onlyResponse" ? ResultModeMap<TData, TErrorData, TResponseType>["onlyResponseWithException"] : ResultModeMap<TData, TErrorData, TResponseType>[TResultMode] : never;
|
772
773
|
type CallApiResult<TData, TErrorData, TResultMode extends ResultModeUnion, TThrowOnError extends boolean, TResponseType extends ResponseTypeUnion> = Promise<GetCallApiResult<TData, TErrorData, TResultMode, TThrowOnError, TResponseType>>;
|
773
774
|
|
774
|
-
export { type
|
775
|
+
export { type CallApiRequestOptionsForHooks as A, type BaseCallApiConfig as B, type CallApiPlugin as C, type DefaultPluginArray as D, type ErrorContext as E, type CallApiResultErrorVariant as F, type CallApiResultSuccessVariant as G, HTTPError as H, type InferSchemaResult as I, type CombinedCallApiExtraOptions as J, type Register as K, type PluginInitContext as P, type ResultModeUnion as R, type SharedHookContext as S, type ResponseTypeUnion as a, type CallApiSchemas as b, type CallApiConfig as c, type CallApiResult as d, type DefaultDataType as e, type DefaultThrowOnError as f, type DefaultMoreOptions as g, type CallApiParameters as h, definePlugin as i, type PluginHooks as j, type PluginHooksWithMoreOptions as k, type RetryOptions as l, type PossibleHTTPError as m, type PossibleJavaScriptError as n, type Hooks as o, type HooksOrHooksArray as p, type RequestContext as q, type RequestErrorContext as r, type RequestStreamContext as s, type ResponseContext as t, type ResponseErrorContext as u, type ResponseStreamContext as v, type SuccessContext as w, type BaseCallApiExtraOptions as x, type CallApiExtraOptions as y, type CallApiRequestOptions as z };
|
package/dist/esm/index.d.ts
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
import { R as ResultModeUnion, a as ResponseTypeUnion, C as CallApiPlugin, D as DefaultPluginArray, b as CallApiSchemas, I as InferSchemaResult, c as CallApiConfig, d as CallApiResult, e as DefaultDataType, f as DefaultThrowOnError, g as DefaultMoreOptions, B as BaseCallApiConfig, h as CallApiParameters } from './common-
|
2
|
-
export {
|
1
|
+
import { R as ResultModeUnion, a as ResponseTypeUnion, C as CallApiPlugin, D as DefaultPluginArray, b as CallApiSchemas, I as InferSchemaResult, c as CallApiConfig, d as CallApiResult, e as DefaultDataType, f as DefaultThrowOnError, g as DefaultMoreOptions, B as BaseCallApiConfig, h as CallApiParameters } from './common-BwOrtpui.js';
|
2
|
+
export { x as BaseCallApiExtraOptions, y as CallApiExtraOptions, z as CallApiRequestOptions, A as CallApiRequestOptionsForHooks, F as CallApiResultErrorVariant, G as CallApiResultSuccessVariant, J as CombinedCallApiExtraOptions, E as ErrorContext, H as HTTPError, o as Hooks, p as HooksOrHooksArray, j as PluginHooks, k as PluginHooksWithMoreOptions, P as PluginInitContext, m as PossibleHTTPError, n as PossibleJavaScriptError, K as Register, q as RequestContext, r as RequestErrorContext, s as RequestStreamContext, t as ResponseContext, u as ResponseErrorContext, v as ResponseStreamContext, l as RetryOptions, S as SharedHookContext, w as SuccessContext, i as definePlugin } from './common-BwOrtpui.js';
|
3
3
|
|
4
4
|
declare const createFetchClient: <TBaseData = DefaultDataType, TBaseErrorData = DefaultDataType, TBaseResultMode extends ResultModeUnion = ResultModeUnion, TBaseThrowOnError extends boolean = DefaultThrowOnError, TBaseResponseType extends ResponseTypeUnion = ResponseTypeUnion, TBasePluginArray extends CallApiPlugin[] = DefaultPluginArray, TBaseSchemas extends CallApiSchemas = DefaultMoreOptions>(initBaseConfig?: BaseCallApiConfig<TBaseData, TBaseErrorData, TBaseResultMode, TBaseThrowOnError, TBaseResponseType, TBasePluginArray, TBaseSchemas>) => <TData = InferSchemaResult<TBaseSchemas["data"], TBaseData>, TErrorData = InferSchemaResult<TBaseSchemas["errorData"], TBaseErrorData>, TResultMode extends ResultModeUnion = TBaseResultMode, TThrowOnError extends boolean = TBaseThrowOnError, TResponseType extends ResponseTypeUnion = TBaseResponseType, TPluginArray extends CallApiPlugin[] = TBasePluginArray, TSchemas extends CallApiSchemas = TBaseSchemas>(initURL: InferSchemaResult<TSchemas["initURL"], string | URL>, config?: CallApiConfig<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TPluginArray, TSchemas> | undefined) => CallApiResult<InferSchemaResult<TSchemas["data"], TData>, InferSchemaResult<TSchemas["errorData"], TErrorData>, TResultMode, TThrowOnError, TResponseType>;
|
5
5
|
declare const callApi: <TData = unknown, TErrorData = unknown, TResultMode extends ResultModeUnion = ResultModeUnion, TThrowOnError extends boolean = boolean, TResponseType extends ResponseTypeUnion = ResponseTypeUnion, TPluginArray extends CallApiPlugin[] = DefaultPluginArray, TSchemas extends CallApiSchemas = {}>(initURL: InferSchemaResult<TSchemas["initURL"], string | URL>, config?: CallApiConfig<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TPluginArray, TSchemas> | undefined) => CallApiResult<InferSchemaResult<TSchemas["data"], TData>, InferSchemaResult<TSchemas["errorData"], TErrorData>, TResultMode, TThrowOnError, TResponseType>;
|
6
6
|
|
7
7
|
declare const defineParameters: <TData = unknown, TErrorData = unknown, TResultMode extends ResultModeUnion = ResultModeUnion, TThrowOnError extends boolean = DefaultThrowOnError, TResponseType extends ResponseTypeUnion = ResponseTypeUnion, TPluginArray extends CallApiPlugin[] = DefaultPluginArray, TSchemas extends CallApiSchemas = DefaultMoreOptions>(...parameters: CallApiParameters<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TPluginArray, TSchemas>) => CallApiParameters<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TPluginArray, TSchemas>;
|
8
8
|
|
9
|
-
export { CallApiParameters, CallApiPlugin, CallApiSchemas, InferSchemaResult, ResultModeUnion, callApi, createFetchClient, defineParameters };
|
9
|
+
export { CallApiParameters, CallApiPlugin, CallApiResult, CallApiSchemas, InferSchemaResult, ResponseTypeUnion, ResultModeUnion, callApi, createFetchClient, defineParameters };
|