diff --git a/src/middleware.browser.ts b/src/middleware.browser.ts index e394746f..e0126dc0 100644 --- a/src/middleware.browser.ts +++ b/src/middleware.browser.ts @@ -15,7 +15,6 @@ export * from './middleware/promise' export * from './middleware/proxy' export * from './middleware/retry/browser-retry' export * from './middleware/urlEncoded' -export type * from './types' import {agent} from './middleware/agent/browser-agent' import {buildKeepAlive} from './middleware/keepAlive' diff --git a/src/middleware.ts b/src/middleware.ts index 03de2981..cb0732ec 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -15,7 +15,6 @@ export * from './middleware/promise' export * from './middleware/proxy' export * from './middleware/retry/node-retry' export * from './middleware/urlEncoded' -export type * from './types' import {agent} from './middleware/agent/node-agent' import {buildKeepAlive} from './middleware/keepAlive' diff --git a/src/middleware/base.ts b/src/middleware/base.ts index 1328dda3..10f0e2de 100644 --- a/src/middleware/base.ts +++ b/src/middleware/base.ts @@ -1,4 +1,4 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' const leadingSlash = /^\// const trailingSlash = /\/$/ diff --git a/src/middleware/debug.ts b/src/middleware/debug.ts index e8374529..de042398 100644 --- a/src/middleware/debug.ts +++ b/src/middleware/debug.ts @@ -1,6 +1,5 @@ import debugIt from 'debug' - -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' const SENSITIVE_HEADERS = ['cookie', 'authorization'] diff --git a/src/middleware/defaultOptionsProcessor.ts b/src/middleware/defaultOptionsProcessor.ts index 4295d9a1..eb6bdfb1 100644 --- a/src/middleware/defaultOptionsProcessor.ts +++ b/src/middleware/defaultOptionsProcessor.ts @@ -1,4 +1,4 @@ -import type {MiddlewareHooks, RequestOptions} from '../types' +import type {MiddlewareHooks, RequestOptions} from 'get-it' const isReactNative = typeof navigator === 'undefined' ? false : navigator.product === 'ReactNative' diff --git a/src/middleware/defaultOptionsValidator.ts b/src/middleware/defaultOptionsValidator.ts index 94581b0b..2841db7d 100644 --- a/src/middleware/defaultOptionsValidator.ts +++ b/src/middleware/defaultOptionsValidator.ts @@ -1,4 +1,4 @@ -import type {MiddlewareHooks} from '../types' +import type {MiddlewareHooks} from 'get-it' const validUrl = /^https?:\/\//i diff --git a/src/middleware/headers.ts b/src/middleware/headers.ts index effeafbc..f89e7245 100644 --- a/src/middleware/headers.ts +++ b/src/middleware/headers.ts @@ -1,4 +1,4 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' /** @public */ export function headers(_headers: any, opts: any = {}) { diff --git a/src/middleware/httpErrors.ts b/src/middleware/httpErrors.ts index e7b5a9db..2d29d2e3 100644 --- a/src/middleware/httpErrors.ts +++ b/src/middleware/httpErrors.ts @@ -1,4 +1,4 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' class HttpError extends Error { response: any diff --git a/src/middleware/injectResponse.ts b/src/middleware/injectResponse.ts index afbd4cc9..b6b132ba 100644 --- a/src/middleware/injectResponse.ts +++ b/src/middleware/injectResponse.ts @@ -1,4 +1,4 @@ -import type {Middleware, MiddlewareHooks, MiddlewareResponse} from '../types' +import type {Middleware, MiddlewareHooks, MiddlewareResponse} from 'get-it' /** @public */ export function injectResponse( diff --git a/src/middleware/jsonRequest.ts b/src/middleware/jsonRequest.ts index cff76863..beaadffe 100644 --- a/src/middleware/jsonRequest.ts +++ b/src/middleware/jsonRequest.ts @@ -1,4 +1,5 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' + import {isBuffer} from '../util/isBuffer' import {isPlainObject} from '../util/isPlainObject' diff --git a/src/middleware/jsonResponse.ts b/src/middleware/jsonResponse.ts index 957196b5..96b8ffd2 100644 --- a/src/middleware/jsonResponse.ts +++ b/src/middleware/jsonResponse.ts @@ -1,4 +1,4 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' /** @public */ export function jsonResponse(opts?: any) { diff --git a/src/middleware/mtls.ts b/src/middleware/mtls.ts index 7a226211..ac778206 100644 --- a/src/middleware/mtls.ts +++ b/src/middleware/mtls.ts @@ -1,4 +1,5 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' + import {isBrowserOptions} from '../util/isBrowserOptions' /** @public */ diff --git a/src/middleware/observable.ts b/src/middleware/observable.ts index bbcf0b74..ac2f41ea 100644 --- a/src/middleware/observable.ts +++ b/src/middleware/observable.ts @@ -1,4 +1,5 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' + import global from '../util/global' /** @public */ diff --git a/src/middleware/progress/browser-progress.ts b/src/middleware/progress/browser-progress.ts index 29f50eb7..50fe2ee9 100644 --- a/src/middleware/progress/browser-progress.ts +++ b/src/middleware/progress/browser-progress.ts @@ -1,4 +1,4 @@ -import type {Middleware} from '../../types' +import type {Middleware} from 'get-it' /** @public */ export function progress() { diff --git a/src/middleware/progress/node-progress.ts b/src/middleware/progress/node-progress.ts index e9028475..4c73c446 100644 --- a/src/middleware/progress/node-progress.ts +++ b/src/middleware/progress/node-progress.ts @@ -1,7 +1,6 @@ +import type {Middleware} from 'get-it' import progressStream from 'progress-stream' -import type {Middleware} from '../../types' - function normalizer(stage: 'download' | 'upload') { return (prog: any) => ({ stage, diff --git a/src/middleware/promise.ts b/src/middleware/promise.ts index 82f47de8..607628f5 100644 --- a/src/middleware/promise.ts +++ b/src/middleware/promise.ts @@ -1,4 +1,4 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' /** @public */ export const promise = ( diff --git a/src/middleware/proxy.ts b/src/middleware/proxy.ts index 0d8b5ced..27ce63f1 100644 --- a/src/middleware/proxy.ts +++ b/src/middleware/proxy.ts @@ -1,4 +1,4 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' /** @public */ export function proxy(_proxy: any) { diff --git a/src/middleware/retry/browser-retry.ts b/src/middleware/retry/browser-retry.ts index 854d0d48..a2d705a9 100644 --- a/src/middleware/retry/browser-retry.ts +++ b/src/middleware/retry/browser-retry.ts @@ -1,4 +1,5 @@ -import type {RetryOptions} from '../../types' +import type {RetryOptions} from 'get-it' + import defaultShouldRetry from '../../util/browser-shouldRetry' import sharedRetry from './shared-retry' diff --git a/src/middleware/retry/node-retry.ts b/src/middleware/retry/node-retry.ts index c6515b7c..cd39ae4a 100644 --- a/src/middleware/retry/node-retry.ts +++ b/src/middleware/retry/node-retry.ts @@ -1,4 +1,5 @@ -import type {RetryOptions} from '../../types' +import type {RetryOptions} from 'get-it' + import defaultShouldRetry from '../../util/node-shouldRetry' import sharedRetry from './shared-retry' diff --git a/src/middleware/retry/shared-retry.ts b/src/middleware/retry/shared-retry.ts index b9118f43..963b1022 100644 --- a/src/middleware/retry/shared-retry.ts +++ b/src/middleware/retry/shared-retry.ts @@ -1,4 +1,4 @@ -import type {Middleware, RetryOptions} from '../../types' +import type {Middleware, RetryOptions} from 'get-it' const isStream = (stream: any) => stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function' @@ -13,6 +13,7 @@ export default (opts: RetryOptions) => { onError: (err, context) => { const options = context.options const max = options.maxRetries || maxRetries + const delay = options.retryDelay || retryDelay const shouldRetry = options.shouldRetry || allowRetry const attemptNumber = options.attemptNumber || 0 @@ -32,7 +33,7 @@ export default (opts: RetryOptions) => { }) // Wait a given amount of time before doing the request again - setTimeout(() => context.channels.request.publish(newContext), retryDelay(attemptNumber)) + setTimeout(() => context.channels.request.publish(newContext), delay(attemptNumber)) // Signal that we've handled the error and that it should not propagate further return null diff --git a/src/middleware/urlEncoded.ts b/src/middleware/urlEncoded.ts index c9308547..00e8948d 100644 --- a/src/middleware/urlEncoded.ts +++ b/src/middleware/urlEncoded.ts @@ -1,4 +1,5 @@ -import type {Middleware} from '../types' +import type {Middleware} from 'get-it' + import {isBuffer} from '../util/isBuffer' import {isPlainObject} from '../util/isPlainObject' diff --git a/src/request/browser-request.ts b/src/request/browser-request.ts index 74956431..f9ff713f 100644 --- a/src/request/browser-request.ts +++ b/src/request/browser-request.ts @@ -1,6 +1,6 @@ +import type {HttpRequest, MiddlewareResponse, RequestAdapter, RequestOptions} from 'get-it' import parseHeaders from 'parse-headers' -import type {HttpRequest, MiddlewareResponse, RequestAdapter, RequestOptions} from '../types' import {FetchXhr} from './browser/fetchXhr' /** diff --git a/src/request/node-request.ts b/src/request/node-request.ts index f0100e40..804a61e5 100644 --- a/src/request/node-request.ts +++ b/src/request/node-request.ts @@ -1,5 +1,11 @@ import decompressResponse from 'decompress-response' import follow, {type FollowResponse, type RedirectableRequest} from 'follow-redirects' +import type { + FinalizeNodeOptionsPayload, + HttpRequest, + MiddlewareResponse, + RequestAdapter, +} from 'get-it' import http from 'http' import https from 'https' import toStream from 'into-stream' @@ -8,12 +14,6 @@ import progressStream from 'progress-stream' import qs from 'querystring' import url from 'url' -import type { - FinalizeNodeOptionsPayload, - HttpRequest, - MiddlewareResponse, - RequestAdapter, -} from '../types' import {lowerCaseHeaders} from '../util/lowerCaseHeaders' import {getProxyOptions, rewriteUriForProxy} from './node/proxy' import {concat} from './node/simpleConcat' diff --git a/src/types.ts b/src/types.ts index 95b0cbb3..73fa4739 100644 --- a/src/types.ts +++ b/src/types.ts @@ -12,6 +12,7 @@ export interface RequestOptions { headers?: any maxRedirects?: number maxRetries?: number + retryDelay?: (attemptNumber: number) => number method?: string proxy?: any query?: any diff --git a/src/util/isBrowserOptions.ts b/src/util/isBrowserOptions.ts index 6d64fe2f..1d1d6491 100644 --- a/src/util/isBrowserOptions.ts +++ b/src/util/isBrowserOptions.ts @@ -1,4 +1,4 @@ -import type {RequestOptions} from '../types' +import type {RequestOptions} from 'get-it' export function isBrowserOptions(options: unknown): options is RequestOptions { return typeof options === 'object' && options !== null && !('protocol' in options) diff --git a/src/util/middlewareReducer.ts b/src/util/middlewareReducer.ts index f71c976e..fad617af 100644 --- a/src/util/middlewareReducer.ts +++ b/src/util/middlewareReducer.ts @@ -1,4 +1,4 @@ -import type {ApplyMiddleware, MiddlewareReducer} from '../types' +import type {ApplyMiddleware, MiddlewareReducer} from 'get-it' export const middlewareReducer = (middleware: MiddlewareReducer) => function applyMiddleware(hook, defaultValue, ...args) { diff --git a/src/util/pubsub.ts b/src/util/pubsub.ts index 5d704017..0fa26e19 100644 --- a/src/util/pubsub.ts +++ b/src/util/pubsub.ts @@ -1,6 +1,6 @@ // Code borrowed from https://github.com/bjoerge/nano-pubsub -import type {PubSub, Subscriber} from '../types' +import type {PubSub, Subscriber} from 'get-it' export function createPubSub(): PubSub { const subscribers: {[id: string]: Subscriber} = Object.create(null)