{"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/json-serializable.ts","../src/utils/promise.ts","../src/header/authorization/constants.ts","../src/error/constants.ts","../src/error/entities/authorization-header.ts","../src/error/module.ts","../src/error/utils.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';\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","/*\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 isJSONSerializable(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) {\n        return true;\n    }\n\n    if (t !== 'object') {\n        return false; // bigint, 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","/*\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) 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();\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}\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 type { RequestOptions } from '../request';\nimport { isObject, verifyInstanceBySymbol } from '../utils';\nimport { ErrorCode } from './constants';\nimport { ClientError } from './module';\nimport type { ClientErrorCreateContext } from './type';\n\nfunction formatRequestOptions(input: RequestOptions) : string {\n    if (input.url) {\n        let output = input.url;\n        if (input.query) {\n            const searchParams = new URLSearchParams(input.query);\n            const searchQuery = searchParams.toString();\n            if (searchQuery.length > 0) {\n                output += `?${searchQuery}`;\n            }\n        }\n\n        return output;\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 (\n        context.error &&\n        context.error.message\n    ) {\n        message = `${context.error.message} (${message})`;\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 output: ClientError<T> = new ClientError({\n        ...context,\n        code,\n        message,\n    });\n\n    return output;\n}\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) 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    isJSONSerializable,\n    isStream,\n    isURLSearchParams,\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 (isJSONSerializable(data) || contentTypeIsJson) {\n            data = typeof data === 'string' ?\n                data :\n                JSON.stringify(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    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 { createProxy } from 'node-fetch-native/proxy';\nimport { withBase, withQuery } from 'ufo';\nimport type { ClientErrorCreateContext } from './error/type';\nimport { Headers, 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 } from './error';\nimport type { AuthorizationHeader } from './header';\nimport { HeaderName, stringifyAuthorizationHeader } from './header';\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(options.url, {\n                ...options.params,\n                ...options.query,\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\n            if (Error.captureStackTrace) {\n                Error.captureStackTrace(error);\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 (error: any) {\n            return handleError('request', {\n                request: options,\n                ...(error instanceof Error ? { error } : {}),\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","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","isJSONSerializable","undefined","toJSON","isPromise","p","Promise","then","AuthorizationHeaderType","ErrorCode","AuthorizationHeaderError","BaseError","parse","code","AUTHORIZATION_HEADER_PARSE","message","parseType","AUTHORIZATION_HEADER_TYPE_PARSE","constructor","options","AUTHORIZATION_HEADER_INVALID","ClientError","ctx","request","response","status","statusCode","statusMessage","statusText","formatRequestOptions","url","output","query","searchParams","searchQuery","length","createClientError","context","error","isAbort","CONNECTION_ABORTED","CONNECTION_CLOSED","isClientError","isClientErrorWithStatusCode","statusCodes","isClientErrorDueNetworkIssue","Boolean","parseAuthorizationHeader","parts","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","push","keys","getHeader","get","unsetHeader","delete","splice","createDefaultRequestTransformer","data","CONTENT_TYPE","contentType","contentTypeIsJson","indexOf","JSON","stringify","has","ACCEPT","extendRequestOptionsWithDefaults","transform","isRequestPayloadSupported","method","toUpperCase","PATCH","POST","PUT","isRequestOptions","isResponse","ok","JSON_REGEX","detectResponseType","STREAM","shift","test","textTypes","startsWith","TEXT","HookManager","addListener","fn","items","removeListener","removeListeners","triggerReqHook","REQUEST","temp","hook","triggerResHook","RESPONSE","triggerErrorHook","Client","defaults","baseURL","setBaseURL","forEach","_value","setAuthorizationHeader","AUTHORIZATION","config","withBase","params","withQuery","hookManager","transformers","transformer","body","handleError","step","captureStackTrace","REQUEST_ERROR","RESPONSE_ERROR","proxy","proxyOptions","createProxy","responseType","BLOB","blob","ARRAY_BUFFER","arrayBuffer","text","GET","DELETE","head","HEAD","on","off","instanceMap","hasClient","setClient","client","useClient","instance","createClient","unsetClient","isClient"],"mappings":"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","x_google_ignoreList":[0]}