@zap-studio/fetch 0.5.4 → 0.5.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/CHANGELOG.md +15 -0
- package/LICENSE +1 -1
- package/README.md +19 -5
- package/dist/constants.d.ts +17 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/{constants.mjs → constants.js} +1 -1
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/{errors.mjs → errors.js} +1 -1
- package/dist/errors.js.map +1 -0
- package/dist/fetch-D0IXjsUD.js +222 -0
- package/dist/fetch-D0IXjsUD.js.map +1 -0
- package/dist/fetch.d.ts +114 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +3 -0
- package/dist/headers.d.ts +26 -0
- package/dist/headers.d.ts.map +1 -0
- package/dist/{headers.mjs → headers.js} +6 -6
- package/dist/headers.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +7 -0
- package/dist/request.d.ts +30 -0
- package/dist/request.d.ts.map +1 -0
- package/dist/{request.mjs → request.js} +15 -12
- package/dist/request.js.map +1 -0
- package/dist/types.d.ts +168 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +0 -0
- package/dist/url.d.ts +26 -0
- package/dist/url.d.ts.map +1 -0
- package/dist/{url.mjs → url.js} +36 -37
- package/dist/url.js.map +1 -0
- package/package.json +19 -28
- package/dist/constants.d.mts +0 -18
- package/dist/constants.d.mts.map +0 -1
- package/dist/constants.mjs.map +0 -1
- package/dist/errors.d.mts +0 -41
- package/dist/errors.d.mts.map +0 -1
- package/dist/errors.mjs.map +0 -1
- package/dist/headers.d.mts +0 -26
- package/dist/headers.d.mts.map +0 -1
- package/dist/headers.mjs.map +0 -1
- package/dist/index.d.mts +0 -115
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -103
- package/dist/index.mjs.map +0 -1
- package/dist/internal.d.mts +0 -33
- package/dist/internal.d.mts.map +0 -1
- package/dist/internal.mjs +0 -76
- package/dist/internal.mjs.map +0 -1
- package/dist/methods.d.mts +0 -23
- package/dist/methods.d.mts.map +0 -1
- package/dist/methods.mjs +0 -58
- package/dist/methods.mjs.map +0 -1
- package/dist/request.d.mts +0 -31
- package/dist/request.d.mts.map +0 -1
- package/dist/request.mjs.map +0 -1
- package/dist/types.d.mts +0 -169
- package/dist/types.d.mts.map +0 -1
- package/dist/types.mjs +0 -1
- package/dist/url.d.mts +0 -27
- package/dist/url.d.mts.map +0 -1
- package/dist/url.mjs.map +0 -1
package/dist/types.d.mts
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { StandardSchemaV1 } from "@zap-studio/validation";
|
|
2
|
-
|
|
3
|
-
//#region src/types.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Accepted `fetch` input type (`string`, `URL`, or `Request`).
|
|
6
|
-
*/
|
|
7
|
-
type FetchInput = Parameters<typeof fetch>[0];
|
|
8
|
-
type URLSearchParamsInput = ConstructorParameters<typeof URLSearchParams>[0];
|
|
9
|
-
type RequestBodyInit = RequestInit & {
|
|
10
|
-
json?: never;
|
|
11
|
-
};
|
|
12
|
-
type JsonBodyInit = Omit<RequestInit, "body"> & {
|
|
13
|
-
/**
|
|
14
|
-
* JSON body convenience. When provided, this is JSON-stringified into `body`.
|
|
15
|
-
* @default undefined
|
|
16
|
-
*/
|
|
17
|
-
json: unknown;
|
|
18
|
-
body?: never;
|
|
19
|
-
};
|
|
20
|
-
type CustomRequestInit = {
|
|
21
|
-
/**
|
|
22
|
-
* Per-request query/search params
|
|
23
|
-
* @default undefined
|
|
24
|
-
*/
|
|
25
|
-
searchParams?: URLSearchParamsInput;
|
|
26
|
-
/**
|
|
27
|
-
* Whether to throw a FetchError on HTTP errors (non-2xx responses)
|
|
28
|
-
* @default true
|
|
29
|
-
*/
|
|
30
|
-
throwOnFetchError?: boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Whether to throw a ValidationError on validation errors
|
|
33
|
-
* @default true
|
|
34
|
-
*/
|
|
35
|
-
throwOnValidationError?: boolean;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Extended RequestInit type to include custom fetch options
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* const options: ExtendedRequestInit = {
|
|
42
|
-
* method: "POST",
|
|
43
|
-
* json: { name: "Ada" },
|
|
44
|
-
* throwOnFetchError: true,
|
|
45
|
-
* };
|
|
46
|
-
*/
|
|
47
|
-
type ExtendedRequestInit = (RequestBodyInit | JsonBodyInit) & CustomRequestInit;
|
|
48
|
-
/**
|
|
49
|
-
* Internal defaults used by fetchInternal
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* const defaults: FetchDefaults = {
|
|
53
|
-
* baseURL: "https://api.example.com",
|
|
54
|
-
* throwOnFetchError: true,
|
|
55
|
-
* throwOnValidationError: true,
|
|
56
|
-
* };
|
|
57
|
-
*/
|
|
58
|
-
interface FetchDefaults {
|
|
59
|
-
/**
|
|
60
|
-
* Base URL to prepend to all requests
|
|
61
|
-
* @default ""
|
|
62
|
-
*/
|
|
63
|
-
baseURL: string;
|
|
64
|
-
/**
|
|
65
|
-
* Default headers to include in all requests (can be overridden per request)
|
|
66
|
-
* @default undefined
|
|
67
|
-
*/
|
|
68
|
-
headers?: HeadersInit;
|
|
69
|
-
/**
|
|
70
|
-
* Default query/search params applied to every request (can be overridden per request)
|
|
71
|
-
* @default undefined
|
|
72
|
-
*/
|
|
73
|
-
searchParams?: URLSearchParamsInput;
|
|
74
|
-
/**
|
|
75
|
-
* Whether to throw a `FetchError` on HTTP errors (non-2xx responses)
|
|
76
|
-
* @default true
|
|
77
|
-
*/
|
|
78
|
-
throwOnFetchError: boolean;
|
|
79
|
-
/**
|
|
80
|
-
* Whether to throw a `ValidationError` on validation errors
|
|
81
|
-
* @default true
|
|
82
|
-
*/
|
|
83
|
-
throwOnValidationError: boolean;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Type-safe fetch function with Standard Schema validation support
|
|
87
|
-
*/
|
|
88
|
-
interface $Fetch {
|
|
89
|
-
/**
|
|
90
|
-
* Fetch with schema validation and throwOnValidationError: false
|
|
91
|
-
* @param input - URL or path to fetch
|
|
92
|
-
* @param schema - Standard Schema for response validation
|
|
93
|
-
* @param options - Extended request options with throwOnValidationError: false
|
|
94
|
-
* @returns Standard Schema Result object with value or issues
|
|
95
|
-
* @throws {FetchError} When `throwOnFetchError` is `true` and the response is not ok.
|
|
96
|
-
* @throws {TypeError} When request construction, JSON request serialization, headers,
|
|
97
|
-
* search params, native `fetch`, or `response.json()` body reading fail with a
|
|
98
|
-
* `TypeError`.
|
|
99
|
-
* @throws {DOMException} When native `fetch` or `response.json()` rejects an aborted
|
|
100
|
-
* request/body read as an `AbortError` DOMException.
|
|
101
|
-
* @throws {SyntaxError} When `response.json()` cannot parse the response body.
|
|
102
|
-
* @throws Any error thrown or rejected by the provided Standard Schema validator.
|
|
103
|
-
*/
|
|
104
|
-
<TSchema extends StandardSchemaV1>(input: FetchInput, schema: TSchema, options: ExtendedRequestInit & {
|
|
105
|
-
throwOnValidationError: false;
|
|
106
|
-
}): Promise<StandardSchemaV1.Result<StandardSchemaV1.InferOutput<TSchema>>>;
|
|
107
|
-
/**
|
|
108
|
-
* Fetch with schema validation and throwOnValidationError: true or undefined (default)
|
|
109
|
-
* @param input - URL or path to fetch
|
|
110
|
-
* @param schema - Standard Schema for response validation
|
|
111
|
-
* @param options - Extended request options
|
|
112
|
-
* @returns Validated data of type TSchema
|
|
113
|
-
* @throws {FetchError} When `throwOnFetchError` is `true` and the response is not ok.
|
|
114
|
-
* @throws {ValidationError} When validation returns issues.
|
|
115
|
-
* @throws {TypeError} When request construction, JSON request serialization, headers,
|
|
116
|
-
* search params, native `fetch`, or `response.json()` body reading fail with a
|
|
117
|
-
* `TypeError`.
|
|
118
|
-
* @throws {DOMException} When native `fetch` or `response.json()` rejects an aborted
|
|
119
|
-
* request/body read as an `AbortError` DOMException.
|
|
120
|
-
* @throws {SyntaxError} When `response.json()` cannot parse the response body.
|
|
121
|
-
* @throws Any error thrown or rejected by the provided Standard Schema validator.
|
|
122
|
-
*/
|
|
123
|
-
<TSchema extends StandardSchemaV1>(input: FetchInput, schema: TSchema, options?: ExtendedRequestInit & {
|
|
124
|
-
throwOnValidationError?: true;
|
|
125
|
-
}): Promise<StandardSchemaV1.InferOutput<TSchema>>;
|
|
126
|
-
/**
|
|
127
|
-
* Fetch without schema validation
|
|
128
|
-
* @param input - URL or path to fetch
|
|
129
|
-
* @param options - Extended request options
|
|
130
|
-
* @returns Raw Response object
|
|
131
|
-
* @throws {FetchError} When `throwOnFetchError` is `true` and the response is not ok.
|
|
132
|
-
* @throws {TypeError} When request construction, JSON request serialization, headers,
|
|
133
|
-
* search params, or native `fetch` fail with a `TypeError`.
|
|
134
|
-
* @throws {DOMException} When native `fetch` rejects an aborted request as an
|
|
135
|
-
* `AbortError` DOMException.
|
|
136
|
-
*/
|
|
137
|
-
(input: FetchInput, options?: ExtendedRequestInit): Promise<Response>;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* API HTTP method-specific fetch functions
|
|
141
|
-
*
|
|
142
|
-
* @example
|
|
143
|
-
* const user = await api.get("/users/1", UserSchema);
|
|
144
|
-
*/
|
|
145
|
-
interface ApiMethods {
|
|
146
|
-
/**
|
|
147
|
-
* DELETE method fetch function
|
|
148
|
-
*/
|
|
149
|
-
delete: $Fetch;
|
|
150
|
-
/**
|
|
151
|
-
* GET method fetch function
|
|
152
|
-
*/
|
|
153
|
-
get: $Fetch;
|
|
154
|
-
/**
|
|
155
|
-
* PATCH method fetch function
|
|
156
|
-
*/
|
|
157
|
-
patch: $Fetch;
|
|
158
|
-
/**
|
|
159
|
-
* POST method fetch function
|
|
160
|
-
*/
|
|
161
|
-
post: $Fetch;
|
|
162
|
-
/**
|
|
163
|
-
* PUT method fetch function
|
|
164
|
-
*/
|
|
165
|
-
put: $Fetch;
|
|
166
|
-
}
|
|
167
|
-
//#endregion
|
|
168
|
-
export { $Fetch, ApiMethods, ExtendedRequestInit, FetchDefaults, FetchInput };
|
|
169
|
-
//# sourceMappingURL=types.d.mts.map
|
package/dist/types.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;AAWkD;KAAtC,UAAA,GAAa,UAAA,QAAkB,KAAA;AAAA,KAEtC,oBAAA,GAAuB,qBAAA,QAA6B,eAAA;AAAA,KAEpD,eAAA,GAAkB,WAAA;EACrB,IAAA;AAAA;AAAA,KAGG,YAAA,GAAe,IAAA,CAAK,WAAA;;;;AAHvB;EAQA,IAAA;EACA,IAAA;AAAA;AAAA,KAGG,iBAAA;;;;;EAKH,YAAA,GAAe,oBAAA;EARf;;;;EAaA,iBAAA;;;;;EAKA,sBAAA;AAAA;;;;;;;;;;;KAaU,mBAAA,IAAuB,eAAA,GAAkB,YAAA,IAAgB,iBAAA;;AAYrE;;;;;;;;;UAAiB,aAAA;;;;AA+BjB;EA1BE,OAAA;;;;;EAKA,OAAA,GAAU,WAAA;;;;;EAKV,YAAA,GAAe,oBAAA;;;;;EAKf,iBAAA;;;;;EAKA,sBAAA;AAAA;;;;UAMe,MAAA;;;;;;;;;;;;;;;;mBAgBE,gBAAA,EACf,KAAA,EAAO,UAAA,EACP,MAAA,EAAQ,OAAA,EACR,OAAA,EAAS,mBAAA;IAAwB,sBAAA;EAAA,IAChC,OAAA,CAAQ,gBAAA,CAAiB,MAAA,CAAO,gBAAA,CAAiB,WAAA,CAAY,OAAA;;;;;;;;;;;;;;;;AA8ClE;mBA5BmB,gBAAA,EACf,KAAA,EAAO,UAAA,EACP,MAAA,EAAQ,OAAA,EACR,OAAA,GAAU,mBAAA;IACR,sBAAA;EAAA,IAED,OAAA,CAAQ,gBAAA,CAAiB,WAAA,CAAY,OAAA;;;;;;;;;;;;GAavC,KAAA,EAAO,UAAA,EAAY,OAAA,GAAU,mBAAA,GAAsB,OAAA,CAAQ,QAAA;AAAA;;;;;;;UAS7C,UAAA;;;;EAIf,MAAA,EAAQ,MAAA;;;;EAIR,GAAA,EAAK,MAAA;;;;EAIL,KAAA,EAAO,MAAA;;;;EAIP,IAAA,EAAM,MAAA;;;;EAIN,GAAA,EAAK,MAAA;AAAA"}
|
package/dist/types.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/url.d.mts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { ExtendedRequestInit, FetchDefaults } from "./types.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/url.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Resolves final request URL by applying baseURL and layered search params.
|
|
6
|
-
*
|
|
7
|
-
* Search param precedence:
|
|
8
|
-
* 1. `defaults.searchParams`
|
|
9
|
-
* 2. search params already present in `resourceUrl`
|
|
10
|
-
* 3. per-request `searchParams`
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* const finalUrl = resolveRequestUrl(
|
|
14
|
-
* "/users?page=2",
|
|
15
|
-
* { ...defaults, baseURL: "https://api.example.com", searchParams: { locale: "en" } },
|
|
16
|
-
* { page: "3" },
|
|
17
|
-
* );
|
|
18
|
-
* // https://api.example.com/users?locale=en&page=3
|
|
19
|
-
*
|
|
20
|
-
* @throws {TypeError} When `baseURL` and `resourceUrl` cannot be resolved by
|
|
21
|
-
* `URL`, or when default/per-request search params cannot be converted by
|
|
22
|
-
* `URLSearchParams`.
|
|
23
|
-
*/
|
|
24
|
-
declare function resolveRequestUrl(resourceUrl: string, defaults: FetchDefaults, searchParams: ExtendedRequestInit["searchParams"] | undefined): string;
|
|
25
|
-
//#endregion
|
|
26
|
-
export { resolveRequestUrl };
|
|
27
|
-
//# sourceMappingURL=url.d.mts.map
|
package/dist/url.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.mts","names":[],"sources":["../src/url.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;iBA4BgB,iBAAA,CACd,WAAA,UACA,QAAA,EAAU,aAAA,EACV,YAAA,EAAc,mBAAA"}
|
package/dist/url.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url.mjs","names":[],"sources":["../src/url.ts"],"sourcesContent":["/**\n * URL resolution and query merging utilities.\n *\n * @module @zap-studio/fetch/url\n */\n\nimport type { ExtendedRequestInit, FetchDefaults } from \"./types.js\";\n\n/**\n * Resolves final request URL by applying baseURL and layered search params.\n *\n * Search param precedence:\n * 1. `defaults.searchParams`\n * 2. search params already present in `resourceUrl`\n * 3. per-request `searchParams`\n *\n * @example\n * const finalUrl = resolveRequestUrl(\n * \"/users?page=2\",\n * { ...defaults, baseURL: \"https://api.example.com\", searchParams: { locale: \"en\" } },\n * { page: \"3\" },\n * );\n * // https://api.example.com/users?locale=en&page=3\n *\n * @throws {TypeError} When `baseURL` and `resourceUrl` cannot be resolved by\n * `URL`, or when default/per-request search params cannot be converted by\n * `URLSearchParams`.\n */\nexport function resolveRequestUrl(\n resourceUrl: string,\n defaults: FetchDefaults,\n searchParams: ExtendedRequestInit[\"searchParams\"] | undefined,\n): string {\n const url = defaults.baseURL\n ? new URL(resourceUrl, ensureTrailingSlash(defaults.baseURL)).toString()\n : resourceUrl;\n\n return resolveSearchParams(url, defaults.searchParams, searchParams);\n}\n\n/**\n * Resolves search params by applying default params, URL params, then request params.\n */\nfunction resolveSearchParams(\n url: string,\n defaultSearchParams: FetchDefaults[\"searchParams\"] | undefined,\n searchParams: ExtendedRequestInit[\"searchParams\"] | undefined,\n): string {\n if (!defaultSearchParams && searchParams === undefined) {\n return url;\n }\n\n const hashIndex = url.indexOf(\"#\");\n const hasFragment = hashIndex >= 0;\n const urlWithoutHash = hasFragment ? url.slice(0, hashIndex) : url;\n const hash = hasFragment ? url.slice(hashIndex + 1) : \"\";\n const queryIndex = urlWithoutHash.indexOf(\"?\");\n const pathname = queryIndex >= 0 ? urlWithoutHash.slice(0, queryIndex) : urlWithoutHash;\n const urlSearchParams = queryIndex >= 0 ? urlWithoutHash.slice(queryIndex + 1) : undefined;\n const resolvedSearchParams = new URLSearchParams();\n\n mergeSearchParams(resolvedSearchParams, defaultSearchParams);\n mergeSearchParams(resolvedSearchParams, urlSearchParams);\n mergeSearchParams(resolvedSearchParams, searchParams);\n\n const resolvedSearch = resolvedSearchParams.toString();\n const fragmentSuffix = hasFragment ? `#${hash}` : \"\";\n\n if (!resolvedSearch) {\n return `${pathname}${fragmentSuffix}`;\n }\n\n return `${pathname}?${resolvedSearch}${fragmentSuffix}`;\n}\n\n/**\n * Ensures a URL has a trailing slash for relative URL resolution.\n */\nfunction ensureTrailingSlash(url: string): string {\n return url.endsWith(\"/\") ? url : `${url}/`;\n}\n\n/**\n * Copies search params into target, overriding duplicate keys.\n */\nfunction mergeSearchParams(\n target: URLSearchParams,\n source: ExtendedRequestInit[\"searchParams\"] | undefined,\n): void {\n for (const [key, value] of new URLSearchParams(source)) {\n target.set(key, value);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA4BA,SAAgB,kBACd,aACA,UACA,cACQ;AAKR,QAAO,oBAJK,SAAS,UACjB,IAAI,IAAI,aAAa,oBAAoB,SAAS,QAAQ,CAAC,CAAC,UAAU,GACtE,aAE4B,SAAS,cAAc,aAAa;;;;;AAMtE,SAAS,oBACP,KACA,qBACA,cACQ;AACR,KAAI,CAAC,uBAAuB,iBAAiB,KAAA,EAC3C,QAAO;CAGT,MAAM,YAAY,IAAI,QAAQ,IAAI;CAClC,MAAM,cAAc,aAAa;CACjC,MAAM,iBAAiB,cAAc,IAAI,MAAM,GAAG,UAAU,GAAG;CAC/D,MAAM,OAAO,cAAc,IAAI,MAAM,YAAY,EAAE,GAAG;CACtD,MAAM,aAAa,eAAe,QAAQ,IAAI;CAC9C,MAAM,WAAW,cAAc,IAAI,eAAe,MAAM,GAAG,WAAW,GAAG;CACzE,MAAM,kBAAkB,cAAc,IAAI,eAAe,MAAM,aAAa,EAAE,GAAG,KAAA;CACjF,MAAM,uBAAuB,IAAI,iBAAiB;AAElD,mBAAkB,sBAAsB,oBAAoB;AAC5D,mBAAkB,sBAAsB,gBAAgB;AACxD,mBAAkB,sBAAsB,aAAa;CAErD,MAAM,iBAAiB,qBAAqB,UAAU;CACtD,MAAM,iBAAiB,cAAc,IAAI,SAAS;AAElD,KAAI,CAAC,eACH,QAAO,GAAG,WAAW;AAGvB,QAAO,GAAG,SAAS,GAAG,iBAAiB;;;;;AAMzC,SAAS,oBAAoB,KAAqB;AAChD,QAAO,IAAI,SAAS,IAAI,GAAG,MAAM,GAAG,IAAI;;;;;AAM1C,SAAS,kBACP,QACA,QACM;AACN,MAAK,MAAM,CAAC,KAAK,UAAU,IAAI,gBAAgB,OAAO,CACpD,QAAO,IAAI,KAAK,MAAM"}
|