@kubb/plugin-ts 5.0.0-alpha.3 → 5.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-DvK-Uhvv.cjs","names":["trimQuotes","pascalCase","keywordTypeNodes","createUrlTemplateType","ts","getUnknownType","typeGenerator","SchemaGenerator","File","Type","schemaKeywords","jsStringEscape","jsStringEscape","pascalCase","camelCase","trimQuotes","File","File","typeGenerator","typeGeneratorV2","pluginOasName","path","camelCase","pascalCase","SchemaGenerator","OperationGenerator"],"sources":["../../../internals/utils/src/object.ts","../src/generators/typeGenerator.tsx","../src/printer.ts","../src/components/v2/Type.tsx","../src/generators/v2/typeGenerator.tsx","../src/plugin.ts"],"sourcesContent":["import { trimQuotes } from './string.ts'\n\n/**\n * Serializes a primitive value to a JSON string literal, stripping any surrounding quote characters first.\n *\n * @example\n * stringify('hello') // '\"hello\"'\n * stringify('\"hello\"') // '\"hello\"'\n */\nexport function stringify(value: string | number | boolean | undefined): string {\n if (value === undefined || value === null) return '\"\"'\n return JSON.stringify(trimQuotes(value.toString()))\n}\n\n/**\n * Converts a plain object into a multiline key-value string suitable for embedding in generated code.\n * Nested objects are recursively stringified with indentation.\n *\n * @example\n * stringifyObject({ foo: 'bar', nested: { a: 1 } })\n * // 'foo: bar,\\nnested: {\\n a: 1\\n }'\n */\nexport function stringifyObject(value: Record<string, unknown>): string {\n const items = Object.entries(value)\n .map(([key, val]) => {\n if (val !== null && typeof val === 'object') {\n return `${key}: {\\n ${stringifyObject(val as Record<string, unknown>)}\\n }`\n }\n return `${key}: ${val}`\n })\n .filter(Boolean)\n return items.join(',\\n')\n}\n\n/**\n * Serializes plugin options for safe JSON transport.\n * Strips functions, symbols, and `undefined` values recursively.\n */\nexport function serializePluginOptions<TOptions extends object>(options: TOptions): TOptions {\n if (options === null || options === undefined) return {} as TOptions\n if (typeof options !== 'object') return options\n if (Array.isArray(options)) return options.map(serializePluginOptions) as unknown as TOptions\n\n const serialized: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(options)) {\n if (typeof value === 'function' || typeof value === 'symbol' || value === undefined) continue\n serialized[key] = value !== null && typeof value === 'object' ? serializePluginOptions(value as object) : value\n }\n return serialized as TOptions\n}\n\n/**\n * Converts a dot-notation path or string array into an optional-chaining accessor expression.\n *\n * @example\n * getNestedAccessor('pagination.next.id', 'lastPage')\n * // → \"lastPage?.['pagination']?.['next']?.['id']\"\n */\nexport function getNestedAccessor(param: string | string[], accessor: string): string | undefined {\n const parts = Array.isArray(param) ? param : param.split('.')\n if (parts.length === 0 || (parts.length === 1 && parts[0] === '')) return undefined\n return `${accessor}?.['${`${parts.join(\"']?.['\")}']`}`\n}\n","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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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>({\n name: 'typescript',\n Operation({ operation, generator, plugin }) {\n const {\n options,\n options: { mapper, enumType, 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', pluginName: 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 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\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, 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 = typedName += 'Key' //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 enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n />\n </File>\n )\n },\n})\n","import { jsStringEscape, stringify } from '@internals/utils'\nimport { isPlainStringType } from '@kubb/ast'\nimport type { ArraySchemaNode, SchemaNode } from '@kubb/ast/types'\nimport type { PrinterFactoryOptions } from '@kubb/core'\nimport { definePrinter } from '@kubb/core'\nimport type ts from 'typescript'\nimport * as factory from './factory.ts'\n\ntype TsOptions = {\n /**\n * @default `'questionToken'`\n */\n optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n /**\n * @default `'array'`\n */\n arrayType: 'array' | 'generic'\n /**\n * @default `'inlineLiteral'`\n */\n enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal' | 'inlineLiteral'\n}\n\ntype TsPrinter = PrinterFactoryOptions<'typescript', TsOptions, ts.TypeNode>\n\nfunction constToTypeNode(value: string | number | boolean, format: 'string' | 'number' | 'boolean'): ts.TypeNode | undefined {\n if (format === 'boolean') {\n return factory.createLiteralTypeNode(value === true ? factory.createTrue() : factory.createFalse())\n }\n if (format === 'number' && typeof value === 'number') {\n if (value < 0) {\n return factory.createLiteralTypeNode(factory.createPrefixUnaryExpression(factory.SyntaxKind.MinusToken, factory.createNumericLiteral(Math.abs(value))))\n }\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value))\n }\n return factory.createLiteralTypeNode(factory.createStringLiteral(String(value)))\n}\n\nfunction dateOrStringNode(node: { representation?: string }): ts.TypeNode {\n return node.representation === 'date' ? factory.createTypeReferenceNode(factory.createIdentifier('Date')) : factory.keywordTypeNodes.string\n}\n\nfunction buildMemberNodes(members: Array<SchemaNode> | undefined, print: (node: SchemaNode) => ts.TypeNode | null | undefined): Array<ts.TypeNode> {\n return (members ?? []).map(print).filter(Boolean) as Array<ts.TypeNode>\n}\n\nfunction buildTupleNode(node: ArraySchemaNode, print: (node: SchemaNode) => ts.TypeNode | null | undefined): ts.TypeNode | undefined {\n let items = (node.items ?? []).map(print).filter(Boolean) as Array<ts.TypeNode>\n\n const restNode = node.rest ? (print(node.rest) ?? undefined) : undefined\n const { min, max } = node\n\n if (max !== undefined) {\n items = items.slice(0, max)\n if (items.length < max && restNode) {\n items = [...items, ...Array(max - items.length).fill(restNode)]\n }\n }\n\n if (min !== undefined) {\n items = items.map((item, i) => (i >= min ? factory.createOptionalTypeNode(item) : item))\n }\n\n if (max === undefined && restNode) {\n items.push(factory.createRestTypeNode(factory.createArrayTypeNode(restNode)))\n }\n\n return factory.createTupleTypeNode(items)\n}\n\nfunction buildPropertyType(schema: SchemaNode, baseType: ts.TypeNode, optionalType: TsOptions['optionalType']): ts.TypeNode {\n const addsUndefined = ['undefined', 'questionTokenAndUndefined'].includes(optionalType)\n\n let type = baseType\n\n if (schema.nullable) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n\n if ((schema.nullish || schema.optional) && addsUndefined) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n return type\n}\n\nfunction buildPropertyJSDocComments(schema: SchemaNode): Array<string | undefined> {\n return [\n 'description' in schema && schema.description ? `@description ${jsStringEscape(schema.description as string)}` : undefined,\n 'deprecated' in schema && schema.deprecated ? '@deprecated' : undefined,\n 'min' in schema && schema.min !== undefined ? `@minLength ${schema.min}` : undefined,\n 'max' in schema && schema.max !== undefined ? `@maxLength ${schema.max}` : undefined,\n 'pattern' in schema && schema.pattern ? `@pattern ${schema.pattern}` : undefined,\n 'default' in schema && schema.default !== undefined\n ? `@default ${'primitive' in schema && schema.primitive === 'string' ? stringify(schema.default as string) : schema.default}`\n : undefined,\n 'example' in schema && schema.example !== undefined ? `@example ${schema.example}` : undefined,\n 'primitive' in schema && schema.primitive\n ? [`@type ${schema.primitive || 'unknown'}`, 'optional' in schema && schema.optional ? ' | undefined' : undefined].filter(Boolean).join('')\n : undefined,\n ]\n}\n\nfunction buildIndexSignatures(\n node: { additionalProperties?: SchemaNode | boolean; patternProperties?: Record<string, SchemaNode> },\n propertyCount: number,\n print: (node: SchemaNode) => ts.TypeNode | null | undefined,\n): Array<ts.TypeElement> {\n const elements: Array<ts.TypeElement> = []\n\n if (node.additionalProperties && node.additionalProperties !== true) {\n const additionalType = (print(node.additionalProperties as SchemaNode) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n elements.push(factory.createIndexSignature(propertyCount > 0 ? factory.keywordTypeNodes.unknown : additionalType))\n } else if (node.additionalProperties === true) {\n elements.push(factory.createIndexSignature(factory.keywordTypeNodes.unknown))\n }\n\n if (node.patternProperties) {\n const first = Object.values(node.patternProperties)[0]\n if (first) {\n let patternType = (print(first) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n if (first.nullable) {\n patternType = factory.createUnionDeclaration({ nodes: [patternType, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n elements.push(factory.createIndexSignature(patternType))\n }\n }\n\n return elements\n}\n\n/**\n * Converts a `SchemaNode` AST node into a TypeScript `ts.TypeNode`.\n *\n * Built on `definePrinter` — dispatches on `node.type`, with options closed over\n * per printer instance. Produces the same `ts.TypeNode` output as the keyword-based\n * `parse` in `parser.ts`.\n */\nexport const printerTs = definePrinter<TsPrinter>((options) => ({\n name: 'typescript',\n options,\n nodes: {\n any: () => factory.keywordTypeNodes.any,\n unknown: () => factory.keywordTypeNodes.unknown,\n void: () => factory.keywordTypeNodes.void,\n boolean: () => factory.keywordTypeNodes.boolean,\n null: () => factory.keywordTypeNodes.null,\n blob: () => factory.createTypeReferenceNode('Blob', []),\n string: () => factory.keywordTypeNodes.string,\n uuid: () => factory.keywordTypeNodes.string,\n email: () => factory.keywordTypeNodes.string,\n url: () => factory.keywordTypeNodes.string,\n datetime: () => factory.keywordTypeNodes.string,\n number: () => factory.keywordTypeNodes.number,\n integer: () => factory.keywordTypeNodes.number,\n bigint: () => factory.keywordTypeNodes.bigint,\n date: (node) => dateOrStringNode(node),\n time: (node) => dateOrStringNode(node),\n ref(node) {\n if (!node.name) {\n return undefined\n }\n return factory.createTypeReferenceNode(node.name, undefined)\n },\n enum(node) {\n const values = node.namedEnumValues?.map((v) => v.value) ?? node.enumValues ?? []\n\n if (this.options.enumType === 'inlineLiteral' || !node.name) {\n const literalNodes = values\n .filter((v): v is string | number | boolean => v !== null)\n .map((value) => constToTypeNode(value, typeof value === 'number' ? 'number' : typeof value === 'boolean' ? 'boolean' : 'string'))\n .filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes: literalNodes }) ?? undefined\n }\n\n const typeName = ['asConst', 'asPascalConst'].includes(this.options.enumType) ? `${node.name}Key` : node.name\n\n return factory.createTypeReferenceNode(typeName, undefined)\n },\n union(node) {\n const members = node.members ?? []\n\n const hasStringLiteral = members.some((m) => m.type === 'enum' && m.enumType === 'string')\n const hasPlainString = members.some((m) => isPlainStringType(m))\n\n if (hasStringLiteral && hasPlainString) {\n const nodes = members\n .map((m) => {\n if (isPlainStringType(m)) {\n return factory.createIntersectionDeclaration({\n nodes: [factory.keywordTypeNodes.string, factory.createTypeLiteralNode([])],\n withParentheses: true,\n }) as ts.TypeNode\n }\n\n return this.print(m)\n })\n .filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes }) ?? undefined\n }\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes: buildMemberNodes(members, this.print) }) ?? undefined\n },\n intersection(node) {\n return factory.createIntersectionDeclaration({ withParentheses: true, nodes: buildMemberNodes(node.members, this.print) }) ?? undefined\n },\n array(node) {\n const itemNodes = (node.items ?? []).map((item) => this.print(item)).filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createArrayDeclaration({ nodes: itemNodes, arrayType: this.options.arrayType }) ?? undefined\n },\n tuple(node) {\n return buildTupleNode(node, this.print)\n },\n object(node) {\n const addsQuestionToken = ['questionToken', 'questionTokenAndUndefined'].includes(this.options.optionalType)\n const { print } = this\n\n const propertyNodes: Array<ts.TypeElement> = node.properties.map((prop) => {\n const baseType = (print(prop.schema) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n const type = buildPropertyType(prop.schema, baseType, this.options.optionalType)\n\n const propertyNode = factory.createPropertySignature({\n questionToken: prop.schema.optional || prop.schema.nullish ? addsQuestionToken : false,\n name: prop.name,\n type,\n readOnly: prop.schema.readOnly,\n })\n\n return factory.appendJSDocToNode({ node: propertyNode, comments: buildPropertyJSDocComments(prop.schema) })\n })\n\n const allElements = [...propertyNodes, ...buildIndexSignatures(node, propertyNodes.length, print)]\n\n if (!allElements.length) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(allElements)\n },\n },\n}))\n","import { camelCase, jsStringEscape, pascalCase, trimQuotes } from '@internals/utils'\nimport { collect } from '@kubb/ast'\nimport type { EnumSchemaNode, SchemaNode } from '@kubb/ast/types'\nimport { safePrint } from '@kubb/fabric-core/parsers/typescript'\nimport { File } from '@kubb/react-fabric'\nimport type { FabricReactNode } from '@kubb/react-fabric/types'\nimport type ts from 'typescript'\nimport * as factory from '../../factory.ts'\nimport { printerTs } from '../../printer.ts'\nimport type { PluginTs } from '../../types.ts'\n\ntype Props = {\n name: string\n typedName: string\n node: SchemaNode\n optionalType: PluginTs['resolvedOptions']['optionalType']\n arrayType: PluginTs['resolvedOptions']['arrayType']\n enumType: PluginTs['resolvedOptions']['enumType']\n enumKeyCasing: PluginTs['resolvedOptions']['enumKeyCasing']\n syntaxType: PluginTs['resolvedOptions']['syntaxType']\n description?: string\n keysToOmit?: string[]\n}\n\nexport function Type({ name, typedName, node, keysToOmit, optionalType, arrayType, syntaxType, enumType, enumKeyCasing, ...rest }: Props): FabricReactNode {\n const typeNodes: ts.Node[] = []\n\n const description = rest.description || node?.description\n const enumSchemaNodes = collect<EnumSchemaNode>(node, {\n schema(n): EnumSchemaNode | undefined {\n if (n.type === 'enum' && n.name) return n as EnumSchemaNode\n },\n })\n\n const printer = printerTs({ optionalType, arrayType, enumType })\n let type = printer.print(node)\n\n if (!type) {\n return\n }\n\n // Add a \"Key\" suffix to avoid collisions where necessary\n if (['asConst', 'asPascalConst'].includes(enumType) && enumSchemaNodes.length > 0) {\n const isDirectEnum = node.type === 'array' && node.items !== undefined\n const isEnumOnly = 'enum' in node && node.enum\n\n if (isDirectEnum || isEnumOnly) {\n const enumSchemaNode = enumSchemaNodes[0]!\n const typeNameWithKey = `${enumSchemaNode.name!}Key`\n\n type = factory.createTypeReferenceNode(typeNameWithKey)\n\n if (isDirectEnum) {\n if (arrayType === 'generic') {\n type = factory.createTypeReferenceNode(factory.createIdentifier('Array'), [type])\n } else {\n type = factory.createArrayTypeNode(type)\n }\n }\n }\n }\n\n if (node) {\n if (node.nullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (node.nullish && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (node.optional && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n }\n\n const useTypeGeneration = syntaxType === 'type' || [factory.syntaxKind.union].includes(type.kind as typeof factory.syntaxKind.union) || !!keysToOmit?.length\n\n typeNodes.push(\n factory.createTypeDeclaration({\n name,\n isExportable: true,\n type: keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n syntax: useTypeGeneration ? 'type' : 'interface',\n comments: [\n node?.title ? `${jsStringEscape(node.title)}` : undefined,\n description ? `@description ${jsStringEscape(description)}` : undefined,\n node?.deprecated ? '@deprecated' : undefined,\n node && 'min' in node && node.min !== undefined ? `@minLength ${node.min}` : undefined,\n node && 'max' in node && node.max !== undefined ? `@maxLength ${node.max}` : undefined,\n node && 'pattern' in node && node.pattern ? `@pattern ${node.pattern}` : undefined,\n node?.default ? `@default ${node.default}` : undefined,\n node?.example ? `@example ${node.example}` : undefined,\n ],\n }),\n )\n\n const enums = [...new Map(enumSchemaNodes.map((n) => [n.name, n])).values()].map((enumSchemaNode) => {\n const enumName = enumType === 'asPascalConst' ? pascalCase(enumSchemaNode.name!) : camelCase(enumSchemaNode.name!)\n const typeName = ['asConst', 'asPascalConst'].includes(enumType) ? `${enumSchemaNode.name!}Key` : enumSchemaNode.name!\n\n const [nameNode, typeNode] = factory.createEnumDeclaration({\n name: enumName,\n typeName,\n enums: (enumSchemaNode.namedEnumValues?.map((v) => [trimQuotes(v.name.toString()), v.value]) ??\n enumSchemaNode.enumValues?.filter((v): v is NonNullable<typeof v> => v !== null && v !== undefined).map((v) => [trimQuotes(v.toString()), v]) ??\n []) as unknown as Array<[string, string]>,\n type: enumType,\n enumKeyCasing,\n })\n\n return {\n nameNode,\n typeNode,\n name: enumName,\n typeName,\n }\n })\n\n // Skip enum exports when using inlineLiteral\n const shouldExportEnums = enumType !== 'inlineLiteral'\n const shouldExportType = enumType === 'inlineLiteral' || enums.every((item) => item.typeName !== name)\n\n return (\n <>\n {shouldExportEnums &&\n enums.map(({ name: enumName, nameNode, typeName, typeNode }) => (\n <>\n {nameNode && (\n <File.Source name={enumName} isExportable isIndexable isTypeOnly={false}>\n {safePrint(nameNode)}\n </File.Source>\n )}\n {\n <File.Source\n name={typeName}\n isIndexable\n isExportable={['enum', 'asConst', 'asPascalConst', 'constEnum', 'literal', undefined].includes(enumType)}\n isTypeOnly={['asConst', 'asPascalConst', 'literal', undefined].includes(enumType)}\n >\n {safePrint(typeNode)}\n </File.Source>\n }\n </>\n ))}\n {shouldExportType && (\n <File.Source name={typedName} isTypeOnly isExportable isIndexable>\n {safePrint(...typeNodes)}\n </File.Source>\n )}\n </>\n )\n}\n","import type { SchemaNode } from '@kubb/ast/types'\nimport { defineGenerator } from '@kubb/core'\nimport { useKubb } from '@kubb/core/hooks'\nimport { File } from '@kubb/react-fabric'\nimport { Type } from '../../components/v2/Type.tsx'\nimport type { PluginTs } from '../../types'\n\nexport const typeGenerator = defineGenerator<PluginTs>({\n name: 'typescript',\n type: 'react',\n Operation({ node, adapter, options }) {\n const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType } = options\n\n const { plugin, mode, getFile, resolveName } = useKubb<PluginTs>()\n\n const file = getFile({\n name: node.operationId,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n })\n\n function renderSchemaType({ node: schemaNode, name, typedName, description }: { node: SchemaNode; name: string; typedName: string; description?: string }) {\n const imports = adapter.getImports(schemaNode, (schemaName) => ({\n name: resolveName({\n name: schemaName,\n pluginName: plugin.name,\n type: 'type',\n }),\n path: getFile({\n name: schemaName,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n }).path,\n }))\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => <File.Import key={[name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />)}\n\n <Type\n name={name}\n typedName={typedName}\n node={schemaNode}\n description={description}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n />\n </>\n )\n }\n\n // Parameter types — each parameter rendered as its own type\n const paramTypes = node.parameters.map((param) => {\n const name = resolveName({\n name: `${node.operationId} ${param.name}`,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: `${node.operationId} ${param.name}`,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: param.schema, name, typedName })\n })\n\n // Response types\n const responseTypes = node.responses\n .filter((res) => res.schema)\n .map((res) => {\n const schemaNode = res.schema!\n const responseName = `${node.operationId} ${res.statusCode}`\n const resolvedName = resolveName({\n name: responseName,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: responseName,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: schemaNode, name: resolvedName, typedName, description: res.description })\n })\n\n // Request body type\n const requestType = node.requestBody\n ? (() => {\n const requestName = `${node.operationId} MutationRequest`\n const resolvedName = resolveName({\n name: requestName,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: requestName,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: node.requestBody, name: resolvedName, typedName, description: node.requestBody.description })\n })()\n : null\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta}>\n {paramTypes}\n {responseTypes}\n {requestType}\n </File>\n )\n },\n Schema({ node, adapter, options }) {\n const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType } = options\n const { plugin, mode, resolveName, getFile } = useKubb<PluginTs>()\n\n if (!node.name) {\n return\n }\n\n const imports = adapter.getImports(node, (schemaName) => ({\n name: resolveName({\n name: schemaName,\n pluginName: plugin.name,\n type: 'type',\n }),\n path: getFile({\n name: schemaName,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n // options: {\n // group\n // },\n }).path,\n }))\n\n const isEnumSchema = node.type === 'enum'\n\n let typedName = resolveName({\n name: node.name,\n pluginName: plugin.name,\n type: 'type',\n })\n\n if (['asConst', 'asPascalConst'].includes(enumType) && isEnumSchema) {\n typedName = typedName += 'Key'\n }\n\n const type = {\n name: resolveName({\n name: node.name,\n pluginName: plugin.name,\n type: 'function',\n }),\n typedName,\n file: getFile({\n name: node.name,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n // options: {\n // group\n // },\n }),\n } as const\n\n return (\n <File baseName={type.file.baseName} path={type.file.path} meta={type.file.meta}>\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[node.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n\n <Type\n name={type.name}\n typedName={type.typedName}\n node={node}\n enumType={enumType}\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, resolveOptions } from '@kubb/core'\nimport { buildOperation, buildSchema, OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { typeGenerator, typeGeneratorV2 } 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 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, typeGeneratorV2].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 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, adapter, rootNode, pluginManager, openInStudio } = this\n\n const root = path.resolve(config.root, config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n\n if (adapter) {\n await openInStudio({ ast: true })\n\n await walk(\n rootNode,\n {\n async schema(schemaNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n const options = resolveOptions(schemaNode, { options: plugin.options, exclude, include, override })\n\n if (options === null) {\n return\n }\n\n await buildSchema(schemaNode, {\n options,\n adapter,\n config,\n fabric,\n Component: generator.Schema,\n plugin,\n pluginManager,\n mode,\n version: generator.version,\n })\n }\n })\n\n await Promise.all(writeTasks)\n },\n async operation(operationNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n const options = resolveOptions(operationNode, { options: plugin.options, exclude, include, override })\n\n if (options === null) {\n return\n }\n\n await buildOperation(operationNode, {\n options,\n adapter,\n config,\n fabric,\n Component: generator.Operation,\n plugin,\n pluginManager,\n mode,\n version: generator.version,\n })\n }\n })\n\n await Promise.all(writeTasks)\n },\n },\n { depth: 'shallow' },\n )\n\n return\n }\n\n // v1 flow\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 pluginName: this.plugin.name,\n },\n })\n\n await this.upsertFile(...barrelFiles)\n },\n }\n})\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
2
  import { Group, Output, PluginFactoryOptions, ResolveNameParams } from "@kubb/core";
3
3
  import { Exclude, Include, Override, ResolvePathOptions } from "@kubb/plugin-oas";
4
- import { Generator } from "@kubb/plugin-oas/generators";
4
+ import { Generator as Generator$1 } from "@kubb/plugin-oas/generators";
5
5
  import ts from "typescript";
6
6
  import { Oas, contentType } from "@kubb/oas";
7
7
 
@@ -140,7 +140,7 @@ type Options = {
140
140
  /**
141
141
  * Define some generators next to the ts generators
142
142
  */
143
- generators?: Array<Generator<PluginTs>>;
143
+ generators?: Array<Generator$1<PluginTs>>;
144
144
  /**
145
145
  * Unstable naming for v5
146
146
  */
@@ -167,4 +167,4 @@ type ResolvedOptions = {
167
167
  type PluginTs = PluginFactoryOptions<'plugin-ts', Options, ResolvedOptions, never, ResolvePathOptions>;
168
168
  //#endregion
169
169
  export { PluginTs as n, Options as t };
170
- //# sourceMappingURL=types-BpeKGgCn.d.ts.map
170
+ //# sourceMappingURL=types-aotMcdUB.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-ts",
3
- "version": "5.0.0-alpha.3",
3
+ "version": "5.0.0-alpha.4",
4
4
  "description": "TypeScript code generation plugin for Kubb, transforming OpenAPI schemas into TypeScript interfaces, types, and utility functions.",
5
5
  "keywords": [
6
6
  "typescript",
@@ -71,10 +71,10 @@
71
71
  "@kubb/react-fabric": "0.13.3",
72
72
  "remeda": "^2.33.6",
73
73
  "typescript": "5.9.3",
74
- "@kubb/ast": "5.0.0-alpha.3",
75
- "@kubb/core": "5.0.0-alpha.3",
76
- "@kubb/oas": "5.0.0-alpha.3",
77
- "@kubb/plugin-oas": "5.0.0-alpha.3"
74
+ "@kubb/ast": "5.0.0-alpha.4",
75
+ "@kubb/core": "5.0.0-alpha.4",
76
+ "@kubb/oas": "5.0.0-alpha.4",
77
+ "@kubb/plugin-oas": "5.0.0-alpha.4"
78
78
  },
79
79
  "peerDependencies": {
80
80
  "@kubb/react-fabric": "0.13.3"
@@ -309,9 +309,8 @@ function printResponseSchema({
309
309
  return results.join('\n\n')
310
310
  }
311
311
 
312
- export const typeGenerator = createReactGenerator<PluginTs, '1'>({
312
+ export const typeGenerator = createReactGenerator<PluginTs>({
313
313
  name: 'typescript',
314
- version: '1',
315
314
  Operation({ operation, generator, plugin }) {
316
315
  const {
317
316
  options,
@@ -1,13 +1,13 @@
1
1
  import type { SchemaNode } from '@kubb/ast/types'
2
+ import { defineGenerator } from '@kubb/core'
2
3
  import { useKubb } from '@kubb/core/hooks'
3
- import { createReactGenerator } from '@kubb/plugin-oas/generators'
4
4
  import { File } from '@kubb/react-fabric'
5
5
  import { Type } from '../../components/v2/Type.tsx'
6
6
  import type { PluginTs } from '../../types'
7
7
 
8
- export const typeGenerator = createReactGenerator<PluginTs, '2'>({
8
+ export const typeGenerator = defineGenerator<PluginTs>({
9
9
  name: 'typescript',
10
- version: '2',
10
+ type: 'react',
11
11
  Operation({ node, adapter, options }) {
12
12
  const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType } = options
13
13
 
package/src/plugin.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import path from 'node:path'
2
2
  import { camelCase, pascalCase } from '@internals/utils'
3
3
  import { walk } from '@kubb/ast'
4
- import { definePlugin, type Group, getBarrelFiles, getMode } from '@kubb/core'
4
+ import { definePlugin, type Group, getBarrelFiles, getMode, resolveOptions } from '@kubb/core'
5
5
  import { buildOperation, buildSchema, OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'
6
6
  import { typeGenerator, typeGeneratorV2 } from './generators'
7
7
  import type { PluginTs } from './types.ts'
@@ -58,7 +58,6 @@ export const pluginTs = definePlugin<PluginTs>((options) => {
58
58
  usedEnumNames,
59
59
  },
60
60
  pre: [pluginOasName],
61
- //resolveOptions(operation|schema): ResolvedOptions
62
61
  resolvePath(baseName, pathMode, options) {
63
62
  const root = path.resolve(this.config.root, this.config.output.path)
64
63
  const mode = pathMode ?? getMode(path.resolve(root, output.path))
@@ -117,7 +116,14 @@ export const pluginTs = definePlugin<PluginTs>((options) => {
117
116
  async schema(schemaNode) {
118
117
  const writeTasks = generators.map(async (generator) => {
119
118
  if (generator.type === 'react' && generator.version === '2') {
119
+ const options = resolveOptions(schemaNode, { options: plugin.options, exclude, include, override })
120
+
121
+ if (options === null) {
122
+ return
123
+ }
124
+
120
125
  await buildSchema(schemaNode, {
126
+ options,
121
127
  adapter,
122
128
  config,
123
129
  fabric,
@@ -130,12 +136,19 @@ export const pluginTs = definePlugin<PluginTs>((options) => {
130
136
  }
131
137
  })
132
138
 
133
- await writeTasks
139
+ await Promise.all(writeTasks)
134
140
  },
135
141
  async operation(operationNode) {
136
142
  const writeTasks = generators.map(async (generator) => {
137
143
  if (generator.type === 'react' && generator.version === '2') {
144
+ const options = resolveOptions(operationNode, { options: plugin.options, exclude, include, override })
145
+
146
+ if (options === null) {
147
+ return
148
+ }
149
+
138
150
  await buildOperation(operationNode, {
151
+ options,
139
152
  adapter,
140
153
  config,
141
154
  fabric,
@@ -148,7 +161,7 @@ export const pluginTs = definePlugin<PluginTs>((options) => {
148
161
  }
149
162
  })
150
163
 
151
- await writeTasks
164
+ await Promise.all(writeTasks)
152
165
  },
153
166
  },
154
167
  { depth: 'shallow' },
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-D5rCK1zO.cjs","names":["trimQuotes","pascalCase","keywordTypeNodes","createUrlTemplateType","ts","getUnknownType","typeGenerator","SchemaGenerator","File","Type","schemaKeywords","jsStringEscape","jsStringEscape","pascalCase","camelCase","trimQuotes","File","File","typeGenerator","typeGeneratorV2","pluginOasName","path","camelCase","pascalCase","SchemaGenerator","OperationGenerator"],"sources":["../../../internals/utils/src/object.ts","../src/generators/typeGenerator.tsx","../src/printer.ts","../src/components/v2/Type.tsx","../src/generators/v2/typeGenerator.tsx","../src/plugin.ts"],"sourcesContent":["import { trimQuotes } from './string.ts'\n\n/**\n * Serializes a primitive value to a JSON string literal, stripping any surrounding quote characters first.\n *\n * @example\n * stringify('hello') // '\"hello\"'\n * stringify('\"hello\"') // '\"hello\"'\n */\nexport function stringify(value: string | number | boolean | undefined): string {\n if (value === undefined || value === null) return '\"\"'\n return JSON.stringify(trimQuotes(value.toString()))\n}\n\n/**\n * Converts a plain object into a multiline key-value string suitable for embedding in generated code.\n * Nested objects are recursively stringified with indentation.\n *\n * @example\n * stringifyObject({ foo: 'bar', nested: { a: 1 } })\n * // 'foo: bar,\\nnested: {\\n a: 1\\n }'\n */\nexport function stringifyObject(value: Record<string, unknown>): string {\n const items = Object.entries(value)\n .map(([key, val]) => {\n if (val !== null && typeof val === 'object') {\n return `${key}: {\\n ${stringifyObject(val as Record<string, unknown>)}\\n }`\n }\n return `${key}: ${val}`\n })\n .filter(Boolean)\n return items.join(',\\n')\n}\n\n/**\n * Serializes plugin options for safe JSON transport.\n * Strips functions, symbols, and `undefined` values recursively.\n */\nexport function serializePluginOptions<TOptions extends object>(options: TOptions): TOptions {\n if (options === null || options === undefined) return {} as TOptions\n if (typeof options !== 'object') return options\n if (Array.isArray(options)) return options.map(serializePluginOptions) as unknown as TOptions\n\n const serialized: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(options)) {\n if (typeof value === 'function' || typeof value === 'symbol' || value === undefined) continue\n serialized[key] = value !== null && typeof value === 'object' ? serializePluginOptions(value as object) : value\n }\n return serialized as TOptions\n}\n\n/**\n * Converts a dot-notation path or string array into an optional-chaining accessor expression.\n *\n * @example\n * getNestedAccessor('pagination.next.id', 'lastPage')\n * // → \"lastPage?.['pagination']?.['next']?.['id']\"\n */\nexport function getNestedAccessor(param: string | string[], accessor: string): string | undefined {\n const parts = Array.isArray(param) ? param : param.split('.')\n if (parts.length === 0 || (parts.length === 1 && parts[0] === '')) return undefined\n return `${accessor}?.['${`${parts.join(\"']?.['\")}']`}`\n}\n","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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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 pluginName: 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, 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', pluginName: 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 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\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, 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 = typedName += 'Key' //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 enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n />\n </File>\n )\n },\n})\n","import { jsStringEscape, stringify } from '@internals/utils'\nimport { isPlainStringType } from '@kubb/ast'\nimport type { ArraySchemaNode, SchemaNode } from '@kubb/ast/types'\nimport type { PrinterFactoryOptions } from '@kubb/core'\nimport { definePrinter } from '@kubb/core'\nimport type ts from 'typescript'\nimport * as factory from './factory.ts'\n\ntype TsOptions = {\n /**\n * @default `'questionToken'`\n */\n optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n /**\n * @default `'array'`\n */\n arrayType: 'array' | 'generic'\n /**\n * @default `'inlineLiteral'`\n */\n enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal' | 'inlineLiteral'\n}\n\ntype TsPrinter = PrinterFactoryOptions<'typescript', TsOptions, ts.TypeNode>\n\nfunction constToTypeNode(value: string | number | boolean, format: 'string' | 'number' | 'boolean'): ts.TypeNode | undefined {\n if (format === 'boolean') {\n return factory.createLiteralTypeNode(value === true ? factory.createTrue() : factory.createFalse())\n }\n if (format === 'number' && typeof value === 'number') {\n if (value < 0) {\n return factory.createLiteralTypeNode(factory.createPrefixUnaryExpression(factory.SyntaxKind.MinusToken, factory.createNumericLiteral(Math.abs(value))))\n }\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value))\n }\n return factory.createLiteralTypeNode(factory.createStringLiteral(String(value)))\n}\n\nfunction dateOrStringNode(node: { representation?: string }): ts.TypeNode {\n return node.representation === 'date' ? factory.createTypeReferenceNode(factory.createIdentifier('Date')) : factory.keywordTypeNodes.string\n}\n\nfunction buildMemberNodes(members: Array<SchemaNode> | undefined, print: (node: SchemaNode) => ts.TypeNode | null | undefined): Array<ts.TypeNode> {\n return (members ?? []).map(print).filter(Boolean) as Array<ts.TypeNode>\n}\n\nfunction buildTupleNode(node: ArraySchemaNode, print: (node: SchemaNode) => ts.TypeNode | null | undefined): ts.TypeNode | undefined {\n let items = (node.items ?? []).map(print).filter(Boolean) as Array<ts.TypeNode>\n\n const restNode = node.rest ? (print(node.rest) ?? undefined) : undefined\n const { min, max } = node\n\n if (max !== undefined) {\n items = items.slice(0, max)\n if (items.length < max && restNode) {\n items = [...items, ...Array(max - items.length).fill(restNode)]\n }\n }\n\n if (min !== undefined) {\n items = items.map((item, i) => (i >= min ? factory.createOptionalTypeNode(item) : item))\n }\n\n if (max === undefined && restNode) {\n items.push(factory.createRestTypeNode(factory.createArrayTypeNode(restNode)))\n }\n\n return factory.createTupleTypeNode(items)\n}\n\nfunction buildPropertyType(schema: SchemaNode, baseType: ts.TypeNode, optionalType: TsOptions['optionalType']): ts.TypeNode {\n const addsUndefined = ['undefined', 'questionTokenAndUndefined'].includes(optionalType)\n\n let type = baseType\n\n if (schema.nullable) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n\n if ((schema.nullish || schema.optional) && addsUndefined) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n return type\n}\n\nfunction buildPropertyJSDocComments(schema: SchemaNode): Array<string | undefined> {\n return [\n 'description' in schema && schema.description ? `@description ${jsStringEscape(schema.description as string)}` : undefined,\n 'deprecated' in schema && schema.deprecated ? '@deprecated' : undefined,\n 'min' in schema && schema.min !== undefined ? `@minLength ${schema.min}` : undefined,\n 'max' in schema && schema.max !== undefined ? `@maxLength ${schema.max}` : undefined,\n 'pattern' in schema && schema.pattern ? `@pattern ${schema.pattern}` : undefined,\n 'default' in schema && schema.default !== undefined\n ? `@default ${'primitive' in schema && schema.primitive === 'string' ? stringify(schema.default as string) : schema.default}`\n : undefined,\n 'example' in schema && schema.example !== undefined ? `@example ${schema.example}` : undefined,\n 'primitive' in schema && schema.primitive\n ? [`@type ${schema.primitive || 'unknown'}`, 'optional' in schema && schema.optional ? ' | undefined' : undefined].filter(Boolean).join('')\n : undefined,\n ]\n}\n\nfunction buildIndexSignatures(\n node: { additionalProperties?: SchemaNode | boolean; patternProperties?: Record<string, SchemaNode> },\n propertyCount: number,\n print: (node: SchemaNode) => ts.TypeNode | null | undefined,\n): Array<ts.TypeElement> {\n const elements: Array<ts.TypeElement> = []\n\n if (node.additionalProperties && node.additionalProperties !== true) {\n const additionalType = (print(node.additionalProperties as SchemaNode) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n elements.push(factory.createIndexSignature(propertyCount > 0 ? factory.keywordTypeNodes.unknown : additionalType))\n } else if (node.additionalProperties === true) {\n elements.push(factory.createIndexSignature(factory.keywordTypeNodes.unknown))\n }\n\n if (node.patternProperties) {\n const first = Object.values(node.patternProperties)[0]\n if (first) {\n let patternType = (print(first) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n if (first.nullable) {\n patternType = factory.createUnionDeclaration({ nodes: [patternType, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n elements.push(factory.createIndexSignature(patternType))\n }\n }\n\n return elements\n}\n\n/**\n * Converts a `SchemaNode` AST node into a TypeScript `ts.TypeNode`.\n *\n * Built on `definePrinter` — dispatches on `node.type`, with options closed over\n * per printer instance. Produces the same `ts.TypeNode` output as the keyword-based\n * `parse` in `parser.ts`.\n */\nexport const printerTs = definePrinter<TsPrinter>((options) => ({\n name: 'typescript',\n options,\n nodes: {\n any: () => factory.keywordTypeNodes.any,\n unknown: () => factory.keywordTypeNodes.unknown,\n void: () => factory.keywordTypeNodes.void,\n boolean: () => factory.keywordTypeNodes.boolean,\n null: () => factory.keywordTypeNodes.null,\n blob: () => factory.createTypeReferenceNode('Blob', []),\n string: () => factory.keywordTypeNodes.string,\n uuid: () => factory.keywordTypeNodes.string,\n email: () => factory.keywordTypeNodes.string,\n url: () => factory.keywordTypeNodes.string,\n datetime: () => factory.keywordTypeNodes.string,\n number: () => factory.keywordTypeNodes.number,\n integer: () => factory.keywordTypeNodes.number,\n bigint: () => factory.keywordTypeNodes.bigint,\n date: (node) => dateOrStringNode(node),\n time: (node) => dateOrStringNode(node),\n ref(node) {\n if (!node.name) {\n return undefined\n }\n return factory.createTypeReferenceNode(node.name, undefined)\n },\n enum(node) {\n const values = node.namedEnumValues?.map((v) => v.value) ?? node.enumValues ?? []\n\n if (this.options.enumType === 'inlineLiteral' || !node.name) {\n const literalNodes = values\n .filter((v): v is string | number | boolean => v !== null)\n .map((value) => constToTypeNode(value, typeof value === 'number' ? 'number' : typeof value === 'boolean' ? 'boolean' : 'string'))\n .filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes: literalNodes }) ?? undefined\n }\n\n const typeName = ['asConst', 'asPascalConst'].includes(this.options.enumType) ? `${node.name}Key` : node.name\n\n return factory.createTypeReferenceNode(typeName, undefined)\n },\n union(node) {\n const members = node.members ?? []\n\n const hasStringLiteral = members.some((m) => m.type === 'enum' && m.enumType === 'string')\n const hasPlainString = members.some((m) => isPlainStringType(m))\n\n if (hasStringLiteral && hasPlainString) {\n const nodes = members\n .map((m) => {\n if (isPlainStringType(m)) {\n return factory.createIntersectionDeclaration({\n nodes: [factory.keywordTypeNodes.string, factory.createTypeLiteralNode([])],\n withParentheses: true,\n }) as ts.TypeNode\n }\n\n return this.print(m)\n })\n .filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes }) ?? undefined\n }\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes: buildMemberNodes(members, this.print) }) ?? undefined\n },\n intersection(node) {\n return factory.createIntersectionDeclaration({ withParentheses: true, nodes: buildMemberNodes(node.members, this.print) }) ?? undefined\n },\n array(node) {\n const itemNodes = (node.items ?? []).map((item) => this.print(item)).filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createArrayDeclaration({ nodes: itemNodes, arrayType: this.options.arrayType }) ?? undefined\n },\n tuple(node) {\n return buildTupleNode(node, this.print)\n },\n object(node) {\n const addsQuestionToken = ['questionToken', 'questionTokenAndUndefined'].includes(this.options.optionalType)\n const { print } = this\n\n const propertyNodes: Array<ts.TypeElement> = node.properties.map((prop) => {\n const baseType = (print(prop.schema) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n const type = buildPropertyType(prop.schema, baseType, this.options.optionalType)\n\n const propertyNode = factory.createPropertySignature({\n questionToken: prop.schema.optional || prop.schema.nullish ? addsQuestionToken : false,\n name: prop.name,\n type,\n readOnly: prop.schema.readOnly,\n })\n\n return factory.appendJSDocToNode({ node: propertyNode, comments: buildPropertyJSDocComments(prop.schema) })\n })\n\n const allElements = [...propertyNodes, ...buildIndexSignatures(node, propertyNodes.length, print)]\n\n if (!allElements.length) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(allElements)\n },\n },\n}))\n","import { camelCase, jsStringEscape, pascalCase, trimQuotes } from '@internals/utils'\nimport { collect } from '@kubb/ast'\nimport type { EnumSchemaNode, SchemaNode } from '@kubb/ast/types'\nimport { safePrint } from '@kubb/fabric-core/parsers/typescript'\nimport { File } from '@kubb/react-fabric'\nimport type { FabricReactNode } from '@kubb/react-fabric/types'\nimport type ts from 'typescript'\nimport * as factory from '../../factory.ts'\nimport { printerTs } from '../../printer.ts'\nimport type { PluginTs } from '../../types.ts'\n\ntype Props = {\n name: string\n typedName: string\n node: SchemaNode\n optionalType: PluginTs['resolvedOptions']['optionalType']\n arrayType: PluginTs['resolvedOptions']['arrayType']\n enumType: PluginTs['resolvedOptions']['enumType']\n enumKeyCasing: PluginTs['resolvedOptions']['enumKeyCasing']\n syntaxType: PluginTs['resolvedOptions']['syntaxType']\n description?: string\n keysToOmit?: string[]\n}\n\nexport function Type({ name, typedName, node, keysToOmit, optionalType, arrayType, syntaxType, enumType, enumKeyCasing, ...rest }: Props): FabricReactNode {\n const typeNodes: ts.Node[] = []\n\n const description = rest.description || node?.description\n const enumSchemaNodes = collect<EnumSchemaNode>(node, {\n schema(n): EnumSchemaNode | undefined {\n if (n.type === 'enum' && n.name) return n as EnumSchemaNode\n },\n })\n\n const printer = printerTs({ optionalType, arrayType, enumType })\n let type = printer.print(node)\n\n if (!type) {\n return\n }\n\n // Add a \"Key\" suffix to avoid collisions where necessary\n if (['asConst', 'asPascalConst'].includes(enumType) && enumSchemaNodes.length > 0) {\n const isDirectEnum = node.type === 'array' && node.items !== undefined\n const isEnumOnly = 'enum' in node && node.enum\n\n if (isDirectEnum || isEnumOnly) {\n const enumSchemaNode = enumSchemaNodes[0]!\n const typeNameWithKey = `${enumSchemaNode.name!}Key`\n\n type = factory.createTypeReferenceNode(typeNameWithKey)\n\n if (isDirectEnum) {\n if (arrayType === 'generic') {\n type = factory.createTypeReferenceNode(factory.createIdentifier('Array'), [type])\n } else {\n type = factory.createArrayTypeNode(type)\n }\n }\n }\n }\n\n if (node) {\n if (node.nullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (node.nullish && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (node.optional && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n }\n\n const useTypeGeneration = syntaxType === 'type' || [factory.syntaxKind.union].includes(type.kind as typeof factory.syntaxKind.union) || !!keysToOmit?.length\n\n typeNodes.push(\n factory.createTypeDeclaration({\n name,\n isExportable: true,\n type: keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n syntax: useTypeGeneration ? 'type' : 'interface',\n comments: [\n node?.title ? `${jsStringEscape(node.title)}` : undefined,\n description ? `@description ${jsStringEscape(description)}` : undefined,\n node?.deprecated ? '@deprecated' : undefined,\n node && 'min' in node && node.min !== undefined ? `@minLength ${node.min}` : undefined,\n node && 'max' in node && node.max !== undefined ? `@maxLength ${node.max}` : undefined,\n node && 'pattern' in node && node.pattern ? `@pattern ${node.pattern}` : undefined,\n node?.default ? `@default ${node.default}` : undefined,\n node?.example ? `@example ${node.example}` : undefined,\n ],\n }),\n )\n\n const enums = [...new Map(enumSchemaNodes.map((n) => [n.name, n])).values()].map((enumSchemaNode) => {\n const enumName = enumType === 'asPascalConst' ? pascalCase(enumSchemaNode.name!) : camelCase(enumSchemaNode.name!)\n const typeName = ['asConst', 'asPascalConst'].includes(enumType) ? `${enumSchemaNode.name!}Key` : enumSchemaNode.name!\n\n const [nameNode, typeNode] = factory.createEnumDeclaration({\n name: enumName,\n typeName,\n enums: (enumSchemaNode.namedEnumValues?.map((v) => [trimQuotes(v.name.toString()), v.value]) ??\n enumSchemaNode.enumValues?.filter((v): v is NonNullable<typeof v> => v !== null && v !== undefined).map((v) => [trimQuotes(v.toString()), v]) ??\n []) as unknown as Array<[string, string]>,\n type: enumType,\n enumKeyCasing,\n })\n\n return {\n nameNode,\n typeNode,\n name: enumName,\n typeName,\n }\n })\n\n // Skip enum exports when using inlineLiteral\n const shouldExportEnums = enumType !== 'inlineLiteral'\n const shouldExportType = enumType === 'inlineLiteral' || enums.every((item) => item.typeName !== name)\n\n return (\n <>\n {shouldExportEnums &&\n enums.map(({ name: enumName, nameNode, typeName, typeNode }) => (\n <>\n {nameNode && (\n <File.Source name={enumName} isExportable isIndexable isTypeOnly={false}>\n {safePrint(nameNode)}\n </File.Source>\n )}\n {\n <File.Source\n name={typeName}\n isIndexable\n isExportable={['enum', 'asConst', 'asPascalConst', 'constEnum', 'literal', undefined].includes(enumType)}\n isTypeOnly={['asConst', 'asPascalConst', 'literal', undefined].includes(enumType)}\n >\n {safePrint(typeNode)}\n </File.Source>\n }\n </>\n ))}\n {shouldExportType && (\n <File.Source name={typedName} isTypeOnly isExportable isIndexable>\n {safePrint(...typeNodes)}\n </File.Source>\n )}\n </>\n )\n}\n","import type { SchemaNode } from '@kubb/ast/types'\nimport { useKubb } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { File } from '@kubb/react-fabric'\nimport { Type } from '../../components/v2/Type.tsx'\nimport type { PluginTs } from '../../types'\n\nexport const typeGenerator = createReactGenerator<PluginTs, '2'>({\n name: 'typescript',\n version: '2',\n Operation({ node, adapter, options }) {\n const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType } = options\n\n const { plugin, mode, getFile, resolveName } = useKubb<PluginTs>()\n\n const file = getFile({\n name: node.operationId,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n })\n\n function renderSchemaType({ node: schemaNode, name, typedName, description }: { node: SchemaNode; name: string; typedName: string; description?: string }) {\n const imports = adapter.getImports(schemaNode, (schemaName) => ({\n name: resolveName({\n name: schemaName,\n pluginName: plugin.name,\n type: 'type',\n }),\n path: getFile({\n name: schemaName,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n }).path,\n }))\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => <File.Import key={[name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />)}\n\n <Type\n name={name}\n typedName={typedName}\n node={schemaNode}\n description={description}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n />\n </>\n )\n }\n\n // Parameter types — each parameter rendered as its own type\n const paramTypes = node.parameters.map((param) => {\n const name = resolveName({\n name: `${node.operationId} ${param.name}`,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: `${node.operationId} ${param.name}`,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: param.schema, name, typedName })\n })\n\n // Response types\n const responseTypes = node.responses\n .filter((res) => res.schema)\n .map((res) => {\n const schemaNode = res.schema!\n const responseName = `${node.operationId} ${res.statusCode}`\n const resolvedName = resolveName({\n name: responseName,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: responseName,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: schemaNode, name: resolvedName, typedName, description: res.description })\n })\n\n // Request body type\n const requestType = node.requestBody\n ? (() => {\n const requestName = `${node.operationId} MutationRequest`\n const resolvedName = resolveName({\n name: requestName,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: requestName,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: node.requestBody, name: resolvedName, typedName, description: node.requestBody.description })\n })()\n : null\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta}>\n {paramTypes}\n {responseTypes}\n {requestType}\n </File>\n )\n },\n Schema({ node, adapter, options }) {\n const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType } = options\n const { plugin, mode, resolveName, getFile } = useKubb<PluginTs>()\n\n if (!node.name) {\n return\n }\n\n const imports = adapter.getImports(node, (schemaName) => ({\n name: resolveName({\n name: schemaName,\n pluginName: plugin.name,\n type: 'type',\n }),\n path: getFile({\n name: schemaName,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n // options: {\n // group\n // },\n }).path,\n }))\n\n const isEnumSchema = node.type === 'enum'\n\n let typedName = resolveName({\n name: node.name,\n pluginName: plugin.name,\n type: 'type',\n })\n\n if (['asConst', 'asPascalConst'].includes(enumType) && isEnumSchema) {\n typedName = typedName += 'Key'\n }\n\n const type = {\n name: resolveName({\n name: node.name,\n pluginName: plugin.name,\n type: 'function',\n }),\n typedName,\n file: getFile({\n name: node.name,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n // options: {\n // group\n // },\n }),\n } as const\n\n return (\n <File baseName={type.file.baseName} path={type.file.path} meta={type.file.meta}>\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[node.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n\n <Type\n name={type.name}\n typedName={type.typedName}\n node={node}\n enumType={enumType}\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 { buildOperation, buildSchema, OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { typeGenerator, typeGeneratorV2 } 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 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, typeGeneratorV2].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 enumKeyCasing,\n enumSuffix,\n unknownType,\n emptySchemaType,\n syntaxType,\n group,\n override,\n mapper,\n paramsCasing,\n usedEnumNames,\n },\n pre: [pluginOasName],\n //resolveOptions(operation|schema): ResolvedOptions\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, adapter, rootNode, pluginManager, openInStudio } = this\n\n const root = path.resolve(config.root, config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n\n if (adapter) {\n await openInStudio({ ast: true })\n\n await walk(\n 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 adapter,\n config,\n fabric,\n Component: generator.Schema,\n plugin,\n pluginManager,\n mode,\n version: generator.version,\n })\n }\n })\n\n await writeTasks\n },\n async operation(operationNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n await buildOperation(operationNode, {\n adapter,\n config,\n fabric,\n Component: generator.Operation,\n plugin,\n pluginManager,\n mode,\n version: generator.version,\n })\n }\n })\n\n await writeTasks\n },\n },\n { depth: 'shallow' },\n )\n\n return\n }\n\n // v1 flow\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 pluginName: this.plugin.name,\n },\n })\n\n await this.upsertFile(...barrelFiles)\n },\n }\n})\n"],"mappings":"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"}