@roarkanalytics/sdk 2.21.1 → 2.22.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/CHANGELOG.md +16 -0
- package/README.md +78 -46
- package/api-promise.d.mts +1 -46
- package/api-promise.d.mts.map +1 -1
- package/api-promise.d.ts +1 -46
- package/api-promise.d.ts.map +1 -1
- package/api-promise.js +3 -81
- package/api-promise.js.map +1 -1
- package/api-promise.mjs +1 -79
- package/api-promise.mjs.map +1 -1
- package/client.d.mts +25 -30
- package/client.d.mts.map +1 -1
- package/client.d.ts +25 -30
- package/client.d.ts.map +1 -1
- package/client.js +150 -132
- package/client.js.map +1 -1
- package/client.mjs +145 -104
- package/client.mjs.map +1 -1
- package/core/api-promise.d.mts +46 -0
- package/core/api-promise.d.mts.map +1 -0
- package/core/api-promise.d.ts +46 -0
- package/core/api-promise.d.ts.map +1 -0
- package/core/api-promise.js +74 -0
- package/core/api-promise.js.map +1 -0
- package/core/api-promise.mjs +70 -0
- package/core/api-promise.mjs.map +1 -0
- package/core/error.d.mts +46 -0
- package/core/error.d.mts.map +1 -0
- package/core/error.d.ts +46 -0
- package/core/error.d.ts.map +1 -0
- package/core/error.js +113 -0
- package/core/error.js.map +1 -0
- package/core/error.mjs +97 -0
- package/core/error.mjs.map +1 -0
- package/core/resource.d.mts +6 -0
- package/core/resource.d.mts.map +1 -0
- package/core/resource.d.ts +6 -0
- package/core/resource.d.ts.map +1 -0
- package/core/resource.js +11 -0
- package/core/resource.js.map +1 -0
- package/core/resource.mjs +7 -0
- package/core/resource.mjs.map +1 -0
- package/core/uploads.d.mts +3 -0
- package/core/uploads.d.mts.map +1 -0
- package/core/uploads.d.ts +3 -0
- package/core/uploads.d.ts.map +1 -0
- package/core/uploads.js +6 -0
- package/core/uploads.js.map +1 -0
- package/core/uploads.mjs +2 -0
- package/core/uploads.mjs.map +1 -0
- package/error.d.mts +1 -46
- package/error.d.mts.map +1 -1
- package/error.d.ts +1 -46
- package/error.d.ts.map +1 -1
- package/error.js +3 -110
- package/error.js.map +1 -1
- package/error.mjs +1 -96
- package/error.mjs.map +1 -1
- package/index.d.mts +6 -6
- package/index.d.ts +3 -3
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/index.mjs +3 -3
- package/internal/builtin-types.d.mts +11 -3
- package/internal/builtin-types.d.mts.map +1 -1
- package/internal/builtin-types.d.ts +11 -3
- package/internal/builtin-types.d.ts.map +1 -1
- package/internal/detect-platform.js +3 -3
- package/internal/detect-platform.js.map +1 -1
- package/internal/detect-platform.mjs +3 -3
- package/internal/detect-platform.mjs.map +1 -1
- package/internal/errors.d.mts.map +1 -1
- package/internal/errors.d.ts.map +1 -1
- package/internal/errors.js +17 -2
- package/internal/errors.js.map +1 -1
- package/internal/errors.mjs +15 -0
- package/internal/errors.mjs.map +1 -1
- package/internal/headers.d.mts +1 -2
- package/internal/headers.d.mts.map +1 -1
- package/internal/headers.d.ts +1 -2
- package/internal/headers.d.ts.map +1 -1
- package/internal/headers.js +7 -5
- package/internal/headers.js.map +1 -1
- package/internal/headers.mjs +7 -5
- package/internal/headers.mjs.map +1 -1
- package/internal/parse.d.mts +3 -1
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts +3 -1
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.js +33 -21
- package/internal/parse.js.map +1 -1
- package/internal/parse.mjs +33 -20
- package/internal/parse.mjs.map +1 -1
- package/internal/qs/formats.d.mts +1 -0
- package/internal/qs/formats.d.mts.map +1 -1
- package/internal/qs/formats.d.ts +1 -0
- package/internal/qs/formats.d.ts.map +1 -1
- package/internal/qs/formats.js +4 -2
- package/internal/qs/formats.js.map +1 -1
- package/internal/qs/formats.mjs +2 -1
- package/internal/qs/formats.mjs.map +1 -1
- package/internal/qs/stringify.d.mts.map +1 -1
- package/internal/qs/stringify.d.ts.map +1 -1
- package/internal/qs/stringify.js +16 -19
- package/internal/qs/stringify.js.map +1 -1
- package/internal/qs/stringify.mjs +17 -19
- package/internal/qs/stringify.mjs.map +1 -1
- package/internal/qs/utils.d.mts +1 -0
- package/internal/qs/utils.d.mts.map +1 -1
- package/internal/qs/utils.d.ts +1 -0
- package/internal/qs/utils.d.ts.map +1 -1
- package/internal/qs/utils.js +22 -21
- package/internal/qs/utils.js.map +1 -1
- package/internal/qs/utils.mjs +12 -12
- package/internal/qs/utils.mjs.map +1 -1
- package/internal/request-options.d.mts +43 -2
- package/internal/request-options.d.mts.map +1 -1
- package/internal/request-options.d.ts +43 -2
- package/internal/request-options.d.ts.map +1 -1
- package/internal/request-options.js +1 -26
- package/internal/request-options.js.map +1 -1
- package/internal/request-options.mjs +0 -24
- package/internal/request-options.mjs.map +1 -1
- package/internal/shim-types.d.mts +11 -22
- package/internal/shim-types.d.mts.map +1 -0
- package/internal/shim-types.d.ts +11 -22
- package/internal/shim-types.d.ts.map +1 -0
- package/internal/shim-types.js +4 -0
- package/internal/shim-types.js.map +1 -0
- package/internal/shim-types.mjs +3 -0
- package/internal/shim-types.mjs.map +1 -0
- package/internal/shims.d.mts +7 -48
- package/internal/shims.d.mts.map +1 -1
- package/internal/shims.d.ts +7 -48
- package/internal/shims.d.ts.map +1 -1
- package/internal/shims.js +21 -30
- package/internal/shims.js.map +1 -1
- package/internal/shims.mjs +16 -23
- package/internal/shims.mjs.map +1 -1
- package/internal/to-file.d.mts +45 -0
- package/internal/to-file.d.mts.map +1 -0
- package/internal/to-file.d.ts +45 -0
- package/internal/to-file.d.ts.map +1 -0
- package/internal/to-file.js +91 -0
- package/internal/to-file.js.map +1 -0
- package/internal/to-file.mjs +88 -0
- package/internal/to-file.mjs.map +1 -0
- package/internal/tslib.js +81 -0
- package/internal/tslib.mjs +17 -0
- package/internal/types.d.mts +14 -13
- package/internal/types.d.mts.map +1 -1
- package/internal/types.d.ts +14 -13
- package/internal/types.d.ts.map +1 -1
- package/internal/uploads.d.mts +16 -47
- package/internal/uploads.d.mts.map +1 -1
- package/internal/uploads.d.ts +16 -47
- package/internal/uploads.d.ts.map +1 -1
- package/internal/uploads.js +41 -108
- package/internal/uploads.js.map +1 -1
- package/internal/uploads.mjs +39 -108
- package/internal/uploads.mjs.map +1 -1
- package/internal/utils/base64.d.mts.map +1 -1
- package/internal/utils/base64.d.ts.map +1 -1
- package/internal/utils/base64.js +13 -8
- package/internal/utils/base64.js.map +1 -1
- package/internal/utils/base64.mjs +13 -8
- package/internal/utils/base64.mjs.map +1 -1
- package/internal/utils/bytes.d.mts +4 -0
- package/internal/utils/bytes.d.mts.map +1 -0
- package/internal/utils/bytes.d.ts +4 -0
- package/internal/utils/bytes.d.ts.map +1 -0
- package/internal/utils/bytes.js +31 -0
- package/internal/utils/bytes.js.map +1 -0
- package/internal/utils/bytes.mjs +26 -0
- package/internal/utils/bytes.mjs.map +1 -0
- package/internal/utils/env.d.mts.map +1 -1
- package/internal/utils/env.d.ts.map +1 -1
- package/internal/utils/env.js.map +1 -1
- package/internal/utils/env.mjs.map +1 -1
- package/internal/utils/log.d.mts +35 -2
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts +35 -2
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.js +62 -24
- package/internal/utils/log.js.map +1 -1
- package/internal/utils/log.mjs +58 -22
- package/internal/utils/log.mjs.map +1 -1
- package/internal/utils/path.d.mts +15 -0
- package/internal/utils/path.d.mts.map +1 -0
- package/internal/utils/path.d.ts +15 -0
- package/internal/utils/path.d.ts.map +1 -0
- package/internal/utils/path.js +79 -0
- package/internal/utils/path.js.map +1 -0
- package/internal/utils/path.mjs +74 -0
- package/internal/utils/path.mjs.map +1 -0
- package/internal/utils/sleep.d.mts.map +1 -1
- package/internal/utils/sleep.d.ts.map +1 -1
- package/internal/utils/uuid.d.mts +1 -1
- package/internal/utils/uuid.d.mts.map +1 -1
- package/internal/utils/uuid.d.ts +1 -1
- package/internal/utils/uuid.d.ts.map +1 -1
- package/internal/utils/uuid.js +10 -6
- package/internal/utils/uuid.js.map +1 -1
- package/internal/utils/uuid.mjs +9 -5
- package/internal/utils/uuid.mjs.map +1 -1
- package/internal/utils/values.d.mts +4 -1
- package/internal/utils/values.d.mts.map +1 -1
- package/internal/utils/values.d.ts +4 -1
- package/internal/utils/values.d.ts.map +1 -1
- package/internal/utils/values.js +21 -9
- package/internal/utils/values.js.map +1 -1
- package/internal/utils/values.mjs +14 -4
- package/internal/utils/values.mjs.map +1 -1
- package/internal/utils.js +7 -20
- package/internal/utils.js.map +1 -1
- package/package.json +31 -13
- package/resource.d.mts +1 -5
- package/resource.d.mts.map +1 -1
- package/resource.d.ts +1 -5
- package/resource.d.ts.map +1 -1
- package/resource.js +3 -8
- package/resource.js.map +1 -1
- package/resource.mjs +1 -6
- package/resource.mjs.map +1 -1
- package/resources/call.d.mts +17 -7
- package/resources/call.d.mts.map +1 -1
- package/resources/call.d.ts +17 -7
- package/resources/call.d.ts.map +1 -1
- package/resources/call.js +6 -5
- package/resources/call.js.map +1 -1
- package/resources/call.mjs +6 -5
- package/resources/call.mjs.map +1 -1
- package/resources/evaluation.d.mts +20 -8
- package/resources/evaluation.d.mts.map +1 -1
- package/resources/evaluation.d.ts +20 -8
- package/resources/evaluation.d.ts.map +1 -1
- package/resources/evaluation.js +5 -4
- package/resources/evaluation.js.map +1 -1
- package/resources/evaluation.mjs +5 -4
- package/resources/evaluation.mjs.map +1 -1
- package/resources/health.d.mts +2 -2
- package/resources/health.d.ts +2 -2
- package/resources/health.js +1 -1
- package/resources/health.js.map +1 -1
- package/resources/health.mjs +1 -1
- package/resources/integrations.d.mts +39 -6
- package/resources/integrations.d.mts.map +1 -1
- package/resources/integrations.d.ts +39 -6
- package/resources/integrations.d.ts.map +1 -1
- package/resources/integrations.js +26 -1
- package/resources/integrations.js.map +1 -1
- package/resources/integrations.mjs +26 -1
- package/resources/integrations.mjs.map +1 -1
- package/resources/metric.d.mts +2 -2
- package/resources/metric.d.ts +2 -2
- package/resources/metric.js +1 -1
- package/resources/metric.js.map +1 -1
- package/resources/metric.mjs +1 -1
- package/resources/persona.d.mts +45 -8
- package/resources/persona.d.mts.map +1 -1
- package/resources/persona.d.ts +45 -8
- package/resources/persona.d.ts.map +1 -1
- package/resources/persona.js +29 -3
- package/resources/persona.js.map +1 -1
- package/resources/persona.mjs +29 -3
- package/resources/persona.mjs.map +1 -1
- package/resources/simulation.d.mts +51 -5
- package/resources/simulation.d.mts.map +1 -1
- package/resources/simulation.d.ts +51 -5
- package/resources/simulation.d.ts.map +1 -1
- package/resources/simulation.js +45 -4
- package/resources/simulation.js.map +1 -1
- package/resources/simulation.mjs +45 -4
- package/resources/simulation.mjs.map +1 -1
- package/resources.d.mts +2 -0
- package/resources.d.mts.map +1 -0
- package/resources.d.ts +2 -0
- package/resources.d.ts.map +1 -0
- package/resources.js +5 -0
- package/resources.js.map +1 -0
- package/resources.mjs +2 -0
- package/resources.mjs.map +1 -0
- package/src/api-promise.ts +2 -92
- package/src/client.ts +207 -116
- package/src/core/README.md +3 -0
- package/src/core/api-promise.ts +92 -0
- package/src/core/error.ts +130 -0
- package/src/core/resource.ts +11 -0
- package/src/core/uploads.ts +2 -0
- package/src/error.ts +2 -130
- package/src/index.ts +3 -3
- package/src/internal/README.md +3 -0
- package/src/internal/builtin-types.ts +14 -0
- package/src/internal/detect-platform.ts +3 -3
- package/src/internal/errors.ts +11 -0
- package/src/internal/headers.ts +9 -8
- package/src/internal/parse.ts +43 -28
- package/src/internal/qs/formats.ts +2 -1
- package/src/internal/qs/stringify.ts +17 -20
- package/src/internal/qs/utils.ts +14 -14
- package/src/internal/request-options.ts +55 -31
- package/src/internal/shim-types.ts +26 -0
- package/src/internal/shims.ts +20 -58
- package/src/internal/to-file.ts +154 -0
- package/src/internal/types.ts +14 -17
- package/src/internal/uploads.ts +60 -180
- package/src/internal/utils/base64.ts +14 -11
- package/src/internal/utils/bytes.ts +32 -0
- package/src/internal/utils/log.ts +100 -23
- package/src/internal/utils/path.ts +88 -0
- package/src/internal/utils/uuid.ts +10 -6
- package/src/internal/utils/values.ts +16 -5
- package/src/resource.ts +2 -11
- package/src/resources/call.ts +12 -11
- package/src/resources/evaluation.ts +12 -11
- package/src/resources/health.ts +2 -2
- package/src/resources/integrations.ts +31 -6
- package/src/resources/metric.ts +2 -2
- package/src/resources/persona.ts +36 -10
- package/src/resources/simulation.ts +49 -8
- package/src/resources.ts +1 -0
- package/src/uploads.ts +2 -1
- package/src/version.ts +1 -1
- package/uploads.d.mts +1 -1
- package/uploads.d.mts.map +1 -1
- package/uploads.d.ts +1 -1
- package/uploads.d.ts.map +1 -1
- package/uploads.js +3 -3
- package/uploads.js.map +1 -1
- package/uploads.mjs +1 -1
- package/uploads.mjs.map +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
- package/internal/polyfill/crypto.node.d.ts +0 -10
- package/internal/polyfill/crypto.node.js +0 -11
- package/internal/polyfill/crypto.node.mjs +0 -2
- package/internal/polyfill/file.node.d.ts +0 -9
- package/internal/polyfill/file.node.js +0 -17
- package/internal/polyfill/file.node.mjs +0 -9
- package/src/internal/polyfill/crypto.node.d.ts +0 -10
- package/src/internal/polyfill/crypto.node.js +0 -11
- package/src/internal/polyfill/crypto.node.mjs +0 -2
- package/src/internal/polyfill/file.node.d.ts +0 -9
- package/src/internal/polyfill/file.node.js +0 -17
- package/src/internal/polyfill/file.node.mjs +0 -9
- package/src/internal/shim-types.d.ts +0 -28
package/src/internal/qs/utils.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { RFC1738 } from './formats';
|
|
2
2
|
import type { DefaultEncoder, Format } from './types';
|
|
3
|
+
import { isArray } from '../utils/values';
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
export let has = (obj: object, key: PropertyKey): boolean => (
|
|
6
|
+
(has = (Object as any).hasOwn ?? Function.prototype.call.bind(Object.prototype.hasOwnProperty)),
|
|
7
|
+
has(obj, key)
|
|
8
|
+
);
|
|
6
9
|
|
|
7
|
-
const hex_table = (() => {
|
|
10
|
+
const hex_table = /* @__PURE__ */ (() => {
|
|
8
11
|
const array = [];
|
|
9
12
|
for (let i = 0; i < 256; ++i) {
|
|
10
13
|
array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
|
|
@@ -20,7 +23,7 @@ function compact_queue<T extends Record<string, any>>(queue: Array<{ obj: T; pro
|
|
|
20
23
|
|
|
21
24
|
const obj = item.obj[item.prop];
|
|
22
25
|
|
|
23
|
-
if (
|
|
26
|
+
if (isArray(obj)) {
|
|
24
27
|
const compacted: unknown[] = [];
|
|
25
28
|
|
|
26
29
|
for (let j = 0; j < obj.length; ++j) {
|
|
@@ -56,13 +59,10 @@ export function merge(
|
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
if (typeof source !== 'object') {
|
|
59
|
-
if (
|
|
62
|
+
if (isArray(target)) {
|
|
60
63
|
target.push(source);
|
|
61
64
|
} else if (target && typeof target === 'object') {
|
|
62
|
-
if (
|
|
63
|
-
(options && (options.plainObjects || options.allowPrototypes)) ||
|
|
64
|
-
!has.call(Object.prototype, source)
|
|
65
|
-
) {
|
|
65
|
+
if ((options && (options.plainObjects || options.allowPrototypes)) || !has(Object.prototype, source)) {
|
|
66
66
|
target[source] = true;
|
|
67
67
|
}
|
|
68
68
|
} else {
|
|
@@ -77,14 +77,14 @@ export function merge(
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
let mergeTarget = target;
|
|
80
|
-
if (
|
|
80
|
+
if (isArray(target) && !isArray(source)) {
|
|
81
81
|
// @ts-ignore
|
|
82
82
|
mergeTarget = array_to_object(target, options);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
if (
|
|
85
|
+
if (isArray(target) && isArray(source)) {
|
|
86
86
|
source.forEach(function (item, i) {
|
|
87
|
-
if (has
|
|
87
|
+
if (has(target, i)) {
|
|
88
88
|
const targetItem = target[i];
|
|
89
89
|
if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
|
|
90
90
|
target[i] = merge(targetItem, item, options);
|
|
@@ -101,7 +101,7 @@ export function merge(
|
|
|
101
101
|
return Object.keys(source).reduce(function (acc, key) {
|
|
102
102
|
const value = source[key];
|
|
103
103
|
|
|
104
|
-
if (has
|
|
104
|
+
if (has(acc, key)) {
|
|
105
105
|
acc[key] = merge(acc[key], value, options);
|
|
106
106
|
} else {
|
|
107
107
|
acc[key] = value;
|
|
@@ -254,7 +254,7 @@ export function combine(a: any, b: any) {
|
|
|
254
254
|
}
|
|
255
255
|
|
|
256
256
|
export function maybe_map<T>(val: T[], fn: (v: T) => T) {
|
|
257
|
-
if (
|
|
257
|
+
if (isArray(val)) {
|
|
258
258
|
const mapped = [];
|
|
259
259
|
for (let i = 0; i < val.length; i += 1) {
|
|
260
260
|
mapped.push(fn(val[i]!));
|
|
@@ -3,55 +3,79 @@
|
|
|
3
3
|
import { NullableHeaders } from './headers';
|
|
4
4
|
|
|
5
5
|
import type { BodyInit } from './builtin-types';
|
|
6
|
-
import {
|
|
7
|
-
import type { HTTPMethod, KeysEnum, MergedRequestInit } from './types';
|
|
6
|
+
import type { HTTPMethod, MergedRequestInit } from './types';
|
|
8
7
|
import { type HeadersLike } from './headers';
|
|
9
8
|
|
|
10
9
|
export type FinalRequestOptions = RequestOptions & { method: HTTPMethod; path: string };
|
|
11
10
|
|
|
12
11
|
export type RequestOptions = {
|
|
12
|
+
/**
|
|
13
|
+
* The HTTP method for the request (e.g., 'get', 'post', 'put', 'delete').
|
|
14
|
+
*/
|
|
13
15
|
method?: HTTPMethod;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The URL path for the request.
|
|
19
|
+
*
|
|
20
|
+
* @example "/v1/foo"
|
|
21
|
+
*/
|
|
14
22
|
path?: string;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Query parameters to include in the request URL.
|
|
26
|
+
*/
|
|
15
27
|
query?: object | undefined | null;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The request body. Can be a string, JSON object, FormData, or other supported types.
|
|
31
|
+
*/
|
|
16
32
|
body?: unknown;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* HTTP headers to include with the request. Can be a Headers object, plain object, or array of tuples.
|
|
36
|
+
*/
|
|
17
37
|
headers?: HeadersLike;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The maximum number of times that the client will retry a request in case of a
|
|
41
|
+
* temporary failure, like a network error or a 5XX error from the server.
|
|
42
|
+
*
|
|
43
|
+
* @default 2
|
|
44
|
+
*/
|
|
18
45
|
maxRetries?: number;
|
|
46
|
+
|
|
19
47
|
stream?: boolean | undefined;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The maximum amount of time (in milliseconds) that the client should wait for a response
|
|
51
|
+
* from the server before timing out a single request.
|
|
52
|
+
*
|
|
53
|
+
* @unit milliseconds
|
|
54
|
+
*/
|
|
20
55
|
timeout?: number;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Additional `RequestInit` options to be passed to the underlying `fetch` call.
|
|
59
|
+
* These options will be merged with the client's default fetch options.
|
|
60
|
+
*/
|
|
21
61
|
fetchOptions?: MergedRequestInit;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* An AbortSignal that can be used to cancel the request.
|
|
65
|
+
*/
|
|
22
66
|
signal?: AbortSignal | undefined | null;
|
|
23
|
-
idempotencyKey?: string;
|
|
24
67
|
|
|
25
|
-
|
|
26
|
-
|
|
68
|
+
/**
|
|
69
|
+
* A unique key for this request to enable idempotency.
|
|
70
|
+
*/
|
|
71
|
+
idempotencyKey?: string;
|
|
27
72
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
method: true,
|
|
33
|
-
path: true,
|
|
34
|
-
query: true,
|
|
35
|
-
body: true,
|
|
36
|
-
headers: true,
|
|
37
|
-
|
|
38
|
-
maxRetries: true,
|
|
39
|
-
stream: true,
|
|
40
|
-
timeout: true,
|
|
41
|
-
fetchOptions: true,
|
|
42
|
-
signal: true,
|
|
43
|
-
idempotencyKey: true,
|
|
44
|
-
|
|
45
|
-
__binaryResponse: true,
|
|
46
|
-
};
|
|
73
|
+
/**
|
|
74
|
+
* Override the default base URL for this specific request.
|
|
75
|
+
*/
|
|
76
|
+
defaultBaseURL?: string | undefined;
|
|
47
77
|
|
|
48
|
-
|
|
49
|
-
return (
|
|
50
|
-
typeof obj === 'object' &&
|
|
51
|
-
obj !== null &&
|
|
52
|
-
!isEmptyObj(obj) &&
|
|
53
|
-
Object.keys(obj).every((k) => hasOwn(requestOptionsKeys, k))
|
|
54
|
-
);
|
|
78
|
+
__binaryResponse?: boolean | undefined;
|
|
55
79
|
};
|
|
56
80
|
|
|
57
81
|
export type EncodedContent = { bodyHeaders: HeadersLike; body: BodyInit };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Shims for types that we can't always rely on being available globally.
|
|
5
|
+
*
|
|
6
|
+
* Note: these only exist at the type-level, there is no corresponding runtime
|
|
7
|
+
* version for any of these symbols.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
type NeverToAny<T> = T extends never ? any : T;
|
|
11
|
+
|
|
12
|
+
/** @ts-ignore */
|
|
13
|
+
type _DOMReadableStream<R = any> = globalThis.ReadableStream<R>;
|
|
14
|
+
|
|
15
|
+
/** @ts-ignore */
|
|
16
|
+
type _NodeReadableStream<R = any> = import('stream/web').ReadableStream<R>;
|
|
17
|
+
|
|
18
|
+
type _ConditionalNodeReadableStream<R = any> =
|
|
19
|
+
typeof globalThis extends { ReadableStream: any } ? never : _NodeReadableStream<R>;
|
|
20
|
+
|
|
21
|
+
type _ReadableStream<R = any> = NeverToAny<
|
|
22
|
+
| ([0] extends [1 & _DOMReadableStream<R>] ? never : _DOMReadableStream<R>)
|
|
23
|
+
| ([0] extends [1 & _ConditionalNodeReadableStream<R>] ? never : _ConditionalNodeReadableStream<R>)
|
|
24
|
+
>;
|
|
25
|
+
|
|
26
|
+
export type { _ReadableStream as ReadableStream };
|
package/src/internal/shims.ts
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* messages in cases where an environment isn't fully supported.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import type { Fetch } from './builtin-types';
|
|
11
|
+
import type { ReadableStream } from './shim-types';
|
|
12
12
|
|
|
13
13
|
export function getDefaultFetch(): Fetch {
|
|
14
14
|
if (typeof fetch !== 'undefined') {
|
|
@@ -20,62 +20,6 @@ export function getDefaultFetch(): Fetch {
|
|
|
20
20
|
);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
/**
|
|
24
|
-
* A minimal copy of the NodeJS `stream.Readable` class so that we can
|
|
25
|
-
* accept the NodeJS types in certain places, e.g. file uploads
|
|
26
|
-
*
|
|
27
|
-
* https://nodejs.org/api/stream.html#class-streamreadable
|
|
28
|
-
*/
|
|
29
|
-
export interface ReadableLike {
|
|
30
|
-
readable: boolean;
|
|
31
|
-
readonly readableEnded: boolean;
|
|
32
|
-
readonly readableFlowing: boolean | null;
|
|
33
|
-
readonly readableHighWaterMark: number;
|
|
34
|
-
readonly readableLength: number;
|
|
35
|
-
readonly readableObjectMode: boolean;
|
|
36
|
-
destroyed: boolean;
|
|
37
|
-
read(size?: number): any;
|
|
38
|
-
pause(): this;
|
|
39
|
-
resume(): this;
|
|
40
|
-
isPaused(): boolean;
|
|
41
|
-
destroy(error?: Error): this;
|
|
42
|
-
[Symbol.asyncIterator](): AsyncIterableIterator<any>;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Determines if the given value looks like a NodeJS `stream.Readable`
|
|
47
|
-
* object and that it is readable, i.e. has not been consumed.
|
|
48
|
-
*
|
|
49
|
-
* https://nodejs.org/api/stream.html#class-streamreadable
|
|
50
|
-
*/
|
|
51
|
-
export function isReadableLike(value: any) {
|
|
52
|
-
// We declare our own class of Readable here, so it's not feasible to
|
|
53
|
-
// do an 'instanceof' check. Instead, check for Readable-like properties.
|
|
54
|
-
return !!value && value.readable === true && typeof value.read === 'function';
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* A minimal copy of the NodeJS `fs.ReadStream` class for usage within file uploads.
|
|
59
|
-
*
|
|
60
|
-
* https://nodejs.org/api/fs.html#class-fsreadstream
|
|
61
|
-
*/
|
|
62
|
-
export interface FsReadStreamLike extends ReadableLike {
|
|
63
|
-
path: {}; // real type is string | Buffer but we can't reference `Buffer` here
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Determines if the given value looks like a NodeJS `fs.ReadStream`
|
|
68
|
-
* object.
|
|
69
|
-
*
|
|
70
|
-
* This just checks if the object matches our `Readable` interface
|
|
71
|
-
* and defines a `path` property, there may be false positives.
|
|
72
|
-
*
|
|
73
|
-
* https://nodejs.org/api/fs.html#class-fsreadstream
|
|
74
|
-
*/
|
|
75
|
-
export function isFsReadStreamLike(value: any): value is FsReadStreamLike {
|
|
76
|
-
return isReadableLike(value) && 'path' in value;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
23
|
type ReadableStreamArgs = ConstructorParameters<typeof ReadableStream>;
|
|
80
24
|
|
|
81
25
|
export function makeReadableStream(...args: ReadableStreamArgs): ReadableStream {
|
|
@@ -143,3 +87,21 @@ export function ReadableStreamToAsyncIterable<T>(stream: any): AsyncIterableIter
|
|
|
143
87
|
},
|
|
144
88
|
};
|
|
145
89
|
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Cancels a ReadableStream we don't need to consume.
|
|
93
|
+
* See https://undici.nodejs.org/#/?id=garbage-collection
|
|
94
|
+
*/
|
|
95
|
+
export async function CancelReadableStream(stream: any): Promise<void> {
|
|
96
|
+
if (stream === null || typeof stream !== 'object') return;
|
|
97
|
+
|
|
98
|
+
if (stream[Symbol.asyncIterator]) {
|
|
99
|
+
await stream[Symbol.asyncIterator]().return?.();
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const reader = stream.getReader();
|
|
104
|
+
const cancelPromise = reader.cancel();
|
|
105
|
+
reader.releaseLock();
|
|
106
|
+
await cancelPromise;
|
|
107
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { BlobPart, getName, makeFile, isAsyncIterable } from './uploads';
|
|
2
|
+
import type { FilePropertyBag } from './builtin-types';
|
|
3
|
+
import { checkFileSupport } from './uploads';
|
|
4
|
+
|
|
5
|
+
type BlobLikePart = string | ArrayBuffer | ArrayBufferView | BlobLike | DataView;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Intended to match DOM Blob, node-fetch Blob, node:buffer Blob, etc.
|
|
9
|
+
* Don't add arrayBuffer here, node-fetch doesn't have it
|
|
10
|
+
*/
|
|
11
|
+
interface BlobLike {
|
|
12
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) */
|
|
13
|
+
readonly size: number;
|
|
14
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) */
|
|
15
|
+
readonly type: string;
|
|
16
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) */
|
|
17
|
+
text(): Promise<string>;
|
|
18
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */
|
|
19
|
+
slice(start?: number, end?: number): BlobLike;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* This check adds the arrayBuffer() method type because it is available and used at runtime
|
|
24
|
+
*/
|
|
25
|
+
const isBlobLike = (value: any): value is BlobLike & { arrayBuffer(): Promise<ArrayBuffer> } =>
|
|
26
|
+
value != null &&
|
|
27
|
+
typeof value === 'object' &&
|
|
28
|
+
typeof value.size === 'number' &&
|
|
29
|
+
typeof value.type === 'string' &&
|
|
30
|
+
typeof value.text === 'function' &&
|
|
31
|
+
typeof value.slice === 'function' &&
|
|
32
|
+
typeof value.arrayBuffer === 'function';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Intended to match DOM File, node:buffer File, undici File, etc.
|
|
36
|
+
*/
|
|
37
|
+
interface FileLike extends BlobLike {
|
|
38
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) */
|
|
39
|
+
readonly lastModified: number;
|
|
40
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) */
|
|
41
|
+
readonly name?: string | undefined;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* This check adds the arrayBuffer() method type because it is available and used at runtime
|
|
46
|
+
*/
|
|
47
|
+
const isFileLike = (value: any): value is FileLike & { arrayBuffer(): Promise<ArrayBuffer> } =>
|
|
48
|
+
value != null &&
|
|
49
|
+
typeof value === 'object' &&
|
|
50
|
+
typeof value.name === 'string' &&
|
|
51
|
+
typeof value.lastModified === 'number' &&
|
|
52
|
+
isBlobLike(value);
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Intended to match DOM Response, node-fetch Response, undici Response, etc.
|
|
56
|
+
*/
|
|
57
|
+
export interface ResponseLike {
|
|
58
|
+
url: string;
|
|
59
|
+
blob(): Promise<BlobLike>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const isResponseLike = (value: any): value is ResponseLike =>
|
|
63
|
+
value != null &&
|
|
64
|
+
typeof value === 'object' &&
|
|
65
|
+
typeof value.url === 'string' &&
|
|
66
|
+
typeof value.blob === 'function';
|
|
67
|
+
|
|
68
|
+
export type ToFileInput =
|
|
69
|
+
| FileLike
|
|
70
|
+
| ResponseLike
|
|
71
|
+
| Exclude<BlobLikePart, string>
|
|
72
|
+
| AsyncIterable<BlobLikePart>;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats
|
|
76
|
+
* @param value the raw content of the file. Can be an {@link Uploadable}, BlobLikePart, or AsyncIterable of BlobLikeParts
|
|
77
|
+
* @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible
|
|
78
|
+
* @param {Object=} options additional properties
|
|
79
|
+
* @param {string=} options.type the MIME type of the content
|
|
80
|
+
* @param {number=} options.lastModified the last modified timestamp
|
|
81
|
+
* @returns a {@link File} with the given properties
|
|
82
|
+
*/
|
|
83
|
+
export async function toFile(
|
|
84
|
+
value: ToFileInput | PromiseLike<ToFileInput>,
|
|
85
|
+
name?: string | null | undefined,
|
|
86
|
+
options?: FilePropertyBag | undefined,
|
|
87
|
+
): Promise<File> {
|
|
88
|
+
checkFileSupport();
|
|
89
|
+
|
|
90
|
+
// If it's a promise, resolve it.
|
|
91
|
+
value = await value;
|
|
92
|
+
|
|
93
|
+
// If we've been given a `File` we don't need to do anything
|
|
94
|
+
if (isFileLike(value)) {
|
|
95
|
+
if (value instanceof File) {
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
return makeFile([await value.arrayBuffer()], value.name);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (isResponseLike(value)) {
|
|
102
|
+
const blob = await value.blob();
|
|
103
|
+
name ||= new URL(value.url).pathname.split(/[\\/]/).pop();
|
|
104
|
+
|
|
105
|
+
return makeFile(await getBytes(blob), name, options);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const parts = await getBytes(value);
|
|
109
|
+
|
|
110
|
+
name ||= getName(value);
|
|
111
|
+
|
|
112
|
+
if (!options?.type) {
|
|
113
|
+
const type = parts.find((part) => typeof part === 'object' && 'type' in part && part.type);
|
|
114
|
+
if (typeof type === 'string') {
|
|
115
|
+
options = { ...options, type };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return makeFile(parts, name, options);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
async function getBytes(value: BlobLikePart | AsyncIterable<BlobLikePart>): Promise<Array<BlobPart>> {
|
|
123
|
+
let parts: Array<BlobPart> = [];
|
|
124
|
+
if (
|
|
125
|
+
typeof value === 'string' ||
|
|
126
|
+
ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.
|
|
127
|
+
value instanceof ArrayBuffer
|
|
128
|
+
) {
|
|
129
|
+
parts.push(value);
|
|
130
|
+
} else if (isBlobLike(value)) {
|
|
131
|
+
parts.push(value instanceof Blob ? value : await value.arrayBuffer());
|
|
132
|
+
} else if (
|
|
133
|
+
isAsyncIterable(value) // includes Readable, ReadableStream, etc.
|
|
134
|
+
) {
|
|
135
|
+
for await (const chunk of value) {
|
|
136
|
+
parts.push(...(await getBytes(chunk as BlobLikePart))); // TODO, consider validating?
|
|
137
|
+
}
|
|
138
|
+
} else {
|
|
139
|
+
const constructor = value?.constructor?.name;
|
|
140
|
+
throw new Error(
|
|
141
|
+
`Unexpected data type: ${typeof value}${
|
|
142
|
+
constructor ? `; constructor: ${constructor}` : ''
|
|
143
|
+
}${propsForError(value)}`,
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return parts;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function propsForError(value: unknown): string {
|
|
151
|
+
if (typeof value !== 'object' || value === null) return '';
|
|
152
|
+
const props = Object.getOwnPropertyNames(value);
|
|
153
|
+
return `; props: [${props.map((p) => `"${p}"`).join(', ')}]`;
|
|
154
|
+
}
|
package/src/internal/types.ts
CHANGED
|
@@ -5,15 +5,9 @@ export type HTTPMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';
|
|
|
5
5
|
|
|
6
6
|
export type KeysEnum<T> = { [P in keyof Required<T>]: true };
|
|
7
7
|
|
|
8
|
-
type
|
|
9
|
-
|
|
10
|
-
type
|
|
11
|
-
type MappedIndex<T, K> =
|
|
12
|
-
T extends any ?
|
|
13
|
-
K extends keyof T ?
|
|
14
|
-
T[K]
|
|
15
|
-
: never
|
|
16
|
-
: never;
|
|
8
|
+
export type FinalizedRequestInit = RequestInit & { headers: Headers };
|
|
9
|
+
|
|
10
|
+
type NotAny<T> = [0] extends [1 & T] ? never : T;
|
|
17
11
|
|
|
18
12
|
/**
|
|
19
13
|
* Some environments overload the global fetch function, and Parameters<T> only gets the last signature.
|
|
@@ -70,13 +64,15 @@ type OverloadedParameters<T> =
|
|
|
70
64
|
* [1]: https://www.typescriptlang.org/tsconfig/#typeAcquisition
|
|
71
65
|
*/
|
|
72
66
|
/** @ts-ignore For users with \@types/node */
|
|
73
|
-
type UndiciTypesRequestInit = NotAny<import('../node_modules/undici-types').RequestInit> | NotAny<import('../../node_modules/undici-types').RequestInit> | NotAny<import('../../../node_modules/undici-types').RequestInit> | NotAny<import('../../../../node_modules/undici-types').RequestInit> | NotAny<import('../../../../../node_modules/undici-types').RequestInit> | NotAny<import('../../../../../../node_modules/undici-types').RequestInit> | NotAny<import('../../../../../../../node_modules/undici-types').RequestInit> | NotAny<import('../../../../../../../../node_modules/undici-types').RequestInit> | NotAny<import('../../../../../../../../../node_modules/undici-types').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/undici-types').RequestInit>;
|
|
67
|
+
type UndiciTypesRequestInit = NotAny<import('../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/undici-types/index.d.ts').RequestInit>;
|
|
74
68
|
/** @ts-ignore For users with undici */
|
|
75
|
-
type UndiciRequestInit = NotAny<import('../node_modules/undici').RequestInit> | NotAny<import('../../node_modules/undici').RequestInit> | NotAny<import('../../../node_modules/undici').RequestInit> | NotAny<import('../../../../node_modules/undici').RequestInit> | NotAny<import('../../../../../node_modules/undici').RequestInit> | NotAny<import('../../../../../../node_modules/undici').RequestInit> | NotAny<import('../../../../../../../node_modules/undici').RequestInit> | NotAny<import('../../../../../../../../node_modules/undici').RequestInit> | NotAny<import('../../../../../../../../../node_modules/undici').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/undici').RequestInit>;
|
|
69
|
+
type UndiciRequestInit = NotAny<import('../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/undici/index.d.ts').RequestInit>;
|
|
76
70
|
/** @ts-ignore For users with \@types/bun */
|
|
77
71
|
type BunRequestInit = globalThis.FetchRequestInit;
|
|
78
|
-
/** @ts-ignore For users with node-fetch */
|
|
79
|
-
type
|
|
72
|
+
/** @ts-ignore For users with node-fetch@2 */
|
|
73
|
+
type NodeFetch2RequestInit = NotAny<import('../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit>;
|
|
74
|
+
/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */
|
|
75
|
+
type NodeFetch3RequestInit = NotAny<import('../node_modules/node-fetch').RequestInit> | NotAny<import('../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/node-fetch').RequestInit>;
|
|
80
76
|
/** @ts-ignore For users who use Deno */
|
|
81
77
|
type FetchRequestInit = NonNullable<OverloadedParameters<typeof fetch>[1]>;
|
|
82
78
|
/* eslint-enable */
|
|
@@ -85,7 +81,8 @@ type RequestInits =
|
|
|
85
81
|
| NotAny<UndiciTypesRequestInit>
|
|
86
82
|
| NotAny<UndiciRequestInit>
|
|
87
83
|
| NotAny<BunRequestInit>
|
|
88
|
-
| NotAny<
|
|
84
|
+
| NotAny<NodeFetch2RequestInit>
|
|
85
|
+
| NotAny<NodeFetch3RequestInit>
|
|
89
86
|
| NotAny<RequestInit>
|
|
90
87
|
| NotAny<FetchRequestInit>;
|
|
91
88
|
|
|
@@ -93,6 +90,6 @@ type RequestInits =
|
|
|
93
90
|
* This type contains `RequestInit` options that may be available on the current runtime,
|
|
94
91
|
* including per-platform extensions like `dispatcher`, `agent`, `client`, etc.
|
|
95
92
|
*/
|
|
96
|
-
export type MergedRequestInit =
|
|
97
|
-
|
|
98
|
-
|
|
93
|
+
export type MergedRequestInit = RequestInits &
|
|
94
|
+
/** We don't include these in the types as they'll be overridden for every request. */
|
|
95
|
+
Partial<Record<'body' | 'headers' | 'method' | 'signal', never>>;
|