{"version":3,"file":"plugin-DisX5G9r.cjs","names":["pascalCase","keywordTypeNodes","createUrlTemplateType","ts","getUnknownType","SchemaGenerator","File","Type","schemaKeywords","pluginOasName","path","camelCase","pascalCase","SchemaGenerator","OperationGenerator"],"sources":["../src/generators/typeGenerator.tsx","../src/plugin.ts"],"sourcesContent":["import { pascalCase } from '@internals/utils'\nimport type { PluginManager } from '@kubb/core'\nimport { useMode, usePluginManager } from '@kubb/core/hooks'\nimport { safePrint } from '@kubb/fabric-core/parsers/typescript'\nimport type { Operation } from '@kubb/oas'\nimport { isKeyword, type OperationSchemas, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { applyParamsCasing, getBanner, getFooter, getImports, isParameterSchema } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport ts from 'typescript'\nimport { Type } from '../components'\nimport * as factory from '../factory.ts'\nimport { createUrlTemplateType, getUnknownType, keywordTypeNodes } from '../factory.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types'\n\nfunction printCombinedSchema({ name, schemas, pluginManager }: { name: string; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n  const properties: Record<string, ts.TypeNode> = {}\n\n  if (schemas.response) {\n    properties['response'] = factory.createUnionDeclaration({\n      nodes: schemas.responses.map((res) => {\n        const identifier = pluginManager.resolveName({\n          name: res.name,\n          pluginKey: [pluginTsName],\n          type: 'function',\n        })\n\n        return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n      }),\n    })!\n  }\n\n  if (schemas.request) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.request.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['request'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.pathParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.pathParams.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['pathParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.queryParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.queryParams.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['queryParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.headerParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.headerParams.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['headerParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.errors) {\n    properties['errors'] = factory.createUnionDeclaration({\n      nodes: schemas.errors.map((error) => {\n        const identifier = pluginManager.resolveName({\n          name: error.name,\n          pluginKey: [pluginTsName],\n          type: 'function',\n        })\n\n        return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n      }),\n    })!\n  }\n\n  const namespaceNode = factory.createTypeAliasDeclaration({\n    name,\n    type: factory.createTypeLiteralNode(\n      Object.keys(properties)\n        .map((key) => {\n          const type = properties[key]\n          if (!type) {\n            return undefined\n          }\n\n          return factory.createPropertySignature({\n            name: pascalCase(key),\n            type,\n          })\n        })\n        .filter(Boolean),\n    ),\n    modifiers: [factory.modifiers.export],\n  })\n\n  return safePrint(namespaceNode)\n}\n\nfunction printRequestSchema({\n  baseName,\n  operation,\n  schemas,\n  pluginManager,\n}: {\n  baseName: string\n  operation: Operation\n  schemas: OperationSchemas\n  pluginManager: PluginManager\n}): string {\n  const name = pluginManager.resolveName({\n    name: `${baseName} Request`,\n    pluginKey: [pluginTsName],\n    type: 'type',\n  })\n\n  const results: string[] = []\n\n  // Generate DataRequest type\n  const dataRequestProperties: ts.PropertySignature[] = []\n\n  if (schemas.request) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.request.name,\n      pluginKey: [pluginTsName],\n      type: 'type',\n    })\n    dataRequestProperties.push(\n      factory.createPropertySignature({\n        name: 'data',\n        questionToken: true,\n        type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n      }),\n    )\n  } else {\n    dataRequestProperties.push(\n      factory.createPropertySignature({\n        name: 'data',\n        questionToken: true,\n        type: keywordTypeNodes.never,\n      }),\n    )\n  }\n\n  // Add pathParams property\n  if (schemas.pathParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.pathParams.name,\n      pluginKey: [pluginTsName],\n      type: 'type',\n    })\n    dataRequestProperties.push(\n      factory.createPropertySignature({\n        name: 'pathParams',\n        type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n      }),\n    )\n  } else {\n    dataRequestProperties.push(\n      factory.createPropertySignature({\n        name: 'pathParams',\n        questionToken: true,\n        type: keywordTypeNodes.never,\n      }),\n    )\n  }\n\n  // Add queryParams property\n  if (schemas.queryParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.queryParams.name,\n      pluginKey: [pluginTsName],\n      type: 'type',\n    })\n    dataRequestProperties.push(\n      factory.createPropertySignature({\n        name: 'queryParams',\n        questionToken: true,\n        type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n      }),\n    )\n  } else {\n    dataRequestProperties.push(\n      factory.createPropertySignature({\n        name: 'queryParams',\n        questionToken: true,\n        type: keywordTypeNodes.never,\n      }),\n    )\n  }\n\n  // Add headerParams property\n  if (schemas.headerParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.headerParams.name,\n      pluginKey: [pluginTsName],\n      type: 'type',\n    })\n    dataRequestProperties.push(\n      factory.createPropertySignature({\n        name: 'headerParams',\n        questionToken: true,\n        type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n      }),\n    )\n  } else {\n    dataRequestProperties.push(\n      factory.createPropertySignature({\n        name: 'headerParams',\n        questionToken: true,\n        type: keywordTypeNodes.never,\n      }),\n    )\n  }\n\n  // Add url property with template literal type\n  dataRequestProperties.push(\n    factory.createPropertySignature({\n      name: 'url',\n      type: createUrlTemplateType(operation.path),\n    }),\n  )\n\n  const dataRequestNode = factory.createTypeAliasDeclaration({\n    name,\n    type: factory.createTypeLiteralNode(dataRequestProperties),\n    modifiers: [factory.modifiers.export],\n  })\n\n  results.push(safePrint(dataRequestNode))\n\n  return results.join('\\n\\n')\n}\n\nfunction printResponseSchema({\n  baseName,\n  schemas,\n  pluginManager,\n  unknownType,\n}: {\n  baseName: string\n  schemas: OperationSchemas\n  pluginManager: PluginManager\n  unknownType: PluginTs['resolvedOptions']['unknownType']\n}): string {\n  const results: string[] = []\n\n  const name = pluginManager.resolveName({\n    name: `${baseName} ResponseData`,\n    pluginKey: [pluginTsName],\n    type: 'type',\n  })\n\n  // Generate Responses type (mapping status codes to response types)\n  if (schemas.responses && schemas.responses.length > 0) {\n    const responsesProperties: ts.PropertySignature[] = schemas.responses.map((res) => {\n      const identifier = pluginManager.resolveName({\n        name: res.name,\n        pluginKey: [pluginTsName],\n        type: 'type',\n      })\n\n      return factory.createPropertySignature({\n        name: res.statusCode?.toString() ?? 'default',\n        type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n      })\n    })\n\n    const responsesNode = factory.createTypeAliasDeclaration({\n      name: `${baseName}Responses`,\n      type: factory.createTypeLiteralNode(responsesProperties),\n      modifiers: [factory.modifiers.export],\n    })\n\n    results.push(safePrint(responsesNode))\n\n    // Generate Response type (union via indexed access)\n    const responseNode = factory.createTypeAliasDeclaration({\n      name,\n      type: factory.createIndexedAccessTypeNode(\n        factory.createTypeReferenceNode(factory.createIdentifier(`${baseName}Responses`), undefined),\n        factory.createTypeOperatorNode(\n          ts.SyntaxKind.KeyOfKeyword,\n          factory.createTypeReferenceNode(factory.createIdentifier(`${baseName}Responses`), undefined),\n        ),\n      ),\n      modifiers: [factory.modifiers.export],\n    })\n\n    results.push(safePrint(responseNode))\n  } else {\n    const responseNode = factory.createTypeAliasDeclaration({\n      name,\n      modifiers: [factory.modifiers.export],\n      type: getUnknownType(unknownType),\n    })\n\n    results.push(safePrint(responseNode))\n  }\n\n  return results.join('\\n\\n')\n}\n\nexport const typeGenerator = createReactGenerator<PluginTs, '1'>({\n  name: 'typescript',\n  version: '1',\n  Operation({ operation, generator, plugin }) {\n    const {\n      options,\n      options: { mapper, enumType, enumTypeSuffix, enumKeyCasing, syntaxType, optionalType, arrayType, unknownType, paramsCasing },\n    } = plugin\n\n    const mode = useMode()\n    const pluginManager = usePluginManager()\n\n    const oas = useOas()\n    const { getSchemas, getFile, getName, getGroup } = useOperationManager(generator)\n    const schemaManager = useSchemaManager()\n\n    const name = getName(operation, { type: 'type', pluginKey: [pluginTsName] })\n\n    const file = getFile(operation)\n    const schemas = getSchemas(operation)\n    const schemaGenerator = new SchemaGenerator(options, {\n      fabric: generator.context.fabric,\n      oas,\n      events: generator.context.events,\n      plugin,\n      pluginManager,\n      mode,\n      override: options.override,\n    })\n\n    const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n      .flat()\n      .filter(Boolean)\n\n    const mapOperationSchema = ({ name, schema, description, keysToOmit, ...options }: OperationSchemaType) => {\n      // Apply paramsCasing transformation to pathParams, queryParams, and headerParams (not response)\n      const shouldTransform = paramsCasing && isParameterSchema(name)\n      const transformedSchema = shouldTransform ? applyParamsCasing(schema, paramsCasing) : schema\n\n      const tree = schemaGenerator.parse({ schema: transformedSchema, name, parentName: null })\n      const imports = getImports(tree)\n      const group = options.operation ? getGroup(options.operation) : undefined\n\n      const type = {\n        name: schemaManager.getName(name, { type: 'type' }),\n        typedName: schemaManager.getName(name, { type: 'type' }),\n        file: schemaManager.getFile(options.operationName || name, { group }),\n      }\n\n      return (\n        <>\n          {mode === 'split' &&\n            imports.map((imp) => (\n              <File.Import key={[name, imp.name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />\n            ))}\n          <Type\n            name={type.name}\n            typedName={type.typedName}\n            description={description}\n            tree={tree}\n            schema={transformedSchema}\n            mapper={mapper}\n            enumType={enumType}\n            enumTypeSuffix={enumTypeSuffix}\n            enumKeyCasing={enumKeyCasing}\n            optionalType={optionalType}\n            arrayType={arrayType}\n            keysToOmit={keysToOmit}\n            syntaxType={syntaxType}\n          />\n        </>\n      )\n    }\n\n    const responseName = schemaManager.getName(schemas.response.name, {\n      type: 'type',\n    })\n    const combinedSchemaName = operation.method === 'get' ? `${name}Query` : `${name}Mutation`\n\n    return (\n      <File\n        baseName={file.baseName}\n        path={file.path}\n        meta={file.meta}\n        banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n        footer={getFooter({ oas, output: plugin.options.output })}\n      >\n        {operationSchemas.map(mapOperationSchema)}\n\n        {generator.context.UNSTABLE_NAMING ? (\n          <>\n            <File.Source name={`${name}Request`} isExportable isIndexable isTypeOnly>\n              {printRequestSchema({ baseName: name, operation, schemas, pluginManager })}\n            </File.Source>\n            <File.Source name={responseName} isExportable isIndexable isTypeOnly>\n              {printResponseSchema({ baseName: name, schemas, pluginManager, unknownType })}\n            </File.Source>\n          </>\n        ) : (\n          <File.Source name={combinedSchemaName} isExportable isIndexable isTypeOnly>\n            {printCombinedSchema({ name: combinedSchemaName, schemas, pluginManager })}\n          </File.Source>\n        )}\n      </File>\n    )\n  },\n  Schema({ schema, plugin }) {\n    const {\n      options: { mapper, enumType, enumTypeSuffix, enumKeyCasing, syntaxType, optionalType, arrayType, output },\n    } = plugin\n    const mode = useMode()\n\n    const oas = useOas()\n    const pluginManager = usePluginManager()\n\n    const { getName, getFile } = useSchemaManager()\n    const imports = getImports(schema.tree)\n    const schemaFromTree = schema.tree.find((item) => item.keyword === schemaKeywords.schema)\n\n    let typedName = getName(schema.name, { type: 'type' })\n\n    if (['asConst', 'asPascalConst'].includes(enumType) && schemaFromTree && isKeyword(schemaFromTree, schemaKeywords.enum)) {\n      typedName += enumTypeSuffix // Suffix for avoiding collisions (https://github.com/kubb-labs/kubb/issues/1873)\n    }\n\n    const type = {\n      name: getName(schema.name, { type: 'function' }),\n      typedName,\n      file: getFile(schema.name),\n    }\n\n    return (\n      <File\n        baseName={type.file.baseName}\n        path={type.file.path}\n        meta={type.file.meta}\n        banner={getBanner({ oas, output, config: pluginManager.config })}\n        footer={getFooter({ oas, output })}\n      >\n        {mode === 'split' &&\n          imports.map((imp) => (\n            <File.Import key={[schema.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n          ))}\n        <Type\n          name={type.name}\n          typedName={type.typedName}\n          description={schema.value.description}\n          tree={schema.tree}\n          schema={schema.value}\n          mapper={mapper}\n          enumType={enumType}\n          enumTypeSuffix={enumTypeSuffix}\n          enumKeyCasing={enumKeyCasing}\n          optionalType={optionalType}\n          arrayType={arrayType}\n          syntaxType={syntaxType}\n        />\n      </File>\n    )\n  },\n})\n","import path from 'node:path'\nimport { camelCase, pascalCase } from '@internals/utils'\nimport { walk } from '@kubb/ast'\nimport { definePlugin, type Group, getBarrelFiles, getMode } from '@kubb/core'\nimport { buildSchema, OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { typeGenerator } from './generators'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = definePlugin<PluginTs>((options) => {\n  const {\n    output = { path: 'types', barrelType: 'named' },\n    group,\n    exclude = [],\n    include,\n    override = [],\n    enumType = 'asConst',\n    enumTypeSuffix = 'Key',\n    enumKeyCasing = 'none',\n    enumSuffix = 'enum',\n    dateType = 'string',\n    integerType = 'number',\n    unknownType = 'any',\n    optionalType = 'questionToken',\n    arrayType = 'array',\n    emptySchemaType = unknownType,\n    syntaxType = 'type',\n    transformers = {},\n    mapper = {},\n    paramsCasing,\n    generators = [typeGenerator].filter(Boolean),\n    contentType,\n    UNSTABLE_NAMING,\n  } = options\n\n  // @deprecated Will be removed in v5 when collisionDetection defaults to true\n  const usedEnumNames = {}\n\n  return {\n    name: pluginTsName,\n    options: {\n      output,\n      transformers,\n      dateType,\n      integerType,\n      optionalType,\n      arrayType,\n      enumType,\n      enumTypeSuffix,\n      enumKeyCasing,\n      enumSuffix,\n      unknownType,\n      emptySchemaType,\n      syntaxType,\n      group,\n      override,\n      mapper,\n      paramsCasing,\n      usedEnumNames,\n    },\n    pre: [pluginOasName],\n    resolvePath(baseName, pathMode, options) {\n      const root = path.resolve(this.config.root, this.config.output.path)\n      const mode = pathMode ?? getMode(path.resolve(root, output.path))\n\n      if (mode === 'single') {\n        /**\n         * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n         * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n         */\n        return path.resolve(root, output.path)\n      }\n\n      if (group && (options?.group?.path || options?.group?.tag)) {\n        const groupName: Group['name'] = group?.name\n          ? group.name\n          : (ctx) => {\n              if (group?.type === 'path') {\n                return `${ctx.group.split('/')[1]}`\n              }\n              return `${camelCase(ctx.group)}Controller`\n            }\n\n        return path.resolve(\n          root,\n          output.path,\n          groupName({\n            group: group.type === 'path' ? options.group.path! : options.group.tag!,\n          }),\n          baseName,\n        )\n      }\n\n      return path.resolve(root, output.path, baseName)\n    },\n    resolveName(name, type) {\n      const resolvedName = pascalCase(name, { isFile: type === 'file' })\n\n      if (type) {\n        return transformers?.name?.(resolvedName, type) || resolvedName\n      }\n\n      return resolvedName\n    },\n    async install() {\n      const { config, fabric, plugin } = this\n\n      const root = path.resolve(config.root, config.output.path)\n      const mode = getMode(path.resolve(root, output.path))\n\n      if (this.rootNode) {\n        await this.openInStudio({ ast: true })\n\n        await walk(\n          this.rootNode,\n          {\n            async schema(schemaNode) {\n              const writeTasks = generators.map(async (generator) => {\n                if (generator.type === 'react' && generator.version === '2') {\n                  await buildSchema(schemaNode, {\n                    config,\n                    fabric,\n                    Component: generator.Schema,\n                    plugin,\n                    version: generator.version,\n                  })\n                }\n              })\n\n              await writeTasks\n            },\n          },\n          { depth: 'shallow' },\n        )\n\n        return\n      }\n\n      const oas = await this.getOas()\n\n      const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n        fabric: this.fabric,\n        oas,\n        pluginManager: this.pluginManager,\n        events: this.events,\n        plugin: this.plugin,\n        contentType,\n        include: undefined,\n        override,\n        mode,\n        output: output.path,\n      })\n\n      const schemaFiles = await schemaGenerator.build(...generators)\n      await this.upsertFile(...schemaFiles)\n\n      const operationGenerator = new OperationGenerator(this.plugin.options, {\n        fabric: this.fabric,\n        oas,\n        pluginManager: this.pluginManager,\n        events: this.events,\n        plugin: this.plugin,\n        contentType,\n        exclude,\n        include,\n        override,\n        mode,\n        UNSTABLE_NAMING,\n      })\n\n      const operationFiles = await operationGenerator.build(...generators)\n      await this.upsertFile(...operationFiles)\n\n      const barrelFiles = await getBarrelFiles(this.fabric.files, {\n        type: output.barrelType ?? 'named',\n        root,\n        output,\n        meta: {\n          pluginKey: this.plugin.key,\n        },\n      })\n\n      await this.upsertFile(...barrelFiles)\n    },\n  }\n})\n"],"mappings":"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"}