@stacksjs/http 0.75.423 → 0.75.432
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/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/retry-after.d.ts +2 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { retryAfterMilliseconds } from './retry-after';
|
|
1
2
|
/**
|
|
2
3
|
* `fetch` wrapper with one budget for requests and retry waits. Honors
|
|
3
4
|
* numeric and HTTP-date `Retry-After` on 429/503 responses.
|
|
@@ -99,3 +100,4 @@ export declare enum Response {
|
|
|
99
100
|
HTTP_NOT_EXTENDED = 510,
|
|
100
101
|
HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511,
|
|
101
102
|
}
|
|
103
|
+
export { retryAfterMilliseconds } from './retry-after';
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
2
|
+
function I(r,_=Date.now()){let E=r?.trim();if(!E||!Number.isFinite(_))return null;if(/^\d+(?:\.\d+)?$/.test(E)){let t=Number(E)*1000;return Number.isFinite(t)&&t<=Number.MAX_SAFE_INTEGER?Math.ceil(t):null}if(!/^(?:[a-z]{3}, \d{2} [a-z]{3} \d{4} \d{2}:\d{2}:\d{2} GMT|[a-z]+, \d{2}-[a-z]{3}-\d{2} \d{2}:\d{2}:\d{2} GMT|[a-z]{3} [a-z]{3} [ \d]\d \d{2}:\d{2}:\d{2} \d{4})$/i.test(E))return null;let P=Date.parse(E);return Number.isFinite(P)?Math.max(0,P-_):null}var u;((T)=>{T[T.HTTP_CONTINUE=100]="HTTP_CONTINUE";T[T.HTTP_SWITCHING_PROTOCOLS=101]="HTTP_SWITCHING_PROTOCOLS";T[T.HTTP_OK=200]="HTTP_OK";T[T.HTTP_CREATED=201]="HTTP_CREATED";T[T.HTTP_ACCEPTED=202]="HTTP_ACCEPTED";T[T.HTTP_NON_AUTHORITATIVE_INFORMATION=203]="HTTP_NON_AUTHORITATIVE_INFORMATION";T[T.HTTP_NO_CONTENT=204]="HTTP_NO_CONTENT";T[T.HTTP_RESET_CONTENT=205]="HTTP_RESET_CONTENT";T[T.HTTP_PARTIAL_CONTENT=206]="HTTP_PARTIAL_CONTENT";T[T.HTTP_MULTIPLE_CHOICES=300]="HTTP_MULTIPLE_CHOICES";T[T.HTTP_MOVED_PERMANENTLY=301]="HTTP_MOVED_PERMANENTLY";T[T.HTTP_FOUND=302]="HTTP_FOUND";T[T.HTTP_SEE_OTHER=303]="HTTP_SEE_OTHER";T[T.HTTP_NOT_MODIFIED=304]="HTTP_NOT_MODIFIED";T[T.HTTP_USE_PROXY=305]="HTTP_USE_PROXY";T[T.HTTP_UNUSED=306]="HTTP_UNUSED";T[T.HTTP_TEMPORARY_REDIRECT=307]="HTTP_TEMPORARY_REDIRECT";T[T.HTTP_PERMANENT_REDIRECT=308]="HTTP_PERMANENT_REDIRECT";T[T.HTTP_BAD_REQUEST=400]="HTTP_BAD_REQUEST";T[T.HTTP_UNAUTHORIZED=401]="HTTP_UNAUTHORIZED";T[T.HTTP_PAYMENT_REQUIRED=402]="HTTP_PAYMENT_REQUIRED";T[T.HTTP_FORBIDDEN=403]="HTTP_FORBIDDEN";T[T.HTTP_NOT_FOUND=404]="HTTP_NOT_FOUND";T[T.HTTP_METHOD_NOT_ALLOWED=405]="HTTP_METHOD_NOT_ALLOWED";T[T.HTTP_NOT_ACCEPTABLE=406]="HTTP_NOT_ACCEPTABLE";T[T.HTTP_PROXY_AUTHENTICATION_REQUIRED=407]="HTTP_PROXY_AUTHENTICATION_REQUIRED";T[T.HTTP_REQUEST_TIMEOUT=408]="HTTP_REQUEST_TIMEOUT";T[T.HTTP_CONFLICT=409]="HTTP_CONFLICT";T[T.HTTP_GONE=410]="HTTP_GONE";T[T.HTTP_LENGTH_REQUIRED=411]="HTTP_LENGTH_REQUIRED";T[T.HTTP_PRECONDITION_FAILED=412]="HTTP_PRECONDITION_FAILED";T[T.HTTP_REQUEST_ENTITY_TOO_LARGE=413]="HTTP_REQUEST_ENTITY_TOO_LARGE";T[T.HTTP_REQUEST_URI_TOO_LONG=414]="HTTP_REQUEST_URI_TOO_LONG";T[T.HTTP_UNSUPPORTED_MEDIA_TYPE=415]="HTTP_UNSUPPORTED_MEDIA_TYPE";T[T.HTTP_REQUESTED_RANGE_NOT_SATISFIABLE=416]="HTTP_REQUESTED_RANGE_NOT_SATISFIABLE";T[T.HTTP_EXPECTATION_FAILED=417]="HTTP_EXPECTATION_FAILED";T[T.HTTP_I_AM_A_TEAPOT=418]="HTTP_I_AM_A_TEAPOT";T[T.HTTP_MISDIRECTED_REQUEST=421]="HTTP_MISDIRECTED_REQUEST";T[T.HTTP_UNPROCESSABLE_ENTITY=422]="HTTP_UNPROCESSABLE_ENTITY";T[T.HTTP_LOCKED=423]="HTTP_LOCKED";T[T.HTTP_FAILED_DEPENDENCY=424]="HTTP_FAILED_DEPENDENCY";T[T.HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL=425]="HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL";T[T.HTTP_UPGRADE_REQUIRED=426]="HTTP_UPGRADE_REQUIRED";T[T.HTTP_PRECONDITION_REQUIRED=428]="HTTP_PRECONDITION_REQUIRED";T[T.HTTP_TOO_MANY_REQUESTS=429]="HTTP_TOO_MANY_REQUESTS";T[T.HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE=431]="HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE";T[T.HTTP_UNAVAILABLE_FOR_LEGAL_REASONS=451]="HTTP_UNAVAILABLE_FOR_LEGAL_REASONS";T[T.HTTP_INTERNAL_SERVER_ERROR=500]="HTTP_INTERNAL_SERVER_ERROR";T[T.HTTP_NOT_IMPLEMENTED=501]="HTTP_NOT_IMPLEMENTED";T[T.HTTP_BAD_GATEWAY=502]="HTTP_BAD_GATEWAY";T[T.HTTP_SERVICE_UNAVAILABLE=503]="HTTP_SERVICE_UNAVAILABLE";T[T.HTTP_GATEWAY_TIMEOUT=504]="HTTP_GATEWAY_TIMEOUT";T[T.HTTP_VERSION_NOT_SUPPORTED=505]="HTTP_VERSION_NOT_SUPPORTED";T[T.HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL=506]="HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL";T[T.HTTP_INSUFFICIENT_STORAGE=507]="HTTP_INSUFFICIENT_STORAGE";T[T.HTTP_LOOP_DETECTED=508]="HTTP_LOOP_DETECTED";T[T.HTTP_NOT_EXTENDED=510]="HTTP_NOT_EXTENDED";T[T.HTTP_NETWORK_AUTHENTICATION_REQUIRED=511]="HTTP_NETWORK_AUTHENTICATION_REQUIRED"})(u||={});async function U(r,_={}){let{timeoutMs:E=30000,retry:P=0,...t}=_;if(!Number.isFinite(E)||E<=0||E>2147483647)throw RangeError("timeoutMs must be positive and within the platform timer range");if(!Number.isSafeInteger(P)||P<0)throw RangeError("retry must be a non-negative safe integer");let i=new AbortController,N=t.signal??(r instanceof Request?r.signal:void 0),A=N?AbortSignal.any([N,i.signal]):i.signal,a=!(t.body instanceof ReadableStream)&&!(r instanceof Request&&r.body!==null),D=setTimeout(()=>i.abort(Error(`Request timed out after ${E}ms`)),E);try{for(let H=0;;H++){A.throwIfAborted();let O=await fetch(r,{...t,signal:A});if(!a||![429,503].includes(O.status)||H>=P)return O;let l=I(O.headers.get("retry-after"))??Math.min(2**H*1000,30000);await O.body?.cancel(),await d(l,A)}}finally{clearTimeout(D)}}function d(r,_){return _.throwIfAborted(),new Promise((E,P)=>{let t=()=>{clearTimeout(N),_.removeEventListener("abort",i)},i=()=>{t(),P(_.reason)},N=setTimeout(()=>{t(),E()},Math.min(r,2147483647));if(_.addEventListener("abort",i,{once:!0}),_.aborted)i()})}export{u as Response,U as fetchWithBudget,I as retryAfterMilliseconds};
|