@scirexs/fetchy 0.8.1 → 0.8.2
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/esm/main.js +1 -1
- package/package.json +1 -1
- package/types/main.d.ts +2 -12
- package/types/main.d.ts.map +1 -1
package/esm/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export{y as fetchy,E as fy,m as HTTPStatusError,x as setFetchy,d as sfetchy};const u={a:15,b:0,c:3,d:30,e:3,f:!0,g:!1,h:[500,502,503,504,408,429],i:["retry-after","ratelimit-reset","x-ratelimit-reset"],j:!1},N=["POST","PATCH","CONNECT"],h=["text","json","bytes","blob","arrayBuffer","formData"],S=["fetch","get","head","post","put","patch","delete"];let l={};class m extends Error{status;response;constructor(t){super(`${t.status} ${t.url}`),this.name="HTTPStatusError",this.status=t.status,this.response=t}}function E(e){const t=Object.assign({},e);return R(t),R(t,!0),t}function d(e,t){return _(e,t,!0)}function y(e,t){return _(e,t)}function x(e){l=e}function _(e,t,n=!1){t=o(l,t);const r=H(e,t),a=v(r,e,t);return z(G(e,r,a,n),n)}function o(e,t,n){return{...e,...t,...n&&{method:n}}}function A(e){return typeof e=="string"}function M(e){return typeof e=="number"}function b(e){return typeof e=="boolean"}function f(e){return e instanceof Request}function C(e){return!!(e&&typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype)}function s(e,t){return(t??-1)>=0?t:e}function H(e,t){const{method:n,body:r,timeout:a,retry:c,bearer:i,native:Y,jitter:K,headers:Q,signal:V,...j}=t??{};return{headers:D(t,f(e)?e.headers:null),method:n?n.toUpperCase():f(e)?e.method:r==null?"GET":"POST",...P(r),...j}}function P(e){return e instanceof ReadableStream?null:{body:g(e)?JSON.stringify(e):e}}function g(e){return!!(M(e)||b(e)||Array.isArray(e)||C(e))}function D(e,t){const n=new Headers(e?.headers);if(!n.has("Accept")&&!t?.has("Accept")&&n.set("Accept","application/json, text/plain"),!n.has("Content-Type")&&!t?.has("Content-Type")){const r=B(e?.body);r&&n.set("Content-Type",r)}return e?.bearer&&n.set("Authorization",`Bearer ${e.bearer}`),n}function B(e){return g(e)?"application/json":e==null||A(e)||e instanceof FormData||e instanceof URLSearchParams||e instanceof Blob&&e.type?"":"application/octet-stream"}function F(e,t){return b(t)?{...u,e:1}:{e:Math.max(s(u.e,t?.maxAttempts),1),c:Math.max(s(u.c,t?.interval),.01),d:Math.max(s(u.d,t?.maxInterval),1),f:t?.retryOnTimeout??u.f,g:t?.idempotentOnly?N.includes(e.method??""):!1,h:t?.statusCodes??u.h,i:t?.respectHeaders??u.i}}function v(e,t,n){return{...F(e,n?.retry),a:s(u.a,n?.timeout),b:s(u.b,n?.jitter),j:n?.native??u.j,k:w(f(t)?t.signal:null,n?.signal),l:n?.url,m:n?.base,n:n?.body}}function w(e,t){if(!(!e&&!t))return e&&t?AbortSignal.any([e,t]):e||(t??void 0)}function I(e){return e.a<=0?e.k:w(AbortSignal.timeout(e.a*1e3),e.k)}async function T(e,t=!1){if(e<=0)return;const n=Math.trunc((t?Math.random():1)*e*1e3);await new Promise(r=>setTimeout(r,n))}async function O(e,t,n,r){if(t.g||e>=t.e-1||!r)return!1;if(n instanceof Response){if(t.j||!t.h.includes(n.status))return!1;const a=k(e,t,n.headers);return a>t.d?!1:(await T(a),!0)}else return n instanceof Error&&n.name=="TimeoutError"&&t.f}function k(e,t,n){return t.i.some(r=>n.has(r))?U(t,n)??t.c:Math.min(t.c*2**e,t.d)}function U(e,t){for(const n of e.i){const r=q(t.get(n)?.trim());if(!Number.isNaN(r))return Math.max(r,e.c)}}function q(e){if(!e)return NaN;const t=Number.parseInt(e,10);return Number.isNaN(t)?Math.ceil((new Date(e).getTime()-Date.now())/1e3):t}function J(e,t){if(!(t.n instanceof ReadableStream))return e;const n=["GET","HEAD"].includes(e.method)?"POST":e.method;return new Request(e,{method:n,body:t.n})}function L(e,t){return f(t)||(t||(t=e?.l??""),f(t))?t:new Request(URL.parse(t,e?.m)??"")}function $(e){let t;return async n=>{n&&await t?.body?.cancel();const r=t??e;return n||(t=t?t.clone():e.clone()),r}}async function G(e,t,n,r){let a;for(let c=0;c<n.e;c++)try{c===0&&(a=$(J(L(n,e),n)));const i=await W(await a(),t,n);if(await O(c,n,i,a))continue;if((i.status>=400||i.status<100)&&!n.j)throw new m(i);return i}catch(i){if(await O(c,n,i,a))continue;if(r)return null;throw i}finally{await a?.(!0)}throw new Error}async function W(e,t,n){return await T(n.b,!0),await fetch(e,{...t,signal:I(n)})}function z(e,t){return Object.assign(e,Object.fromEntries([...t?h.map(n=>[n,()=>e.then(r=>r[n]()).catch(()=>null)]):h.map(n=>[n,()=>e.then(r=>r[n]())])]))}function R(e,t){for(const n of S){const r=(t?"s":"")+n;e[r]=function(a,c){const i=n==="fetch"?o(this,c):o(this,c,n);return t?d(a,i):y(a,i)}}}
|
package/package.json
CHANGED
package/types/main.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { _buildOption, _cloneRequestF, _correctNumber, _createRequest, _DEFAULT, _fetchWithJitter, _fetchWithRetry, _findRetryHeader, _genMethods, _getBody, _getContentType, _getHeaders, _getNextInterval, _getOptions, _getRequestInit, _getRetryOption, _includeStream, _isBool, _isJSONObject, _isNumber, _isPlain, _isRequest, _isString, _main, _makeFetchyResponse, _mergeSignals, _parseRetryHeader, _shouldRetry, _wait, _withTimeout, fetchy, fy, HTTPStatusError, setFetchy, sfetchy, };
|
|
2
2
|
import type { Fetchy, FetchyBody, FetchyOptions, FetchyResponse, FetchySafeResponse, RetryOptions } from "./types.js";
|
|
3
3
|
/** Default configuration values for fetchy. */
|
|
4
4
|
declare const _DEFAULT: Options;
|
|
@@ -137,7 +137,7 @@ declare function sfetchy(url?: string | URL | Request | null, options?: FetchyOp
|
|
|
137
137
|
*
|
|
138
138
|
* // POST request with JSON body and authentication
|
|
139
139
|
* const result = await fetchy("https://api.example.com/create", {
|
|
140
|
-
* method:
|
|
140
|
+
* method: "POST",
|
|
141
141
|
* body: { name: "John", age: 30 },
|
|
142
142
|
* bearer: "your-token-here"
|
|
143
143
|
* }).json();
|
|
@@ -194,15 +194,11 @@ declare function _isString(v: unknown): v is string;
|
|
|
194
194
|
declare function _isNumber(v: unknown): v is number;
|
|
195
195
|
/** Type guard: checks if value is a boolean. @internal */
|
|
196
196
|
declare function _isBool(v: unknown): v is boolean;
|
|
197
|
-
/** Type guard: checks if value is a ReadableStream. @internal */
|
|
198
|
-
declare function _isStream(v: unknown): v is ReadableStream;
|
|
199
197
|
/** Type guard: checks if value is a Request. @internal */
|
|
200
198
|
declare function _isRequest(v: unknown): v is Request;
|
|
201
199
|
/** Type guard: checks if value is a plain object (not array, null, or other object types). @internal */
|
|
202
200
|
declare function _isPlain(v: unknown): v is object;
|
|
203
201
|
/** Corrects a number to be non-negative, using default if invalid. @internal */
|
|
204
|
-
declare function _assign<T extends {}>(target: T, source: unknown): T;
|
|
205
|
-
/** Corrects a number to be non-negative, using default if invalid. @internal */
|
|
206
202
|
declare function _correctNumber(dflt: number, num?: number): number;
|
|
207
203
|
/** Converts FetchyOptions to standard RequestInit format. @internal */
|
|
208
204
|
declare function _getRequestInit(url?: InputArg, options?: FetchyOptions): RequestInit;
|
|
@@ -212,12 +208,8 @@ declare function _getBody(body?: FetchyBody): Record<string, BodyInit> | null;
|
|
|
212
208
|
declare function _isJSONObject(arg?: FetchyBody): boolean;
|
|
213
209
|
/** Constructs request headers with automatic Content-Type and Authorization. @internal */
|
|
214
210
|
declare function _getHeaders(options?: FetchyOptions, reqHeaders?: Headers | null): Headers;
|
|
215
|
-
/** Checks if header is absent in both option headers and request headers. @internal */
|
|
216
|
-
declare function _isNoHeader(name: string, optionHeader: Headers, reqHeaders?: Headers | null): boolean;
|
|
217
211
|
/** Determines Content-Type header based on body type. @internal */
|
|
218
212
|
declare function _getContentType(body?: FetchyBody): string;
|
|
219
|
-
/** Checks if Content-Type should be handled by native fetch. @internal */
|
|
220
|
-
declare function _handleByNative(body?: FetchyBody): boolean;
|
|
221
213
|
/** Extracts retry-related options with defaults. @internal */
|
|
222
214
|
declare function _getRetryOption(init: RequestInit, options?: RetryOptions | false): InternalRetry;
|
|
223
215
|
/** Converts FetchyOptions to internal Options format with validated values. @internal */
|
|
@@ -228,8 +220,6 @@ declare function _mergeSignals(s1?: AbortSignal | null, s2?: AbortSignal | null)
|
|
|
228
220
|
declare function _withTimeout(opts: Options): AbortSignal | undefined;
|
|
229
221
|
/** Waits for specified seconds with optional randomization. @internal */
|
|
230
222
|
declare function _wait(sec: number, random?: boolean): Promise<void>;
|
|
231
|
-
/** Checks if HTTP status code indicates an error. @internal */
|
|
232
|
-
declare function _isHttpError(stat: number): boolean;
|
|
233
223
|
/** Determines whether to retry based on conditions and waits before next attempt. @internal */
|
|
234
224
|
declare function _shouldRetry(count: number, opts: Options, r: Response | unknown, fn?: unknown): Promise<boolean>;
|
|
235
225
|
/** Calculates next retry interval using exponential backoff or response headers. @internal */
|
package/types/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|