{
  "version": 3,
  "sources": ["../../../../node_modules/.pnpm/is-obj@2.0.0/node_modules/is-obj/index.js", "../../../../node_modules/.pnpm/dot-prop@6.0.1/node_modules/dot-prop/index.js", "../../src/index.ts", "../../src/decorators/getFrameInternalData.ts", "../../src/decorators/getFrameOption.ts", "../../src/exceptions/JinCreateError.ts", "../../src/exceptions/JinRespError.ts", "../../src/exceptions/JinValidationError.ts", "../../src/frames/JinFile.ts", "../../src/frames/defaultJinFrameTimeout.ts", "../../src/tools/formatters/classifyBodyFormatters.ts", "../../src/tools/type-narrowing/isValidPrimitiveType.ts", "../../src/tools/formatters/applyFormat.ts", "../../src/tools/type-narrowing/isValidPrimitiveWithDateType.ts", "../../src/tools/formatters/formatting.ts", "../../src/tools/formatters/formattings.ts", "../../src/tools/formatters/formatEach.ts", "../../src/tools/formatters/getBodyFormatters.ts", "../../src/tools/type-narrowing/isValidArrayType.ts", "../../src/processors/getBodyField.ts", "../../src/tools/formatters/findFromBody.ts", "../../src/tools/formatters/setToBody.ts", "../../src/tools/formatters/bodyFormatting.ts", "../../src/tools/formatters/bodyFormattings.ts", "../../src/tools/formatters/bodyFormatEach.ts", "../../src/processors/getObjectBodyField.ts", "../../src/processors/getBodyMap.ts", "../../src/tools/bitwised.ts", "../../src/tools/encodes/encode.ts", "../../src/tools/formatters/stringifyExceptString.ts", "../../src/tools/formatters/stringifyQuerystring.ts", "../../src/tools/type-narrowing/isValidNumberArray.ts", "../../src/processors/getQuerystringMap.ts", "../../src/tools/slash-utils/startWithSlash.ts", "../../src/frames/AbstractJinFrame.ts", "../../../../node_modules/.pnpm/url-template@3.1.1/node_modules/url-template/lib/url-template.js", "../../src/processors/flatStringMap.ts", "../../src/tools/slash-utils/removeEndSlash.ts", "../../src/tools/slash-utils/removeStartSlash.ts", "../../src/tools/slash-utils/removeBothSlash.ts", "../../src/tools/slash-utils/getUrl.ts", "../../src/decorators/methods/handlers/REQUEST_METHOD_DECORATOR.ts", "../../src/decorators/methods/handlers/REQUEST_RETRY_DECORATOR.ts", "../../src/decorators/methods/handlers/REQUEST_TIMEOUT_DECORATOR.ts", "../../src/decorators/methods/handlers/REQUEST_VALIDATOR_DECORATOR.ts", "../../src/decorators/methods/handlers/REQUEST_DEDUPE_DECORATOR.ts", "../../src/decorators/methods/handlers/REQUEST_AUTHORIZATION_DECORATOR.ts", "../../src/decorators/methods/handlers/REQUEST_SECURITY_DECORATOR.ts", "../../src/decorators/methods/handlers/getAllMethodMetaInherited.ts", "../../src/tools/setFrameOption.ts", "../../src/tools/mergeFrameOption.ts", "../../src/tools/mergeRetryOption.ts", "../../src/decorators/methods/handlers/getRequestMeta.ts", "../../src/decorators/fields/handlers/REQUEST_FIELD_DECORATOR.ts", "../../src/decorators/fields/handlers/getFieldMetadata.ts", "../../src/tools/responses/getRetryInterval.ts", "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js", "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js", "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js", "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInMilliseconds.js", "../../src/tools/getDuration.ts", "../../src/tools/auth/applySecurityProviders.ts", "../../src/tools/auth/getAuthorization.ts", "../../src/processors/getQuerystringKeyFormat.ts", "../../src/processors/getQuerystringKey.ts", "../../src/tools/getRetryAfter.ts", "../../src/tools/getCachePath.ts", "../../src/tools/json/safeStringify.ts", "../../src/tools/runAndUnwrap.ts", "../../src/frames/RequestDedupeManager.ts", "../../src/tools/sleep.ts", "../../src/tools/getUrlValue.ts", "../../src/tools/getError.ts", "../../src/tools/isValidateStatusDefault.ts", "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js", "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatISO.js", "../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getUnixTime.js", "../../src/frames/JinFrame.ts", "../../src/tools/responses/getStatusFromError.ts", "../../src/tools/getHeaderObject.ts", "../../src/tools/json/safeParse.ts", "../../src/validators/BaseValidator.ts", "../../src/providers/security/ApiKeyProvider.ts", "../../src/providers/security/BasicAuthProvider.ts", "../../src/providers/security/BearerTokenProvider.ts", "../../src/processors/default-option/getDefaultBodyFieldOption.ts", "../../src/decorators/fields/Body.ts", "../../src/processors/default-option/getDefaultCookieFieldOption.ts", "../../src/decorators/fields/Cookie.ts", "../../src/processors/default-option/getDefaultHeaderFieldOption.ts", "../../src/decorators/fields/Header.ts", "../../src/processors/default-option/getDefaultObjectBodyFieldOption.ts", "../../src/decorators/fields/ObjectBody.ts", "../../src/processors/default-option/getDefaultParamFieldOption.ts", "../../src/decorators/fields/Param.ts", "../../src/processors/default-option/getDefaultQueryFieldOption.ts", "../../src/decorators/fields/Query.ts", "../../src/decorators/methods/handlers/pushRequestMeta.ts", "../../src/decorators/methods/handlers/makeRequestDecorator.ts", "../../src/decorators/methods/Delete.ts", "../../src/decorators/methods/Get.ts", "../../src/decorators/methods/Head.ts", "../../src/decorators/methods/Link.ts", "../../src/decorators/methods/Options.ts", "../../src/decorators/methods/Patch.ts", "../../src/decorators/methods/Post.ts", "../../src/decorators/methods/Purge.ts", "../../src/decorators/methods/Put.ts", "../../src/decorators/methods/Search.ts", "../../src/decorators/methods/Unlink.ts", "../../src/tools/encodes/encodes.ts", "../../src/tools/type-narrowing/isValidObject.ts", "../../src/tools/type-narrowing/typeAssert.ts", "../../src/decorators/methods/options/Dedupe.ts", "../../src/decorators/methods/options/Retry.ts", "../../src/decorators/methods/options/Security.ts", "../../src/decorators/methods/options/Timeout.ts", "../../src/decorators/methods/options/Validator.ts"],
  "sourcesContent": ["'use strict';\n\nmodule.exports = value => {\n\tconst type = typeof value;\n\treturn value !== null && (type === 'object' || type === 'function');\n};\n", "'use strict';\nconst isObj = require('is-obj');\n\nconst disallowedKeys = new Set([\n\t'__proto__',\n\t'prototype',\n\t'constructor'\n]);\n\nconst isValidPath = pathSegments => !pathSegments.some(segment => disallowedKeys.has(segment));\n\nfunction getPathSegments(path) {\n\tconst pathArray = path.split('.');\n\tconst parts = [];\n\n\tfor (let i = 0; i < pathArray.length; i++) {\n\t\tlet p = pathArray[i];\n\n\t\twhile (p[p.length - 1] === '\\\\' && pathArray[i + 1] !== undefined) {\n\t\t\tp = p.slice(0, -1) + '.';\n\t\t\tp += pathArray[++i];\n\t\t}\n\n\t\tparts.push(p);\n\t}\n\n\tif (!isValidPath(parts)) {\n\t\treturn [];\n\t}\n\n\treturn parts;\n}\n\nmodule.exports = {\n\tget(object, path, value) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn value === undefined ? object : value;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\t\tif (pathArray.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tobject = object[pathArray[i]];\n\n\t\t\tif (object === undefined || object === null) {\n\t\t\t\t// `object` is either `undefined` or `null` so we want to stop the loop, and\n\t\t\t\t// if this is not the last bit of the path, and\n\t\t\t\t// if it did't return `undefined`\n\t\t\t\t// it would return `null` if `object` is `null`\n\t\t\t\t// but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`\n\t\t\t\tif (i !== pathArray.length - 1) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn object === undefined ? value : object;\n\t},\n\n\tset(object, path, value) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn object;\n\t\t}\n\n\t\tconst root = object;\n\t\tconst pathArray = getPathSegments(path);\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tconst p = pathArray[i];\n\n\t\t\tif (!isObj(object[p])) {\n\t\t\t\tobject[p] = {};\n\t\t\t}\n\n\t\t\tif (i === pathArray.length - 1) {\n\t\t\t\tobject[p] = value;\n\t\t\t}\n\n\t\t\tobject = object[p];\n\t\t}\n\n\t\treturn root;\n\t},\n\n\tdelete(object, path) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tconst p = pathArray[i];\n\n\t\t\tif (i === pathArray.length - 1) {\n\t\t\t\tdelete object[p];\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tobject = object[p];\n\n\t\t\tif (!isObj(object)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\thas(object, path) {\n\t\tif (!isObj(object) || typeof path !== 'string') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst pathArray = getPathSegments(path);\n\t\tif (pathArray.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line unicorn/no-for-loop\n\t\tfor (let i = 0; i < pathArray.length; i++) {\n\t\t\tif (isObj(object)) {\n\t\t\t\tif (!(pathArray[i] in object)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tobject = object[pathArray[i]];\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n};\n", "export * from './decorators/getFrameInternalData';\nexport * from './decorators/getFrameOption';\nexport * from './exceptions/JinCreateError';\nexport * from './exceptions/JinRespError';\nexport * from './exceptions/JinValidationError';\nexport * from './frames/AbstractJinFrame';\nexport * from './frames/defaultJinFrameTimeout';\nexport * from './frames/JinFile';\nexport * from './frames/JinFrame';\nexport * from './frames/RequestDedupeManager';\nexport * from './interfaces/DebugInfo';\nexport * from './interfaces/DedupeResult';\nexport * from './interfaces/GetError';\nexport * from './interfaces/JinBasicAuth';\nexport * from './interfaces/JinFailResp';\nexport * from './interfaces/JinHttpClient';\nexport * from './interfaces/JinPassResp';\nexport * from './interfaces/JinRequestConfig';\nexport * from './interfaces/JinResp';\nexport * from './interfaces/JinRespBase';\nexport * from './interfaces/ValidationResult';\nexport * from './interfaces/ValidationResultType';\nexport * from './processors/flatStringMap';\nexport * from './processors/getBodyField';\nexport * from './processors/getBodyMap';\nexport * from './processors/getObjectBodyField';\nexport * from './processors/getQuerystringKey';\nexport * from './processors/getQuerystringKeyFormat';\nexport * from './processors/getQuerystringMap';\nexport * from './tools/bitwised';\nexport * from './tools/getCachePath';\nexport * from './tools/getDuration';\nexport * from './tools/getError';\nexport * from './tools/getHeaderObject';\nexport * from './tools/getRetryAfter';\nexport * from './tools/getUrlValue';\nexport * from './tools/isValidateStatusDefault';\nexport * from './tools/mergeFrameOption';\nexport * from './tools/mergeRetryOption';\nexport * from './tools/runAndUnwrap';\nexport * from './tools/setFrameOption';\nexport * from './tools/sleep';\nexport * from './validators/BaseValidator';\nexport * from './providers/security/ApiKeyProvider';\nexport * from './providers/security/BasicAuthProvider';\nexport * from './providers/security/BearerTokenProvider';\nexport * from './decorators/fields/Body';\nexport * from './decorators/fields/Cookie';\nexport * from './decorators/fields/Header';\nexport * from './decorators/fields/ObjectBody';\nexport * from './decorators/fields/Param';\nexport * from './decorators/fields/Query';\nexport * from './decorators/methods/Delete';\nexport * from './decorators/methods/Get';\nexport * from './decorators/methods/Head';\nexport * from './decorators/methods/Link';\nexport * from './decorators/methods/Options';\nexport * from './decorators/methods/Patch';\nexport * from './decorators/methods/Post';\nexport * from './decorators/methods/Purge';\nexport * from './decorators/methods/Put';\nexport * from './decorators/methods/Search';\nexport * from './decorators/methods/Unlink';\nexport * from './interfaces/field/CommonCacheKeyExcludeOption';\nexport * from './interfaces/field/CommonCacheKeyExcludePathOption';\nexport * from './interfaces/field/CommonFieldOption';\nexport * from './interfaces/field/CookieFieldOption';\nexport * from './interfaces/field/HeaderFieldOption';\nexport * from './interfaces/field/ParamFieldOption';\nexport * from './interfaces/field/QueryFieldOption';\nexport * from './interfaces/field/QueryParamHeaderCommonFieldOption';\nexport * from './interfaces/options/FieldRecords';\nexport * from './interfaces/options/Formatter';\nexport * from './interfaces/options/FrameInternal';\nexport * from './interfaces/options/FrameOption';\nexport * from './interfaces/options/FrameRetry';\nexport * from './interfaces/options/Hooks';\nexport * from './interfaces/options/JinFrameCreateConfig';\nexport * from './interfaces/options/JinFrameFunction';\nexport * from './interfaces/options/JinFrameRequestConfig';\nexport * from './interfaces/options/Method';\nexport * from './interfaces/options/MethodEntry';\nexport * from './interfaces/options/Milliseconds';\nexport * from './interfaces/security/AuthorizationData';\nexport * from './interfaces/security/SecurityContext';\nexport * from './interfaces/security/SecurityKey';\nexport * from './interfaces/security/SecurityProvider';\nexport * from './processors/default-option/getDefaultBodyFieldOption';\nexport * from './processors/default-option/getDefaultCookieFieldOption';\nexport * from './processors/default-option/getDefaultHeaderFieldOption';\nexport * from './processors/default-option/getDefaultObjectBodyFieldOption';\nexport * from './processors/default-option/getDefaultParamFieldOption';\nexport * from './processors/default-option/getDefaultQueryFieldOption';\nexport * from './tools/auth/applySecurityProviders';\nexport * from './tools/auth/getAuthorization';\nexport * from './tools/encodes/encode';\nexport * from './tools/encodes/encodes';\nexport * from './tools/formatters/applyFormat';\nexport * from './tools/formatters/bodyFormatEach';\nexport * from './tools/formatters/bodyFormatting';\nexport * from './tools/formatters/bodyFormattings';\nexport * from './tools/formatters/classifyBodyFormatters';\nexport * from './tools/formatters/findFromBody';\nexport * from './tools/formatters/formatEach';\nexport * from './tools/formatters/formatting';\nexport * from './tools/formatters/formattings';\nexport * from './tools/formatters/getBodyFormatters';\nexport * from './tools/formatters/setToBody';\nexport * from './tools/formatters/stringifyExceptString';\nexport * from './tools/formatters/stringifyQuerystring';\nexport * from './tools/json/safeParse';\nexport * from './tools/json/safeStringify';\nexport * from './tools/responses/getRetryInterval';\nexport * from './tools/responses/getStatusFromError';\nexport * from './tools/slash-utils/getUrl';\nexport * from './tools/slash-utils/removeBothSlash';\nexport * from './tools/slash-utils/removeEndSlash';\nexport * from './tools/slash-utils/removeStartSlash';\nexport * from './tools/slash-utils/startWithSlash';\nexport * from './tools/type-narrowing/isValidArrayType';\nexport * from './tools/type-narrowing/isValidNumberArray';\nexport * from './tools/type-narrowing/isValidObject';\nexport * from './tools/type-narrowing/isValidPrimitiveType';\nexport * from './tools/type-narrowing/isValidPrimitiveWithDateType';\nexport * from './tools/type-narrowing/typeAssert';\nexport * from './tools/type-utilities/AbstractConstructorFunction';\nexport * from './tools/type-utilities/BuilderFor';\nexport * from './tools/type-utilities/ConstructorFunction';\nexport * from './tools/type-utilities/ConstructorType';\nexport * from './tools/type-utilities/FieldsOf';\nexport * from './tools/type-utilities/OmitConstructorType';\nexport * from './tools/type-utilities/SupportArrayType';\nexport * from './tools/type-utilities/SupportPrimitiveType';\nexport * from './tools/type-utilities/WithBuilder';\nexport * from './tools/type-utilities/WithDefaultValues';\nexport * from './decorators/fields/handlers/getFieldMetadata';\nexport * from './decorators/fields/handlers/REQUEST_FIELD_DECORATOR';\nexport * from './decorators/methods/handlers/getAllMethodMetaInherited';\nexport * from './decorators/methods/handlers/getRequestMeta';\nexport * from './decorators/methods/handlers/makeRequestDecorator';\nexport * from './decorators/methods/handlers/pushRequestMeta';\nexport * from './decorators/methods/handlers/REQUEST_AUTHORIZATION_DECORATOR';\nexport * from './decorators/methods/handlers/REQUEST_DEDUPE_DECORATOR';\nexport * from './decorators/methods/handlers/REQUEST_METHOD_DECORATOR';\nexport * from './decorators/methods/handlers/REQUEST_RETRY_DECORATOR';\nexport * from './decorators/methods/handlers/REQUEST_SECURITY_DECORATOR';\nexport * from './decorators/methods/handlers/REQUEST_TIMEOUT_DECORATOR';\nexport * from './decorators/methods/handlers/REQUEST_VALIDATOR_DECORATOR';\nexport * from './decorators/methods/options/Dedupe';\nexport * from './decorators/methods/options/Retry';\nexport * from './decorators/methods/options/Security';\nexport * from './decorators/methods/options/Timeout';\nexport * from './decorators/methods/options/Validator';\nexport * from './interfaces/field/body/BodyFieldOption';\nexport * from './interfaces/field/body/MultipleBodyFormatter';\nexport * from './interfaces/field/body/ObjectBodyFieldOption';\nexport * from './interfaces/field/body/SingleBodyFormatter';\n", "import type { FrameInternal } from '#interfaces/options/FrameInternal';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\n\nexport function getFrameInternalData(option?: Partial<Omit<FrameOption, 'method'>>): FrameInternal {\n  const frameData: FrameInternal = {\n    startAt: new Date(),\n    eachStartAt: new Date(),\n    endAt: new Date(),\n    query: {},\n    header: {},\n    param: {},\n    body: undefined,\n    retry: option?.retry != null ? { ...option.retry, try: 0 } : { max: 1, try: 0, interval: 0 },\n  };\n\n  return frameData;\n}\n", "import type { Method } from '#interfaces/options/Method';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\n\nexport function getFrameOption(method: Method, option?: Partial<Omit<FrameOption, 'method'>>): FrameOption {\n  const frameOption: FrameOption = {\n    host: option?.host,\n    pathPrefix: option?.pathPrefix,\n    path: option?.path,\n    method,\n    customBody: option?.customBody,\n    contentType: option?.contentType ?? 'application/json',\n    userAgent: option?.userAgent,\n    retry: option?.retry,\n    timeout: option?.timeout,\n    validators: option?.validators,\n    validateStatus: option?.validateStatus,\n    dedupe: option?.dedupe,\n    security: option?.security,\n    authorization: option?.authorization,\n  };\n\n  return frameOption;\n}\n", "import type { JinFrame } from '#frames/JinFrame';\nimport type { DebugInfo } from '#interfaces/DebugInfo';\nimport httpStatusCodes, { getReasonPhrase } from 'http-status-codes';\n\nexport class JinCreateError<T extends JinFrame<TPASS, TFAIL>, TPASS, TFAIL = TPASS> extends Error {\n  __discriminator = 'JinCreateError';\n\n  #debug: Omit<DebugInfo, 'req'>;\n\n  #frame: T;\n\n  #status: number;\n\n  #statusText: string;\n\n  constructor({ debug, frame, message }: { debug: Omit<DebugInfo, 'req'>; frame: T; message: string }) {\n    super(message);\n\n    this.#debug = debug;\n    this.#frame = frame;\n    this.#status = httpStatusCodes.INTERNAL_SERVER_ERROR;\n    this.#statusText = getReasonPhrase(httpStatusCodes.INTERNAL_SERVER_ERROR);\n  }\n\n  get debug(): Omit<DebugInfo, 'req'> {\n    return this.#debug;\n  }\n\n  get frame(): T {\n    return this.#frame;\n  }\n\n  get status(): number {\n    return this.#status;\n  }\n\n  get statusText(): string {\n    return this.#statusText;\n  }\n}\n", "import type { JinFrame } from '#frames/JinFrame';\nimport type { DebugInfo } from '#interfaces/DebugInfo';\nimport type { JinFailResp } from '#interfaces/JinFailResp';\n\nexport class JinRespError<TPASS, TFAIL = unknown> extends Error {\n  __discriminator = 'JinRespError';\n\n  #debug: DebugInfo;\n\n  #frame: JinFrame<TPASS, TFAIL>;\n\n  #resp: JinFailResp<TFAIL>;\n\n  #status: number;\n\n  #statusText: string;\n\n  constructor({\n    debug,\n    frame,\n    resp,\n    message,\n    cause,\n  }: {\n    debug: DebugInfo;\n    frame: JinFrame<TPASS, TFAIL>;\n    resp: JinFailResp<TFAIL>;\n    message: string;\n    cause?: unknown;\n  }) {\n    super(message, { cause });\n\n    this.#debug = debug;\n    this.#frame = frame;\n    this.#resp = resp;\n    this.#status = resp.status;\n    this.#statusText = resp.statusText;\n  }\n\n  get debug(): DebugInfo {\n    return this.#debug;\n  }\n\n  get frame(): JinFrame<TPASS, TFAIL> {\n    return this.#frame;\n  }\n\n  get resp(): JinFailResp<TFAIL> | undefined {\n    return this.#resp;\n  }\n\n  get status(): number {\n    return this.#status;\n  }\n\n  get statusText(): string {\n    return this.#statusText;\n  }\n\n  override toString(): string {\n    return `JinRespError [${this.#status} ${this.#statusText}]: ${this.message}`;\n  }\n}\n", "import type { JinFrame } from '#frames/JinFrame';\nimport type { DebugInfo } from '#interfaces/DebugInfo';\nimport type { ValidationResult } from '#interfaces/ValidationResult';\nimport type { BaseValidator } from '#validators/BaseValidator';\nimport type { JinPassResp } from '#interfaces/JinPassResp';\n\nexport class JinValidationError<Pass, Fail = unknown, ValidationError = unknown> extends Error {\n  __discriminator = 'JinValidationError';\n\n  #debug: DebugInfo;\n\n  #frame: JinFrame<Pass, Fail>;\n\n  #resp: JinPassResp<Pass>;\n\n  #status: number;\n\n  #statusText: string;\n\n  #validator: BaseValidator;\n\n  #validated: ValidationResult<ValidationError>;\n\n  constructor({\n    debug,\n    frame,\n    resp,\n    message,\n    validator,\n    validated,\n  }: {\n    debug: DebugInfo;\n    frame: JinFrame<Pass, Fail>;\n    resp: JinPassResp<Pass>;\n    message: string;\n    validator: BaseValidator;\n    validated: ValidationResult<ValidationError>;\n  }) {\n    super(message);\n\n    this.#debug = debug;\n    this.#frame = frame;\n    this.#resp = resp;\n    this.#status = resp.status;\n    this.#statusText = resp.statusText;\n    this.#validated = validated;\n    this.#validator = validator;\n  }\n\n  get debug(): DebugInfo {\n    return this.#debug;\n  }\n\n  get frame(): JinFrame<Pass, Fail> {\n    return this.#frame;\n  }\n\n  get resp(): JinPassResp<Pass> | undefined {\n    return this.#resp;\n  }\n\n  get status(): number {\n    return this.#status;\n  }\n\n  get statusText(): string {\n    return this.#statusText;\n  }\n\n  get validator(): BaseValidator {\n    return this.#validator;\n  }\n\n  get validated(): ValidationResult<ValidationError> {\n    return this.#validated;\n  }\n}\n", "import type { ReadStream } from 'node:fs';\n\nexport class JinFile<T extends ReadStream | Buffer | File | Blob = File> {\n  /** filename */\n  #name: string;\n\n  /** file content via stream or buffer */\n  #file: T;\n\n  constructor(name: JinFile<T>['name'], file: JinFile<T>['file']) {\n    this.#file = file;\n    this.#name = name;\n  }\n\n  get file(): T {\n    return this.#file;\n  }\n\n  get name(): string {\n    return this.#name;\n  }\n}\n", "export const defaultJinFrameTimeout = 120000;\n", "import type { SingleBodyFormatter } from '#interfaces/field/body/SingleBodyFormatter';\nimport type { SetOptional, SetRequired } from 'type-fest';\n\nexport function classifyBodyFormatters(formatters?: SingleBodyFormatter[]): {\n  valid: SetRequired<SingleBodyFormatter, 'findFrom'>[];\n  invalid: SetOptional<SingleBodyFormatter, 'findFrom'>[];\n} {\n  if (formatters == null) {\n    return { valid: [], invalid: [] };\n  }\n\n  const result = formatters.reduce<{\n    valid: SetRequired<SingleBodyFormatter, 'findFrom'>[];\n    invalid: SetOptional<SingleBodyFormatter, 'findFrom'>[];\n  }>(\n    (aggregated, formatter) => {\n      if (formatter.findFrom != null) {\n        return {\n          ...aggregated,\n          valid: [...aggregated.valid, formatter as SetRequired<SingleBodyFormatter, 'findFrom'>],\n        };\n      }\n\n      return { ...aggregated, invalid: [...aggregated.invalid, formatter] };\n    },\n    { valid: [], invalid: [] },\n  );\n\n  return result;\n}\n", "import type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\n\nexport function isValidPrimitiveType(value: unknown): value is Exclude<SupportPrimitiveType, Date> {\n  if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n    return true;\n  }\n\n  return false;\n}\n", "import type { Formatter } from '#interfaces/options/Formatter';\nimport { isValidPrimitiveType } from '#tools/type-narrowing/isValidPrimitiveType';\n\nexport function applyFormat(origin: unknown, formatter: Formatter): unknown {\n  const orders = formatter.order ?? ['number', 'string', 'dateTime'];\n\n  const formatted = orders.reduce((processing, order) => {\n    // stage 01. number format processing\n    if (order === 'number' && formatter.number != null && typeof processing === 'number') {\n      return formatter.number(processing);\n    }\n\n    // stage 02. string format processing\n    if (order === 'string' && formatter.string != null && isValidPrimitiveType(processing)) {\n      if (typeof processing === 'number' || typeof processing === 'boolean') {\n        return formatter.string(processing.toString());\n      }\n\n      return formatter.string(processing);\n    }\n\n    // stage 03. date format processing\n    if (order === 'dateTime' && formatter.dateTime != null && processing instanceof Date) {\n      return formatter.dateTime(processing);\n    }\n\n    return processing;\n  }, origin);\n\n  return formatted;\n}\n", "import type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\n\nexport function isValidPrimitiveWithDateType(value: unknown): value is SupportPrimitiveType {\n  if (\n    typeof value === 'string' ||\n    typeof value === 'boolean' ||\n    typeof value === 'number' ||\n    (typeof value === 'object' && value instanceof Date)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n", "import type { Formatter } from '#interfaces/options/Formatter';\nimport { applyFormat } from '#tools/formatters/applyFormat';\nimport { isValidPrimitiveWithDateType } from '#tools/type-narrowing/isValidPrimitiveWithDateType';\nimport type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\n\nexport function formatting(initialValue: unknown, formatter: Formatter): SupportPrimitiveType | undefined {\n  try {\n    const applied = applyFormat(initialValue, formatter);\n\n    if (isValidPrimitiveWithDateType(applied)) {\n      return applied;\n    }\n\n    return JSON.stringify(applied);\n  } catch (err) {\n    if (formatter.ignoreError != null && !formatter.ignoreError) {\n      throw err;\n    }\n\n    return undefined;\n  }\n}\n", "import type { Formatter } from '#interfaces/options/Formatter';\nimport { formatting } from '#tools/formatters/formatting';\nimport type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\nimport { toArray } from 'my-easy-fp';\n\nexport function formattings(initialValue: unknown, formatters: Formatter | Formatter[]): SupportPrimitiveType {\n  const applied = toArray(formatters).reduce<SupportPrimitiveType>((aggregated, formatter) => {\n    const formatted = formatting(aggregated, formatter);\n\n    if (formatted != null) {\n      return formatted;\n    }\n\n    return aggregated;\n  }, initialValue as SupportPrimitiveType);\n\n  return applied;\n}\n", "import type { Formatter } from '#interfaces/options/Formatter';\nimport { formattings } from '#tools/formatters/formattings';\nimport type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\n\nexport function formatEach(\n  initialValue: unknown,\n  formatters: Formatter | Formatter[],\n): SupportPrimitiveType | SupportPrimitiveType[] {\n  if (Array.isArray(initialValue)) {\n    return initialValue.map((value) => formattings(value, formatters));\n  }\n\n  return formattings(initialValue, formatters);\n}\n", "import type { SingleBodyFormatter } from '#interfaces/field/body/SingleBodyFormatter';\n\nexport function getBodyFormatters(formatters?: SingleBodyFormatter | SingleBodyFormatter[]): SingleBodyFormatter[] {\n  if (formatters == null) {\n    return [];\n  }\n\n  if (!Array.isArray(formatters)) {\n    return [formatters];\n  }\n\n  return formatters;\n}\n", "import { isValidPrimitiveWithDateType } from '#tools/type-narrowing/isValidPrimitiveWithDateType';\nimport type { SupportArrayType } from '#tools/type-utilities/SupportArrayType';\n\nexport function isValidArrayType(values: unknown): values is SupportArrayType {\n  if (Array.isArray(values)) {\n    return values.every((value) => isValidPrimitiveWithDateType(value));\n  }\n\n  return false;\n}\n", "import type { BodyFieldOption } from '#interfaces/field/body/BodyFieldOption';\nimport type { SingleBodyFormatter } from '#interfaces/field/body/SingleBodyFormatter';\nimport { classifyBodyFormatters } from '#tools/formatters/classifyBodyFormatters';\nimport { formatEach } from '#tools/formatters/formatEach';\nimport { getBodyFormatters } from '#tools/formatters/getBodyFormatters';\nimport { isValidArrayType } from '#tools/type-narrowing/isValidArrayType';\nimport { isValidPrimitiveWithDateType } from '#tools/type-narrowing/isValidPrimitiveWithDateType';\nimport type { SupportArrayType } from '#tools/type-utilities/SupportArrayType';\nimport type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\nimport * as dotProp from 'dot-prop';\n\nexport function getBodyField(thisFrame: unknown, field: BodyFieldOption): unknown {\n  if (\n    isValidPrimitiveWithDateType(thisFrame) ||\n    typeof thisFrame === 'bigint' ||\n    typeof thisFrame === 'function' ||\n    typeof thisFrame === 'symbol' ||\n    (typeof thisFrame === 'object' && Array.isArray(thisFrame))\n  ) {\n    return thisFrame;\n  }\n\n  const accessKey = field.key;\n  const value: unknown = (thisFrame as Record<string, unknown>)[accessKey];\n  const formatters: SingleBodyFormatter[] = getBodyFormatters(field.formatters);\n  const replaceKey = field.replaceAt ?? accessKey;\n\n  // case 02. nullable value\n  if (value == null) {\n    return thisFrame;\n  }\n\n  // case 02. primitive type & Date instance\n  if (isValidPrimitiveWithDateType(value) && value instanceof Date && formatters.length <= 0) {\n    const origin = {};\n    dotProp.set(origin, replaceKey, value);\n\n    return origin;\n  }\n\n  // case 03. array of primitive type & array of Date instance\n  if (isValidPrimitiveWithDateType(value) || (Array.isArray(value) && isValidArrayType(value))) {\n    const origin = {};\n    dotProp.set(origin, replaceKey, value);\n\n    const formatted = formatters.reduce<Record<string, SupportPrimitiveType | SupportArrayType>>(\n      (processing, formatter) => {\n        const childValue = dotProp.get<SupportPrimitiveType | SupportArrayType>(processing, replaceKey);\n        const formatteds = formatEach(childValue, formatter);\n\n        return dotProp.set(processing, replaceKey, formatteds);\n      },\n      origin,\n    );\n\n    return formatted;\n  }\n\n  // case 04. object of complex type\n  const classifed = classifyBodyFormatters(formatters);\n  const origin: Exclude<object, null | undefined> = {};\n\n  dotProp.set(origin, replaceKey, value);\n\n  const formatted = classifed.valid.reduce((processing, formatter) => {\n    const childAccessKey = [accessKey, formatter.findFrom].join('.');\n    const childReplaceKey = [replaceKey, formatter.findFrom].join('.');\n\n    const childValue = dotProp.get<unknown>(processing, childAccessKey);\n    const formatteds = formatEach(childValue, formatter);\n    const next: Exclude<object, null | undefined> = { ...processing };\n\n    dotProp.set(next, childReplaceKey, formatteds);\n\n    return next;\n  }, origin);\n\n  return formatted;\n}\n", "import * as dotProp from 'dot-prop';\n\nexport function findFromBody(initialValue: unknown, findFrom?: string): unknown {\n  return typeof initialValue === 'object' && !Array.isArray(initialValue) && initialValue != null && findFrom != null\n    ? dotProp.get(initialValue, findFrom)\n    : initialValue;\n}\n", "import * as dotProp from 'dot-prop';\n\nexport function setToBody(initialValue: unknown, formatted: unknown, findFrom?: string): unknown {\n  if (Array.isArray(initialValue) || initialValue == null) {\n    return initialValue;\n  }\n\n  if (findFrom == null && formatted != null) {\n    return formatted;\n  }\n\n  if (findFrom == null) {\n    return initialValue;\n  }\n\n  if (typeof initialValue !== 'object') {\n    return initialValue;\n  }\n\n  const next = { ...initialValue };\n\n  dotProp.set(next, findFrom, formatted);\n\n  return next;\n}\n", "import type { SingleBodyFormatter } from '#interfaces/field/body/SingleBodyFormatter';\nimport { applyFormat } from '#tools/formatters/applyFormat';\nimport { findFromBody } from '#tools/formatters/findFromBody';\nimport { setToBody } from '#tools/formatters/setToBody';\n\nexport function bodyFormatting(initialValue: unknown, formatter: SingleBodyFormatter): unknown {\n  const origin = findFromBody(initialValue, formatter.findFrom);\n\n  try {\n    const formatted = applyFormat(origin, formatter);\n    const next = setToBody(initialValue, formatted, formatter.findFrom);\n    return next;\n  } catch (err) {\n    if (formatter.ignoreError != null && !formatter.ignoreError) {\n      throw err;\n    }\n\n    return undefined;\n  }\n}\n", "import type { Formatter } from '#interfaces/options/Formatter';\nimport { bodyFormatting } from '#tools/formatters/bodyFormatting';\nimport { toArray } from 'my-easy-fp';\n\nexport function bodyFormattings(initialValue: unknown, formatters: Formatter | Formatter[]): unknown {\n  const applied = toArray(formatters).reduce<unknown>((aggregated, formatter) => {\n    const formatted = bodyFormatting(aggregated, formatter);\n\n    if (formatted != null) {\n      return formatted;\n    }\n\n    return aggregated;\n  }, initialValue);\n\n  return applied;\n}\n", "import type { SingleBodyFormatter } from '#interfaces/field/body/SingleBodyFormatter';\nimport { bodyFormattings } from '#tools/formatters/bodyFormattings';\n\nexport function bodyFormatEach(\n  initialValue: unknown,\n  formatters: SingleBodyFormatter | SingleBodyFormatter[],\n): unknown {\n  if (Array.isArray(initialValue)) {\n    return initialValue.map((value) => bodyFormattings(value, formatters));\n  }\n\n  return bodyFormattings(initialValue, formatters);\n}\n", "import type { SingleBodyFormatter } from '#interfaces/field/body/SingleBodyFormatter';\nimport type { ObjectBodyFieldOption } from '#interfaces/field/body/ObjectBodyFieldOption';\nimport { classifyBodyFormatters } from '#tools/formatters/classifyBodyFormatters';\nimport { getBodyFormatters } from '#tools/formatters/getBodyFormatters';\nimport { isValidArrayType } from '#tools/type-narrowing/isValidArrayType';\nimport { isValidPrimitiveWithDateType } from '#tools/type-narrowing/isValidPrimitiveWithDateType';\nimport type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\nimport { bodyFormatEach } from '#tools/formatters/bodyFormatEach';\nimport { formatEach } from '#tools/formatters/formatEach';\n\nexport function getObjectBodyField(thisFrame: unknown, field: ObjectBodyFieldOption): unknown {\n  if (\n    isValidPrimitiveWithDateType(thisFrame) ||\n    typeof thisFrame === 'bigint' ||\n    typeof thisFrame === 'function' ||\n    typeof thisFrame === 'symbol' ||\n    (typeof thisFrame === 'object' && Array.isArray(thisFrame))\n  ) {\n    return thisFrame;\n  }\n\n  const accessKey = field.key;\n  const value: unknown = (thisFrame as Record<string, unknown>)[accessKey];\n  const formatters: SingleBodyFormatter[] = getBodyFormatters(field.formatters);\n\n  // case 02. nullable value\n  if (value == null) {\n    return thisFrame;\n  }\n\n  // case 02. primitive type & Date instance\n  // case 03. array of primitive type & array of Date instance\n  if (isValidPrimitiveWithDateType(value) || (Array.isArray(value) && isValidArrayType(value))) {\n    const formatted = formatters.reduce<SupportPrimitiveType | SupportPrimitiveType[]>(\n      (processing, formatter) => formatEach(processing, formatter),\n      value,\n    );\n\n    return formatted;\n  }\n\n  // case 04. object of complex type\n  const classifed = classifyBodyFormatters(formatters);\n  const origin = value;\n\n  const formatted = classifed.valid.reduce((processing, formatter) => {\n    const formatteds = bodyFormatEach(processing, formatter) as object;\n    return formatteds;\n  }, origin);\n\n  return formatted;\n}\n", "import type { BodyFieldOption } from '#interfaces/field/body/BodyFieldOption';\nimport type { ObjectBodyFieldOption } from '#interfaces/field/body/ObjectBodyFieldOption';\nimport { getBodyField } from '#processors/getBodyField';\nimport { getObjectBodyField } from '#processors/getObjectBodyField';\nimport { isValidPrimitiveType } from '#tools/type-narrowing/isValidPrimitiveType';\nimport type { SupportArrayType } from '#tools/type-utilities/SupportArrayType';\nimport type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\nimport { recursive } from 'merge';\nimport { atOrThrow } from 'my-easy-fp';\n\nexport function getBodyMap<T extends Record<string, unknown>>(\n  thisFrame: T,\n  fields: (BodyFieldOption | ObjectBodyFieldOption)[],\n): Record<string, unknown> | SupportPrimitiveType | SupportArrayType | unknown[] {\n  const bodies: unknown[] = [];\n  const objectBodies: unknown[] = [];\n\n  const classifed = fields.reduce<{\n    bodies: BodyFieldOption[];\n    objectBodies: ObjectBodyFieldOption[];\n  }>(\n    (aggregated, option) => {\n      if (option.type === 'body') {\n        aggregated.bodies.push(option);\n      } else {\n        aggregated.objectBodies.push(option);\n      }\n\n      return aggregated;\n    },\n    {\n      bodies: [],\n      objectBodies: [],\n    },\n  );\n\n  classifed.objectBodies = classifed.objectBodies.sort((l, r) => l.order - r.order);\n\n  for (const field of classifed.bodies) {\n    bodies.push(getBodyField(thisFrame, field));\n  }\n\n  for (const field of classifed.objectBodies) {\n    objectBodies.push(getObjectBodyField(thisFrame, field));\n  }\n\n  // ------------------------------------------------------------------------------------\n  // merge.recursive cannot merge primitive arrays, user-defined type arrays, or primitives\n  // directly. When objectBody receives any of these three forms, they must be handled\n  // separately. Primitives are always processed first.\n  // ------------------------------------------------------------------------------------\n  // primitive type array\n  const primitiveTypes = objectBodies.filter((item): item is SupportArrayType => isValidPrimitiveType(item));\n\n  if (primitiveTypes.length > 0) {\n    return atOrThrow(primitiveTypes, 0);\n  }\n\n  // ObjectBody supports only one array entry \u2014 all arrays are flattened and merged into one.\n  // Body, by contrast, separates arrays by field name so multiple arrays can coexist.\n  const customArrayTypes = objectBodies.filter((item): item is unknown[] => Array.isArray(item));\n  if (customArrayTypes.length > 0) {\n    return customArrayTypes.reduce<unknown[]>((merged, item) => [...merged, ...item], []);\n  }\n  // ------------------------------------------------------------------------------------\n\n  return recursive(...bodies, ...objectBodies) as Record<string, unknown>;\n  // return recursive(bodies) as Record<string, unknown>;\n}\n", "export function bitwised(values: number[]): number {\n  return values.reduce((bitwise, value) => bitwise | value, 0); // eslint-disable-line no-bitwise\n}\n", "export function encode(enable: boolean | undefined | null, value: string | number): string {\n  if (enable != null && enable) {\n    return encodeURIComponent(value);\n  }\n\n  if (typeof value === 'number') {\n    return `${value}`;\n  }\n\n  return value;\n}\n", "export function stringifyExceptString(value: unknown): string {\n  if (typeof value === 'string') {\n    return value;\n  }\n\n  if (value instanceof Date) {\n    return value.toISOString();\n  }\n\n  return JSON.stringify(value);\n}\n", "import { encode } from '#tools/encodes/encode';\nimport { stringifyExceptString } from '#tools/formatters/stringifyExceptString';\n\nexport function stringifyQuerystring(\n  values: unknown,\n  option?: { comma?: boolean; encode?: boolean },\n): string | string[] {\n  if (!Array.isArray(values)) {\n    return encode(option?.encode, stringifyExceptString(values));\n  }\n\n  if (option?.comma != null && option.comma) {\n    return values.map((value) => encode(option?.encode, stringifyExceptString(value))).join(',');\n  }\n\n  return values.map((value) => encode(option?.encode, stringifyExceptString(value)));\n}\n", "export function isValidNumberArray(value: unknown): value is number[] {\n  if (Array.isArray(value)) {\n    return value.every((item: unknown) => typeof item === 'number');\n  }\n\n  return false;\n}\n", "import type { HeaderFieldOption } from '#interfaces/field/HeaderFieldOption';\nimport type { ParamFieldOption } from '#interfaces/field/ParamFieldOption';\nimport type { QueryFieldOption } from '#interfaces/field/QueryFieldOption';\nimport type { CookieFieldOption } from '#interfaces/field/CookieFieldOption';\nimport { bitwised } from '#tools/bitwised';\nimport { encode } from '#tools/encodes/encode';\nimport { formatEach } from '#tools/formatters/formatEach';\nimport { stringifyExceptString } from '#tools/formatters/stringifyExceptString';\nimport { stringifyQuerystring } from '#tools/formatters/stringifyQuerystring';\nimport { isValidArrayType } from '#tools/type-narrowing/isValidArrayType';\nimport { isValidNumberArray } from '#tools/type-narrowing/isValidNumberArray';\nimport { isValidPrimitiveWithDateType } from '#tools/type-narrowing/isValidPrimitiveWithDateType';\nimport * as dotProp from 'dot-prop';\n\nexport function getQuerystringMap<T extends Record<string, unknown>>(\n  thisFrame: T,\n  fields: (QueryFieldOption | ParamFieldOption | HeaderFieldOption | CookieFieldOption)[],\n): Record<string, string | string[]> {\n  const queries: Record<string, string | string[]> = {};\n\n  for (const option of fields) {\n    const thisFrameAccessKey = option.key;\n    const value: unknown = dotProp.get<unknown>(thisFrame, thisFrameAccessKey);\n    const fieldKey = option.replaceAt ?? thisFrameAccessKey;\n    const { formatters } = option;\n\n    if (!isValidPrimitiveWithDateType(value) && !isValidArrayType(value)) {\n      // stage 01. complex type and object type\n      queries[fieldKey] = encode(option.encode, stringifyExceptString(value));\n    } else if (option.bit.enable && Array.isArray(value) && isValidNumberArray(value)) {\n      // stage 02. bit-wised operator processing\n      const bitwisedValue = bitwised(value);\n\n      if (option.bit.withZero || bitwisedValue !== 0) {\n        queries[fieldKey] = encode(option.encode, bitwisedValue);\n      }\n    } else if (formatters != null) {\n      // stage 03. apply formatter\n      const formatteds = formatEach(value, formatters);\n      const stringified = stringifyQuerystring(formatteds, option);\n      queries[fieldKey] = stringified;\n    } else {\n      // stage 04. comma seperation processing\n      const stringified = stringifyQuerystring(value, option);\n      queries[fieldKey] = stringified;\n    }\n  }\n\n  return queries;\n}\n", "export function startWithSlash(value: string): string {\n  return value.startsWith('/') ? value : `/${value}`;\n}\n", "import { JinFile } from '#frames/JinFile';\nimport { defaultJinFrameTimeout } from '#frames/defaultJinFrameTimeout';\nimport type { JinFrameCreateConfig } from '#interfaces/options/JinFrameCreateConfig';\nimport type { JinFrameRequestConfig } from '#interfaces/options/JinFrameRequestConfig';\nimport { getBodyMap } from '#processors/getBodyMap';\nimport { getQuerystringMap } from '#processors/getQuerystringMap';\nimport { startWithSlash } from '#tools/slash-utils/startWithSlash';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\nimport type { FrameInternal } from '#interfaces/options/FrameInternal';\nimport { atOrUndefined, first, isError } from 'my-easy-fp';\nimport { parseTemplate } from 'url-template';\nimport type { Constructor } from 'type-fest';\nimport { flatStringMap } from '#processors/flatStringMap';\nimport { getUrl } from '#tools/slash-utils/getUrl';\nimport { getRequestMeta } from '#decorators/methods/handlers/getRequestMeta';\nimport { getFieldMetadata } from '#decorators/fields/handlers/getFieldMetadata';\nimport { getRetryInterval } from '#tools/responses/getRetryInterval';\nimport { getDuration } from '#tools/getDuration';\nimport { getFrameInternalData } from '#decorators/getFrameInternalData';\nimport type { ConstructorFunction } from '#tools/type-utilities/ConstructorFunction';\nimport type { PublicFieldsOf } from '#tools/type-utilities/FieldsOf';\nimport type { BuilderFor } from '#tools/type-utilities/BuilderFor';\nimport type { WithDefaultValues } from '#tools/type-utilities/WithDefaultValues';\nimport type { WithBuilder } from '#tools/type-utilities/WithBuilder';\nimport { getAuthorization } from '#tools/auth/getAuthorization';\nimport { getQuerystringKeyFormat } from '#processors/getQuerystringKeyFormat';\nimport { getQuerystringKey } from '#processors/getQuerystringKey';\nimport { getRetryAfter } from '#tools/getRetryAfter';\nimport { getCachePath } from '#tools/getCachePath';\nimport { get, set } from 'dot-prop';\nimport { safeStringify } from '#tools/json/safeStringify';\nimport { runAndUnwrap } from '#tools/runAndUnwrap';\nimport { RequestDedupeManager } from '#frames/RequestDedupeManager';\nimport { sleep } from '#tools/sleep';\nimport type { DedupeResult } from '#interfaces/DedupeResult';\nimport 'reflect-metadata';\nimport { getUrlValue } from '#tools/getUrlValue';\nimport type { JinRequestConfig } from '#interfaces/JinRequestConfig';\n\nexport abstract class AbstractJinFrame {\n  static getEndpoint(): URL {\n    const meta = getRequestMeta(this);\n    const urlMeta = getUrl(getUrlValue(meta.option.host), getUrlValue(meta.option.path));\n    return urlMeta.url;\n  }\n\n  protected static getDefaultValues(): Partial<PublicFieldsOf<InstanceType<typeof this>>> {\n    return {};\n  }\n\n  static builder<C extends ConstructorFunction<unknown>>(\n    this: C,\n    ...ctorArgs: ConstructorParameters<C>\n  ): BuilderFor<C> {\n    type Fields = PublicFieldsOf<InstanceType<C>>;\n\n    const store: Partial<Fields> = {};\n    const self = this;\n\n    const api = {\n      set<K extends keyof Fields>(k: K, v: Fields[K]) {\n        (store as Record<keyof Fields, Fields[keyof Fields]>)[k] = v;\n        return api as unknown as BuilderFor<C, K>;\n      },\n      from<V extends Partial<Fields>>(v: V) {\n        for (const [k, e] of Object.entries(v)) {\n          (store as Record<string, unknown>)[k] = e;\n        }\n        return api as unknown as BuilderFor<C, keyof V & keyof Fields>;\n      },\n      auto() {\n        Object.assign(store, (self as unknown as WithDefaultValues<C>).getDefaultValues?.());\n        return api as unknown as BuilderFor<C, keyof Fields>;\n      },\n      get() {\n        return store;\n      },\n      build() {\n        // eslint-disable-next-line new-cap\n        const inst = new self(...ctorArgs) as InstanceType<C>;\n        const defaults = (self as unknown as WithDefaultValues<C>).getDefaultValues?.();\n        Object.assign(inst as object, defaults, store);\n        return inst;\n      },\n    } as unknown as BuilderFor<C>;\n\n    return api;\n  }\n\n  static of<C extends ConstructorFunction<unknown>>(\n    this: C,\n    args: PublicFieldsOf<InstanceType<C>> | ((b: BuilderFor<C>) => unknown),\n    ...ctorArgs: ConstructorParameters<C>\n  ): InstanceType<C> {\n    const defaults = (this as unknown as WithDefaultValues<C>).getDefaultValues?.();\n\n    if (typeof args === 'function') {\n      const b = (this as unknown as WithBuilder<C>).builder(...ctorArgs);\n      args(b);\n      const built = b.get();\n      const inst = new this(...ctorArgs) as InstanceType<C>;\n      Object.assign(inst as object, defaults, built);\n      return inst;\n    }\n\n    const inst = new this(...ctorArgs) as InstanceType<C>;\n    Object.assign(inst as object, defaults, args);\n    return inst;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  protected _retryFail(_req: JinRequestConfig, _res: Response): void | Promise<void> {}\n\n  // eslint-disable-next-line class-methods-use-this\n  protected _retryException(_req: JinRequestConfig, _err: Error): void | Promise<void> {}\n\n  #option: FrameOption;\n\n  #data: FrameInternal;\n\n  protected get _startAt(): Date {\n    return this.#data.startAt;\n  }\n\n  protected get _option(): FrameOption {\n    return this.#option;\n  }\n\n  constructor() {\n    const fromDecorator = getRequestMeta(this.constructor as Constructor<unknown>);\n\n    this.#option = { ...fromDecorator.option };\n    this.#data = getFrameInternalData(this.#option);\n  }\n\n  public _getData<K extends keyof Pick<FrameInternal, 'body' | 'param' | 'query' | 'header' | 'retry'>>(\n    kind: K,\n  ): Pick<FrameInternal, 'body' | 'param' | 'query' | 'header' | 'retry'>[K] {\n    return this.#data[kind];\n  }\n\n  protected _setData<K extends keyof Pick<FrameInternal, 'retry'>>(kind: K, value: FrameInternal[K]): void {\n    this.#data[kind] = value;\n  }\n\n  public _getOption<K extends keyof FrameOption>(kind: K): FrameOption[K] {\n    return this.#option[kind];\n  }\n\n  public _setFields(args: typeof this): void {\n    for (const key of Object.keys(args) as (keyof typeof this)[]) {\n      this[key] = args[key];\n    }\n  }\n\n  public _getBodyInit(bodies: unknown): BodyInit | undefined {\n    if (this.#option.contentType === 'application/x-www-form-urlencoded') {\n      if (typeof bodies !== 'object' || bodies == null) {\n        return undefined;\n      }\n\n      const params = new URLSearchParams();\n\n      Object.entries(bodies as Record<string, unknown>)\n        .filter((entry): entry is [string, string] => atOrUndefined(entry, 1) != null)\n        .forEach(([key, value]) => params.append(key, value));\n\n      return params.toString();\n    }\n\n    if (\n      this.#option.contentType === 'multipart/form-data' &&\n      (this.#option.method === 'post' ||\n        this.#option.method === 'POST' ||\n        this.#option.method === 'put' ||\n        this.#option.method === 'PUT' ||\n        this.#option.method === 'patch' ||\n        this.#option.method === 'PATCH') &&\n      typeof bodies === 'object' &&\n      bodies != null\n    ) {\n      const formData = new FormData();\n\n      Object.entries(bodies).forEach(([key, value]) => {\n        if (Array.isArray(value) && first(value) instanceof JinFile) {\n          value.forEach((jinFile: JinFile) => {\n            const fileData = jinFile.file instanceof Buffer ? new Blob([jinFile.file]) : jinFile.file;\n            formData.append(key, fileData, jinFile.name);\n          });\n        } else if (value instanceof JinFile) {\n          const fileData = value.file instanceof Buffer ? new Blob([value.file]) : value.file;\n          formData.append(key, fileData, value.name);\n        } else if (typeof value === 'string') {\n          formData.append(key, value);\n        } else if (typeof value === 'number') {\n          formData.append(key, `${value}`);\n        } else if (typeof value === 'boolean') {\n          formData.append(key, value.toString());\n        } else if (typeof value === 'object') {\n          formData.append(key, JSON.stringify(value));\n        } else {\n          throw new Error(\n            `Invalid data type: ${typeof value}/ ${JSON.stringify(\n              value,\n            )}, only support JinFile, string, number, boolean, object type`,\n          );\n        }\n      });\n\n      return formData;\n    }\n\n    if (bodies == null) {\n      return undefined;\n    }\n\n    return JSON.stringify(bodies);\n  }\n\n  public _getCacheKey(): string | undefined {\n    const entries = Object.entries(this).map(([key, value]) => ({ key, value }));\n\n    // stage 01. extract request parameter and option\n    const fields = getFieldMetadata(this.constructor.prototype, entries);\n    const data: Record<'query' | 'param' | 'header' | 'body' | 'cookie', unknown> = {\n      query: {},\n      param: {},\n      header: {},\n      body: {},\n      cookie: {},\n    };\n\n    [...fields.query, ...fields.param, ...fields.header, ...fields.cookie]\n      .filter((input) => !input.cacheKeyExclude)\n      .forEach((input) => {\n        const value = get(this, input.key);\n        set(data, getCachePath({ ...input }), value);\n      });\n\n    // Order is important. Caution about body field overwrite by objectBody value.\n    [...fields.objectBody, ...fields.body].forEach((input) => {\n      const value = get(this, input.key);\n      set(data, getCachePath({ ...input }), value);\n\n      input?.cacheKeyExcludePaths?.forEach((cacheKeyExcludePathItem) => {\n        set(data, ['body', cacheKeyExcludePathItem].join('.'), undefined);\n      });\n    });\n\n    set(data, 'endpoint.host', this.#option.host);\n    set(data, 'endpoint.pathPrefix', this.#option.pathPrefix);\n    set(data, 'endpoint.path', this.#option.path);\n\n    return safeStringify(data);\n  }\n\n  public _getBaseUrlString(\n    paths: Record<string, string>,\n    override?: { host?: string; pathPrefix?: string; path?: string },\n  ): string {\n    const host = override?.host ?? getUrlValue(this.#option.host);\n    const pathPrefix = override?.pathPrefix ?? getUrlValue(this.#option.pathPrefix);\n    const path = override?.path ?? getUrlValue(this.#option.path);\n\n    // Expand URI templates before creating URL object to avoid encoding\n    const expandedHost = host ? parseTemplate(host).expand(paths) : host;\n    const expandedPathPrefix = pathPrefix ? parseTemplate(pathPrefix).expand(paths) : pathPrefix;\n    const expandedPath = path ? parseTemplate(path).expand(paths) : path;\n\n    const urlMeta = getUrl(expandedHost, expandedPathPrefix, expandedPath);\n    return urlMeta.isOnlyPath ? urlMeta.str : urlMeta.url.href;\n  }\n\n  /**\n   * JinRequestConfig create using by class member variable.\n   *\n   * @param option same with JinRequestConfig, bug exclude some filed ignored\n   * @returns created JinRequestConfig\n   */\n  public _request(option?: JinFrameRequestConfig & JinFrameCreateConfig): JinRequestConfig {\n    const entries = Object.entries(this).map(([key, value]) => ({ key, value }));\n\n    // stage 01. extract request parameter and option\n    const fields = getFieldMetadata(this.constructor.prototype, entries);\n\n    // stage 02. each request parameter apply option\n    const queryMap = new Map(fields.query.map((query) => [query.key, query]));\n    const queries = getQuerystringMap(this as Record<string, unknown>, fields.query); // create querystring information\n    const headers = flatStringMap(getQuerystringMap(this as Record<string, unknown>, fields.header)); // create header information\n    const paths = flatStringMap(getQuerystringMap(this as Record<string, unknown>, fields.param)); // create param information\n    const cookieMap = flatStringMap(getQuerystringMap(this as Record<string, unknown>, fields.cookie)); // create cookie information\n    const bodies: unknown = (() => {\n      if (option?.customBody != null) {\n        return option.customBody;\n      }\n\n      if (this.#option.customBody != null) {\n        return this.#option.customBody;\n      }\n\n      if (fields.body.length + fields.objectBody.length <= 0) {\n        return undefined;\n      }\n\n      return getBodyMap(this as Record<string, unknown>, [...fields.body, ...fields.objectBody]);\n    })();\n\n    // stage 04. set debuggint variable\n    this.#data.query = queries;\n    this.#data.body = bodies;\n    this.#data.header = headers;\n    this.#data.param = paths;\n\n    // stage 05. url endpoint build and path parameter evaluation\n    const baseUrlString =\n      option?.url ??\n      this._getBaseUrlString(paths, { host: option?.host, pathPrefix: option?.pathPrefix, path: option?.path });\n\n    // Expand URI template for option.url case\n    const expandedUrlString = option?.url != null ? parseTemplate(baseUrlString).expand(paths) : baseUrlString;\n    const { url, isOnlyPath } = getUrl(expandedUrlString);\n\n    // stage 07. querystring post processing\n    Object.entries(queries).forEach(([key, value]) => {\n      const queryOption = queryMap.get(key);\n      const keyFormat = getQuerystringKeyFormat(queryOption);\n\n      if (Array.isArray(value)) {\n        value.forEach((val, index) => {\n          const formatted = getQuerystringKey({ key, index, format: keyFormat });\n          url.searchParams.append(formatted, val);\n        });\n      } else {\n        url.searchParams.set(key, value);\n      }\n    });\n\n    // If set user-agent configuration using on browser environment, sometimes browser not sent request\n    // because security configuration. So remove user-agent configuration. But user can set this option,\n    // not work this code block.\n    if (option?.userAgent != null) {\n      headers['User-Agent'] = option.userAgent;\n    }\n\n    const { authKey, auth, securityHeaders, securityQueries } = getAuthorization(\n      headers,\n      this.#option,\n      option?.auth,\n      option?.dynamicAuth,\n    );\n\n    // For multipart/form-data, omit Content-Type so fetch can auto-generate it with the boundary\n    if (this.#option.contentType !== 'multipart/form-data') {\n      headers['Content-Type'] = this.#option.contentType;\n    }\n\n    // Serialize @Cookie fields as Cookie header (name=value; name2=value2)\n    const cookieEntries = Object.entries(cookieMap);\n    if (cookieEntries.length > 0) {\n      headers.Cookie = cookieEntries.map(([k, v]) => `${k}=${v}`).join('; ');\n    }\n\n    if (authKey != null) {\n      headers.Authorization = authKey;\n    }\n\n    if (auth != null) {\n      const encoded = btoa(`${auth.username}:${auth.password}`);\n      headers.Authorization = `Basic ${encoded}`;\n    }\n\n    // Apply security provider query parameters\n    if (securityQueries != null) {\n      Object.entries(securityQueries).forEach(([key, value]) => {\n        url.searchParams.append(key, value);\n      });\n    }\n\n    // Apply security provider headers (includes Authorization, Cookie, etc.)\n    if (securityHeaders != null) {\n      Object.assign(headers, securityHeaders);\n    }\n\n    const timeout = option?.timeout ?? this.#option.timeout ?? defaultJinFrameTimeout;\n    const body = this._getBodyInit(bodies);\n\n    const targetUrl = isOnlyPath ? `${startWithSlash(url.pathname)}${url.search}` : url.href;\n    const req: JinRequestConfig = {\n      url: targetUrl,\n      method: this.#option.method,\n      headers,\n      body,\n      timeout,\n      signal: option?.signal,\n    };\n\n    return req;\n  }\n\n  async _retry(\n    req: JinRequestConfig,\n    isValidateStatus: (ok: boolean, status: number) => boolean,\n  ): Promise<DedupeResult> {\n    const { retry } = this.#data;\n\n    const handle = async () => {\n      let returnValue: DedupeResult | Error = new Error();\n\n      /* eslint-disable no-await-in-loop, no-restricted-syntax */\n      for (let i = 0; i < retry.max; i += 1) {\n        try {\n          retry.try += 1;\n\n          const timeoutSignal = req.timeout != null ? AbortSignal.timeout(req.timeout) : undefined;\n          const signal =\n            req.signal != null && timeoutSignal != null\n              ? AbortSignal.any([req.signal, timeoutSignal])\n              : (req.signal ?? timeoutSignal);\n          const fetchReq = new Request(req.url, {\n            method: req.method,\n            headers: req.headers,\n            body: req.body,\n            signal,\n          });\n\n          const cacheKey = this.#option.dedupe ? this._getCacheKey() : undefined;\n          const promised =\n            cacheKey != null\n              ? // eslint-disable-next-line @typescript-eslint/promise-function-async\n                RequestDedupeManager.dedupe(cacheKey, () => fetch(fetchReq))\n              : (async () => ({ resp: await fetch(fetchReq), isDeduped: false }))();\n\n          const deduped = await promised;\n          const { resp } = deduped;\n          const retryAfterValue = resp.headers.get('retry-after') ?? resp.headers.get('Retry-After');\n          const retryAfter = getRetryAfter(retry, retryAfterValue ?? undefined);\n\n          returnValue = deduped;\n\n          if (isValidateStatus(resp.ok, resp.status)) {\n            return deduped;\n          }\n\n          await runAndUnwrap(this._retryFail.bind(this), req, resp.clone());\n\n          const current = new Date();\n          const interval = getRetryInterval(\n            retry,\n            getDuration(this.#data.startAt, current),\n            getDuration(this.#data.eachStartAt, current),\n            retryAfter,\n          );\n\n          await sleep(interval);\n        } catch (err) {\n          returnValue = isError(err, new Error('unknown error raised'));\n\n          await runAndUnwrap(this._retryException.bind(this), req, returnValue);\n\n          const current = new Date();\n          const interval = getRetryInterval(\n            retry,\n            getDuration(this.#data.startAt, current),\n            getDuration(this.#data.eachStartAt, current),\n            undefined,\n          );\n\n          await sleep(interval);\n        }\n      }\n      /* eslint-enable no-await-in-loop, no-restricted-syntax */\n\n      // Return Value\n      if (returnValue instanceof Error) {\n        throw returnValue;\n      }\n\n      return returnValue;\n    };\n\n    const retried = await handle();\n\n    return retried;\n  }\n}\n", "function encodeReserved(str) {\n  return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n    if (!/%[0-9A-Fa-f]/.test(part)) {\n      part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']');\n    }\n    return part;\n  }).join('');\n}\n\nfunction encodeUnreserved(str) {\n  return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n  });\n}\n\nfunction encodeValue(operator, value, key) {\n  value = (operator === '+' || operator === '#') ? encodeReserved(value) : encodeUnreserved(value);\n\n  if (key) {\n    return encodeUnreserved(key) + '=' + value;\n  } else {\n    return value;\n  }\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null;\n}\n\nfunction isKeyOperator(operator) {\n  return operator === ';' || operator === '&' || operator === '?';\n}\n\nfunction getValues(context, operator, key, modifier) {\n  var value = context[key],\n      result = [];\n\n  if (isDefined(value) && value !== '') {\n    if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n      value = value.toString();\n\n      if (modifier && modifier !== '*') {\n        value = value.substring(0, parseInt(modifier, 10));\n      }\n\n      result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n    } else {\n      if (modifier === '*') {\n        if (Array.isArray(value)) {\n          value.filter(isDefined).forEach(function (value) {\n            result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n          });\n        } else {\n          Object.keys(value).forEach(function (k) {\n            if (isDefined(value[k])) {\n              result.push(encodeValue(operator, value[k], k));\n            }\n          });\n        }\n      } else {\n        var tmp = [];\n\n        if (Array.isArray(value)) {\n          value.filter(isDefined).forEach(function (value) {\n            tmp.push(encodeValue(operator, value));\n          });\n        } else {\n          Object.keys(value).forEach(function (k) {\n            if (isDefined(value[k])) {\n              tmp.push(encodeUnreserved(k));\n              tmp.push(encodeValue(operator, value[k].toString()));\n            }\n          });\n        }\n\n        if (isKeyOperator(operator)) {\n          result.push(encodeUnreserved(key) + '=' + tmp.join(','));\n        } else if (tmp.length !== 0) {\n          result.push(tmp.join(','));\n        }\n      }\n    }\n  } else {\n    if (operator === ';') {\n      if (isDefined(value)) {\n        result.push(encodeUnreserved(key));\n      }\n    } else if (value === '' && (operator === '&' || operator === '?')) {\n      result.push(encodeUnreserved(key) + '=');\n    } else if (value === '') {\n      result.push('');\n    }\n  }\n  return result;\n}\n\nexport function parseTemplate(template) {\n  var operators = ['+', '#', '.', '/', ';', '?', '&'];\n\n  return {\n    expand: function (context) {\n      return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n        if (expression) {\n          var operator = null,\n              values = [];\n\n          if (operators.indexOf(expression.charAt(0)) !== -1) {\n            operator = expression.charAt(0);\n            expression = expression.substr(1);\n          }\n\n          expression.split(/,/g).forEach(function (variable) {\n            var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n            values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n          });\n\n          if (operator && operator !== '+') {\n            var separator = ',';\n\n            if (operator === '?') {\n              separator = '&';\n            } else if (operator !== '#') {\n              separator = operator;\n            }\n            return (values.length !== 0 ? operator : '') + values.join(separator);\n          } else {\n            return values.join(',');\n          }\n        } else {\n          return encodeReserved(literal);\n        }\n      });\n    }\n  };\n}\n", "import { stringifyExceptString } from '#tools/formatters/stringifyExceptString';\n\nexport function flatStringMap(map: Record<string, string | string[]>): Record<string, string> {\n  return Object.keys(map).reduce<Record<string, string>>((aggregated, key) => {\n    const values = map[key];\n\n    if (values != null && Array.isArray(values)) {\n      return { ...aggregated, [key]: values.map((value) => stringifyExceptString(value)).join(',') };\n    }\n\n    if (values != null) {\n      return { ...aggregated, [key]: values };\n    }\n\n    return aggregated;\n  }, {});\n}\n", "export function removeEndSlash(value: string): string {\n  return value.endsWith('/') ? value.slice(0, value.length - 1) : value;\n}\n", "export function removeStartSlash(value: string): string {\n  return value.startsWith('/') ? value.slice(1, value.length) : value;\n}\n", "import { removeEndSlash } from '#tools/slash-utils/removeEndSlash';\nimport { removeStartSlash } from '#tools/slash-utils/removeStartSlash';\n\nexport function removeBothSlash(value: string): string {\n  return removeStartSlash(removeEndSlash(value));\n}\n", "import { removeBothSlash } from '#tools/slash-utils/removeBothSlash';\n\n// 1) protocol + hostname[:port] + path (RFC 3986 scheme, path value is case-sensitive)\nconst pattern1 = /^([A-Za-z][A-Za-z0-9+.-]*:\\/\\/)([A-Za-z0-9.-]+(:\\d+)?)(\\/.*)?$/i;\n\n// 2) hostname + path (hostname includes TLD, case-insensitive / path is case-sensitive)\nconst pattern2 = /^([A-Za-z0-9-]+\\.[A-Za-z]{2,})(\\/.*)?$/i;\n\n// 3) only path (case-sensitive)\nconst pattern3 = /^(\\/.*)$/;\n\nexport function getUrl(\n  host?: string,\n  pathPrefix?: string,\n  path?: string,\n): { url: URL; str: string; pathname: string; isOnlyPath: boolean } {\n  const withPathPrefix =\n    pathPrefix == null && path == null\n      ? undefined\n      : [pathPrefix ?? '', path ?? '']\n          .map((part) => part.trim())\n          .map((part) => removeBothSlash(part))\n          .join('/');\n  const concatted = [host ?? '', withPathPrefix ?? '']\n    .map((part) => part.trim())\n    .map((part) => removeBothSlash(part))\n    .join('/');\n  const str = concatted === '/' ? concatted : removeBothSlash(concatted);\n\n  // protocol + hostname + path\n  if (pattern1.test(str)) {\n    const url = new URL(str);\n    return { url, str, pathname: url.pathname, isOnlyPath: false };\n  }\n\n  // hostname + empty path\n  if (host != null && withPathPrefix == null && pattern2.test(str)) {\n    const url = new URL(`http://${str}`);\n    return { url, str, pathname: url.pathname, isOnlyPath: false };\n  }\n\n  // path\n  if (host == null && withPathPrefix != null && pattern3.test(`/${str}`)) {\n    const url = new URL(`http://localhost/${str}`);\n    return { url, str, pathname: url.pathname, isOnlyPath: true };\n  }\n\n  if (str === '/') {\n    const url = new URL('http://localhost');\n    return { url, str, pathname: url.pathname, isOnlyPath: true };\n  }\n\n  // path\n  const url = new URL(`http://localhost/${str}`);\n  return { url, str, pathname: url.pathname, isOnlyPath: true };\n}\n", "export const REQUEST_METHOD_DECORATOR = Symbol('jinframe:class-request-method-decorator');\n", "export const REQUEST_RETRY_DECORATOR = Symbol('jinframe:class-request-retry-decorator');\n", "export const REQUEST_TIMEOUT_DECORATOR = Symbol('jinframe:class-request-timeout-decorator');\n", "export const REQUEST_VALIDATOR_DECORATOR = Symbol('jinframe:class-request-validator-decorator');\n", "export const REQUEST_DEDUPE_DECORATOR = Symbol('jinframe:class-request-dedupe-decorator');\n", "export const REQUEST_AUTHORIZATION_DECORATOR = Symbol('jinframe:class-request-authorization-decorator');\n", "export const REQUEST_SECURITY_DECORATOR = Symbol('jinframe:class-request-security-decorator');\n", "import { REQUEST_METHOD_DECORATOR } from '#decorators/methods/handlers/REQUEST_METHOD_DECORATOR';\nimport { REQUEST_RETRY_DECORATOR } from '#decorators/methods/handlers/REQUEST_RETRY_DECORATOR';\nimport { REQUEST_TIMEOUT_DECORATOR } from '#decorators/methods/handlers/REQUEST_TIMEOUT_DECORATOR';\nimport { REQUEST_VALIDATOR_DECORATOR } from '#decorators/methods/handlers/REQUEST_VALIDATOR_DECORATOR';\nimport { REQUEST_DEDUPE_DECORATOR } from '#decorators/methods/handlers/REQUEST_DEDUPE_DECORATOR';\nimport { REQUEST_AUTHORIZATION_DECORATOR } from '#decorators/methods/handlers/REQUEST_AUTHORIZATION_DECORATOR';\nimport { REQUEST_SECURITY_DECORATOR } from '#decorators/methods/handlers/REQUEST_SECURITY_DECORATOR';\nimport type { MethodEntry } from '#interfaces/options/MethodEntry';\nimport type { AbstractConstructor, Constructor } from 'type-fest';\nimport type { FrameRetry } from '#interfaces/options/FrameRetry';\nimport type { BaseValidator } from '#validators/BaseValidator';\nimport type { Milliseconds } from '#interfaces/options/Milliseconds';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\nimport 'reflect-metadata';\n\nexport function getAllRequestMetaInherited(ctor: AbstractConstructor<unknown> | Constructor<unknown>): {\n  methods: readonly MethodEntry[];\n  retries: readonly FrameRetry[];\n  timeouts: readonly Milliseconds[];\n  validators: readonly { pass?: BaseValidator; fail?: BaseValidator }[];\n  dedupes: readonly boolean[];\n  authorizations: readonly FrameOption['authorization'][];\n  securities: readonly FrameOption['security'][];\n} {\n  const methods: MethodEntry[] = [];\n  const retries: FrameRetry[] = [];\n  const timeouts: Milliseconds[] = [];\n  const validators: { pass?: BaseValidator; fail?: BaseValidator }[] = [];\n  const dedupes: boolean[] = [];\n  const authorizations: FrameOption['authorization'][] = [];\n  const securities: FrameOption['security'][] = [];\n\n  // eslint-disable-next-line no-restricted-syntax\n  for (\n    let c: AbstractConstructor<unknown> | Constructor<unknown> = ctor;\n    typeof c === 'function';\n    c = Object.getPrototypeOf(c)\n  ) {\n    const method = (Reflect.getOwnMetadata(REQUEST_METHOD_DECORATOR, c) as MethodEntry[] | undefined) ?? [];\n    const retry = (Reflect.getOwnMetadata(REQUEST_RETRY_DECORATOR, c) as FrameRetry[] | undefined) ?? [];\n    const timeout = (Reflect.getOwnMetadata(REQUEST_TIMEOUT_DECORATOR, c) as Milliseconds[] | undefined) ?? [];\n    const validator =\n      (Reflect.getOwnMetadata(REQUEST_VALIDATOR_DECORATOR, c) as\n        | { pass?: BaseValidator; fail?: BaseValidator }[]\n        | undefined) ?? [];\n    const dedupe = (Reflect.getOwnMetadata(REQUEST_DEDUPE_DECORATOR, c) as boolean[] | undefined) ?? [];\n    const authorization =\n      (Reflect.getOwnMetadata(REQUEST_AUTHORIZATION_DECORATOR, c) as FrameOption['authorization'][] | undefined) ?? [];\n    const security =\n      (Reflect.getOwnMetadata(REQUEST_SECURITY_DECORATOR, c) as FrameOption['security'][] | undefined) ?? [];\n\n    methods.push(...method);\n    retries.push(...retry);\n    timeouts.push(...timeout);\n    validators.push(...validator);\n    dedupes.push(...dedupe);\n    authorizations.push(...authorization);\n    securities.push(...security);\n  }\n\n  return { methods, retries, timeouts, validators, dedupes, authorizations, securities };\n}\n", "import type { FrameOption } from '#interfaces/options/FrameOption';\n\nexport function setFrameOption<K extends keyof FrameOption>(target: FrameOption, key: K, value: unknown): void {\n  const forReAssign = target;\n\n  if (value != null) {\n    forReAssign[key] = value as FrameOption[K];\n  }\n}\n", "import { setFrameOption } from '#tools/setFrameOption';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\n\nexport function mergeFrameOption(prev: FrameOption, next: FrameOption): FrameOption {\n  const merged: FrameOption = { ...prev };\n\n  for (const key of Object.keys(next) as (keyof FrameOption)[]) {\n    setFrameOption(merged, key, next[key]);\n  }\n\n  return merged;\n}\n", "import type { FrameRetry } from '#interfaces/options/FrameRetry';\n\nexport function mergeRetryOption(prev: FrameRetry, next: FrameRetry): FrameRetry {\n  return {\n    ...prev,\n    ...(next.max != null && { max: next.max }),\n    ...(next.interval != null && { interval: next.interval }),\n    ...(next.useRetryAfter != null && { useRetryAfter: next.useRetryAfter }),\n    ...(next.getInterval != null && { getInterval: next.getInterval }),\n  };\n}\n", "import { getAllRequestMetaInherited } from '#decorators/methods/handlers/getAllMethodMetaInherited';\nimport type { AbstractConstructor, Constructor } from 'type-fest';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\nimport type { MethodEntry } from '#interfaces/options/MethodEntry';\nimport type { FrameRetry } from '#interfaces/options/FrameRetry';\nimport { mergeFrameOption } from '#tools/mergeFrameOption';\nimport { mergeRetryOption } from '#tools/mergeRetryOption';\n\n/**\n * Resolves and merges all method decorator metadata for a class constructor,\n * walking the inheritance chain. When a parent and child both apply a decorator,\n * the parent receives a higher index \u2014 child metadata takes precedence.\n *\n * @example\n * ```typescript\n * @Delete({ host: 'i-am-host' })\n * class ParentFrame {}\n *\n * @Get({ host: 'i-am-host' })\n * class ChildFrame extends ParentFrame {}\n * // ParentFrame \u2192 index 01, ChildFrame \u2192 index 00\n * ```\n *\n * @param ctor Constructor function\n */\nexport function getRequestMeta(ctor: AbstractConstructor<unknown> | Constructor<unknown>): MethodEntry {\n  const metas = getAllRequestMetaInherited(ctor);\n\n  // reverse meta data for recursive merge\n  const methods = [...metas.methods].reverse();\n  const retries = [...metas.retries].reverse();\n  const timeouts = [...metas.timeouts].reverse();\n  const validators = [...metas.validators].reverse();\n  const dedupes = [...metas.dedupes].reverse();\n  const authorizations = [...metas.authorizations].reverse();\n  const securities = [...metas.securities].reverse();\n\n  const mergedOption = methods.reduce<FrameOption>(\n    (merged, meta) => mergeFrameOption(merged, meta.option),\n    {} as FrameOption,\n  );\n\n  const mergedRetry = retries.reduce<FrameRetry | undefined>((merged, meta) => {\n    if (merged == null) {\n      return meta;\n    }\n\n    return mergeRetryOption(merged, meta);\n  }, undefined);\n\n  const mergedValidator = validators.at(-1);\n  const mergedTimeout = timeouts.at(-1);\n  const mergedDeduped = dedupes.at(-1);\n  const mergedAuthorization = authorizations.at(-1);\n  const mergedSecurity = securities.at(-1);\n\n  if (mergedRetry != null) {\n    mergedOption.retry = mergedRetry;\n  }\n\n  if (mergedTimeout != null) {\n    mergedOption.timeout = mergedTimeout;\n  }\n\n  if (mergedValidator != null) {\n    mergedOption.validators = mergedValidator;\n  }\n\n  if (mergedDeduped != null) {\n    mergedOption.dedupe = mergedDeduped;\n  }\n\n  if (mergedAuthorization != null) {\n    mergedOption.authorization = mergedAuthorization;\n  }\n\n  if (mergedSecurity != null) {\n    mergedOption.security = mergedSecurity;\n  }\n\n  if (Object.keys(mergedOption).length <= 0) {\n    throw new Error('You need to configure using method decorators such as Get, Post, Put, Delete, Patch, etc!');\n  }\n\n  return {\n    option: mergedOption,\n  };\n}\n", "export const REQUEST_FIELD_DECORATOR = Symbol('jinframe:class-request-field-decorator');\n", "import { REQUEST_FIELD_DECORATOR } from '#decorators/fields/handlers/REQUEST_FIELD_DECORATOR';\nimport type { QueryFieldOption } from '#interfaces/field/QueryFieldOption';\nimport type { ParamFieldOption } from '#interfaces/field/ParamFieldOption';\nimport type { ObjectBodyFieldOption } from '#interfaces/field/body/ObjectBodyFieldOption';\nimport type { HeaderFieldOption } from '#interfaces/field/HeaderFieldOption';\nimport type { BodyFieldOption } from '#interfaces/field/body/BodyFieldOption';\nimport type { CookieFieldOption } from '#interfaces/field/CookieFieldOption';\nimport 'reflect-metadata';\n\ninterface IRequestFieldRecord {\n  param: ParamFieldOption[];\n  query: QueryFieldOption[];\n  body: BodyFieldOption[];\n  objectBody: ObjectBodyFieldOption[];\n  header: HeaderFieldOption[];\n  cookie: CookieFieldOption[];\n}\n\ntype FieldEntry =\n  | { key: string; option: QueryFieldOption }\n  | { key: string; option: ParamFieldOption }\n  | { key: string; option: BodyFieldOption }\n  | { key: string; option: ObjectBodyFieldOption }\n  | { key: string; option: HeaderFieldOption }\n  | { key: string; option: CookieFieldOption };\n\nexport function getFieldMetadata(type: object, keys: { key: string; value: unknown }[]): IRequestFieldRecord {\n  const fields: { key: string; meta: FieldEntry }[] = [];\n\n  for (const key of keys) {\n    const raw = Reflect.getMetadata(REQUEST_FIELD_DECORATOR, type, key.key) as FieldEntry[] | undefined;\n\n    if (raw != null) {\n      for (const entry of raw) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        fields.push({ key: key.key, meta: { key: key.key, option: { ...(entry.option as any), key: key.key } } });\n      }\n    }\n  }\n\n  const fieldMap = fields.reduce<IRequestFieldRecord>(\n    (aggregate, field) => {\n      const { option } = field.meta;\n\n      switch (option.type) {\n        case 'body':\n          return { ...aggregate, body: [...aggregate.body, option] };\n        case 'object-body':\n          return { ...aggregate, objectBody: [...aggregate.objectBody, option] };\n        case 'param':\n          return { ...aggregate, param: [...aggregate.param, option] };\n        case 'header':\n          return { ...aggregate, header: [...aggregate.header, option] };\n        case 'cookie':\n          return { ...aggregate, cookie: [...aggregate.cookie, option] };\n        default:\n          return { ...aggregate, query: [...aggregate.query, option] };\n      }\n    },\n    {\n      param: [],\n      body: [],\n      objectBody: [],\n      header: [],\n      query: [],\n      cookie: [],\n    },\n  );\n\n  return fieldMap;\n}\n", "import type { FrameInternal } from '#interfaces/options/FrameInternal';\n\n/**\n * @param retry retry configuration from the internal data\n * @param totalDuration The total duration(ms) of all retries since the start of the API request\n * @param eachDuration duration(ms) of a single retry attempt\n * @param retryAfterSeconds Optional Retry-After header value in seconds (takes highest priority)\n */\nexport function getRetryInterval(\n  retry: NonNullable<FrameInternal['retry']>,\n  totalDuration: number,\n  eachDuration: number,\n  retryAfterSeconds?: number,\n): number {\n  const { getInterval, interval } = retry;\n\n  // Priority 1: Retry-After header from server (if useRetryAfter is true)\n  if (retryAfterSeconds != null) {\n    return retryAfterSeconds * 1000; // Convert seconds to milliseconds\n  }\n\n  // Priority 2: Custom getInterval function\n  if (getInterval != null) {\n    return getInterval(retry.try, totalDuration, eachDuration);\n  }\n\n  // Priority 3: Fixed interval\n  if (interval != null) {\n    return interval;\n  }\n\n  // Default fallback\n  return 1000;\n}\n", "/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n", "import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use constructor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   );\n * }\n */\nexport function constructFrom(date, value) {\n  if (typeof date === \"function\") return date(value);\n\n  if (date && typeof date === \"object\" && constructFromSymbol in date)\n    return date[constructFromSymbol](value);\n\n  if (date instanceof Date) return new date.constructor(value);\n\n  return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n  // [TODO] Get rid of `toDate` or `constructFrom`?\n  return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n *   new Date(2014, 6, 2, 12, 30, 21, 700),\n *   new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n  return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n", "// eslint-disable-next-line import-x/no-extraneous-dependencies\nimport { differenceInMilliseconds } from 'date-fns/differenceInMilliseconds';\n\n/**\n * getDuration only calculate milliseconds ~ days\n */\nexport function getDuration(start: Date, end: Date): number {\n  try {\n    const duration = differenceInMilliseconds(end, start);\n    return Number.isNaN(duration) ? -1 : duration;\n  } catch {\n    return -1;\n  }\n}\n", "import type { SecurityProvider } from '#interfaces/security/SecurityProvider';\nimport type { SecurityContext } from '#interfaces/security/SecurityContext';\nimport type { AuthorizationData } from '#interfaces/security/AuthorizationData';\n\n/**\n * Applies multiple security providers to generate a unified security context.\n *\n * This function processes an array of security providers sequentially, merging their\n * outputs into a single security context. Headers and query parameters are merged additively,\n * while auth configuration uses the last provider's value (last wins strategy).\n *\n * @param providers - Array of security providers to apply\n * @param authorization - Static authorization data configured at frame level\n * @param dynamicAuth - Runtime authorization data that overrides static configuration\n *\n * @returns Unified security context containing:\n * - `headers`: Merged HTTP headers from all providers\n * - `queries`: Merged query parameters from all providers\n * - `auth`: HTTP Basic auth configuration from the last provider that provided one\n *\n * @example\n * ```typescript\n * const providers = [apiKeyProvider, bearerTokenProvider];\n * const context = applySecurityProviders(\n *   providers,\n *   { apiKey: 'static-key' },\n *   { token: 'runtime-token' }\n * );\n *\n * // Returns merged context:\n * // {\n * //   headers: { 'X-API-Key': 'static-key', 'Authorization': 'Bearer runtime-token' },\n * //   queries: { ... },\n * //   auth: { ... } // from last provider\n * // }\n * ```\n */\nexport function applySecurityProviders(\n  providers: SecurityProvider[],\n  authorization?: AuthorizationData,\n  dynamicAuth?: AuthorizationData,\n): SecurityContext {\n  const context: SecurityContext = {\n    headers: {},\n    queries: {},\n  };\n\n  for (const provider of providers) {\n    const authData = dynamicAuth ?? authorization;\n    const providerContext = provider.createContext(authData, typeof dynamicAuth === 'string' ? dynamicAuth : undefined);\n\n    // Merge headers\n    if (providerContext.headers) {\n      context.headers = { ...context.headers, ...providerContext.headers };\n    }\n\n    // Merge queries\n    if (providerContext.queries) {\n      context.queries = { ...context.queries, ...providerContext.queries };\n    }\n\n    // Last provider wins for auth configuration\n    if (providerContext.auth) {\n      context.auth = providerContext.auth;\n    }\n  }\n\n  return context;\n}\n", "import { applySecurityProviders } from '#tools/auth/applySecurityProviders';\nimport type { AuthorizationData } from '#interfaces/security/AuthorizationData';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\nimport type { JinBasicAuth } from '#interfaces/JinBasicAuth';\n\n/**\n * Extracts and processes authorization information from various sources in priority order.\n *\n * The function follows this priority hierarchy:\n * 1. Authorization header from the headers parameter\n * 2. HTTP Basic auth configuration (username/password)\n * 3. Security providers\n *\n * @param headers - HTTP headers containing potential Authorization header\n * @param frameOption - Frame configuration options containing security and authorization settings\n * @param auth - Optional HTTP Basic auth configuration (username/password)\n * @param dynamicAuth - Optional dynamic authorization data for runtime security provider configuration\n *\n * @returns Authorization result object containing:\n * - `authKey`: Authorization token/key string (from header or security provider)\n * - `auth`: HTTP Basic auth configuration object\n * - `securityHeaders`: Additional headers from security providers\n * - `securityQueries`: Query parameters from security providers\n *\n * @example\n * ```typescript\n * // Using Authorization header\n * const result = getAuthorization(\n *   { Authorization: 'Bearer token123' },\n *   frameOption\n * );\n * // Returns: { authKey: 'Bearer token123', auth: undefined }\n *\n * // Using Basic auth\n * const result = getAuthorization(\n *   {},\n *   frameOption,\n *   { username: 'user', password: 'pass' }\n * );\n * // Returns: { authKey: undefined, auth: { username: 'user', password: 'pass' } }\n *\n * // Using security providers\n * const result = getAuthorization(\n *   {},\n *   { security: [apiKeyProvider] },\n *   undefined,\n *   { apiKey: 'key123' }\n * );\n * // Returns: { authKey: undefined, auth: undefined, securityHeaders: {...}, securityQueries: {...} }\n * ```\n */\nexport function getAuthorization(\n  headers: Record<string, string>,\n  frameOption: Pick<FrameOption, 'security' | 'authorization'>,\n  auth?: JinBasicAuth,\n  dynamicAuth?: AuthorizationData,\n): {\n  authKey?: string;\n  auth?: JinBasicAuth;\n  securityHeaders?: Record<string, string>;\n  securityQueries?: Record<string, string>;\n} {\n  if (headers.Authorization != null) {\n    return { authKey: headers.Authorization, auth: undefined };\n  }\n\n  if (auth != null) {\n    return { authKey: undefined, auth };\n  }\n\n  // Handle SecurityProvider\n  if (frameOption.security != null) {\n    const providers = Array.isArray(frameOption.security) ? frameOption.security : [frameOption.security];\n    const securityContext = applySecurityProviders(providers, frameOption.authorization, dynamicAuth);\n\n    return {\n      authKey: securityContext.headers?.Authorization,\n      auth: securityContext.auth,\n      securityHeaders: securityContext.headers,\n      securityQueries: securityContext.queries,\n    };\n  }\n\n  return { authKey: undefined, auth: undefined };\n}\n", "import type { HeaderFieldOption } from '#interfaces/field/HeaderFieldOption';\nimport type { ParamFieldOption } from '#interfaces/field/ParamFieldOption';\nimport type { QueryFieldOption } from '#interfaces/field/QueryFieldOption';\n\nexport function getQuerystringKeyFormat(\n  option?: QueryFieldOption | ParamFieldOption | HeaderFieldOption,\n): QueryFieldOption['keyFormat'] {\n  if (option == null) {\n    return undefined;\n  }\n\n  if (option.type === 'query') {\n    return option.keyFormat;\n  }\n\n  return undefined;\n}\n", "import type { QueryFieldOption } from '#interfaces/field/QueryFieldOption';\n\nexport function getQuerystringKey({\n  key,\n  index,\n  format,\n}: {\n  key: string;\n  index: number;\n  format?: QueryFieldOption['keyFormat'];\n}): string {\n  if (format === 'brackets') {\n    return `${key}[]`;\n  }\n\n  if (format === 'indices') {\n    return `${key}[${index}]`;\n  }\n\n  if (format === 'one-indices') {\n    return `${key}[${index + 1}]`;\n  }\n\n  return key;\n}\n", "import type { FrameRetry } from '#interfaces/options/FrameRetry';\n\nexport function getRetryAfter(retry: FrameRetry, rawRetryAfter: string | string[] | undefined): number | undefined {\n  try {\n    const useRetryAfter = retry.useRetryAfter ?? true;\n\n    if (!useRetryAfter || rawRetryAfter == null) {\n      return undefined;\n    }\n\n    const retryAfter = Array.isArray(rawRetryAfter) ? rawRetryAfter.at(0) : rawRetryAfter;\n\n    if (retryAfter == null) {\n      return undefined;\n    }\n\n    const parsed = parseInt(retryAfter, 10);\n\n    if (Number.isNaN(parsed)) {\n      return undefined;\n    }\n\n    return parsed;\n  } catch {\n    return undefined;\n  }\n}\n", "import type { BodyFieldOption } from '#interfaces/field/body/BodyFieldOption';\nimport type { ObjectBodyFieldOption } from '#interfaces/field/body/ObjectBodyFieldOption';\nimport type { HeaderFieldOption } from '#interfaces/field/HeaderFieldOption';\nimport type { ParamFieldOption } from '#interfaces/field/ParamFieldOption';\nimport type { QueryFieldOption } from '#interfaces/field/QueryFieldOption';\nimport type { CookieFieldOption } from '#interfaces/field/CookieFieldOption';\n\ninterface IGetCachePathParams {\n  key: string;\n  type:\n    | QueryFieldOption['type']\n    | ParamFieldOption['type']\n    | HeaderFieldOption['type']\n    | BodyFieldOption['type']\n    | ObjectBodyFieldOption['type']\n    | CookieFieldOption['type'];\n  replaceAt?: string;\n}\n\nexport function getCachePath(params: IGetCachePathParams): string {\n  if (params.type === 'object-body') {\n    const cachePath = 'body';\n    return cachePath;\n  }\n\n  const key = params.replaceAt ?? params.key;\n  const cachePath = [params.type, key].join('.');\n  return cachePath;\n}\n", "export function safeStringify<T>(\n  value: T,\n  replacer?: (this: T, key: string, value: T) => T,\n  space?: string | number,\n): string | undefined {\n  try {\n    const parsed = JSON.stringify(value, replacer, space);\n    return parsed;\n  } catch {\n    return undefined;\n  }\n}\n", "/**\n * Runs a function and unwraps the result if it's a Promise\n * @param fn - Function to execute (can be sync or async)\n * @param args - Arguments to pass to the function (type-safe based on fn parameters)\n * @returns The unwrapped result\n */\nexport async function runAndUnwrap<TArgs extends readonly unknown[], TReturn>(\n  fn: (...args: TArgs) => TReturn | Promise<TReturn>,\n  ...args: TArgs\n): Promise<TReturn> {\n  const result = fn(...args);\n\n  // Check if result is a Promise\n  if (result instanceof Promise) {\n    return result;\n  }\n\n  return result;\n}\n", "import type { DedupeResult } from '#interfaces/DedupeResult';\n\ninterface BufferedResponse {\n  status: number;\n  statusText: string;\n  headers: Headers;\n  body: string;\n}\n\n/**\n * Manages request deduplication to prevent multiple identical HTTP requests\n * from being sent simultaneously. When multiple requests with the same cache key\n * are made, only the first request is actually sent, and all subsequent requests\n * receive the same response.\n *\n * The cache key is generated using the `getCacheKey()` method from JinFrame instances,\n * which creates a unique identifier based on the request parameters and configuration.\n */\nexport class RequestDedupeManager {\n  /** Store pending requests (key: cacheKey, value: Promise of buffered response) */\n  private static pendingRequests = new Map<string, Promise<BufferedResponse>>();\n\n  /**\n   * Deduplicates HTTP requests based on cache key. If a request with the same\n   * cache key is already in progress, returns the result of that request.\n   * Otherwise, executes the new request and stores it for potential deduplication.\n   *\n   * @template Pass - The expected response data type\n   * @param cacheKey - Unique identifier for the request used for deduplication (generated by JinFrame._getCacheKey())\n   * @param requesterFn - Function that performs the actual HTTP request\n   * @returns Promise resolving to DedupeResult containing the response and deduplication flag\n   *\n   * @example\n   * ```ts\n   * // Cache key is typically generated by JinFrame._getCacheKey()\n   * const frame = GetUserFrame.of({ id: '123' });\n   * const cacheKey = frame._getCacheKey();\n   *\n   * const result = await RequestDedupeManager.dedupe(\n   *   cacheKey,\n   *   () => fetch('/users/123')\n   * );\n   * console.log(result.isDeduped); // false for original request, true for duplicates\n   * ```\n   */\n  static async dedupe(cacheKey: string, requesterFn: () => Promise<Response>): Promise<DedupeResult> {\n    const existingPromise = this.pendingRequests.get(cacheKey);\n    if (existingPromise) {\n      const buffered = await existingPromise;\n      const resp = new Response(buffered.body, {\n        status: buffered.status,\n        statusText: buffered.statusText,\n        headers: buffered.headers,\n      });\n      return { resp, isDeduped: true };\n    }\n\n    // Buffer the response so multiple callers can each read the body independently\n    const promise = requesterFn()\n      .then(async (reply) => {\n        const body = await reply.text();\n        this.pendingRequests.delete(cacheKey);\n        return {\n          status: reply.status,\n          statusText: reply.statusText,\n          headers: reply.headers,\n          body,\n        } satisfies BufferedResponse;\n      })\n      .catch((error: unknown) => {\n        this.pendingRequests.delete(cacheKey);\n        throw error;\n      });\n\n    // Prevent race condition: register promise immediately after creation\n    this.pendingRequests.set(cacheKey, promise);\n\n    const buffered = await promise;\n    const nullBodyStatuses = [101, 103, 204, 205, 304];\n    const responseBody = nullBodyStatuses.includes(buffered.status) ? null : buffered.body;\n    const resp = new Response(responseBody, {\n      status: buffered.status,\n      statusText: buffered.statusText,\n      headers: buffered.headers,\n    });\n    return { resp, isDeduped: false };\n  }\n\n  /**\n   * Returns the number of currently pending requests.\n   * Useful for debugging and monitoring request deduplication.\n   *\n   * @returns The count of pending requests\n   */\n  static getPendingRequestsCount(): number {\n    return this.pendingRequests.size;\n  }\n\n  /**\n   * Clears all pending requests from the cache.\n   * This method is primarily intended for testing purposes.\n   *\n   * @warning Use with caution in production as this will affect all pending requests\n   */\n  static clearAllPendingRequests(): void {\n    this.pendingRequests.clear();\n  }\n\n  /**\n   * Checks if a request with the given cache key is currently pending.\n   *\n   * @param cacheKey - The cache key to check\n   * @returns true if a request with this cache key is pending, false otherwise\n   */\n  static hasPendingRequest(cacheKey: string): boolean {\n    return this.pendingRequests.has(cacheKey);\n  }\n}\n", "/**\n * Asynchronously waits for the specified number of milliseconds before resolving.\n * This function creates a Promise that resolves after the given interval using setTimeout.\n *\n * @param _interval - The number of milliseconds to wait before resolving\n *                   - Negative values are treated as 1ms\n *                   - NaN values are treated as 1ms\n * @returns A Promise that resolves to void after the specified interval\n *\n * @example\n * ```ts\n * // Wait for 1 second\n * await sleep(1000);\n * console.log('1 second has passed');\n *\n * // Wait for 500ms\n * await sleep(500);\n * console.log('500ms has passed');\n *\n * // Negative values are treated as 1ms\n * await sleep(-100); // waits 1ms\n *\n * // NaN values are treated as 1ms\n * await sleep(NaN); // waits 1ms\n * ```\n *\n * @example\n * ```ts\n * // Use in async functions for delays\n * async function delayedExecution() {\n *   console.log('Starting...');\n *   await sleep(2000);\n *   console.log('2 seconds later');\n * }\n *\n * // Use with Promise.all for concurrent operations\n * const results = await Promise.all([\n *   sleep(100),\n *   sleep(200),\n *   sleep(150)\n * ]);\n * // All complete after 200ms (the longest)\n * ```\n */\nexport async function sleep(_interval: number): Promise<void> {\n  let interval = _interval < 0 ? 1 : _interval;\n  interval = Number.isNaN(interval) ? 1 : interval;\n\n  return new Promise<void>((resolve) => {\n    setTimeout(() => resolve(), interval);\n  });\n}\n", "export function getUrlValue(value?: string | (() => string | undefined)): string | undefined {\n  if (typeof value === 'function') {\n    return value();\n  }\n\n  return value;\n}\n", "import type { JinCreateError } from '#exceptions/JinCreateError';\nimport type { JinFrame } from '#frames/JinFrame';\nimport type { JinRespError } from '#exceptions/JinRespError';\nimport type { JinValidationError } from '#exceptions/JinValidationError';\n\nexport function getError<TPASS, TFAIL, TFRAME extends JinFrame<TPASS, TFAIL>, TValidationError = unknown>(\n  err:\n    | JinCreateError<TFRAME, TPASS, TFAIL>\n    | JinRespError<TPASS, TFAIL>\n    | JinValidationError<TPASS, TFAIL, TValidationError>,\n  handler?: (\n    err:\n      | JinCreateError<TFRAME, TPASS, TFAIL>\n      | JinRespError<TPASS, TFAIL>\n      | JinValidationError<TPASS, TFAIL, TValidationError>,\n  ) => Error,\n): Error {\n  if (handler != null) {\n    return handler(err);\n  }\n\n  return err;\n}\n", "export function isValidateStatusDefault(ok: boolean, _status: number): boolean {\n  return ok;\n}\n", "export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n", "import { addLeadingZeros } from \"./_lib/addLeadingZeros.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link formatISO} function options.\n */\n\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param date - The original date\n * @param options - An object with options.\n *\n * @returns The formatted date string (in local time zone)\n *\n * @throws `date` must not be Invalid Date\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\nexport function formatISO(date, options) {\n  const date_ = toDate(date, options?.in);\n\n  if (isNaN(+date_)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  const format = options?.format ?? \"extended\";\n  const representation = options?.representation ?? \"complete\";\n\n  let result = \"\";\n  let tzOffset = \"\";\n\n  const dateDelimiter = format === \"extended\" ? \"-\" : \"\";\n  const timeDelimiter = format === \"extended\" ? \":\" : \"\";\n\n  // Representation is either 'date' or 'complete'\n  if (representation !== \"time\") {\n    const day = addLeadingZeros(date_.getDate(), 2);\n    const month = addLeadingZeros(date_.getMonth() + 1, 2);\n    const year = addLeadingZeros(date_.getFullYear(), 4);\n\n    // yyyyMMdd or yyyy-MM-dd.\n    result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`;\n  }\n\n  // Representation is either 'time' or 'complete'\n  if (representation !== \"date\") {\n    // Add the timezone.\n    const offset = date_.getTimezoneOffset();\n\n    if (offset !== 0) {\n      const absoluteOffset = Math.abs(offset);\n      const hourOffset = addLeadingZeros(Math.trunc(absoluteOffset / 60), 2);\n      const minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n      // If less than 0, the sign is +, because it is ahead of time.\n      const sign = offset < 0 ? \"+\" : \"-\";\n\n      tzOffset = `${sign}${hourOffset}:${minuteOffset}`;\n    } else {\n      tzOffset = \"Z\";\n    }\n\n    const hour = addLeadingZeros(date_.getHours(), 2);\n    const minute = addLeadingZeros(date_.getMinutes(), 2);\n    const second = addLeadingZeros(date_.getSeconds(), 2);\n\n    // If there's also date, separate it with time with 'T'\n    const separator = result === \"\" ? \"\" : \"T\";\n\n    // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n    const time = [hour, minute, second].join(timeDelimiter);\n\n    // HHmmss or HH:mm:ss.\n    result = `${result}${separator}${time}${tzOffset}`;\n  }\n\n  return result;\n}\n\n// Fallback for modularized imports:\nexport default formatISO;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param date - The given date\n *\n * @returns The timestamp\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport function getUnixTime(date) {\n  return Math.trunc(+toDate(date) / 1000);\n}\n\n// Fallback for modularized imports:\nexport default getUnixTime;\n", "import { AbstractJinFrame } from '#frames/AbstractJinFrame';\nimport { JinCreateError } from '#exceptions/JinCreateError';\nimport { JinRespError } from '#exceptions/JinRespError';\nimport type { DebugInfo } from '#interfaces/DebugInfo';\nimport type { JinFrameCreateConfig } from '#interfaces/options/JinFrameCreateConfig';\nimport type { JinFrameFunction } from '#interfaces/options/JinFrameFunction';\nimport type { JinFrameRequestConfig } from '#interfaces/options/JinFrameRequestConfig';\nimport { getDuration } from '#tools/getDuration';\nimport { getError } from '#tools/getError';\nimport { isValidateStatusDefault } from '#tools/isValidateStatusDefault';\nimport { runAndUnwrap } from '#tools/runAndUnwrap';\nimport { JinValidationError } from '#exceptions/JinValidationError';\nimport type { GetError } from '#interfaces/GetError';\nimport type { ValidationResult } from '#interfaces/ValidationResult';\nimport type { JinFailResp } from '#interfaces/JinFailResp';\nimport type { JinRequestConfig } from '#interfaces/JinRequestConfig';\nimport type { JinResp } from '#interfaces/JinResp';\n// eslint-disable-next-line import-x/no-extraneous-dependencies\nimport { formatISO } from 'date-fns/formatISO';\n// eslint-disable-next-line import-x/no-extraneous-dependencies\nimport { getUnixTime } from 'date-fns/getUnixTime';\nimport 'reflect-metadata';\nimport type { JinPassResp } from '#interfaces/JinPassResp';\nimport { getStatusFromError } from '#tools/responses/getStatusFromError';\nimport { getHeaderObject } from '#tools/getHeaderObject';\nimport { safeParse } from '#tools/json/safeParse';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\n\nasync function resolveSecurityKey<T extends JinFrameRequestConfig & JinFrameCreateConfig>(\n  frameOption: FrameOption,\n  option: T | undefined,\n): Promise<T> {\n  if (option?.dynamicAuth != null) return option;\n  const frameAuth = frameOption.authorization;\n  if (typeof frameAuth !== 'function') return (option ?? {}) as T;\n  const resolved = await frameAuth();\n  return { ...(option ?? {}), dynamicAuth: resolved } as T;\n}\n\n/**\n * Definition HTTP Request\n *\n * @typeParam Pass response data type for valid status \u2014 returned as `JinPassResp<Pass>`\n * @typeParam Fail response data type for invalid status \u2014 returned as `JinFailResp<Fail>`\n */\nexport class JinFrame<Pass = unknown, Fail = Pass> extends AbstractJinFrame implements JinFrameFunction<Pass, Fail> {\n  /**\n   * Execute before request. If you can change request object that is affected request.\n   *\n   * @param this this instance\n   * @param req request object\n   * */\n  // eslint-disable-next-line class-methods-use-this\n  protected _preHook(_req: JinRequestConfig): void | Promise<void> {}\n\n  /**\n   * Execute after request.\n   *\n   * @param this this instance\n   * @param req request object\n   * @param result [discriminated union](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-func.html#discriminated-unions) pass or fail\n   */\n  // eslint-disable-next-line class-methods-use-this\n  protected _postHook(\n    _req: JinRequestConfig,\n    _reply: JinResp<Pass, Fail>,\n    _debugInfo: DebugInfo,\n  ): void | Promise<void> {}\n\n  public _requestWrap(option?: JinFrameRequestConfig & JinFrameCreateConfig): JinRequestConfig {\n    try {\n      return super._request(option);\n    } catch (catched) {\n      const source = catched as Error;\n      const duration = getDuration(this._startAt, new Date());\n      const debug: Omit<DebugInfo, 'req'> = {\n        ts: {\n          unix: `${getUnixTime(this._startAt)}.${this._startAt.getMilliseconds()}`,\n          iso: formatISO(this._startAt),\n        },\n        isDeduped: false,\n        duration,\n      };\n      const err = new JinCreateError<typeof this, Pass, Fail>({ debug, frame: this, message: source.message });\n      err.stack = source.stack;\n\n      throw err;\n    }\n  }\n\n  /**\n   * Generate a request config and return a function that invokes HTTP APIs\n   *\n   * @param option request configuration options\n   * @returns Function that invokes HTTP APIs\n   */\n  public _create<TSelf extends this = this>(\n    this: this,\n    option?: JinFrameRequestConfig & JinFrameCreateConfig & { getError?: GetError<TSelf, Pass, Fail> },\n  ): () => Promise<\n    JinResp<Pass, Fail> & {\n      $debug: DebugInfo;\n      $frame: TSelf;\n    }\n  > {\n    const req = this._requestWrap(option);\n    const isValidateStatus = option?.validateStatus ?? this._option.validateStatus ?? isValidateStatusDefault;\n\n    const jinFrameHandle = async (): Promise<\n      JinPassResp<Pass> & {\n        $debug: DebugInfo;\n        $frame: TSelf;\n      }\n    > => {\n      const startAt = new Date();\n      const debug: Omit<DebugInfo, 'duration'> = {\n        ts: {\n          unix: `${getUnixTime(startAt)}.${startAt.getMilliseconds()}`,\n          iso: formatISO(startAt),\n        },\n        isDeduped: false,\n        req,\n      };\n\n      try {\n        await runAndUnwrap(this._preHook.bind(this), req);\n\n        const deduped = await this._retry(req, isValidateStatus);\n        const { resp } = deduped;\n\n        const isCloneRaw = option?.cloneRaw ?? this._option.cloneRaw;\n        const raw = isCloneRaw ? resp.clone() : resp;\n        const headers = getHeaderObject(resp.headers);\n        const text = await resp.text();\n        const deserialize = option?.deserialize ?? this._option.deserialize;\n        const parsed = deserialize != null ? deserialize(text) : safeParse(text);\n        const data = text.length > 0 ? parsed : undefined;\n\n        if (!isValidateStatus(resp.ok, resp.status)) {\n          const failValidator = this._option.validators?.fail;\n\n          const failResp: JinFailResp<Fail> = {\n            ok: false,\n            status: resp.status,\n            statusText: resp.statusText,\n            headers,\n            raw,\n            data: data as Fail,\n            valid: false,\n            $validated: { valid: false, error: [] },\n          };\n\n          const failValidated: ValidationResult =\n            failValidator != null ? await failValidator.validate(failResp) : { valid: true };\n\n          failResp.valid = failValidated?.valid;\n          failResp.$validated = failValidated;\n\n          const duration = getDuration(this._startAt, new Date());\n\n          const debugInfo = { ...debug, duration, isDeduped: deduped.isDeduped };\n          const err = new JinRespError<Pass, Fail>({\n            resp: failResp,\n            debug: debugInfo,\n            frame: this,\n            message: `response error: ${resp.status} ${resp.statusText}`,\n          });\n\n          await runAndUnwrap(this._postHook.bind(this), req, failResp, debugInfo);\n\n          throw err;\n        }\n\n        const passResp: JinPassResp<Pass> = {\n          ok: true,\n          status: resp.status,\n          statusText: resp.statusText,\n          headers,\n          raw,\n          data: data as Pass,\n          valid: false,\n          $validated: { valid: false, error: [] },\n        };\n\n        const passValidator = this._option.validators?.pass;\n        const validated: ValidationResult =\n          passValidator != null ? await passValidator.validate(passResp) : { valid: true as const };\n\n        passResp.valid = validated.valid;\n        passResp.$validated = validated;\n\n        const duration = getDuration(this._startAt, new Date());\n        const debugInfo = { ...debug, duration, isDeduped: deduped.isDeduped };\n\n        await runAndUnwrap(this._postHook.bind(this), req, passResp, debugInfo);\n\n        if (passValidator != null && !validated.valid && passValidator.type === 'exception') {\n          const err = new JinValidationError<Pass, Fail>({\n            resp: passResp,\n            debug: debugInfo,\n            frame: this,\n            message: 'validation error',\n            validator: passValidator,\n            validated,\n          });\n\n          throw err;\n        }\n\n        return {\n          ...passResp,\n          $debug: debugInfo,\n          $frame: this as TSelf,\n          $validated: validated,\n        };\n      } catch (caught) {\n        if (caught instanceof JinRespError) {\n          throw getError(caught, option?.getError);\n        }\n\n        if (caught instanceof JinValidationError) {\n          throw getError(caught, option?.getError);\n        }\n\n        const duration = getDuration(this._startAt, new Date());\n        const { status, statusText } = getStatusFromError(caught);\n\n        const jinFrameError = new JinRespError<Pass, Fail>({\n          resp: {\n            ok: false,\n            status,\n            statusText,\n          } as JinFailResp<Fail>,\n          debug: { ...debug, duration },\n          frame: this,\n          message: caught instanceof Error ? caught.message : 'unknown error raised',\n          cause: caught,\n        });\n\n        throw getError(jinFrameError, option?.getError);\n      }\n    };\n\n    return jinFrameHandle;\n  }\n\n  /**\n   * Generate a request config and invoke HTTP APIs.\n   *\n   * Function-based `SecurityKey` values (set via `@Security(provider, () => key)`) are resolved\n   * here before building the request. Use this method when the authorization key is dynamic.\n   *\n   * @param option request configuration options\n   * @returns JinResp with pass or fail discriminated union\n   */\n  public async _execute<TSelf extends this = this>(\n    this: TSelf,\n    option?: JinFrameRequestConfig & JinFrameCreateConfig & { getError?: GetError<TSelf, Pass, Fail> },\n  ): Promise<JinResp<Pass, Fail>> {\n    const resolvedOption = await resolveSecurityKey(this._option, option);\n    const requester = this._create(resolvedOption);\n    return requester();\n  }\n}\n", "import httpStatusCodes, { getReasonPhrase } from 'http-status-codes';\n\nexport function getStatusFromError(error: unknown): { status: number; statusText: string } {\n  if (error instanceof Error && 'status' in error && typeof error.status === 'number') {\n    return {\n      status: error.status,\n      statusText: getReasonPhrase(error.status),\n    };\n  }\n\n  return {\n    status: httpStatusCodes.INTERNAL_SERVER_ERROR,\n    statusText: getReasonPhrase(httpStatusCodes.INTERNAL_SERVER_ERROR),\n  };\n}\n", "export function getHeaderObject(headers: Headers): Record<string, string> {\n  const headerObject: Record<string, string> = {};\n\n  headers.forEach((value, key) => {\n    headerObject[key] = value;\n  });\n\n  return headerObject;\n}\n", "export function safeParse<T = unknown>(value: string): T | undefined {\n  try {\n    return JSON.parse(value) as T;\n  } catch {\n    // Return raw string for plain-text responses (e.g. API returns \"hello\" without JSON encoding)\n    return value as unknown as T;\n  }\n}\n", "/* eslint-disable class-methods-use-this */\nimport type { ValidationResult } from '#interfaces/ValidationResult';\nimport type { ValidationResultType } from '#interfaces/ValidationResultType';\nimport { runAndUnwrap } from '#tools/runAndUnwrap';\n\nexport class BaseValidator<TOrigin = unknown, TData = TOrigin, TError = unknown> {\n  /**\n   * Controls how a validation failure is surfaced.\n   * - 'exception': throws JinValidationError on failure\n   * - 'value': attaches the validation result to the reply object instead of throwing\n   */\n  #type: ValidationResultType;\n\n  constructor({ type }: { type: ValidationResultType }) {\n    this.#type = type;\n  }\n\n  get type(): ValidationResultType {\n    return this.#type;\n  }\n\n  /** override your data getter */\n  getData(reply: TOrigin): TData {\n    return reply as unknown as TData;\n  }\n\n  validator(_data: TData): ValidationResult<TError> | Promise<ValidationResult<TError>> {\n    return { valid: true };\n  }\n\n  async validate(reply: TOrigin): Promise<ValidationResult<TError>> {\n    const data = this.getData(reply);\n    const result = await runAndUnwrap(this.validator.bind(this), data);\n    return result;\n  }\n}\n", "import type { AuthorizationData } from '#interfaces/security/AuthorizationData';\nimport type { SecurityContext } from '#interfaces/security/SecurityContext';\nimport type { SecurityProvider } from '#interfaces/security/SecurityProvider';\n\n/**\n * API Key security provider that implements authentication using API keys.\n * Supports API key placement in headers, query parameters, or cookies.\n */\nexport class ApiKeyProvider implements SecurityProvider {\n  /** Type identifier for this security provider */\n  readonly type = 'api-key' as const;\n\n  /** Name of this security provider instance */\n  readonly name: string;\n\n  /** The name of the API key parameter */\n  private readonly keyName: string;\n\n  /** Location where the API key should be placed */\n  private readonly location: 'header' | 'query' | 'cookie';\n\n  /**\n   * Creates a new API Key provider\n   * @param name - Name of this security provider instance\n   * @param keyName - The name of the API key parameter (e.g., 'X-API-Key', 'apikey')\n   * @param location - Where to place the API key: 'header', 'query', or 'cookie'\n   */\n  constructor(name: string, keyName: string, location: 'header' | 'query' | 'cookie' = 'header') {\n    this.name = name;\n    this.keyName = keyName;\n    this.location = location;\n  }\n\n  /**\n   * Creates security context with API key authentication\n   * @param authorization - Authorization data containing the API key\n   * @param dynamicKey - Optional dynamic API key that overrides the authorization data\n   * @returns Security context with the API key applied to the appropriate location\n   */\n  createContext(authorization?: AuthorizationData, dynamicKey?: string): SecurityContext {\n    const key = dynamicKey ?? ApiKeyProvider.extractKey(authorization);\n\n    if (key == null) {\n      return {};\n    }\n\n    switch (this.location) {\n      case 'header':\n        return {\n          headers: {\n            [this.keyName]: key,\n          },\n        };\n      case 'query':\n        return {\n          queries: {\n            [this.keyName]: key,\n          },\n        };\n      case 'cookie':\n        return {\n          headers: {\n            Cookie: `${this.keyName}=${key}`,\n          },\n        };\n      default:\n        return {};\n    }\n  }\n\n  /**\n   * Extracts the API key from authorization data\n   * @param authorization - Authorization data that can be a string or an object with a 'key' property\n   * @returns The extracted API key or undefined if not found\n   */\n  private static extractKey(authorization?: AuthorizationData): string | undefined {\n    if (typeof authorization === 'string') {\n      return authorization;\n    }\n\n    if (authorization && typeof authorization === 'object' && 'key' in authorization) {\n      return authorization.key as string;\n    }\n\n    return undefined;\n  }\n}\n", "import type { AuthorizationData } from '#interfaces/security/AuthorizationData';\nimport type { SecurityContext } from '#interfaces/security/SecurityContext';\nimport type { SecurityProvider } from '#interfaces/security/SecurityProvider';\n\n/**\n * Basic Authentication security provider that implements HTTP Basic Auth.\n * Supports both username/password pairs and pre-encoded Basic auth strings.\n */\nexport class BasicAuthProvider implements SecurityProvider {\n  /** Type identifier for this security provider */\n  readonly type = 'http' as const;\n\n  /** Name of this security provider instance */\n  readonly name: string;\n\n  /**\n   * Creates a new Basic Authentication provider\n   * @param name - Name of this security provider instance\n   */\n  constructor(name = 'basic') {\n    this.name = name;\n  }\n\n  /**\n   * Creates security context with Basic Authentication\n   * @param authorization - Authorization data containing username/password or Basic auth string\n   * @param dynamicKey - Optional dynamic Basic auth string that overrides the authorization data\n   * @returns Security context with Basic auth applied to headers or auth property\n   */\n  // eslint-disable-next-line class-methods-use-this\n  createContext(authorization?: AuthorizationData, dynamicKey?: string): SecurityContext {\n    if (dynamicKey) {\n      return BasicAuthProvider.handleDynamicKey(dynamicKey);\n    }\n\n    return BasicAuthProvider.handleAuthorization(authorization);\n  }\n\n  /**\n   * Handles dynamic key for Basic Authentication\n   * @param dynamicKey - The dynamic Basic auth string\n   * @returns Security context with Authorization header\n   */\n  private static handleDynamicKey(dynamicKey: string): SecurityContext {\n    if (dynamicKey.startsWith('Basic ')) {\n      return {\n        headers: {\n          Authorization: dynamicKey,\n        },\n      };\n    }\n\n    return {\n      headers: {\n        Authorization: `Basic ${dynamicKey}`,\n      },\n    };\n  }\n\n  /**\n   * Handles authorization data for Basic Authentication\n   * @param authorization - Authorization data that can be a string or an object with username/password\n   * @returns Security context with either Authorization header or auth credentials\n   */\n  private static handleAuthorization(authorization?: AuthorizationData): SecurityContext {\n    if (typeof authorization === 'string') {\n      const basicAuth = authorization.startsWith('Basic ') ? authorization : `Basic ${authorization}`;\n      return {\n        headers: {\n          Authorization: basicAuth,\n        },\n      };\n    }\n\n    if (\n      authorization &&\n      typeof authorization === 'object' &&\n      'username' in authorization &&\n      'password' in authorization\n    ) {\n      return {\n        auth: {\n          username: authorization.username as string,\n          password: authorization.password as string,\n        },\n      };\n    }\n\n    return {};\n  }\n}\n", "import type { AuthorizationData } from '#interfaces/security/AuthorizationData';\nimport type { SecurityContext } from '#interfaces/security/SecurityContext';\nimport type { SecurityProvider } from '#interfaces/security/SecurityProvider';\n\n/**\n * Bearer Token security provider for HTTP Bearer Token authentication.\n * Automatically adds \"Bearer \" prefix to tokens if not already present.\n * Call `setKey()` to update the token at runtime (e.g. after token refresh).\n */\nexport class BearerTokenProvider implements SecurityProvider {\n  readonly type = 'http' as const;\n\n  readonly name: string;\n\n  private _internalKey?: string;\n\n  constructor(name = 'bearer') {\n    this.name = name;\n  }\n\n  setKey(key: string): this {\n    this._internalKey = key;\n    return this;\n  }\n\n  createContext(authorization?: AuthorizationData, dynamicKey?: string): SecurityContext {\n    const token = dynamicKey ?? this._internalKey ?? (typeof authorization === 'string' ? authorization : undefined);\n\n    if (token == null || typeof token !== 'string') {\n      return {};\n    }\n\n    const bearerToken = token.startsWith('Bearer ') ? token : `Bearer ${token}`;\n\n    return {\n      headers: {\n        Authorization: bearerToken,\n      },\n    };\n  }\n}\n", "import type { BodyFieldOption } from '#interfaces/field/body/BodyFieldOption';\nimport type { Except } from 'type-fest';\n\nexport function getDefaultBodyFieldOption(\n  option?: Partial<BodyFieldOption> | Except<Partial<BodyFieldOption>, 'type'>,\n): BodyFieldOption {\n  return {\n    key: '',\n    type: 'body',\n    cacheKeyExcludePaths: option?.cacheKeyExcludePaths ?? undefined,\n    replaceAt: option?.replaceAt ?? undefined,\n    formatters: option?.formatters ?? undefined,\n    encode: option?.encode ?? true,\n  };\n}\n", "import type { BodyFieldOption } from '#interfaces/field/body/BodyFieldOption';\nimport { REQUEST_FIELD_DECORATOR } from '#decorators/fields/handlers/REQUEST_FIELD_DECORATOR';\nimport { getDefaultBodyFieldOption } from '#processors/default-option/getDefaultBodyFieldOption';\nimport 'reflect-metadata';\n\n/**\n * decorator to set class variable to HTTP API body parameter\n * @param option body parameter option\n */\nexport function Body(_option?: Partial<Omit<BodyFieldOption, 'type'>>) {\n  return function bodyHandle(target: object, propertyKey: string | symbol): void {\n    const option = getDefaultBodyFieldOption(_option);\n    const existing: unknown[] = Reflect.getOwnMetadata(REQUEST_FIELD_DECORATOR, target, propertyKey) ?? [];\n    Reflect.defineMetadata(REQUEST_FIELD_DECORATOR, [...existing, { key: propertyKey, option }], target, propertyKey);\n  };\n}\n", "import type { CookieFieldOption } from '#interfaces/field/CookieFieldOption';\n\nexport function getDefaultCookieFieldOption(\n  option?: Partial<CookieFieldOption> | Omit<Partial<CookieFieldOption>, 'type'>,\n): CookieFieldOption {\n  return {\n    key: '',\n    type: 'cookie',\n    cacheKeyExclude: option?.cacheKeyExclude ?? false,\n    bit: {\n      enable: option?.bit?.enable ?? false,\n      withZero: option?.bit?.withZero ?? false,\n    },\n    formatters: option?.formatters ?? undefined,\n    replaceAt: option?.replaceAt ?? undefined,\n    comma: option?.comma ?? false,\n    encode: option?.encode ?? false,\n  };\n}\n", "import type { CookieFieldOption } from '#interfaces/field/CookieFieldOption';\nimport { REQUEST_FIELD_DECORATOR } from '#decorators/fields/handlers/REQUEST_FIELD_DECORATOR';\nimport { getDefaultCookieFieldOption } from '#processors/default-option/getDefaultCookieFieldOption';\nimport 'reflect-metadata';\n\n/**\n * decorator to set class variable to HTTP Cookie header\n * @param option cookie field option\n */\nexport function Cookie(_option?: Partial<Omit<CookieFieldOption, 'type'>>) {\n  return function cookieHandle(target: object, propertyKey: string | symbol): void {\n    const option = getDefaultCookieFieldOption(_option);\n    const existing: unknown[] = Reflect.getOwnMetadata(REQUEST_FIELD_DECORATOR, target, propertyKey) ?? [];\n    Reflect.defineMetadata(REQUEST_FIELD_DECORATOR, [...existing, { key: propertyKey, option }], target, propertyKey);\n  };\n}\n", "import type { HeaderFieldOption } from '#interfaces/field/HeaderFieldOption';\n\nexport function getDefaultHeaderFieldOption(\n  option?: Partial<HeaderFieldOption> | Omit<Partial<HeaderFieldOption>, 'type'>,\n): HeaderFieldOption {\n  return {\n    key: '',\n    type: 'header',\n    cacheKeyExclude: option?.cacheKeyExclude ?? false,\n    bit: {\n      enable: option?.bit?.enable ?? false,\n      withZero: option?.bit?.withZero ?? false,\n    },\n    formatters: option?.formatters ?? undefined,\n    replaceAt: option?.replaceAt ?? undefined,\n    comma: option?.comma ?? false,\n    encode: option?.encode ?? true,\n  };\n}\n", "import type { HeaderFieldOption } from '#interfaces/field/HeaderFieldOption';\nimport { REQUEST_FIELD_DECORATOR } from '#decorators/fields/handlers/REQUEST_FIELD_DECORATOR';\nimport { getDefaultHeaderFieldOption } from '#processors/default-option/getDefaultHeaderFieldOption';\nimport 'reflect-metadata';\n\n/**\n * decorator to set class variable to HTTP API header parameter\n * @param option header parameter option\n */\nexport function Header(_option?: Partial<Omit<HeaderFieldOption, 'type'>>) {\n  return function headerHandle(target: object, propertyKey: string | symbol): void {\n    const option = getDefaultHeaderFieldOption(_option);\n    const existing: unknown[] = Reflect.getOwnMetadata(REQUEST_FIELD_DECORATOR, target, propertyKey) ?? [];\n    Reflect.defineMetadata(REQUEST_FIELD_DECORATOR, [...existing, { key: propertyKey, option }], target, propertyKey);\n  };\n}\n", "import type { ObjectBodyFieldOption } from '#interfaces/field/body/ObjectBodyFieldOption';\nimport type { Except } from 'type-fest';\n\nexport function getDefaultObjectBodyFieldOption(\n  option?: Partial<ObjectBodyFieldOption> | Except<Partial<ObjectBodyFieldOption>, 'type'>,\n): ObjectBodyFieldOption {\n  return {\n    key: '',\n    type: 'object-body',\n    cacheKeyExcludePaths: option?.cacheKeyExcludePaths ?? undefined,\n    formatters: option?.formatters ?? undefined,\n    encode: option?.encode ?? true,\n    order: option?.order ?? Number.MAX_SAFE_INTEGER,\n  };\n}\n", "import type { ObjectBodyFieldOption } from '#interfaces/field/body/ObjectBodyFieldOption';\nimport { getDefaultObjectBodyFieldOption } from '#processors/default-option/getDefaultObjectBodyFieldOption';\nimport { REQUEST_FIELD_DECORATOR } from '#decorators/fields/handlers/REQUEST_FIELD_DECORATOR';\nimport 'reflect-metadata';\n\n/**\n * decorator to set class variable to HTTP API body parameter\n * @param option body parameter option\n */\nexport function ObjectBody(_option?: Partial<Omit<ObjectBodyFieldOption, 'type'>>) {\n  return function objectBodyHandle(target: object, propertyKey: string | symbol): void {\n    const option = getDefaultObjectBodyFieldOption(_option);\n    const existing: unknown[] = Reflect.getOwnMetadata(REQUEST_FIELD_DECORATOR, target, propertyKey) ?? [];\n    Reflect.defineMetadata(REQUEST_FIELD_DECORATOR, [...existing, { key: propertyKey, option }], target, propertyKey);\n  };\n}\n", "import type { ParamFieldOption } from '#interfaces/field/ParamFieldOption';\n\nexport function getDefaultParamFieldOption(\n  option?: Partial<ParamFieldOption> | Omit<Partial<ParamFieldOption>, 'type'>,\n): ParamFieldOption {\n  return {\n    key: '',\n    type: 'param',\n    cacheKeyExclude: option?.cacheKeyExclude ?? false,\n    formatters: option?.formatters ?? undefined,\n    comma: option?.comma ?? false,\n    bit: {\n      enable: option?.bit?.enable ?? false,\n      withZero: option?.bit?.withZero ?? false,\n    },\n    replaceAt: option?.replaceAt,\n    encode: option?.encode ?? true,\n  };\n}\n", "import type { ParamFieldOption } from '#interfaces/field/ParamFieldOption';\nimport { getDefaultParamFieldOption } from '#processors/default-option/getDefaultParamFieldOption';\nimport { REQUEST_FIELD_DECORATOR } from '#decorators/fields/handlers/REQUEST_FIELD_DECORATOR';\nimport 'reflect-metadata';\n\n/**\n * decorator to set class variable to HTTP API path parameter\n * @param option path parameter option\n */\nexport function Param(_option?: Partial<Omit<ParamFieldOption, 'type'>>) {\n  return function paramHandle(target: object, propertyKey: string | symbol): void {\n    const option = getDefaultParamFieldOption(_option);\n    const existing: unknown[] = Reflect.getOwnMetadata(REQUEST_FIELD_DECORATOR, target, propertyKey) ?? [];\n    Reflect.defineMetadata(REQUEST_FIELD_DECORATOR, [...existing, { key: propertyKey, option }], target, propertyKey);\n  };\n}\n", "import type { QueryFieldOption } from '#interfaces/field/QueryFieldOption';\n\nexport function getDefaultQueryFieldOption(\n  option?: Partial<QueryFieldOption> | Omit<Partial<QueryFieldOption>, 'type'>,\n): QueryFieldOption {\n  return {\n    key: '',\n    type: 'query',\n    cacheKeyExclude: option?.cacheKeyExclude ?? false,\n    formatters: option?.formatters ?? undefined,\n    comma: option?.comma ?? false,\n    bit: {\n      enable: option?.bit?.enable ?? false,\n      withZero: option?.bit?.withZero ?? false,\n    },\n    keyFormat: option?.keyFormat,\n    replaceAt: option?.replaceAt,\n    encode: option?.encode ?? true,\n  };\n}\n", "import type { QueryFieldOption } from '#interfaces/field/QueryFieldOption';\nimport { getDefaultQueryFieldOption } from '#processors/default-option/getDefaultQueryFieldOption';\nimport { REQUEST_FIELD_DECORATOR } from '#decorators/fields/handlers/REQUEST_FIELD_DECORATOR';\nimport 'reflect-metadata';\n\n/**\n * decorator to set class variable to HTTP API query parameter\n * @param option query parameter option\n */\nexport function Query(_option?: Partial<Omit<QueryFieldOption, 'type'>>) {\n  return function queryHandle(target: object, propertyKey: string | symbol): void {\n    const option = getDefaultQueryFieldOption(_option);\n    const existing: unknown[] = Reflect.getOwnMetadata(REQUEST_FIELD_DECORATOR, target, propertyKey) ?? [];\n    Reflect.defineMetadata(REQUEST_FIELD_DECORATOR, [...existing, { key: propertyKey, option }], target, propertyKey);\n  };\n}\n", "import { REQUEST_METHOD_DECORATOR } from '#decorators/methods/handlers/REQUEST_METHOD_DECORATOR';\nimport type { MethodEntry } from '#interfaces/options/MethodEntry';\nimport type { Constructor } from 'type-fest';\nimport 'reflect-metadata';\n\n/** Appends a method entry to the metadata stored on the given constructor target. */\nexport function pushRequestMeta<T>(target: Constructor<T>, entry: MethodEntry): void {\n  const prev = (Reflect.getOwnMetadata(REQUEST_METHOD_DECORATOR, target) as MethodEntry[] | undefined) ?? [];\n  Reflect.defineMetadata(REQUEST_METHOD_DECORATOR, [...prev, entry], target);\n}\n", "import { getFrameOption } from '#decorators/getFrameOption';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\nimport type { Constructor } from 'type-fest';\nimport { pushRequestMeta } from '#decorators/methods/handlers/pushRequestMeta';\nimport type { Method } from '#interfaces/options/Method';\n\nimport 'reflect-metadata';\n\nexport function makeRequestDecorator(method: Method) {\n  return function decorate<T = unknown>(_option?: Partial<Omit<FrameOption, 'method'>>) {\n    return function decorateHandle(target: Constructor<T>): void {\n      const option = Object.freeze(getFrameOption(method, _option));\n      pushRequestMeta<T>(target, Object.freeze({ option }));\n    };\n  };\n}\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Delete = makeRequestDecorator('DELETE');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Get = makeRequestDecorator('GET');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Head = makeRequestDecorator('HEAD');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Link = makeRequestDecorator('LINK');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Options = makeRequestDecorator('OPTIONS');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Patch = makeRequestDecorator('PATCH');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Post = makeRequestDecorator('POST');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Purge = makeRequestDecorator('PURGE');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Put = makeRequestDecorator('PUT');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Search = makeRequestDecorator('SEARCH');\n", "import { makeRequestDecorator } from '#decorators/methods/handlers/makeRequestDecorator';\n\nexport const Unlink = makeRequestDecorator('UNLINK');\n", "import { encode } from '#tools/encodes/encode';\n\nexport function encodes(enable: boolean | undefined | null, values: string | number): string;\nexport function encodes(enable: boolean | undefined | null, values: string[] | number[]): string[];\nexport function encodes(\n  enable: boolean | undefined | null,\n  values: string | number | string[] | number[],\n): string | string[] {\n  if (Array.isArray(values)) {\n    return values.map((val) => encode(enable, val));\n  }\n\n  return encode(enable, values);\n}\n", "export function isValidObject(value: unknown): value is Record<string, unknown> {\n  if (typeof value === 'object' && value != null && !Array.isArray(value) && Object.values(value).length > 0) {\n    return true;\n  }\n\n  return false;\n}\n", "import { isValidArrayType } from '#tools/type-narrowing/isValidArrayType';\nimport { isValidPrimitiveWithDateType } from '#tools/type-narrowing/isValidPrimitiveWithDateType';\nimport type { SupportArrayType } from '#tools/type-utilities/SupportArrayType';\nimport type { SupportPrimitiveType } from '#tools/type-utilities/SupportPrimitiveType';\n\nexport function typeAssert(strict: boolean, value: unknown): value is SupportArrayType | SupportPrimitiveType {\n  if (isValidPrimitiveWithDateType(value)) {\n    return true;\n  }\n\n  if (isValidArrayType(value)) {\n    return true;\n  }\n\n  if (strict) {\n    throw new Error(`invalid type value: ${typeof value}`);\n  }\n\n  return false;\n}\n", "import { REQUEST_DEDUPE_DECORATOR } from '#decorators/methods/handlers/REQUEST_DEDUPE_DECORATOR';\nimport 'reflect-metadata';\n\nexport function Dedupe() {\n  return function dedupeHandle(target: object): void {\n    const prev = (Reflect.getOwnMetadata(REQUEST_DEDUPE_DECORATOR, target) as boolean[] | undefined) ?? [];\n\n    Reflect.defineMetadata(REQUEST_DEDUPE_DECORATOR, [...prev, true], target);\n  };\n}\n", "import { REQUEST_RETRY_DECORATOR } from '#decorators/methods/handlers/REQUEST_RETRY_DECORATOR';\nimport type { FrameRetry } from '#interfaces/options/FrameRetry';\nimport 'reflect-metadata';\n\nexport function Retry(_option: FrameRetry) {\n  return function retryHandle(target: object): void {\n    const option = Object.freeze(_option);\n    const prev = (Reflect.getOwnMetadata(REQUEST_RETRY_DECORATOR, target) as FrameRetry[] | undefined) ?? [];\n\n    Reflect.defineMetadata(REQUEST_RETRY_DECORATOR, [...prev, option], target);\n  };\n}\n", "import { REQUEST_AUTHORIZATION_DECORATOR } from '#decorators/methods/handlers/REQUEST_AUTHORIZATION_DECORATOR';\nimport { REQUEST_SECURITY_DECORATOR } from '#decorators/methods/handlers/REQUEST_SECURITY_DECORATOR';\nimport type { FrameOption } from '#interfaces/options/FrameOption';\nimport type { SecurityKey } from '#interfaces/security/SecurityKey';\nimport 'reflect-metadata';\n\nexport function Security(_option: FrameOption['security'], key?: SecurityKey) {\n  return function securityHandle(target: object): void {\n    const prevSecurity =\n      (Reflect.getOwnMetadata(REQUEST_SECURITY_DECORATOR, target) as FrameOption['security'][]) ?? [];\n\n    Reflect.defineMetadata(REQUEST_SECURITY_DECORATOR, [...prevSecurity, _option], target);\n\n    if (key != null) {\n      const prevAuth =\n        (Reflect.getOwnMetadata(REQUEST_AUTHORIZATION_DECORATOR, target) as FrameOption['authorization'][]) ?? [];\n      Reflect.defineMetadata(REQUEST_AUTHORIZATION_DECORATOR, [...prevAuth, key], target);\n    }\n  };\n}\n", "import { REQUEST_TIMEOUT_DECORATOR } from '#decorators/methods/handlers/REQUEST_TIMEOUT_DECORATOR';\nimport type { Milliseconds } from '#interfaces/options/Milliseconds';\nimport 'reflect-metadata';\n\nexport function Timeout(_option: Milliseconds) {\n  return function timeotuHandle(target: object): void {\n    const prev = (Reflect.getOwnMetadata(REQUEST_TIMEOUT_DECORATOR, target) as Milliseconds[] | undefined) ?? [];\n    const option = Object.freeze(_option);\n\n    Reflect.defineMetadata(REQUEST_TIMEOUT_DECORATOR, [...prev, option], target);\n  };\n}\n", "import { REQUEST_VALIDATOR_DECORATOR } from '#decorators/methods/handlers/REQUEST_VALIDATOR_DECORATOR';\nimport type { BaseValidator } from '#validators/BaseValidator';\nimport 'reflect-metadata';\n\nexport function Validator(_option: { pass?: BaseValidator; fail?: BaseValidator }) {\n  return function validatorHandle(target: object): void {\n    const option = Object.freeze(_option);\n    const prev =\n      (Reflect.getOwnMetadata(REQUEST_VALIDATOR_DECORATOR, target) as\n        | { pass?: BaseValidator; fail?: BaseValidator }[]\n        | undefined) ?? [];\n\n    Reflect.defineMetadata(REQUEST_VALIDATOR_DECORATOR, [...prev, option], target);\n  };\n}\n"],
  "mappings": "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",
  "names": ["require_is_obj", "__commonJSMin", "exports", "module", "value", "type", "require_dot_prop", "__commonJSMin", "exports", "module", "isObj", "disallowedKeys", "isValidPath", "pathSegments", "segment", "getPathSegments", "path", "pathArray", "parts", "i", "p", "object", "value", "root", "index_exports", "__export", "AbstractJinFrame", "ApiKeyProvider", "BaseValidator", "BasicAuthProvider", "BearerTokenProvider", "Body", "Cookie", "Dedupe", "Delete", "Get", "Head", "Header", "JinCreateError", "JinFile", "JinFrame", "JinRespError", "JinValidationError", "Link", "ObjectBody", "Options", "Param", "Patch", "Post", "Purge", "Put", "Query", "REQUEST_AUTHORIZATION_DECORATOR", "REQUEST_DEDUPE_DECORATOR", "REQUEST_FIELD_DECORATOR", "REQUEST_METHOD_DECORATOR", "REQUEST_RETRY_DECORATOR", "REQUEST_SECURITY_DECORATOR", "REQUEST_TIMEOUT_DECORATOR", "REQUEST_VALIDATOR_DECORATOR", "RequestDedupeManager", "Retry", "Search", "Security", "Timeout", "Unlink", "Validator", "applyFormat", "applySecurityProviders", "bitwised", "bodyFormatEach", "bodyFormatting", "bodyFormattings", "classifyBodyFormatters", "defaultJinFrameTimeout", "encode", "encodes", "findFromBody", "flatStringMap", "formatEach", "formatting", "formattings", "getAllRequestMetaInherited", "getAuthorization", "getBodyField", "getBodyFormatters", "getBodyMap", "getCachePath", "getDefaultBodyFieldOption", "getDefaultCookieFieldOption", "getDefaultHeaderFieldOption", "getDefaultObjectBodyFieldOption", "getDefaultParamFieldOption", "getDefaultQueryFieldOption", "getDuration", "getError", "getFieldMetadata", "getFrameInternalData", "getFrameOption", "getHeaderObject", "getObjectBodyField", "getQuerystringKey", "getQuerystringKeyFormat", "getQuerystringMap", "getRequestMeta", "getRetryAfter", "getRetryInterval", "getStatusFromError", "getUrl", "getUrlValue", "isValidArrayType", "isValidNumberArray", "isValidObject", "isValidPrimitiveType", "isValidPrimitiveWithDateType", "isValidateStatusDefault", "makeRequestDecorator", "mergeFrameOption", "mergeRetryOption", "pushRequestMeta", "removeBothSlash", "removeEndSlash", "removeStartSlash", "runAndUnwrap", "safeParse", "safeStringify", "setFrameOption", "setToBody", "sleep", "startWithSlash", "stringifyExceptString", "stringifyQuerystring", "typeAssert", "__toCommonJS", "getFrameInternalData", "option", "getFrameOption", "method", "option", "import_http_status_codes", "JinCreateError", "#debug", "#frame", "#status", "#statusText", "debug", "frame", "message", "httpStatusCodes", "JinRespError", "#debug", "#frame", "#resp", "#status", "#statusText", "debug", "frame", "resp", "message", "cause", "JinValidationError", "#debug", "#frame", "#resp", "#status", "#statusText", "#validator", "#validated", "debug", "frame", "resp", "message", "validator", "validated", "JinFile", "#name", "#file", "name", "file", "defaultJinFrameTimeout", "classifyBodyFormatters", "formatters", "aggregated", "formatter", "isValidPrimitiveType", "value", "applyFormat", "origin", "formatter", "processing", "order", "isValidPrimitiveType", "isValidPrimitiveWithDateType", "value", "formatting", "initialValue", "formatter", "applied", "applyFormat", "isValidPrimitiveWithDateType", "err", "import_my_easy_fp", "formattings", "initialValue", "formatters", "aggregated", "formatter", "formatted", "formatting", "formatEach", "initialValue", "formatters", "value", "formattings", "getBodyFormatters", "formatters", "isValidArrayType", "values", "value", "isValidPrimitiveWithDateType", "dotProp", "getBodyField", "thisFrame", "field", "isValidPrimitiveWithDateType", "accessKey", "value", "formatters", "getBodyFormatters", "replaceKey", "origin", "isValidArrayType", "processing", "formatter", "childValue", "formatteds", "formatEach", "classifed", "classifyBodyFormatters", "childAccessKey", "childReplaceKey", "next", "dotProp", "findFromBody", "initialValue", "findFrom", "dotProp", "setToBody", "initialValue", "formatted", "findFrom", "next", "bodyFormatting", "initialValue", "formatter", "origin", "findFromBody", "formatted", "applyFormat", "setToBody", "err", "import_my_easy_fp", "bodyFormattings", "initialValue", "formatters", "aggregated", "formatter", "formatted", "bodyFormatting", "bodyFormatEach", "initialValue", "formatters", "value", "bodyFormattings", "getObjectBodyField", "thisFrame", "field", "isValidPrimitiveWithDateType", "accessKey", "value", "formatters", "getBodyFormatters", "isValidArrayType", "processing", "formatter", "formatEach", "classifed", "classifyBodyFormatters", "origin", "bodyFormatEach", "import_merge", "import_my_easy_fp", "getBodyMap", "thisFrame", "fields", "bodies", "objectBodies", "classifed", "aggregated", "option", "l", "r", "field", "getBodyField", "getObjectBodyField", "primitiveTypes", "item", "isValidPrimitiveType", "customArrayTypes", "merged", "bitwised", "values", "bitwise", "value", "encode", "enable", "value", "stringifyExceptString", "value", "stringifyQuerystring", "values", "option", "value", "encode", "stringifyExceptString", "isValidNumberArray", "value", "item", "dotProp", "getQuerystringMap", "thisFrame", "fields", "queries", "option", "thisFrameAccessKey", "value", "fieldKey", "formatters", "isValidPrimitiveWithDateType", "isValidArrayType", "encode", "stringifyExceptString", "isValidNumberArray", "bitwisedValue", "bitwised", "formatteds", "formatEach", "stringified", "stringifyQuerystring", "startWithSlash", "value", "import_my_easy_fp", "encodeReserved", "str", "part", "encodeUnreserved", "c", "encodeValue", "operator", "value", "key", "isDefined", "isKeyOperator", "getValues", "context", "modifier", "result", "k", "tmp", "parseTemplate", "template", "operators", "_", "expression", "literal", "values", "variable", "separator", "flatStringMap", "map", "aggregated", "key", "values", "value", "stringifyExceptString", "removeEndSlash", "value", "removeStartSlash", "value", "removeBothSlash", "value", "removeStartSlash", "removeEndSlash", "pattern1", "pattern2", "pattern3", "getUrl", "host", "pathPrefix", "path", "withPathPrefix", "part", "removeBothSlash", "concatted", "str", "url", "REQUEST_METHOD_DECORATOR", "REQUEST_RETRY_DECORATOR", "REQUEST_TIMEOUT_DECORATOR", "REQUEST_VALIDATOR_DECORATOR", "REQUEST_DEDUPE_DECORATOR", "REQUEST_AUTHORIZATION_DECORATOR", "REQUEST_SECURITY_DECORATOR", "import_reflect_metadata", "getAllRequestMetaInherited", "ctor", "methods", "retries", "timeouts", "validators", "dedupes", "authorizations", "securities", "c", "method", "REQUEST_METHOD_DECORATOR", "retry", "REQUEST_RETRY_DECORATOR", "timeout", "REQUEST_TIMEOUT_DECORATOR", "validator", "REQUEST_VALIDATOR_DECORATOR", "dedupe", "REQUEST_DEDUPE_DECORATOR", "authorization", "REQUEST_AUTHORIZATION_DECORATOR", "security", "REQUEST_SECURITY_DECORATOR", "setFrameOption", "target", "key", "value", "forReAssign", "mergeFrameOption", "prev", "next", "merged", "key", "setFrameOption", "mergeRetryOption", "prev", "next", "getRequestMeta", "ctor", "metas", "getAllRequestMetaInherited", "methods", "retries", "timeouts", "validators", "dedupes", "authorizations", "securities", "mergedOption", "merged", "meta", "mergeFrameOption", "mergedRetry", "mergeRetryOption", "mergedValidator", "mergedTimeout", "mergedDeduped", "mergedAuthorization", "mergedSecurity", "REQUEST_FIELD_DECORATOR", "import_reflect_metadata", "getFieldMetadata", "type", "keys", "fields", "key", "raw", "REQUEST_FIELD_DECORATOR", "entry", "aggregate", "field", "option", "getRetryInterval", "retry", "totalDuration", "eachDuration", "retryAfterSeconds", "getInterval", "interval", "maxTime", "minTime", "secondsInHour", "secondsInDay", "secondsInHour", "secondsInWeek", "secondsInYear", "secondsInMonth", "secondsInQuarter", "constructFromSymbol", "constructFrom", "date", "value", "constructFromSymbol", "toDate", "argument", "context", "constructFrom", "differenceInMilliseconds", "laterDate", "earlierDate", "toDate", "getDuration", "start", "end", "duration", "differenceInMilliseconds", "applySecurityProviders", "providers", "authorization", "dynamicAuth", "context", "provider", "authData", "providerContext", "getAuthorization", "headers", "frameOption", "auth", "dynamicAuth", "providers", "securityContext", "applySecurityProviders", "getQuerystringKeyFormat", "option", "getQuerystringKey", "key", "index", "format", "getRetryAfter", "retry", "rawRetryAfter", "retryAfter", "parsed", "getCachePath", "params", "key", "import_dot_prop", "safeStringify", "value", "replacer", "space", "runAndUnwrap", "fn", "args", "result", "RequestDedupeManager", "cacheKey", "requesterFn", "existingPromise", "buffered", "promise", "reply", "body", "error", "responseBody", "sleep", "_interval", "interval", "resolve", "import_reflect_metadata", "getUrlValue", "value", "AbstractJinFrame", "meta", "getRequestMeta", "getUrl", "getUrlValue", "ctorArgs", "store", "self", "api", "k", "v", "e", "inst", "defaults", "args", "b", "built", "_req", "_res", "_err", "#option", "#data", "fromDecorator", "getFrameInternalData", "kind", "value", "key", "bodies", "params", "entry", "formData", "JinFile", "jinFile", "fileData", "entries", "fields", "getFieldMetadata", "data", "input", "getCachePath", "cacheKeyExcludePathItem", "safeStringify", "paths", "override", "host", "pathPrefix", "path", "expandedHost", "parseTemplate", "expandedPathPrefix", "expandedPath", "urlMeta", "option", "queryMap", "query", "queries", "getQuerystringMap", "headers", "flatStringMap", "cookieMap", "getBodyMap", "baseUrlString", "expandedUrlString", "url", "isOnlyPath", "queryOption", "keyFormat", "getQuerystringKeyFormat", "val", "index", "formatted", "getQuerystringKey", "authKey", "auth", "securityHeaders", "securityQueries", "getAuthorization", "cookieEntries", "encoded", "timeout", "body", "startWithSlash", "req", "isValidateStatus", "retry", "returnValue", "i", "timeoutSignal", "signal", "fetchReq", "cacheKey", "deduped", "RequestDedupeManager", "resp", "retryAfterValue", "retryAfter", "getRetryAfter", "runAndUnwrap", "current", "interval", "getRetryInterval", "getDuration", "sleep", "err", "getError", "err", "handler", "isValidateStatusDefault", "ok", "_status", "addLeadingZeros", "number", "targetLength", "sign", "output", "formatISO", "date", "options", "date_", "toDate", "format", "representation", "result", "tzOffset", "dateDelimiter", "timeDelimiter", "day", "addLeadingZeros", "month", "offset", "absoluteOffset", "hourOffset", "minuteOffset", "hour", "minute", "second", "separator", "time", "getUnixTime", "date", "toDate", "import_reflect_metadata", "import_http_status_codes", "getStatusFromError", "error", "httpStatusCodes", "getHeaderObject", "headers", "headerObject", "value", "key", "safeParse", "value", "resolveSecurityKey", "frameOption", "option", "frameAuth", "resolved", "JinFrame", "AbstractJinFrame", "_req", "_reply", "_debugInfo", "catched", "source", "duration", "getDuration", "debug", "getUnixTime", "formatISO", "err", "JinCreateError", "req", "isValidateStatus", "isValidateStatusDefault", "startAt", "runAndUnwrap", "deduped", "resp", "raw", "headers", "getHeaderObject", "text", "deserialize", "parsed", "safeParse", "data", "failValidator", "failResp", "failValidated", "debugInfo", "JinRespError", "passResp", "passValidator", "validated", "JinValidationError", "caught", "getError", "status", "statusText", "getStatusFromError", "jinFrameError", "resolvedOption", "BaseValidator", "#type", "type", "reply", "_data", "data", "runAndUnwrap", "ApiKeyProvider", "_ApiKeyProvider", "name", "keyName", "location", "authorization", "dynamicKey", "key", "BasicAuthProvider", "_BasicAuthProvider", "name", "authorization", "dynamicKey", "BearerTokenProvider", "name", "key", "authorization", "dynamicKey", "token", "getDefaultBodyFieldOption", "option", "import_reflect_metadata", "Body", "_option", "target", "propertyKey", "option", "getDefaultBodyFieldOption", "existing", "REQUEST_FIELD_DECORATOR", "getDefaultCookieFieldOption", "option", "import_reflect_metadata", "Cookie", "_option", "target", "propertyKey", "option", "getDefaultCookieFieldOption", "existing", "REQUEST_FIELD_DECORATOR", "getDefaultHeaderFieldOption", "option", "import_reflect_metadata", "Header", "_option", "target", "propertyKey", "option", "getDefaultHeaderFieldOption", "existing", "REQUEST_FIELD_DECORATOR", "getDefaultObjectBodyFieldOption", "option", "import_reflect_metadata", "ObjectBody", "_option", "target", "propertyKey", "option", "getDefaultObjectBodyFieldOption", "existing", "REQUEST_FIELD_DECORATOR", "getDefaultParamFieldOption", "option", "import_reflect_metadata", "Param", "_option", "target", "propertyKey", "option", "getDefaultParamFieldOption", "existing", "REQUEST_FIELD_DECORATOR", "getDefaultQueryFieldOption", "option", "import_reflect_metadata", "Query", "_option", "target", "propertyKey", "option", "getDefaultQueryFieldOption", "existing", "REQUEST_FIELD_DECORATOR", "import_reflect_metadata", "pushRequestMeta", "target", "entry", "prev", "REQUEST_METHOD_DECORATOR", "import_reflect_metadata", "makeRequestDecorator", "method", "_option", "target", "option", "getFrameOption", "pushRequestMeta", "Delete", "makeRequestDecorator", "Get", "makeRequestDecorator", "Head", "makeRequestDecorator", "Link", "makeRequestDecorator", "Options", "makeRequestDecorator", "Patch", "makeRequestDecorator", "Post", "makeRequestDecorator", "Purge", "makeRequestDecorator", "Put", "makeRequestDecorator", "Search", "makeRequestDecorator", "Unlink", "makeRequestDecorator", "encodes", "enable", "values", "val", "encode", "isValidObject", "value", "typeAssert", "strict", "value", "isValidPrimitiveWithDateType", "isValidArrayType", "import_reflect_metadata", "Dedupe", "target", "prev", "REQUEST_DEDUPE_DECORATOR", "import_reflect_metadata", "Retry", "_option", "target", "option", "prev", "REQUEST_RETRY_DECORATOR", "import_reflect_metadata", "Security", "_option", "key", "target", "prevSecurity", "REQUEST_SECURITY_DECORATOR", "prevAuth", "REQUEST_AUTHORIZATION_DECORATOR", "import_reflect_metadata", "Timeout", "_option", "target", "prev", "REQUEST_TIMEOUT_DECORATOR", "option", "import_reflect_metadata", "Validator", "_option", "target", "option", "prev", "REQUEST_VALIDATOR_DECORATOR"]
}
