@kubb/swagger-ts 2.23.1 → 2.23.3
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.
- package/dist/{chunk-F2ZM7XY3.js → chunk-6N2CMJKK.js} +12 -10
- package/dist/chunk-6N2CMJKK.js.map +1 -0
- package/dist/{chunk-U6GJBZ64.cjs → chunk-EQCMBZ2B.cjs} +21 -19
- package/dist/chunk-EQCMBZ2B.cjs.map +1 -0
- package/dist/components.cjs +2 -2
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +1 -1
- package/dist/oas.cjs.map +1 -1
- package/package.json +14 -14
- package/src/components/Schema.tsx +2 -2
- package/src/parser/index.ts +7 -6
- package/src/plugin.ts +2 -0
- package/src/types.ts +13 -0
- package/dist/chunk-F2ZM7XY3.js.map +0 -1
- package/dist/chunk-U6GJBZ64.cjs.map +0 -1
@@ -192,11 +192,11 @@ function parse(parent, current, options) {
|
|
192
192
|
const properties = Object.entries(current.args?.properties || {}).filter((item) => {
|
193
193
|
const schemas = item[1];
|
194
194
|
return schemas && typeof schemas.map === "function";
|
195
|
-
}).map(([
|
196
|
-
let name = _name;
|
195
|
+
}).map(([name, schemas]) => {
|
197
196
|
const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name);
|
198
|
-
|
199
|
-
|
197
|
+
const mappedName = nameSchema?.args || name;
|
198
|
+
if (options.mapper?.[mappedName]) {
|
199
|
+
return options.mapper?.[mappedName];
|
200
200
|
}
|
201
201
|
const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish);
|
202
202
|
const isNullable = schemas.some((schema) => schema.keyword === schemaKeywords.nullable);
|
@@ -225,7 +225,7 @@ function parse(parent, current, options) {
|
|
225
225
|
}
|
226
226
|
const propertySignature = factory.createPropertySignature({
|
227
227
|
questionToken: isOptional || isNullish ? ["questionToken", "questionTokenAndUndefined"].includes(options.optionalType) : false,
|
228
|
-
name,
|
228
|
+
name: mappedName,
|
229
229
|
type,
|
230
230
|
readOnly: isReadonly
|
231
231
|
});
|
@@ -268,7 +268,7 @@ function Schema(props) {
|
|
268
268
|
const {
|
269
269
|
pluginManager,
|
270
270
|
plugin: {
|
271
|
-
options: { enumType, optionalType }
|
271
|
+
options: { mapper, enumType, optionalType }
|
272
272
|
}
|
273
273
|
} = useApp2();
|
274
274
|
const resolvedName = pluginManager.resolveName({
|
@@ -289,7 +289,7 @@ function Schema(props) {
|
|
289
289
|
const isNullish = tree.some((item) => item.keyword === schemaKeywords2.nullish);
|
290
290
|
const isNullable = tree.some((item) => item.keyword === schemaKeywords2.nullable);
|
291
291
|
const isOptional = tree.some((item) => item.keyword === schemaKeywords2.optional);
|
292
|
-
let type = tree.map((schema) => parse(void 0, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType })).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
292
|
+
let type = tree.map((schema) => parse(void 0, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType, mapper })).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
293
293
|
if (isNullable) {
|
294
294
|
type = factory2.createUnionDeclaration({
|
295
295
|
nodes: [type, factory2.keywordTypeNodes.null]
|
@@ -513,7 +513,8 @@ var pluginTs = createPlugin((options) => {
|
|
513
513
|
unknownType = "any",
|
514
514
|
optionalType = "questionToken",
|
515
515
|
transformers: transformers4 = {},
|
516
|
-
oasType = false
|
516
|
+
oasType = false,
|
517
|
+
mapper = {}
|
517
518
|
} = options;
|
518
519
|
const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`;
|
519
520
|
return {
|
@@ -528,7 +529,8 @@ var pluginTs = createPlugin((options) => {
|
|
528
529
|
// keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)
|
529
530
|
usedEnumNames: {},
|
530
531
|
unknownType,
|
531
|
-
override
|
532
|
+
override,
|
533
|
+
mapper
|
532
534
|
},
|
533
535
|
pre: [pluginOasName],
|
534
536
|
resolvePath(baseName, pathMode, options2) {
|
@@ -615,4 +617,4 @@ export {
|
|
615
617
|
definePlugin,
|
616
618
|
src_default
|
617
619
|
};
|
618
|
-
//# sourceMappingURL=chunk-
|
620
|
+
//# sourceMappingURL=chunk-6N2CMJKK.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts","../src/OperationGenerator.tsx","../src/components/OasType.tsx","../src/components/OperationSchema.tsx","../src/SchemaGenerator.tsx","../src/components/Schema.tsx","../src/parser/index.ts","../src/index.ts"],"sourcesContent":["import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumSuffix = '',\n dateType = 'string',\n unknownType = 'any',\n optionalType = 'questionToken',\n transformers = {},\n oasType = false,\n mapper = {},\n } = options\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginTsName,\n options: {\n transformers,\n dateType,\n optionalType,\n oasType,\n enumType,\n enumSuffix,\n // keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)\n usedEnumNames: {},\n unknownType,\n override,\n mapper,\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 ?? FileManager.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 (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\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 writeFile(path, source) {\n if (!path.endsWith('.ts') || !source) {\n return\n }\n\n return this.fileManager.write(path, source, { sanity: false })\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.api.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build()\n await this.addFile(...operationFiles)\n },\n async buildEnd() {\n if (this.config.output.write === false) {\n return\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n\n await this.fileManager.addIndexes({\n root,\n output,\n meta: { pluginKey: this.plugin.key },\n logger: this.logger,\n })\n },\n }\n})\n","import { OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { OasType } from './components/OasType.tsx'\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas} operations={operations} generator={this}>\n {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n </Oas>\n </App>,\n )\n\n return root.files\n }\n\n async operation(operation: Operation, options: PluginTs['resolvedOptions']): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} generator={this}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Parser, File, Type, useApp } from '@kubb/react'\nimport { useOas } from '@kubb/plugin-oas/hooks'\n\nimport type { OasTypes } from '@kubb/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n typeName: string\n api: OasTypes.OASDocument\n}\n\nfunction Template({ name, typeName, api }: TemplateProps): ReactNode {\n return (\n <>\n {`export const ${name} = ${JSON.stringify(api, undefined, 2)} as const`}\n <br />\n <Type name={typeName} export>\n {`Infer<typeof ${name}>`}\n </Type>\n </>\n )\n}\n\nconst defaultTemplates = { default: Template } as const\n\ntype Props = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function OasType({ name, typeName, Template = defaultTemplates.default }: Props): ReactNode {\n const oas = useOas()\n\n return <Template name={name} typeName={typeName} api={oas.api} />\n}\n\ntype FileProps = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: typeof defaultTemplates\n}\n\nOasType.File = function ({ name, typeName, templates = defaultTemplates }: FileProps): ReactNode {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginTs>()\n const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={['Infer']} path=\"@kubb/swagger-ts/oas\" isTypeOnly />\n <File.Source>\n <OasType Template={Template} name={name} typeName={typeName} />\n </File.Source>\n </File>\n </Parser>\n )\n}\n\nOasType.templates = defaultTemplates\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, Parser, useApp } from '@kubb/react'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { PluginManager } from '@kubb/core'\nimport type { Operation } from '@kubb/oas'\nimport type { ts } from '@kubb/parser-ts'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/plugin-oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/swagger-ts'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\nimport { Schema } from './Schema.tsx'\n\nfunction printCombinedSchema({\n name,\n operation,\n schemas,\n pluginManager,\n}: { name: string; operation: Operation; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n const properties: Record<string, ts.TypeNode> = {}\n\n if (schemas.response) {\n const identifier = pluginManager.resolveName({\n name: schemas.response.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['response'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\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: operation.method === 'get' ? `${name}Query` : `${name}Mutation`,\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: transformers.pascalCase(key),\n type,\n })\n })\n .filter(Boolean),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n return print(namespaceNode)\n}\n\ntype Props = {\n description?: string\n keysToOmit?: string[]\n}\n\nexport function OperationSchema({ keysToOmit, description }: Props): ReactNode {\n return <Schema keysToOmit={keysToOmit} description={description} />\n}\n\ntype FileProps = {}\n\nOperationSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager, plugin, mode, fileManager } = useApp<PluginTs>()\n const oas = useOas()\n const { getSchemas, getFile, getName } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const factoryName = getName(operation, { type: 'type' })\n const generator = new SchemaGenerator(plugin.options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: plugin.options.override,\n })\n const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean)\n\n const mapItem = ({ name, schema, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n const tree = generator.parse({ schema, name })\n\n return (\n <Oas.Schema key={i} name={name} value={schema} tree={tree}>\n {mode === 'split' && <Oas.Schema.Imports isTypeOnly />}\n <File.Source>\n <OperationSchema description={description} keysToOmit={keysToOmit} />\n </File.Source>\n </Oas.Schema>\n )\n }\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n {items.map(mapItem)}\n\n <File.Source>{printCombinedSchema({ name: factoryName, operation, schemas, pluginManager })}</File.Source>\n </File>\n </Parser>\n )\n}\n","import type { SchemaObject } from '@kubb/oas'\nimport { SchemaGenerator as Generator } from '@kubb/plugin-oas'\nimport type { SchemaMethodResult } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\nimport { Schema } from './components/Schema.tsx'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n async schema(name: string, schema: SchemaObject, options: PluginTs['resolvedOptions']): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode, output } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = this.parse({ schema, name })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema name={name} value={schema} tree={tree}>\n <Schema.File />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Oas } from '@kubb/plugin-oas/components'\nimport { File, useApp } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport { print, type ts } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { useSchema } from '@kubb/plugin-oas/hooks'\nimport type { ReactNode } from 'react'\nimport { parse, typeKeywordMapper } from '../parser/index.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types.ts'\n\ntype Props = {\n description?: string\n keysToOmit?: string[]\n}\n\nexport function Schema(props: Props): ReactNode {\n const { keysToOmit, description } = props\n const { tree, name } = useSchema()\n const {\n pluginManager,\n plugin: {\n options: { mapper, enumType, optionalType },\n },\n } = useApp<PluginTs>()\n\n // all checks are also inside this.schema(React)\n const resolvedName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const nodes: ts.Node[] = []\n const extraNodes: ts.Node[] = []\n\n if (!tree.length) {\n return ''\n }\n\n const isNullish = tree.some((item) => item.keyword === schemaKeywords.nullish)\n const isNullable = tree.some((item) => item.keyword === schemaKeywords.nullable)\n const isOptional = tree.some((item) => item.keyword === schemaKeywords.optional)\n\n let type =\n (tree\n .map((schema) => parse(undefined, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType, mapper }))\n .filter(Boolean)\n .at(0) as ts.TypeNode) || typeKeywordMapper.undefined()\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const node = factory.createTypeAliasDeclaration({\n modifiers: [factory.modifiers.export],\n name: resolvedName,\n type: keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n })\n\n const enumSchemas = SchemaGenerator.deepSearch(tree, schemaKeywords.enum)\n if (enumSchemas) {\n enumSchemas.forEach((enumSchema) => {\n extraNodes.push(\n ...factory.createEnumDeclaration({\n name: transformers.camelCase(enumSchema.args.name),\n typeName: enumSchema.args.typeName,\n enums: enumSchema.args.items\n .map((item) => (item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]))\n .filter(Boolean) as unknown as [string, string][],\n type: enumType,\n }),\n )\n })\n }\n\n nodes.push(\n factory.appendJSDocToNode({\n node,\n comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n }),\n )\n\n const filterdNodes = nodes.filter(\n (node: ts.Node) =>\n !extraNodes.some(\n (extraNode: ts.Node) => (extraNode as ts.TypeAliasDeclaration)?.name?.escapedText === (node as ts.TypeAliasDeclaration)?.name?.escapedText,\n ),\n )\n\n return print([...extraNodes, ...filterdNodes])\n}\n\ntype FileProps = {}\n\nSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager } = useApp<PluginTs>()\n const { schema } = useSchema()\n\n return (\n <Oas.Schema.File output={pluginManager.config.output.path}>\n <File.Source>\n <Schema description={schema?.description} />\n </File.Source>\n </Oas.Schema.File>\n )\n}\n","import transformers from '@kubb/core/transformers'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { isKeyword, schemaKeywords } from '@kubb/plugin-oas'\n\nimport type { ts } from '@kubb/parser-ts'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\n\nexport const typeKeywordMapper = {\n any: () => factory.keywordTypeNodes.any,\n unknown: () => factory.keywordTypeNodes.unknown,\n number: () => factory.keywordTypeNodes.number,\n integer: () => factory.keywordTypeNodes.number,\n object: (nodes?: ts.TypeElement[]) => {\n if (!nodes || !nodes.length) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(nodes)\n },\n string: () => factory.keywordTypeNodes.string,\n boolean: () => factory.keywordTypeNodes.boolean,\n undefined: () => factory.keywordTypeNodes.undefined,\n nullable: undefined,\n null: () => factory.keywordTypeNodes.null,\n nullish: undefined,\n array: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createArrayDeclaration({ nodes })\n },\n tuple: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createTupleTypeNode(nodes)\n },\n enum: (name?: string) => {\n if (!name) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(name, undefined)\n },\n union: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createUnionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n const: (name?: string | number, format?: 'string' | 'number') => {\n if (!name) {\n return undefined\n }\n\n if (format === 'number') {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(name))\n }\n\n return factory.createLiteralTypeNode(factory.createStringLiteral(name.toString()))\n },\n datetime: () => factory.keywordTypeNodes.string,\n date: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n time: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n uuid: undefined,\n url: undefined,\n strict: undefined,\n default: undefined,\n and: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createIntersectionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n describe: undefined,\n min: undefined,\n max: undefined,\n optional: undefined,\n matches: undefined,\n email: undefined,\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n ref: (propertyName?: string) => {\n if (!propertyName) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(propertyName, undefined)\n },\n blob: () => factory.createTypeReferenceNode('Blob', []),\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: undefined,\n} satisfies SchemaMapper<ts.Node | null | undefined>\n\ntype ParserOptions = {\n name: string\n typeName?: string\n description?: string\n /**\n * @default `'questionToken'`\n */\n optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n /**\n * @default `'asConst'`\n */\n enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n keysToOmit?: string[]\n mapper?: Record<string, ts.PropertySignature>\n}\n\nexport function parse(parent: Schema | undefined, current: Schema, options: ParserOptions): ts.Node | null | undefined {\n const value = typeKeywordMapper[current.keyword as keyof typeof typeKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n return typeKeywordMapper.union(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return typeKeywordMapper.and(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return typeKeywordMapper.array(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\n return typeKeywordMapper.enum(current.args.typeName)\n }\n\n if (isKeyword(current, schemaKeywords.ref)) {\n return typeKeywordMapper.ref(current.args.name)\n }\n\n if (isKeyword(current, schemaKeywords.blob)) {\n return value()\n }\n\n if (isKeyword(current, schemaKeywords.tuple)) {\n return typeKeywordMapper.tuple(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\n return typeKeywordMapper.const(current.args.name, current.args.format)\n }\n\n if (isKeyword(current, schemaKeywords.object)) {\n const properties = Object.entries(current.args?.properties || {})\n .filter((item) => {\n const schemas = item[1]\n return schemas && typeof schemas.map === 'function'\n })\n .map(([name, schemas]) => {\n const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const mappedName = nameSchema?.args || name\n\n // custom mapper(pluginOptions)\n if (options.mapper?.[mappedName]) {\n return options.mapper?.[mappedName]\n }\n\n const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some((schema) => schema.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some((schema) => schema.keyword === schemaKeywords.optional)\n const isReadonly = schemas.some((schema) => schema.keyword === schemaKeywords.readOnly)\n const describeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n const deprecatedSchema = schemas.find((schema) => schema.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n const defaultSchema = schemas.find((schema) => schema.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n const exampleSchema = schemas.find((schema) => schema.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n const schemaSchema = schemas.find((schema) => schema.keyword === schemaKeywords.schema) as SchemaKeywordMapper['schema'] | undefined\n\n let type = schemas.map((schema) => parse(current, schema, options)).filter(Boolean)[0] as ts.TypeNode\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const propertySignature = factory.createPropertySignature({\n questionToken: isOptional || isNullish ? ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string) : false,\n name: mappedName,\n type,\n readOnly: isReadonly,\n })\n\n return factory.appendJSDocToNode({\n node: propertySignature,\n comments: [\n describeSchema ? `@description ${transformers.jsStringEscape(describeSchema.args)}` : undefined,\n deprecatedSchema ? '@deprecated' : undefined,\n defaultSchema ? `@default ${defaultSchema.args}` : undefined,\n exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n schemaSchema?.args?.type || schemaSchema?.args?.format\n ? [`@type ${schemaSchema?.args?.type || 'unknown'}${!isOptional ? '' : ' | undefined'}`, schemaSchema?.args?.format].filter(Boolean).join(', ')\n : undefined,\n ].filter(Boolean),\n })\n })\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? factory.createIndexSignature(\n current.args.additionalProperties\n .map((schema) => parse(current, schema, options))\n .filter(Boolean)\n .at(0) as ts.TypeNode,\n )\n : undefined\n\n return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return typeKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return typeKeywordMapper.date(current.args.type)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return typeKeywordMapper.time(current.args.type)\n }\n\n if (current.keyword in typeKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n","import { pluginTs } from './plugin.ts'\n\nexport { pluginTs, pluginTsName } from './plugin.ts'\nexport type { PluginTs } from './types.ts'\n\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nconst definePluginDefault = pluginTs\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nexport const definePlugin = pluginTs\n\nexport default definePluginDefault\n"],"mappings":"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","names":["Generator","Oas","App","createRoot","Template","transformers","print","factory","Oas","useOas","File","Parser","useApp","Oas","File","useApp","transformers","factory","schemaKeywords","jsx","useApp","schemaKeywords","transformers","node","File","jsx","SchemaGenerator","Oas","jsx","jsxs","transformers","print","useApp","useOas","SchemaGenerator","Oas","File","Parser","jsx","Generator","createRoot","App","Oas","transformers","options","path","SchemaGenerator"]}
|
@@ -192,11 +192,11 @@ function parse(parent, current, options) {
|
|
192
192
|
const properties = Object.entries(_optionalChain([current, 'access', _ => _.args, 'optionalAccess', _2 => _2.properties]) || {}).filter((item) => {
|
193
193
|
const schemas = item[1];
|
194
194
|
return schemas && typeof schemas.map === "function";
|
195
|
-
}).map(([
|
196
|
-
let name = _name;
|
195
|
+
}).map(([name, schemas]) => {
|
197
196
|
const nameSchema = schemas.find((schema) => schema.keyword === _pluginoas.schemaKeywords.name);
|
198
|
-
|
199
|
-
|
197
|
+
const mappedName = _optionalChain([nameSchema, 'optionalAccess', _3 => _3.args]) || name;
|
198
|
+
if (_optionalChain([options, 'access', _4 => _4.mapper, 'optionalAccess', _5 => _5[mappedName]])) {
|
199
|
+
return _optionalChain([options, 'access', _6 => _6.mapper, 'optionalAccess', _7 => _7[mappedName]]);
|
200
200
|
}
|
201
201
|
const isNullish = schemas.some((schema) => schema.keyword === _pluginoas.schemaKeywords.nullish);
|
202
202
|
const isNullable = schemas.some((schema) => schema.keyword === _pluginoas.schemaKeywords.nullable);
|
@@ -225,7 +225,7 @@ function parse(parent, current, options) {
|
|
225
225
|
}
|
226
226
|
const propertySignature = factory.createPropertySignature({
|
227
227
|
questionToken: isOptional || isNullish ? ["questionToken", "questionTokenAndUndefined"].includes(options.optionalType) : false,
|
228
|
-
name,
|
228
|
+
name: mappedName,
|
229
229
|
type,
|
230
230
|
readOnly: isReadonly
|
231
231
|
});
|
@@ -236,11 +236,11 @@ function parse(parent, current, options) {
|
|
236
236
|
deprecatedSchema ? "@deprecated" : void 0,
|
237
237
|
defaultSchema ? `@default ${defaultSchema.args}` : void 0,
|
238
238
|
exampleSchema ? `@example ${exampleSchema.args}` : void 0,
|
239
|
-
_optionalChain([schemaSchema, 'optionalAccess',
|
239
|
+
_optionalChain([schemaSchema, 'optionalAccess', _8 => _8.args, 'optionalAccess', _9 => _9.type]) || _optionalChain([schemaSchema, 'optionalAccess', _10 => _10.args, 'optionalAccess', _11 => _11.format]) ? [`@type ${_optionalChain([schemaSchema, 'optionalAccess', _12 => _12.args, 'optionalAccess', _13 => _13.type]) || "unknown"}${!isOptional ? "" : " | undefined"}`, _optionalChain([schemaSchema, 'optionalAccess', _14 => _14.args, 'optionalAccess', _15 => _15.format])].filter(Boolean).join(", ") : void 0
|
240
240
|
].filter(Boolean)
|
241
241
|
});
|
242
242
|
});
|
243
|
-
const additionalProperties = _optionalChain([current, 'access',
|
243
|
+
const additionalProperties = _optionalChain([current, 'access', _16 => _16.args, 'optionalAccess', _17 => _17.additionalProperties, 'optionalAccess', _18 => _18.length]) ? factory.createIndexSignature(
|
244
244
|
current.args.additionalProperties.map((schema) => parse(current, schema, options)).filter(Boolean).at(0)
|
245
245
|
) : void 0;
|
246
246
|
return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean));
|
@@ -268,7 +268,7 @@ function Schema(props) {
|
|
268
268
|
const {
|
269
269
|
pluginManager,
|
270
270
|
plugin: {
|
271
|
-
options: { enumType, optionalType }
|
271
|
+
options: { mapper, enumType, optionalType }
|
272
272
|
}
|
273
273
|
} = _react.useApp.call(void 0, );
|
274
274
|
const resolvedName = pluginManager.resolveName({
|
@@ -289,7 +289,7 @@ function Schema(props) {
|
|
289
289
|
const isNullish = tree.some((item) => item.keyword === _pluginoas.schemaKeywords.nullish);
|
290
290
|
const isNullable = tree.some((item) => item.keyword === _pluginoas.schemaKeywords.nullable);
|
291
291
|
const isOptional = tree.some((item) => item.keyword === _pluginoas.schemaKeywords.optional);
|
292
|
-
let type = tree.map((schema) => parse(void 0, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType })).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
292
|
+
let type = tree.map((schema) => parse(void 0, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType, mapper })).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
293
293
|
if (isNullable) {
|
294
294
|
type = factory2.createUnionDeclaration({
|
295
295
|
nodes: [type, factory2.keywordTypeNodes.null]
|
@@ -308,7 +308,7 @@ function Schema(props) {
|
|
308
308
|
const node = factory2.createTypeAliasDeclaration({
|
309
309
|
modifiers: [factory2.modifiers.export],
|
310
310
|
name: resolvedName,
|
311
|
-
type: _optionalChain([keysToOmit, 'optionalAccess',
|
311
|
+
type: _optionalChain([keysToOmit, 'optionalAccess', _19 => _19.length]) ? factory2.createOmitDeclaration({
|
312
312
|
keys: keysToOmit,
|
313
313
|
type,
|
314
314
|
nonNullable: true
|
@@ -321,7 +321,7 @@ function Schema(props) {
|
|
321
321
|
...factory2.createEnumDeclaration({
|
322
322
|
name: _transformers2.default.camelCase(enumSchema.args.name),
|
323
323
|
typeName: enumSchema.args.typeName,
|
324
|
-
enums: enumSchema.args.items.map((item) => item.value === void 0 ? void 0 : [_transformers2.default.trimQuotes(_optionalChain([item, 'access',
|
324
|
+
enums: enumSchema.args.items.map((item) => item.value === void 0 ? void 0 : [_transformers2.default.trimQuotes(_optionalChain([item, 'access', _20 => _20.name, 'optionalAccess', _21 => _21.toString, 'call', _22 => _22()])), item.value]).filter(Boolean),
|
325
325
|
type: enumType
|
326
326
|
})
|
327
327
|
);
|
@@ -335,7 +335,7 @@ function Schema(props) {
|
|
335
335
|
);
|
336
336
|
const filterdNodes = nodes.filter(
|
337
337
|
(node2) => !extraNodes.some(
|
338
|
-
(extraNode) => _optionalChain([extraNode, 'optionalAccess',
|
338
|
+
(extraNode) => _optionalChain([extraNode, 'optionalAccess', _23 => _23.name, 'optionalAccess', _24 => _24.escapedText]) === _optionalChain([node2, 'optionalAccess', _25 => _25.name, 'optionalAccess', _26 => _26.escapedText])
|
339
339
|
)
|
340
340
|
);
|
341
341
|
return _parserts.print.call(void 0, [...extraNodes, ...filterdNodes]);
|
@@ -343,7 +343,7 @@ function Schema(props) {
|
|
343
343
|
Schema.File = function({}) {
|
344
344
|
const { pluginManager } = _react.useApp.call(void 0, );
|
345
345
|
const { schema } = _hooks.useSchema.call(void 0, );
|
346
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Schema.File, { output: pluginManager.config.output.path, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Schema, { description: _optionalChain([schema, 'optionalAccess',
|
346
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Schema.File, { output: pluginManager.config.output.path, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Schema, { description: _optionalChain([schema, 'optionalAccess', _27 => _27.description]) }) }) });
|
347
347
|
};
|
348
348
|
|
349
349
|
// src/SchemaGenerator.tsx
|
@@ -513,9 +513,10 @@ var pluginTs = _core.createPlugin.call(void 0, (options) => {
|
|
513
513
|
unknownType = "any",
|
514
514
|
optionalType = "questionToken",
|
515
515
|
transformers: transformers4 = {},
|
516
|
-
oasType = false
|
516
|
+
oasType = false,
|
517
|
+
mapper = {}
|
517
518
|
} = options;
|
518
|
-
const template = _optionalChain([group, 'optionalAccess',
|
519
|
+
const template = _optionalChain([group, 'optionalAccess', _28 => _28.output]) ? group.output : `${output.path}/{{tag}}Controller`;
|
519
520
|
return {
|
520
521
|
name: pluginTsName,
|
521
522
|
options: {
|
@@ -528,7 +529,8 @@ var pluginTs = _core.createPlugin.call(void 0, (options) => {
|
|
528
529
|
// keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)
|
529
530
|
usedEnumNames: {},
|
530
531
|
unknownType,
|
531
|
-
override
|
532
|
+
override,
|
533
|
+
mapper
|
532
534
|
},
|
533
535
|
pre: [_pluginoas.pluginOasName],
|
534
536
|
resolvePath(baseName, pathMode, options2) {
|
@@ -537,7 +539,7 @@ var pluginTs = _core.createPlugin.call(void 0, (options) => {
|
|
537
539
|
if (mode === "single") {
|
538
540
|
return _path2.default.resolve(root, output.path);
|
539
541
|
}
|
540
|
-
if (_optionalChain([options2, 'optionalAccess',
|
542
|
+
if (_optionalChain([options2, 'optionalAccess', _29 => _29.tag]) && _optionalChain([group, 'optionalAccess', _30 => _30.type]) === "tag") {
|
541
543
|
const tag = _transformers.camelCase.call(void 0, options2.tag);
|
542
544
|
return _path2.default.resolve(root, _utils.renderTemplate.call(void 0, template, { tag }), baseName);
|
543
545
|
}
|
@@ -546,7 +548,7 @@ var pluginTs = _core.createPlugin.call(void 0, (options) => {
|
|
546
548
|
resolveName(name, type) {
|
547
549
|
const resolvedName = _transformers.pascalCase.call(void 0, name, { isFile: type === "file" });
|
548
550
|
if (type) {
|
549
|
-
return _optionalChain([transformers4, 'optionalAccess',
|
551
|
+
return _optionalChain([transformers4, 'optionalAccess', _31 => _31.name, 'optionalCall', _32 => _32(resolvedName, type)]) || resolvedName;
|
550
552
|
}
|
551
553
|
return resolvedName;
|
552
554
|
},
|
@@ -615,4 +617,4 @@ var src_default = definePluginDefault;
|
|
615
617
|
|
616
618
|
|
617
619
|
exports.OasType = OasType; exports.Schema = Schema; exports.OperationSchema = OperationSchema; exports.pluginTsName = pluginTsName; exports.pluginTs = pluginTs; exports.definePlugin = definePlugin; exports.src_default = src_default;
|
618
|
-
//# sourceMappingURL=chunk-
|
620
|
+
//# sourceMappingURL=chunk-EQCMBZ2B.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/swagger-ts/dist/chunk-EQCMBZ2B.cjs","../src/plugin.ts","../src/OperationGenerator.tsx","../src/components/OasType.tsx","../src/components/OperationSchema.tsx","../src/SchemaGenerator.tsx","../src/components/Schema.tsx","../src/parser/index.ts","../src/index.ts"],"names":["Template","transformers","jsxs","jsx"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/swagger-ts/dist/chunk-EQCMBZ2B.cjs","sourcesContent":[null,"import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumSuffix = '',\n dateType = 'string',\n unknownType = 'any',\n optionalType = 'questionToken',\n transformers = {},\n oasType = false,\n mapper = {},\n } = options\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginTsName,\n options: {\n transformers,\n dateType,\n optionalType,\n oasType,\n enumType,\n enumSuffix,\n // keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)\n usedEnumNames: {},\n unknownType,\n override,\n mapper,\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 ?? FileManager.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 (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\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 writeFile(path, source) {\n if (!path.endsWith('.ts') || !source) {\n return\n }\n\n return this.fileManager.write(path, source, { sanity: false })\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.api.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build()\n await this.addFile(...operationFiles)\n },\n async buildEnd() {\n if (this.config.output.write === false) {\n return\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n\n await this.fileManager.addIndexes({\n root,\n output,\n meta: { pluginKey: this.plugin.key },\n logger: this.logger,\n })\n },\n }\n})\n","import { OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { OasType } from './components/OasType.tsx'\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas} operations={operations} generator={this}>\n {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n </Oas>\n </App>,\n )\n\n return root.files\n }\n\n async operation(operation: Operation, options: PluginTs['resolvedOptions']): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} generator={this}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Parser, File, Type, useApp } from '@kubb/react'\nimport { useOas } from '@kubb/plugin-oas/hooks'\n\nimport type { OasTypes } from '@kubb/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n typeName: string\n api: OasTypes.OASDocument\n}\n\nfunction Template({ name, typeName, api }: TemplateProps): ReactNode {\n return (\n <>\n {`export const ${name} = ${JSON.stringify(api, undefined, 2)} as const`}\n <br />\n <Type name={typeName} export>\n {`Infer<typeof ${name}>`}\n </Type>\n </>\n )\n}\n\nconst defaultTemplates = { default: Template } as const\n\ntype Props = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function OasType({ name, typeName, Template = defaultTemplates.default }: Props): ReactNode {\n const oas = useOas()\n\n return <Template name={name} typeName={typeName} api={oas.api} />\n}\n\ntype FileProps = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: typeof defaultTemplates\n}\n\nOasType.File = function ({ name, typeName, templates = defaultTemplates }: FileProps): ReactNode {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginTs>()\n const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={['Infer']} path=\"@kubb/swagger-ts/oas\" isTypeOnly />\n <File.Source>\n <OasType Template={Template} name={name} typeName={typeName} />\n </File.Source>\n </File>\n </Parser>\n )\n}\n\nOasType.templates = defaultTemplates\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, Parser, useApp } from '@kubb/react'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { PluginManager } from '@kubb/core'\nimport type { Operation } from '@kubb/oas'\nimport type { ts } from '@kubb/parser-ts'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/plugin-oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/swagger-ts'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\nimport { Schema } from './Schema.tsx'\n\nfunction printCombinedSchema({\n name,\n operation,\n schemas,\n pluginManager,\n}: { name: string; operation: Operation; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n const properties: Record<string, ts.TypeNode> = {}\n\n if (schemas.response) {\n const identifier = pluginManager.resolveName({\n name: schemas.response.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['response'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\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: operation.method === 'get' ? `${name}Query` : `${name}Mutation`,\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: transformers.pascalCase(key),\n type,\n })\n })\n .filter(Boolean),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n return print(namespaceNode)\n}\n\ntype Props = {\n description?: string\n keysToOmit?: string[]\n}\n\nexport function OperationSchema({ keysToOmit, description }: Props): ReactNode {\n return <Schema keysToOmit={keysToOmit} description={description} />\n}\n\ntype FileProps = {}\n\nOperationSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager, plugin, mode, fileManager } = useApp<PluginTs>()\n const oas = useOas()\n const { getSchemas, getFile, getName } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const factoryName = getName(operation, { type: 'type' })\n const generator = new SchemaGenerator(plugin.options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: plugin.options.override,\n })\n const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean)\n\n const mapItem = ({ name, schema, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n const tree = generator.parse({ schema, name })\n\n return (\n <Oas.Schema key={i} name={name} value={schema} tree={tree}>\n {mode === 'split' && <Oas.Schema.Imports isTypeOnly />}\n <File.Source>\n <OperationSchema description={description} keysToOmit={keysToOmit} />\n </File.Source>\n </Oas.Schema>\n )\n }\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n {items.map(mapItem)}\n\n <File.Source>{printCombinedSchema({ name: factoryName, operation, schemas, pluginManager })}</File.Source>\n </File>\n </Parser>\n )\n}\n","import type { SchemaObject } from '@kubb/oas'\nimport { SchemaGenerator as Generator } from '@kubb/plugin-oas'\nimport type { SchemaMethodResult } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\nimport { Schema } from './components/Schema.tsx'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n async schema(name: string, schema: SchemaObject, options: PluginTs['resolvedOptions']): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode, output } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = this.parse({ schema, name })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema name={name} value={schema} tree={tree}>\n <Schema.File />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Oas } from '@kubb/plugin-oas/components'\nimport { File, useApp } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport { print, type ts } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { useSchema } from '@kubb/plugin-oas/hooks'\nimport type { ReactNode } from 'react'\nimport { parse, typeKeywordMapper } from '../parser/index.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types.ts'\n\ntype Props = {\n description?: string\n keysToOmit?: string[]\n}\n\nexport function Schema(props: Props): ReactNode {\n const { keysToOmit, description } = props\n const { tree, name } = useSchema()\n const {\n pluginManager,\n plugin: {\n options: { mapper, enumType, optionalType },\n },\n } = useApp<PluginTs>()\n\n // all checks are also inside this.schema(React)\n const resolvedName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const nodes: ts.Node[] = []\n const extraNodes: ts.Node[] = []\n\n if (!tree.length) {\n return ''\n }\n\n const isNullish = tree.some((item) => item.keyword === schemaKeywords.nullish)\n const isNullable = tree.some((item) => item.keyword === schemaKeywords.nullable)\n const isOptional = tree.some((item) => item.keyword === schemaKeywords.optional)\n\n let type =\n (tree\n .map((schema) => parse(undefined, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType, mapper }))\n .filter(Boolean)\n .at(0) as ts.TypeNode) || typeKeywordMapper.undefined()\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const node = factory.createTypeAliasDeclaration({\n modifiers: [factory.modifiers.export],\n name: resolvedName,\n type: keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n })\n\n const enumSchemas = SchemaGenerator.deepSearch(tree, schemaKeywords.enum)\n if (enumSchemas) {\n enumSchemas.forEach((enumSchema) => {\n extraNodes.push(\n ...factory.createEnumDeclaration({\n name: transformers.camelCase(enumSchema.args.name),\n typeName: enumSchema.args.typeName,\n enums: enumSchema.args.items\n .map((item) => (item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]))\n .filter(Boolean) as unknown as [string, string][],\n type: enumType,\n }),\n )\n })\n }\n\n nodes.push(\n factory.appendJSDocToNode({\n node,\n comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n }),\n )\n\n const filterdNodes = nodes.filter(\n (node: ts.Node) =>\n !extraNodes.some(\n (extraNode: ts.Node) => (extraNode as ts.TypeAliasDeclaration)?.name?.escapedText === (node as ts.TypeAliasDeclaration)?.name?.escapedText,\n ),\n )\n\n return print([...extraNodes, ...filterdNodes])\n}\n\ntype FileProps = {}\n\nSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager } = useApp<PluginTs>()\n const { schema } = useSchema()\n\n return (\n <Oas.Schema.File output={pluginManager.config.output.path}>\n <File.Source>\n <Schema description={schema?.description} />\n </File.Source>\n </Oas.Schema.File>\n )\n}\n","import transformers from '@kubb/core/transformers'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { isKeyword, schemaKeywords } from '@kubb/plugin-oas'\n\nimport type { ts } from '@kubb/parser-ts'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\n\nexport const typeKeywordMapper = {\n any: () => factory.keywordTypeNodes.any,\n unknown: () => factory.keywordTypeNodes.unknown,\n number: () => factory.keywordTypeNodes.number,\n integer: () => factory.keywordTypeNodes.number,\n object: (nodes?: ts.TypeElement[]) => {\n if (!nodes || !nodes.length) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(nodes)\n },\n string: () => factory.keywordTypeNodes.string,\n boolean: () => factory.keywordTypeNodes.boolean,\n undefined: () => factory.keywordTypeNodes.undefined,\n nullable: undefined,\n null: () => factory.keywordTypeNodes.null,\n nullish: undefined,\n array: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createArrayDeclaration({ nodes })\n },\n tuple: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createTupleTypeNode(nodes)\n },\n enum: (name?: string) => {\n if (!name) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(name, undefined)\n },\n union: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createUnionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n const: (name?: string | number, format?: 'string' | 'number') => {\n if (!name) {\n return undefined\n }\n\n if (format === 'number') {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(name))\n }\n\n return factory.createLiteralTypeNode(factory.createStringLiteral(name.toString()))\n },\n datetime: () => factory.keywordTypeNodes.string,\n date: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n time: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n uuid: undefined,\n url: undefined,\n strict: undefined,\n default: undefined,\n and: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createIntersectionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n describe: undefined,\n min: undefined,\n max: undefined,\n optional: undefined,\n matches: undefined,\n email: undefined,\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n ref: (propertyName?: string) => {\n if (!propertyName) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(propertyName, undefined)\n },\n blob: () => factory.createTypeReferenceNode('Blob', []),\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: undefined,\n} satisfies SchemaMapper<ts.Node | null | undefined>\n\ntype ParserOptions = {\n name: string\n typeName?: string\n description?: string\n /**\n * @default `'questionToken'`\n */\n optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n /**\n * @default `'asConst'`\n */\n enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n keysToOmit?: string[]\n mapper?: Record<string, ts.PropertySignature>\n}\n\nexport function parse(parent: Schema | undefined, current: Schema, options: ParserOptions): ts.Node | null | undefined {\n const value = typeKeywordMapper[current.keyword as keyof typeof typeKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n return typeKeywordMapper.union(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return typeKeywordMapper.and(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return typeKeywordMapper.array(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\n return typeKeywordMapper.enum(current.args.typeName)\n }\n\n if (isKeyword(current, schemaKeywords.ref)) {\n return typeKeywordMapper.ref(current.args.name)\n }\n\n if (isKeyword(current, schemaKeywords.blob)) {\n return value()\n }\n\n if (isKeyword(current, schemaKeywords.tuple)) {\n return typeKeywordMapper.tuple(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\n return typeKeywordMapper.const(current.args.name, current.args.format)\n }\n\n if (isKeyword(current, schemaKeywords.object)) {\n const properties = Object.entries(current.args?.properties || {})\n .filter((item) => {\n const schemas = item[1]\n return schemas && typeof schemas.map === 'function'\n })\n .map(([name, schemas]) => {\n const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const mappedName = nameSchema?.args || name\n\n // custom mapper(pluginOptions)\n if (options.mapper?.[mappedName]) {\n return options.mapper?.[mappedName]\n }\n\n const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some((schema) => schema.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some((schema) => schema.keyword === schemaKeywords.optional)\n const isReadonly = schemas.some((schema) => schema.keyword === schemaKeywords.readOnly)\n const describeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n const deprecatedSchema = schemas.find((schema) => schema.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n const defaultSchema = schemas.find((schema) => schema.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n const exampleSchema = schemas.find((schema) => schema.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n const schemaSchema = schemas.find((schema) => schema.keyword === schemaKeywords.schema) as SchemaKeywordMapper['schema'] | undefined\n\n let type = schemas.map((schema) => parse(current, schema, options)).filter(Boolean)[0] as ts.TypeNode\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const propertySignature = factory.createPropertySignature({\n questionToken: isOptional || isNullish ? ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string) : false,\n name: mappedName,\n type,\n readOnly: isReadonly,\n })\n\n return factory.appendJSDocToNode({\n node: propertySignature,\n comments: [\n describeSchema ? `@description ${transformers.jsStringEscape(describeSchema.args)}` : undefined,\n deprecatedSchema ? '@deprecated' : undefined,\n defaultSchema ? `@default ${defaultSchema.args}` : undefined,\n exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n schemaSchema?.args?.type || schemaSchema?.args?.format\n ? [`@type ${schemaSchema?.args?.type || 'unknown'}${!isOptional ? '' : ' | undefined'}`, schemaSchema?.args?.format].filter(Boolean).join(', ')\n : undefined,\n ].filter(Boolean),\n })\n })\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? factory.createIndexSignature(\n current.args.additionalProperties\n .map((schema) => parse(current, schema, options))\n .filter(Boolean)\n .at(0) as ts.TypeNode,\n )\n : undefined\n\n return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return typeKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return typeKeywordMapper.date(current.args.type)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return typeKeywordMapper.time(current.args.type)\n }\n\n if (current.keyword in typeKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n","import { pluginTs } from './plugin.ts'\n\nexport { pluginTs, pluginTsName } from './plugin.ts'\nexport type { PluginTs } from './types.ts'\n\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nconst definePluginDefault = pluginTs\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nexport const definePlugin = pluginTs\n\nexport default definePluginDefault\n"]}
|
package/dist/components.cjs
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
var
|
5
|
+
var _chunkEQCMBZ2Bcjs = require('./chunk-EQCMBZ2B.cjs');
|
6
6
|
|
7
7
|
|
8
8
|
|
9
9
|
|
10
|
-
exports.OasType =
|
10
|
+
exports.OasType = _chunkEQCMBZ2Bcjs.OasType; exports.OperationSchema = _chunkEQCMBZ2Bcjs.OperationSchema; exports.Schema = _chunkEQCMBZ2Bcjs.Schema;
|
11
11
|
//# sourceMappingURL=components.cjs.map
|
package/dist/components.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
1
|
+
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/swagger-ts/dist/components.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,oJAAC","file":"/home/runner/work/kubb/kubb/packages/swagger-ts/dist/components.cjs"}
|
package/dist/components.js
CHANGED
package/dist/index.cjs
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
|
6
|
-
var
|
6
|
+
var _chunkEQCMBZ2Bcjs = require('./chunk-EQCMBZ2B.cjs');
|
7
7
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
11
|
|
12
|
-
exports.default =
|
12
|
+
exports.default = _chunkEQCMBZ2Bcjs.src_default; exports.definePlugin = _chunkEQCMBZ2Bcjs.definePlugin; exports.pluginTs = _chunkEQCMBZ2Bcjs.pluginTs; exports.pluginTsName = _chunkEQCMBZ2Bcjs.pluginTsName;
|
13
13
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
1
|
+
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/swagger-ts/dist/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,6MAAC","file":"/home/runner/work/kubb/kubb/packages/swagger-ts/dist/index.cjs"}
|
package/dist/index.d.cts
CHANGED
@@ -2,6 +2,7 @@ import * as _kubb_core from '@kubb/core';
|
|
2
2
|
import { PluginFactoryOptions, ResolveNameParams } from '@kubb/core';
|
3
3
|
import * as KubbFile from '@kubb/fs/types';
|
4
4
|
import { ResolvePathOptions, Exclude, Include, Override } from '@kubb/plugin-oas';
|
5
|
+
import { ts } from '@kubb/parser-ts';
|
5
6
|
|
6
7
|
type Options = {
|
7
8
|
output?: {
|
@@ -93,6 +94,17 @@ type Options = {
|
|
93
94
|
* Export an Oas object as Oas type with `import type { Infer } from '@kubb/swagger-ts/oas'`
|
94
95
|
*/
|
95
96
|
oasType?: 'infer' | false;
|
97
|
+
/**
|
98
|
+
* @example
|
99
|
+
* Use https://ts-ast-viewer.com to generate factory code(see createPropertySignature)
|
100
|
+
* category: factory.createPropertySignature(
|
101
|
+
* undefined,
|
102
|
+
* factory.createIdentifier("category"),
|
103
|
+
* factory.createToken(ts.SyntaxKind.QuestionToken),
|
104
|
+
* factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
|
105
|
+
* )
|
106
|
+
*/
|
107
|
+
mapper?: Record<string, ts.PropertySignature>;
|
96
108
|
};
|
97
109
|
type ResolvedOptions = {
|
98
110
|
enumType: NonNullable<Options['enumType']>;
|
@@ -104,6 +116,7 @@ type ResolvedOptions = {
|
|
104
116
|
transformers: NonNullable<Options['transformers']>;
|
105
117
|
oasType: NonNullable<Options['oasType']>;
|
106
118
|
usedEnumNames: Record<string, number>;
|
119
|
+
mapper: Record<string, any>;
|
107
120
|
};
|
108
121
|
type PluginTs = PluginFactoryOptions<'plugin-ts', Options, ResolvedOptions, never, ResolvePathOptions>;
|
109
122
|
declare module '@kubb/core' {
|
package/dist/index.d.ts
CHANGED
@@ -2,6 +2,7 @@ import * as _kubb_core from '@kubb/core';
|
|
2
2
|
import { PluginFactoryOptions, ResolveNameParams } from '@kubb/core';
|
3
3
|
import * as KubbFile from '@kubb/fs/types';
|
4
4
|
import { ResolvePathOptions, Exclude, Include, Override } from '@kubb/plugin-oas';
|
5
|
+
import { ts } from '@kubb/parser-ts';
|
5
6
|
|
6
7
|
type Options = {
|
7
8
|
output?: {
|
@@ -93,6 +94,17 @@ type Options = {
|
|
93
94
|
* Export an Oas object as Oas type with `import type { Infer } from '@kubb/swagger-ts/oas'`
|
94
95
|
*/
|
95
96
|
oasType?: 'infer' | false;
|
97
|
+
/**
|
98
|
+
* @example
|
99
|
+
* Use https://ts-ast-viewer.com to generate factory code(see createPropertySignature)
|
100
|
+
* category: factory.createPropertySignature(
|
101
|
+
* undefined,
|
102
|
+
* factory.createIdentifier("category"),
|
103
|
+
* factory.createToken(ts.SyntaxKind.QuestionToken),
|
104
|
+
* factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
|
105
|
+
* )
|
106
|
+
*/
|
107
|
+
mapper?: Record<string, ts.PropertySignature>;
|
96
108
|
};
|
97
109
|
type ResolvedOptions = {
|
98
110
|
enumType: NonNullable<Options['enumType']>;
|
@@ -104,6 +116,7 @@ type ResolvedOptions = {
|
|
104
116
|
transformers: NonNullable<Options['transformers']>;
|
105
117
|
oasType: NonNullable<Options['oasType']>;
|
106
118
|
usedEnumNames: Record<string, number>;
|
119
|
+
mapper: Record<string, any>;
|
107
120
|
};
|
108
121
|
type PluginTs = PluginFactoryOptions<'plugin-ts', Options, ResolvedOptions, never, ResolvePathOptions>;
|
109
122
|
declare module '@kubb/core' {
|
package/dist/index.js
CHANGED
package/dist/oas.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
1
|
+
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/swagger-ts/dist/oas.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/kubb/kubb/packages/swagger-ts/dist/oas.cjs"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@kubb/swagger-ts",
|
3
|
-
"version": "2.23.
|
3
|
+
"version": "2.23.3",
|
4
4
|
"description": "Generator swagger-ts",
|
5
5
|
"keywords": [
|
6
6
|
"typescript",
|
@@ -56,25 +56,25 @@
|
|
56
56
|
"!/**/__tests__/**"
|
57
57
|
],
|
58
58
|
"dependencies": {
|
59
|
-
"@kubb/core": "2.23.
|
60
|
-
"@kubb/
|
61
|
-
"@kubb/
|
62
|
-
"@kubb/parser-ts": "2.23.
|
63
|
-
"@kubb/plugin-oas": "2.23.
|
64
|
-
"@kubb/
|
65
|
-
"@kubb/
|
59
|
+
"@kubb/core": "2.23.3",
|
60
|
+
"@kubb/oas": "2.23.3",
|
61
|
+
"@kubb/fs": "2.23.3",
|
62
|
+
"@kubb/parser-ts": "2.23.3",
|
63
|
+
"@kubb/plugin-oas": "2.23.3",
|
64
|
+
"@kubb/types": "2.23.3",
|
65
|
+
"@kubb/react": "2.23.3"
|
66
66
|
},
|
67
67
|
"devDependencies": {
|
68
68
|
"@types/react": "^18.3.3",
|
69
|
-
"prettier": "^3.3.
|
69
|
+
"prettier": "^3.3.3",
|
70
70
|
"react": "^18.3.1",
|
71
|
-
"tsup": "^8.
|
72
|
-
"@kubb/config-biome": "2.23.
|
73
|
-
"@kubb/config-ts": "2.23.
|
74
|
-
"@kubb/config-tsup": "2.23.
|
71
|
+
"tsup": "^8.2.2",
|
72
|
+
"@kubb/config-biome": "2.23.3",
|
73
|
+
"@kubb/config-ts": "2.23.3",
|
74
|
+
"@kubb/config-tsup": "2.23.3"
|
75
75
|
},
|
76
76
|
"peerDependencies": {
|
77
|
-
"@kubb/react": "2.23.
|
77
|
+
"@kubb/react": "2.23.3"
|
78
78
|
},
|
79
79
|
"engines": {
|
80
80
|
"node": ">=18"
|
@@ -22,7 +22,7 @@ export function Schema(props: Props): ReactNode {
|
|
22
22
|
const {
|
23
23
|
pluginManager,
|
24
24
|
plugin: {
|
25
|
-
options: { enumType, optionalType },
|
25
|
+
options: { mapper, enumType, optionalType },
|
26
26
|
},
|
27
27
|
} = useApp<PluginTs>()
|
28
28
|
|
@@ -52,7 +52,7 @@ export function Schema(props: Props): ReactNode {
|
|
52
52
|
|
53
53
|
let type =
|
54
54
|
(tree
|
55
|
-
.map((schema) => parse(undefined, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType }))
|
55
|
+
.map((schema) => parse(undefined, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType, mapper }))
|
56
56
|
.filter(Boolean)
|
57
57
|
.at(0) as ts.TypeNode) || typeKeywordMapper.undefined()
|
58
58
|
|
package/src/parser/index.ts
CHANGED
@@ -123,7 +123,7 @@ type ParserOptions = {
|
|
123
123
|
*/
|
124
124
|
enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'
|
125
125
|
keysToOmit?: string[]
|
126
|
-
mapper?:
|
126
|
+
mapper?: Record<string, ts.PropertySignature>
|
127
127
|
}
|
128
128
|
|
129
129
|
export function parse(parent: Schema | undefined, current: Schema, options: ParserOptions): ts.Node | null | undefined {
|
@@ -171,12 +171,13 @@ export function parse(parent: Schema | undefined, current: Schema, options: Pars
|
|
171
171
|
const schemas = item[1]
|
172
172
|
return schemas && typeof schemas.map === 'function'
|
173
173
|
})
|
174
|
-
.map(([
|
175
|
-
let name = _name
|
174
|
+
.map(([name, schemas]) => {
|
176
175
|
const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']
|
176
|
+
const mappedName = nameSchema?.args || name
|
177
177
|
|
178
|
-
|
179
|
-
|
178
|
+
// custom mapper(pluginOptions)
|
179
|
+
if (options.mapper?.[mappedName]) {
|
180
|
+
return options.mapper?.[mappedName]
|
180
181
|
}
|
181
182
|
|
182
183
|
const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish)
|
@@ -211,7 +212,7 @@ export function parse(parent: Schema | undefined, current: Schema, options: Pars
|
|
211
212
|
|
212
213
|
const propertySignature = factory.createPropertySignature({
|
213
214
|
questionToken: isOptional || isNullish ? ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string) : false,
|
214
|
-
name,
|
215
|
+
name: mappedName,
|
215
216
|
type,
|
216
217
|
readOnly: isReadonly,
|
217
218
|
})
|
package/src/plugin.ts
CHANGED
@@ -28,6 +28,7 @@ export const pluginTs = createPlugin<PluginTs>((options) => {
|
|
28
28
|
optionalType = 'questionToken',
|
29
29
|
transformers = {},
|
30
30
|
oasType = false,
|
31
|
+
mapper = {},
|
31
32
|
} = options
|
32
33
|
const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`
|
33
34
|
|
@@ -44,6 +45,7 @@ export const pluginTs = createPlugin<PluginTs>((options) => {
|
|
44
45
|
usedEnumNames: {},
|
45
46
|
unknownType,
|
46
47
|
override,
|
48
|
+
mapper,
|
47
49
|
},
|
48
50
|
pre: [pluginOasName],
|
49
51
|
resolvePath(baseName, pathMode, options) {
|
package/src/types.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import type { Plugin, PluginFactoryOptions, ResolveNameParams } from '@kubb/core'
|
2
2
|
import type * as KubbFile from '@kubb/fs/types'
|
3
3
|
import type { Exclude, Include, Override, ResolvePathOptions } from '@kubb/plugin-oas'
|
4
|
+
import type { ts } from '@kubb/parser-ts'
|
4
5
|
|
5
6
|
export type Options = {
|
6
7
|
output?: {
|
@@ -93,6 +94,17 @@ export type Options = {
|
|
93
94
|
* Export an Oas object as Oas type with `import type { Infer } from '@kubb/swagger-ts/oas'`
|
94
95
|
*/
|
95
96
|
oasType?: 'infer' | false
|
97
|
+
/**
|
98
|
+
* @example
|
99
|
+
* Use https://ts-ast-viewer.com to generate factory code(see createPropertySignature)
|
100
|
+
* category: factory.createPropertySignature(
|
101
|
+
* undefined,
|
102
|
+
* factory.createIdentifier("category"),
|
103
|
+
* factory.createToken(ts.SyntaxKind.QuestionToken),
|
104
|
+
* factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
|
105
|
+
* )
|
106
|
+
*/
|
107
|
+
mapper?: Record<string, ts.PropertySignature>
|
96
108
|
}
|
97
109
|
|
98
110
|
type ResolvedOptions = {
|
@@ -105,6 +117,7 @@ type ResolvedOptions = {
|
|
105
117
|
transformers: NonNullable<Options['transformers']>
|
106
118
|
oasType: NonNullable<Options['oasType']>
|
107
119
|
usedEnumNames: Record<string, number>
|
120
|
+
mapper: Record<string, any>
|
108
121
|
}
|
109
122
|
|
110
123
|
export type FileMeta = {
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts","../src/OperationGenerator.tsx","../src/components/OasType.tsx","../src/components/OperationSchema.tsx","../src/SchemaGenerator.tsx","../src/components/Schema.tsx","../src/parser/index.ts","../src/index.ts"],"sourcesContent":["import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumSuffix = '',\n dateType = 'string',\n unknownType = 'any',\n optionalType = 'questionToken',\n transformers = {},\n oasType = false,\n } = options\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginTsName,\n options: {\n transformers,\n dateType,\n optionalType,\n oasType,\n enumType,\n enumSuffix,\n // keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)\n usedEnumNames: {},\n unknownType,\n override,\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 ?? FileManager.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 (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\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 writeFile(path, source) {\n if (!path.endsWith('.ts') || !source) {\n return\n }\n\n return this.fileManager.write(path, source, { sanity: false })\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.api.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build()\n await this.addFile(...operationFiles)\n },\n async buildEnd() {\n if (this.config.output.write === false) {\n return\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n\n await this.fileManager.addIndexes({\n root,\n output,\n meta: { pluginKey: this.plugin.key },\n logger: this.logger,\n })\n },\n }\n})\n","import { OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { OasType } from './components/OasType.tsx'\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas} operations={operations} generator={this}>\n {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n </Oas>\n </App>,\n )\n\n return root.files\n }\n\n async operation(operation: Operation, options: PluginTs['resolvedOptions']): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} generator={this}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Parser, File, Type, useApp } from '@kubb/react'\nimport { useOas } from '@kubb/plugin-oas/hooks'\n\nimport type { OasTypes } from '@kubb/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n typeName: string\n api: OasTypes.OASDocument\n}\n\nfunction Template({ name, typeName, api }: TemplateProps): ReactNode {\n return (\n <>\n {`export const ${name} = ${JSON.stringify(api, undefined, 2)} as const`}\n <br />\n <Type name={typeName} export>\n {`Infer<typeof ${name}>`}\n </Type>\n </>\n )\n}\n\nconst defaultTemplates = { default: Template } as const\n\ntype Props = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function OasType({ name, typeName, Template = defaultTemplates.default }: Props): ReactNode {\n const oas = useOas()\n\n return <Template name={name} typeName={typeName} api={oas.api} />\n}\n\ntype FileProps = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: typeof defaultTemplates\n}\n\nOasType.File = function ({ name, typeName, templates = defaultTemplates }: FileProps): ReactNode {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginTs>()\n const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={['Infer']} path=\"@kubb/swagger-ts/oas\" isTypeOnly />\n <File.Source>\n <OasType Template={Template} name={name} typeName={typeName} />\n </File.Source>\n </File>\n </Parser>\n )\n}\n\nOasType.templates = defaultTemplates\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, Parser, useApp } from '@kubb/react'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { PluginManager } from '@kubb/core'\nimport type { Operation } from '@kubb/oas'\nimport type { ts } from '@kubb/parser-ts'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/plugin-oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/swagger-ts'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\nimport { Schema } from './Schema.tsx'\n\nfunction printCombinedSchema({\n name,\n operation,\n schemas,\n pluginManager,\n}: { name: string; operation: Operation; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n const properties: Record<string, ts.TypeNode> = {}\n\n if (schemas.response) {\n const identifier = pluginManager.resolveName({\n name: schemas.response.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['response'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\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: operation.method === 'get' ? `${name}Query` : `${name}Mutation`,\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: transformers.pascalCase(key),\n type,\n })\n })\n .filter(Boolean),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n return print(namespaceNode)\n}\n\ntype Props = {\n description?: string\n keysToOmit?: string[]\n}\n\nexport function OperationSchema({ keysToOmit, description }: Props): ReactNode {\n return <Schema keysToOmit={keysToOmit} description={description} />\n}\n\ntype FileProps = {}\n\nOperationSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager, plugin, mode, fileManager } = useApp<PluginTs>()\n const oas = useOas()\n const { getSchemas, getFile, getName } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const factoryName = getName(operation, { type: 'type' })\n const generator = new SchemaGenerator(plugin.options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: plugin.options.override,\n })\n const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean)\n\n const mapItem = ({ name, schema, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n const tree = generator.parse({ schema, name })\n\n return (\n <Oas.Schema key={i} name={name} value={schema} tree={tree}>\n {mode === 'split' && <Oas.Schema.Imports isTypeOnly />}\n <File.Source>\n <OperationSchema description={description} keysToOmit={keysToOmit} />\n </File.Source>\n </Oas.Schema>\n )\n }\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n {items.map(mapItem)}\n\n <File.Source>{printCombinedSchema({ name: factoryName, operation, schemas, pluginManager })}</File.Source>\n </File>\n </Parser>\n )\n}\n","import type { SchemaObject } from '@kubb/oas'\nimport { SchemaGenerator as Generator } from '@kubb/plugin-oas'\nimport type { SchemaMethodResult } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\nimport { Schema } from './components/Schema.tsx'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n async schema(name: string, schema: SchemaObject, options: PluginTs['resolvedOptions']): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode, output } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = this.parse({ schema, name })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema name={name} value={schema} tree={tree}>\n <Schema.File />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Oas } from '@kubb/plugin-oas/components'\nimport { File, useApp } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport { print, type ts } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { useSchema } from '@kubb/plugin-oas/hooks'\nimport type { ReactNode } from 'react'\nimport { parse, typeKeywordMapper } from '../parser/index.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types.ts'\n\ntype Props = {\n description?: string\n keysToOmit?: string[]\n}\n\nexport function Schema(props: Props): ReactNode {\n const { keysToOmit, description } = props\n const { tree, name } = useSchema()\n const {\n pluginManager,\n plugin: {\n options: { enumType, optionalType },\n },\n } = useApp<PluginTs>()\n\n // all checks are also inside this.schema(React)\n const resolvedName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const nodes: ts.Node[] = []\n const extraNodes: ts.Node[] = []\n\n if (!tree.length) {\n return ''\n }\n\n const isNullish = tree.some((item) => item.keyword === schemaKeywords.nullish)\n const isNullable = tree.some((item) => item.keyword === schemaKeywords.nullable)\n const isOptional = tree.some((item) => item.keyword === schemaKeywords.optional)\n\n let type =\n (tree\n .map((schema) => parse(undefined, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType }))\n .filter(Boolean)\n .at(0) as ts.TypeNode) || typeKeywordMapper.undefined()\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const node = factory.createTypeAliasDeclaration({\n modifiers: [factory.modifiers.export],\n name: resolvedName,\n type: keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n })\n\n const enumSchemas = SchemaGenerator.deepSearch(tree, schemaKeywords.enum)\n if (enumSchemas) {\n enumSchemas.forEach((enumSchema) => {\n extraNodes.push(\n ...factory.createEnumDeclaration({\n name: transformers.camelCase(enumSchema.args.name),\n typeName: enumSchema.args.typeName,\n enums: enumSchema.args.items\n .map((item) => (item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]))\n .filter(Boolean) as unknown as [string, string][],\n type: enumType,\n }),\n )\n })\n }\n\n nodes.push(\n factory.appendJSDocToNode({\n node,\n comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n }),\n )\n\n const filterdNodes = nodes.filter(\n (node: ts.Node) =>\n !extraNodes.some(\n (extraNode: ts.Node) => (extraNode as ts.TypeAliasDeclaration)?.name?.escapedText === (node as ts.TypeAliasDeclaration)?.name?.escapedText,\n ),\n )\n\n return print([...extraNodes, ...filterdNodes])\n}\n\ntype FileProps = {}\n\nSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager } = useApp<PluginTs>()\n const { schema } = useSchema()\n\n return (\n <Oas.Schema.File output={pluginManager.config.output.path}>\n <File.Source>\n <Schema description={schema?.description} />\n </File.Source>\n </Oas.Schema.File>\n )\n}\n","import transformers from '@kubb/core/transformers'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { isKeyword, schemaKeywords } from '@kubb/plugin-oas'\n\nimport type { ts } from '@kubb/parser-ts'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\n\nexport const typeKeywordMapper = {\n any: () => factory.keywordTypeNodes.any,\n unknown: () => factory.keywordTypeNodes.unknown,\n number: () => factory.keywordTypeNodes.number,\n integer: () => factory.keywordTypeNodes.number,\n object: (nodes?: ts.TypeElement[]) => {\n if (!nodes || !nodes.length) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(nodes)\n },\n string: () => factory.keywordTypeNodes.string,\n boolean: () => factory.keywordTypeNodes.boolean,\n undefined: () => factory.keywordTypeNodes.undefined,\n nullable: undefined,\n null: () => factory.keywordTypeNodes.null,\n nullish: undefined,\n array: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createArrayDeclaration({ nodes })\n },\n tuple: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createTupleTypeNode(nodes)\n },\n enum: (name?: string) => {\n if (!name) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(name, undefined)\n },\n union: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createUnionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n const: (name?: string | number, format?: 'string' | 'number') => {\n if (!name) {\n return undefined\n }\n\n if (format === 'number') {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(name))\n }\n\n return factory.createLiteralTypeNode(factory.createStringLiteral(name.toString()))\n },\n datetime: () => factory.keywordTypeNodes.string,\n date: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n time: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n uuid: undefined,\n url: undefined,\n strict: undefined,\n default: undefined,\n and: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createIntersectionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n describe: undefined,\n min: undefined,\n max: undefined,\n optional: undefined,\n matches: undefined,\n email: undefined,\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n ref: (propertyName?: string) => {\n if (!propertyName) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(propertyName, undefined)\n },\n blob: () => factory.createTypeReferenceNode('Blob', []),\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: undefined,\n} satisfies SchemaMapper<ts.Node | null | undefined>\n\ntype ParserOptions = {\n name: string\n typeName?: string\n description?: string\n /**\n * @default `'questionToken'`\n */\n optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n /**\n * @default `'asConst'`\n */\n enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n keysToOmit?: string[]\n mapper?: SchemaMapper\n}\n\nexport function parse(parent: Schema | undefined, current: Schema, options: ParserOptions): ts.Node | null | undefined {\n const value = typeKeywordMapper[current.keyword as keyof typeof typeKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n return typeKeywordMapper.union(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return typeKeywordMapper.and(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return typeKeywordMapper.array(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\n return typeKeywordMapper.enum(current.args.typeName)\n }\n\n if (isKeyword(current, schemaKeywords.ref)) {\n return typeKeywordMapper.ref(current.args.name)\n }\n\n if (isKeyword(current, schemaKeywords.blob)) {\n return value()\n }\n\n if (isKeyword(current, schemaKeywords.tuple)) {\n return typeKeywordMapper.tuple(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\n return typeKeywordMapper.const(current.args.name, current.args.format)\n }\n\n if (isKeyword(current, schemaKeywords.object)) {\n const properties = Object.entries(current.args?.properties || {})\n .filter((item) => {\n const schemas = item[1]\n return schemas && typeof schemas.map === 'function'\n })\n .map(([_name, schemas]) => {\n let name = _name\n const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n\n if (nameSchema) {\n name = nameSchema.args\n }\n\n const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some((schema) => schema.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some((schema) => schema.keyword === schemaKeywords.optional)\n const isReadonly = schemas.some((schema) => schema.keyword === schemaKeywords.readOnly)\n const describeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n const deprecatedSchema = schemas.find((schema) => schema.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n const defaultSchema = schemas.find((schema) => schema.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n const exampleSchema = schemas.find((schema) => schema.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n const schemaSchema = schemas.find((schema) => schema.keyword === schemaKeywords.schema) as SchemaKeywordMapper['schema'] | undefined\n\n let type = schemas.map((schema) => parse(current, schema, options)).filter(Boolean)[0] as ts.TypeNode\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const propertySignature = factory.createPropertySignature({\n questionToken: isOptional || isNullish ? ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string) : false,\n name,\n type,\n readOnly: isReadonly,\n })\n\n return factory.appendJSDocToNode({\n node: propertySignature,\n comments: [\n describeSchema ? `@description ${transformers.jsStringEscape(describeSchema.args)}` : undefined,\n deprecatedSchema ? '@deprecated' : undefined,\n defaultSchema ? `@default ${defaultSchema.args}` : undefined,\n exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n schemaSchema?.args?.type || schemaSchema?.args?.format\n ? [`@type ${schemaSchema?.args?.type || 'unknown'}${!isOptional ? '' : ' | undefined'}`, schemaSchema?.args?.format].filter(Boolean).join(', ')\n : undefined,\n ].filter(Boolean),\n })\n })\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? factory.createIndexSignature(\n current.args.additionalProperties\n .map((schema) => parse(current, schema, options))\n .filter(Boolean)\n .at(0) as ts.TypeNode,\n )\n : undefined\n\n return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return typeKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return typeKeywordMapper.date(current.args.type)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return typeKeywordMapper.time(current.args.type)\n }\n\n if (current.keyword in typeKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n","import { pluginTs } from './plugin.ts'\n\nexport { pluginTs, pluginTsName } from './plugin.ts'\nexport type { PluginTs } from './types.ts'\n\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nconst definePluginDefault = pluginTs\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nexport const definePlugin = pluginTs\n\nexport default definePluginDefault\n"],"mappings":"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","names":["Generator","Oas","App","createRoot","Template","transformers","print","factory","Oas","useOas","File","Parser","useApp","Oas","File","useApp","transformers","factory","schemaKeywords","jsx","useApp","schemaKeywords","transformers","node","File","jsx","SchemaGenerator","Oas","jsx","jsxs","transformers","print","useApp","useOas","SchemaGenerator","Oas","File","Parser","jsx","Generator","createRoot","App","Oas","transformers","options","path","SchemaGenerator"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts","../src/OperationGenerator.tsx","../src/components/OasType.tsx","../src/components/OperationSchema.tsx","../src/SchemaGenerator.tsx","../src/components/Schema.tsx","../src/parser/index.ts","../src/index.ts"],"names":["Generator","Oas","App","createRoot","Template","transformers","print","factory","useOas","File","Parser","useApp","schemaKeywords","jsx","node","SchemaGenerator","jsxs","options","path"],"mappings":"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","sourcesContent":["import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumSuffix = '',\n dateType = 'string',\n unknownType = 'any',\n optionalType = 'questionToken',\n transformers = {},\n oasType = false,\n } = options\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginTsName,\n options: {\n transformers,\n dateType,\n optionalType,\n oasType,\n enumType,\n enumSuffix,\n // keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)\n usedEnumNames: {},\n unknownType,\n override,\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 ?? FileManager.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 (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\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 writeFile(path, source) {\n if (!path.endsWith('.ts') || !source) {\n return\n }\n\n return this.fileManager.write(path, source, { sanity: false })\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.api.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build()\n await this.addFile(...operationFiles)\n },\n async buildEnd() {\n if (this.config.output.write === false) {\n return\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n\n await this.fileManager.addIndexes({\n root,\n output,\n meta: { pluginKey: this.plugin.key },\n logger: this.logger,\n })\n },\n }\n})\n","import { OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { OasType } from './components/OasType.tsx'\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas} operations={operations} generator={this}>\n {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n </Oas>\n </App>,\n )\n\n return root.files\n }\n\n async operation(operation: Operation, options: PluginTs['resolvedOptions']): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} generator={this}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Parser, File, Type, useApp } from '@kubb/react'\nimport { useOas } from '@kubb/plugin-oas/hooks'\n\nimport type { OasTypes } from '@kubb/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n typeName: string\n api: OasTypes.OASDocument\n}\n\nfunction Template({ name, typeName, api }: TemplateProps): ReactNode {\n return (\n <>\n {`export const ${name} = ${JSON.stringify(api, undefined, 2)} as const`}\n <br />\n <Type name={typeName} export>\n {`Infer<typeof ${name}>`}\n </Type>\n </>\n )\n}\n\nconst defaultTemplates = { default: Template } as const\n\ntype Props = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function OasType({ name, typeName, Template = defaultTemplates.default }: Props): ReactNode {\n const oas = useOas()\n\n return <Template name={name} typeName={typeName} api={oas.api} />\n}\n\ntype FileProps = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: typeof defaultTemplates\n}\n\nOasType.File = function ({ name, typeName, templates = defaultTemplates }: FileProps): ReactNode {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginTs>()\n const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={['Infer']} path=\"@kubb/swagger-ts/oas\" isTypeOnly />\n <File.Source>\n <OasType Template={Template} name={name} typeName={typeName} />\n </File.Source>\n </File>\n </Parser>\n )\n}\n\nOasType.templates = defaultTemplates\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, Parser, useApp } from '@kubb/react'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { PluginManager } from '@kubb/core'\nimport type { Operation } from '@kubb/oas'\nimport type { ts } from '@kubb/parser-ts'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/plugin-oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/swagger-ts'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\nimport { Schema } from './Schema.tsx'\n\nfunction printCombinedSchema({\n name,\n operation,\n schemas,\n pluginManager,\n}: { name: string; operation: Operation; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n const properties: Record<string, ts.TypeNode> = {}\n\n if (schemas.response) {\n const identifier = pluginManager.resolveName({\n name: schemas.response.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['response'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\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: operation.method === 'get' ? `${name}Query` : `${name}Mutation`,\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: transformers.pascalCase(key),\n type,\n })\n })\n .filter(Boolean),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n return print(namespaceNode)\n}\n\ntype Props = {\n description?: string\n keysToOmit?: string[]\n}\n\nexport function OperationSchema({ keysToOmit, description }: Props): ReactNode {\n return <Schema keysToOmit={keysToOmit} description={description} />\n}\n\ntype FileProps = {}\n\nOperationSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager, plugin, mode, fileManager } = useApp<PluginTs>()\n const oas = useOas()\n const { getSchemas, getFile, getName } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const factoryName = getName(operation, { type: 'type' })\n const generator = new SchemaGenerator(plugin.options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: plugin.options.override,\n })\n const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean)\n\n const mapItem = ({ name, schema, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n const tree = generator.parse({ schema, name })\n\n return (\n <Oas.Schema key={i} name={name} value={schema} tree={tree}>\n {mode === 'split' && <Oas.Schema.Imports isTypeOnly />}\n <File.Source>\n <OperationSchema description={description} keysToOmit={keysToOmit} />\n </File.Source>\n </Oas.Schema>\n )\n }\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n {items.map(mapItem)}\n\n <File.Source>{printCombinedSchema({ name: factoryName, operation, schemas, pluginManager })}</File.Source>\n </File>\n </Parser>\n )\n}\n","import type { SchemaObject } from '@kubb/oas'\nimport { SchemaGenerator as Generator } from '@kubb/plugin-oas'\nimport type { SchemaMethodResult } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\nimport { Schema } from './components/Schema.tsx'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n async schema(name: string, schema: SchemaObject, options: PluginTs['resolvedOptions']): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode, output } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = this.parse({ schema, name })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema name={name} value={schema} tree={tree}>\n <Schema.File />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Oas } from '@kubb/plugin-oas/components'\nimport { File, useApp } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport { print, type ts } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { useSchema } from '@kubb/plugin-oas/hooks'\nimport type { ReactNode } from 'react'\nimport { parse, typeKeywordMapper } from '../parser/index.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types.ts'\n\ntype Props = {\n description?: string\n keysToOmit?: string[]\n}\n\nexport function Schema(props: Props): ReactNode {\n const { keysToOmit, description } = props\n const { tree, name } = useSchema()\n const {\n pluginManager,\n plugin: {\n options: { enumType, optionalType },\n },\n } = useApp<PluginTs>()\n\n // all checks are also inside this.schema(React)\n const resolvedName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const nodes: ts.Node[] = []\n const extraNodes: ts.Node[] = []\n\n if (!tree.length) {\n return ''\n }\n\n const isNullish = tree.some((item) => item.keyword === schemaKeywords.nullish)\n const isNullable = tree.some((item) => item.keyword === schemaKeywords.nullable)\n const isOptional = tree.some((item) => item.keyword === schemaKeywords.optional)\n\n let type =\n (tree\n .map((schema) => parse(undefined, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType }))\n .filter(Boolean)\n .at(0) as ts.TypeNode) || typeKeywordMapper.undefined()\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const node = factory.createTypeAliasDeclaration({\n modifiers: [factory.modifiers.export],\n name: resolvedName,\n type: keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n })\n\n const enumSchemas = SchemaGenerator.deepSearch(tree, schemaKeywords.enum)\n if (enumSchemas) {\n enumSchemas.forEach((enumSchema) => {\n extraNodes.push(\n ...factory.createEnumDeclaration({\n name: transformers.camelCase(enumSchema.args.name),\n typeName: enumSchema.args.typeName,\n enums: enumSchema.args.items\n .map((item) => (item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]))\n .filter(Boolean) as unknown as [string, string][],\n type: enumType,\n }),\n )\n })\n }\n\n nodes.push(\n factory.appendJSDocToNode({\n node,\n comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n }),\n )\n\n const filterdNodes = nodes.filter(\n (node: ts.Node) =>\n !extraNodes.some(\n (extraNode: ts.Node) => (extraNode as ts.TypeAliasDeclaration)?.name?.escapedText === (node as ts.TypeAliasDeclaration)?.name?.escapedText,\n ),\n )\n\n return print([...extraNodes, ...filterdNodes])\n}\n\ntype FileProps = {}\n\nSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager } = useApp<PluginTs>()\n const { schema } = useSchema()\n\n return (\n <Oas.Schema.File output={pluginManager.config.output.path}>\n <File.Source>\n <Schema description={schema?.description} />\n </File.Source>\n </Oas.Schema.File>\n )\n}\n","import transformers from '@kubb/core/transformers'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { isKeyword, schemaKeywords } from '@kubb/plugin-oas'\n\nimport type { ts } from '@kubb/parser-ts'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\n\nexport const typeKeywordMapper = {\n any: () => factory.keywordTypeNodes.any,\n unknown: () => factory.keywordTypeNodes.unknown,\n number: () => factory.keywordTypeNodes.number,\n integer: () => factory.keywordTypeNodes.number,\n object: (nodes?: ts.TypeElement[]) => {\n if (!nodes || !nodes.length) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(nodes)\n },\n string: () => factory.keywordTypeNodes.string,\n boolean: () => factory.keywordTypeNodes.boolean,\n undefined: () => factory.keywordTypeNodes.undefined,\n nullable: undefined,\n null: () => factory.keywordTypeNodes.null,\n nullish: undefined,\n array: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createArrayDeclaration({ nodes })\n },\n tuple: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createTupleTypeNode(nodes)\n },\n enum: (name?: string) => {\n if (!name) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(name, undefined)\n },\n union: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createUnionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n const: (name?: string | number, format?: 'string' | 'number') => {\n if (!name) {\n return undefined\n }\n\n if (format === 'number') {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(name))\n }\n\n return factory.createLiteralTypeNode(factory.createStringLiteral(name.toString()))\n },\n datetime: () => factory.keywordTypeNodes.string,\n date: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n time: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n uuid: undefined,\n url: undefined,\n strict: undefined,\n default: undefined,\n and: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createIntersectionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n describe: undefined,\n min: undefined,\n max: undefined,\n optional: undefined,\n matches: undefined,\n email: undefined,\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n ref: (propertyName?: string) => {\n if (!propertyName) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(propertyName, undefined)\n },\n blob: () => factory.createTypeReferenceNode('Blob', []),\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: undefined,\n} satisfies SchemaMapper<ts.Node | null | undefined>\n\ntype ParserOptions = {\n name: string\n typeName?: string\n description?: string\n /**\n * @default `'questionToken'`\n */\n optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n /**\n * @default `'asConst'`\n */\n enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n keysToOmit?: string[]\n mapper?: SchemaMapper\n}\n\nexport function parse(parent: Schema | undefined, current: Schema, options: ParserOptions): ts.Node | null | undefined {\n const value = typeKeywordMapper[current.keyword as keyof typeof typeKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n return typeKeywordMapper.union(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return typeKeywordMapper.and(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return typeKeywordMapper.array(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\n return typeKeywordMapper.enum(current.args.typeName)\n }\n\n if (isKeyword(current, schemaKeywords.ref)) {\n return typeKeywordMapper.ref(current.args.name)\n }\n\n if (isKeyword(current, schemaKeywords.blob)) {\n return value()\n }\n\n if (isKeyword(current, schemaKeywords.tuple)) {\n return typeKeywordMapper.tuple(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\n return typeKeywordMapper.const(current.args.name, current.args.format)\n }\n\n if (isKeyword(current, schemaKeywords.object)) {\n const properties = Object.entries(current.args?.properties || {})\n .filter((item) => {\n const schemas = item[1]\n return schemas && typeof schemas.map === 'function'\n })\n .map(([_name, schemas]) => {\n let name = _name\n const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n\n if (nameSchema) {\n name = nameSchema.args\n }\n\n const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some((schema) => schema.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some((schema) => schema.keyword === schemaKeywords.optional)\n const isReadonly = schemas.some((schema) => schema.keyword === schemaKeywords.readOnly)\n const describeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n const deprecatedSchema = schemas.find((schema) => schema.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n const defaultSchema = schemas.find((schema) => schema.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n const exampleSchema = schemas.find((schema) => schema.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n const schemaSchema = schemas.find((schema) => schema.keyword === schemaKeywords.schema) as SchemaKeywordMapper['schema'] | undefined\n\n let type = schemas.map((schema) => parse(current, schema, options)).filter(Boolean)[0] as ts.TypeNode\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const propertySignature = factory.createPropertySignature({\n questionToken: isOptional || isNullish ? ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string) : false,\n name,\n type,\n readOnly: isReadonly,\n })\n\n return factory.appendJSDocToNode({\n node: propertySignature,\n comments: [\n describeSchema ? `@description ${transformers.jsStringEscape(describeSchema.args)}` : undefined,\n deprecatedSchema ? '@deprecated' : undefined,\n defaultSchema ? `@default ${defaultSchema.args}` : undefined,\n exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n schemaSchema?.args?.type || schemaSchema?.args?.format\n ? [`@type ${schemaSchema?.args?.type || 'unknown'}${!isOptional ? '' : ' | undefined'}`, schemaSchema?.args?.format].filter(Boolean).join(', ')\n : undefined,\n ].filter(Boolean),\n })\n })\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? factory.createIndexSignature(\n current.args.additionalProperties\n .map((schema) => parse(current, schema, options))\n .filter(Boolean)\n .at(0) as ts.TypeNode,\n )\n : undefined\n\n return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return typeKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return typeKeywordMapper.date(current.args.type)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return typeKeywordMapper.time(current.args.type)\n }\n\n if (current.keyword in typeKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n","import { pluginTs } from './plugin.ts'\n\nexport { pluginTs, pluginTsName } from './plugin.ts'\nexport type { PluginTs } from './types.ts'\n\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nconst definePluginDefault = pluginTs\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nexport const definePlugin = pluginTs\n\nexport default definePluginDefault\n"]}
|