{"version":3,"file":"StaticClassClient-fyUhKJxf.cjs","names":["#options","#transformParam","#eachParam","getParams","FunctionParams","File","Function","Const","FunctionParams","File","Function","buildHeaders","buildGenerics","buildClientParams","FunctionParams","buildRequestDataLine","buildFormDataLine","buildReturnStatement","generateMethod","File","File","Const","FunctionParams","File"],"sources":["../../../internals/utils/src/casing.ts","../../../internals/utils/src/jsdoc.ts","../../../internals/utils/src/reserved.ts","../../../internals/utils/src/urlPath.ts","../src/components/Url.tsx","../src/components/Client.tsx","../src/components/ClassClient.tsx","../src/components/Operations.tsx","../src/components/StaticClassClient.tsx"],"sourcesContent":["type Options = {\n  /** When `true`, dot-separated segments are split on `.` and joined with `/` after casing. */\n  isFile?: boolean\n  /** Text prepended before casing is applied. */\n  prefix?: string\n  /** Text appended before casing is applied. */\n  suffix?: string\n}\n\n/**\n * Shared implementation for camelCase and PascalCase conversion.\n * Splits on common word boundaries (spaces, hyphens, underscores, dots, slashes, colons)\n * and capitalizes each word according to `pascal`.\n *\n * When `pascal` is `true` the first word is also capitalized (PascalCase), otherwise only subsequent words are.\n */\nfunction toCamelOrPascal(text: string, pascal: boolean): string {\n  const normalized = text\n    .trim()\n    .replace(/([a-z\\d])([A-Z])/g, '$1 $2')\n    .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n    .replace(/(\\d)([a-z])/g, '$1 $2')\n\n  const words = normalized.split(/[\\s\\-_./\\\\:]+/).filter(Boolean)\n\n  return words\n    .map((word, i) => {\n      const allUpper = word.length > 1 && word === word.toUpperCase()\n      if (allUpper) return word\n      if (i === 0 && !pascal) return word.charAt(0).toLowerCase() + word.slice(1)\n      return word.charAt(0).toUpperCase() + word.slice(1)\n    })\n    .join('')\n    .replace(/[^a-zA-Z0-9]/g, '')\n}\n\n/**\n * Splits `text` on `.` and applies `transformPart` to each segment.\n * The last segment receives `isLast = true`, all earlier segments receive `false`.\n * Segments are joined with `/` to form a file path.\n */\nfunction applyToFileParts(text: string, transformPart: (part: string, isLast: boolean) => string): string {\n  const parts = text.split('.')\n  return parts.map((part, i) => transformPart(part, i === parts.length - 1)).join('/')\n}\n\n/**\n * Converts `text` to camelCase.\n * When `isFile` is `true`, dot-separated segments are each cased independently and joined with `/`.\n *\n * @example\n * camelCase('hello-world')                   // 'helloWorld'\n * camelCase('pet.petId', { isFile: true })   // 'pet/petId'\n */\nexport function camelCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n  if (isFile) {\n    return applyToFileParts(text, (part, isLast) => camelCase(part, isLast ? { prefix, suffix } : {}))\n  }\n\n  return toCamelOrPascal(`${prefix} ${text} ${suffix}`, false)\n}\n\n/**\n * Converts `text` to PascalCase.\n * When `isFile` is `true`, the last dot-separated segment is PascalCased and earlier segments are camelCased.\n *\n * @example\n * pascalCase('hello-world')                  // 'HelloWorld'\n * pascalCase('pet.petId', { isFile: true })  // 'pet/PetId'\n */\nexport function pascalCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n  if (isFile) {\n    return applyToFileParts(text, (part, isLast) => (isLast ? pascalCase(part, { prefix, suffix }) : camelCase(part)))\n  }\n\n  return toCamelOrPascal(`${prefix} ${text} ${suffix}`, true)\n}\n\n/**\n * Converts `text` to snake_case.\n *\n * @example\n * snakeCase('helloWorld')  // 'hello_world'\n * snakeCase('Hello-World') // 'hello_world'\n */\nexport function snakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n  const processed = `${prefix} ${text} ${suffix}`.trim()\n  return processed\n    .replace(/([a-z])([A-Z])/g, '$1_$2')\n    .replace(/[\\s\\-.]+/g, '_')\n    .replace(/[^a-zA-Z0-9_]/g, '')\n    .toLowerCase()\n    .split('_')\n    .filter(Boolean)\n    .join('_')\n}\n\n/**\n * Converts `text` to SCREAMING_SNAKE_CASE.\n *\n * @example\n * screamingSnakeCase('helloWorld') // 'HELLO_WORLD'\n */\nexport function screamingSnakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n  return snakeCase(text, { prefix, suffix }).toUpperCase()\n}\n","/**\n * Builds a JSDoc comment block from an array of lines.\n * Returns `fallback` when `comments` is empty so callers always get a usable string.\n */\nexport function buildJSDoc(\n  comments: Array<string>,\n  options: {\n    /** String to use for indenting each line. Defaults to `'   * '`. */\n    indent?: string\n    /** String appended after the closing tag. Defaults to `'\\n  '`. */\n    suffix?: string\n    /** Returned as-is when `comments` is empty. Defaults to `'  '`. */\n    fallback?: string\n  } = {},\n): string {\n  const { indent = '   * ', suffix = '\\n  ', fallback = '  ' } = options\n\n  if (comments.length === 0) return fallback\n\n  return `/**\\n${comments.map((c) => `${indent}${c}`).join('\\n')}\\n   */${suffix}`\n}\n","/**\n * JavaScript and Java reserved words.\n * @link https://github.com/jonschlinkert/reserved/blob/master/index.js\n */\nconst reservedWords = [\n  'abstract',\n  'arguments',\n  'boolean',\n  'break',\n  'byte',\n  'case',\n  'catch',\n  'char',\n  'class',\n  'const',\n  'continue',\n  'debugger',\n  'default',\n  'delete',\n  'do',\n  'double',\n  'else',\n  'enum',\n  'eval',\n  'export',\n  'extends',\n  'false',\n  'final',\n  'finally',\n  'float',\n  'for',\n  'function',\n  'goto',\n  'if',\n  'implements',\n  'import',\n  'in',\n  'instanceof',\n  'int',\n  'interface',\n  'let',\n  'long',\n  'native',\n  'new',\n  'null',\n  'package',\n  'private',\n  'protected',\n  'public',\n  'return',\n  'short',\n  'static',\n  'super',\n  'switch',\n  'synchronized',\n  'this',\n  'throw',\n  'throws',\n  'transient',\n  'true',\n  'try',\n  'typeof',\n  'var',\n  'void',\n  'volatile',\n  'while',\n  'with',\n  'yield',\n  'Array',\n  'Date',\n  'hasOwnProperty',\n  'Infinity',\n  'isFinite',\n  'isNaN',\n  'isPrototypeOf',\n  'length',\n  'Math',\n  'name',\n  'NaN',\n  'Number',\n  'Object',\n  'prototype',\n  'String',\n  'toString',\n  'undefined',\n  'valueOf',\n]\n\n/**\n * Prefixes a word with `_` when it is a reserved JavaScript/Java identifier\n * or starts with a digit.\n */\nexport function transformReservedWord(word: string): string {\n  const firstChar = word.charCodeAt(0)\n  if (word && (reservedWords.includes(word) || (firstChar >= 48 && firstChar <= 57))) {\n    return `_${word}`\n  }\n  return word\n}\n\n/**\n * Returns `true` when `name` is a syntactically valid JavaScript variable name.\n */\nexport function isValidVarName(name: string): boolean {\n  try {\n    new Function(`var ${name}`)\n  } catch {\n    return false\n  }\n  return true\n}\n","import { camelCase } from './casing.ts'\nimport { isValidVarName } from './reserved.ts'\n\nexport type URLObject = {\n  /** The resolved URL string (Express-style or template literal, depending on context). */\n  url: string\n  /** Extracted path parameters as a key-value map, or `undefined` when the path has none. */\n  params?: Record<string, string>\n}\n\ntype ObjectOptions = {\n  /** Controls whether the `url` is rendered as an Express path or a template literal. Defaults to `'path'`. */\n  type?: 'path' | 'template'\n  /** Optional transform applied to each extracted parameter name. */\n  replacer?: (pathParam: string) => string\n  /** When `true`, the result is serialized to a string expression instead of a plain object. */\n  stringify?: boolean\n}\n\n/** Supported identifier casing strategies for path parameters. */\ntype PathCasing = 'camelcase'\n\ntype Options = {\n  /** Casing strategy applied to path parameter names. Defaults to the original identifier. */\n  casing?: PathCasing\n}\n\n/**\n * Parses and transforms an OpenAPI/Swagger path string into various URL formats.\n *\n * @example\n * const p = new URLPath('/pet/{petId}')\n * p.URL      // '/pet/:petId'\n * p.template // '`/pet/${petId}`'\n */\nexport class URLPath {\n  /** The raw OpenAPI/Swagger path string, e.g. `/pet/{petId}`. */\n  path: string\n\n  #options: Options\n\n  constructor(path: string, options: Options = {}) {\n    this.path = path\n    this.#options = options\n  }\n\n  /** Converts the OpenAPI path to Express-style colon syntax, e.g. `/pet/{petId}` → `/pet/:petId`. */\n  get URL(): string {\n    return this.toURLPath()\n  }\n\n  /** Returns `true` when `path` is a fully-qualified URL (e.g. starts with `https://`). */\n  get isURL(): boolean {\n    try {\n      return !!new URL(this.path).href\n    } catch {\n      return false\n    }\n  }\n\n  /**\n   * Converts the OpenAPI path to a TypeScript template literal string.\n   *\n   * @example\n   * new URLPath('/pet/{petId}').template              // '`/pet/${petId}`'\n   * new URLPath('/account/monetary-accountID').template // '`/account/${monetaryAccountId}`'\n   */\n  get template(): string {\n    return this.toTemplateString()\n  }\n\n  /** Returns the path and its extracted params as a structured `URLObject`, or as a stringified expression when `stringify` is set. */\n  get object(): URLObject | string {\n    return this.toObject()\n  }\n\n  /** Returns a map of path parameter names, or `undefined` when the path has no parameters. */\n  get params(): Record<string, string> | undefined {\n    return this.getParams()\n  }\n\n  #transformParam(raw: string): string {\n    const param = isValidVarName(raw) ? raw : camelCase(raw)\n    return this.#options.casing === 'camelcase' ? camelCase(param) : param\n  }\n\n  /** Iterates over every `{param}` token in `path`, calling `fn` with the raw token and transformed name. */\n  #eachParam(fn: (raw: string, param: string) => void): void {\n    for (const match of this.path.matchAll(/\\{([^}]+)\\}/g)) {\n      const raw = match[1]!\n      fn(raw, this.#transformParam(raw))\n    }\n  }\n\n  toObject({ type = 'path', replacer, stringify }: ObjectOptions = {}): URLObject | string {\n    const object = {\n      url: type === 'path' ? this.toURLPath() : this.toTemplateString({ replacer }),\n      params: this.getParams(),\n    }\n\n    if (stringify) {\n      if (type === 'template') {\n        return JSON.stringify(object).replaceAll(\"'\", '').replaceAll(`\"`, '')\n      }\n\n      if (object.params) {\n        return `{ url: '${object.url}', params: ${JSON.stringify(object.params).replaceAll(\"'\", '').replaceAll(`\"`, '')} }`\n      }\n\n      return `{ url: '${object.url}' }`\n    }\n\n    return object\n  }\n\n  /**\n   * Converts the OpenAPI path to a TypeScript template literal string.\n   * An optional `replacer` can transform each extracted parameter name before interpolation.\n   *\n   * @example\n   * new URLPath('/pet/{petId}').toTemplateString() // '`/pet/${petId}`'\n   */\n  toTemplateString({ prefix = '', replacer }: { prefix?: string; replacer?: (pathParam: string) => string } = {}): string {\n    const parts = this.path.split(/\\{([^}]+)\\}/)\n    const result = parts\n      .map((part, i) => {\n        if (i % 2 === 0) return part\n        const param = this.#transformParam(part)\n        return `\\${${replacer ? replacer(param) : param}}`\n      })\n      .join('')\n\n    return `\\`${prefix}${result}\\``\n  }\n\n  /**\n   * Extracts all `{param}` segments from the path and returns them as a key-value map.\n   * An optional `replacer` transforms each parameter name in both key and value positions.\n   * Returns `undefined` when no path parameters are found.\n   */\n  getParams(replacer?: (pathParam: string) => string): Record<string, string> | undefined {\n    const params: Record<string, string> = {}\n\n    this.#eachParam((_raw, param) => {\n      const key = replacer ? replacer(param) : param\n      params[key] = key\n    })\n\n    return Object.keys(params).length > 0 ? params : undefined\n  }\n\n  /** Converts the OpenAPI path to Express-style colon syntax, e.g. `/pet/{petId}` → `/pet/:petId`. */\n  toURLPath(): string {\n    return this.path.replace(/\\{([^}]+)\\}/g, ':$1')\n  }\n}\n","import { isValidVarName, URLPath } from '@internals/utils'\nimport { getDefaultValue, type Operation } from '@kubb/oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { getParamsMapping, getPathParams } from '@kubb/plugin-oas/utils'\nimport { Const, File, Function, FunctionParams } from '@kubb/react-fabric'\nimport type { FabricReactNode } from '@kubb/react-fabric/types'\nimport type { PluginClient } from '../types.ts'\n\ntype Props = {\n  /**\n   * Name of the function\n   */\n  name: string\n  isExportable?: boolean\n  isIndexable?: boolean\n\n  baseURL: string | undefined\n  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']\n  paramsType: PluginClient['resolvedOptions']['pathParamsType']\n  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']\n  typeSchemas: OperationSchemas\n  operation: Operation\n}\n\ntype GetParamsProps = {\n  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']\n  paramsType: PluginClient['resolvedOptions']['paramsType']\n  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']\n  typeSchemas: OperationSchemas\n}\n\nfunction getParams({ paramsType, paramsCasing, pathParamsType, typeSchemas }: GetParamsProps) {\n  if (paramsType === 'object') {\n    const pathParams = getPathParams(typeSchemas.pathParams, {\n      typed: true,\n      casing: paramsCasing,\n    })\n\n    return FunctionParams.factory({\n      data: {\n        mode: 'object',\n        children: {\n          ...pathParams,\n        },\n      },\n    })\n  }\n\n  return FunctionParams.factory({\n    pathParams: typeSchemas.pathParams?.name\n      ? {\n          mode: pathParamsType === 'object' ? 'object' : 'inlineSpread',\n          children: getPathParams(typeSchemas.pathParams, {\n            typed: true,\n            casing: paramsCasing,\n          }),\n          default: getDefaultValue(typeSchemas.pathParams?.schema),\n        }\n      : undefined,\n  })\n}\n\nexport function Url({\n  name,\n  isExportable = true,\n  isIndexable = true,\n  typeSchemas,\n  baseURL,\n  paramsType,\n  paramsCasing,\n  pathParamsType,\n  operation,\n}: Props): FabricReactNode {\n  const path = new URLPath(operation.path)\n  const params = getParams({\n    paramsType,\n    paramsCasing,\n    pathParamsType,\n    typeSchemas,\n  })\n\n  // Generate pathParams mapping when paramsCasing is used\n  const pathParamsMapping = paramsCasing ? getParamsMapping(typeSchemas.pathParams, { casing: paramsCasing }) : undefined\n\n  return (\n    <File.Source name={name} isExportable={isExportable} isIndexable={isIndexable}>\n      <Function name={name} export={isExportable} params={params.toConstructor()}>\n        {pathParamsMapping &&\n          Object.entries(pathParamsMapping)\n            .filter(([originalName, camelCaseName]) => originalName !== camelCaseName && isValidVarName(originalName))\n            .map(([originalName, camelCaseName]) => `const ${originalName} = ${camelCaseName}`)\n            .join('\\n')}\n        {pathParamsMapping && <br />}\n        <Const name={'res'}>{`{ method: '${operation.method.toUpperCase()}', url: ${path.toTemplateString({ prefix: baseURL })} as const }`}</Const>\n        <br />\n        return res\n      </Function>\n    </File.Source>\n  )\n}\n\nUrl.getParams = getParams\n","import { isValidVarName, URLPath } from '@internals/utils'\nimport { getDefaultValue, isOptional, type Operation } from '@kubb/oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { getComments, getParamsMapping, getPathParams } from '@kubb/plugin-oas/utils'\nimport { File, Function, FunctionParams } from '@kubb/react-fabric'\nimport type { FabricReactNode } from '@kubb/react-fabric/types'\nimport type { PluginClient } from '../types.ts'\nimport { Url } from './Url.tsx'\n\ntype Props = {\n  /**\n   * Name of the function\n   */\n  name: string\n  urlName?: string\n  isExportable?: boolean\n  isIndexable?: boolean\n  isConfigurable?: boolean\n  returnType?: string\n\n  baseURL: string | undefined\n  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']\n  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']\n  paramsType: PluginClient['resolvedOptions']['pathParamsType']\n  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  typeSchemas: OperationSchemas\n  zodSchemas: OperationSchemas | undefined\n  operation: Operation\n  children?: FabricReactNode\n}\n\ntype GetParamsProps = {\n  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']\n  paramsType: PluginClient['resolvedOptions']['paramsType']\n  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']\n  typeSchemas: OperationSchemas\n  isConfigurable: boolean\n}\n\nfunction getParams({ paramsType, paramsCasing, pathParamsType, typeSchemas, isConfigurable }: GetParamsProps) {\n  if (paramsType === 'object') {\n    const pathParams = getPathParams(typeSchemas.pathParams, {\n      typed: true,\n      casing: paramsCasing,\n    })\n\n    const children = {\n      ...pathParams,\n      data: typeSchemas.request?.name\n        ? {\n            type: typeSchemas.request?.name,\n            optional: isOptional(typeSchemas.request?.schema),\n          }\n        : undefined,\n      params: typeSchemas.queryParams?.name\n        ? {\n            type: typeSchemas.queryParams?.name,\n            optional: isOptional(typeSchemas.queryParams?.schema),\n          }\n        : undefined,\n      headers: typeSchemas.headerParams?.name\n        ? {\n            type: typeSchemas.headerParams?.name,\n            optional: isOptional(typeSchemas.headerParams?.schema),\n          }\n        : undefined,\n    }\n\n    // Check if all children are optional or undefined\n    const allChildrenAreOptional = Object.values(children).every((child) => !child || child.optional)\n\n    return FunctionParams.factory({\n      data: {\n        mode: 'object',\n        children,\n        default: allChildrenAreOptional ? '{}' : undefined,\n      },\n      config: isConfigurable\n        ? {\n            type: typeSchemas.request?.name\n              ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: Client }`\n              : 'Partial<RequestConfig> & { client?: Client }',\n            default: '{}',\n          }\n        : undefined,\n    })\n  }\n\n  return FunctionParams.factory({\n    pathParams: typeSchemas.pathParams?.name\n      ? {\n          mode: pathParamsType === 'object' ? 'object' : 'inlineSpread',\n          children: getPathParams(typeSchemas.pathParams, {\n            typed: true,\n            casing: paramsCasing,\n          }),\n          default: getDefaultValue(typeSchemas.pathParams?.schema),\n        }\n      : undefined,\n    data: typeSchemas.request?.name\n      ? {\n          type: typeSchemas.request?.name,\n          optional: isOptional(typeSchemas.request?.schema),\n        }\n      : undefined,\n    params: typeSchemas.queryParams?.name\n      ? {\n          type: typeSchemas.queryParams?.name,\n          optional: isOptional(typeSchemas.queryParams?.schema),\n        }\n      : undefined,\n    headers: typeSchemas.headerParams?.name\n      ? {\n          type: typeSchemas.headerParams?.name,\n          optional: isOptional(typeSchemas.headerParams?.schema),\n        }\n      : undefined,\n    config: isConfigurable\n      ? {\n          type: typeSchemas.request?.name\n            ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: Client }`\n            : 'Partial<RequestConfig> & { client?: Client }',\n          default: '{}',\n        }\n      : undefined,\n  })\n}\n\nexport function Client({\n  name,\n  isExportable = true,\n  isIndexable = true,\n  returnType,\n  typeSchemas,\n  baseURL,\n  dataReturnType,\n  parser,\n  zodSchemas,\n  paramsType,\n  paramsCasing,\n  pathParamsType,\n  operation,\n  urlName,\n  children,\n  isConfigurable = true,\n}: Props): FabricReactNode {\n  const path = new URLPath(operation.path)\n  const contentType = operation.getContentType()\n  const isFormData = contentType === 'multipart/form-data'\n\n  // Generate parameter mappings when paramsCasing is used\n  // Apply to pathParams, queryParams and headerParams\n  const pathParamsMapping = paramsCasing ? getParamsMapping(typeSchemas.pathParams, { casing: paramsCasing }) : undefined\n  const queryParamsMapping = paramsCasing ? getParamsMapping(typeSchemas.queryParams, { casing: paramsCasing }) : undefined\n  const headerParamsMapping = paramsCasing ? getParamsMapping(typeSchemas.headerParams, { casing: paramsCasing }) : undefined\n\n  const headers = [\n    contentType !== 'application/json' && contentType !== 'multipart/form-data' ? `'Content-Type': '${contentType}'` : undefined,\n    typeSchemas.headerParams?.name ? (headerParamsMapping ? '...mappedHeaders' : '...headers') : undefined,\n  ].filter(Boolean)\n\n  const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(' | ') || 'Error'}>`\n\n  const generics = [typeSchemas.response.name, TError, typeSchemas.request?.name || 'unknown'].filter(Boolean)\n  const params = getParams({\n    paramsType,\n    paramsCasing,\n    pathParamsType,\n    typeSchemas,\n    isConfigurable,\n  })\n  const urlParams = Url.getParams({\n    paramsType,\n    paramsCasing,\n    pathParamsType,\n    typeSchemas,\n  })\n\n  const clientParams = FunctionParams.factory({\n    config: {\n      mode: 'object',\n      children: {\n        method: {\n          value: JSON.stringify(operation.method.toUpperCase()),\n        },\n        url: {\n          value: urlName ? `${urlName}(${urlParams.toCall()}).url.toString()` : path.template,\n        },\n        baseURL:\n          baseURL && !urlName\n            ? {\n                value: `\\`${baseURL}\\``,\n              }\n            : undefined,\n        params: typeSchemas.queryParams?.name ? (queryParamsMapping ? { value: 'mappedParams' } : {}) : undefined,\n        data: typeSchemas.request?.name\n          ? {\n              value: isFormData ? 'formData as FormData' : 'requestData',\n            }\n          : undefined,\n        requestConfig: isConfigurable\n          ? {\n              mode: 'inlineSpread',\n            }\n          : undefined,\n        headers: headers.length\n          ? {\n              value: isConfigurable ? `{ ${headers.join(', ')}, ...requestConfig.headers }` : `{ ${headers.join(', ')} }`,\n            }\n          : undefined,\n      },\n    },\n  })\n\n  const childrenElement = children ? (\n    children\n  ) : (\n    <>\n      {dataReturnType === 'full' && parser === 'zod' && zodSchemas && `return {...res, data: ${zodSchemas.response.name}.parse(res.data)}`}\n      {dataReturnType === 'data' && parser === 'zod' && zodSchemas && `return ${zodSchemas.response.name}.parse(res.data)`}\n      {dataReturnType === 'full' && parser === 'client' && 'return res'}\n      {dataReturnType === 'data' && parser === 'client' && 'return res.data'}\n    </>\n  )\n\n  return (\n    <>\n      <br />\n\n      <File.Source name={name} isExportable={isExportable} isIndexable={isIndexable}>\n        <Function\n          name={name}\n          async\n          export={isExportable}\n          params={params.toConstructor()}\n          JSDoc={{\n            comments: getComments(operation),\n          }}\n          returnType={returnType}\n        >\n          {isConfigurable ? 'const { client: request = fetch, ...requestConfig } = config' : ''}\n          <br />\n          <br />\n          {!urlName &&\n            pathParamsMapping &&\n            Object.entries(pathParamsMapping)\n              .filter(([originalName, camelCaseName]) => originalName !== camelCaseName && isValidVarName(originalName))\n              .map(([originalName, camelCaseName]) => `const ${originalName} = ${camelCaseName}`)\n              .join('\\n')}\n          {!urlName && pathParamsMapping && (\n            <>\n              <br />\n              <br />\n            </>\n          )}\n          {queryParamsMapping && typeSchemas.queryParams?.name && (\n            <>\n              {`const mappedParams = params ? { ${Object.entries(queryParamsMapping)\n                .map(([originalName, camelCaseName]) => `\"${originalName}\": params.${camelCaseName}`)\n                .join(', ')} } : undefined`}\n              <br />\n              <br />\n            </>\n          )}\n          {headerParamsMapping && typeSchemas.headerParams?.name && (\n            <>\n              {`const mappedHeaders = headers ? { ${Object.entries(headerParamsMapping)\n                .map(([originalName, camelCaseName]) => `\"${originalName}\": headers.${camelCaseName}`)\n                .join(', ')} } : undefined`}\n              <br />\n              <br />\n            </>\n          )}\n          {parser === 'zod' && zodSchemas?.request?.name\n            ? `const requestData = ${zodSchemas.request.name}.parse(data)`\n            : typeSchemas?.request?.name && 'const requestData = data'}\n          <br />\n          {isFormData && typeSchemas?.request?.name && 'const formData = buildFormData(requestData)'}\n          <br />\n          {isConfigurable\n            ? `const res = await request<${generics.join(', ')}>(${clientParams.toCall()})`\n            : `const res = await fetch<${generics.join(', ')}>(${clientParams.toCall()})`}\n          <br />\n          {childrenElement}\n        </Function>\n      </File.Source>\n    </>\n  )\n}\n\nClient.getParams = getParams\n","import { buildJSDoc, URLPath } from '@internals/utils'\nimport type { Operation } from '@kubb/oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { getComments } from '@kubb/plugin-oas/utils'\nimport { File, FunctionParams } from '@kubb/react-fabric'\nimport type { FabricReactNode } from '@kubb/react-fabric/types'\nimport type { PluginClient } from '../types.ts'\n\nimport { Client } from './Client.tsx'\n\ntype Props = {\n  /**\n   * Name of the class\n   */\n  name: string\n  isExportable?: boolean\n  isIndexable?: boolean\n  operations: Array<{\n    operation: Operation\n    name: string\n    typeSchemas: OperationSchemas\n    zodSchemas: OperationSchemas | undefined\n  }>\n  baseURL: string | undefined\n  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']\n  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']\n  paramsType: PluginClient['resolvedOptions']['pathParamsType']\n  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  children?: FabricReactNode\n}\n\ntype GenerateMethodProps = {\n  operation: Operation\n  name: string\n  typeSchemas: OperationSchemas\n  zodSchemas: OperationSchemas | undefined\n  baseURL: string | undefined\n  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  paramsType: PluginClient['resolvedOptions']['paramsType']\n  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']\n  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']\n}\n\nfunction buildHeaders(contentType: string, hasHeaderParams: boolean): Array<string> {\n  return [\n    contentType !== 'application/json' && contentType !== 'multipart/form-data' ? `'Content-Type': '${contentType}'` : undefined,\n    hasHeaderParams ? '...headers' : undefined,\n  ].filter(Boolean) as Array<string>\n}\n\nfunction buildGenerics(typeSchemas: OperationSchemas): Array<string> {\n  const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(' | ') || 'Error'}>`\n  return [typeSchemas.response.name, TError, typeSchemas.request?.name || 'unknown'].filter(Boolean)\n}\n\nfunction buildClientParams({\n  operation,\n  path,\n  baseURL,\n  typeSchemas,\n  isFormData,\n  headers,\n}: {\n  operation: Operation\n  path: URLPath\n  baseURL: string | undefined\n  typeSchemas: OperationSchemas\n  isFormData: boolean\n  headers: Array<string>\n}) {\n  return FunctionParams.factory({\n    config: {\n      mode: 'object',\n      children: {\n        requestConfig: {\n          mode: 'inlineSpread',\n        },\n        method: {\n          value: JSON.stringify(operation.method.toUpperCase()),\n        },\n        url: {\n          value: path.template,\n        },\n        baseURL: baseURL\n          ? {\n              value: JSON.stringify(baseURL),\n            }\n          : undefined,\n        params: typeSchemas.queryParams?.name ? {} : undefined,\n        data: typeSchemas.request?.name\n          ? {\n              value: isFormData ? 'formData as FormData' : 'requestData',\n            }\n          : undefined,\n        headers: headers.length\n          ? {\n              value: `{ ${headers.join(', ')}, ...requestConfig.headers }`,\n            }\n          : undefined,\n      },\n    },\n  })\n}\n\nfunction buildRequestDataLine({\n  parser,\n  zodSchemas,\n  typeSchemas,\n}: {\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  zodSchemas: OperationSchemas | undefined\n  typeSchemas: OperationSchemas\n}): string {\n  if (parser === 'zod' && zodSchemas?.request?.name) {\n    return `const requestData = ${zodSchemas.request.name}.parse(data)`\n  }\n  if (typeSchemas?.request?.name) {\n    return 'const requestData = data'\n  }\n  return ''\n}\n\nfunction buildFormDataLine(isFormData: boolean, hasRequest: boolean): string {\n  return isFormData && hasRequest ? 'const formData = buildFormData(requestData)' : ''\n}\n\nfunction buildReturnStatement({\n  dataReturnType,\n  parser,\n  zodSchemas,\n}: {\n  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  zodSchemas: OperationSchemas | undefined\n}): string {\n  if (dataReturnType === 'full' && parser === 'zod' && zodSchemas) {\n    return `return {...res, data: ${zodSchemas.response.name}.parse(res.data)}`\n  }\n  if (dataReturnType === 'data' && parser === 'zod' && zodSchemas) {\n    return `return ${zodSchemas.response.name}.parse(res.data)`\n  }\n  if (dataReturnType === 'full' && parser === 'client') {\n    return 'return res'\n  }\n  return 'return res.data'\n}\n\nfunction generateMethod({\n  operation,\n  name,\n  typeSchemas,\n  zodSchemas,\n  baseURL,\n  dataReturnType,\n  parser,\n  paramsType,\n  paramsCasing,\n  pathParamsType,\n}: GenerateMethodProps): string {\n  const path = new URLPath(operation.path, { casing: paramsCasing })\n  const contentType = operation.getContentType()\n  const isFormData = contentType === 'multipart/form-data'\n  const headers = buildHeaders(contentType, !!typeSchemas.headerParams?.name)\n  const generics = buildGenerics(typeSchemas)\n  const params = ClassClient.getParams({ paramsType, paramsCasing, pathParamsType, typeSchemas, isConfigurable: true })\n  const clientParams = buildClientParams({ operation, path, baseURL, typeSchemas, isFormData, headers })\n  const jsdoc = buildJSDoc(getComments(operation))\n\n  const requestDataLine = buildRequestDataLine({ parser, zodSchemas, typeSchemas })\n  const formDataLine = buildFormDataLine(isFormData, !!typeSchemas?.request?.name)\n  const returnStatement = buildReturnStatement({ dataReturnType, parser, zodSchemas })\n\n  const methodBody = [\n    'const { client: request = fetch, ...requestConfig } = mergeConfig(this.#config, config)',\n    '',\n    requestDataLine,\n    formDataLine,\n    `const res = await request<${generics.join(', ')}>(${clientParams.toCall()})`,\n    returnStatement,\n  ]\n    .filter(Boolean)\n    .map((line) => `    ${line}`)\n    .join('\\n')\n\n  return `${jsdoc}async ${name}(${params.toConstructor()}) {\\n${methodBody}\\n  }`\n}\n\nexport function ClassClient({\n  name,\n  isExportable = true,\n  isIndexable = true,\n  operations,\n  baseURL,\n  dataReturnType,\n  parser,\n  paramsType,\n  paramsCasing,\n  pathParamsType,\n  children,\n}: Props): FabricReactNode {\n  const methods = operations.map(({ operation, name: methodName, typeSchemas, zodSchemas }) =>\n    generateMethod({\n      operation,\n      name: methodName,\n      typeSchemas,\n      zodSchemas,\n      baseURL,\n      dataReturnType,\n      parser,\n      paramsType,\n      paramsCasing,\n      pathParamsType,\n    }),\n  )\n\n  const classCode = `export class ${name} {\n  #config: Partial<RequestConfig> & { client?: Client }\n\n  constructor(config: Partial<RequestConfig> & { client?: Client } = {}) {\n    this.#config = config\n  }\n\n${methods.join('\\n\\n')}\n}`\n\n  return (\n    <File.Source name={name} isExportable={isExportable} isIndexable={isIndexable}>\n      {classCode}\n      {children}\n    </File.Source>\n  )\n}\nClassClient.getParams = Client.getParams\n","import { URLPath } from '@internals/utils'\nimport type { HttpMethod, Operation } from '@kubb/oas'\nimport { Const, File } from '@kubb/react-fabric'\nimport type { FabricReactNode } from '@kubb/react-fabric/types'\n\ntype OperationsProps = {\n  name: string\n  operations: Array<Operation>\n}\n\nexport function Operations({ name, operations }: OperationsProps): FabricReactNode {\n  const operationsObject: Record<string, { path: string; method: HttpMethod }> = {}\n\n  operations.forEach((operation) => {\n    operationsObject[operation.getOperationId()] = {\n      path: new URLPath(operation.path).URL,\n      method: operation.method,\n    }\n  })\n\n  return (\n    <File.Source name={name} isExportable isIndexable>\n      <Const name={name} export>\n        {JSON.stringify(operationsObject, undefined, 2)}\n      </Const>\n    </File.Source>\n  )\n}\n","import { buildJSDoc, URLPath } from '@internals/utils'\nimport type { Operation } from '@kubb/oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { getComments } from '@kubb/plugin-oas/utils'\nimport { File, FunctionParams } from '@kubb/react-fabric'\nimport type { FabricReactNode } from '@kubb/react-fabric/types'\nimport type { PluginClient } from '../types.ts'\nimport { Client } from './Client.tsx'\n\ntype Props = {\n  name: string\n  isExportable?: boolean\n  isIndexable?: boolean\n  operations: Array<{\n    operation: Operation\n    name: string\n    typeSchemas: OperationSchemas\n    zodSchemas: OperationSchemas | undefined\n  }>\n  baseURL: string | undefined\n  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']\n  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']\n  paramsType: PluginClient['resolvedOptions']['pathParamsType']\n  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  children?: FabricReactNode\n}\n\ntype GenerateMethodProps = {\n  operation: Operation\n  name: string\n  typeSchemas: OperationSchemas\n  zodSchemas: OperationSchemas | undefined\n  baseURL: string | undefined\n  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  paramsType: PluginClient['resolvedOptions']['paramsType']\n  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']\n  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']\n}\n\nfunction buildHeaders(contentType: string, hasHeaderParams: boolean): Array<string> {\n  return [\n    contentType !== 'application/json' && contentType !== 'multipart/form-data' ? `'Content-Type': '${contentType}'` : undefined,\n    hasHeaderParams ? '...headers' : undefined,\n  ].filter(Boolean) as Array<string>\n}\n\nfunction buildGenerics(typeSchemas: OperationSchemas): Array<string> {\n  const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(' | ') || 'Error'}>`\n  return [typeSchemas.response.name, TError, typeSchemas.request?.name || 'unknown'].filter(Boolean)\n}\n\nfunction buildClientParams({\n  operation,\n  path,\n  baseURL,\n  typeSchemas,\n  isFormData,\n  headers,\n}: {\n  operation: Operation\n  path: URLPath\n  baseURL: string | undefined\n  typeSchemas: OperationSchemas\n  isFormData: boolean\n  headers: Array<string>\n}) {\n  return FunctionParams.factory({\n    config: {\n      mode: 'object',\n      children: {\n        requestConfig: {\n          mode: 'inlineSpread',\n        },\n        method: {\n          value: JSON.stringify(operation.method.toUpperCase()),\n        },\n        url: {\n          value: path.template,\n        },\n        baseURL: baseURL\n          ? {\n              value: JSON.stringify(baseURL),\n            }\n          : undefined,\n        params: typeSchemas.queryParams?.name ? {} : undefined,\n        data: typeSchemas.request?.name\n          ? {\n              value: isFormData ? 'formData as FormData' : 'requestData',\n            }\n          : undefined,\n        headers: headers.length\n          ? {\n              value: `{ ${headers.join(', ')}, ...requestConfig.headers }`,\n            }\n          : undefined,\n      },\n    },\n  })\n}\n\nfunction buildRequestDataLine({\n  parser,\n  zodSchemas,\n  typeSchemas,\n}: {\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  zodSchemas: OperationSchemas | undefined\n  typeSchemas: OperationSchemas\n}): string {\n  if (parser === 'zod' && zodSchemas?.request?.name) {\n    return `const requestData = ${zodSchemas.request.name}.parse(data)`\n  }\n  if (typeSchemas?.request?.name) {\n    return 'const requestData = data'\n  }\n  return ''\n}\n\nfunction buildFormDataLine(isFormData: boolean, hasRequest: boolean): string {\n  return isFormData && hasRequest ? 'const formData = buildFormData(requestData)' : ''\n}\n\nfunction buildReturnStatement({\n  dataReturnType,\n  parser,\n  zodSchemas,\n}: {\n  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']\n  parser: PluginClient['resolvedOptions']['parser'] | undefined\n  zodSchemas: OperationSchemas | undefined\n}): string {\n  if (dataReturnType === 'full' && parser === 'zod' && zodSchemas) {\n    return `return {...res, data: ${zodSchemas.response.name}.parse(res.data)}`\n  }\n  if (dataReturnType === 'data' && parser === 'zod' && zodSchemas) {\n    return `return ${zodSchemas.response.name}.parse(res.data)`\n  }\n  if (dataReturnType === 'full' && parser === 'client') {\n    return 'return res'\n  }\n  return 'return res.data'\n}\n\nfunction generateMethod({\n  operation,\n  name,\n  typeSchemas,\n  zodSchemas,\n  baseURL,\n  dataReturnType,\n  parser,\n  paramsType,\n  paramsCasing,\n  pathParamsType,\n}: GenerateMethodProps): string {\n  const path = new URLPath(operation.path, { casing: paramsCasing })\n  const contentType = operation.getContentType()\n  const isFormData = contentType === 'multipart/form-data'\n  const headers = buildHeaders(contentType, !!typeSchemas.headerParams?.name)\n  const generics = buildGenerics(typeSchemas)\n  const params = Client.getParams({ paramsType, paramsCasing, pathParamsType, typeSchemas, isConfigurable: true })\n  const clientParams = buildClientParams({ operation, path, baseURL, typeSchemas, isFormData, headers })\n  const jsdoc = buildJSDoc(getComments(operation))\n\n  const requestDataLine = buildRequestDataLine({ parser, zodSchemas, typeSchemas })\n  const formDataLine = buildFormDataLine(isFormData, !!typeSchemas?.request?.name)\n  const returnStatement = buildReturnStatement({ dataReturnType, parser, zodSchemas })\n\n  const methodBody = [\n    'const { client: request = fetch, ...requestConfig } = mergeConfig(this.#config, config)',\n    '',\n    requestDataLine,\n    formDataLine,\n    `const res = await request<${generics.join(', ')}>(${clientParams.toCall()})`,\n    returnStatement,\n  ]\n    .filter(Boolean)\n    .map((line) => `    ${line}`)\n    .join('\\n')\n\n  // Indent static method by 2 spaces, body by 4 spaces (matching snapshot)\n  return `${jsdoc}  static async ${name}(${params.toConstructor()}) {\\n${methodBody}\\n  }`\n}\n\nexport function StaticClassClient({\n  name,\n  isExportable = true,\n  isIndexable = true,\n  operations,\n  baseURL,\n  dataReturnType,\n  parser,\n  paramsType,\n  paramsCasing,\n  pathParamsType,\n  children,\n}: Props): FabricReactNode {\n  const methods = operations.map(({ operation, name: methodName, typeSchemas, zodSchemas }) =>\n    generateMethod({\n      operation,\n      name: methodName,\n      typeSchemas,\n      zodSchemas,\n      baseURL,\n      dataReturnType,\n      parser,\n      paramsType,\n      paramsCasing,\n      pathParamsType,\n    }),\n  )\n\n  const classCode = `export class ${name} {\\n  static #config: Partial<RequestConfig> & { client?: Client } = {}\\n\\n${methods.join('\\n\\n')}\\n}`\n\n  return (\n    <File.Source name={name} isExportable={isExportable} isIndexable={isIndexable}>\n      {classCode}\n      {children}\n    </File.Source>\n  )\n}\nStaticClassClient.getParams = Client.getParams\n"],"mappings":"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"}