{"version":3,"file":"index.cjs","sources":["../../../node_modules/node-fetch-native/dist/proxy-stub.mjs","../src/fetch.ts","../src/constants.ts","../src/hook/constants.ts","../src/utils/has-own-property.ts","../src/utils/type-check.ts","../src/utils/instance.ts","../src/utils/serialize.ts","../src/utils/promise.ts","../src/utils/traverse.ts","../src/header/authorization/constants.ts","../src/error/constants.ts","../src/error/entities/authorization-header.ts","../src/error/module.ts","../src/error/helpers/check.ts","../src/error/helpers/create.ts","../src/error/helpers/extend.ts","../src/header/authorization/utils.ts","../src/header/constants.ts","../src/header/utils.ts","../src/request/transformer/default.ts","../src/request/defaults.ts","../src/request/payload.ts","../src/request/utils.ts","../src/response/utils/check.ts","../src/response/utils/type-detect.ts","../src/hook/module.ts","../src/module.ts","../src/instance.ts","../src/index.ts"],"sourcesContent":["var n=Object.defineProperty;var e=(t,r)=>n(t,\"name\",{value:r,configurable:!0});var i=Object.defineProperty,c=e((t,r)=>i(t,\"name\",{value:r,configurable:!0}),\"e\");function a(){return{agent:void 0,dispatcher:void 0}}e(a,\"createProxy\"),c(a,\"createProxy\");function o(){return globalThis.fetch}e(o,\"createFetch\"),c(o,\"createFetch\");const h=globalThis.fetch;export{o as createFetch,a as createProxy,h as fetch};\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport nodeFetch, {\n    AbortController as _AbortController,\n    Blob as _Blob,\n    File as _File,\n    FormData as _FormData,\n    Headers as _Headers,\n} from 'node-fetch-native';\nimport type { ProxyOptions as ProxyOptionsBase } from 'node-fetch-native/proxy';\nimport { createProxy as createProxyBase } from 'node-fetch-native/proxy';\n\nconst gT = (() => {\n    if (typeof globalThis !== 'undefined') {\n        return globalThis;\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof self !== 'undefined') {\n        // eslint-disable-next-line no-restricted-globals\n        return self;\n    }\n\n    if (typeof window !== 'undefined') {\n        return window;\n    }\n\n    if (typeof global !== 'undefined') {\n        return global;\n    }\n\n    throw new Error('unable to locate global object');\n})();\n\nexport const File = gT.File ||\n    _File;\n\nexport const FormData = gT.FormData ||\n    _FormData;\n\nexport const AbortController = gT.AbortController ||\n    _AbortController;\n\nexport const fetch = gT.fetch || nodeFetch;\nexport const Headers = gT.Headers || _Headers;\nexport const Blob = gT.Blob || _Blob;\n\nexport type ProxyOptions = ProxyOptionsBase;\n\nexport function createProxy(options?: ProxyOptions) {\n    return createProxyBase(options);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ResponseType {\n    BLOB = 'blob',\n    STREAM = 'stream',\n    TEXT = 'text',\n    ARRAY_BUFFER = 'arrayBuffer',\n    JSON = 'json',\n}\n\nexport enum MethodName {\n    DELETE = 'DELETE',\n    GET = 'GET',\n    HEAD = 'HEAD',\n    PATCH = 'PATCH',\n    POST = 'POST',\n    PUT = 'PUT',\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum HookName {\n    REQUEST = 'request',\n    REQUEST_ERROR = 'requestError',\n\n    RESPONSE = 'response',\n    RESPONSE_ERROR = 'responseError',\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(\n    obj: X,\n    prop: Y,\n): obj is X & Record<Y, unknown> {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Blob, File, FormData } from '../fetch';\n\nfunction kindOf(input: unknown) {\n    return Object.prototype.toString.call(input)\n        .slice(8, -1).toLowerCase();\n}\n\nfunction kindOfTest(type: string, input: unknown) {\n    type = type.toLowerCase();\n\n    return kindOf(input) === type;\n}\n\nexport function isObject(input: unknown): input is Record<string, any> {\n    return typeof input === 'object' &&\n        input !== null &&\n        !!input &&\n        !Array.isArray(input);\n}\n\nexport function isStream(input: unknown) : boolean {\n    return isObject(input) &&\n        typeof input.pipe === 'function';\n}\n\nexport function isFormData(input: unknown) : input is FormData {\n    if (\n        typeof FormData !== 'undefined' &&\n        input instanceof FormData\n    ) {\n        return true;\n    }\n\n    const pattern = '[object FormData]';\n    if (Object.prototype.toString.call(input) === pattern) {\n        return true;\n    }\n\n    return !!input && typeof input.toString === 'function' && input.toString() === pattern;\n}\n\nexport function isArrayBuffer(input: unknown) : input is ArrayBuffer {\n    if (\n        typeof ArrayBuffer !== 'undefined' &&\n        input instanceof ArrayBuffer\n    ) {\n        return true;\n    }\n\n    return kindOfTest('ArrayBuffer', input);\n}\n\nexport function isFile(input: unknown) : input is File {\n    if (\n        typeof File !== 'undefined' &&\n        input instanceof File\n    ) {\n        return true;\n    }\n\n    return kindOfTest('File', input);\n}\n\nexport function isBlob(input: unknown) : input is Blob {\n    if (\n        typeof Blob !== 'undefined' &&\n        input instanceof Blob\n    ) {\n        return true;\n    }\n\n    return kindOfTest('Blob', input);\n}\n\nexport function isURLSearchParams(input: unknown) {\n    if (\n        typeof URLSearchParams !== 'undefined' &&\n        input instanceof URLSearchParams\n    ) {\n        return true;\n    }\n\n    return kindOfTest('URLSearchParams', input);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from './type-check';\n\nexport function verifyInstanceBySymbol(\n    input: unknown,\n    name: string,\n) {\n    if (!isObject(input) && typeof input !== 'function') {\n        return false;\n    }\n\n    return (input as { '@instanceof': symbol })['@instanceof'] ===\n        Symbol.for(name);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from './type-check';\n\nexport function isSerializable(input: unknown) {\n    if (input === undefined) {\n        return false;\n    }\n\n    const t = typeof input;\n    if (t === 'string' || t === 'number' || t === 'boolean' || t === null || t === 'bigint') {\n        return true;\n    }\n\n    if (t !== 'object') {\n        return false; // function, symbol, undefined\n    }\n\n    if (Array.isArray(input)) {\n        return true;\n    }\n\n    return (\n        isObject(input) ||\n        (typeof input === 'function' && (input as Record<string, any>).toJSON === 'function')\n    );\n}\n\nexport function serialize(input: unknown) {\n    return JSON.stringify(\n        input,\n        (_key, value) => (\n            typeof value === 'bigint' ?\n                value.toString() :\n                value),\n    );\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isPromise(p: unknown) : p is Promise<unknown> {\n    return typeof p === 'object' &&\n        p !== null &&\n        (\n            (typeof Promise !== 'undefined' && p instanceof Promise) ||\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            typeof p.then === 'function'\n        );\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from './type-check';\n\n/**\n * Traverse object or array and provide the ability to replace values.\n *\n * @param input\n * @param fn\n */\nexport function traverse<T extends Record<string, any> | unknown[]>(\n    input: T,\n    fn: (value: unknown, key: string) => unknown,\n) {\n    if (Array.isArray(input)) {\n        for (let i = 0; i < input.length; i++) {\n            if (isObject(input[i]) || Array.isArray(input[i])) {\n                input[i] = fn(traverse(input[i], fn), `${i}`);\n                continue;\n            }\n\n            input[i] = fn(input[i], `${i}`);\n        }\n\n        return input;\n    }\n\n    const keys = Object.keys(input);\n    for (let i = 0; i < keys.length; i++) {\n        const value = input[keys[i]];\n\n        if (isObject(value) || Array.isArray(value)) {\n            input[keys[i]] = fn(traverse(value, fn), keys[i]);\n            continue;\n        }\n\n        input[keys[i]] = fn(value, keys[i]);\n    }\n\n    return input;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum AuthorizationHeaderType {\n    BEARER = 'Bearer',\n    BASIC = 'Basic',\n    X_API_KEY = 'X-API-Key',\n    API_KEY = 'API-Key',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ErrorCode {\n    AUTHORIZATION_HEADER_INVALID = 'auth_header_invalid',\n    AUTHORIZATION_HEADER_PARSE = 'auth_header_parse',\n    AUTHORIZATION_HEADER_TYPE_PARSE = 'auth_header_type_parse',\n\n    CONNECTION_ABORTED = 'ECONNABORTED',\n    CONNECTION_CLOSED = 'ECONNRESET',\n}\n","/*\n * Copyright (c) 2021-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Options } from 'ebec';\nimport { BaseError } from 'ebec';\nimport { ErrorCode } from '../constants';\n\nexport class AuthorizationHeaderError extends BaseError {\n    constructor(options?: Options) {\n        super({\n            code: ErrorCode.AUTHORIZATION_HEADER_INVALID,\n            message: 'The authorization header is not valid.',\n        }, options || {});\n    }\n\n    /* istanbul ignore next */\n    static parse() {\n        throw new AuthorizationHeaderError({\n            code: ErrorCode.AUTHORIZATION_HEADER_PARSE,\n            message: 'The authorization header value could not be parsed.',\n        });\n    }\n\n    /* istanbul ignore next */\n    static parseType() {\n        throw new AuthorizationHeaderError({\n            code: ErrorCode.AUTHORIZATION_HEADER_TYPE_PARSE,\n            message: 'The authorization header value type must either be \\'Bearer\\' or \\'Basic\\'',\n        });\n    }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BaseError } from 'ebec';\nimport type { RequestOptions } from '../request';\nimport type { Response } from '../response';\nimport type { ClientErrorContext } from './type';\n\nexport class ClientError<T = any> extends BaseError {\n    readonly '@instanceof' = Symbol.for('ClientError');\n\n    readonly request: RequestOptions;\n\n    readonly response?: Response<T>;\n\n    readonly status?: number;\n\n    readonly statusCode?: number;\n\n    readonly statusMessage?: string;\n\n    readonly statusText?: string;\n\n    constructor(ctx: ClientErrorContext<T>) {\n        super({ cause: ctx.error });\n\n        this.request = ctx.request;\n        this.response = ctx.response;\n\n        this.code = ctx.code;\n        this.status = ctx.response && ctx.response.status;\n        this.statusCode = ctx.response && ctx.response.status;\n        this.statusMessage = ctx.response && ctx.response.statusText;\n        this.statusText = ctx.response && ctx.response.statusText;\n\n        this.message = ctx.message;\n\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, ClientError);\n        }\n    }\n}\n","/*\n * Copyright (c) 2023-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject, verifyInstanceBySymbol } from '../../utils';\nimport { ErrorCode } from '../constants';\nimport { ClientError } from '../module';\n\nexport function isClientError(\n    error?: unknown,\n): error is ClientError {\n    if (error instanceof ClientError) {\n        return true;\n    }\n\n    return isObject(error) &&\n        verifyInstanceBySymbol(error, 'ClientError');\n}\n\nexport function isClientErrorWithStatusCode(\n    error: unknown,\n    statusCode: number | number[],\n): boolean {\n    if (!isClientError(error) || !isObject(error.response)) {\n        return false;\n    }\n\n    const statusCodes = Array.isArray(statusCode) ?\n        statusCode :\n        [statusCode];\n\n    for (let i = 0; i < statusCodes.length; i++) {\n        if (statusCodes[i] === error.response.status) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nexport function isClientErrorDueNetworkIssue(\n    error?: unknown,\n) {\n    return isClientError(error) &&\n        !error.response &&\n        Boolean(error.code) &&\n        error.code !== ErrorCode.CONNECTION_ABORTED;\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RequestOptions } from '../../request';\nimport { ErrorCode } from '../constants';\nimport { ClientError } from '../module';\nimport type { ClientErrorCreateContext } from '../type';\n\nfunction formatRequestOptions(input: RequestOptions): string {\n    if (input.url) {\n        const parts: string[] = [];\n        if (input.method) {\n            parts.push(input.method);\n        }\n\n        parts.push(input.url);\n\n        return parts.join(' ');\n    }\n\n    return input.toString();\n}\n\nexport function createClientError<T = any>(\n    context: ClientErrorCreateContext<T>,\n) {\n    let message: string | undefined;\n\n    if (context.request && context.response) {\n        message = `${context.response.status} ${\n            context.response.statusText\n        } (${formatRequestOptions(context.request)})`;\n    } else if (context.request) {\n        message = `${formatRequestOptions(context.request)}`;\n    }\n\n    if (context.error) {\n        if (context.error.message) {\n            message = `${context.error.message} (${message})`;\n        }\n    }\n\n    if (!message) {\n        message = 'An unknown error occurred.';\n    }\n\n    const isAbort = (!!context.error && context.error.name === 'AbortError');\n\n    let code: ErrorCode | undefined;\n    if (!context.response) {\n        if (isAbort) {\n            code = ErrorCode.CONNECTION_ABORTED;\n        } else {\n            code = ErrorCode.CONNECTION_CLOSED;\n        }\n    }\n\n    const error = new ClientError<T>({\n        ...context,\n        code,\n        message,\n    });\n\n    if (Error.captureStackTrace) {\n        Error.captureStackTrace(error, createClientError);\n    }\n\n    return error;\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '../../utils';\n\nexport function toError(input: unknown): Error | undefined {\n    if (input instanceof Error) {\n        return input;\n    }\n\n    if (isObject(input)) {\n        if (input.constructor.name === 'TypeError') {\n            Object.setPrototypeOf(input, TypeError.prototype);\n            return input as TypeError;\n        }\n\n        const error = new Error(input.message);\n        extendError(error, input);\n\n        return input as Error;\n    }\n\n    return undefined;\n}\n\nexport function extendError(error: Error, data: Record<string, any>) {\n    const keys = Object.getOwnPropertyNames(data);\n    for (let i = 0; i < keys.length; i++) {\n        error[keys[i] as keyof Error] = data[keys[i]];\n    }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { AuthorizationHeader } from './type';\nimport { AuthorizationHeaderType } from './constants';\nimport { AuthorizationHeaderError } from '../../error';\n\nexport function parseAuthorizationHeader(value?: string): AuthorizationHeader {\n    /* istanbul ignore next */\n    if (typeof value !== 'string') {\n        throw AuthorizationHeaderError.parse();\n    }\n\n    const parts: string[] = value.split(' ');\n\n    if (parts.length < 2) {\n        throw AuthorizationHeaderError.parseType();\n    }\n\n    const type: string = parts[0].toLowerCase();\n    const id: string = parts[1];\n\n    switch (type) {\n        case 'basic': {\n            const base64Decoded = Buffer.from(id, 'base64').toString('utf-8');\n            const base64Parts = base64Decoded.split(':');\n\n            if (base64Parts.length !== 2) {\n                throw AuthorizationHeaderError.parse();\n            }\n\n            return {\n                type: AuthorizationHeaderType.BASIC,\n                username: base64Parts[0],\n                password: base64Parts[1],\n            };\n        }\n        case 'bearer':\n            return {\n                type: AuthorizationHeaderType.BEARER,\n                token: id,\n            };\n        case 'api-key':\n        case 'x-api-key':\n            return {\n                type: type === 'api-key' ?\n                    AuthorizationHeaderType.API_KEY :\n                    AuthorizationHeaderType.X_API_KEY,\n                key: id,\n            };\n        default:\n            throw AuthorizationHeaderError.parseType();\n    }\n}\n\nexport function stringifyAuthorizationHeader(header: AuthorizationHeader): string {\n    switch (header.type) {\n        case AuthorizationHeaderType.BASIC: {\n            const basicStr: string = Buffer\n                .from(`${header.username}:${header.password}`)\n                .toString('base64');\n\n            return `Basic ${basicStr}`;\n        }\n        case AuthorizationHeaderType.BEARER:\n            return `Bearer ${header.token}`;\n        case AuthorizationHeaderType.X_API_KEY:\n        case AuthorizationHeaderType.API_KEY:\n            return `${header.type} ${header.key}`;\n    }\n\n    return '';\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum HeaderName {\n    ACCEPT = 'accept',\n    AUTHORIZATION = 'authorization',\n    CONTENT_TYPE = 'content-type',\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Headers } from '../fetch';\n\nexport function setHeader(\n    headers: globalThis.HeadersInit | Headers,\n    key: string,\n    value: any,\n) {\n    key = key.toLowerCase();\n\n    if (\n        typeof Headers !== 'undefined' &&\n        headers instanceof Headers\n    ) {\n        headers.set(key, value);\n\n        return;\n    }\n\n    if (Array.isArray(headers)) {\n        const index = headers.findIndex((el) => el.length === 2 && el[0].toLowerCase() === key);\n        if (index !== -1) {\n            headers[index] = [key, value];\n        } else {\n            headers.push([key, value]);\n        }\n        return;\n    }\n\n    const keys = Object.keys(headers);\n    const index = keys.findIndex((el) => el.toLowerCase() === key);\n    if (index !== -1) {\n        (headers as Record<string, any>)[keys[index]] = value;\n    } else {\n        (headers as Record<string, any>)[key] = value;\n    }\n}\n\nexport function getHeader(\n    headers: globalThis.HeadersInit | Headers,\n    key: string,\n) : undefined | any {\n    key = key.toLowerCase();\n\n    if (\n        typeof Headers !== 'undefined' &&\n        headers instanceof Headers\n    ) {\n        const value = headers.get(key);\n        return value === null ? undefined : value;\n    }\n\n    if (Array.isArray(headers)) {\n        const index = headers.findIndex((el) => el.length === 2 && el[0].toLowerCase() === key);\n        if (index !== -1) {\n            return headers[index][1];\n        }\n\n        return undefined;\n    }\n\n    const keys = Object.keys(headers);\n    const index = keys.findIndex((el) => el.toLowerCase() === key);\n    if (index !== -1) {\n        return (headers as Record<string, any>)[keys[index]];\n    }\n\n    return undefined;\n}\n\nexport function unsetHeader(\n    headers: globalThis.HeadersInit | Headers,\n    key: string,\n) {\n    key = key.toLowerCase();\n\n    if (\n        typeof Headers !== 'undefined' &&\n        headers instanceof Headers\n    ) {\n        headers.delete(key);\n        return;\n    }\n\n    if (Array.isArray(headers)) {\n        const index = headers.findIndex((el) => el.length === 2 && el[0].toLowerCase() === key.toLowerCase());\n        if (index !== -1) {\n            headers.splice(index, 1);\n        }\n\n        return;\n    }\n\n    const keys = Object.keys(headers);\n    const index = keys.findIndex((el) => el.toLowerCase() === key);\n    if (index !== -1) {\n        delete (headers as Record<string, any>)[keys[index]];\n    }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { HeaderName } from '../../header';\nimport {\n    isArrayBuffer,\n    isBlob,\n    isFile,\n    isFormData,\n    isSerializable,\n    isStream,\n    isURLSearchParams, serialize,\n} from '../../utils';\nimport type { RequestTransformer } from '../type';\n\nexport function createDefaultRequestTransformer() : RequestTransformer {\n    return (data, headers) => {\n        if (isFormData(data)) {\n            headers.delete(HeaderName.CONTENT_TYPE);\n        }\n\n        if (\n            isArrayBuffer(data) ||\n            isFile(data) ||\n            isBlob(data) ||\n            isFormData(data) ||\n            isStream(data)\n        ) {\n            return data;\n        }\n\n        if (isURLSearchParams(data)) {\n            headers.set(HeaderName.CONTENT_TYPE, 'application/x-www-form-urlencoded;charset=utf-8');\n            return data;\n        }\n\n        const contentType = headers.get(HeaderName.CONTENT_TYPE) || '';\n        const contentTypeIsJson = contentType.indexOf('application/json') !== -1;\n\n        if (isSerializable(data) || contentTypeIsJson) {\n            data = typeof data === 'string' ?\n                data :\n                serialize(data);\n\n            if (!headers.has(HeaderName.CONTENT_TYPE)) {\n                headers.set(HeaderName.CONTENT_TYPE, 'application/json');\n            }\n\n            if (!headers.has(HeaderName.ACCEPT)) {\n                headers.set(HeaderName.ACCEPT, 'application/json');\n            }\n        }\n\n        return data;\n    };\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createDefaultRequestTransformer } from './transformer';\nimport type { RequestBaseOptions } from './type';\n\nexport function extendRequestOptionsWithDefaults(options: RequestBaseOptions) : RequestBaseOptions {\n    if (!options.transform) {\n        options.transform = [\n            createDefaultRequestTransformer(),\n        ];\n    }\n\n    if (typeof options.proxy === 'undefined') {\n        options.proxy = true;\n    }\n\n    return options;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { MethodName } from '../constants';\n\nexport function isRequestPayloadSupported(method = 'GET') {\n    method = method.toUpperCase();\n\n    return method === MethodName.PATCH ||\n        method === MethodName.POST ||\n        method === MethodName.PUT;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '../utils';\nimport type { RequestOptions } from './type';\n\nexport function isRequestOptions(input: unknown) : input is RequestOptions {\n    if (!isObject(input)) {\n        return false;\n    }\n\n    return input.url === 'string';\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '../../utils';\nimport type { Response } from '../type';\n\nexport function isResponse(input: unknown) : input is Response {\n    if (!isObject(input)) {\n        return false;\n    }\n\n    return typeof (input as Response).headers !== 'undefined' &&\n        typeof (input as Response).ok === 'boolean';\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ResponseType } from '../../constants';\n\nconst JSON_REGEX = /^application\\/(?:[\\w!#$%&*.^`~-]*\\+)?json(;.+)?$/i;\n\nexport function detectResponseType(input?: string | null) : ResponseType {\n    if (typeof input !== 'string' || input.length === 0) {\n        return ResponseType.STREAM;\n    }\n\n    const contentType = input.split(';').shift() || '';\n\n    if (JSON_REGEX.test(contentType)) {\n        return ResponseType.JSON;\n    }\n\n    const textTypes = [\n        'image/svg',\n        'application/xml',\n        'application/xhtml',\n        'application/html',\n    ];\n\n    if (textTypes.indexOf(contentType) !== -1 || contentType.startsWith('text/')) {\n        return ResponseType.TEXT;\n    }\n\n    return ResponseType.JSON;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport type { ClientError } from '../error';\nimport { isPromise } from '../utils';\nimport { isRequestOptions } from '../request';\nimport type { RequestOptions } from '../request';\nimport { isResponse } from '../response';\nimport type { Response } from '../response';\nimport { HookName } from './constants';\nimport type {\n    HookErrorFn,\n    HookFn,\n    HookReqFn,\n} from './type';\n\nexport class HookManager {\n    protected items : Record<string, (undefined | HookFn)[]>;\n\n    constructor() {\n        this.items = {};\n    }\n\n    addListener(name: `${HookName}`, fn: HookFn) : number {\n        this.items[name] = this.items[name] || [];\n        this.items[name].push(fn);\n\n        return this.items[name].length - 1;\n    }\n\n    removeListener(name: `${HookName}`, fn: HookFn | number) {\n        if (!this.items[name]) {\n            return;\n        }\n\n        if (typeof fn === 'number') {\n            this.items[name][fn] = undefined;\n            return;\n        }\n\n        const index = this.items[name].indexOf(fn);\n        if (index !== -1) {\n            this.items[name][index] = undefined;\n        }\n    }\n\n    removeListeners(name: `${HookName}`) {\n        delete this.items[name];\n    }\n\n    async triggerReqHook(\n        input: RequestOptions,\n    ) : Promise<RequestOptions> {\n        const items = (this.items[HookName.REQUEST] || []) as HookReqFn[];\n\n        let temp = input;\n        for (let i = 0; i < items.length; i++) {\n            const hook = items[i];\n            if (!hook) {\n                continue;\n            }\n\n            let output = hook(temp as any);\n            if (isPromise(output)) {\n                output = await output;\n            }\n\n            if (isRequestOptions(output)) {\n                temp = output;\n            }\n        }\n\n        return temp;\n    }\n\n    async triggerResHook(\n        input: Response,\n    ) : Promise<Response> {\n        const items = (this.items[HookName.RESPONSE] || []) as HookReqFn[];\n\n        let temp = input;\n        for (let i = 0; i < items.length; i++) {\n            const hook = items[i];\n            if (!hook) {\n                continue;\n            }\n\n            let output = hook(temp as any);\n            if (isPromise(output)) {\n                output = await output;\n            }\n\n            if (isResponse(output)) {\n                temp = output;\n            }\n        }\n\n        return temp;\n    }\n\n    async triggerErrorHook(\n        name: `${HookName.RESPONSE_ERROR}` | `${HookName.REQUEST_ERROR}`,\n        input: ClientError,\n    ) : Promise<RequestOptions | Response> {\n        const items = (this.items[name] || []) as HookErrorFn[];\n\n        let temp = input;\n\n        for (let i = 0; i < items.length; i++) {\n            const hook = items[i];\n            if (!hook) {\n                continue;\n            }\n\n            try {\n                let output = hook(temp);\n                if (isPromise(output)) {\n                    output = await output;\n                }\n\n                if (\n                    isResponse(output) ||\n                    isRequestOptions(output)\n                ) {\n                    return output;\n                }\n            } catch (e) {\n                temp = e as ClientError;\n            }\n        }\n\n        throw temp;\n    }\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ProxyOptions } from 'node-fetch-native/proxy';\nimport { withBase, withQuery } from 'ufo';\nimport type { ClientErrorCreateContext } from './error/type';\nimport { Headers, createProxy, fetch } from './fetch';\n\nimport { MethodName, ResponseType } from './constants';\nimport type {\n    HookErrorFn,\n    HookFn,\n    HookReqFn,\n    HookResFn,\n} from './hook';\nimport type {\n    RequestBaseOptions,\n    RequestOptions,\n} from './request';\nimport type {\n    Response,\n    ResponseData,\n} from './response';\nimport {\n    HookManager,\n    HookName,\n} from './hook';\nimport {\n    detectResponseType,\n    isResponse,\n} from './response';\nimport {\n    extendRequestOptionsWithDefaults,\n    isRequestPayloadSupported,\n} from './request';\nimport { createClientError, toError } from './error';\nimport type { AuthorizationHeader } from './header';\nimport { HeaderName, stringifyAuthorizationHeader } from './header';\nimport { traverse } from './utils';\n\nexport class Client {\n    readonly '@instanceof' = Symbol.for('BaseClient');\n\n    public defaults : RequestBaseOptions;\n\n    protected headers : Headers;\n\n    protected hookManager : HookManager;\n\n    // ---------------------------------------------------------------------------------\n\n    constructor(input: RequestBaseOptions = {}) {\n        this.defaults = extendRequestOptionsWithDefaults(input || {});\n        this.headers = new Headers(this.defaults.headers);\n\n        this.hookManager = new HookManager();\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Return base url\n     *\n     * @return string\n     */\n    public getBaseURL(): string | undefined {\n        return this.defaults.baseURL;\n    }\n\n    /**\n     * Overwrite existing base url.\n     *\n     * @param url\n     */\n    public setBaseURL(url: string) {\n        this.defaults.baseURL = url;\n\n        return this;\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Set a header for all upcoming requests.\n     *\n     * @param key\n     * @param value\n     */\n    public setHeader(key: string, value: any) {\n        this.headers.set(key, value);\n\n        return this;\n    }\n\n    /**\n     * Get a header for all upcoming requests.\n     *\n     * @param key\n     */\n    public getHeader(key: string) {\n        return this.headers.get(key);\n    }\n\n    /**\n     * Unset a specific for all upcoming requests.\n     *\n     * @param key\n     */\n    public unsetHeader(key: string) {\n        if (this.headers.has(key)) {\n            this.headers.delete(key);\n        }\n\n        return this;\n    }\n\n    /**\n     * Unset all defined headers for the upcoming requests.\n     */\n    public unsetHeaders() {\n        this.headers.forEach((_value, key) => {\n            this.headers.delete(key);\n        });\n\n        return this;\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Set an authorization header (basic, api-key, bearer).\n     *\n     * @param options\n     */\n    public setAuthorizationHeader(options: AuthorizationHeader) {\n        this.setHeader(HeaderName.AUTHORIZATION, stringifyAuthorizationHeader(options));\n\n        return this;\n    }\n\n    /**\n     * Get authorization header.\n     */\n    public getAuthorizationHeader() {\n        const header = this.getHeader(HeaderName.AUTHORIZATION);\n        if (header !== null) {\n            return header;\n        }\n\n        return undefined;\n    }\n\n    /**\n     * Unset an authorization header.\n     */\n    public unsetAuthorizationHeader() {\n        this.unsetHeader(HeaderName.AUTHORIZATION);\n\n        return this;\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Make a custom request.\n     *\n     * @param config\n     */\n    public async request<\n        T = any,\n        RT extends `${ResponseType}` = `${ResponseType.JSON}`,\n        R = Response<ResponseData<RT, T>>,\n    >(config: RequestOptions<RT>): Promise<R> {\n        const headers = new Headers(config.headers);\n\n        this.headers.forEach((value, key) => {\n            if (!headers.has(key)) {\n                headers.set(key, value);\n            }\n        });\n\n        const baseURL = config.baseURL || this.defaults.baseURL;\n        let options : RequestOptions<RT> = {\n            ...this.defaults as RequestBaseOptions<RT>,\n            ...config,\n            headers,\n            url: baseURL ? withBase(config.url, baseURL) : config.url,\n        };\n\n        if (options.query || options.params) {\n            options.url = withQuery(\n                options.url,\n                traverse({\n                    ...options.params,\n                    ...options.query,\n                }, (value) => {\n                    if (typeof value === 'bigint') {\n                        return value.toString();\n                    }\n\n                    return value;\n                }),\n            );\n        }\n\n        options = await this.hookManager.triggerReqHook(\n            options,\n        ) as RequestOptions<RT>;\n\n        if (options.transform) {\n            const transformers = Array.isArray(options.transform) ?\n                options.transform :\n                [options.transform];\n\n            for (let i = 0; i < transformers.length; i++) {\n                const transformer = transformers[i];\n                options.body = transformer(\n                    options.body,\n                    options.headers as Headers,\n                );\n            }\n        }\n\n        const handleError = async (\n            step: 'request' | 'response',\n            ctx: ClientErrorCreateContext,\n        ) : Promise<R> => {\n            const error = createClientError(ctx);\n            if (Error.captureStackTrace) {\n                Error.captureStackTrace(error, this.request);\n            }\n\n            let output : RequestOptions | Response | undefined;\n            if (step === 'request') {\n                output = await this.hookManager.triggerErrorHook(HookName.REQUEST_ERROR, error);\n            } else {\n                output = await this.hookManager.triggerErrorHook(HookName.RESPONSE_ERROR, error);\n            }\n\n            if (output) {\n                if (isResponse(output)) {\n                    return output as R;\n                }\n\n                return this.request(output);\n            }\n\n            throw error;\n        };\n\n        let response : Response<ResponseData<RT, T>>;\n\n        try {\n            if (!isRequestPayloadSupported(options.method)) {\n                delete options.body;\n            }\n\n            const { url, proxy, ...data } = options;\n            if (proxy === false) {\n                response = await fetch(url, data as RequestInit);\n            } else {\n                let proxyOptions : ProxyOptions | undefined;\n\n                if (\n                    typeof proxy !== 'boolean' &&\n                    typeof proxy !== 'undefined'\n                ) {\n                    proxyOptions = proxy;\n                }\n\n                response = await fetch(url, {\n                    ...data,\n                    ...createProxy(proxyOptions),\n                } as RequestInit);\n            }\n        } catch (e: any) {\n            return handleError('request', {\n                request: options,\n                error: toError(e),\n            });\n        }\n\n        const responseType = options.responseType ||\n            detectResponseType(response.headers.get(HeaderName.CONTENT_TYPE));\n\n        let data : ResponseData<RT, T>;\n\n        switch (responseType) {\n            case ResponseType.STREAM: {\n                data = response.body as ResponseData<RT, T>;\n                break;\n            }\n            case ResponseType.BLOB: {\n                data = await response.blob() as ResponseData<RT, T>;\n                break;\n            }\n            case ResponseType.ARRAY_BUFFER: {\n                data = await response.arrayBuffer() as ResponseData<RT, T>;\n                break;\n            }\n            case ResponseType.TEXT: {\n                data = await response.text() as ResponseData<RT, T>;\n                break;\n            }\n            default: {\n                const temp = await response.text();\n                try {\n                    data = JSON.parse(temp);\n                } catch (e) {\n                    data = temp as ResponseData<RT, T>;\n                }\n            }\n        }\n\n        Object.defineProperty(response, 'data', {\n            get() {\n                return data;\n            },\n            set(value: ResponseData<RT, T>) {\n                data = value;\n            },\n        });\n\n        if (\n            response.status >= 400 &&\n            response.status < 600\n        ) {\n            return handleError('response', {\n                response,\n                request: options,\n            });\n        }\n\n        return await this.hookManager.triggerResHook(response) as R;\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Request a resource with the GET method.\n     *\n     * @param url\n     * @param config\n     */\n    public get<\n        T = any,\n        RT extends `${ResponseType}` = `${ResponseType.JSON}`,\n        R = Response<ResponseData<RT, T>>,\n    >(url: string, config?: RequestBaseOptions<RT>): Promise<R> {\n        return this.request({\n            ...(config || {}),\n            method: MethodName.GET,\n            url,\n        });\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Delete a resource with the DELETE method.\n     *\n     * @param url\n     * @param config\n     */\n    public delete<\n        T = any,\n        RT extends `${ResponseType}` = `${ResponseType.JSON}`,\n        R = Response<ResponseData<RT, T>>,\n    >(url: string, config?: RequestBaseOptions<RT>): Promise<R> {\n        return this.request({\n            ...(config || {}),\n            method: MethodName.DELETE,\n            url,\n        });\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Make a verification resource with the HEAD method.\n     *\n     * @param url\n     * @param config\n     */\n    public head<\n        T = any,\n        RT extends `${ResponseType}` = `${ResponseType.JSON}`,\n        R = Response<ResponseData<RT, T>>,\n    >(url: string, config?: RequestBaseOptions<RT>): Promise<R> {\n        return this.request({\n            ...(config || {}),\n            method: MethodName.HEAD,\n            url,\n        });\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Create a resource with the POST method.\n     *\n     * @param url\n     * @param body\n     * @param config\n     */\n    public post<\n        T = any,\n        RT extends `${ResponseType}` = `${ResponseType.JSON}`,\n        R = Response<ResponseData<RT, T>>,\n    >(url: string, body?: any, config?: RequestBaseOptions<RT>): Promise<R> {\n        return this.request({\n            ...(config || {}),\n            method: MethodName.POST,\n            url,\n            body,\n        });\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Update a resource with the PUT method.\n     *\n     * @param url\n     * @param body\n     * @param config\n     */\n    public put<\n        T = any,\n        RT extends `${ResponseType}` = `${ResponseType.JSON}`,\n        R = Response<ResponseData<RT, T>>,\n    >(url: string, body?: any, config?: RequestBaseOptions<RT>): Promise<R> {\n        return this.request({\n            ...(config || {}),\n            method: MethodName.PUT,\n            url,\n            body,\n        });\n    }\n\n    // ---------------------------------------------------------------------------------\n\n    /**\n     * Update a resource with the PATCH method.\n     *\n     * @param url\n     * @param body\n     * @param config\n     */\n    public patch<\n        T = any,\n        RT extends `${ResponseType}` = `${ResponseType.JSON}`,\n        R = Response<ResponseData<RT, T>>,\n    >(url: string, body?: any, config?: RequestBaseOptions<RT>): Promise<R> {\n        return this.request({\n            ...(config || {}),\n            method: MethodName.PATCH,\n            url,\n            body,\n        });\n    }\n\n    //---------------------------------------------------------------------------------\n\n    /**\n     * Register a hook fn.\n     *\n     * @param name\n     * @param fn\n     */\n\n    on(\n        name: `${HookName.REQUEST}`,\n        fn: HookReqFn\n    ) : number;\n\n    on(\n        name: `${HookName.RESPONSE}`,\n        fn: HookResFn\n    ) : number;\n\n    on(\n        name: `${HookName.RESPONSE_ERROR}` | `${HookName.REQUEST_ERROR}`,\n        fn: HookErrorFn\n    ) : number;\n\n    on(name: `${HookName}`, fn: HookFn) : number {\n        return this.hookManager.addListener(name, fn);\n    }\n\n    /**\n     * Remove single or specific hook fn(s).\n     *\n     * @param name\n     * @param fn\n     */\n    off(name: `${HookName}`, fn?: HookFn | number) : this {\n        if (typeof fn === 'undefined') {\n            this.hookManager.removeListeners(name);\n\n            return this;\n        }\n\n        this.hookManager.removeListener(name, fn);\n        return this;\n    }\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RequestBaseOptions } from './request';\nimport { Client } from './module';\nimport { hasOwnProperty, verifyInstanceBySymbol } from './utils';\n\nconst instanceMap: Record<string, Client> = {};\n\nexport function hasClient(\n    key?: string,\n) : boolean {\n    return hasOwnProperty(instanceMap, key || 'default');\n}\n\nexport function setClient<T extends Client = Client>(\n    client: T,\n    key?: string,\n) : T {\n    key = key || 'default';\n\n    instanceMap[key] = client;\n\n    return client;\n}\n\nexport function useClient<T extends Client = Client>(key?: string) : T {\n    key = key || 'default';\n\n    if (Object.prototype.hasOwnProperty.call(instanceMap, key)) {\n        return instanceMap[key] as T;\n    }\n\n    const instance = createClient();\n\n    instanceMap[key] = instance;\n\n    return instance as T;\n}\n\nexport function unsetClient(key?: string) {\n    key = key || 'default';\n    if (hasOwnProperty(instanceMap, key)) {\n        delete instanceMap[key];\n    }\n}\n\nexport function createClient(input?: RequestBaseOptions) {\n    return new Client(input);\n}\n\nexport function isClient(input: unknown): input is Client {\n    if (input instanceof Client) {\n        return true;\n    }\n\n    return verifyInstanceBySymbol(input, 'Client');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createClient } from './instance';\n\nexport * from './hook';\nexport * from './request';\nexport * from './response';\nexport * from './constants';\nexport * from './error';\nexport * from './header';\nexport * from './module';\nexport * from './instance';\nexport * from './fetch';\nexport * from './utils';\n\nconst client = createClient();\nexport default client;\n"],"names":["n","Object","defineProperty","e","t","r","value","configurable","i","c","a","agent","dispatcher","o","globalThis","fetch","gT","self","window","global","Error","File","_File","FormData","_FormData","AbortController","_AbortController","nodeFetch","Headers","_Headers","Blob","_Blob","createProxy","options","createProxyBase","ResponseType","MethodName","HookName","hasOwnProperty","obj","prop","prototype","call","kindOf","input","toString","slice","toLowerCase","kindOfTest","type","isObject","Array","isArray","isStream","pipe","isFormData","pattern","isArrayBuffer","ArrayBuffer","isFile","isBlob","isURLSearchParams","URLSearchParams","verifyInstanceBySymbol","name","Symbol","for","isSerializable","undefined","toJSON","serialize","JSON","stringify","_key","isPromise","p","Promise","then","traverse","fn","length","keys","AuthorizationHeaderType","ErrorCode","AuthorizationHeaderError","BaseError","parse","code","AUTHORIZATION_HEADER_PARSE","message","parseType","AUTHORIZATION_HEADER_TYPE_PARSE","AUTHORIZATION_HEADER_INVALID","ClientError","ctx","cause","error","request","response","status","statusCode","statusMessage","statusText","captureStackTrace","isClientError","isClientErrorWithStatusCode","statusCodes","isClientErrorDueNetworkIssue","Boolean","CONNECTION_ABORTED","formatRequestOptions","url","parts","method","push","join","createClientError","context","isAbort","CONNECTION_CLOSED","toError","setPrototypeOf","TypeError","extendError","data","getOwnPropertyNames","parseAuthorizationHeader","split","id","base64Decoded","Buffer","from","base64Parts","BASIC","username","password","BEARER","token","API_KEY","X_API_KEY","key","stringifyAuthorizationHeader","header","basicStr","HeaderName","setHeader","headers","set","index","findIndex","el","getHeader","get","unsetHeader","delete","splice","createDefaultRequestTransformer","CONTENT_TYPE","contentType","contentTypeIsJson","indexOf","has","ACCEPT","extendRequestOptionsWithDefaults","transform","proxy","isRequestPayloadSupported","toUpperCase","PATCH","POST","PUT","isRequestOptions","isResponse","ok","JSON_REGEX","detectResponseType","STREAM","shift","test","textTypes","startsWith","TEXT","HookManager","addListener","items","removeListener","removeListeners","triggerReqHook","REQUEST","temp","hook","output","triggerResHook","RESPONSE","triggerErrorHook","Client","getBaseURL","defaults","baseURL","setBaseURL","unsetHeaders","forEach","_value","setAuthorizationHeader","AUTHORIZATION","getAuthorizationHeader","unsetAuthorizationHeader","config","withBase","query","params","withQuery","hookManager","transformers","transformer","body","handleError","step","REQUEST_ERROR","RESPONSE_ERROR","proxyOptions","responseType","BLOB","blob","ARRAY_BUFFER","arrayBuffer","text","GET","DELETE","head","HEAD","post","put","patch","on","off","instanceMap","hasClient","setClient","client","useClient","instance","createClient","unsetClient","isClient"],"mappings":"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","x_google_ignoreList":[0]}