@gauts/ft 0.1.0 → 0.1.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/README.md CHANGED
@@ -5,9 +5,11 @@ A small, typed HTTP client built on the native Fetch API.
5
5
  - ✅ Ready-to-use default client
6
6
  - ✅ Configured instances with `ft.create()`
7
7
  - ✅ Typed response shortcuts
8
+ - ✅ Browser file downloads with `.download()`
8
9
  - ✅ JSON bodies and search parameters
9
10
  - ✅ Timeout and opt-in retries
10
11
  - ✅ Typed HTTP, network, and timeout errors
12
+ - ✅ Structured error information with `errorInfo()`
11
13
  - ✅ Upload and download progress with native streams
12
14
  - ✅ Request, response, retry, error, and status callbacks
13
15
  - ✅ Automatic browser/server base URL selection
@@ -143,20 +145,41 @@ const accounts = await api
143
145
 
144
146
  Supported values are strings, numbers, booleans, `null`, `undefined`, and arrays of those values. `null` and `undefined` are omitted. Request parameters replace instance parameters with the same name.
145
147
 
148
+ An input `Request` already owns its URL. Passing request-specific `searchParams` with it throws instead of silently ignoring them.
149
+
146
150
  ## Response shortcuts
147
151
 
148
152
  ```ts
149
153
  api.get("data").json<MyType>();
150
154
  api.get("data").text();
151
155
  api.get("data").blob();
156
+ api.get("file").download({ filename: "report.pdf" });
152
157
  api.get("data").arrayBuffer();
153
- api.get("data").bytes();
154
158
  api.get("data").formData();
155
159
  api.get("data").response();
156
160
  ```
157
161
 
158
162
  `json<T>()` defaults to `unknown`. The generic type provides compile-time typing only; it does not validate the response at runtime. Empty or invalid JSON rejects with the native parsing error.
159
163
 
164
+ ## File downloads
165
+
166
+ Use `.download()` to save a response directly in the browser:
167
+
168
+ ```ts
169
+ await api
170
+ .post("invoices/pdf", {
171
+ json: { invoice_id: "invoice-id" },
172
+ onDownloadProgress: ({ percent, transferred, total }) => {
173
+ console.log(percent, transferred, total);
174
+ },
175
+ })
176
+ .download({ filename: "invoice.pdf" });
177
+ ```
178
+
179
+ The explicit `filename` has priority. When omitted, the name is read from the standard `Content-Disposition` response header and falls back to `download`. Path segments are removed from filenames before the browser receives them.
180
+
181
+ `.download()` is browser-only and rejects with a `TypeError` in server runtimes. Use `.blob()`, `.arrayBuffer()`, or `.response()` when the response must be processed on the server.
182
+
160
183
  ## Configuration
161
184
 
162
185
  ### Instance options
@@ -292,7 +315,7 @@ const api = ft.create({
292
315
  });
293
316
  ```
294
317
 
295
- Only `GET` and `HEAD` are retried by default. Add mutation methods explicitly only when the endpoint is idempotent. Request streams are never replayed or buffered silently. `Retry-After` is respected and capped by `maxDelay`.
318
+ Only `GET` and `HEAD` are retried by default. Add mutation methods explicitly only when the endpoint is idempotent. Request streams are never replayed or buffered silently. A `Retry-After` value within `maxDelay` is followed exactly without jitter. Responses requesting a longer delay are not retried.
296
319
 
297
320
  ## Timeout and cancellation
298
321
 
@@ -310,8 +333,9 @@ The timeout covers all attempts and retry delays until the final response header
310
333
 
311
334
  ```ts
312
335
  const api = ft.create({
313
- beforeRequest: ({ attempt, request }) => {
336
+ beforeRequest: ({ attempt, isServer, request }) => {
314
337
  request.headers.set("x-attempt", String(attempt));
338
+ request.headers.set("x-runtime", isServer ? "server" : "client");
315
339
  },
316
340
 
317
341
  afterResponse: ({ response }) => {
@@ -340,6 +364,7 @@ beforeRequest
340
364
  ```
341
365
 
342
366
  `afterResponse` may return a replacement `Response`. `onError` may return a replacement `Error`.
367
+ Every lifecycle callback receives `isServer`, calculated once when the request operation starts.
343
368
 
344
369
  ## Status actions
345
370
 
@@ -348,8 +373,12 @@ beforeRequest
348
373
  ```ts
349
374
  const api = ft.create({
350
375
  onStatus: {
351
- 401: ({ response }) => {
352
- console.log("Unauthorized", response.url);
376
+ 401: ({ isServer, request }) => {
377
+ if (!isServer) {
378
+ window.location.replace("/login");
379
+ }
380
+
381
+ console.log("Unauthorized", request.url);
353
382
  },
354
383
  503: () => {
355
384
  throw new Error("Maintenance mode");
@@ -378,7 +407,7 @@ await api
378
407
  console.log({ percent, transferred, total });
379
408
  },
380
409
  })
381
- .blob();
410
+ .download({ filename: "download.bin" });
382
411
  ```
383
412
 
384
413
  `total` and `percent` are `null` when the runtime or server does not provide a known size. Upload progress depends on native request stream support. The package does not switch to XMLHttpRequest or another transport.
@@ -386,7 +415,13 @@ await api
386
415
  ## Errors
387
416
 
388
417
  ```ts
389
- import { FetchError, HTTPError, NetworkError, TimeoutError } from "@gauts/ft";
418
+ import {
419
+ errorInfo,
420
+ FetchError,
421
+ HTTPError,
422
+ NetworkError,
423
+ TimeoutError,
424
+ } from "@gauts/ft";
390
425
  ```
391
426
 
392
427
  - `HTTPError` exposes `request` and `response`.
@@ -394,6 +429,19 @@ import { FetchError, HTTPError, NetworkError, TimeoutError } from "@gauts/ft";
394
429
  - `TimeoutError` exposes `request` and `timeout`.
395
430
  - `FetchError` is the shared base class.
396
431
 
432
+ Use `errorInfo()` to obtain a consistent result without consuming the original response:
433
+
434
+ ```ts
435
+ try {
436
+ await api.get("accounts");
437
+ } catch (err) {
438
+ const { code, message, status } = await errorInfo(err);
439
+ console.log({ code, message, status });
440
+ }
441
+ ```
442
+
443
+ It reads `error`, `message`, and `code` from JSON error responses. HTTP errors use the response status; errors without an HTTP response use status `0`. Unknown errors return `Request failed`.
444
+
397
445
  ## Current scope
398
446
 
399
447
  This version contains only the framework-independent native Fetch client. It can select browser/server URLs and filter incoming headers, but it never imports a framework or discovers a framework request context by itself. The consuming application provides that context through `getHeaders`. Authentication, session management, and application caching remain outside the package.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,OAAO,EACP,aAAa,EAOhB,MAAM,YAAY,CAAC;AAucpB,eAAO,MAAM,aAAa,GAAI,SAAQ,aAAkB,KAAG,OAOzD,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAER,OAAO,EACP,aAAa,EAOhB,MAAM,YAAY,CAAC;AAmepB,eAAO,MAAM,aAAa,GAAI,SAAQ,aAAkB,KAAG,OAOzD,CAAC"}
package/dist/client.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { DEFAULTS, FORWARD_HEADERS } from "./config.js";
2
+ import { saveDownload } from "./download.js";
2
3
  import { HTTPError, NetworkError, TimeoutError } from "./errors.js";
3
- import { getBodySize, trackResponse, trackStream } from "./progress.js";
4
- import { canRetry, getRetryDelay, resolveRetry, sleep } from "./retry.js";
4
+ import { getBodySize, getContentLength, trackResponse, trackStream } from "./progress.js";
5
+ import { canRetry, getBackoffDelay, getRetryDelay, resolveRetry, sleep } from "./retry.js";
5
6
  import { resolveUrl } from "./url.js";
6
7
  const CONFIG_KEYS = new Set([
7
8
  "afterResponse",
@@ -43,13 +44,13 @@ const isStream = (body) => {
43
44
  const isRuntimeBaseUrl = (baseUrl) => {
44
45
  return typeof baseUrl === "object" && !(baseUrl instanceof URL);
45
46
  };
46
- const getBaseUrl = (baseUrl) => {
47
+ const getBaseUrl = ({ baseUrl, isServer }) => {
47
48
  if (!isRuntimeBaseUrl(baseUrl))
48
49
  return baseUrl;
49
- return typeof window === "undefined" ? baseUrl.server : baseUrl.client;
50
+ return isServer ? baseUrl.server : baseUrl.client;
50
51
  };
51
- const getForwardedHeaders = async (config) => {
52
- if (!config.forwardHeaders || typeof window !== "undefined")
52
+ const getForwardedHeaders = async ({ config, isServer }) => {
53
+ if (!config.forwardHeaders || !isServer)
53
54
  return undefined;
54
55
  if (!config.getHeaders) {
55
56
  throw new TypeError("getHeaders is required when forwardHeaders is enabled on the server");
@@ -93,15 +94,20 @@ const getBody = (options, headers) => {
93
94
  if (options.json === undefined)
94
95
  throw new TypeError("json cannot be undefined");
95
96
  const body = JSON.stringify(options.json);
97
+ if (typeof body !== "string")
98
+ throw new TypeError("json must be serializable");
96
99
  if (!headers.has("content-type"))
97
100
  headers.set("content-type", "application/json");
98
101
  return body;
99
102
  };
100
- const buildRequest = ({ config, forwardedHeaders, input, method, options, signal, }) => {
103
+ const buildRequest = ({ config, forwardedHeaders, input, isServer, method, options, signal, }) => {
104
+ if (input instanceof Request && options.searchParams !== undefined) {
105
+ throw new TypeError("searchParams cannot be combined with a Request input");
106
+ }
101
107
  const requestInput = input instanceof Request
102
108
  ? input
103
109
  : resolveUrl({
104
- baseUrl: getBaseUrl(config.baseUrl),
110
+ baseUrl: getBaseUrl({ baseUrl: config.baseUrl, isServer }),
105
111
  input,
106
112
  prefix: config.prefix,
107
113
  requestSearchParams: options.searchParams,
@@ -124,8 +130,7 @@ const buildRequest = ({ config, forwardedHeaders, input, method, options, signal
124
130
  : init;
125
131
  let request = new Request(requestInput, requestInit);
126
132
  if (options.onUploadProgress && request.body) {
127
- const headerSize = Number(request.headers.get("content-length"));
128
- const total = getBodySize(body) ?? (Number.isFinite(headerSize) ? headerSize : null);
133
+ const total = getBodySize(body) ?? getContentLength(request.headers);
129
134
  const tracked = trackStream({
130
135
  onProgress: options.onUploadProgress,
131
136
  stream: request.body,
@@ -140,6 +145,9 @@ const buildRequest = ({ config, forwardedHeaders, input, method, options, signal
140
145
  return { replayable: !isStream(body) && !(input instanceof Request && input.body), request };
141
146
  };
142
147
  const createOperation = ({ signal, timeout, }) => {
148
+ if (timeout !== false && (!Number.isFinite(timeout) || timeout <= 0)) {
149
+ throw new TypeError("timeout must be a positive number or false");
150
+ }
143
151
  const controller = new AbortController();
144
152
  let timedOut = false;
145
153
  let timer;
@@ -149,9 +157,6 @@ const createOperation = ({ signal, timeout, }) => {
149
157
  else
150
158
  signal?.addEventListener("abort", abort, { once: true });
151
159
  if (timeout !== false) {
152
- if (!Number.isFinite(timeout) || timeout <= 0) {
153
- throw new TypeError("timeout must be a positive number or false");
154
- }
155
160
  timer = setTimeout(() => {
156
161
  timedOut = true;
157
162
  controller.abort();
@@ -194,23 +199,24 @@ class Task {
194
199
  async blob() {
195
200
  return (await this.#promise).blob();
196
201
  }
202
+ async download(options = {}) {
203
+ await saveDownload({ options, response: await this.#promise });
204
+ }
197
205
  async arrayBuffer() {
198
206
  return (await this.#promise).arrayBuffer();
199
207
  }
200
- async bytes() {
201
- return (await this.#promise).bytes();
202
- }
203
208
  async formData() {
204
209
  return (await this.#promise).formData();
205
210
  }
206
211
  }
207
212
  const createMethod = (config, method) => (input = "", options = {}) => new Task(async () => {
213
+ const isServer = typeof window === "undefined";
208
214
  const timeout = options.timeout ?? config.timeout ?? DEFAULTS.timeout;
215
+ const retry = resolveRetry(options.retry ?? config.retry);
209
216
  const operation = createOperation({
210
217
  signal: options.signal ?? (input instanceof Request ? input.signal : undefined),
211
218
  timeout,
212
219
  });
213
- const retry = resolveRetry(options.retry ?? config.retry);
214
220
  const beforeRequest = options.beforeRequest ?? config.beforeRequest;
215
221
  const afterResponse = options.afterResponse ?? config.afterResponse;
216
222
  const onRetry = options.onRetry ?? config.onRetry;
@@ -221,14 +227,19 @@ const createMethod = (config, method) => (input = "", options = {}) => new Task(
221
227
  let lastRequest = null;
222
228
  const handleError = async (error) => {
223
229
  const current = toError(error);
224
- const changed = await onError?.({ attempt, error: current, request: lastRequest });
230
+ const changed = await onError?.({
231
+ attempt,
232
+ error: current,
233
+ isServer,
234
+ request: lastRequest,
235
+ });
225
236
  return changed ?? current;
226
237
  };
227
238
  const getTimeoutError = () => new TimeoutError(operation.timeout === false ? 0 : operation.timeout, lastRequest);
228
239
  try {
229
240
  let forwardedHeaders;
230
241
  try {
231
- forwardedHeaders = await getForwardedHeaders(config);
242
+ forwardedHeaders = await getForwardedHeaders({ config, isServer });
232
243
  }
233
244
  catch (error) {
234
245
  throw await handleError(error);
@@ -241,13 +252,14 @@ const createMethod = (config, method) => (input = "", options = {}) => new Task(
241
252
  config,
242
253
  forwardedHeaders,
243
254
  input,
255
+ isServer,
244
256
  method,
245
257
  options,
246
258
  signal: operation.signal,
247
259
  });
248
260
  lastRequest = built.request;
249
261
  try {
250
- await beforeRequest?.({ attempt, request: built.request });
262
+ await beforeRequest?.({ attempt, isServer, request: built.request });
251
263
  }
252
264
  catch (error) {
253
265
  throw await handleError(error);
@@ -263,20 +275,22 @@ const createMethod = (config, method) => (input = "", options = {}) => new Task(
263
275
  if (operation.signal.aborted)
264
276
  throw await handleError(error);
265
277
  const networkError = new NetworkError(error, built.request);
266
- if (!canRetry({
267
- attempt,
268
- config: retry,
269
- method,
270
- replayable: built.replayable,
271
- })) {
278
+ if (!retry ||
279
+ !canRetry({
280
+ attempt,
281
+ config: retry,
282
+ method,
283
+ replayable: built.replayable,
284
+ })) {
272
285
  throw await handleError(networkError);
273
286
  }
274
- const delay = getRetryDelay({ attempt, config: retry, response: null });
287
+ const delay = getBackoffDelay({ attempt, config: retry });
275
288
  try {
276
289
  await onRetry?.({
277
290
  attempt,
278
291
  delay,
279
292
  error: networkError,
293
+ isServer,
280
294
  request: built.request,
281
295
  response: null,
282
296
  });
@@ -291,6 +305,7 @@ const createMethod = (config, method) => (input = "", options = {}) => new Task(
291
305
  response =
292
306
  (await afterResponse?.({
293
307
  attempt,
308
+ isServer,
294
309
  request: built.request,
295
310
  response,
296
311
  })) ?? response;
@@ -308,27 +323,33 @@ const createMethod = (config, method) => (input = "", options = {}) => new Task(
308
323
  replayable: built.replayable,
309
324
  });
310
325
  if (shouldRetry && retry) {
311
- const error = new HTTPError(response, built.request);
312
326
  const delay = getRetryDelay({ attempt, config: retry, response });
313
- try {
314
- await onRetry?.({
315
- attempt,
316
- delay,
317
- error,
318
- request: built.request,
319
- response,
320
- });
321
- await response.body?.cancel();
322
- await sleep(delay, operation.signal);
323
- }
324
- catch (retryError) {
325
- throw await handleError(operation.didTimeout() ? getTimeoutError() : retryError);
327
+ if (delay !== null) {
328
+ const error = new HTTPError(response, built.request);
329
+ try {
330
+ await onRetry?.({
331
+ attempt,
332
+ delay,
333
+ error,
334
+ isServer,
335
+ request: built.request,
336
+ response,
337
+ });
338
+ if (response.body && !response.bodyUsed && !response.body.locked) {
339
+ await response.body.cancel();
340
+ }
341
+ await sleep(delay, operation.signal);
342
+ }
343
+ catch (retryError) {
344
+ throw await handleError(operation.didTimeout() ? getTimeoutError() : retryError);
345
+ }
346
+ continue;
326
347
  }
327
- continue;
328
348
  }
329
349
  response = trackResponse(response, options.onDownloadProgress);
330
350
  const context = {
331
351
  attempt,
352
+ isServer,
332
353
  request: built.request,
333
354
  response,
334
355
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAY3F,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAiCtC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACxB,eAAe;IACf,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,SAAS;IACT,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,cAAc;IACd,iBAAiB;IACjB,SAAS;CACZ,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IACzB,eAAe;IACf,eAAe;IACf,SAAS;IACT,MAAM;IACN,oBAAoB;IACpB,SAAS;IACT,SAAS;IACT,UAAU;IACV,kBAAkB;IAClB,OAAO;IACP,cAAc;IACd,iBAAiB;IACjB,SAAS;CACZ,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE;IAC/B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1F,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,IAAiC,EAA0B,EAAE;IAC3E,OAAO,OAAO,cAAc,KAAK,WAAW,IAAI,IAAI,YAAY,cAAc,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAiC,EAA6B,EAAE;IACtF,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,YAAY,GAAG,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAmB,EAAE,EAAE;IAC1D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAE/C,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAA4B,EAAE,EAAE;IACjF,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,qEAAqE,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,eAAe,CAAC,CAAC;IAE/C,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,UAAU;gBAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,EAAE,IAAI,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAG,MAAmC,EAAE,EAAE;IAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,KAAqC,EAAE,IAAiB,EAAE,EAAE;IACzE,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAC3C,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAE,OAAgB,EAAE,EAAE;IAC1D,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAEhF,MAAM,IAAI,GAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAE/E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAElF,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAClB,MAAM,EACN,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,GACU,EAAE,EAAE;IACpB,IAAI,KAAK,YAAY,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,YAAY,GACd,KAAK,YAAY,OAAO;QACpB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,UAAU,CAAC;YACP,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC1D,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,mBAAmB,EAAE,OAAO,CAAC,YAAY;YACzC,YAAY,EAAE,MAAM,CAAC,YAAY;SACpC,CAAC,CAAC;IAEb,MAAM,YAAY,GAAG,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9F,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,IAAI,MAAM,IAAI,OAAO,CAAC;IAExD,MAAM,IAAI,GAAgB;QACtB,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC;QAC/B,GAAG,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC;QACjC,OAAO;QACP,MAAM;QACN,MAAM;QACN,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/B,CAAC;IAEF,MAAM,WAAW,GAAgB,QAAQ,CAAC,IAAI,CAAC;QAC3C,CAAC,CAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAwB;QACpD,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAErE,MAAM,OAAO,GAAG,WAAW,CAAC;YACxB,UAAU,EAAE,OAAO,CAAC,gBAAgB;YACpC,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,KAAK;SACR,CAAC,CAAC;QAEH,MAAM,WAAW,GAAgB;YAC7B,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;SACI,CAAC;QACvB,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EACrB,MAAM,EACN,OAAO,GAIV,EAAa,EAAE;IACZ,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAgD,CAAC;IAErD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErD,IAAI,MAAM,EAAE,OAAO;QAAE,KAAK,EAAE,CAAC;;QACxB,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACpB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACpB,QAAQ,GAAG,IAAI,CAAC;YAChB,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAED,OAAO;QACH,OAAO,EAAE,GAAG,EAAE;YACV,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,OAAO;KACV,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,IAAI;IACG,QAAQ,CAAoB;IAErC,YAAY,GAA4B;QACpC,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CACA,WAA4E,EAC5E,UAA2E;QAE3E,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CACD,UAAyE;QAEzE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,SAA+B;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACN,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAgB,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI;QACN,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAA2B,EAAE;QACxC,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;CACJ;AAED,MAAM,YAAY,GACd,CAAC,MAAqB,EAAE,MAAkB,EAAE,EAAE,CAC9C,CAAC,QAAsB,EAAE,EAAE,UAA0B,EAAE,EAAE,EAAE,CACvD,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;IAChB,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IACtE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,eAAe,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC;IACpE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;IAErD,MAAM,eAAe,GACjB,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC;IAElF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,WAAW,GAAmB,IAAI,CAAC;IAEvC,MAAM,WAAW,GAAG,KAAK,EAAE,KAAc,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAG,MAAM,OAAO,EAAE,CAAC;YAC5B,OAAO;YACP,KAAK,EAAE,OAAO;YACd,QAAQ;YACR,OAAO,EAAE,WAAW;SACvB,CAAC,CAAC;QAEH,OAAO,OAAO,IAAI,OAAO,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,EAAE,CACzB,IAAI,YAAY,CAAC,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEvF,IAAI,CAAC;QACD,IAAI,gBAAqC,CAAC;QAE1C,IAAI,CAAC;YACD,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,EAAE;YAAE,MAAM,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;QAEvE,SAAS,CAAC;YACN,OAAO,IAAI,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,YAAY,CAAC;gBACvB,MAAM;gBACN,gBAAgB;gBAChB,KAAK;gBACL,QAAQ;gBACR,MAAM;gBACN,OAAO;gBACP,MAAM,EAAE,SAAS,CAAC,MAAM;aAC3B,CAAC,CAAC;YACH,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;YAE5B,IAAI,CAAC;gBACD,MAAM,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,IAAI,QAAkB,CAAC;YAEvB,IAAI,CAAC;gBACD,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;oBACzB,MAAM,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;gBAE7D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5D,IACI,CAAC,KAAK;oBACN,CAAC,QAAQ,CAAC;wBACN,OAAO;wBACP,MAAM,EAAE,KAAK;wBACb,MAAM;wBACN,UAAU,EAAE,KAAK,CAAC,UAAU;qBAC/B,CAAC,EACJ,CAAC;oBACC,MAAM,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1C,CAAC;gBAED,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC;oBACD,MAAM,OAAO,EAAE,CAAC;wBACZ,OAAO;wBACP,KAAK;wBACL,KAAK,EAAE,YAAY;wBACnB,QAAQ;wBACR,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,QAAQ,EAAE,IAAI;qBACjB,CAAC,CAAC;oBACH,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBACzC,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBAClB,MAAM,MAAM,WAAW,CACnB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,UAAU,CAC1D,CAAC;gBACN,CAAC;gBACD,SAAS;YACb,CAAC;YAED,IAAI,CAAC;gBACD,QAAQ;oBACJ,CAAC,MAAM,aAAa,EAAE,CAAC;wBACnB,OAAO;wBACP,QAAQ;wBACR,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,QAAQ;qBACX,CAAC,CAAC,IAAI,QAAQ,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,IAAI,SAAS,CAAC,UAAU,EAAE;gBAAE,MAAM,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;YAEvE,MAAM,WAAW,GACb,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,QAAQ,CAAC;oBACL,OAAO;oBACP,MAAM,EAAE,KAAK;oBACb,MAAM;oBACN,UAAU,EAAE,KAAK,CAAC,UAAU;iBAC/B,CAAC,CAAC;YAEP,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAElE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAErD,IAAI,CAAC;wBACD,MAAM,OAAO,EAAE,CAAC;4BACZ,OAAO;4BACP,KAAK;4BACL,KAAK;4BACL,QAAQ;4BACR,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,QAAQ;yBACX,CAAC,CAAC;wBACH,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;4BAC/D,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjC,CAAC;wBACD,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;oBACzC,CAAC;oBAAC,OAAO,UAAU,EAAE,CAAC;wBAClB,MAAM,MAAM,WAAW,CACnB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,UAAU,CAC1D,CAAC;oBACN,CAAC;oBACD,SAAS;gBACb,CAAC;YACL,CAAC;YAED,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAoB;gBAC7B,OAAO;gBACP,QAAQ;gBACR,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ;aACX,CAAC;YAEF,MAAM,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAE7C,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,eAAe,EAAE,CAAC;gBAClC,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,QAAQ,CAAC;QACpB,CAAC;IACL,CAAC;YAAS,CAAC;QACP,SAAS,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;AACL,CAAC,CAAC,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAwB,EAAE,EAAW,EAAE,CAAC,CAAC;IACnE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IACtC,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAChC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IACpC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;CACnC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { DownloadOptions } from "./types.js";
2
+ type DownloadInput = {
3
+ options: DownloadOptions;
4
+ response: Response;
5
+ };
6
+ export declare const getDownloadName: ({ options, response }: DownloadInput) => string;
7
+ export declare const saveDownload: ({ options, response }: DownloadInput) => Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;CACtB,CAAC;AA6CF,eAAO,MAAM,eAAe,GAAI,uBAAuB,aAAa,WAEnE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,uBAAuB,aAAa,KAAG,OAAO,CAAC,IAAI,CAoBrF,CAAC"}
@@ -0,0 +1,55 @@
1
+ const DEFAULT_NAME = "download";
2
+ const encodedPattern = /(?:^|;)\s*filename\*\s*=\s*(?:"([^"]*)"|([^;]*))/i;
3
+ const filenamePattern = /(?:^|;)\s*filename\s*=\s*(?:"([^"]*)"|([^;]*))/i;
4
+ const cleanName = (value) => {
5
+ const name = value?.trim().split(/[\\/]/).at(-1)?.trim();
6
+ if (!name)
7
+ return undefined;
8
+ return name;
9
+ };
10
+ const getParam = ({ header, pattern }) => {
11
+ const match = pattern.exec(header);
12
+ return match?.[1] ?? match?.[2]?.trim();
13
+ };
14
+ const decodeName = (value) => {
15
+ const encoded = value?.match(/^UTF-8'[^']*'(.*)$/i)?.[1];
16
+ if (!encoded)
17
+ return undefined;
18
+ try {
19
+ return decodeURIComponent(encoded);
20
+ }
21
+ catch {
22
+ return undefined;
23
+ }
24
+ };
25
+ const getHeaderName = (response) => {
26
+ const header = response.headers.get("content-disposition");
27
+ if (!header)
28
+ return undefined;
29
+ const encoded = getParam({ header, pattern: encodedPattern });
30
+ const filename = getParam({ header, pattern: filenamePattern });
31
+ return cleanName(decodeName(encoded)) ?? cleanName(filename);
32
+ };
33
+ export const getDownloadName = ({ options, response }) => {
34
+ return cleanName(options.filename) ?? getHeaderName(response) ?? DEFAULT_NAME;
35
+ };
36
+ export const saveDownload = async ({ options, response }) => {
37
+ if (typeof document === "undefined" || typeof URL.createObjectURL !== "function") {
38
+ throw new TypeError("download() is only available in browser runtimes");
39
+ }
40
+ const blob = await response.blob();
41
+ const url = URL.createObjectURL(blob);
42
+ const anchor = document.createElement("a");
43
+ anchor.download = getDownloadName({ options, response });
44
+ anchor.hidden = true;
45
+ anchor.href = url;
46
+ try {
47
+ document.body.appendChild(anchor);
48
+ anchor.click();
49
+ }
50
+ finally {
51
+ anchor.remove();
52
+ setTimeout(() => URL.revokeObjectURL(url), 0);
53
+ }
54
+ };
55
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,3 +1,8 @@
1
+ export type ErrorInfo = {
2
+ code?: string;
3
+ message: string;
4
+ status: number;
5
+ };
1
6
  export declare class FetchError extends Error {
2
7
  readonly request: Request | null;
3
8
  constructor(message: string, request: Request | null, options?: ErrorOptions);
@@ -13,4 +18,5 @@ export declare class TimeoutError extends FetchError {
13
18
  readonly timeout: number;
14
19
  constructor(timeout: number, request: Request | null);
15
20
  }
21
+ export declare const errorInfo: (err: unknown) => Promise<ErrorInfo>;
16
22
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY;CAK/E;AAED,qBAAa,SAAU,SAAQ,UAAU;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAEhB,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;CAQnD;AAED,qBAAa,YAAa,SAAQ,UAAU;gBAC5B,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAMtD;AAED,qBAAa,YAAa,SAAQ,UAAU;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAKvD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAYF,qBAAa,UAAW,SAAQ,KAAK;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY;CAK/E;AAED,qBAAa,SAAU,SAAQ,UAAU;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAEhB,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;CAQnD;AAED,qBAAa,YAAa,SAAQ,UAAU;gBAC5B,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAMtD;AAED,qBAAa,YAAa,SAAQ,UAAU;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAKvD;AAWD,eAAO,MAAM,SAAS,GAAU,KAAK,OAAO,KAAG,OAAO,CAAC,SAAS,CAoB/D,CAAC"}
package/dist/errors.js CHANGED
@@ -1,3 +1,10 @@
1
+ const fallbackMessage = "Request failed";
2
+ const getRecord = (value) => {
3
+ return value !== null && typeof value === "object" ? value : null;
4
+ };
5
+ const getText = (value) => {
6
+ return typeof value === "string" && value.trim() ? value : undefined;
7
+ };
1
8
  export class FetchError extends Error {
2
9
  request;
3
10
  constructor(message, request, options) {
@@ -29,4 +36,31 @@ export class TimeoutError extends FetchError {
29
36
  this.timeout = timeout;
30
37
  }
31
38
  }
39
+ const getBody = async (err) => {
40
+ try {
41
+ const body = await err.response.clone().json();
42
+ return getRecord(body);
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ };
48
+ export const errorInfo = async (err) => {
49
+ const value = getRecord(err);
50
+ const response = getRecord(value?.response);
51
+ const body = err instanceof HTTPError ? await getBody(err) : null;
52
+ let status = 0;
53
+ if (err instanceof HTTPError)
54
+ status = err.response.status;
55
+ else if (typeof value?.status === "number")
56
+ status = value.status;
57
+ else if (typeof response?.status === "number")
58
+ status = response.status;
59
+ const message = getText(body?.error) ??
60
+ getText(body?.message) ??
61
+ getText(value?.message) ??
62
+ fallbackMessage;
63
+ const code = getText(body?.code) ?? getText(value?.code);
64
+ return code ? { code, message, status } : { message, status };
65
+ };
32
66
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IACxB,OAAO,CAAiB;IAEjC,YAAY,OAAe,EAAE,OAAuB,EAAE,OAAsB;QACxE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAED,MAAM,OAAO,SAAU,SAAQ,UAAU;IAC5B,QAAQ,CAAW;IAE5B,YAAY,QAAkB,EAAE,OAAgB;QAC5C,KAAK,CACD,8BAA8B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EACrF,OAAO,CACV,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,UAAU;IACxC,YAAY,KAAc,EAAE,OAAuB;QAC/C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;QAElF,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC/B,CAAC;CACJ;AAED,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC/B,OAAO,CAAS;IAEzB,YAAY,OAAe,EAAE,OAAuB;QAChD,KAAK,CAAC,2BAA2B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import type { Ft } from "./types.js";
2
2
  export { createFetcher } from "./client.js";
3
- export { FetchError, HTTPError, NetworkError, TimeoutError } from "./errors.js";
4
- export type { AfterResponse, BeforeRequest, ErrorContext, Fetcher, FetcherConfig, FetchMethod, FetchTask, Ft, ForwardHeaders, GetHeaders, HttpMethod, OnError, OnRetry, OnStatus, Progress, RequestContext, RequestInput, RequestOptions, ResponseContext, RetryConfig, RetryContext, RetryOption, RuntimeBaseUrl, SearchParams, SearchValue, StatusHandlers, } from "./types.js";
3
+ export { errorInfo, FetchError, HTTPError, NetworkError, TimeoutError } from "./errors.js";
4
+ export type { ErrorInfo } from "./errors.js";
5
+ export type { AfterResponse, BeforeRequest, DownloadOptions, ErrorContext, Fetcher, FetcherConfig, FetchMethod, FetchTask, Ft, ForwardHeaders, GetHeaders, HttpMethod, OnError, OnRetry, OnStatus, Progress, RequestContext, RequestInput, RequestOptions, ResponseContext, RetryConfig, RetryContext, RetryOption, RuntimeBaseUrl, SearchParams, SearchValue, StatusHandlers, } from "./types.js";
5
6
  declare const ft: Ft;
6
7
  export default ft;
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,YAAY,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,aAAa,EACb,WAAW,EACX,SAAS,EACT,EAAE,EACF,cAAc,EACd,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,GACjB,MAAM,YAAY,CAAC;AAIpB,QAAA,MAAM,EAAE,EAAE,EAGT,CAAC;AAEF,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3F,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,OAAO,EACP,aAAa,EACb,WAAW,EACX,SAAS,EACT,EAAE,EACF,cAAc,EACd,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,GACjB,MAAM,YAAY,CAAC;AAIpB,QAAA,MAAM,EAAE,EAAE,EAGT,CAAC;AAEF,eAAe,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createFetcher } from "./client.js";
2
2
  export { createFetcher } from "./client.js";
3
- export { FetchError, HTTPError, NetworkError, TimeoutError } from "./errors.js";
3
+ export { errorInfo, FetchError, HTTPError, NetworkError, TimeoutError } from "./errors.js";
4
4
  const client = createFetcher();
5
5
  const ft = {
6
6
  ...client,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA8BhF,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;AAE/B,MAAM,EAAE,GAAO;IACX,GAAG,MAAM;IACT,MAAM,EAAE,aAAa;CACxB,CAAC;AAEF,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgC3F,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;AAE/B,MAAM,EAAE,GAAO;IACX,GAAG,MAAM;IACT,MAAM,EAAE,aAAa;CACxB,CAAC;AAEF,eAAe,EAAE,CAAC"}
@@ -5,6 +5,7 @@ type TrackStreamInput = {
5
5
  total: number | null;
6
6
  };
7
7
  export declare const getBodySize: (body: BodyInit | null | undefined) => number | null;
8
+ export declare const getContentLength: (headers: Headers) => number | null;
8
9
  export declare const trackStream: ({ onProgress, stream, total }: TrackStreamInput) => ReadableStream<Uint8Array<ArrayBufferLike>>;
9
10
  export declare const trackResponse: (response: Response, onProgress?: (progress: Progress) => void) => Response;
10
11
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,gBAAgB,GAAG;IACpB,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAQF,eAAO,MAAM,WAAW,GAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,KAAG,MAAM,GAAG,IAUxE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,+BAA+B,gBAAgB,gDAiB1E,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,aAe1F,CAAC"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,gBAAgB,GAAG;IACpB,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAQF,eAAO,MAAM,WAAW,GAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,KAAG,MAAM,GAAG,IAUxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,MAAM,GAAG,IAO5D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,+BAA+B,gBAAgB,gDAiB1E,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,aAc1F,CAAC"}
package/dist/progress.js CHANGED
@@ -17,13 +17,20 @@ export const getBodySize = (body) => {
17
17
  return body.byteLength;
18
18
  return null;
19
19
  };
20
+ export const getContentLength = (headers) => {
21
+ const value = headers.get("content-length");
22
+ if (value === null || value.trim() === "")
23
+ return null;
24
+ const length = Number(value);
25
+ return Number.isFinite(length) && length >= 0 ? length : null;
26
+ };
20
27
  export const trackStream = ({ onProgress, stream, total }) => {
21
28
  let transferred = 0;
22
29
  onProgress(getProgress(0, total));
23
30
  return stream.pipeThrough(new TransformStream({
24
31
  flush: () => {
25
32
  if (transferred === 0)
26
- onProgress(getProgress(0, total ?? 0));
33
+ onProgress(getProgress(0, total));
27
34
  },
28
35
  transform: (chunk, controller) => {
29
36
  transferred += chunk.byteLength;
@@ -35,8 +42,7 @@ export const trackStream = ({ onProgress, stream, total }) => {
35
42
  export const trackResponse = (response, onProgress) => {
36
43
  if (!onProgress || !response.body)
37
44
  return response;
38
- const length = Number(response.headers.get("content-length"));
39
- const total = Number.isFinite(length) && length >= 0 ? length : null;
45
+ const total = getContentLength(response.headers);
40
46
  const body = trackStream({ onProgress, stream: response.body, total });
41
47
  const tracked = new Response(body, response);
42
48
  Object.defineProperties(tracked, {
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAG,CAAC,WAAmB,EAAE,KAAoB,EAAY,EAAE,CAAC,CAAC;IAC1E,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,KAAK;IACtE,KAAK;IACL,WAAW;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAiC,EAAiB,EAAE;IAC5E,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;IAC/E,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;QAClC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,YAAY,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAC3C,IAAI,IAAI,YAAY,WAAW;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC;IACxD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC;IAErD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAoB,EAAE,EAAE;IAC3E,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC,WAAW,CACrB,IAAI,eAAe,CAAyB;QACxC,KAAK,EAAE,GAAG,EAAE;YACR,IAAI,WAAW,KAAK,CAAC;gBAAE,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YAC7B,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC;YAChC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YAC5C,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;KACJ,CAAC,CACL,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAkB,EAAE,UAAyC,EAAE,EAAE;IAC3F,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE7C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;QAC7B,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE;QAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE;QAC9B,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE;KAC/B,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
package/dist/retry.d.ts CHANGED
@@ -6,14 +6,17 @@ type CanRetryInput = {
6
6
  method: HttpMethod;
7
7
  replayable: boolean;
8
8
  };
9
- type GetRetryDelayInput = {
9
+ type GetBackoffDelayInput = {
10
10
  attempt: number;
11
11
  config: ResolvedRetry;
12
- response: Response | null;
12
+ };
13
+ type GetRetryDelayInput = GetBackoffDelayInput & {
14
+ response: Response;
13
15
  };
14
16
  export declare const resolveRetry: (retry?: RetryOption) => ResolvedRetry | null;
15
17
  export declare const canRetry: ({ attempt, config, method, replayable }: CanRetryInput) => boolean;
16
- export declare const getRetryDelay: ({ attempt, config, response }: GetRetryDelayInput) => number;
18
+ export declare const getBackoffDelay: ({ attempt, config }: GetBackoffDelayInput) => number;
19
+ export declare const getRetryDelay: ({ attempt, config, response }: GetRetryDelayInput) => number | null;
17
20
  export declare const sleep: (delay: number, signal: AbortSignal) => Promise<void>;
18
21
  export {};
19
22
  //# sourceMappingURL=retry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAElD,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC7B,CAAC;AAQF,eAAO,MAAM,YAAY,GAAI,QAAQ,WAAW,KAAG,aAAa,GAAG,IAkBlE,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,yCAAyC,aAAa,YACgB,CAAC;AAchG,eAAO,MAAM,aAAa,GAAI,+BAA+B,kBAAkB,WAM9E,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,QAAQ,WAAW,kBAqBlD,CAAC"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAElD,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG,oBAAoB,GAAG;IAC7C,QAAQ,EAAE,QAAQ,CAAC;CACtB,CAAC;AAQF,eAAO,MAAM,YAAY,GAAI,QAAQ,WAAW,KAAG,aAAa,GAAG,IAkBlE,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,yCAAyC,aAAa,YACgB,CAAC;AAchG,eAAO,MAAM,eAAe,GAAI,qBAAqB,oBAAoB,WAKxE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,+BAA+B,kBAAkB,kBAQ9E,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,QAAQ,WAAW,kBAsBlD,CAAC"}
package/dist/retry.js CHANGED
@@ -32,12 +32,18 @@ const retryAfter = (response) => {
32
32
  const date = Date.parse(value);
33
33
  return Number.isNaN(date) ? null : Math.max(0, date - Date.now());
34
34
  };
35
- export const getRetryDelay = ({ attempt, config, response }) => {
36
- const headerDelay = response ? retryAfter(response) : null;
35
+ export const getBackoffDelay = ({ attempt, config }) => {
37
36
  const backoff = config.baseDelay * 2 ** (attempt - 1);
38
- const base = Math.min(headerDelay ?? backoff, config.maxDelay);
37
+ const base = Math.min(backoff, config.maxDelay);
39
38
  return config.jitter ? Math.round(Math.random() * base) : base;
40
39
  };
40
+ export const getRetryDelay = ({ attempt, config, response }) => {
41
+ const headerDelay = retryAfter(response);
42
+ if (headerDelay !== null) {
43
+ return headerDelay <= config.maxDelay ? headerDelay : null;
44
+ }
45
+ return getBackoffDelay({ attempt, config });
46
+ };
41
47
  export const sleep = (delay, signal) => new Promise((resolve, reject) => {
42
48
  const getError = () => signal.reason instanceof Error
43
49
  ? signal.reason
@@ -46,10 +52,14 @@ export const sleep = (delay, signal) => new Promise((resolve, reject) => {
46
52
  reject(getError());
47
53
  return;
48
54
  }
49
- const timer = setTimeout(resolve, delay);
50
- signal.addEventListener("abort", () => {
55
+ const abort = () => {
51
56
  clearTimeout(timer);
52
57
  reject(getError());
53
- }, { once: true });
58
+ };
59
+ const timer = setTimeout(() => {
60
+ signal.removeEventListener("abort", abort);
61
+ resolve();
62
+ }, delay);
63
+ signal.addEventListener("abort", abort, { once: true });
54
64
  });
55
65
  //# sourceMappingURL=retry.js.map
package/dist/retry.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -15,8 +15,12 @@ export type Progress = {
15
15
  total: number | null;
16
16
  transferred: number;
17
17
  };
18
+ export type DownloadOptions = {
19
+ filename?: string;
20
+ };
18
21
  export type RequestContext = {
19
22
  attempt: number;
23
+ isServer: boolean;
20
24
  request: Request;
21
25
  };
22
26
  export type ResponseContext = RequestContext & {
@@ -30,6 +34,7 @@ export type RetryContext = RequestContext & {
30
34
  export type ErrorContext = {
31
35
  attempt: number;
32
36
  error: Error;
37
+ isServer: boolean;
33
38
  request: Request | null;
34
39
  };
35
40
  export type BeforeRequest = (context: RequestContext) => unknown;
@@ -75,8 +80,8 @@ export type RequestOptions = Omit<RequestInit, "method"> & Lifecycle & Reliabili
75
80
  export type FetchTask = PromiseLike<Response> & {
76
81
  arrayBuffer: () => Promise<ArrayBuffer>;
77
82
  blob: () => Promise<Blob>;
78
- bytes: () => Promise<Uint8Array<ArrayBuffer>>;
79
83
  catch: <TResult = never>(onRejected?: ((reason: unknown) => PromiseLike<TResult> | TResult) | null) => Promise<Response | TResult>;
84
+ download: (options?: DownloadOptions) => Promise<void>;
80
85
  finally: (onFinally?: (() => void) | null) => Promise<Response>;
81
86
  formData: () => Promise<FormData>;
82
87
  json: <T = unknown>() => Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gauts/ft",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "A small, typed HTTP client built on the native Fetch API.",
5
5
  "license": "MIT",
6
6
  "author": "GVALFER",
@@ -38,7 +38,7 @@
38
38
  }
39
39
  },
40
40
  "scripts": {
41
- "clean": "node --eval \"import { rmSync } from 'node:fs'; rmSync('dist', { force: true, recursive: true })\"",
41
+ "clean": "node --input-type=module --eval \"import { rmSync } from 'node:fs'; rmSync('dist', { force: true, recursive: true })\"",
42
42
  "build": "npm run clean && tsc -p tsconfig.build.json",
43
43
  "typecheck": "tsc --noEmit",
44
44
  "lint": "eslint src tests examples",