summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/got/dist
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/got/dist')
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/as-promise/index.d.ts3
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/as-promise/index.js158
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/as-promise/types.d.ts38
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/as-promise/types.js17
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/calculate-retry-delay.d.ts4
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/calculate-retry-delay.js29
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/errors.d.ts90
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/errors.js178
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/index.d.ts191
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/index.js1124
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/options.d.ts1255
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/options.js1653
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/parse-link-header.d.ts4
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/parse-link-header.js33
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/response.d.ts110
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/response.js39
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/timed-out.d.ts30
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/timed-out.js138
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/get-body-size.d.ts3
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/get-body-size.js22
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/is-client-request.d.ts5
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/is-client-request.js4
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/is-form-data.d.ts8
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/is-form-data.js4
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/is-unix-socket-url.d.ts3
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/is-unix-socket-url.js4
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/options-to-url.d.ts14
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/options-to-url.js50
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/proxy-events.d.ts3
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/proxy-events.js15
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/unhandle.d.ts11
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/unhandle.js20
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/url-to-options.d.ts15
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/url-to-options.js22
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/weakable-map.d.ts8
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/core/utils/weakable-map.js38
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/create.d.ts3
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/create.js187
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/index.d.ts15
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/index.js20
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/types.d.ts263
-rw-r--r--includes/external/addressbook/node_modules/got/dist/source/types.js1
42 files changed, 0 insertions, 5832 deletions
diff --git a/includes/external/addressbook/node_modules/got/dist/source/as-promise/index.d.ts b/includes/external/addressbook/node_modules/got/dist/source/as-promise/index.d.ts
deleted file mode 100644
index e560880..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/as-promise/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import Request from '../core/index.js';
-import { type CancelableRequest } from './types.js';
-export default function asPromise<T>(firstRequest?: Request): CancelableRequest<T>;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/as-promise/index.js b/includes/external/addressbook/node_modules/got/dist/source/as-promise/index.js
deleted file mode 100644
index d91fd09..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/as-promise/index.js
+++ /dev/null
@@ -1,158 +0,0 @@
-import { EventEmitter } from 'node:events';
-import is from '@sindresorhus/is';
-import PCancelable from 'p-cancelable';
-import { HTTPError, RetryError, } from '../core/errors.js';
-import Request from '../core/index.js';
-import { parseBody, isResponseOk } from '../core/response.js';
-import proxyEvents from '../core/utils/proxy-events.js';
-import { CancelError } from './types.js';
-const proxiedRequestEvents = [
- 'request',
- 'response',
- 'redirect',
- 'uploadProgress',
- 'downloadProgress',
-];
-export default function asPromise(firstRequest) {
- let globalRequest;
- let globalResponse;
- let normalizedOptions;
- const emitter = new EventEmitter();
- const promise = new PCancelable((resolve, reject, onCancel) => {
- onCancel(() => {
- globalRequest.destroy();
- });
- onCancel.shouldReject = false;
- onCancel(() => {
- reject(new CancelError(globalRequest));
- });
- const makeRequest = (retryCount) => {
- // Errors when a new request is made after the promise settles.
- // Used to detect a race condition.
- // See https://github.com/sindresorhus/got/issues/1489
- onCancel(() => { });
- const request = firstRequest ?? new Request(undefined, undefined, normalizedOptions);
- request.retryCount = retryCount;
- request._noPipe = true;
- globalRequest = request;
- request.once('response', async (response) => {
- // Parse body
- const contentEncoding = (response.headers['content-encoding'] ?? '').toLowerCase();
- const isCompressed = contentEncoding === 'gzip' || contentEncoding === 'deflate' || contentEncoding === 'br';
- const { options } = request;
- if (isCompressed && !options.decompress) {
- response.body = response.rawBody;
- }
- else {
- try {
- response.body = parseBody(response, options.responseType, options.parseJson, options.encoding);
- }
- catch (error) {
- // Fall back to `utf8`
- response.body = response.rawBody.toString();
- if (isResponseOk(response)) {
- request._beforeError(error);
- return;
- }
- }
- }
- try {
- const hooks = options.hooks.afterResponse;
- for (const [index, hook] of hooks.entries()) {
- // @ts-expect-error TS doesn't notice that CancelableRequest is a Promise
- // eslint-disable-next-line no-await-in-loop
- response = await hook(response, async (updatedOptions) => {
- options.merge(updatedOptions);
- options.prefixUrl = '';
- if (updatedOptions.url) {
- options.url = updatedOptions.url;
- }
- // Remove any further hooks for that request, because we'll call them anyway.
- // The loop continues. We don't want duplicates (asPromise recursion).
- options.hooks.afterResponse = options.hooks.afterResponse.slice(0, index);
- throw new RetryError(request);
- });
- if (!(is.object(response) && is.number(response.statusCode) && !is.nullOrUndefined(response.body))) {
- throw new TypeError('The `afterResponse` hook returned an invalid value');
- }
- }
- }
- catch (error) {
- request._beforeError(error);
- return;
- }
- globalResponse = response;
- if (!isResponseOk(response)) {
- request._beforeError(new HTTPError(response));
- return;
- }
- request.destroy();
- resolve(request.options.resolveBodyOnly ? response.body : response);
- });
- const onError = (error) => {
- if (promise.isCanceled) {
- return;
- }
- const { options } = request;
- if (error instanceof HTTPError && !options.throwHttpErrors) {
- const { response } = error;
- request.destroy();
- resolve(request.options.resolveBodyOnly ? response.body : response);
- return;
- }
- reject(error);
- };
- request.once('error', onError);
- const previousBody = request.options?.body;
- request.once('retry', (newRetryCount, error) => {
- firstRequest = undefined;
- const newBody = request.options.body;
- if (previousBody === newBody && is.nodeStream(newBody)) {
- error.message = 'Cannot retry with consumed body stream';
- onError(error);
- return;
- }
- // This is needed! We need to reuse `request.options` because they can get modified!
- // For example, by calling `promise.json()`.
- normalizedOptions = request.options;
- makeRequest(newRetryCount);
- });
- proxyEvents(request, emitter, proxiedRequestEvents);
- if (is.undefined(firstRequest)) {
- void request.flush();
- }
- };
- makeRequest(0);
- });
- promise.on = (event, fn) => {
- emitter.on(event, fn);
- return promise;
- };
- promise.off = (event, fn) => {
- emitter.off(event, fn);
- return promise;
- };
- const shortcut = (responseType) => {
- const newPromise = (async () => {
- // Wait until downloading has ended
- await promise;
- const { options } = globalResponse.request;
- return parseBody(globalResponse, responseType, options.parseJson, options.encoding);
- })();
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
- Object.defineProperties(newPromise, Object.getOwnPropertyDescriptors(promise));
- return newPromise;
- };
- promise.json = () => {
- if (globalRequest.options) {
- const { headers } = globalRequest.options;
- if (!globalRequest.writableFinished && !('accept' in headers)) {
- headers.accept = 'application/json';
- }
- }
- return shortcut('json');
- };
- promise.buffer = () => shortcut('buffer');
- promise.text = () => shortcut('text');
- return promise;
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/as-promise/types.d.ts b/includes/external/addressbook/node_modules/got/dist/source/as-promise/types.d.ts
deleted file mode 100644
index 929ce09..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/as-promise/types.d.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { Buffer } from 'node:buffer';
-import type PCancelable from 'p-cancelable';
-import { RequestError } from '../core/errors.js';
-import type Request from '../core/index.js';
-import type { RequestEvents } from '../core/index.js';
-import type { Response } from '../core/response.js';
-/**
-An error to be thrown when the request is aborted with `.cancel()`.
-*/
-export declare class CancelError extends RequestError {
- readonly response: Response;
- constructor(request: Request);
- /**
- Whether the promise is canceled.
- */
- get isCanceled(): boolean;
-}
-export interface CancelableRequest<T extends Response | Response['body'] = Response['body']> extends PCancelable<T>, RequestEvents<CancelableRequest<T>> {
- /**
- A shortcut method that gives a Promise returning a JSON object.
-
- It is semantically the same as settings `options.resolveBodyOnly` to `true` and `options.responseType` to `'json'`.
- */
- json: <ReturnType>() => CancelableRequest<ReturnType>;
- /**
- A shortcut method that gives a Promise returning a [Buffer](https://nodejs.org/api/buffer.html).
-
- It is semantically the same as settings `options.resolveBodyOnly` to `true` and `options.responseType` to `'buffer'`.
- */
- buffer: () => CancelableRequest<Buffer>;
- /**
- A shortcut method that gives a Promise returning a string.
-
- It is semantically the same as settings `options.resolveBodyOnly` to `true` and `options.responseType` to `'text'`.
- */
- text: () => CancelableRequest<string>;
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/as-promise/types.js b/includes/external/addressbook/node_modules/got/dist/source/as-promise/types.js
deleted file mode 100644
index eda617e..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/as-promise/types.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { RequestError } from '../core/errors.js';
-/**
-An error to be thrown when the request is aborted with `.cancel()`.
-*/
-export class CancelError extends RequestError {
- constructor(request) {
- super('Promise was canceled', {}, request);
- this.name = 'CancelError';
- this.code = 'ERR_CANCELED';
- }
- /**
- Whether the promise is canceled.
- */
- get isCanceled() {
- return true;
- }
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/calculate-retry-delay.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/calculate-retry-delay.d.ts
deleted file mode 100644
index c38ae4d..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/calculate-retry-delay.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import type { RetryFunction } from './options.js';
-type Returns<T extends (...args: any) => unknown, V> = (...args: Parameters<T>) => V;
-declare const calculateRetryDelay: Returns<RetryFunction, number>;
-export default calculateRetryDelay;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/calculate-retry-delay.js b/includes/external/addressbook/node_modules/got/dist/source/core/calculate-retry-delay.js
deleted file mode 100644
index 5407da8..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/calculate-retry-delay.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const calculateRetryDelay = ({ attemptCount, retryOptions, error, retryAfter, computedValue, }) => {
- if (error.name === 'RetryError') {
- return 1;
- }
- if (attemptCount > retryOptions.limit) {
- return 0;
- }
- const hasMethod = retryOptions.methods.includes(error.options.method);
- const hasErrorCode = retryOptions.errorCodes.includes(error.code);
- const hasStatusCode = error.response && retryOptions.statusCodes.includes(error.response.statusCode);
- if (!hasMethod || (!hasErrorCode && !hasStatusCode)) {
- return 0;
- }
- if (error.response) {
- if (retryAfter) {
- // In this case `computedValue` is `options.request.timeout`
- if (retryAfter > computedValue) {
- return 0;
- }
- return retryAfter;
- }
- if (error.response.statusCode === 413) {
- return 0;
- }
- }
- const noise = Math.random() * retryOptions.noise;
- return Math.min(((2 ** (attemptCount - 1)) * 1000), retryOptions.backoffLimit) + noise;
-};
-export default calculateRetryDelay;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/errors.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/errors.d.ts
deleted file mode 100644
index 735d4d2..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/errors.d.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { Timings } from '@szmarczak/http-timer';
-import type Options from './options.js';
-import type { TimeoutError as TimedOutTimeoutError } from './timed-out.js';
-import type { PlainResponse, Response } from './response.js';
-import type Request from './index.js';
-type Error = NodeJS.ErrnoException;
-/**
-An error to be thrown when a request fails.
-Contains a `code` property with error class code, like `ECONNREFUSED`.
-*/
-export declare class RequestError extends Error {
- input?: string;
- code: string;
- stack: string;
- readonly options: Options;
- readonly response?: Response;
- readonly request?: Request;
- readonly timings?: Timings;
- constructor(message: string, error: Partial<Error & {
- code?: string;
- }>, self: Request | Options);
-}
-/**
-An error to be thrown when the server redirects you more than ten times.
-Includes a `response` property.
-*/
-export declare class MaxRedirectsError extends RequestError {
- readonly response: Response;
- readonly request: Request;
- readonly timings: Timings;
- constructor(request: Request);
-}
-/**
-An error to be thrown when the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304.
-Includes a `response` property.
-*/
-export declare class HTTPError extends RequestError {
- readonly response: Response;
- readonly request: Request;
- readonly timings: Timings;
- constructor(response: PlainResponse);
-}
-/**
-An error to be thrown when a cache method fails.
-For example, if the database goes down or there's a filesystem error.
-*/
-export declare class CacheError extends RequestError {
- readonly request: Request;
- constructor(error: Error, request: Request);
-}
-/**
-An error to be thrown when the request body is a stream and an error occurs while reading from that stream.
-*/
-export declare class UploadError extends RequestError {
- readonly request: Request;
- constructor(error: Error, request: Request);
-}
-/**
-An error to be thrown when the request is aborted due to a timeout.
-Includes an `event` and `timings` property.
-*/
-export declare class TimeoutError extends RequestError {
- readonly request: Request;
- readonly timings: Timings;
- readonly event: string;
- constructor(error: TimedOutTimeoutError, timings: Timings, request: Request);
-}
-/**
-An error to be thrown when reading from response stream fails.
-*/
-export declare class ReadError extends RequestError {
- readonly request: Request;
- readonly response: Response;
- readonly timings: Timings;
- constructor(error: Error, request: Request);
-}
-/**
-An error which always triggers a new retry when thrown.
-*/
-export declare class RetryError extends RequestError {
- constructor(request: Request);
-}
-/**
-An error to be thrown when the request is aborted by AbortController.
-*/
-export declare class AbortError extends RequestError {
- constructor(request: Request);
-}
-export {};
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/errors.js b/includes/external/addressbook/node_modules/got/dist/source/core/errors.js
deleted file mode 100644
index f8e1c98..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/errors.js
+++ /dev/null
@@ -1,178 +0,0 @@
-import is from '@sindresorhus/is';
-// A hacky check to prevent circular references.
-function isRequest(x) {
- return is.object(x) && '_onResponse' in x;
-}
-/**
-An error to be thrown when a request fails.
-Contains a `code` property with error class code, like `ECONNREFUSED`.
-*/
-export class RequestError extends Error {
- constructor(message, error, self) {
- super(message);
- Object.defineProperty(this, "input", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "code", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "stack", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "response", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "request", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "timings", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Error.captureStackTrace(this, this.constructor);
- this.name = 'RequestError';
- this.code = error.code ?? 'ERR_GOT_REQUEST_ERROR';
- this.input = error.input;
- if (isRequest(self)) {
- Object.defineProperty(this, 'request', {
- enumerable: false,
- value: self,
- });
- Object.defineProperty(this, 'response', {
- enumerable: false,
- value: self.response,
- });
- this.options = self.options;
- }
- else {
- this.options = self;
- }
- this.timings = this.request?.timings;
- // Recover the original stacktrace
- if (is.string(error.stack) && is.string(this.stack)) {
- const indexOfMessage = this.stack.indexOf(this.message) + this.message.length;
- const thisStackTrace = this.stack.slice(indexOfMessage).split('\n').reverse();
- const errorStackTrace = error.stack.slice(error.stack.indexOf(error.message) + error.message.length).split('\n').reverse();
- // Remove duplicated traces
- while (errorStackTrace.length > 0 && errorStackTrace[0] === thisStackTrace[0]) {
- thisStackTrace.shift();
- }
- this.stack = `${this.stack.slice(0, indexOfMessage)}${thisStackTrace.reverse().join('\n')}${errorStackTrace.reverse().join('\n')}`;
- }
- }
-}
-/**
-An error to be thrown when the server redirects you more than ten times.
-Includes a `response` property.
-*/
-export class MaxRedirectsError extends RequestError {
- constructor(request) {
- super(`Redirected ${request.options.maxRedirects} times. Aborting.`, {}, request);
- this.name = 'MaxRedirectsError';
- this.code = 'ERR_TOO_MANY_REDIRECTS';
- }
-}
-/**
-An error to be thrown when the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304.
-Includes a `response` property.
-*/
-// eslint-disable-next-line @typescript-eslint/naming-convention
-export class HTTPError extends RequestError {
- constructor(response) {
- super(`Response code ${response.statusCode} (${response.statusMessage})`, {}, response.request);
- this.name = 'HTTPError';
- this.code = 'ERR_NON_2XX_3XX_RESPONSE';
- }
-}
-/**
-An error to be thrown when a cache method fails.
-For example, if the database goes down or there's a filesystem error.
-*/
-export class CacheError extends RequestError {
- constructor(error, request) {
- super(error.message, error, request);
- this.name = 'CacheError';
- this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_CACHE_ACCESS' : this.code;
- }
-}
-/**
-An error to be thrown when the request body is a stream and an error occurs while reading from that stream.
-*/
-export class UploadError extends RequestError {
- constructor(error, request) {
- super(error.message, error, request);
- this.name = 'UploadError';
- this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_UPLOAD' : this.code;
- }
-}
-/**
-An error to be thrown when the request is aborted due to a timeout.
-Includes an `event` and `timings` property.
-*/
-export class TimeoutError extends RequestError {
- constructor(error, timings, request) {
- super(error.message, error, request);
- Object.defineProperty(this, "timings", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "event", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- this.name = 'TimeoutError';
- this.event = error.event;
- this.timings = timings;
- }
-}
-/**
-An error to be thrown when reading from response stream fails.
-*/
-export class ReadError extends RequestError {
- constructor(error, request) {
- super(error.message, error, request);
- this.name = 'ReadError';
- this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_READING_RESPONSE_STREAM' : this.code;
- }
-}
-/**
-An error which always triggers a new retry when thrown.
-*/
-export class RetryError extends RequestError {
- constructor(request) {
- super('Retrying', {}, request);
- this.name = 'RetryError';
- this.code = 'ERR_RETRYING';
- }
-}
-/**
-An error to be thrown when the request is aborted by AbortController.
-*/
-export class AbortError extends RequestError {
- constructor(request) {
- super('This operation was aborted.', {}, request);
- this.code = 'ERR_ABORTED';
- this.name = 'AbortError';
- }
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/index.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/index.d.ts
deleted file mode 100644
index c041758..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/index.d.ts
+++ /dev/null
@@ -1,191 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-import { Duplex } from 'node:stream';
-import { URL } from 'node:url';
-import type { ClientRequest } from 'node:http';
-import type { Socket } from 'node:net';
-import type { Timings } from '@szmarczak/http-timer';
-import Options from './options.js';
-import { type PlainResponse, type Response } from './response.js';
-import { RequestError } from './errors.js';
-type Error = NodeJS.ErrnoException;
-export type Progress = {
- percent: number;
- transferred: number;
- total?: number;
-};
-export type GotEventFunction<T> =
-/**
-`request` event to get the request object of the request.
-
- __Tip__: You can use `request` event to abort requests.
-
-@example
-```
-import got from 'got';
-
-got.stream('https://github.com')
- .on('request', request => setTimeout(() => request.destroy(), 50));
-```
-*/
-((name: 'request', listener: (request: ClientRequest) => void) => T)
-/**
-The `response` event to get the response object of the final request.
-*/
- & (<R extends Response>(name: 'response', listener: (response: R) => void) => T)
-/**
-The `redirect` event to get the response object of a redirect. The second argument is options for the next request to the redirect location.
-*/
- & (<R extends Response, N extends Options>(name: 'redirect', listener: (response: R, nextOptions: N) => void) => T)
-/**
-Progress events for uploading (sending a request) and downloading (receiving a response).
-The `progress` argument is an object like:
-
-```
-{
- percent: 0.1,
- transferred: 1024,
- total: 10240
-}
-```
-
-If the `content-length` header is missing, `total` will be `undefined`.
-
-@example
-```
-import got from 'got';
-
-const response = await got('https://sindresorhus.com')
- .on('downloadProgress', progress => {
- // Report download progress
- })
- .on('uploadProgress', progress => {
- // Report upload progress
- });
-
-console.log(response);
-```
-*/
- & ((name: 'uploadProgress' | 'downloadProgress', listener: (progress: Progress) => void) => T)
-/**
-To enable retrying on a Got stream, it is required to have a `retry` handler attached.
-
-When this event is emitted, you should reset the stream you were writing to and prepare the body again.
-
-See `got.options.retry` for more information.
-*/
- & ((name: 'retry', listener: (retryCount: number, error: RequestError) => void) => T);
-export type RequestEvents<T> = {
- on: GotEventFunction<T>;
- once: GotEventFunction<T>;
- off: GotEventFunction<T>;
-};
-type UrlType = ConstructorParameters<typeof Options>[0];
-type OptionsType = ConstructorParameters<typeof Options>[1];
-type DefaultsType = ConstructorParameters<typeof Options>[2];
-export default class Request extends Duplex implements RequestEvents<Request> {
- ['constructor']: typeof Request;
- _noPipe?: boolean;
- options: Options;
- response?: PlainResponse;
- requestUrl?: URL;
- redirectUrls: URL[];
- retryCount: number;
- private _requestOptions;
- private _stopRetry;
- private _downloadedSize;
- private _uploadedSize;
- private _stopReading;
- private readonly _pipedServerResponses;
- private _request?;
- private _responseSize?;
- private _bodySize?;
- private _unproxyEvents;
- private _isFromCache?;
- private _cannotHaveBody;
- private _triggerRead;
- private _jobs;
- private _cancelTimeouts;
- private readonly _removeListeners;
- private _nativeResponse?;
- private _flushed;
- private _aborted;
- private _requestInitialized;
- constructor(url: UrlType, options?: OptionsType, defaults?: DefaultsType);
- flush(): Promise<void>;
- _beforeError(error: Error): void;
- _read(): void;
- _write(chunk: unknown, encoding: BufferEncoding | undefined, callback: (error?: Error | null) => void): void;
- _final(callback: (error?: Error | null) => void): void;
- _destroy(error: Error | null, callback: (error: Error | null) => void): void;
- pipe<T extends NodeJS.WritableStream>(destination: T, options?: {
- end?: boolean;
- }): T;
- unpipe<T extends NodeJS.WritableStream>(destination: T): this;
- private _finalizeBody;
- private _onResponseBase;
- private _setRawBody;
- private _onResponse;
- private _onRequest;
- private _asyncWrite;
- private _sendBody;
- private _prepareCache;
- private _createCacheableRequest;
- private _makeRequest;
- private _error;
- private _writeRequest;
- /**
- The remote IP address.
- */
- get ip(): string | undefined;
- /**
- Indicates whether the request has been aborted or not.
- */
- get isAborted(): boolean;
- get socket(): Socket | undefined;
- /**
- Progress event for downloading (receiving a response).
- */
- get downloadProgress(): Progress;
- /**
- Progress event for uploading (sending a request).
- */
- get uploadProgress(): Progress;
- /**
- The object contains the following properties:
-
- - `start` - Time when the request started.
- - `socket` - Time when a socket was assigned to the request.
- - `lookup` - Time when the DNS lookup finished.
- - `connect` - Time when the socket successfully connected.
- - `secureConnect` - Time when the socket securely connected.
- - `upload` - Time when the request finished uploading.
- - `response` - Time when the request fired `response` event.
- - `end` - Time when the response fired `end` event.
- - `error` - Time when the request fired `error` event.
- - `abort` - Time when the request fired `abort` event.
- - `phases`
- - `wait` - `timings.socket - timings.start`
- - `dns` - `timings.lookup - timings.socket`
- - `tcp` - `timings.connect - timings.lookup`
- - `tls` - `timings.secureConnect - timings.connect`
- - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
- - `firstByte` - `timings.response - timings.upload`
- - `download` - `timings.end - timings.response`
- - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
-
- If something has not been measured yet, it will be `undefined`.
-
- __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
- */
- get timings(): Timings | undefined;
- /**
- Whether the response was retrieved from the cache.
- */
- get isFromCache(): boolean | undefined;
- get reusedSocket(): boolean | undefined;
-}
-export {};
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/index.js b/includes/external/addressbook/node_modules/got/dist/source/core/index.js
deleted file mode 100644
index 4f0bfd3..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/index.js
+++ /dev/null
@@ -1,1124 +0,0 @@
-import process from 'node:process';
-import { Buffer } from 'node:buffer';
-import { Duplex } from 'node:stream';
-import { URL, URLSearchParams } from 'node:url';
-import http, { ServerResponse } from 'node:http';
-import timer from '@szmarczak/http-timer';
-import CacheableRequest, { CacheError as CacheableCacheError, } from 'cacheable-request';
-import decompressResponse from 'decompress-response';
-import is from '@sindresorhus/is';
-import { buffer as getBuffer } from 'get-stream';
-import { FormDataEncoder, isFormData as isFormDataLike } from 'form-data-encoder';
-import getBodySize from './utils/get-body-size.js';
-import isFormData from './utils/is-form-data.js';
-import proxyEvents from './utils/proxy-events.js';
-import timedOut, { TimeoutError as TimedOutTimeoutError } from './timed-out.js';
-import urlToOptions from './utils/url-to-options.js';
-import WeakableMap from './utils/weakable-map.js';
-import calculateRetryDelay from './calculate-retry-delay.js';
-import Options from './options.js';
-import { isResponseOk } from './response.js';
-import isClientRequest from './utils/is-client-request.js';
-import isUnixSocketURL from './utils/is-unix-socket-url.js';
-import { RequestError, ReadError, MaxRedirectsError, HTTPError, TimeoutError, UploadError, CacheError, AbortError, } from './errors.js';
-const supportsBrotli = is.string(process.versions.brotli);
-const methodsWithoutBody = new Set(['GET', 'HEAD']);
-const cacheableStore = new WeakableMap();
-const redirectCodes = new Set([300, 301, 302, 303, 304, 307, 308]);
-const proxiedRequestEvents = [
- 'socket',
- 'connect',
- 'continue',
- 'information',
- 'upgrade',
-];
-const noop = () => { };
-export default class Request extends Duplex {
- constructor(url, options, defaults) {
- super({
- // Don't destroy immediately, as the error may be emitted on unsuccessful retry
- autoDestroy: false,
- // It needs to be zero because we're just proxying the data to another stream
- highWaterMark: 0,
- });
- // @ts-expect-error - Ignoring for now.
- Object.defineProperty(this, 'constructor', {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_noPipe", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/9568
- Object.defineProperty(this, "options", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "response", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "requestUrl", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "redirectUrls", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "retryCount", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_stopRetry", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_downloadedSize", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_uploadedSize", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_stopReading", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_pipedServerResponses", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_request", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_responseSize", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_bodySize", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_unproxyEvents", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_isFromCache", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_cannotHaveBody", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_triggerRead", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_cancelTimeouts", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_removeListeners", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_nativeResponse", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_flushed", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_aborted", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- // We need this because `this._request` if `undefined` when using cache
- Object.defineProperty(this, "_requestInitialized", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- this._downloadedSize = 0;
- this._uploadedSize = 0;
- this._stopReading = false;
- this._pipedServerResponses = new Set();
- this._cannotHaveBody = false;
- this._unproxyEvents = noop;
- this._triggerRead = false;
- this._cancelTimeouts = noop;
- this._removeListeners = noop;
- this._jobs = [];
- this._flushed = false;
- this._requestInitialized = false;
- this._aborted = false;
- this.redirectUrls = [];
- this.retryCount = 0;
- this._stopRetry = noop;
- this.on('pipe', source => {
- if (source.headers) {
- Object.assign(this.options.headers, source.headers);
- }
- });
- this.on('newListener', event => {
- if (event === 'retry' && this.listenerCount('retry') > 0) {
- throw new Error('A retry listener has been attached already.');
- }
- });
- try {
- this.options = new Options(url, options, defaults);
- if (!this.options.url) {
- if (this.options.prefixUrl === '') {
- throw new TypeError('Missing `url` property');
- }
- this.options.url = '';
- }
- this.requestUrl = this.options.url;
- }
- catch (error) {
- const { options } = error;
- if (options) {
- this.options = options;
- }
- this.flush = async () => {
- this.flush = async () => { };
- this.destroy(error);
- };
- return;
- }
- // Important! If you replace `body` in a handler with another stream, make sure it's readable first.
- // The below is run only once.
- const { body } = this.options;
- if (is.nodeStream(body)) {
- body.once('error', error => {
- if (this._flushed) {
- this._beforeError(new UploadError(error, this));
- }
- else {
- this.flush = async () => {
- this.flush = async () => { };
- this._beforeError(new UploadError(error, this));
- };
- }
- });
- }
- if (this.options.signal) {
- const abort = () => {
- this.destroy(new AbortError(this));
- };
- if (this.options.signal.aborted) {
- abort();
- }
- else {
- this.options.signal.addEventListener('abort', abort);
- this._removeListeners = () => {
- this.options.signal.removeEventListener('abort', abort);
- };
- }
- }
- }
- async flush() {
- if (this._flushed) {
- return;
- }
- this._flushed = true;
- try {
- await this._finalizeBody();
- if (this.destroyed) {
- return;
- }
- await this._makeRequest();
- if (this.destroyed) {
- this._request?.destroy();
- return;
- }
- // Queued writes etc.
- for (const job of this._jobs) {
- job();
- }
- // Prevent memory leak
- this._jobs.length = 0;
- this._requestInitialized = true;
- }
- catch (error) {
- this._beforeError(error);
- }
- }
- _beforeError(error) {
- if (this._stopReading) {
- return;
- }
- const { response, options } = this;
- const attemptCount = this.retryCount + (error.name === 'RetryError' ? 0 : 1);
- this._stopReading = true;
- if (!(error instanceof RequestError)) {
- error = new RequestError(error.message, error, this);
- }
- const typedError = error;
- void (async () => {
- // Node.js parser is really weird.
- // It emits post-request Parse Errors on the same instance as previous request. WTF.
- // Therefore we need to check if it has been destroyed as well.
- //
- // Furthermore, Node.js 16 `response.destroy()` doesn't immediately destroy the socket,
- // but makes the response unreadable. So we additionally need to check `response.readable`.
- if (response?.readable && !response.rawBody && !this._request?.socket?.destroyed) {
- // @types/node has incorrect typings. `setEncoding` accepts `null` as well.
- response.setEncoding(this.readableEncoding);
- const success = await this._setRawBody(response);
- if (success) {
- response.body = response.rawBody.toString();
- }
- }
- if (this.listenerCount('retry') !== 0) {
- let backoff;
- try {
- let retryAfter;
- if (response && 'retry-after' in response.headers) {
- retryAfter = Number(response.headers['retry-after']);
- if (Number.isNaN(retryAfter)) {
- retryAfter = Date.parse(response.headers['retry-after']) - Date.now();
- if (retryAfter <= 0) {
- retryAfter = 1;
- }
- }
- else {
- retryAfter *= 1000;
- }
- }
- const retryOptions = options.retry;
- backoff = await retryOptions.calculateDelay({
- attemptCount,
- retryOptions,
- error: typedError,
- retryAfter,
- computedValue: calculateRetryDelay({
- attemptCount,
- retryOptions,
- error: typedError,
- retryAfter,
- computedValue: retryOptions.maxRetryAfter ?? options.timeout.request ?? Number.POSITIVE_INFINITY,
- }),
- });
- }
- catch (error_) {
- void this._error(new RequestError(error_.message, error_, this));
- return;
- }
- if (backoff) {
- await new Promise(resolve => {
- const timeout = setTimeout(resolve, backoff);
- this._stopRetry = () => {
- clearTimeout(timeout);
- resolve();
- };
- });
- // Something forced us to abort the retry
- if (this.destroyed) {
- return;
- }
- try {
- for (const hook of this.options.hooks.beforeRetry) {
- // eslint-disable-next-line no-await-in-loop
- await hook(typedError, this.retryCount + 1);
- }
- }
- catch (error_) {
- void this._error(new RequestError(error_.message, error, this));
- return;
- }
- // Something forced us to abort the retry
- if (this.destroyed) {
- return;
- }
- this.destroy();
- this.emit('retry', this.retryCount + 1, error, (updatedOptions) => {
- const request = new Request(options.url, updatedOptions, options);
- request.retryCount = this.retryCount + 1;
- process.nextTick(() => {
- void request.flush();
- });
- return request;
- });
- return;
- }
- }
- void this._error(typedError);
- })();
- }
- _read() {
- this._triggerRead = true;
- const { response } = this;
- if (response && !this._stopReading) {
- // We cannot put this in the `if` above
- // because `.read()` also triggers the `end` event
- if (response.readableLength) {
- this._triggerRead = false;
- }
- let data;
- while ((data = response.read()) !== null) {
- this._downloadedSize += data.length; // eslint-disable-line @typescript-eslint/restrict-plus-operands
- const progress = this.downloadProgress;
- if (progress.percent < 1) {
- this.emit('downloadProgress', progress);
- }
- this.push(data);
- }
- }
- }
- _write(chunk, encoding, callback) {
- const write = () => {
- this._writeRequest(chunk, encoding, callback);
- };
- if (this._requestInitialized) {
- write();
- }
- else {
- this._jobs.push(write);
- }
- }
- _final(callback) {
- const endRequest = () => {
- // We need to check if `this._request` is present,
- // because it isn't when we use cache.
- if (!this._request || this._request.destroyed) {
- callback();
- return;
- }
- this._request.end((error) => {
- // The request has been destroyed before `_final` finished.
- // See https://github.com/nodejs/node/issues/39356
- if (this._request._writableState?.errored) {
- return;
- }
- if (!error) {
- this._bodySize = this._uploadedSize;
- this.emit('uploadProgress', this.uploadProgress);
- this._request.emit('upload-complete');
- }
- callback(error);
- });
- };
- if (this._requestInitialized) {
- endRequest();
- }
- else {
- this._jobs.push(endRequest);
- }
- }
- _destroy(error, callback) {
- this._stopReading = true;
- this.flush = async () => { };
- // Prevent further retries
- this._stopRetry();
- this._cancelTimeouts();
- this._removeListeners();
- if (this.options) {
- const { body } = this.options;
- if (is.nodeStream(body)) {
- body.destroy();
- }
- }
- if (this._request) {
- this._request.destroy();
- }
- if (error !== null && !is.undefined(error) && !(error instanceof RequestError)) {
- error = new RequestError(error.message, error, this);
- }
- callback(error);
- }
- pipe(destination, options) {
- if (destination instanceof ServerResponse) {
- this._pipedServerResponses.add(destination);
- }
- return super.pipe(destination, options);
- }
- unpipe(destination) {
- if (destination instanceof ServerResponse) {
- this._pipedServerResponses.delete(destination);
- }
- super.unpipe(destination);
- return this;
- }
- async _finalizeBody() {
- const { options } = this;
- const { headers } = options;
- const isForm = !is.undefined(options.form);
- // eslint-disable-next-line @typescript-eslint/naming-convention
- const isJSON = !is.undefined(options.json);
- const isBody = !is.undefined(options.body);
- const cannotHaveBody = methodsWithoutBody.has(options.method) && !(options.method === 'GET' && options.allowGetBody);
- this._cannotHaveBody = cannotHaveBody;
- if (isForm || isJSON || isBody) {
- if (cannotHaveBody) {
- throw new TypeError(`The \`${options.method}\` method cannot be used with a body`);
- }
- // Serialize body
- const noContentType = !is.string(headers['content-type']);
- if (isBody) {
- // Body is spec-compliant FormData
- if (isFormDataLike(options.body)) {
- const encoder = new FormDataEncoder(options.body);
- if (noContentType) {
- headers['content-type'] = encoder.headers['Content-Type'];
- }
- if ('Content-Length' in encoder.headers) {
- headers['content-length'] = encoder.headers['Content-Length'];
- }
- options.body = encoder.encode();
- }
- // Special case for https://github.com/form-data/form-data
- if (isFormData(options.body) && noContentType) {
- headers['content-type'] = `multipart/form-data; boundary=${options.body.getBoundary()}`;
- }
- }
- else if (isForm) {
- if (noContentType) {
- headers['content-type'] = 'application/x-www-form-urlencoded';
- }
- const { form } = options;
- options.form = undefined;
- options.body = (new URLSearchParams(form)).toString();
- }
- else {
- if (noContentType) {
- headers['content-type'] = 'application/json';
- }
- const { json } = options;
- options.json = undefined;
- options.body = options.stringifyJson(json);
- }
- const uploadBodySize = await getBodySize(options.body, options.headers);
- // See https://tools.ietf.org/html/rfc7230#section-3.3.2
- // A user agent SHOULD send a Content-Length in a request message when
- // no Transfer-Encoding is sent and the request method defines a meaning
- // for an enclosed payload body. For example, a Content-Length header
- // field is normally sent in a POST request even when the value is 0
- // (indicating an empty payload body). A user agent SHOULD NOT send a
- // Content-Length header field when the request message does not contain
- // a payload body and the method semantics do not anticipate such a
- // body.
- if (is.undefined(headers['content-length']) && is.undefined(headers['transfer-encoding']) && !cannotHaveBody && !is.undefined(uploadBodySize)) {
- headers['content-length'] = String(uploadBodySize);
- }
- }
- if (options.responseType === 'json' && !('accept' in options.headers)) {
- options.headers.accept = 'application/json';
- }
- this._bodySize = Number(headers['content-length']) || undefined;
- }
- async _onResponseBase(response) {
- // This will be called e.g. when using cache so we need to check if this request has been aborted.
- if (this.isAborted) {
- return;
- }
- const { options } = this;
- const { url } = options;
- this._nativeResponse = response;
- if (options.decompress) {
- response = decompressResponse(response);
- }
- const statusCode = response.statusCode;
- const typedResponse = response;
- typedResponse.statusMessage = typedResponse.statusMessage ?? http.STATUS_CODES[statusCode];
- typedResponse.url = options.url.toString();
- typedResponse.requestUrl = this.requestUrl;
- typedResponse.redirectUrls = this.redirectUrls;
- typedResponse.request = this;
- typedResponse.isFromCache = this._nativeResponse.fromCache ?? false;
- typedResponse.ip = this.ip;
- typedResponse.retryCount = this.retryCount;
- typedResponse.ok = isResponseOk(typedResponse);
- this._isFromCache = typedResponse.isFromCache;
- this._responseSize = Number(response.headers['content-length']) || undefined;
- this.response = typedResponse;
- response.once('end', () => {
- this._responseSize = this._downloadedSize;
- this.emit('downloadProgress', this.downloadProgress);
- });
- response.once('error', (error) => {
- this._aborted = true;
- // Force clean-up, because some packages don't do this.
- // TODO: Fix decompress-response
- response.destroy();
- this._beforeError(new ReadError(error, this));
- });
- response.once('aborted', () => {
- this._aborted = true;
- this._beforeError(new ReadError({
- name: 'Error',
- message: 'The server aborted pending request',
- code: 'ECONNRESET',
- }, this));
- });
- this.emit('downloadProgress', this.downloadProgress);
- const rawCookies = response.headers['set-cookie'];
- if (is.object(options.cookieJar) && rawCookies) {
- let promises = rawCookies.map(async (rawCookie) => options.cookieJar.setCookie(rawCookie, url.toString()));
- if (options.ignoreInvalidCookies) {
- promises = promises.map(async (promise) => {
- try {
- await promise;
- }
- catch { }
- });
- }
- try {
- await Promise.all(promises);
- }
- catch (error) {
- this._beforeError(error);
- return;
- }
- }
- // The above is running a promise, therefore we need to check if this request has been aborted yet again.
- if (this.isAborted) {
- return;
- }
- if (options.followRedirect && response.headers.location && redirectCodes.has(statusCode)) {
- // We're being redirected, we don't care about the response.
- // It'd be best to abort the request, but we can't because
- // we would have to sacrifice the TCP connection. We don't want that.
- response.resume();
- this._cancelTimeouts();
- this._unproxyEvents();
- if (this.redirectUrls.length >= options.maxRedirects) {
- this._beforeError(new MaxRedirectsError(this));
- return;
- }
- this._request = undefined;
- const updatedOptions = new Options(undefined, undefined, this.options);
- const serverRequestedGet = statusCode === 303 && updatedOptions.method !== 'GET' && updatedOptions.method !== 'HEAD';
- const canRewrite = statusCode !== 307 && statusCode !== 308;
- const userRequestedGet = updatedOptions.methodRewriting && canRewrite;
- if (serverRequestedGet || userRequestedGet) {
- updatedOptions.method = 'GET';
- updatedOptions.body = undefined;
- updatedOptions.json = undefined;
- updatedOptions.form = undefined;
- delete updatedOptions.headers['content-length'];
- }
- try {
- // We need this in order to support UTF-8
- const redirectBuffer = Buffer.from(response.headers.location, 'binary').toString();
- const redirectUrl = new URL(redirectBuffer, url);
- if (!isUnixSocketURL(url) && isUnixSocketURL(redirectUrl)) {
- this._beforeError(new RequestError('Cannot redirect to UNIX socket', {}, this));
- return;
- }
- // Redirecting to a different site, clear sensitive data.
- if (redirectUrl.hostname !== url.hostname || redirectUrl.port !== url.port) {
- if ('host' in updatedOptions.headers) {
- delete updatedOptions.headers.host;
- }
- if ('cookie' in updatedOptions.headers) {
- delete updatedOptions.headers.cookie;
- }
- if ('authorization' in updatedOptions.headers) {
- delete updatedOptions.headers.authorization;
- }
- if (updatedOptions.username || updatedOptions.password) {
- updatedOptions.username = '';
- updatedOptions.password = '';
- }
- }
- else {
- redirectUrl.username = updatedOptions.username;
- redirectUrl.password = updatedOptions.password;
- }
- this.redirectUrls.push(redirectUrl);
- updatedOptions.prefixUrl = '';
- updatedOptions.url = redirectUrl;
- for (const hook of updatedOptions.hooks.beforeRedirect) {
- // eslint-disable-next-line no-await-in-loop
- await hook(updatedOptions, typedResponse);
- }
- this.emit('redirect', updatedOptions, typedResponse);
- this.options = updatedOptions;
- await this._makeRequest();
- }
- catch (error) {
- this._beforeError(error);
- return;
- }
- return;
- }
- // `HTTPError`s always have `error.response.body` defined.
- // Therefore we cannot retry if `options.throwHttpErrors` is false.
- // On the last retry, if `options.throwHttpErrors` is false, we would need to return the body,
- // but that wouldn't be possible since the body would be already read in `error.response.body`.
- if (options.isStream && options.throwHttpErrors && !isResponseOk(typedResponse)) {
- this._beforeError(new HTTPError(typedResponse));
- return;
- }
- response.on('readable', () => {
- if (this._triggerRead) {
- this._read();
- }
- });
- this.on('resume', () => {
- response.resume();
- });
- this.on('pause', () => {
- response.pause();
- });
- response.once('end', () => {
- this.push(null);
- });
- if (this._noPipe) {
- const success = await this._setRawBody();
- if (success) {
- this.emit('response', response);
- }
- return;
- }
- this.emit('response', response);
- for (const destination of this._pipedServerResponses) {
- if (destination.headersSent) {
- continue;
- }
- // eslint-disable-next-line guard-for-in
- for (const key in response.headers) {
- const isAllowed = options.decompress ? key !== 'content-encoding' : true;
- const value = response.headers[key];
- if (isAllowed) {
- destination.setHeader(key, value);
- }
- }
- destination.statusCode = statusCode;
- }
- }
- async _setRawBody(from = this) {
- if (from.readableEnded) {
- return false;
- }
- try {
- // Errors are emitted via the `error` event
- const rawBody = await getBuffer(from);
- // On retry Request is destroyed with no error, therefore the above will successfully resolve.
- // So in order to check if this was really successfull, we need to check if it has been properly ended.
- if (!this.isAborted) {
- this.response.rawBody = rawBody;
- return true;
- }
- }
- catch { }
- return false;
- }
- async _onResponse(response) {
- try {
- await this._onResponseBase(response);
- }
- catch (error) {
- /* istanbul ignore next: better safe than sorry */
- this._beforeError(error);
- }
- }
- _onRequest(request) {
- const { options } = this;
- const { timeout, url } = options;
- timer(request);
- if (this.options.http2) {
- // Unset stream timeout, as the `timeout` option was used only for connection timeout.
- request.setTimeout(0);
- }
- this._cancelTimeouts = timedOut(request, timeout, url);
- const responseEventName = options.cache ? 'cacheableResponse' : 'response';
- request.once(responseEventName, (response) => {
- void this._onResponse(response);
- });
- request.once('error', (error) => {
- this._aborted = true;
- // Force clean-up, because some packages (e.g. nock) don't do this.
- request.destroy();
- error = error instanceof TimedOutTimeoutError ? new TimeoutError(error, this.timings, this) : new RequestError(error.message, error, this);
- this._beforeError(error);
- });
- this._unproxyEvents = proxyEvents(request, this, proxiedRequestEvents);
- this._request = request;
- this.emit('uploadProgress', this.uploadProgress);
- this._sendBody();
- this.emit('request', request);
- }
- async _asyncWrite(chunk) {
- return new Promise((resolve, reject) => {
- super.write(chunk, error => {
- if (error) {
- reject(error);
- return;
- }
- resolve();
- });
- });
- }
- _sendBody() {
- // Send body
- const { body } = this.options;
- const currentRequest = this.redirectUrls.length === 0 ? this : this._request ?? this;
- if (is.nodeStream(body)) {
- body.pipe(currentRequest);
- }
- else if (is.generator(body) || is.asyncGenerator(body)) {
- (async () => {
- try {
- for await (const chunk of body) {
- await this._asyncWrite(chunk);
- }
- super.end();
- }
- catch (error) {
- this._beforeError(error);
- }
- })();
- }
- else if (!is.undefined(body)) {
- this._writeRequest(body, undefined, () => { });
- currentRequest.end();
- }
- else if (this._cannotHaveBody || this._noPipe) {
- currentRequest.end();
- }
- }
- _prepareCache(cache) {
- if (!cacheableStore.has(cache)) {
- const cacheableRequest = new CacheableRequest(((requestOptions, handler) => {
- const result = requestOptions._request(requestOptions, handler);
- // TODO: remove this when `cacheable-request` supports async request functions.
- if (is.promise(result)) {
- // We only need to implement the error handler in order to support HTTP2 caching.
- // The result will be a promise anyway.
- // @ts-expect-error ignore
- // eslint-disable-next-line @typescript-eslint/promise-function-async
- result.once = (event, handler) => {
- if (event === 'error') {
- (async () => {
- try {
- await result;
- }
- catch (error) {
- handler(error);
- }
- })();
- }
- else if (event === 'abort') {
- // The empty catch is needed here in case when
- // it rejects before it's `await`ed in `_makeRequest`.
- (async () => {
- try {
- const request = (await result);
- request.once('abort', handler);
- }
- catch { }
- })();
- }
- else {
- /* istanbul ignore next: safety check */
- throw new Error(`Unknown HTTP2 promise event: ${event}`);
- }
- return result;
- };
- }
- return result;
- }), cache);
- cacheableStore.set(cache, cacheableRequest.request());
- }
- }
- async _createCacheableRequest(url, options) {
- return new Promise((resolve, reject) => {
- // TODO: Remove `utils/url-to-options.ts` when `cacheable-request` is fixed
- Object.assign(options, urlToOptions(url));
- let request;
- // TODO: Fix `cacheable-response`. This is ugly.
- const cacheRequest = cacheableStore.get(options.cache)(options, async (response) => {
- response._readableState.autoDestroy = false;
- if (request) {
- const fix = () => {
- if (response.req) {
- response.complete = response.req.res.complete;
- }
- };
- response.prependOnceListener('end', fix);
- fix();
- (await request).emit('cacheableResponse', response);
- }
- resolve(response);
- });
- cacheRequest.once('error', reject);
- cacheRequest.once('request', async (requestOrPromise) => {
- request = requestOrPromise;
- resolve(request);
- });
- });
- }
- async _makeRequest() {
- const { options } = this;
- const { headers, username, password } = options;
- const cookieJar = options.cookieJar;
- for (const key in headers) {
- if (is.undefined(headers[key])) {
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
- delete headers[key];
- }
- else if (is.null_(headers[key])) {
- throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${key}\` header`);
- }
- }
- if (options.decompress && is.undefined(headers['accept-encoding'])) {
- headers['accept-encoding'] = supportsBrotli ? 'gzip, deflate, br' : 'gzip, deflate';
- }
- if (username || password) {
- const credentials = Buffer.from(`${username}:${password}`).toString('base64');
- headers.authorization = `Basic ${credentials}`;
- }
- // Set cookies
- if (cookieJar) {
- const cookieString = await cookieJar.getCookieString(options.url.toString());
- if (is.nonEmptyString(cookieString)) {
- headers.cookie = cookieString;
- }
- }
- // Reset `prefixUrl`
- options.prefixUrl = '';
- let request;
- for (const hook of options.hooks.beforeRequest) {
- // eslint-disable-next-line no-await-in-loop
- const result = await hook(options);
- if (!is.undefined(result)) {
- // @ts-expect-error Skip the type mismatch to support abstract responses
- request = () => result;
- break;
- }
- }
- if (!request) {
- request = options.getRequestFunction();
- }
- const url = options.url;
- this._requestOptions = options.createNativeRequestOptions();
- if (options.cache) {
- this._requestOptions._request = request;
- this._requestOptions.cache = options.cache;
- this._requestOptions.body = options.body;
- this._prepareCache(options.cache);
- }
- // Cache support
- const fn = options.cache ? this._createCacheableRequest : request;
- try {
- // We can't do `await fn(...)`,
- // because stream `error` event can be emitted before `Promise.resolve()`.
- let requestOrResponse = fn(url, this._requestOptions);
- if (is.promise(requestOrResponse)) {
- requestOrResponse = await requestOrResponse;
- }
- // Fallback
- if (is.undefined(requestOrResponse)) {
- requestOrResponse = options.getFallbackRequestFunction()(url, this._requestOptions);
- if (is.promise(requestOrResponse)) {
- requestOrResponse = await requestOrResponse;
- }
- }
- if (isClientRequest(requestOrResponse)) {
- this._onRequest(requestOrResponse);
- }
- else if (this.writable) {
- this.once('finish', () => {
- void this._onResponse(requestOrResponse);
- });
- this._sendBody();
- }
- else {
- void this._onResponse(requestOrResponse);
- }
- }
- catch (error) {
- if (error instanceof CacheableCacheError) {
- throw new CacheError(error, this);
- }
- throw error;
- }
- }
- async _error(error) {
- try {
- if (error instanceof HTTPError && !this.options.throwHttpErrors) {
- // This branch can be reached only when using the Promise API
- // Skip calling the hooks on purpose.
- // See https://github.com/sindresorhus/got/issues/2103
- }
- else {
- for (const hook of this.options.hooks.beforeError) {
- // eslint-disable-next-line no-await-in-loop
- error = await hook(error);
- }
- }
- }
- catch (error_) {
- error = new RequestError(error_.message, error_, this);
- }
- this.destroy(error);
- }
- _writeRequest(chunk, encoding, callback) {
- if (!this._request || this._request.destroyed) {
- // Probably the `ClientRequest` instance will throw
- return;
- }
- this._request.write(chunk, encoding, (error) => {
- // The `!destroyed` check is required to prevent `uploadProgress` being emitted after the stream was destroyed
- if (!error && !this._request.destroyed) {
- this._uploadedSize += Buffer.byteLength(chunk, encoding);
- const progress = this.uploadProgress;
- if (progress.percent < 1) {
- this.emit('uploadProgress', progress);
- }
- }
- callback(error);
- });
- }
- /**
- The remote IP address.
- */
- get ip() {
- return this.socket?.remoteAddress;
- }
- /**
- Indicates whether the request has been aborted or not.
- */
- get isAborted() {
- return this._aborted;
- }
- get socket() {
- return this._request?.socket ?? undefined;
- }
- /**
- Progress event for downloading (receiving a response).
- */
- get downloadProgress() {
- let percent;
- if (this._responseSize) {
- percent = this._downloadedSize / this._responseSize;
- }
- else if (this._responseSize === this._downloadedSize) {
- percent = 1;
- }
- else {
- percent = 0;
- }
- return {
- percent,
- transferred: this._downloadedSize,
- total: this._responseSize,
- };
- }
- /**
- Progress event for uploading (sending a request).
- */
- get uploadProgress() {
- let percent;
- if (this._bodySize) {
- percent = this._uploadedSize / this._bodySize;
- }
- else if (this._bodySize === this._uploadedSize) {
- percent = 1;
- }
- else {
- percent = 0;
- }
- return {
- percent,
- transferred: this._uploadedSize,
- total: this._bodySize,
- };
- }
- /**
- The object contains the following properties:
-
- - `start` - Time when the request started.
- - `socket` - Time when a socket was assigned to the request.
- - `lookup` - Time when the DNS lookup finished.
- - `connect` - Time when the socket successfully connected.
- - `secureConnect` - Time when the socket securely connected.
- - `upload` - Time when the request finished uploading.
- - `response` - Time when the request fired `response` event.
- - `end` - Time when the response fired `end` event.
- - `error` - Time when the request fired `error` event.
- - `abort` - Time when the request fired `abort` event.
- - `phases`
- - `wait` - `timings.socket - timings.start`
- - `dns` - `timings.lookup - timings.socket`
- - `tcp` - `timings.connect - timings.lookup`
- - `tls` - `timings.secureConnect - timings.connect`
- - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
- - `firstByte` - `timings.response - timings.upload`
- - `download` - `timings.end - timings.response`
- - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
-
- If something has not been measured yet, it will be `undefined`.
-
- __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
- */
- get timings() {
- return this._request?.timings;
- }
- /**
- Whether the response was retrieved from the cache.
- */
- get isFromCache() {
- return this._isFromCache;
- }
- get reusedSocket() {
- return this._request?.reusedSocket;
- }
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/options.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/options.d.ts
deleted file mode 100644
index e6d6788..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/options.d.ts
+++ /dev/null
@@ -1,1255 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-import type { Buffer } from 'node:buffer';
-import { URL, URLSearchParams } from 'node:url';
-import { checkServerIdentity } from 'node:tls';
-import http from 'node:http';
-import https from 'node:https';
-import type { Readable } from 'node:stream';
-import type { Socket } from 'node:net';
-import type { SecureContextOptions, DetailedPeerCertificate } from 'node:tls';
-import type { Agent as HttpAgent, ClientRequest } from 'node:http';
-import type { RequestOptions as HttpsRequestOptions, Agent as HttpsAgent } from 'node:https';
-import CacheableLookup from 'cacheable-lookup';
-import http2wrapper, { type ClientHttp2Session } from 'http2-wrapper';
-import type { FormDataLike } from 'form-data-encoder';
-import type { StorageAdapter } from 'cacheable-request';
-import type ResponseLike from 'responselike';
-import type { IncomingMessageWithTimings } from '@szmarczak/http-timer';
-import type { CancelableRequest } from '../as-promise/types.js';
-import type { PlainResponse, Response } from './response.js';
-import type { RequestError } from './errors.js';
-import type { Delays } from './timed-out.js';
-type Promisable<T> = T | Promise<T>;
-export type DnsLookupIpVersion = undefined | 4 | 6;
-type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<ObjectType, Exclude<keyof ObjectType, KeysType>>;
-export type NativeRequestOptions = HttpsRequestOptions & CacheOptions & {
- checkServerIdentity?: CheckServerIdentityFunction;
-};
-type AcceptableResponse = IncomingMessageWithTimings | ResponseLike;
-type AcceptableRequestResult = Promisable<AcceptableResponse | ClientRequest> | undefined;
-export type RequestFunction = (url: URL, options: NativeRequestOptions, callback?: (response: AcceptableResponse) => void) => AcceptableRequestResult;
-export type Agents = {
- http?: HttpAgent | false;
- https?: HttpsAgent | false;
- http2?: unknown | false;
-};
-export type Headers = Record<string, string | string[] | undefined>;
-export type ToughCookieJar = {
- getCookieString: ((currentUrl: string, options: Record<string, unknown>, cb: (error: Error | null, cookies: string) => void) => void) & ((url: string, callback: (error: Error | null, cookieHeader: string) => void) => void);
- setCookie: ((cookieOrString: unknown, currentUrl: string, options: Record<string, unknown>, cb: (error: Error | null, cookie: unknown) => void) => void) & ((rawCookie: string, url: string, callback: (error: Error | null, result: unknown) => void) => void);
-};
-export type PromiseCookieJar = {
- getCookieString: (url: string) => Promise<string>;
- setCookie: (rawCookie: string, url: string) => Promise<unknown>;
-};
-export type InitHook = (init: OptionsInit, self: Options) => void;
-export type BeforeRequestHook = (options: Options) => Promisable<void | Response | ResponseLike>;
-export type BeforeRedirectHook = (updatedOptions: Options, plainResponse: PlainResponse) => Promisable<void>;
-export type BeforeErrorHook = (error: RequestError) => Promisable<RequestError>;
-export type BeforeRetryHook = (error: RequestError, retryCount: number) => Promisable<void>;
-export type AfterResponseHook<ResponseType = unknown> = (response: Response<ResponseType>, retryWithMergedOptions: (options: OptionsInit) => never) => Promisable<Response | CancelableRequest<Response>>;
-/**
-All available hooks of Got.
-*/
-export type Hooks = {
- /**
- Called with the plain request options, right before their normalization.
-
- The second argument represents the current `Options` instance.
-
- @default []
-
- **Note:**
- > - This hook must be synchronous.
-
- **Note:**
- > - This is called every time options are merged.
-
- **Note:**
- > - The `options` object may not have the `url` property. To modify it, use a `beforeRequest` hook instead.
-
- **Note:**
- > - This hook is called when a new instance of `Options` is created.
- > - Do not confuse this with the creation of `Request` or `got(…)`.
-
- **Note:**
- > - When using `got(url)` or `got(url, undefined, defaults)` this hook will **not** be called.
-
- This is especially useful in conjunction with `got.extend()` when the input needs custom handling.
-
- For example, this can be used to fix typos to migrate from older versions faster.
-
- @example
- ```
- import got from 'got';
-
- const instance = got.extend({
- hooks: {
- init: [
- plain => {
- if ('followRedirects' in plain) {
- plain.followRedirect = plain.followRedirects;
- delete plain.followRedirects;
- }
- }
- ]
- }
- });
-
- // Normally, the following would throw:
- const response = await instance(
- 'https://example.com',
- {
- followRedirects: true
- }
- );
-
- // There is no option named `followRedirects`, but we correct it in an `init` hook.
- ```
-
- Or you can create your own option and store it in a context:
-
- ```
- import got from 'got';
-
- const instance = got.extend({
- hooks: {
- init: [
- (plain, options) => {
- if ('secret' in plain) {
- options.context.secret = plain.secret;
- delete plain.secret;
- }
- }
- ],
- beforeRequest: [
- options => {
- options.headers.secret = options.context.secret;
- }
- ]
- }
- });
-
- const {headers} = await instance(
- 'https://httpbin.org/anything',
- {
- secret: 'passphrase'
- }
- ).json();
-
- console.log(headers.Secret);
- //=> 'passphrase'
- ```
- */
- init: InitHook[];
- /**
- Called right before making the request with `options.createNativeRequestOptions()`.
-
- This hook is especially useful in conjunction with `got.extend()` when you want to sign your request.
-
- @default []
-
- **Note:**
- > - Got will make no further changes to the request before it is sent.
-
- **Note:**
- > - Changing `options.json` or `options.form` has no effect on the request. You should change `options.body` instead. If needed, update the `options.headers` accordingly.
-
- @example
- ```
- import got from 'got';
-
- const response = await got.post(
- 'https://httpbin.org/anything',
- {
- json: {payload: 'old'},
- hooks: {
- beforeRequest: [
- options => {
- options.body = JSON.stringify({payload: 'new'});
- options.headers['content-length'] = options.body.length.toString();
- }
- ]
- }
- }
- );
- ```
-
- **Tip:**
- > - You can indirectly override the `request` function by early returning a [`ClientRequest`-like](https://nodejs.org/api/http.html#http_class_http_clientrequest) instance or a [`IncomingMessage`-like](https://nodejs.org/api/http.html#http_class_http_incomingmessage) instance. This is very useful when creating a custom cache mechanism.
- > - [Read more about this tip](https://github.com/sindresorhus/got/blob/main/documentation/cache.md#advanced-caching-mechanisms).
- */
- beforeRequest: BeforeRequestHook[];
- /**
- The equivalent of `beforeRequest` but when redirecting.
-
- @default []
-
- **Tip:**
- > - This is especially useful when you want to avoid dead sites.
-
- @example
- ```
- import got from 'got';
-
- const response = await got('https://example.com', {
- hooks: {
- beforeRedirect: [
- (options, response) => {
- if (options.hostname === 'deadSite') {
- options.hostname = 'fallbackSite';
- }
- }
- ]
- }
- });
- ```
- */
- beforeRedirect: BeforeRedirectHook[];
- /**
- Called with a `RequestError` instance. The error is passed to the hook right before it's thrown.
-
- This is especially useful when you want to have more detailed errors.
-
- @default []
-
- ```
- import got from 'got';
-
- await got('https://api.github.com/repos/sindresorhus/got/commits', {
- responseType: 'json',
- hooks: {
- beforeError: [
- error => {
- const {response} = error;
- if (response && response.body) {
- error.name = 'GitHubError';
- error.message = `${response.body.message} (${response.statusCode})`;
- }
-
- return error;
- }
- ]
- }
- });
- ```
- */
- beforeError: BeforeErrorHook[];
- /**
- The equivalent of `beforeError` but when retrying. Additionally, there is a second argument `retryCount`, the current retry number.
-
- @default []
-
- **Note:**
- > - When using the Stream API, this hook is ignored.
-
- **Note:**
- > - When retrying, the `beforeRequest` hook is called afterwards.
-
- **Note:**
- > - If no retry occurs, the `beforeError` hook is called instead.
-
- This hook is especially useful when you want to retrieve the cause of a retry.
-
- @example
- ```
- import got from 'got';
-
- await got('https://httpbin.org/status/500', {
- hooks: {
- beforeRetry: [
- (error, retryCount) => {
- console.log(`Retrying [${retryCount}]: ${error.code}`);
- // Retrying [1]: ERR_NON_2XX_3XX_RESPONSE
- }
- ]
- }
- });
- ```
- */
- beforeRetry: BeforeRetryHook[];
- /**
- Each function should return the response. This is especially useful when you want to refresh an access token.
-
- @default []
-
- **Note:**
- > - When using the Stream API, this hook is ignored.
-
- **Note:**
- > - Calling the `retryWithMergedOptions` function will trigger `beforeRetry` hooks. If the retry is successful, all remaining `afterResponse` hooks will be called. In case of an error, `beforeRetry` hooks will be called instead.
- Meanwhile the `init`, `beforeRequest` , `beforeRedirect` as well as already executed `afterResponse` hooks will be skipped.
-
- @example
- ```
- import got from 'got';
-
- const instance = got.extend({
- hooks: {
- afterResponse: [
- (response, retryWithMergedOptions) => {
- // Unauthorized
- if (response.statusCode === 401) {
- // Refresh the access token
- const updatedOptions = {
- headers: {
- token: getNewToken()
- }
- };
-
- // Update the defaults
- instance.defaults.options.merge(updatedOptions);
-
- // Make a new retry
- return retryWithMergedOptions(updatedOptions);
- }
-
- // No changes otherwise
- return response;
- }
- ],
- beforeRetry: [
- error => {
- // This will be called on `retryWithMergedOptions(...)`
- }
- ]
- },
- mutableDefaults: true
- });
- ```
- */
- afterResponse: AfterResponseHook[];
-};
-export type ParseJsonFunction = (text: string) => unknown;
-export type StringifyJsonFunction = (object: unknown) => string;
-/**
-All available HTTP request methods provided by Got.
-*/
-export type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'HEAD' | 'DELETE' | 'OPTIONS' | 'TRACE' | 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete' | 'options' | 'trace';
-export type RetryObject = {
- attemptCount: number;
- retryOptions: RetryOptions;
- error: RequestError;
- computedValue: number;
- retryAfter?: number;
-};
-export type RetryFunction = (retryObject: RetryObject) => Promisable<number>;
-/**
-An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.
-
-Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 1).
-
-The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value.
-The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).
-
-By default, it retries *only* on the specified methods, status codes, and on these network errors:
-- `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.
-- `ECONNRESET`: Connection was forcibly closed by a peer.
-- `EADDRINUSE`: Could not bind to any free port.
-- `ECONNREFUSED`: Connection was refused by the server.
-- `EPIPE`: The remote side of the stream being written has been closed.
-- `ENOTFOUND`: Couldn't resolve the hostname to an IP address.
-- `ENETUNREACH`: No internet connection.
-- `EAI_AGAIN`: DNS lookup timed out.
-
-__Note:__ Got does not retry on `POST` by default.
-__Note:__ If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.
-__Note:__ If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.
-*/
-export type RetryOptions = {
- limit: number;
- methods: Method[];
- statusCodes: number[];
- errorCodes: string[];
- calculateDelay: RetryFunction;
- backoffLimit: number;
- noise: number;
- maxRetryAfter?: number;
-};
-export type CreateConnectionFunction = (options: NativeRequestOptions, oncreate: (error: NodeJS.ErrnoException, socket: Socket) => void) => Socket;
-export type CheckServerIdentityFunction = (hostname: string, certificate: DetailedPeerCertificate) => NodeJS.ErrnoException | void;
-export type CacheOptions = {
- shared?: boolean;
- cacheHeuristic?: number;
- immutableMinTimeToLive?: number;
- ignoreCargoCult?: boolean;
-};
-type PfxObject = {
- buffer: string | Buffer;
- passphrase?: string | undefined;
-};
-type PfxType = string | Buffer | Array<string | Buffer | PfxObject> | undefined;
-export type HttpsOptions = {
- alpnProtocols?: string[];
- rejectUnauthorized?: NativeRequestOptions['rejectUnauthorized'];
- checkServerIdentity?: CheckServerIdentityFunction;
- /**
- Override the default Certificate Authorities ([from Mozilla](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport)).
-
- @example
- ```
- // Single Certificate Authority
- await got('https://example.com', {
- https: {
- certificateAuthority: fs.readFileSync('./my_ca.pem')
- }
- });
- ```
- */
- certificateAuthority?: SecureContextOptions['ca'];
- /**
- Private keys in [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) format.
-
- [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) allows the option of private keys being encrypted.
- Encrypted keys will be decrypted with `options.https.passphrase`.
-
- Multiple keys with different passphrases can be provided as an array of `{pem: <string | Buffer>, passphrase: <string>}`
- */
- key?: SecureContextOptions['key'];
- /**
- [Certificate chains](https://en.wikipedia.org/wiki/X.509#Certificate_chains_and_cross-certification) in [PEM](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail) format.
-
- One cert chain should be provided per private key (`options.https.key`).
-
- When providing multiple cert chains, they do not have to be in the same order as their private keys in `options.https.key`.
-
- If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.
- */
- certificate?: SecureContextOptions['cert'];
- /**
- The passphrase to decrypt the `options.https.key` (if different keys have different passphrases refer to `options.https.key` documentation).
- */
- passphrase?: SecureContextOptions['passphrase'];
- pfx?: PfxType;
- ciphers?: SecureContextOptions['ciphers'];
- honorCipherOrder?: SecureContextOptions['honorCipherOrder'];
- minVersion?: SecureContextOptions['minVersion'];
- maxVersion?: SecureContextOptions['maxVersion'];
- signatureAlgorithms?: SecureContextOptions['sigalgs'];
- tlsSessionLifetime?: SecureContextOptions['sessionTimeout'];
- dhparam?: SecureContextOptions['dhparam'];
- ecdhCurve?: SecureContextOptions['ecdhCurve'];
- certificateRevocationLists?: SecureContextOptions['crl'];
-};
-export type PaginateData<BodyType, ElementType> = {
- response: Response<BodyType>;
- currentItems: ElementType[];
- allItems: ElementType[];
-};
-export type FilterData<ElementType> = {
- item: ElementType;
- currentItems: ElementType[];
- allItems: ElementType[];
-};
-/**
-All options accepted by `got.paginate()`.
-*/
-export type PaginationOptions<ElementType, BodyType> = {
- /**
- A function that transform [`Response`](#response) into an array of items.
- This is where you should do the parsing.
-
- @default response => JSON.parse(response.body)
- */
- transform?: (response: Response<BodyType>) => Promise<ElementType[]> | ElementType[];
- /**
- Checks whether the item should be emitted or not.
-
- @default ({item, currentItems, allItems}) => true
- */
- filter?: (data: FilterData<ElementType>) => boolean;
- /**
- The function takes an object with the following properties:
- - `response` - The current response object.
- - `currentItems` - Items from the current response.
- - `allItems` - An empty array, unless `pagination.stackAllItems` is set to `true`, in which case, it's an array of the emitted items.
-
- It should return an object representing Got options pointing to the next page. The options are merged automatically with the previous request, therefore the options returned `pagination.paginate(...)` must reflect changes only. If there are no more pages, `false` should be returned.
-
- @example
- ```
- import got from 'got';
-
- const limit = 10;
-
- const items = got.paginate('https://example.com/items', {
- searchParams: {
- limit,
- offset: 0
- },
- pagination: {
- paginate: ({response, currentItems}) => {
- const previousSearchParams = response.request.options.searchParams;
- const previousOffset = previousSearchParams.get('offset');
-
- if (currentItems.length < limit) {
- return false;
- }
-
- return {
- searchParams: {
- ...previousSearchParams,
- offset: Number(previousOffset) + limit,
- }
- };
- }
- }
- });
-
- console.log('Items from all pages:', items);
- ```
- */
- paginate?: (data: PaginateData<BodyType, ElementType>) => OptionsInit | false;
- /**
- Checks whether the pagination should continue.
-
- For example, if you need to stop **before** emitting an entry with some flag, you should use `({item}) => !item.flag`.
-
- If you want to stop **after** emitting the entry, you should use
- `({item, allItems}) => allItems.some(item => item.flag)` instead.
-
- @default ({item, currentItems, allItems}) => true
- */
- shouldContinue?: (data: FilterData<ElementType>) => boolean;
- /**
- The maximum amount of items that should be emitted.
-
- @default Infinity
- */
- countLimit?: number;
- /**
- Milliseconds to wait before the next request is triggered.
-
- @default 0
- */
- backoff?: number;
- /**
- The maximum amount of request that should be triggered.
- Retries on failure are not counted towards this limit.
-
- For example, it can be helpful during development to avoid an infinite number of requests.
-
- @default 10000
- */
- requestLimit?: number;
- /**
- Defines how the property `allItems` in `pagination.paginate`, `pagination.filter` and `pagination.shouldContinue` is managed.
-
- By default, the property `allItems` is always an empty array. This setting can be helpful to save on memory usage when working with a large dataset.
-
- When set to `true`, the property `allItems` is an array of the emitted items.
-
- @default false
- */
- stackAllItems?: boolean;
-};
-export type SearchParameters = Record<string, string | number | boolean | null | undefined>;
-/**
-All parsing methods supported by Got.
-*/
-export type ResponseType = 'json' | 'buffer' | 'text';
-type OptionsToSkip = 'searchParameters' | 'followRedirects' | 'auth' | 'toJSON' | 'merge' | 'createNativeRequestOptions' | 'getRequestFunction' | 'getFallbackRequestFunction' | 'freeze';
-export type InternalsType = Except<Options, OptionsToSkip>;
-export type OptionsError = NodeJS.ErrnoException & {
- options?: Options;
-};
-export type OptionsInit = Except<Partial<InternalsType>, 'hooks' | 'retry'> & {
- hooks?: Partial<Hooks>;
- retry?: Partial<RetryOptions>;
-};
-export default class Options {
- private _unixOptions?;
- private _internals;
- private _merging;
- private readonly _init;
- constructor(input?: string | URL | OptionsInit, options?: OptionsInit, defaults?: Options);
- merge(options?: OptionsInit | Options): void;
- /**
- Custom request function.
- The main purpose of this is to [support HTTP2 using a wrapper](https://github.com/szmarczak/http2-wrapper).
-
- @default http.request | https.request
- */
- get request(): RequestFunction | undefined;
- set request(value: RequestFunction | undefined);
- /**
- An object representing `http`, `https` and `http2` keys for [`http.Agent`](https://nodejs.org/api/http.html#http_class_http_agent), [`https.Agent`](https://nodejs.org/api/https.html#https_class_https_agent) and [`http2wrapper.Agent`](https://github.com/szmarczak/http2-wrapper#new-http2agentoptions) instance.
- This is necessary because a request to one protocol might redirect to another.
- In such a scenario, Got will switch over to the right protocol agent for you.
-
- If a key is not present, it will default to a global agent.
-
- @example
- ```
- import got from 'got';
- import HttpAgent from 'agentkeepalive';
-
- const {HttpsAgent} = HttpAgent;
-
- await got('https://sindresorhus.com', {
- agent: {
- http: new HttpAgent(),
- https: new HttpsAgent()
- }
- });
- ```
- */
- get agent(): Agents;
- set agent(value: Agents);
- get h2session(): ClientHttp2Session | undefined;
- set h2session(value: ClientHttp2Session | undefined);
- /**
- Decompress the response automatically.
-
- This will set the `accept-encoding` header to `gzip, deflate, br` unless you set it yourself.
-
- If this is disabled, a compressed response is returned as a `Buffer`.
- This may be useful if you want to handle decompression yourself or stream the raw compressed data.
-
- @default true
- */
- get decompress(): boolean;
- set decompress(value: boolean);
- /**
- Milliseconds to wait for the server to end the response before aborting the request with `got.TimeoutError` error (a.k.a. `request` property).
- By default, there's no timeout.
-
- This also accepts an `object` with the following fields to constrain the duration of each phase of the request lifecycle:
-
- - `lookup` starts when a socket is assigned and ends when the hostname has been resolved.
- Does not apply when using a Unix domain socket.
- - `connect` starts when `lookup` completes (or when the socket is assigned if lookup does not apply to the request) and ends when the socket is connected.
- - `secureConnect` starts when `connect` completes and ends when the handshaking process completes (HTTPS only).
- - `socket` starts when the socket is connected. See [request.setTimeout](https://nodejs.org/api/http.html#http_request_settimeout_timeout_callback).
- - `response` starts when the request has been written to the socket and ends when the response headers are received.
- - `send` starts when the socket is connected and ends with the request has been written to the socket.
- - `request` starts when the request is initiated and ends when the response's end event fires.
- */
- get timeout(): Delays;
- set timeout(value: Delays);
- /**
- When specified, `prefixUrl` will be prepended to `url`.
- The prefix can be any valid URL, either relative or absolute.
- A trailing slash `/` is optional - one will be added automatically.
-
- __Note__: `prefixUrl` will be ignored if the `url` argument is a URL instance.
-
- __Note__: Leading slashes in `input` are disallowed when using this option to enforce consistency and avoid confusion.
- For example, when the prefix URL is `https://example.com/foo` and the input is `/bar`, there's ambiguity whether the resulting URL would become `https://example.com/foo/bar` or `https://example.com/bar`.
- The latter is used by browsers.
-
- __Tip__: Useful when used with `got.extend()` to create niche-specific Got instances.
-
- __Tip__: You can change `prefixUrl` using hooks as long as the URL still includes the `prefixUrl`.
- If the URL doesn't include it anymore, it will throw.
-
- @example
- ```
- import got from 'got';
-
- await got('unicorn', {prefixUrl: 'https://cats.com'});
- //=> 'https://cats.com/unicorn'
-
- const instance = got.extend({
- prefixUrl: 'https://google.com'
- });
-
- await instance('unicorn', {
- hooks: {
- beforeRequest: [
- options => {
- options.prefixUrl = 'https://cats.com';
- }
- ]
- }
- });
- //=> 'https://cats.com/unicorn'
- ```
- */
- get prefixUrl(): string | URL;
- set prefixUrl(value: string | URL);
- /**
- __Note #1__: The `body` option cannot be used with the `json` or `form` option.
-
- __Note #2__: If you provide this option, `got.stream()` will be read-only.
-
- __Note #3__: If you provide a payload with the `GET` or `HEAD` method, it will throw a `TypeError` unless the method is `GET` and the `allowGetBody` option is set to `true`.
-
- __Note #4__: This option is not enumerable and will not be merged with the instance defaults.
-
- The `content-length` header will be automatically set if `body` is a `string` / `Buffer` / [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) / [`form-data` instance](https://github.com/form-data/form-data), and `content-length` and `transfer-encoding` are not manually set in `options.headers`.
-
- Since Got 12, the `content-length` is not automatically set when `body` is a `fs.createReadStream`.
- */
- get body(): string | Buffer | Readable | Generator | AsyncGenerator | FormDataLike | undefined;
- set body(value: string | Buffer | Readable | Generator | AsyncGenerator | FormDataLike | undefined);
- /**
- The form body is converted to a query string using [`(new URLSearchParams(object)).toString()`](https://nodejs.org/api/url.html#url_constructor_new_urlsearchparams_obj).
-
- If the `Content-Type` header is not present, it will be set to `application/x-www-form-urlencoded`.
-
- __Note #1__: If you provide this option, `got.stream()` will be read-only.
-
- __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
- */
- get form(): Record<string, any> | undefined;
- set form(value: Record<string, any> | undefined);
- /**
- JSON body. If the `Content-Type` header is not set, it will be set to `application/json`.
-
- __Note #1__: If you provide this option, `got.stream()` will be read-only.
-
- __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
- */
- get json(): unknown;
- set json(value: unknown);
- /**
- The URL to request, as a string, a [`https.request` options object](https://nodejs.org/api/https.html#https_https_request_options_callback), or a [WHATWG `URL`](https://nodejs.org/api/url.html#url_class_url).
-
- Properties from `options` will override properties in the parsed `url`.
-
- If no protocol is specified, it will throw a `TypeError`.
-
- __Note__: The query string is **not** parsed as search params.
-
- @example
- ```
- await got('https://example.com/?query=a b'); //=> https://example.com/?query=a%20b
- await got('https://example.com/', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
-
- // The query string is overridden by `searchParams`
- await got('https://example.com/?query=a b', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
- ```
- */
- get url(): string | URL | undefined;
- set url(value: string | URL | undefined);
- /**
- Cookie support. You don't have to care about parsing or how to store them.
-
- __Note__: If you provide this option, `options.headers.cookie` will be overridden.
- */
- get cookieJar(): PromiseCookieJar | ToughCookieJar | undefined;
- set cookieJar(value: PromiseCookieJar | ToughCookieJar | undefined);
- /**
- You can abort the `request` using [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController).
-
- *Requires Node.js 16 or later.*
-
- @example
- ```
- import got from 'got';
-
- const abortController = new AbortController();
-
- const request = got('https://httpbin.org/anything', {
- signal: abortController.signal
- });
-
- setTimeout(() => {
- abortController.abort();
- }, 100);
- ```
- */
- get signal(): any | undefined;
- set signal(value: any | undefined);
- /**
- Ignore invalid cookies instead of throwing an error.
- Only useful when the `cookieJar` option has been set. Not recommended.
-
- @default false
- */
- get ignoreInvalidCookies(): boolean;
- set ignoreInvalidCookies(value: boolean);
- /**
- Query string that will be added to the request URL.
- This will override the query string in `url`.
-
- If you need to pass in an array, you can do it using a `URLSearchParams` instance.
-
- @example
- ```
- import got from 'got';
-
- const searchParams = new URLSearchParams([['key', 'a'], ['key', 'b']]);
-
- await got('https://example.com', {searchParams});
-
- console.log(searchParams.toString());
- //=> 'key=a&key=b'
- ```
- */
- get searchParams(): string | SearchParameters | URLSearchParams | undefined;
- set searchParams(value: string | SearchParameters | URLSearchParams | undefined);
- get searchParameters(): unknown;
- set searchParameters(_value: unknown);
- get dnsLookup(): CacheableLookup['lookup'] | undefined;
- set dnsLookup(value: CacheableLookup['lookup'] | undefined);
- /**
- An instance of [`CacheableLookup`](https://github.com/szmarczak/cacheable-lookup) used for making DNS lookups.
- Useful when making lots of requests to different *public* hostnames.
-
- `CacheableLookup` uses `dns.resolver4(..)` and `dns.resolver6(...)` under the hood and fall backs to `dns.lookup(...)` when the first two fail, which may lead to additional delay.
-
- __Note__: This should stay disabled when making requests to internal hostnames such as `localhost`, `database.local` etc.
-
- @default false
- */
- get dnsCache(): CacheableLookup | boolean | undefined;
- set dnsCache(value: CacheableLookup | boolean | undefined);
- /**
- User data. `context` is shallow merged and enumerable. If it contains non-enumerable properties they will NOT be merged.
-
- @example
- ```
- import got from 'got';
-
- const instance = got.extend({
- hooks: {
- beforeRequest: [
- options => {
- if (!options.context || !options.context.token) {
- throw new Error('Token required');
- }
-
- options.headers.token = options.context.token;
- }
- ]
- }
- });
-
- const context = {
- token: 'secret'
- };
-
- const response = await instance('https://httpbin.org/headers', {context});
-
- // Let's see the headers
- console.log(response.body);
- ```
- */
- get context(): Record<string, unknown>;
- set context(value: Record<string, unknown>);
- /**
- Hooks allow modifications during the request lifecycle.
- Hook functions may be async and are run serially.
- */
- get hooks(): Hooks;
- set hooks(value: Hooks);
- /**
- Defines if redirect responses should be followed automatically.
-
- Note that if a `303` is sent by the server in response to any request type (`POST`, `DELETE`, etc.), Got will automatically request the resource pointed to in the location header via `GET`.
- This is in accordance with [the spec](https://tools.ietf.org/html/rfc7231#section-6.4.4). You can optionally turn on this behavior also for other redirect codes - see `methodRewriting`.
-
- @default true
- */
- get followRedirect(): boolean;
- set followRedirect(value: boolean);
- get followRedirects(): unknown;
- set followRedirects(_value: unknown);
- /**
- If exceeded, the request will be aborted and a `MaxRedirectsError` will be thrown.
-
- @default 10
- */
- get maxRedirects(): number;
- set maxRedirects(value: number);
- /**
- A cache adapter instance for storing cached response data.
-
- @default false
- */
- get cache(): string | StorageAdapter | boolean | undefined;
- set cache(value: string | StorageAdapter | boolean | undefined);
- /**
- Determines if a `got.HTTPError` is thrown for unsuccessful responses.
-
- If this is disabled, requests that encounter an error status code will be resolved with the `response` instead of throwing.
- This may be useful if you are checking for resource availability and are expecting error responses.
-
- @default true
- */
- get throwHttpErrors(): boolean;
- set throwHttpErrors(value: boolean);
- get username(): string;
- set username(value: string);
- get password(): string;
- set password(value: string);
- /**
- If set to `true`, Got will additionally accept HTTP2 requests.
-
- It will choose either HTTP/1.1 or HTTP/2 depending on the ALPN protocol.
-
- __Note__: This option requires Node.js 15.10.0 or newer as HTTP/2 support on older Node.js versions is very buggy.
-
- __Note__: Overriding `options.request` will disable HTTP2 support.
-
- @default false
-
- @example
- ```
- import got from 'got';
-
- const {headers} = await got('https://nghttp2.org/httpbin/anything', {http2: true});
-
- console.log(headers.via);
- //=> '2 nghttpx'
- ```
- */
- get http2(): boolean;
- set http2(value: boolean);
- /**
- Set this to `true` to allow sending body for the `GET` method.
- However, the [HTTP/2 specification](https://tools.ietf.org/html/rfc7540#section-8.1.3) says that `An HTTP GET request includes request header fields and no payload body`, therefore when using the HTTP/2 protocol this option will have no effect.
- This option is only meant to interact with non-compliant servers when you have no other choice.
-
- __Note__: The [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1) doesn't specify any particular behavior for the GET method having a payload, therefore __it's considered an [anti-pattern](https://en.wikipedia.org/wiki/Anti-pattern)__.
-
- @default false
- */
- get allowGetBody(): boolean;
- set allowGetBody(value: boolean);
- /**
- Request headers.
-
- Existing headers will be overwritten. Headers set to `undefined` will be omitted.
-
- @default {}
- */
- get headers(): Headers;
- set headers(value: Headers);
- /**
- Specifies if the HTTP request method should be [rewritten as `GET`](https://tools.ietf.org/html/rfc7231#section-6.4) on redirects.
-
- As the [specification](https://tools.ietf.org/html/rfc7231#section-6.4) prefers to rewrite the HTTP method only on `303` responses, this is Got's default behavior.
- Setting `methodRewriting` to `true` will also rewrite `301` and `302` responses, as allowed by the spec. This is the behavior followed by `curl` and browsers.
-
- __Note__: Got never performs method rewriting on `307` and `308` responses, as this is [explicitly prohibited by the specification](https://www.rfc-editor.org/rfc/rfc7231#section-6.4.7).
-
- @default false
- */
- get methodRewriting(): boolean;
- set methodRewriting(value: boolean);
- /**
- Indicates which DNS record family to use.
-
- Values:
- - `undefined`: IPv4 (if present) or IPv6
- - `4`: Only IPv4
- - `6`: Only IPv6
-
- @default undefined
- */
- get dnsLookupIpVersion(): DnsLookupIpVersion;
- set dnsLookupIpVersion(value: DnsLookupIpVersion);
- /**
- A function used to parse JSON responses.
-
- @example
- ```
- import got from 'got';
- import Bourne from '@hapi/bourne';
-
- const parsed = await got('https://example.com', {
- parseJson: text => Bourne.parse(text)
- }).json();
-
- console.log(parsed);
- ```
- */
- get parseJson(): ParseJsonFunction;
- set parseJson(value: ParseJsonFunction);
- /**
- A function used to stringify the body of JSON requests.
-
- @example
- ```
- import got from 'got';
-
- await got.post('https://example.com', {
- stringifyJson: object => JSON.stringify(object, (key, value) => {
- if (key.startsWith('_')) {
- return;
- }
-
- return value;
- }),
- json: {
- some: 'payload',
- _ignoreMe: 1234
- }
- });
- ```
-
- @example
- ```
- import got from 'got';
-
- await got.post('https://example.com', {
- stringifyJson: object => JSON.stringify(object, (key, value) => {
- if (typeof value === 'number') {
- return value.toString();
- }
-
- return value;
- }),
- json: {
- some: 'payload',
- number: 1
- }
- });
- ```
- */
- get stringifyJson(): StringifyJsonFunction;
- set stringifyJson(value: StringifyJsonFunction);
- /**
- An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.
-
- Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 1).
-
- The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value.
- The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).
-
- By default, it retries *only* on the specified methods, status codes, and on these network errors:
-
- - `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.
- - `ECONNRESET`: Connection was forcibly closed by a peer.
- - `EADDRINUSE`: Could not bind to any free port.
- - `ECONNREFUSED`: Connection was refused by the server.
- - `EPIPE`: The remote side of the stream being written has been closed.
- - `ENOTFOUND`: Couldn't resolve the hostname to an IP address.
- - `ENETUNREACH`: No internet connection.
- - `EAI_AGAIN`: DNS lookup timed out.
-
- __Note__: If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.
- __Note__: If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.
- */
- get retry(): Partial<RetryOptions>;
- set retry(value: Partial<RetryOptions>);
- /**
- From `http.RequestOptions`.
-
- The IP address used to send the request from.
- */
- get localAddress(): string | undefined;
- set localAddress(value: string | undefined);
- /**
- The HTTP method used to make the request.
-
- @default 'GET'
- */
- get method(): Method;
- set method(value: Method);
- get createConnection(): CreateConnectionFunction | undefined;
- set createConnection(value: CreateConnectionFunction | undefined);
- /**
- From `http-cache-semantics`
-
- @default {}
- */
- get cacheOptions(): CacheOptions;
- set cacheOptions(value: CacheOptions);
- /**
- Options for the advanced HTTPS API.
- */
- get https(): HttpsOptions;
- set https(value: HttpsOptions);
- /**
- [Encoding](https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings) to be used on `setEncoding` of the response data.
-
- To get a [`Buffer`](https://nodejs.org/api/buffer.html), you need to set `responseType` to `buffer` instead.
- Don't set this option to `null`.
-
- __Note__: This doesn't affect streams! Instead, you need to do `got.stream(...).setEncoding(encoding)`.
-
- @default 'utf-8'
- */
- get encoding(): BufferEncoding | undefined;
- set encoding(value: BufferEncoding | undefined);
- /**
- When set to `true` the promise will return the Response body instead of the Response object.
-
- @default false
- */
- get resolveBodyOnly(): boolean;
- set resolveBodyOnly(value: boolean);
- /**
- Returns a `Stream` instead of a `Promise`.
- This is equivalent to calling `got.stream(url, options?)`.
-
- @default false
- */
- get isStream(): boolean;
- set isStream(value: boolean);
- /**
- The parsing method.
-
- The promise also has `.text()`, `.json()` and `.buffer()` methods which return another Got promise for the parsed body.
-
- It's like setting the options to `{responseType: 'json', resolveBodyOnly: true}` but without affecting the main Got promise.
-
- __Note__: When using streams, this option is ignored.
-
- @example
- ```
- const responsePromise = got(url);
- const bufferPromise = responsePromise.buffer();
- const jsonPromise = responsePromise.json();
-
- const [response, buffer, json] = Promise.all([responsePromise, bufferPromise, jsonPromise]);
- // `response` is an instance of Got Response
- // `buffer` is an instance of Buffer
- // `json` is an object
- ```
-
- @example
- ```
- // This
- const body = await got(url).json();
-
- // is semantically the same as this
- const body = await got(url, {responseType: 'json', resolveBodyOnly: true});
- ```
- */
- get responseType(): ResponseType;
- set responseType(value: ResponseType);
- get pagination(): PaginationOptions<unknown, unknown>;
- set pagination(value: PaginationOptions<unknown, unknown>);
- get auth(): unknown;
- set auth(_value: unknown);
- get setHost(): boolean;
- set setHost(value: boolean);
- get maxHeaderSize(): number | undefined;
- set maxHeaderSize(value: number | undefined);
- get enableUnixSockets(): boolean;
- set enableUnixSockets(value: boolean);
- toJSON(): {
- headers: Headers;
- timeout: Delays;
- request: RequestFunction | undefined;
- username: string;
- password: string;
- json: unknown;
- retry: Partial<RetryOptions>;
- agent: Agents;
- h2session: http2wrapper.ClientHttp2Session | undefined;
- decompress: boolean;
- prefixUrl: string | URL;
- body: string | Readable | Buffer | Generator<unknown, any, unknown> | AsyncGenerator<unknown, any, unknown> | FormDataLike | undefined;
- form: Record<string, any> | undefined;
- url: string | URL | undefined;
- cookieJar: PromiseCookieJar | ToughCookieJar | undefined;
- signal: any;
- ignoreInvalidCookies: boolean;
- searchParams: string | SearchParameters | URLSearchParams | undefined;
- dnsLookup: {
- (hostname: string, family: import("cacheable-lookup").IPFamily, callback: (error: NodeJS.ErrnoException | null, address: string, family: import("cacheable-lookup").IPFamily) => void): void;
- (hostname: string, callback: (error: NodeJS.ErrnoException | null, address: string, family: import("cacheable-lookup").IPFamily) => void): void;
- (hostname: string, options: import("cacheable-lookup").LookupOptions & {
- all: true;
- }, callback: (error: NodeJS.ErrnoException | null, result: readonly import("cacheable-lookup").EntryObject[]) => void): void;
- (hostname: string, options: import("cacheable-lookup").LookupOptions, callback: (error: NodeJS.ErrnoException | null, address: string, family: import("cacheable-lookup").IPFamily) => void): void;
- } | undefined;
- dnsCache: boolean | CacheableLookup | undefined;
- context: Record<string, unknown>;
- hooks: Hooks;
- followRedirect: boolean;
- maxRedirects: number;
- cache: string | boolean | StorageAdapter | undefined;
- throwHttpErrors: boolean;
- http2: boolean;
- allowGetBody: boolean;
- methodRewriting: boolean;
- dnsLookupIpVersion: DnsLookupIpVersion;
- parseJson: ParseJsonFunction;
- stringifyJson: StringifyJsonFunction;
- localAddress: string | undefined;
- method: Method;
- createConnection: CreateConnectionFunction | undefined;
- cacheOptions: CacheOptions;
- https: HttpsOptions;
- encoding: BufferEncoding | undefined;
- resolveBodyOnly: boolean;
- isStream: boolean;
- responseType: ResponseType;
- pagination: PaginationOptions<unknown, unknown>;
- setHost: boolean;
- maxHeaderSize: number | undefined;
- enableUnixSockets: boolean;
- };
- createNativeRequestOptions(): {
- ALPNProtocols: string[] | undefined;
- ca: string | Buffer | (string | Buffer)[] | undefined;
- cert: string | Buffer | (string | Buffer)[] | undefined;
- key: string | Buffer | (string | Buffer | import("tls").KeyObject)[] | undefined;
- passphrase: string | undefined;
- pfx: PfxType;
- rejectUnauthorized: boolean | undefined;
- checkServerIdentity: typeof checkServerIdentity | CheckServerIdentityFunction;
- ciphers: string | undefined;
- honorCipherOrder: boolean | undefined;
- minVersion: import("tls").SecureVersion | undefined;
- maxVersion: import("tls").SecureVersion | undefined;
- sigalgs: string | undefined;
- sessionTimeout: number | undefined;
- dhparam: string | Buffer | undefined;
- ecdhCurve: string | undefined;
- crl: string | Buffer | (string | Buffer)[] | undefined;
- lookup: {
- (hostname: string, family: import("cacheable-lookup").IPFamily, callback: (error: NodeJS.ErrnoException | null, address: string, family: import("cacheable-lookup").IPFamily) => void): void;
- (hostname: string, callback: (error: NodeJS.ErrnoException | null, address: string, family: import("cacheable-lookup").IPFamily) => void): void;
- (hostname: string, options: import("cacheable-lookup").LookupOptions & {
- all: true;
- }, callback: (error: NodeJS.ErrnoException | null, result: readonly import("cacheable-lookup").EntryObject[]) => void): void;
- (hostname: string, options: import("cacheable-lookup").LookupOptions, callback: (error: NodeJS.ErrnoException | null, address: string, family: import("cacheable-lookup").IPFamily) => void): void;
- } | undefined;
- family: DnsLookupIpVersion;
- agent: false | Agents | http.Agent | undefined;
- setHost: boolean;
- method: Method;
- maxHeaderSize: number | undefined;
- localAddress: string | undefined;
- headers: Headers;
- createConnection: CreateConnectionFunction | undefined;
- timeout: number | undefined;
- h2session: http2wrapper.ClientHttp2Session | undefined;
- _defaultAgent?: http.Agent | undefined;
- auth?: string | null | undefined;
- defaultPort?: string | number | undefined;
- hints?: number | undefined;
- host?: string | null | undefined;
- hostname?: string | null | undefined;
- insecureHTTPParser?: boolean | undefined;
- localPort?: number | undefined;
- path?: string | null | undefined;
- port?: string | number | null | undefined;
- protocol?: string | null | undefined;
- signal?: AbortSignal | undefined;
- socketPath?: string | undefined;
- uniqueHeaders?: (string | string[])[] | undefined;
- clientCertEngine?: string | undefined;
- privateKeyEngine?: string | undefined;
- privateKeyIdentifier?: string | undefined;
- secureOptions?: number | undefined;
- secureProtocol?: string | undefined;
- sessionIdContext?: string | undefined;
- ticketKeys?: Buffer | undefined;
- servername?: string | undefined;
- shared?: boolean | undefined;
- cacheHeuristic?: number | undefined;
- immutableMinTimeToLive?: number | undefined;
- ignoreCargoCult?: boolean | undefined;
- };
- getRequestFunction(): RequestFunction | typeof https.request | undefined;
- getFallbackRequestFunction(): RequestFunction | typeof https.request | undefined;
- freeze(): void;
-}
-export {};
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/options.js b/includes/external/addressbook/node_modules/got/dist/source/core/options.js
deleted file mode 100644
index 571c4a0..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/options.js
+++ /dev/null
@@ -1,1653 +0,0 @@
-import process from 'node:process';
-import { promisify, inspect } from 'node:util';
-import { URL, URLSearchParams } from 'node:url';
-import { checkServerIdentity } from 'node:tls';
-// DO NOT use destructuring for `https.request` and `http.request` as it's not compatible with `nock`.
-import http from 'node:http';
-import https from 'node:https';
-import is, { assert } from '@sindresorhus/is';
-import lowercaseKeys from 'lowercase-keys';
-import CacheableLookup from 'cacheable-lookup';
-import http2wrapper from 'http2-wrapper';
-import { isFormData } from 'form-data-encoder';
-import parseLinkHeader from './parse-link-header.js';
-const [major, minor] = process.versions.node.split('.').map(Number);
-function validateSearchParameters(searchParameters) {
- // eslint-disable-next-line guard-for-in
- for (const key in searchParameters) {
- const value = searchParameters[key];
- assert.any([is.string, is.number, is.boolean, is.null_, is.undefined], value);
- }
-}
-const globalCache = new Map();
-let globalDnsCache;
-const getGlobalDnsCache = () => {
- if (globalDnsCache) {
- return globalDnsCache;
- }
- globalDnsCache = new CacheableLookup();
- return globalDnsCache;
-};
-const defaultInternals = {
- request: undefined,
- agent: {
- http: undefined,
- https: undefined,
- http2: undefined,
- },
- h2session: undefined,
- decompress: true,
- timeout: {
- connect: undefined,
- lookup: undefined,
- read: undefined,
- request: undefined,
- response: undefined,
- secureConnect: undefined,
- send: undefined,
- socket: undefined,
- },
- prefixUrl: '',
- body: undefined,
- form: undefined,
- json: undefined,
- cookieJar: undefined,
- ignoreInvalidCookies: false,
- searchParams: undefined,
- dnsLookup: undefined,
- dnsCache: undefined,
- context: {},
- hooks: {
- init: [],
- beforeRequest: [],
- beforeError: [],
- beforeRedirect: [],
- beforeRetry: [],
- afterResponse: [],
- },
- followRedirect: true,
- maxRedirects: 10,
- cache: undefined,
- throwHttpErrors: true,
- username: '',
- password: '',
- http2: false,
- allowGetBody: false,
- headers: {
- 'user-agent': 'got (https://github.com/sindresorhus/got)',
- },
- methodRewriting: false,
- dnsLookupIpVersion: undefined,
- parseJson: JSON.parse,
- stringifyJson: JSON.stringify,
- retry: {
- limit: 2,
- methods: [
- 'GET',
- 'PUT',
- 'HEAD',
- 'DELETE',
- 'OPTIONS',
- 'TRACE',
- ],
- statusCodes: [
- 408,
- 413,
- 429,
- 500,
- 502,
- 503,
- 504,
- 521,
- 522,
- 524,
- ],
- errorCodes: [
- 'ETIMEDOUT',
- 'ECONNRESET',
- 'EADDRINUSE',
- 'ECONNREFUSED',
- 'EPIPE',
- 'ENOTFOUND',
- 'ENETUNREACH',
- 'EAI_AGAIN',
- ],
- maxRetryAfter: undefined,
- calculateDelay: ({ computedValue }) => computedValue,
- backoffLimit: Number.POSITIVE_INFINITY,
- noise: 100,
- },
- localAddress: undefined,
- method: 'GET',
- createConnection: undefined,
- cacheOptions: {
- shared: undefined,
- cacheHeuristic: undefined,
- immutableMinTimeToLive: undefined,
- ignoreCargoCult: undefined,
- },
- https: {
- alpnProtocols: undefined,
- rejectUnauthorized: undefined,
- checkServerIdentity: undefined,
- certificateAuthority: undefined,
- key: undefined,
- certificate: undefined,
- passphrase: undefined,
- pfx: undefined,
- ciphers: undefined,
- honorCipherOrder: undefined,
- minVersion: undefined,
- maxVersion: undefined,
- signatureAlgorithms: undefined,
- tlsSessionLifetime: undefined,
- dhparam: undefined,
- ecdhCurve: undefined,
- certificateRevocationLists: undefined,
- },
- encoding: undefined,
- resolveBodyOnly: false,
- isStream: false,
- responseType: 'text',
- url: undefined,
- pagination: {
- transform(response) {
- if (response.request.options.responseType === 'json') {
- return response.body;
- }
- return JSON.parse(response.body);
- },
- paginate({ response }) {
- const rawLinkHeader = response.headers.link;
- if (typeof rawLinkHeader !== 'string' || rawLinkHeader.trim() === '') {
- return false;
- }
- const parsed = parseLinkHeader(rawLinkHeader);
- const next = parsed.find(entry => entry.parameters.rel === 'next' || entry.parameters.rel === '"next"');
- if (next) {
- return {
- url: new URL(next.reference, response.url),
- };
- }
- return false;
- },
- filter: () => true,
- shouldContinue: () => true,
- countLimit: Number.POSITIVE_INFINITY,
- backoff: 0,
- requestLimit: 10000,
- stackAllItems: false,
- },
- setHost: true,
- maxHeaderSize: undefined,
- signal: undefined,
- enableUnixSockets: true,
-};
-const cloneInternals = (internals) => {
- const { hooks, retry } = internals;
- const result = {
- ...internals,
- context: { ...internals.context },
- cacheOptions: { ...internals.cacheOptions },
- https: { ...internals.https },
- agent: { ...internals.agent },
- headers: { ...internals.headers },
- retry: {
- ...retry,
- errorCodes: [...retry.errorCodes],
- methods: [...retry.methods],
- statusCodes: [...retry.statusCodes],
- },
- timeout: { ...internals.timeout },
- hooks: {
- init: [...hooks.init],
- beforeRequest: [...hooks.beforeRequest],
- beforeError: [...hooks.beforeError],
- beforeRedirect: [...hooks.beforeRedirect],
- beforeRetry: [...hooks.beforeRetry],
- afterResponse: [...hooks.afterResponse],
- },
- searchParams: internals.searchParams ? new URLSearchParams(internals.searchParams) : undefined,
- pagination: { ...internals.pagination },
- };
- if (result.url !== undefined) {
- result.prefixUrl = '';
- }
- return result;
-};
-const cloneRaw = (raw) => {
- const { hooks, retry } = raw;
- const result = { ...raw };
- if (is.object(raw.context)) {
- result.context = { ...raw.context };
- }
- if (is.object(raw.cacheOptions)) {
- result.cacheOptions = { ...raw.cacheOptions };
- }
- if (is.object(raw.https)) {
- result.https = { ...raw.https };
- }
- if (is.object(raw.cacheOptions)) {
- result.cacheOptions = { ...result.cacheOptions };
- }
- if (is.object(raw.agent)) {
- result.agent = { ...raw.agent };
- }
- if (is.object(raw.headers)) {
- result.headers = { ...raw.headers };
- }
- if (is.object(retry)) {
- result.retry = { ...retry };
- if (is.array(retry.errorCodes)) {
- result.retry.errorCodes = [...retry.errorCodes];
- }
- if (is.array(retry.methods)) {
- result.retry.methods = [...retry.methods];
- }
- if (is.array(retry.statusCodes)) {
- result.retry.statusCodes = [...retry.statusCodes];
- }
- }
- if (is.object(raw.timeout)) {
- result.timeout = { ...raw.timeout };
- }
- if (is.object(hooks)) {
- result.hooks = {
- ...hooks,
- };
- if (is.array(hooks.init)) {
- result.hooks.init = [...hooks.init];
- }
- if (is.array(hooks.beforeRequest)) {
- result.hooks.beforeRequest = [...hooks.beforeRequest];
- }
- if (is.array(hooks.beforeError)) {
- result.hooks.beforeError = [...hooks.beforeError];
- }
- if (is.array(hooks.beforeRedirect)) {
- result.hooks.beforeRedirect = [...hooks.beforeRedirect];
- }
- if (is.array(hooks.beforeRetry)) {
- result.hooks.beforeRetry = [...hooks.beforeRetry];
- }
- if (is.array(hooks.afterResponse)) {
- result.hooks.afterResponse = [...hooks.afterResponse];
- }
- }
- // TODO: raw.searchParams
- if (is.object(raw.pagination)) {
- result.pagination = { ...raw.pagination };
- }
- return result;
-};
-const getHttp2TimeoutOption = (internals) => {
- const delays = [internals.timeout.socket, internals.timeout.connect, internals.timeout.lookup, internals.timeout.request, internals.timeout.secureConnect].filter(delay => typeof delay === 'number');
- if (delays.length > 0) {
- return Math.min(...delays);
- }
- return undefined;
-};
-const init = (options, withOptions, self) => {
- const initHooks = options.hooks?.init;
- if (initHooks) {
- for (const hook of initHooks) {
- hook(withOptions, self);
- }
- }
-};
-export default class Options {
- constructor(input, options, defaults) {
- Object.defineProperty(this, "_unixOptions", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_internals", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_merging", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "_init", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- assert.any([is.string, is.urlInstance, is.object, is.undefined], input);
- assert.any([is.object, is.undefined], options);
- assert.any([is.object, is.undefined], defaults);
- if (input instanceof Options || options instanceof Options) {
- throw new TypeError('The defaults must be passed as the third argument');
- }
- this._internals = cloneInternals(defaults?._internals ?? defaults ?? defaultInternals);
- this._init = [...(defaults?._init ?? [])];
- this._merging = false;
- this._unixOptions = undefined;
- // This rule allows `finally` to be considered more important.
- // Meaning no matter the error thrown in the `try` block,
- // if `finally` throws then the `finally` error will be thrown.
- //
- // Yes, we want this. If we set `url` first, then the `url.searchParams`
- // would get merged. Instead we set the `searchParams` first, then
- // `url.searchParams` is overwritten as expected.
- //
- /* eslint-disable no-unsafe-finally */
- try {
- if (is.plainObject(input)) {
- try {
- this.merge(input);
- this.merge(options);
- }
- finally {
- this.url = input.url;
- }
- }
- else {
- try {
- this.merge(options);
- }
- finally {
- if (options?.url !== undefined) {
- if (input === undefined) {
- this.url = options.url;
- }
- else {
- throw new TypeError('The `url` option is mutually exclusive with the `input` argument');
- }
- }
- else if (input !== undefined) {
- this.url = input;
- }
- }
- }
- }
- catch (error) {
- error.options = this;
- throw error;
- }
- /* eslint-enable no-unsafe-finally */
- }
- merge(options) {
- if (!options) {
- return;
- }
- if (options instanceof Options) {
- for (const init of options._init) {
- this.merge(init);
- }
- return;
- }
- options = cloneRaw(options);
- init(this, options, this);
- init(options, options, this);
- this._merging = true;
- // Always merge `isStream` first
- if ('isStream' in options) {
- this.isStream = options.isStream;
- }
- try {
- let push = false;
- for (const key in options) {
- // `got.extend()` options
- if (key === 'mutableDefaults' || key === 'handlers') {
- continue;
- }
- // Never merge `url`
- if (key === 'url') {
- continue;
- }
- if (!(key in this)) {
- throw new Error(`Unexpected option: ${key}`);
- }
- // @ts-expect-error Type 'unknown' is not assignable to type 'never'.
- this[key] = options[key];
- push = true;
- }
- if (push) {
- this._init.push(options);
- }
- }
- finally {
- this._merging = false;
- }
- }
- /**
- Custom request function.
- The main purpose of this is to [support HTTP2 using a wrapper](https://github.com/szmarczak/http2-wrapper).
-
- @default http.request | https.request
- */
- get request() {
- return this._internals.request;
- }
- set request(value) {
- assert.any([is.function_, is.undefined], value);
- this._internals.request = value;
- }
- /**
- An object representing `http`, `https` and `http2` keys for [`http.Agent`](https://nodejs.org/api/http.html#http_class_http_agent), [`https.Agent`](https://nodejs.org/api/https.html#https_class_https_agent) and [`http2wrapper.Agent`](https://github.com/szmarczak/http2-wrapper#new-http2agentoptions) instance.
- This is necessary because a request to one protocol might redirect to another.
- In such a scenario, Got will switch over to the right protocol agent for you.
-
- If a key is not present, it will default to a global agent.
-
- @example
- ```
- import got from 'got';
- import HttpAgent from 'agentkeepalive';
-
- const {HttpsAgent} = HttpAgent;
-
- await got('https://sindresorhus.com', {
- agent: {
- http: new HttpAgent(),
- https: new HttpsAgent()
- }
- });
- ```
- */
- get agent() {
- return this._internals.agent;
- }
- set agent(value) {
- assert.plainObject(value);
- // eslint-disable-next-line guard-for-in
- for (const key in value) {
- if (!(key in this._internals.agent)) {
- throw new TypeError(`Unexpected agent option: ${key}`);
- }
- // @ts-expect-error - No idea why `value[key]` doesn't work here.
- assert.any([is.object, is.undefined], value[key]);
- }
- if (this._merging) {
- Object.assign(this._internals.agent, value);
- }
- else {
- this._internals.agent = { ...value };
- }
- }
- get h2session() {
- return this._internals.h2session;
- }
- set h2session(value) {
- this._internals.h2session = value;
- }
- /**
- Decompress the response automatically.
-
- This will set the `accept-encoding` header to `gzip, deflate, br` unless you set it yourself.
-
- If this is disabled, a compressed response is returned as a `Buffer`.
- This may be useful if you want to handle decompression yourself or stream the raw compressed data.
-
- @default true
- */
- get decompress() {
- return this._internals.decompress;
- }
- set decompress(value) {
- assert.boolean(value);
- this._internals.decompress = value;
- }
- /**
- Milliseconds to wait for the server to end the response before aborting the request with `got.TimeoutError` error (a.k.a. `request` property).
- By default, there's no timeout.
-
- This also accepts an `object` with the following fields to constrain the duration of each phase of the request lifecycle:
-
- - `lookup` starts when a socket is assigned and ends when the hostname has been resolved.
- Does not apply when using a Unix domain socket.
- - `connect` starts when `lookup` completes (or when the socket is assigned if lookup does not apply to the request) and ends when the socket is connected.
- - `secureConnect` starts when `connect` completes and ends when the handshaking process completes (HTTPS only).
- - `socket` starts when the socket is connected. See [request.setTimeout](https://nodejs.org/api/http.html#http_request_settimeout_timeout_callback).
- - `response` starts when the request has been written to the socket and ends when the response headers are received.
- - `send` starts when the socket is connected and ends with the request has been written to the socket.
- - `request` starts when the request is initiated and ends when the response's end event fires.
- */
- get timeout() {
- // We always return `Delays` here.
- // It has to be `Delays | number`, otherwise TypeScript will error because the getter and the setter have incompatible types.
- return this._internals.timeout;
- }
- set timeout(value) {
- assert.plainObject(value);
- // eslint-disable-next-line guard-for-in
- for (const key in value) {
- if (!(key in this._internals.timeout)) {
- throw new Error(`Unexpected timeout option: ${key}`);
- }
- // @ts-expect-error - No idea why `value[key]` doesn't work here.
- assert.any([is.number, is.undefined], value[key]);
- }
- if (this._merging) {
- Object.assign(this._internals.timeout, value);
- }
- else {
- this._internals.timeout = { ...value };
- }
- }
- /**
- When specified, `prefixUrl` will be prepended to `url`.
- The prefix can be any valid URL, either relative or absolute.
- A trailing slash `/` is optional - one will be added automatically.
-
- __Note__: `prefixUrl` will be ignored if the `url` argument is a URL instance.
-
- __Note__: Leading slashes in `input` are disallowed when using this option to enforce consistency and avoid confusion.
- For example, when the prefix URL is `https://example.com/foo` and the input is `/bar`, there's ambiguity whether the resulting URL would become `https://example.com/foo/bar` or `https://example.com/bar`.
- The latter is used by browsers.
-
- __Tip__: Useful when used with `got.extend()` to create niche-specific Got instances.
-
- __Tip__: You can change `prefixUrl` using hooks as long as the URL still includes the `prefixUrl`.
- If the URL doesn't include it anymore, it will throw.
-
- @example
- ```
- import got from 'got';
-
- await got('unicorn', {prefixUrl: 'https://cats.com'});
- //=> 'https://cats.com/unicorn'
-
- const instance = got.extend({
- prefixUrl: 'https://google.com'
- });
-
- await instance('unicorn', {
- hooks: {
- beforeRequest: [
- options => {
- options.prefixUrl = 'https://cats.com';
- }
- ]
- }
- });
- //=> 'https://cats.com/unicorn'
- ```
- */
- get prefixUrl() {
- // We always return `string` here.
- // It has to be `string | URL`, otherwise TypeScript will error because the getter and the setter have incompatible types.
- return this._internals.prefixUrl;
- }
- set prefixUrl(value) {
- assert.any([is.string, is.urlInstance], value);
- if (value === '') {
- this._internals.prefixUrl = '';
- return;
- }
- value = value.toString();
- if (!value.endsWith('/')) {
- value += '/';
- }
- if (this._internals.prefixUrl && this._internals.url) {
- const { href } = this._internals.url;
- this._internals.url.href = value + href.slice(this._internals.prefixUrl.length);
- }
- this._internals.prefixUrl = value;
- }
- /**
- __Note #1__: The `body` option cannot be used with the `json` or `form` option.
-
- __Note #2__: If you provide this option, `got.stream()` will be read-only.
-
- __Note #3__: If you provide a payload with the `GET` or `HEAD` method, it will throw a `TypeError` unless the method is `GET` and the `allowGetBody` option is set to `true`.
-
- __Note #4__: This option is not enumerable and will not be merged with the instance defaults.
-
- The `content-length` header will be automatically set if `body` is a `string` / `Buffer` / [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) / [`form-data` instance](https://github.com/form-data/form-data), and `content-length` and `transfer-encoding` are not manually set in `options.headers`.
-
- Since Got 12, the `content-length` is not automatically set when `body` is a `fs.createReadStream`.
- */
- get body() {
- return this._internals.body;
- }
- set body(value) {
- assert.any([is.string, is.buffer, is.nodeStream, is.generator, is.asyncGenerator, isFormData, is.undefined], value);
- if (is.nodeStream(value)) {
- assert.truthy(value.readable);
- }
- if (value !== undefined) {
- assert.undefined(this._internals.form);
- assert.undefined(this._internals.json);
- }
- this._internals.body = value;
- }
- /**
- The form body is converted to a query string using [`(new URLSearchParams(object)).toString()`](https://nodejs.org/api/url.html#url_constructor_new_urlsearchparams_obj).
-
- If the `Content-Type` header is not present, it will be set to `application/x-www-form-urlencoded`.
-
- __Note #1__: If you provide this option, `got.stream()` will be read-only.
-
- __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
- */
- get form() {
- return this._internals.form;
- }
- set form(value) {
- assert.any([is.plainObject, is.undefined], value);
- if (value !== undefined) {
- assert.undefined(this._internals.body);
- assert.undefined(this._internals.json);
- }
- this._internals.form = value;
- }
- /**
- JSON body. If the `Content-Type` header is not set, it will be set to `application/json`.
-
- __Note #1__: If you provide this option, `got.stream()` will be read-only.
-
- __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
- */
- get json() {
- return this._internals.json;
- }
- set json(value) {
- if (value !== undefined) {
- assert.undefined(this._internals.body);
- assert.undefined(this._internals.form);
- }
- this._internals.json = value;
- }
- /**
- The URL to request, as a string, a [`https.request` options object](https://nodejs.org/api/https.html#https_https_request_options_callback), or a [WHATWG `URL`](https://nodejs.org/api/url.html#url_class_url).
-
- Properties from `options` will override properties in the parsed `url`.
-
- If no protocol is specified, it will throw a `TypeError`.
-
- __Note__: The query string is **not** parsed as search params.
-
- @example
- ```
- await got('https://example.com/?query=a b'); //=> https://example.com/?query=a%20b
- await got('https://example.com/', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
-
- // The query string is overridden by `searchParams`
- await got('https://example.com/?query=a b', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
- ```
- */
- get url() {
- return this._internals.url;
- }
- set url(value) {
- assert.any([is.string, is.urlInstance, is.undefined], value);
- if (value === undefined) {
- this._internals.url = undefined;
- return;
- }
- if (is.string(value) && value.startsWith('/')) {
- throw new Error('`url` must not start with a slash');
- }
- const urlString = `${this.prefixUrl}${value.toString()}`;
- const url = new URL(urlString);
- this._internals.url = url;
- if (url.protocol === 'unix:') {
- url.href = `http://unix${url.pathname}${url.search}`;
- }
- if (url.protocol !== 'http:' && url.protocol !== 'https:') {
- const error = new Error(`Unsupported protocol: ${url.protocol}`);
- error.code = 'ERR_UNSUPPORTED_PROTOCOL';
- throw error;
- }
- if (this._internals.username) {
- url.username = this._internals.username;
- this._internals.username = '';
- }
- if (this._internals.password) {
- url.password = this._internals.password;
- this._internals.password = '';
- }
- if (this._internals.searchParams) {
- url.search = this._internals.searchParams.toString();
- this._internals.searchParams = undefined;
- }
- if (url.hostname === 'unix') {
- if (!this._internals.enableUnixSockets) {
- throw new Error('Using UNIX domain sockets but option `enableUnixSockets` is not enabled');
- }
- const matches = /(?<socketPath>.+?):(?<path>.+)/.exec(`${url.pathname}${url.search}`);
- if (matches?.groups) {
- const { socketPath, path } = matches.groups;
- this._unixOptions = {
- socketPath,
- path,
- host: '',
- };
- }
- else {
- this._unixOptions = undefined;
- }
- return;
- }
- this._unixOptions = undefined;
- }
- /**
- Cookie support. You don't have to care about parsing or how to store them.
-
- __Note__: If you provide this option, `options.headers.cookie` will be overridden.
- */
- get cookieJar() {
- return this._internals.cookieJar;
- }
- set cookieJar(value) {
- assert.any([is.object, is.undefined], value);
- if (value === undefined) {
- this._internals.cookieJar = undefined;
- return;
- }
- let { setCookie, getCookieString } = value;
- assert.function_(setCookie);
- assert.function_(getCookieString);
- /* istanbul ignore next: Horrible `tough-cookie` v3 check */
- if (setCookie.length === 4 && getCookieString.length === 0) {
- setCookie = promisify(setCookie.bind(value));
- getCookieString = promisify(getCookieString.bind(value));
- this._internals.cookieJar = {
- setCookie,
- getCookieString: getCookieString,
- };
- }
- else {
- this._internals.cookieJar = value;
- }
- }
- /**
- You can abort the `request` using [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController).
-
- *Requires Node.js 16 or later.*
-
- @example
- ```
- import got from 'got';
-
- const abortController = new AbortController();
-
- const request = got('https://httpbin.org/anything', {
- signal: abortController.signal
- });
-
- setTimeout(() => {
- abortController.abort();
- }, 100);
- ```
- */
- // TODO: Replace `any` with `AbortSignal` when targeting Node 16.
- get signal() {
- return this._internals.signal;
- }
- // TODO: Replace `any` with `AbortSignal` when targeting Node 16.
- set signal(value) {
- assert.object(value);
- this._internals.signal = value;
- }
- /**
- Ignore invalid cookies instead of throwing an error.
- Only useful when the `cookieJar` option has been set. Not recommended.
-
- @default false
- */
- get ignoreInvalidCookies() {
- return this._internals.ignoreInvalidCookies;
- }
- set ignoreInvalidCookies(value) {
- assert.boolean(value);
- this._internals.ignoreInvalidCookies = value;
- }
- /**
- Query string that will be added to the request URL.
- This will override the query string in `url`.
-
- If you need to pass in an array, you can do it using a `URLSearchParams` instance.
-
- @example
- ```
- import got from 'got';
-
- const searchParams = new URLSearchParams([['key', 'a'], ['key', 'b']]);
-
- await got('https://example.com', {searchParams});
-
- console.log(searchParams.toString());
- //=> 'key=a&key=b'
- ```
- */
- get searchParams() {
- if (this._internals.url) {
- return this._internals.url.searchParams;
- }
- if (this._internals.searchParams === undefined) {
- this._internals.searchParams = new URLSearchParams();
- }
- return this._internals.searchParams;
- }
- set searchParams(value) {
- assert.any([is.string, is.object, is.undefined], value);
- const url = this._internals.url;
- if (value === undefined) {
- this._internals.searchParams = undefined;
- if (url) {
- url.search = '';
- }
- return;
- }
- const searchParameters = this.searchParams;
- let updated;
- if (is.string(value)) {
- updated = new URLSearchParams(value);
- }
- else if (value instanceof URLSearchParams) {
- updated = value;
- }
- else {
- validateSearchParameters(value);
- updated = new URLSearchParams();
- // eslint-disable-next-line guard-for-in
- for (const key in value) {
- const entry = value[key];
- if (entry === null) {
- updated.append(key, '');
- }
- else if (entry === undefined) {
- searchParameters.delete(key);
- }
- else {
- updated.append(key, entry);
- }
- }
- }
- if (this._merging) {
- // These keys will be replaced
- for (const key of updated.keys()) {
- searchParameters.delete(key);
- }
- for (const [key, value] of updated) {
- searchParameters.append(key, value);
- }
- }
- else if (url) {
- url.search = searchParameters.toString();
- }
- else {
- this._internals.searchParams = searchParameters;
- }
- }
- get searchParameters() {
- throw new Error('The `searchParameters` option does not exist. Use `searchParams` instead.');
- }
- set searchParameters(_value) {
- throw new Error('The `searchParameters` option does not exist. Use `searchParams` instead.');
- }
- get dnsLookup() {
- return this._internals.dnsLookup;
- }
- set dnsLookup(value) {
- assert.any([is.function_, is.undefined], value);
- this._internals.dnsLookup = value;
- }
- /**
- An instance of [`CacheableLookup`](https://github.com/szmarczak/cacheable-lookup) used for making DNS lookups.
- Useful when making lots of requests to different *public* hostnames.
-
- `CacheableLookup` uses `dns.resolver4(..)` and `dns.resolver6(...)` under the hood and fall backs to `dns.lookup(...)` when the first two fail, which may lead to additional delay.
-
- __Note__: This should stay disabled when making requests to internal hostnames such as `localhost`, `database.local` etc.
-
- @default false
- */
- get dnsCache() {
- return this._internals.dnsCache;
- }
- set dnsCache(value) {
- assert.any([is.object, is.boolean, is.undefined], value);
- if (value === true) {
- this._internals.dnsCache = getGlobalDnsCache();
- }
- else if (value === false) {
- this._internals.dnsCache = undefined;
- }
- else {
- this._internals.dnsCache = value;
- }
- }
- /**
- User data. `context` is shallow merged and enumerable. If it contains non-enumerable properties they will NOT be merged.
-
- @example
- ```
- import got from 'got';
-
- const instance = got.extend({
- hooks: {
- beforeRequest: [
- options => {
- if (!options.context || !options.context.token) {
- throw new Error('Token required');
- }
-
- options.headers.token = options.context.token;
- }
- ]
- }
- });
-
- const context = {
- token: 'secret'
- };
-
- const response = await instance('https://httpbin.org/headers', {context});
-
- // Let's see the headers
- console.log(response.body);
- ```
- */
- get context() {
- return this._internals.context;
- }
- set context(value) {
- assert.object(value);
- if (this._merging) {
- Object.assign(this._internals.context, value);
- }
- else {
- this._internals.context = { ...value };
- }
- }
- /**
- Hooks allow modifications during the request lifecycle.
- Hook functions may be async and are run serially.
- */
- get hooks() {
- return this._internals.hooks;
- }
- set hooks(value) {
- assert.object(value);
- // eslint-disable-next-line guard-for-in
- for (const knownHookEvent in value) {
- if (!(knownHookEvent in this._internals.hooks)) {
- throw new Error(`Unexpected hook event: ${knownHookEvent}`);
- }
- const typedKnownHookEvent = knownHookEvent;
- const hooks = value[typedKnownHookEvent];
- assert.any([is.array, is.undefined], hooks);
- if (hooks) {
- for (const hook of hooks) {
- assert.function_(hook);
- }
- }
- if (this._merging) {
- if (hooks) {
- // @ts-expect-error FIXME
- this._internals.hooks[typedKnownHookEvent].push(...hooks);
- }
- }
- else {
- if (!hooks) {
- throw new Error(`Missing hook event: ${knownHookEvent}`);
- }
- // @ts-expect-error FIXME
- this._internals.hooks[knownHookEvent] = [...hooks];
- }
- }
- }
- /**
- Defines if redirect responses should be followed automatically.
-
- Note that if a `303` is sent by the server in response to any request type (`POST`, `DELETE`, etc.), Got will automatically request the resource pointed to in the location header via `GET`.
- This is in accordance with [the spec](https://tools.ietf.org/html/rfc7231#section-6.4.4). You can optionally turn on this behavior also for other redirect codes - see `methodRewriting`.
-
- @default true
- */
- get followRedirect() {
- return this._internals.followRedirect;
- }
- set followRedirect(value) {
- assert.boolean(value);
- this._internals.followRedirect = value;
- }
- get followRedirects() {
- throw new TypeError('The `followRedirects` option does not exist. Use `followRedirect` instead.');
- }
- set followRedirects(_value) {
- throw new TypeError('The `followRedirects` option does not exist. Use `followRedirect` instead.');
- }
- /**
- If exceeded, the request will be aborted and a `MaxRedirectsError` will be thrown.
-
- @default 10
- */
- get maxRedirects() {
- return this._internals.maxRedirects;
- }
- set maxRedirects(value) {
- assert.number(value);
- this._internals.maxRedirects = value;
- }
- /**
- A cache adapter instance for storing cached response data.
-
- @default false
- */
- get cache() {
- return this._internals.cache;
- }
- set cache(value) {
- assert.any([is.object, is.string, is.boolean, is.undefined], value);
- if (value === true) {
- this._internals.cache = globalCache;
- }
- else if (value === false) {
- this._internals.cache = undefined;
- }
- else {
- this._internals.cache = value;
- }
- }
- /**
- Determines if a `got.HTTPError` is thrown for unsuccessful responses.
-
- If this is disabled, requests that encounter an error status code will be resolved with the `response` instead of throwing.
- This may be useful if you are checking for resource availability and are expecting error responses.
-
- @default true
- */
- get throwHttpErrors() {
- return this._internals.throwHttpErrors;
- }
- set throwHttpErrors(value) {
- assert.boolean(value);
- this._internals.throwHttpErrors = value;
- }
- get username() {
- const url = this._internals.url;
- const value = url ? url.username : this._internals.username;
- return decodeURIComponent(value);
- }
- set username(value) {
- assert.string(value);
- const url = this._internals.url;
- const fixedValue = encodeURIComponent(value);
- if (url) {
- url.username = fixedValue;
- }
- else {
- this._internals.username = fixedValue;
- }
- }
- get password() {
- const url = this._internals.url;
- const value = url ? url.password : this._internals.password;
- return decodeURIComponent(value);
- }
- set password(value) {
- assert.string(value);
- const url = this._internals.url;
- const fixedValue = encodeURIComponent(value);
- if (url) {
- url.password = fixedValue;
- }
- else {
- this._internals.password = fixedValue;
- }
- }
- /**
- If set to `true`, Got will additionally accept HTTP2 requests.
-
- It will choose either HTTP/1.1 or HTTP/2 depending on the ALPN protocol.
-
- __Note__: This option requires Node.js 15.10.0 or newer as HTTP/2 support on older Node.js versions is very buggy.
-
- __Note__: Overriding `options.request` will disable HTTP2 support.
-
- @default false
-
- @example
- ```
- import got from 'got';
-
- const {headers} = await got('https://nghttp2.org/httpbin/anything', {http2: true});
-
- console.log(headers.via);
- //=> '2 nghttpx'
- ```
- */
- get http2() {
- return this._internals.http2;
- }
- set http2(value) {
- assert.boolean(value);
- this._internals.http2 = value;
- }
- /**
- Set this to `true` to allow sending body for the `GET` method.
- However, the [HTTP/2 specification](https://tools.ietf.org/html/rfc7540#section-8.1.3) says that `An HTTP GET request includes request header fields and no payload body`, therefore when using the HTTP/2 protocol this option will have no effect.
- This option is only meant to interact with non-compliant servers when you have no other choice.
-
- __Note__: The [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1) doesn't specify any particular behavior for the GET method having a payload, therefore __it's considered an [anti-pattern](https://en.wikipedia.org/wiki/Anti-pattern)__.
-
- @default false
- */
- get allowGetBody() {
- return this._internals.allowGetBody;
- }
- set allowGetBody(value) {
- assert.boolean(value);
- this._internals.allowGetBody = value;
- }
- /**
- Request headers.
-
- Existing headers will be overwritten. Headers set to `undefined` will be omitted.
-
- @default {}
- */
- get headers() {
- return this._internals.headers;
- }
- set headers(value) {
- assert.plainObject(value);
- if (this._merging) {
- Object.assign(this._internals.headers, lowercaseKeys(value));
- }
- else {
- this._internals.headers = lowercaseKeys(value);
- }
- }
- /**
- Specifies if the HTTP request method should be [rewritten as `GET`](https://tools.ietf.org/html/rfc7231#section-6.4) on redirects.
-
- As the [specification](https://tools.ietf.org/html/rfc7231#section-6.4) prefers to rewrite the HTTP method only on `303` responses, this is Got's default behavior.
- Setting `methodRewriting` to `true` will also rewrite `301` and `302` responses, as allowed by the spec. This is the behavior followed by `curl` and browsers.
-
- __Note__: Got never performs method rewriting on `307` and `308` responses, as this is [explicitly prohibited by the specification](https://www.rfc-editor.org/rfc/rfc7231#section-6.4.7).
-
- @default false
- */
- get methodRewriting() {
- return this._internals.methodRewriting;
- }
- set methodRewriting(value) {
- assert.boolean(value);
- this._internals.methodRewriting = value;
- }
- /**
- Indicates which DNS record family to use.
-
- Values:
- - `undefined`: IPv4 (if present) or IPv6
- - `4`: Only IPv4
- - `6`: Only IPv6
-
- @default undefined
- */
- get dnsLookupIpVersion() {
- return this._internals.dnsLookupIpVersion;
- }
- set dnsLookupIpVersion(value) {
- if (value !== undefined && value !== 4 && value !== 6) {
- throw new TypeError(`Invalid DNS lookup IP version: ${value}`);
- }
- this._internals.dnsLookupIpVersion = value;
- }
- /**
- A function used to parse JSON responses.
-
- @example
- ```
- import got from 'got';
- import Bourne from '@hapi/bourne';
-
- const parsed = await got('https://example.com', {
- parseJson: text => Bourne.parse(text)
- }).json();
-
- console.log(parsed);
- ```
- */
- get parseJson() {
- return this._internals.parseJson;
- }
- set parseJson(value) {
- assert.function_(value);
- this._internals.parseJson = value;
- }
- /**
- A function used to stringify the body of JSON requests.
-
- @example
- ```
- import got from 'got';
-
- await got.post('https://example.com', {
- stringifyJson: object => JSON.stringify(object, (key, value) => {
- if (key.startsWith('_')) {
- return;
- }
-
- return value;
- }),
- json: {
- some: 'payload',
- _ignoreMe: 1234
- }
- });
- ```
-
- @example
- ```
- import got from 'got';
-
- await got.post('https://example.com', {
- stringifyJson: object => JSON.stringify(object, (key, value) => {
- if (typeof value === 'number') {
- return value.toString();
- }
-
- return value;
- }),
- json: {
- some: 'payload',
- number: 1
- }
- });
- ```
- */
- get stringifyJson() {
- return this._internals.stringifyJson;
- }
- set stringifyJson(value) {
- assert.function_(value);
- this._internals.stringifyJson = value;
- }
- /**
- An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.
-
- Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 1).
-
- The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value.
- The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).
-
- By default, it retries *only* on the specified methods, status codes, and on these network errors:
-
- - `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.
- - `ECONNRESET`: Connection was forcibly closed by a peer.
- - `EADDRINUSE`: Could not bind to any free port.
- - `ECONNREFUSED`: Connection was refused by the server.
- - `EPIPE`: The remote side of the stream being written has been closed.
- - `ENOTFOUND`: Couldn't resolve the hostname to an IP address.
- - `ENETUNREACH`: No internet connection.
- - `EAI_AGAIN`: DNS lookup timed out.
-
- __Note__: If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.
- __Note__: If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.
- */
- get retry() {
- return this._internals.retry;
- }
- set retry(value) {
- assert.plainObject(value);
- assert.any([is.function_, is.undefined], value.calculateDelay);
- assert.any([is.number, is.undefined], value.maxRetryAfter);
- assert.any([is.number, is.undefined], value.limit);
- assert.any([is.array, is.undefined], value.methods);
- assert.any([is.array, is.undefined], value.statusCodes);
- assert.any([is.array, is.undefined], value.errorCodes);
- assert.any([is.number, is.undefined], value.noise);
- if (value.noise && Math.abs(value.noise) > 100) {
- throw new Error(`The maximum acceptable retry noise is +/- 100ms, got ${value.noise}`);
- }
- for (const key in value) {
- if (!(key in this._internals.retry)) {
- throw new Error(`Unexpected retry option: ${key}`);
- }
- }
- if (this._merging) {
- Object.assign(this._internals.retry, value);
- }
- else {
- this._internals.retry = { ...value };
- }
- const { retry } = this._internals;
- retry.methods = [...new Set(retry.methods.map(method => method.toUpperCase()))];
- retry.statusCodes = [...new Set(retry.statusCodes)];
- retry.errorCodes = [...new Set(retry.errorCodes)];
- }
- /**
- From `http.RequestOptions`.
-
- The IP address used to send the request from.
- */
- get localAddress() {
- return this._internals.localAddress;
- }
- set localAddress(value) {
- assert.any([is.string, is.undefined], value);
- this._internals.localAddress = value;
- }
- /**
- The HTTP method used to make the request.
-
- @default 'GET'
- */
- get method() {
- return this._internals.method;
- }
- set method(value) {
- assert.string(value);
- this._internals.method = value.toUpperCase();
- }
- get createConnection() {
- return this._internals.createConnection;
- }
- set createConnection(value) {
- assert.any([is.function_, is.undefined], value);
- this._internals.createConnection = value;
- }
- /**
- From `http-cache-semantics`
-
- @default {}
- */
- get cacheOptions() {
- return this._internals.cacheOptions;
- }
- set cacheOptions(value) {
- assert.plainObject(value);
- assert.any([is.boolean, is.undefined], value.shared);
- assert.any([is.number, is.undefined], value.cacheHeuristic);
- assert.any([is.number, is.undefined], value.immutableMinTimeToLive);
- assert.any([is.boolean, is.undefined], value.ignoreCargoCult);
- for (const key in value) {
- if (!(key in this._internals.cacheOptions)) {
- throw new Error(`Cache option \`${key}\` does not exist`);
- }
- }
- if (this._merging) {
- Object.assign(this._internals.cacheOptions, value);
- }
- else {
- this._internals.cacheOptions = { ...value };
- }
- }
- /**
- Options for the advanced HTTPS API.
- */
- get https() {
- return this._internals.https;
- }
- set https(value) {
- assert.plainObject(value);
- assert.any([is.boolean, is.undefined], value.rejectUnauthorized);
- assert.any([is.function_, is.undefined], value.checkServerIdentity);
- assert.any([is.string, is.object, is.array, is.undefined], value.certificateAuthority);
- assert.any([is.string, is.object, is.array, is.undefined], value.key);
- assert.any([is.string, is.object, is.array, is.undefined], value.certificate);
- assert.any([is.string, is.undefined], value.passphrase);
- assert.any([is.string, is.buffer, is.array, is.undefined], value.pfx);
- assert.any([is.array, is.undefined], value.alpnProtocols);
- assert.any([is.string, is.undefined], value.ciphers);
- assert.any([is.string, is.buffer, is.undefined], value.dhparam);
- assert.any([is.string, is.undefined], value.signatureAlgorithms);
- assert.any([is.string, is.undefined], value.minVersion);
- assert.any([is.string, is.undefined], value.maxVersion);
- assert.any([is.boolean, is.undefined], value.honorCipherOrder);
- assert.any([is.number, is.undefined], value.tlsSessionLifetime);
- assert.any([is.string, is.undefined], value.ecdhCurve);
- assert.any([is.string, is.buffer, is.array, is.undefined], value.certificateRevocationLists);
- for (const key in value) {
- if (!(key in this._internals.https)) {
- throw new Error(`HTTPS option \`${key}\` does not exist`);
- }
- }
- if (this._merging) {
- Object.assign(this._internals.https, value);
- }
- else {
- this._internals.https = { ...value };
- }
- }
- /**
- [Encoding](https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings) to be used on `setEncoding` of the response data.
-
- To get a [`Buffer`](https://nodejs.org/api/buffer.html), you need to set `responseType` to `buffer` instead.
- Don't set this option to `null`.
-
- __Note__: This doesn't affect streams! Instead, you need to do `got.stream(...).setEncoding(encoding)`.
-
- @default 'utf-8'
- */
- get encoding() {
- return this._internals.encoding;
- }
- set encoding(value) {
- if (value === null) {
- throw new TypeError('To get a Buffer, set `options.responseType` to `buffer` instead');
- }
- assert.any([is.string, is.undefined], value);
- this._internals.encoding = value;
- }
- /**
- When set to `true` the promise will return the Response body instead of the Response object.
-
- @default false
- */
- get resolveBodyOnly() {
- return this._internals.resolveBodyOnly;
- }
- set resolveBodyOnly(value) {
- assert.boolean(value);
- this._internals.resolveBodyOnly = value;
- }
- /**
- Returns a `Stream` instead of a `Promise`.
- This is equivalent to calling `got.stream(url, options?)`.
-
- @default false
- */
- get isStream() {
- return this._internals.isStream;
- }
- set isStream(value) {
- assert.boolean(value);
- this._internals.isStream = value;
- }
- /**
- The parsing method.
-
- The promise also has `.text()`, `.json()` and `.buffer()` methods which return another Got promise for the parsed body.
-
- It's like setting the options to `{responseType: 'json', resolveBodyOnly: true}` but without affecting the main Got promise.
-
- __Note__: When using streams, this option is ignored.
-
- @example
- ```
- const responsePromise = got(url);
- const bufferPromise = responsePromise.buffer();
- const jsonPromise = responsePromise.json();
-
- const [response, buffer, json] = Promise.all([responsePromise, bufferPromise, jsonPromise]);
- // `response` is an instance of Got Response
- // `buffer` is an instance of Buffer
- // `json` is an object
- ```
-
- @example
- ```
- // This
- const body = await got(url).json();
-
- // is semantically the same as this
- const body = await got(url, {responseType: 'json', resolveBodyOnly: true});
- ```
- */
- get responseType() {
- return this._internals.responseType;
- }
- set responseType(value) {
- if (value === undefined) {
- this._internals.responseType = 'text';
- return;
- }
- if (value !== 'text' && value !== 'buffer' && value !== 'json') {
- throw new Error(`Invalid \`responseType\` option: ${value}`);
- }
- this._internals.responseType = value;
- }
- get pagination() {
- return this._internals.pagination;
- }
- set pagination(value) {
- assert.object(value);
- if (this._merging) {
- Object.assign(this._internals.pagination, value);
- }
- else {
- this._internals.pagination = value;
- }
- }
- get auth() {
- throw new Error('Parameter `auth` is deprecated. Use `username` / `password` instead.');
- }
- set auth(_value) {
- throw new Error('Parameter `auth` is deprecated. Use `username` / `password` instead.');
- }
- get setHost() {
- return this._internals.setHost;
- }
- set setHost(value) {
- assert.boolean(value);
- this._internals.setHost = value;
- }
- get maxHeaderSize() {
- return this._internals.maxHeaderSize;
- }
- set maxHeaderSize(value) {
- assert.any([is.number, is.undefined], value);
- this._internals.maxHeaderSize = value;
- }
- get enableUnixSockets() {
- return this._internals.enableUnixSockets;
- }
- set enableUnixSockets(value) {
- assert.boolean(value);
- this._internals.enableUnixSockets = value;
- }
- // eslint-disable-next-line @typescript-eslint/naming-convention
- toJSON() {
- return { ...this._internals };
- }
- [Symbol.for('nodejs.util.inspect.custom')](_depth, options) {
- return inspect(this._internals, options);
- }
- createNativeRequestOptions() {
- const internals = this._internals;
- const url = internals.url;
- let agent;
- if (url.protocol === 'https:') {
- agent = internals.http2 ? internals.agent : internals.agent.https;
- }
- else {
- agent = internals.agent.http;
- }
- const { https } = internals;
- let { pfx } = https;
- if (is.array(pfx) && is.plainObject(pfx[0])) {
- pfx = pfx.map(object => ({
- buf: object.buffer,
- passphrase: object.passphrase,
- }));
- }
- return {
- ...internals.cacheOptions,
- ...this._unixOptions,
- // HTTPS options
- // eslint-disable-next-line @typescript-eslint/naming-convention
- ALPNProtocols: https.alpnProtocols,
- ca: https.certificateAuthority,
- cert: https.certificate,
- key: https.key,
- passphrase: https.passphrase,
- pfx: https.pfx,
- rejectUnauthorized: https.rejectUnauthorized,
- checkServerIdentity: https.checkServerIdentity ?? checkServerIdentity,
- ciphers: https.ciphers,
- honorCipherOrder: https.honorCipherOrder,
- minVersion: https.minVersion,
- maxVersion: https.maxVersion,
- sigalgs: https.signatureAlgorithms,
- sessionTimeout: https.tlsSessionLifetime,
- dhparam: https.dhparam,
- ecdhCurve: https.ecdhCurve,
- crl: https.certificateRevocationLists,
- // HTTP options
- lookup: internals.dnsLookup ?? internals.dnsCache?.lookup,
- family: internals.dnsLookupIpVersion,
- agent,
- setHost: internals.setHost,
- method: internals.method,
- maxHeaderSize: internals.maxHeaderSize,
- localAddress: internals.localAddress,
- headers: internals.headers,
- createConnection: internals.createConnection,
- timeout: internals.http2 ? getHttp2TimeoutOption(internals) : undefined,
- // HTTP/2 options
- h2session: internals.h2session,
- };
- }
- getRequestFunction() {
- const url = this._internals.url;
- const { request } = this._internals;
- if (!request && url) {
- return this.getFallbackRequestFunction();
- }
- return request;
- }
- getFallbackRequestFunction() {
- const url = this._internals.url;
- if (!url) {
- return;
- }
- if (url.protocol === 'https:') {
- if (this._internals.http2) {
- if (major < 15 || (major === 15 && minor < 10)) {
- const error = new Error('To use the `http2` option, install Node.js 15.10.0 or above');
- error.code = 'EUNSUPPORTED';
- throw error;
- }
- return http2wrapper.auto;
- }
- return https.request;
- }
- return http.request;
- }
- freeze() {
- const options = this._internals;
- Object.freeze(options);
- Object.freeze(options.hooks);
- Object.freeze(options.hooks.afterResponse);
- Object.freeze(options.hooks.beforeError);
- Object.freeze(options.hooks.beforeRedirect);
- Object.freeze(options.hooks.beforeRequest);
- Object.freeze(options.hooks.beforeRetry);
- Object.freeze(options.hooks.init);
- Object.freeze(options.https);
- Object.freeze(options.cacheOptions);
- Object.freeze(options.agent);
- Object.freeze(options.headers);
- Object.freeze(options.timeout);
- Object.freeze(options.retry);
- Object.freeze(options.retry.errorCodes);
- Object.freeze(options.retry.methods);
- Object.freeze(options.retry.statusCodes);
- }
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/parse-link-header.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/parse-link-header.d.ts
deleted file mode 100644
index 595e561..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/parse-link-header.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export default function parseLinkHeader(link: string): {
- reference: string;
- parameters: Record<string, string>;
-}[];
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/parse-link-header.js b/includes/external/addressbook/node_modules/got/dist/source/core/parse-link-header.js
deleted file mode 100644
index 898a6a2..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/parse-link-header.js
+++ /dev/null
@@ -1,33 +0,0 @@
-export default function parseLinkHeader(link) {
- const parsed = [];
- const items = link.split(',');
- for (const item of items) {
- // https://tools.ietf.org/html/rfc5988#section-5
- const [rawUriReference, ...rawLinkParameters] = item.split(';');
- const trimmedUriReference = rawUriReference.trim();
- // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with
- if (trimmedUriReference[0] !== '<' || trimmedUriReference[trimmedUriReference.length - 1] !== '>') {
- throw new Error(`Invalid format of the Link header reference: ${trimmedUriReference}`);
- }
- const reference = trimmedUriReference.slice(1, -1);
- const parameters = {};
- if (rawLinkParameters.length === 0) {
- throw new Error(`Unexpected end of Link header parameters: ${rawLinkParameters.join(';')}`);
- }
- for (const rawParameter of rawLinkParameters) {
- const trimmedRawParameter = rawParameter.trim();
- const center = trimmedRawParameter.indexOf('=');
- if (center === -1) {
- throw new Error(`Failed to parse Link header: ${link}`);
- }
- const name = trimmedRawParameter.slice(0, center).trim();
- const value = trimmedRawParameter.slice(center + 1).trim();
- parameters[name] = value;
- }
- parsed.push({
- reference,
- parameters,
- });
- }
- return parsed;
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/response.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/response.d.ts
deleted file mode 100644
index 4ea3629..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/response.d.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-import type { Buffer } from 'node:buffer';
-import type { URL } from 'node:url';
-import type { IncomingMessageWithTimings, Timings } from '@szmarczak/http-timer';
-import { RequestError } from './errors.js';
-import type { ParseJsonFunction, ResponseType } from './options.js';
-import type Request from './index.js';
-export type PlainResponse = {
- /**
- The original request URL.
- */
- requestUrl: URL;
- /**
- The redirect URLs.
- */
- redirectUrls: URL[];
- /**
- - `options` - The Got options that were set on this request.
-
- __Note__: This is not a [http.ClientRequest](https://nodejs.org/api/http.html#http_class_http_clientrequest).
- */
- request: Request;
- /**
- The remote IP address.
-
- This is hopefully a temporary limitation, see [lukechilds/cacheable-request#86](https://github.com/lukechilds/cacheable-request/issues/86).
-
- __Note__: Not available when the response is cached.
- */
- ip?: string;
- /**
- Whether the response was retrieved from the cache.
- */
- isFromCache: boolean;
- /**
- The status code of the response.
- */
- statusCode: number;
- /**
- The request URL or the final URL after redirects.
- */
- url: string;
- /**
- The object contains the following properties:
-
- - `start` - Time when the request started.
- - `socket` - Time when a socket was assigned to the request.
- - `lookup` - Time when the DNS lookup finished.
- - `connect` - Time when the socket successfully connected.
- - `secureConnect` - Time when the socket securely connected.
- - `upload` - Time when the request finished uploading.
- - `response` - Time when the request fired `response` event.
- - `end` - Time when the response fired `end` event.
- - `error` - Time when the request fired `error` event.
- - `abort` - Time when the request fired `abort` event.
- - `phases`
- - `wait` - `timings.socket - timings.start`
- - `dns` - `timings.lookup - timings.socket`
- - `tcp` - `timings.connect - timings.lookup`
- - `tls` - `timings.secureConnect - timings.connect`
- - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
- - `firstByte` - `timings.response - timings.upload`
- - `download` - `timings.end - timings.response`
- - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
-
- If something has not been measured yet, it will be `undefined`.
-
- __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
- */
- timings: Timings;
- /**
- The number of times the request was retried.
- */
- retryCount: number;
- /**
- The raw result of the request.
- */
- rawBody?: Buffer;
- /**
- The result of the request.
- */
- body?: unknown;
- /**
- Whether the response was successful.
-
- __Note__: Got throws automatically when `response.ok` is `false` and `throwHttpErrors` is `true`.
- */
- ok: boolean;
-} & IncomingMessageWithTimings;
-export type Response<T = unknown> = {
- /**
- The result of the request.
- */
- body: T;
- /**
- The raw result of the request.
- */
- rawBody: Buffer;
-} & PlainResponse;
-export declare const isResponseOk: (response: PlainResponse) => boolean;
-/**
-An error to be thrown when server response code is 2xx, and parsing body fails.
-Includes a `response` property.
-*/
-export declare class ParseError extends RequestError {
- readonly response: Response;
- constructor(error: Error, response: Response);
-}
-export declare const parseBody: (response: Response, responseType: ResponseType, parseJson: ParseJsonFunction, encoding?: BufferEncoding) => unknown;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/response.js b/includes/external/addressbook/node_modules/got/dist/source/core/response.js
deleted file mode 100644
index 06c4610..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/response.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import { RequestError } from './errors.js';
-export const isResponseOk = (response) => {
- const { statusCode } = response;
- const limitStatusCode = response.request.options.followRedirect ? 299 : 399;
- return (statusCode >= 200 && statusCode <= limitStatusCode) || statusCode === 304;
-};
-/**
-An error to be thrown when server response code is 2xx, and parsing body fails.
-Includes a `response` property.
-*/
-export class ParseError extends RequestError {
- constructor(error, response) {
- const { options } = response.request;
- super(`${error.message} in "${options.url.toString()}"`, error, response.request);
- this.name = 'ParseError';
- this.code = 'ERR_BODY_PARSE_FAILURE';
- }
-}
-export const parseBody = (response, responseType, parseJson, encoding) => {
- const { rawBody } = response;
- try {
- if (responseType === 'text') {
- return rawBody.toString(encoding);
- }
- if (responseType === 'json') {
- return rawBody.length === 0 ? '' : parseJson(rawBody.toString(encoding));
- }
- if (responseType === 'buffer') {
- return rawBody;
- }
- }
- catch (error) {
- throw new ParseError(error, response);
- }
- throw new ParseError({
- message: `Unknown body type '${responseType}'`,
- name: 'Error',
- }, response);
-};
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/timed-out.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/timed-out.d.ts
deleted file mode 100644
index 845684c..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/timed-out.d.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import type { ClientRequest } from 'node:http';
-declare const reentry: unique symbol;
-type TimedOutOptions = {
- host?: string;
- hostname?: string;
- protocol?: string;
-};
-export type Delays = {
- lookup?: number;
- socket?: number;
- connect?: number;
- secureConnect?: number;
- send?: number;
- response?: number;
- read?: number;
- request?: number;
-};
-export type ErrorCode = 'ETIMEDOUT' | 'ECONNRESET' | 'EADDRINUSE' | 'ECONNREFUSED' | 'EPIPE' | 'ENOTFOUND' | 'ENETUNREACH' | 'EAI_AGAIN';
-export declare class TimeoutError extends Error {
- event: string;
- code: ErrorCode;
- constructor(threshold: number, event: string);
-}
-export default function timedOut(request: ClientRequest, delays: Delays, options: TimedOutOptions): () => void;
-declare module 'http' {
- interface ClientRequest {
- [reentry]?: boolean;
- }
-}
-export {};
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/timed-out.js b/includes/external/addressbook/node_modules/got/dist/source/core/timed-out.js
deleted file mode 100644
index 500f748..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/timed-out.js
+++ /dev/null
@@ -1,138 +0,0 @@
-import net from 'node:net';
-import unhandler from './utils/unhandle.js';
-const reentry = Symbol('reentry');
-const noop = () => { };
-export class TimeoutError extends Error {
- constructor(threshold, event) {
- super(`Timeout awaiting '${event}' for ${threshold}ms`);
- Object.defineProperty(this, "event", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: event
- });
- Object.defineProperty(this, "code", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- this.name = 'TimeoutError';
- this.code = 'ETIMEDOUT';
- }
-}
-export default function timedOut(request, delays, options) {
- if (reentry in request) {
- return noop;
- }
- request[reentry] = true;
- const cancelers = [];
- const { once, unhandleAll } = unhandler();
- const addTimeout = (delay, callback, event) => {
- const timeout = setTimeout(callback, delay, delay, event);
- timeout.unref?.();
- const cancel = () => {
- clearTimeout(timeout);
- };
- cancelers.push(cancel);
- return cancel;
- };
- const { host, hostname } = options;
- const timeoutHandler = (delay, event) => {
- request.destroy(new TimeoutError(delay, event));
- };
- const cancelTimeouts = () => {
- for (const cancel of cancelers) {
- cancel();
- }
- unhandleAll();
- };
- request.once('error', error => {
- cancelTimeouts();
- // Save original behavior
- /* istanbul ignore next */
- if (request.listenerCount('error') === 0) {
- throw error;
- }
- });
- if (typeof delays.request !== 'undefined') {
- const cancelTimeout = addTimeout(delays.request, timeoutHandler, 'request');
- once(request, 'response', (response) => {
- once(response, 'end', cancelTimeout);
- });
- }
- if (typeof delays.socket !== 'undefined') {
- const { socket } = delays;
- const socketTimeoutHandler = () => {
- timeoutHandler(socket, 'socket');
- };
- request.setTimeout(socket, socketTimeoutHandler);
- // `request.setTimeout(0)` causes a memory leak.
- // We can just remove the listener and forget about the timer - it's unreffed.
- // See https://github.com/sindresorhus/got/issues/690
- cancelers.push(() => {
- request.removeListener('timeout', socketTimeoutHandler);
- });
- }
- const hasLookup = typeof delays.lookup !== 'undefined';
- const hasConnect = typeof delays.connect !== 'undefined';
- const hasSecureConnect = typeof delays.secureConnect !== 'undefined';
- const hasSend = typeof delays.send !== 'undefined';
- if (hasLookup || hasConnect || hasSecureConnect || hasSend) {
- once(request, 'socket', (socket) => {
- const { socketPath } = request;
- /* istanbul ignore next: hard to test */
- if (socket.connecting) {
- const hasPath = Boolean(socketPath ?? net.isIP(hostname ?? host ?? '') !== 0);
- if (hasLookup && !hasPath && typeof socket.address().address === 'undefined') {
- const cancelTimeout = addTimeout(delays.lookup, timeoutHandler, 'lookup');
- once(socket, 'lookup', cancelTimeout);
- }
- if (hasConnect) {
- const timeConnect = () => addTimeout(delays.connect, timeoutHandler, 'connect');
- if (hasPath) {
- once(socket, 'connect', timeConnect());
- }
- else {
- once(socket, 'lookup', (error) => {
- if (error === null) {
- once(socket, 'connect', timeConnect());
- }
- });
- }
- }
- if (hasSecureConnect && options.protocol === 'https:') {
- once(socket, 'connect', () => {
- const cancelTimeout = addTimeout(delays.secureConnect, timeoutHandler, 'secureConnect');
- once(socket, 'secureConnect', cancelTimeout);
- });
- }
- }
- if (hasSend) {
- const timeRequest = () => addTimeout(delays.send, timeoutHandler, 'send');
- /* istanbul ignore next: hard to test */
- if (socket.connecting) {
- once(socket, 'connect', () => {
- once(request, 'upload-complete', timeRequest());
- });
- }
- else {
- once(request, 'upload-complete', timeRequest());
- }
- }
- });
- }
- if (typeof delays.response !== 'undefined') {
- once(request, 'upload-complete', () => {
- const cancelTimeout = addTimeout(delays.response, timeoutHandler, 'response');
- once(request, 'response', cancelTimeout);
- });
- }
- if (typeof delays.read !== 'undefined') {
- once(request, 'response', (response) => {
- const cancelTimeout = addTimeout(delays.read, timeoutHandler, 'read');
- once(response, 'end', cancelTimeout);
- });
- }
- return cancelTimeouts;
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/get-body-size.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/get-body-size.d.ts
deleted file mode 100644
index 3030691..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/get-body-size.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { ClientRequestArgs } from 'node:http';
-export default function getBodySize(body: unknown, headers: ClientRequestArgs['headers']): Promise<number | undefined>;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/get-body-size.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/get-body-size.js
deleted file mode 100644
index 9a85c64..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/get-body-size.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { Buffer } from 'node:buffer';
-import { promisify } from 'node:util';
-import is from '@sindresorhus/is';
-import isFormData from './is-form-data.js';
-export default async function getBodySize(body, headers) {
- if (headers && 'content-length' in headers) {
- return Number(headers['content-length']);
- }
- if (!body) {
- return 0;
- }
- if (is.string(body)) {
- return Buffer.byteLength(body);
- }
- if (is.buffer(body)) {
- return body.length;
- }
- if (isFormData(body)) {
- return promisify(body.getLength.bind(body))();
- }
- return undefined;
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-client-request.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-client-request.d.ts
deleted file mode 100644
index 5e67ff0..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-client-request.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { Writable, Readable } from 'node:stream';
-import type { ClientRequest } from 'node:http';
-declare function isClientRequest(clientRequest: Writable | Readable): clientRequest is ClientRequest;
-export default isClientRequest;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-client-request.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-client-request.js
deleted file mode 100644
index da80b68..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-client-request.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function isClientRequest(clientRequest) {
- return clientRequest.writable && !clientRequest.writableEnded;
-}
-export default isClientRequest;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-form-data.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-form-data.d.ts
deleted file mode 100644
index ed0805f..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-form-data.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { Readable } from 'node:stream';
-type FormData = {
- getBoundary: () => string;
- getLength: (callback: (error: Error | null, length: number) => void) => void;
-} & Readable;
-export default function isFormData(body: unknown): body is FormData;
-export {};
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-form-data.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-form-data.js
deleted file mode 100644
index 13a7823..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-form-data.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import is from '@sindresorhus/is';
-export default function isFormData(body) {
- return is.nodeStream(body) && is.function_(body.getBoundary);
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-unix-socket-url.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-unix-socket-url.d.ts
deleted file mode 100644
index ee3f162..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-unix-socket-url.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { URL } from 'url';
-export default function isUnixSocketURL(url: URL): boolean;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-unix-socket-url.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-unix-socket-url.js
deleted file mode 100644
index 46f7348..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/is-unix-socket-url.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// eslint-disable-next-line @typescript-eslint/naming-convention
-export default function isUnixSocketURL(url) {
- return url.protocol === 'unix:' || url.hostname === 'unix';
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/options-to-url.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/options-to-url.d.ts
deleted file mode 100644
index 86b853f..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/options-to-url.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import { URL } from 'node:url';
-export type URLOptions = {
- href?: string;
- protocol?: string;
- host?: string;
- hostname?: string;
- port?: string | number;
- pathname?: string;
- search?: string;
- searchParams?: unknown;
- path?: string;
-};
-export default function optionsToUrl(origin: string, options: URLOptions): URL;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/options-to-url.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/options-to-url.js
deleted file mode 100644
index 46346a7..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/options-to-url.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/* istanbul ignore file: deprecated */
-import { URL } from 'node:url';
-const keys = [
- 'protocol',
- 'host',
- 'hostname',
- 'port',
- 'pathname',
- 'search',
-];
-export default function optionsToUrl(origin, options) {
- if (options.path) {
- if (options.pathname) {
- throw new TypeError('Parameters `path` and `pathname` are mutually exclusive.');
- }
- if (options.search) {
- throw new TypeError('Parameters `path` and `search` are mutually exclusive.');
- }
- if (options.searchParams) {
- throw new TypeError('Parameters `path` and `searchParams` are mutually exclusive.');
- }
- }
- if (options.search && options.searchParams) {
- throw new TypeError('Parameters `search` and `searchParams` are mutually exclusive.');
- }
- if (!origin) {
- if (!options.protocol) {
- throw new TypeError('No URL protocol specified');
- }
- origin = `${options.protocol}//${options.hostname ?? options.host ?? ''}`;
- }
- const url = new URL(origin);
- if (options.path) {
- const searchIndex = options.path.indexOf('?');
- if (searchIndex === -1) {
- options.pathname = options.path;
- }
- else {
- options.pathname = options.path.slice(0, searchIndex);
- options.search = options.path.slice(searchIndex + 1);
- }
- delete options.path;
- }
- for (const key of keys) {
- if (options[key]) {
- url[key] = options[key].toString();
- }
- }
- return url;
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/proxy-events.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/proxy-events.d.ts
deleted file mode 100644
index cbc818a..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/proxy-events.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { EventEmitter } from 'node:events';
-export default function proxyEvents(from: EventEmitter, to: EventEmitter, events: Readonly<string[]>): () => void;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/proxy-events.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/proxy-events.js
deleted file mode 100644
index d3d2f2d..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/proxy-events.js
+++ /dev/null
@@ -1,15 +0,0 @@
-export default function proxyEvents(from, to, events) {
- const eventFunctions = {};
- for (const event of events) {
- const eventFunction = (...args) => {
- to.emit(event, ...args);
- };
- eventFunctions[event] = eventFunction;
- from.on(event, eventFunction);
- }
- return () => {
- for (const [event, eventFunction] of Object.entries(eventFunctions)) {
- from.off(event, eventFunction);
- }
- };
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/unhandle.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/unhandle.d.ts
deleted file mode 100644
index c494576..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/unhandle.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { EventEmitter } from 'node:events';
-type Origin = EventEmitter;
-type Event = string | symbol;
-type Fn = (...args: any[]) => void;
-type Unhandler = {
- once: (origin: Origin, event: Event, fn: Fn) => void;
- unhandleAll: () => void;
-};
-export default function unhandle(): Unhandler;
-export {};
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/unhandle.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/unhandle.js
deleted file mode 100644
index 0312706..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/unhandle.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// When attaching listeners, it's very easy to forget about them.
-// Especially if you do error handling and set timeouts.
-// So instead of checking if it's proper to throw an error on every timeout ever,
-// use this simple tool which will remove all listeners you have attached.
-export default function unhandle() {
- const handlers = [];
- return {
- once(origin, event, fn) {
- origin.once(event, fn);
- handlers.push({ origin, event, fn });
- },
- unhandleAll() {
- for (const handler of handlers) {
- const { origin, event, fn } = handler;
- origin.removeListener(event, fn);
- }
- handlers.length = 0;
- },
- };
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/url-to-options.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/url-to-options.d.ts
deleted file mode 100644
index e3ae8be..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/url-to-options.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-import type { URL, UrlWithStringQuery } from 'node:url';
-export type LegacyUrlOptions = {
- protocol: string;
- hostname: string;
- host: string;
- hash: string | null;
- search: string | null;
- pathname: string;
- href: string;
- path: string;
- port?: number;
- auth?: string;
-};
-export default function urlToOptions(url: URL | UrlWithStringQuery): LegacyUrlOptions;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/url-to-options.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/url-to-options.js
deleted file mode 100644
index 959dd69..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/url-to-options.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import is from '@sindresorhus/is';
-export default function urlToOptions(url) {
- // Cast to URL
- url = url;
- const options = {
- protocol: url.protocol,
- hostname: is.string(url.hostname) && url.hostname.startsWith('[') ? url.hostname.slice(1, -1) : url.hostname,
- host: url.host,
- hash: url.hash,
- search: url.search,
- pathname: url.pathname,
- href: url.href,
- path: `${url.pathname || ''}${url.search || ''}`,
- };
- if (is.string(url.port) && url.port.length > 0) {
- options.port = Number(url.port);
- }
- if (url.username || url.password) {
- options.auth = `${url.username || ''}:${url.password || ''}`;
- }
- return options;
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/weakable-map.d.ts b/includes/external/addressbook/node_modules/got/dist/source/core/utils/weakable-map.d.ts
deleted file mode 100644
index 9e3466c..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/weakable-map.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export default class WeakableMap<K, V> {
- weakMap: WeakMap<Record<string, unknown>, V>;
- map: Map<K, V>;
- constructor();
- set(key: K, value: V): void;
- get(key: K): V | undefined;
- has(key: K): boolean;
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/core/utils/weakable-map.js b/includes/external/addressbook/node_modules/got/dist/source/core/utils/weakable-map.js
deleted file mode 100644
index 805ad76..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/core/utils/weakable-map.js
+++ /dev/null
@@ -1,38 +0,0 @@
-export default class WeakableMap {
- constructor() {
- Object.defineProperty(this, "weakMap", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- Object.defineProperty(this, "map", {
- enumerable: true,
- configurable: true,
- writable: true,
- value: void 0
- });
- this.weakMap = new WeakMap();
- this.map = new Map();
- }
- set(key, value) {
- if (typeof key === 'object') {
- this.weakMap.set(key, value);
- }
- else {
- this.map.set(key, value);
- }
- }
- get(key) {
- if (typeof key === 'object') {
- return this.weakMap.get(key);
- }
- return this.map.get(key);
- }
- has(key) {
- if (typeof key === 'object') {
- return this.weakMap.has(key);
- }
- return this.map.has(key);
- }
-}
diff --git a/includes/external/addressbook/node_modules/got/dist/source/create.d.ts b/includes/external/addressbook/node_modules/got/dist/source/create.d.ts
deleted file mode 100644
index ce0f4b6..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/create.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import type { Got, InstanceDefaults } from './types.js';
-declare const create: (defaults: InstanceDefaults) => Got;
-export default create;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/create.js b/includes/external/addressbook/node_modules/got/dist/source/create.js
deleted file mode 100644
index fb14e49..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/create.js
+++ /dev/null
@@ -1,187 +0,0 @@
-import is, { assert } from '@sindresorhus/is';
-import asPromise from './as-promise/index.js';
-import Request from './core/index.js';
-import Options from './core/options.js';
-// The `delay` package weighs 10KB (!)
-const delay = async (ms) => new Promise(resolve => {
- setTimeout(resolve, ms);
-});
-const isGotInstance = (value) => is.function_(value);
-const aliases = [
- 'get',
- 'post',
- 'put',
- 'patch',
- 'head',
- 'delete',
-];
-const create = (defaults) => {
- defaults = {
- options: new Options(undefined, undefined, defaults.options),
- handlers: [...defaults.handlers],
- mutableDefaults: defaults.mutableDefaults,
- };
- Object.defineProperty(defaults, 'mutableDefaults', {
- enumerable: true,
- configurable: false,
- writable: false,
- });
- // Got interface
- const got = ((url, options, defaultOptions = defaults.options) => {
- const request = new Request(url, options, defaultOptions);
- let promise;
- const lastHandler = (normalized) => {
- // Note: `options` is `undefined` when `new Options(...)` fails
- request.options = normalized;
- request._noPipe = !normalized.isStream;
- void request.flush();
- if (normalized.isStream) {
- return request;
- }
- if (!promise) {
- promise = asPromise(request);
- }
- return promise;
- };
- let iteration = 0;
- const iterateHandlers = (newOptions) => {
- const handler = defaults.handlers[iteration++] ?? lastHandler;
- const result = handler(newOptions, iterateHandlers);
- if (is.promise(result) && !request.options.isStream) {
- if (!promise) {
- promise = asPromise(request);
- }
- if (result !== promise) {
- const descriptors = Object.getOwnPropertyDescriptors(promise);
- for (const key in descriptors) {
- if (key in result) {
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
- delete descriptors[key];
- }
- }
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
- Object.defineProperties(result, descriptors);
- result.cancel = promise.cancel;
- }
- }
- return result;
- };
- return iterateHandlers(request.options);
- });
- got.extend = (...instancesOrOptions) => {
- const options = new Options(undefined, undefined, defaults.options);
- const handlers = [...defaults.handlers];
- let mutableDefaults;
- for (const value of instancesOrOptions) {
- if (isGotInstance(value)) {
- options.merge(value.defaults.options);
- handlers.push(...value.defaults.handlers);
- mutableDefaults = value.defaults.mutableDefaults;
- }
- else {
- options.merge(value);
- if (value.handlers) {
- handlers.push(...value.handlers);
- }
- mutableDefaults = value.mutableDefaults;
- }
- }
- return create({
- options,
- handlers,
- mutableDefaults: Boolean(mutableDefaults),
- });
- };
- // Pagination
- const paginateEach = (async function* (url, options) {
- let normalizedOptions = new Options(url, options, defaults.options);
- normalizedOptions.resolveBodyOnly = false;
- const { pagination } = normalizedOptions;
- assert.function_(pagination.transform);
- assert.function_(pagination.shouldContinue);
- assert.function_(pagination.filter);
- assert.function_(pagination.paginate);
- assert.number(pagination.countLimit);
- assert.number(pagination.requestLimit);
- assert.number(pagination.backoff);
- const allItems = [];
- let { countLimit } = pagination;
- let numberOfRequests = 0;
- while (numberOfRequests < pagination.requestLimit) {
- if (numberOfRequests !== 0) {
- // eslint-disable-next-line no-await-in-loop
- await delay(pagination.backoff);
- }
- // eslint-disable-next-line no-await-in-loop
- const response = (await got(undefined, undefined, normalizedOptions));
- // eslint-disable-next-line no-await-in-loop
- const parsed = await pagination.transform(response);
- const currentItems = [];
- assert.array(parsed);
- for (const item of parsed) {
- if (pagination.filter({ item, currentItems, allItems })) {
- if (!pagination.shouldContinue({ item, currentItems, allItems })) {
- return;
- }
- yield item;
- if (pagination.stackAllItems) {
- allItems.push(item);
- }
- currentItems.push(item);
- if (--countLimit <= 0) {
- return;
- }
- }
- }
- const optionsToMerge = pagination.paginate({
- response,
- currentItems,
- allItems,
- });
- if (optionsToMerge === false) {
- return;
- }
- if (optionsToMerge === response.request.options) {
- normalizedOptions = response.request.options;
- }
- else {
- normalizedOptions.merge(optionsToMerge);
- assert.any([is.urlInstance, is.undefined], optionsToMerge.url);
- if (optionsToMerge.url !== undefined) {
- normalizedOptions.prefixUrl = '';
- normalizedOptions.url = optionsToMerge.url;
- }
- }
- numberOfRequests++;
- }
- });
- got.paginate = paginateEach;
- got.paginate.all = (async (url, options) => {
- const results = [];
- for await (const item of paginateEach(url, options)) {
- results.push(item);
- }
- return results;
- });
- // For those who like very descriptive names
- got.paginate.each = paginateEach;
- // Stream API
- got.stream = ((url, options) => got(url, { ...options, isStream: true }));
- // Shortcuts
- for (const method of aliases) {
- got[method] = ((url, options) => got(url, { ...options, method }));
- got.stream[method] = ((url, options) => got(url, { ...options, method, isStream: true }));
- }
- if (!defaults.mutableDefaults) {
- Object.freeze(defaults.handlers);
- defaults.options.freeze();
- }
- Object.defineProperty(got, 'defaults', {
- value: defaults,
- writable: false,
- configurable: false,
- enumerable: true,
- });
- return got;
-};
-export default create;
diff --git a/includes/external/addressbook/node_modules/got/dist/source/index.d.ts b/includes/external/addressbook/node_modules/got/dist/source/index.d.ts
deleted file mode 100644
index 9447c9a..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/index.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-declare const got: import("./types.js").Got;
-export default got;
-export { got };
-export { default as Options } from './core/options.js';
-export * from './core/options.js';
-export * from './core/response.js';
-export type { default as Request } from './core/index.js';
-export * from './core/index.js';
-export * from './core/errors.js';
-export type { Delays } from './core/timed-out.js';
-export { default as calculateRetryDelay } from './core/calculate-retry-delay.js';
-export * from './as-promise/types.js';
-export * from './types.js';
-export { default as create } from './create.js';
-export { default as parseLinkHeader } from './core/parse-link-header.js';
diff --git a/includes/external/addressbook/node_modules/got/dist/source/index.js b/includes/external/addressbook/node_modules/got/dist/source/index.js
deleted file mode 100644
index 4056297..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import create from './create.js';
-import Options from './core/options.js';
-const defaults = {
- options: new Options(),
- handlers: [],
- mutableDefaults: false,
-};
-const got = create(defaults);
-export default got;
-export { got };
-export { default as Options } from './core/options.js';
-export * from './core/options.js';
-export * from './core/response.js';
-export * from './core/index.js';
-export * from './core/errors.js';
-export { default as calculateRetryDelay } from './core/calculate-retry-delay.js';
-export * from './as-promise/types.js';
-export * from './types.js';
-export { default as create } from './create.js';
-export { default as parseLinkHeader } from './core/parse-link-header.js';
diff --git a/includes/external/addressbook/node_modules/got/dist/source/types.d.ts b/includes/external/addressbook/node_modules/got/dist/source/types.d.ts
deleted file mode 100644
index 3b76442..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/types.d.ts
+++ /dev/null
@@ -1,263 +0,0 @@
-/// <reference types="node" resolution-mode="require"/>
-/// <reference types="node" resolution-mode="require"/>
-import type { Buffer } from 'node:buffer';
-import type { URL } from 'node:url';
-import type { CancelableRequest } from './as-promise/types.js';
-import type { Response } from './core/response.js';
-import type Options from './core/options.js';
-import type { PaginationOptions, OptionsInit } from './core/options.js';
-import type Request from './core/index.js';
-type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<ObjectType, Exclude<keyof ObjectType, KeysType>>;
-type Merge<FirstType, SecondType> = Except<FirstType, Extract<keyof FirstType, keyof SecondType>> & SecondType;
-/**
-Defaults for each Got instance.
-*/
-export type InstanceDefaults = {
- /**
- An object containing the default options of Got.
- */
- options: Options;
- /**
- An array of functions. You execute them directly by calling `got()`.
- They are some sort of "global hooks" - these functions are called first.
- The last handler (*it's hidden*) is either `asPromise` or `asStream`, depending on the `options.isStream` property.
-
- @default []
- */
- handlers: HandlerFunction[];
- /**
- A read-only boolean describing whether the defaults are mutable or not.
- If set to `true`, you can update headers over time, for example, update an access token when it expires.
-
- @default false
- */
- mutableDefaults: boolean;
-};
-/**
-A Request object returned by calling Got, or any of the Got HTTP alias request functions.
-*/
-export type GotReturn = Request | CancelableRequest;
-/**
-A function to handle options and returns a Request object.
-It acts sort of like a "global hook", and will be called before any actual request is made.
-*/
-export type HandlerFunction = <T extends GotReturn>(options: Options, next: (options: Options) => T) => T | Promise<T>;
-/**
-The options available for `got.extend()`.
-*/
-export type ExtendOptions = {
- /**
- An array of functions. You execute them directly by calling `got()`.
- They are some sort of "global hooks" - these functions are called first.
- The last handler (*it's hidden*) is either `asPromise` or `asStream`, depending on the `options.isStream` property.
-
- @default []
- */
- handlers?: HandlerFunction[];
- /**
- A read-only boolean describing whether the defaults are mutable or not.
- If set to `true`, you can update headers over time, for example, update an access token when it expires.
-
- @default false
- */
- mutableDefaults?: boolean;
-} & OptionsInit;
-export type OptionsOfTextResponseBody = Merge<OptionsInit, {
- isStream?: false;
- resolveBodyOnly?: false;
- responseType?: 'text';
-}>;
-export type OptionsOfJSONResponseBody = Merge<OptionsInit, {
- isStream?: false;
- resolveBodyOnly?: false;
- responseType?: 'json';
-}>;
-export type OptionsOfBufferResponseBody = Merge<OptionsInit, {
- isStream?: false;
- resolveBodyOnly?: false;
- responseType: 'buffer';
-}>;
-export type OptionsOfUnknownResponseBody = Merge<OptionsInit, {
- isStream?: false;
- resolveBodyOnly?: false;
-}>;
-export type StrictOptions = Except<OptionsInit, 'isStream' | 'responseType' | 'resolveBodyOnly'>;
-export type StreamOptions = Merge<OptionsInit, {
- isStream?: true;
-}>;
-type ResponseBodyOnly = {
- resolveBodyOnly: true;
-};
-export type OptionsWithPagination<T = unknown, R = unknown> = Merge<OptionsInit, {
- pagination?: PaginationOptions<T, R>;
-}>;
-/**
-An instance of `got.paginate`.
-*/
-export type GotPaginate = {
- /**
- Same as `GotPaginate.each`.
- */
- <T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>): AsyncIterableIterator<T>;
- /**
- Same as `GotPaginate.each`.
- */
- <T, R = unknown>(options?: OptionsWithPagination<T, R>): AsyncIterableIterator<T>;
- /**
- Returns an async iterator.
-
- See pagination.options for more pagination options.
-
- @example
- ```
- import got from 'got';
-
- const countLimit = 10;
-
- const pagination = got.paginate('https://api.github.com/repos/sindresorhus/got/commits', {
- pagination: {countLimit}
- });
-
- console.log(`Printing latest ${countLimit} Got commits (newest to oldest):`);
-
- for await (const commitData of pagination) {
- console.log(commitData.commit.message);
- }
- ```
- */
- each: (<T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>) => AsyncIterableIterator<T>) & (<T, R = unknown>(options?: OptionsWithPagination<T, R>) => AsyncIterableIterator<T>);
- /**
- Returns a Promise for an array of all results.
-
- See pagination.options for more pagination options.
-
- @example
- ```
- import got from 'got';
-
- const countLimit = 10;
-
- const results = await got.paginate.all('https://api.github.com/repos/sindresorhus/got/commits', {
- pagination: {countLimit}
- });
-
- console.log(`Printing latest ${countLimit} Got commits (newest to oldest):`);
- console.log(results);
- ```
- */
- all: (<T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>) => Promise<T[]>) & (<T, R = unknown>(options?: OptionsWithPagination<T, R>) => Promise<T[]>);
-};
-export type GotRequestFunction = {
- (url: string | URL, options?: OptionsOfTextResponseBody): CancelableRequest<Response<string>>;
- <T>(url: string | URL, options?: OptionsOfJSONResponseBody): CancelableRequest<Response<T>>;
- (url: string | URL, options?: OptionsOfBufferResponseBody): CancelableRequest<Response<Buffer>>;
- (url: string | URL, options?: OptionsOfUnknownResponseBody): CancelableRequest<Response>;
- (options: OptionsOfTextResponseBody): CancelableRequest<Response<string>>;
- <T>(options: OptionsOfJSONResponseBody): CancelableRequest<Response<T>>;
- (options: OptionsOfBufferResponseBody): CancelableRequest<Response<Buffer>>;
- (options: OptionsOfUnknownResponseBody): CancelableRequest<Response>;
- (url: string | URL, options?: (Merge<OptionsOfTextResponseBody, ResponseBodyOnly>)): CancelableRequest<string>;
- <T>(url: string | URL, options?: (Merge<OptionsOfJSONResponseBody, ResponseBodyOnly>)): CancelableRequest<T>;
- (url: string | URL, options?: (Merge<OptionsOfBufferResponseBody, ResponseBodyOnly>)): CancelableRequest<Buffer>;
- (options: (Merge<OptionsOfTextResponseBody, ResponseBodyOnly>)): CancelableRequest<string>;
- <T>(options: (Merge<OptionsOfJSONResponseBody, ResponseBodyOnly>)): CancelableRequest<T>;
- (options: (Merge<OptionsOfBufferResponseBody, ResponseBodyOnly>)): CancelableRequest<Buffer>;
- (url: string | URL, options?: Merge<OptionsInit, {
- isStream: true;
- }>): Request;
- (options: Merge<OptionsInit, {
- isStream: true;
- }>): Request;
- (url: string | URL, options?: OptionsInit): CancelableRequest | Request;
- (options: OptionsInit): CancelableRequest | Request;
- (url: undefined, options: undefined, defaults: Options): CancelableRequest | Request;
-};
-/**
-All available HTTP request methods provided by Got.
-*/
-export type HTTPAlias = 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete';
-type GotStreamFunction = ((url?: string | URL, options?: Merge<OptionsInit, {
- isStream?: true;
-}>) => Request) & ((options?: Merge<OptionsInit, {
- isStream?: true;
-}>) => Request);
-/**
-An instance of `got.stream()`.
-*/
-export type GotStream = GotStreamFunction & Record<HTTPAlias, GotStreamFunction>;
-/**
-An instance of `got`.
-*/
-export type Got = {
- /**
- Sets `options.isStream` to `true`.
-
- Returns a [duplex stream](https://nodejs.org/api/stream.html#stream_class_stream_duplex) with additional events:
- - request
- - response
- - redirect
- - uploadProgress
- - downloadProgress
- - error
- */
- stream: GotStream;
- /**
- Returns an async iterator.
-
- See pagination.options for more pagination options.
-
- @example
- ```
- import got from 'got';
-
- const countLimit = 10;
-
- const pagination = got.paginate('https://api.github.com/repos/sindresorhus/got/commits', {
- pagination: {countLimit}
- });
-
- console.log(`Printing latest ${countLimit} Got commits (newest to oldest):`);
-
- for await (const commitData of pagination) {
- console.log(commitData.commit.message);
- }
- ```
- */
- paginate: GotPaginate;
- /**
- The Got defaults used in that instance.
- */
- defaults: InstanceDefaults;
- /**
- Configure a new `got` instance with default `options`.
- The `options` are merged with the parent instance's `defaults.options` using `got.mergeOptions`.
- You can access the resolved options with the `.defaults` property on the instance.
-
- Additionally, `got.extend()` accepts two properties from the `defaults` object: `mutableDefaults` and `handlers`.
-
- It is also possible to merges many instances into a single one:
- - options are merged using `got.mergeOptions()` (including hooks),
- - handlers are stored in an array (you can access them through `instance.defaults.handlers`).
-
- @example
- ```
- import got from 'got';
-
- const client = got.extend({
- prefixUrl: 'https://example.com',
- headers: {
- 'x-unicorn': 'rainbow'
- }
- });
-
- client.get('demo');
-
- // HTTP Request =>
- // GET /demo HTTP/1.1
- // Host: example.com
- // x-unicorn: rainbow
- ```
- */
- extend: (...instancesOrOptions: Array<Got | ExtendOptions>) => Got;
-} & Record<HTTPAlias, GotRequestFunction> & GotRequestFunction;
-export {};
diff --git a/includes/external/addressbook/node_modules/got/dist/source/types.js b/includes/external/addressbook/node_modules/got/dist/source/types.js
deleted file mode 100644
index cb0ff5c..0000000
--- a/includes/external/addressbook/node_modules/got/dist/source/types.js
+++ /dev/null
@@ -1 +0,0 @@
-export {};