From cb8324b2581dc65b41c382a50a40d9c62b43d478 Mon Sep 17 00:00:00 2001 From: Alejo Thomas Ortega Date: Fri, 5 May 2023 09:31:03 -0300 Subject: [PATCH] refactor: update fetcher interface to support retries --- etc/interfaces.api.md | 12 ++++++++++-- src/components/fetcher.ts | 16 +++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/etc/interfaces.api.md b/etc/interfaces.api.md index 1e61e83..1f0ee38 100644 --- a/etc/interfaces.api.md +++ b/etc/interfaces.api.md @@ -64,10 +64,10 @@ export interface IDatabase { query>(sql: string): Promise>; } -// @alpha (undocumented) +// @public (undocumented) export type IFetchComponent = { fetch(url: fetch_2.Request): Promise; - fetch(url: fetch_2.RequestInfo, init?: fetch_2.RequestInit): Promise; + fetch(url: fetch_2.RequestInfo, init?: RequestOptions): Promise; }; // @alpha (undocumented) @@ -372,6 +372,14 @@ export namespace Lifecycle { export function run>(config: ProgramConfig): PromiseLike>; } +// @public (undocumented) +export type RequestOptions = fetch_2.RequestInit & { + abortController?: AbortController; + timeout?: number; + attempts?: number; + retryDelay?: number; +}; + // @public (undocumented) export type Trace = Pick; diff --git a/src/components/fetcher.ts b/src/components/fetcher.ts index 3ff8b55..49ee9fd 100644 --- a/src/components/fetcher.ts +++ b/src/components/fetcher.ts @@ -1,9 +1,19 @@ import * as fetch from "node-fetch" /** - * @alpha + * @public + */ +export type RequestOptions = fetch.RequestInit & { + abortController?: AbortController + timeout?: number + attempts?: number + retryDelay?: number +} + +/** + * @public */ export type IFetchComponent = { fetch(url: fetch.Request): Promise - fetch(url: fetch.RequestInfo, init?: fetch.RequestInit): Promise -} \ No newline at end of file + fetch(url: fetch.RequestInfo, init?: RequestOptions): Promise +}