@zap-studio/fetch 0.5.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/url.d.ts DELETED
@@ -1,26 +0,0 @@
1
- import { ExtendedRequestInit, FetchDefaults } from "./types.js";
2
- //#region src/url.d.ts
3
- /**
4
- * Resolves final request URL by applying baseURL and layered search params.
5
- *
6
- * Search param precedence:
7
- * 1. `defaults.searchParams`
8
- * 2. search params already present in `resourceUrl`
9
- * 3. per-request `searchParams`
10
- *
11
- * @example
12
- * const finalUrl = resolveRequestUrl(
13
- * "/users?page=2",
14
- * { ...defaults, baseURL: "https://api.example.com", searchParams: { locale: "en" } },
15
- * { page: "3" },
16
- * );
17
- * // https://api.example.com/users?locale=en&page=3
18
- *
19
- * @throws {TypeError} When `baseURL` and `resourceUrl` cannot be resolved by
20
- * `URL`, or when default/per-request search params cannot be converted by
21
- * `URLSearchParams`.
22
- */
23
- declare const resolveRequestUrl: (resourceUrl: string, defaults: FetchDefaults, searchParams?: ExtendedRequestInit["searchParams"]) => string;
24
- //#endregion
25
- export { resolveRequestUrl };
26
- //# sourceMappingURL=url.d.ts.map
package/dist/url.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.d.ts","names":[],"sources":["../src/url.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;cAmFa,oBACX,qBACA,UAAU,eACV,eAAe"}
package/dist/url.js DELETED
@@ -1,60 +0,0 @@
1
- //#region src/url.ts
2
- /**
3
- * Copies search params into target, overriding duplicate keys.
4
- */
5
- const mergeSearchParams = (target, source) => {
6
- for (const [key, value] of new URLSearchParams(source)) target.set(key, value);
7
- };
8
- /**
9
- * Ensures a URL has a trailing slash for relative URL resolution.
10
- */
11
- const ensureTrailingSlash = (url) => url.endsWith("/") ? url : `${url}/`;
12
- /**
13
- * Resolves search params by applying default params, URL params, then request params.
14
- */
15
- const resolveSearchParams = (url, defaultSearchParams, searchParams) => {
16
- if (defaultSearchParams === void 0 && searchParams === void 0) return url;
17
- const hashIndex = url.indexOf("#");
18
- const hasFragment = hashIndex !== -1;
19
- const urlWithoutHash = hasFragment ? url.slice(0, hashIndex) : url;
20
- const hash = hasFragment ? url.slice(hashIndex + 1) : "";
21
- const queryIndex = urlWithoutHash.indexOf("?");
22
- const pathname = queryIndex === -1 ? urlWithoutHash : urlWithoutHash.slice(0, queryIndex);
23
- const urlSearchParams = queryIndex === -1 ? void 0 : urlWithoutHash.slice(queryIndex + 1);
24
- const resolvedSearchParams = new URLSearchParams();
25
- mergeSearchParams(resolvedSearchParams, defaultSearchParams);
26
- mergeSearchParams(resolvedSearchParams, urlSearchParams);
27
- mergeSearchParams(resolvedSearchParams, searchParams);
28
- const resolvedSearch = resolvedSearchParams.toString();
29
- const fragmentSuffix = hasFragment ? `#${hash}` : "";
30
- if (resolvedSearch.length === 0) return `${pathname}${fragmentSuffix}`;
31
- return `${pathname}?${resolvedSearch}${fragmentSuffix}`;
32
- };
33
- /**
34
- * Resolves final request URL by applying baseURL and layered search params.
35
- *
36
- * Search param precedence:
37
- * 1. `defaults.searchParams`
38
- * 2. search params already present in `resourceUrl`
39
- * 3. per-request `searchParams`
40
- *
41
- * @example
42
- * const finalUrl = resolveRequestUrl(
43
- * "/users?page=2",
44
- * { ...defaults, baseURL: "https://api.example.com", searchParams: { locale: "en" } },
45
- * { page: "3" },
46
- * );
47
- * // https://api.example.com/users?locale=en&page=3
48
- *
49
- * @throws {TypeError} When `baseURL` and `resourceUrl` cannot be resolved by
50
- * `URL`, or when default/per-request search params cannot be converted by
51
- * `URLSearchParams`.
52
- */
53
- const resolveRequestUrl = (resourceUrl, defaults, searchParams) => {
54
- const url = defaults.baseURL ? new URL(resourceUrl, ensureTrailingSlash(defaults.baseURL)).toString() : resourceUrl;
55
- return resolveSearchParams(url, defaults.searchParams, searchParams);
56
- };
57
- //#endregion
58
- export { resolveRequestUrl };
59
-
60
- //# sourceMappingURL=url.js.map
package/dist/url.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.js","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 * Copies search params into target, overriding duplicate keys.\n */\nconst 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\n/**\n * Ensures a URL has a trailing slash for relative URL resolution.\n */\nconst ensureTrailingSlash = (url: string): string =>\n url.endsWith(\"/\") ? url : `${url}/`;\n\n/**\n * Resolves search params by applying default params, URL params, then request params.\n */\nconst resolveSearchParams = (\n url: string,\n defaultSearchParams: FetchDefaults[\"searchParams\"] | undefined,\n searchParams: ExtendedRequestInit[\"searchParams\"] | undefined\n): string => {\n if (defaultSearchParams === undefined && searchParams === undefined) {\n return url;\n }\n\n const hashIndex = url.indexOf(\"#\");\n const hasFragment = hashIndex !== -1;\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 =\n queryIndex === -1 ? urlWithoutHash : urlWithoutHash.slice(0, queryIndex);\n const urlSearchParams =\n queryIndex === -1 ? undefined : urlWithoutHash.slice(queryIndex + 1);\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.length === 0) {\n return `${pathname}${fragmentSuffix}`;\n }\n\n return `${pathname}?${resolvedSearch}${fragmentSuffix}`;\n};\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 const resolveRequestUrl = (\n resourceUrl: string,\n defaults: FetchDefaults,\n searchParams?: ExtendedRequestInit[\"searchParams\"]\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"],"mappings":";;;;AAWA,MAAM,qBACJ,QACA,WACS;CACT,KAAK,MAAM,CAAC,KAAK,UAAU,IAAI,gBAAgB,MAAM,GACnD,OAAO,IAAI,KAAK,KAAK;AAEzB;;;;AAKA,MAAM,uBAAuB,QAC3B,IAAI,SAAS,GAAG,IAAI,MAAM,GAAG,IAAI;;;;AAKnC,MAAM,uBACJ,KACA,qBACA,iBACW;CACX,IAAI,wBAAwB,KAAA,KAAa,iBAAiB,KAAA,GACxD,OAAO;CAGT,MAAM,YAAY,IAAI,QAAQ,GAAG;CACjC,MAAM,cAAc,cAAc;CAClC,MAAM,iBAAiB,cAAc,IAAI,MAAM,GAAG,SAAS,IAAI;CAC/D,MAAM,OAAO,cAAc,IAAI,MAAM,YAAY,CAAC,IAAI;CACtD,MAAM,aAAa,eAAe,QAAQ,GAAG;CAC7C,MAAM,WACJ,eAAe,KAAK,iBAAiB,eAAe,MAAM,GAAG,UAAU;CACzE,MAAM,kBACJ,eAAe,KAAK,KAAA,IAAY,eAAe,MAAM,aAAa,CAAC;CACrE,MAAM,uBAAuB,IAAI,gBAAgB;CAEjD,kBAAkB,sBAAsB,mBAAmB;CAC3D,kBAAkB,sBAAsB,eAAe;CACvD,kBAAkB,sBAAsB,YAAY;CAEpD,MAAM,iBAAiB,qBAAqB,SAAS;CACrD,MAAM,iBAAiB,cAAc,IAAI,SAAS;CAElD,IAAI,eAAe,WAAW,GAC5B,OAAO,GAAG,WAAW;CAGvB,OAAO,GAAG,SAAS,GAAG,iBAAiB;AACzC;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAa,qBACX,aACA,UACA,iBACW;CACX,MAAM,MAAM,SAAS,UACjB,IAAI,IAAI,aAAa,oBAAoB,SAAS,OAAO,CAAC,CAAC,CAAC,SAAS,IACrE;CAEJ,OAAO,oBAAoB,KAAK,SAAS,cAAc,YAAY;AACrE"}