@kubb/swagger-ts 2.11.0 → 2.12.0
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-Y5R6DTFD.cjs → chunk-WZKUY426.cjs} +109 -136
- package/dist/chunk-WZKUY426.cjs.map +1 -0
- package/dist/{chunk-QIZFD754.js → chunk-ZNLTJZHN.js} +113 -140
- package/dist/chunk-ZNLTJZHN.js.map +1 -0
- package/dist/components.cjs +2 -2
- package/dist/components.d.cts +2 -2
- package/dist/components.d.ts +2 -2
- package/dist/components.js +1 -1
- package/dist/{index-BKDH3fXc.d.cts → index-_MgWTBjd.d.cts} +2 -5
- package/dist/{index-BKDH3fXc.d.ts → index-_MgWTBjd.d.ts} +2 -5
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/oas.d.cts +1 -1
- package/dist/oas.d.ts +1 -1
- package/package.json +10 -9
- package/src/OperationGenerator.tsx +7 -6
- package/src/SchemaGenerator.tsx +14 -7
- package/src/components/OasType.tsx +7 -19
- package/src/components/OperationSchema.tsx +34 -64
- package/src/oas/infer.ts +15 -21
- package/src/oas/mappers.ts +37 -53
- package/src/oas/model.ts +11 -10
- package/src/oas/requestParams.ts +65 -97
- package/src/oas/response.ts +3 -11
- package/src/oas/security.ts +104 -102
- package/src/plugin.ts +19 -25
- package/src/typeParser.ts +79 -67
- package/dist/chunk-QIZFD754.js.map +0 -1
- package/dist/chunk-Y5R6DTFD.cjs.map +0 -1
package/src/typeParser.ts
CHANGED
@@ -134,27 +134,27 @@ export function parseTypeMeta(item: Schema, options: ParserOptions): ts.Node | n
|
|
134
134
|
}
|
135
135
|
|
136
136
|
if (isKeyword(item, schemaKeywords.union)) {
|
137
|
-
const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['union']
|
138
|
-
return value(item.args.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])
|
137
|
+
const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['union']
|
138
|
+
return value(item.args.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])
|
139
139
|
}
|
140
140
|
|
141
141
|
if (isKeyword(item, schemaKeywords.and)) {
|
142
|
-
const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['and']
|
143
|
-
return value(item.args.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])
|
142
|
+
const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['and']
|
143
|
+
return value(item.args.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])
|
144
144
|
}
|
145
145
|
|
146
146
|
if (isKeyword(item, schemaKeywords.array)) {
|
147
|
-
const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['array']
|
148
|
-
return value(item.args.items.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])
|
147
|
+
const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['array']
|
148
|
+
return value(item.args.items.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])
|
149
149
|
}
|
150
150
|
|
151
151
|
if (isKeyword(item, schemaKeywords.enum)) {
|
152
|
-
const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['enum']
|
152
|
+
const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['enum']
|
153
153
|
return value(item.args.typeName)
|
154
154
|
}
|
155
155
|
|
156
156
|
if (isKeyword(item, schemaKeywords.ref)) {
|
157
|
-
const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['ref']
|
157
|
+
const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['ref']
|
158
158
|
return value(item.args.name)
|
159
159
|
}
|
160
160
|
|
@@ -163,20 +163,18 @@ export function parseTypeMeta(item: Schema, options: ParserOptions): ts.Node | n
|
|
163
163
|
}
|
164
164
|
|
165
165
|
if (isKeyword(item, schemaKeywords.tuple)) {
|
166
|
-
const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['tuple']
|
167
|
-
return value(
|
168
|
-
item.args.map(tupleItem => parseTypeMeta(tupleItem, options)).filter(Boolean) as ts.TypeNode[],
|
169
|
-
)
|
166
|
+
const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['tuple']
|
167
|
+
return value(item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean) as ts.TypeNode[])
|
170
168
|
}
|
171
169
|
|
172
170
|
if (isKeyword(item, schemaKeywords.const)) {
|
173
|
-
const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['const']
|
171
|
+
const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['const']
|
174
172
|
|
175
173
|
return value(item.args.name, item.args.format)
|
176
174
|
}
|
177
175
|
|
178
176
|
if (isKeyword(item, schemaKeywords.object)) {
|
179
|
-
const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['object']
|
177
|
+
const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['object']
|
180
178
|
|
181
179
|
const properties = Object.entries(item.args?.properties || {})
|
182
180
|
.filter((item) => {
|
@@ -187,31 +185,35 @@ export function parseTypeMeta(item: Schema, options: ParserOptions): ts.Node | n
|
|
187
185
|
const name = item[0]
|
188
186
|
const schemas = item[1]
|
189
187
|
|
190
|
-
const isNullish = schemas.some(item => item.keyword === schemaKeywords.nullish)
|
191
|
-
const isNullable = schemas.some(item => item.keyword === schemaKeywords.nullable)
|
192
|
-
const isOptional = schemas.some(item => item.keyword === schemaKeywords.optional)
|
193
|
-
const isReadonly = schemas.some(item => item.keyword === schemaKeywords.readOnly)
|
194
|
-
const describeSchema = schemas.find(item => item.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined
|
195
|
-
const deprecatedSchema = schemas.find(item => item.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined
|
196
|
-
const defaultSchema = schemas.find(item => item.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined
|
197
|
-
const exampleSchema = schemas.find(item => item.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined
|
198
|
-
const typeSchema = schemas.find(item => item.keyword === schemaKeywords.type) as SchemaKeywordMapper['type'] | undefined
|
199
|
-
const formatSchema = schemas.find(item => item.keyword === schemaKeywords.format) as SchemaKeywordMapper['format'] | undefined
|
200
|
-
|
201
|
-
let type = schemas
|
202
|
-
.map((item) => parseTypeMeta(item, options))
|
203
|
-
.filter(Boolean)[0] as ts.TypeNode
|
188
|
+
const isNullish = schemas.some((item) => item.keyword === schemaKeywords.nullish)
|
189
|
+
const isNullable = schemas.some((item) => item.keyword === schemaKeywords.nullable)
|
190
|
+
const isOptional = schemas.some((item) => item.keyword === schemaKeywords.optional)
|
191
|
+
const isReadonly = schemas.some((item) => item.keyword === schemaKeywords.readOnly)
|
192
|
+
const describeSchema = schemas.find((item) => item.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined
|
193
|
+
const deprecatedSchema = schemas.find((item) => item.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined
|
194
|
+
const defaultSchema = schemas.find((item) => item.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined
|
195
|
+
const exampleSchema = schemas.find((item) => item.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined
|
196
|
+
const typeSchema = schemas.find((item) => item.keyword === schemaKeywords.type) as SchemaKeywordMapper['type'] | undefined
|
197
|
+
const formatSchema = schemas.find((item) => item.keyword === schemaKeywords.format) as SchemaKeywordMapper['format'] | undefined
|
198
|
+
|
199
|
+
let type = schemas.map((item) => parseTypeMeta(item, options)).filter(Boolean)[0] as ts.TypeNode
|
204
200
|
|
205
201
|
if (isNullable) {
|
206
|
-
type = factory.createUnionDeclaration({
|
202
|
+
type = factory.createUnionDeclaration({
|
203
|
+
nodes: [type, factory.keywordTypeNodes.null],
|
204
|
+
}) as ts.TypeNode
|
207
205
|
}
|
208
206
|
|
209
207
|
if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {
|
210
|
-
type = factory.createUnionDeclaration({
|
208
|
+
type = factory.createUnionDeclaration({
|
209
|
+
nodes: [type, factory.keywordTypeNodes.undefined],
|
210
|
+
}) as ts.TypeNode
|
211
211
|
}
|
212
212
|
|
213
213
|
if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {
|
214
|
-
type = factory.createUnionDeclaration({
|
214
|
+
type = factory.createUnionDeclaration({
|
215
|
+
nodes: [type, factory.keywordTypeNodes.undefined],
|
216
|
+
}) as ts.TypeNode
|
215
217
|
}
|
216
218
|
|
217
219
|
const propertySignature = factory.createPropertySignature({
|
@@ -225,20 +227,21 @@ export function parseTypeMeta(item: Schema, options: ParserOptions): ts.Node | n
|
|
225
227
|
node: propertySignature,
|
226
228
|
comments: [
|
227
229
|
describeSchema ? `@description ${transformers.jsStringEscape(describeSchema.args)}` : undefined,
|
228
|
-
deprecatedSchema ?
|
229
|
-
defaultSchema
|
230
|
-
? `@default ${defaultSchema.args}`
|
231
|
-
: undefined,
|
230
|
+
deprecatedSchema ? '@deprecated' : undefined,
|
231
|
+
defaultSchema ? `@default ${defaultSchema.args}` : undefined,
|
232
232
|
exampleSchema ? `@example ${exampleSchema.args}` : undefined,
|
233
|
-
typeSchema
|
234
|
-
? `@type ${typeSchema.args}${!isOptional ? '' : ' | undefined'} ${formatSchema?.args || ''}`
|
235
|
-
: undefined,
|
233
|
+
typeSchema ? `@type ${typeSchema.args}${!isOptional ? '' : ' | undefined'} ${formatSchema?.args || ''}` : undefined,
|
236
234
|
].filter(Boolean),
|
237
235
|
})
|
238
236
|
})
|
239
237
|
|
240
238
|
const additionalProperties = item.args?.additionalProperties?.length
|
241
|
-
? factory.createIndexSignature(
|
239
|
+
? factory.createIndexSignature(
|
240
|
+
item.args.additionalProperties
|
241
|
+
.map((schema) => parseTypeMeta(schema, options))
|
242
|
+
.filter(Boolean)
|
243
|
+
.at(0) as ts.TypeNode,
|
244
|
+
)
|
242
245
|
: undefined
|
243
246
|
|
244
247
|
return value([...properties, additionalProperties].filter(Boolean))
|
@@ -251,10 +254,7 @@ export function parseTypeMeta(item: Schema, options: ParserOptions): ts.Node | n
|
|
251
254
|
return undefined
|
252
255
|
}
|
253
256
|
|
254
|
-
export function typeParser(
|
255
|
-
schemas: Schema[],
|
256
|
-
options: ParserOptions,
|
257
|
-
): string {
|
257
|
+
export function typeParser(schemas: Schema[], options: ParserOptions): string {
|
258
258
|
const nodes: ts.Node[] = []
|
259
259
|
const extraNodes: ts.Node[] = []
|
260
260
|
|
@@ -262,54 +262,66 @@ export function typeParser(
|
|
262
262
|
return ''
|
263
263
|
}
|
264
264
|
|
265
|
-
const isNullish = schemas.some(item => item.keyword === schemaKeywords.nullish)
|
266
|
-
const isNullable = schemas.some(item => item.keyword === schemaKeywords.nullable)
|
267
|
-
const isOptional = schemas.some(item => item.keyword === schemaKeywords.optional)
|
265
|
+
const isNullish = schemas.some((item) => item.keyword === schemaKeywords.nullish)
|
266
|
+
const isNullable = schemas.some((item) => item.keyword === schemaKeywords.nullable)
|
267
|
+
const isOptional = schemas.some((item) => item.keyword === schemaKeywords.optional)
|
268
268
|
|
269
|
-
let type =
|
270
|
-
|
269
|
+
let type =
|
270
|
+
(schemas
|
271
|
+
.map((schema) => parseTypeMeta(schema, options))
|
272
|
+
.filter(Boolean)
|
273
|
+
.at(0) as ts.TypeNode) || typeKeywordMapper.undefined()
|
271
274
|
|
272
275
|
if (isNullable) {
|
273
|
-
type = factory.createUnionDeclaration({
|
276
|
+
type = factory.createUnionDeclaration({
|
277
|
+
nodes: [type, factory.keywordTypeNodes.null],
|
278
|
+
}) as ts.TypeNode
|
274
279
|
}
|
275
280
|
|
276
281
|
if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {
|
277
|
-
type = factory.createUnionDeclaration({
|
282
|
+
type = factory.createUnionDeclaration({
|
283
|
+
nodes: [type, factory.keywordTypeNodes.undefined],
|
284
|
+
}) as ts.TypeNode
|
278
285
|
}
|
279
286
|
|
280
287
|
if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {
|
281
|
-
type = factory.createUnionDeclaration({
|
288
|
+
type = factory.createUnionDeclaration({
|
289
|
+
nodes: [type, factory.keywordTypeNodes.undefined],
|
290
|
+
}) as ts.TypeNode
|
282
291
|
}
|
283
292
|
|
284
293
|
const node = factory.createTypeAliasDeclaration({
|
285
294
|
modifiers: [factory.modifiers.export],
|
286
295
|
name: options.name,
|
287
|
-
type: options.keysToOmit?.length
|
296
|
+
type: options.keysToOmit?.length
|
297
|
+
? factory.createOmitDeclaration({
|
298
|
+
keys: options.keysToOmit,
|
299
|
+
type,
|
300
|
+
nonNullable: true,
|
301
|
+
})
|
302
|
+
: type,
|
288
303
|
})
|
289
304
|
|
290
305
|
const enumSchemas = SchemaGenerator.deepSearch(schemas, schemaKeywords.enum)
|
291
306
|
if (enumSchemas) {
|
292
|
-
enumSchemas.forEach(enumSchema => {
|
293
|
-
extraNodes.push(
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
}))
|
307
|
+
enumSchemas.forEach((enumSchema) => {
|
308
|
+
extraNodes.push(
|
309
|
+
...factory.createEnumDeclaration({
|
310
|
+
name: transformers.camelCase(enumSchema.args.name),
|
311
|
+
typeName: enumSchema.args.typeName,
|
312
|
+
enums: enumSchema.args.items
|
313
|
+
.map((item) => (item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]))
|
314
|
+
.filter(Boolean) as unknown as [string, string][],
|
315
|
+
type: options.enumType,
|
316
|
+
}),
|
317
|
+
)
|
304
318
|
})
|
305
319
|
}
|
306
320
|
|
307
321
|
nodes.push(
|
308
322
|
factory.appendJSDocToNode({
|
309
323
|
node,
|
310
|
-
comments: [
|
311
|
-
options.description ? `@description ${transformers.jsStringEscape(options.description)}` : undefined,
|
312
|
-
].filter(Boolean),
|
324
|
+
comments: [options.description ? `@description ${transformers.jsStringEscape(options.description)}` : undefined].filter(Boolean),
|
313
325
|
}),
|
314
326
|
)
|
315
327
|
|
@@ -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/typeParser.ts","../src/index.ts"],"sourcesContent":["import path from 'node:path'\n\nimport { createPlugin, FileManager, PluginManager } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginName as swaggerPluginName } from '@kubb/swagger'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOptions as SwaggerPluginOptions } from '@kubb/swagger'\nimport type { PluginOptions } from './types.ts'\nexport const pluginName = 'swagger-ts' satisfies PluginOptions['name']\nexport const pluginKey: PluginOptions['key'] = [pluginName] satisfies PluginOptions['key']\n\nexport const definePlugin = createPlugin<PluginOptions>((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: pluginName,\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 },\n pre: [swaggerPluginName],\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 === 'file') {\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(source, writePath) {\n if (!writePath.endsWith('.ts') || !source) {\n return\n }\n\n return this.fileManager.write(source, writePath, { sanity: false })\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [swaggerPluginName])\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(\n this.plugin.options,\n {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n include: undefined,\n mode,\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(\n this.plugin.options,\n {\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\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 })\n },\n }\n})\n","import { createRoot } from '@kubb/react'\nimport { OperationGenerator as Generator } from '@kubb/swagger'\nimport { Oas } from '@kubb/swagger/components'\n\nimport { OasType } from './components/OasType.tsx'\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { AppContextProps } from '@kubb/react'\nimport type { OperationMethodResult } from '@kubb/swagger'\nimport type { Operation } from '@kubb/swagger/oas'\nimport type { FileMeta, PluginOptions } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginOptions['resolvedOptions'], PluginOptions> {\n async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin } = this.context\n\n const root = createRoot<AppContextProps<PluginOptions['appMeta']>>({ logger: pluginManager.logger })\n\n root.render(\n <Oas oas={oas} operations={operations} getOperationSchemas={(...props) => this.getSchemas(...props)}>\n {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n </Oas>,\n { meta: { pluginManager, plugin } },\n )\n\n return root.files\n }\n\n async operation(\n operation: Operation,\n options: PluginOptions['resolvedOptions'],\n ): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot<AppContextProps<PluginOptions['appMeta']>>({ logger: pluginManager.logger })\n root.render(\n <Oas oas={oas} operations={[operation]} getOperationSchemas={(...props) => this.getSchemas(...props)}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File mode={mode} />\n </Oas.Operation>\n </Oas>,\n { meta: { pluginManager, plugin: { ...plugin, options } } },\n )\n\n return root.files\n }\n\n async get(): OperationMethodResult<FileMeta> {\n return null\n }\n\n async post(): OperationMethodResult<FileMeta> {\n return null\n }\n\n async put(): OperationMethodResult<FileMeta> {\n return null\n }\n async patch(): OperationMethodResult<FileMeta> {\n return null\n }\n async delete(): OperationMethodResult<FileMeta> {\n return null\n }\n}\n","import { Editor, File, Type, usePlugin } from '@kubb/react'\nimport { useGetFile } from '@kubb/react'\nimport { useOas } from '@kubb/swagger/hooks'\n\nimport type { OasTypes } from '@kubb/swagger/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginOptions } 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({\n name,\n typeName,\n api,\n}: 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({\n name,\n typeName,\n Template = defaultTemplates.default,\n}: 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 { key: pluginKey } = usePlugin<PluginOptions>()\n const file = useGetFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Editor language=\"typescript\">\n <File<FileMeta>\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n >\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 </Editor>\n )\n}\n\nOasType.templates = defaultTemplates\n","/* eslint-disable no-empty-pattern */\n/* eslint-disable @typescript-eslint/ban-types */\nimport transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser'\nimport * as factory from '@kubb/parser/factory'\nimport { Editor, File, usePlugin, usePluginManager } from '@kubb/react'\nimport { Oas, Schema } from '@kubb/swagger/components'\nimport { useGetOperationFile, useOas, useOperation, useOperationName, useOperationSchemas } from '@kubb/swagger/hooks'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { KubbFile } from '@kubb/core'\nimport type { ts } from '@kubb/parser'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/swagger'\nimport type { OperationSchemas } from '@kubb/swagger'\nimport type { Operation } from '@kubb/swagger/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginOptions } from '../types.ts'\n\ntype Props = {}\n\nfunction printCombinedSchema(name: string, operation: Operation, schemas: OperationSchemas): string {\n const properties: Record<string, ts.TypeNode> = {\n 'response': factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.response.name),\n undefined,\n ),\n }\n\n if (schemas.request) {\n properties['request'] = factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.request.name),\n undefined,\n )\n }\n\n if (schemas.pathParams) {\n properties['pathParams'] = factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.pathParams.name),\n undefined,\n )\n }\n\n if (schemas.queryParams) {\n properties['queryParams'] = factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.queryParams.name),\n undefined,\n )\n }\n\n if (schemas.headerParams) {\n properties['headerParams'] = factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.headerParams.name),\n undefined,\n )\n }\n\n if (schemas.errors) {\n properties['errors'] = factory.createUnionDeclaration({\n nodes: schemas.errors.map(error => {\n return factory.createTypeReferenceNode(\n factory.createIdentifier(error.name),\n undefined,\n )\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).map(key => {\n const type = properties[key]\n if (!type) {\n return undefined\n }\n\n return factory.createPropertySignature(\n {\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\nexport function OperationSchema({}: Props): ReactNode {\n return (\n <>\n </>\n )\n}\n\ntype FileProps = {\n mode: KubbFile.Mode | undefined\n}\n\nOperationSchema.File = function({ mode = 'directory' }: FileProps): ReactNode {\n const plugin = usePlugin<PluginOptions>()\n\n const pluginManager = usePluginManager()\n const oas = useOas()\n const schemas = useOperationSchemas()\n const file = useGetOperationFile()\n const factoryName = useOperationName({ type: 'type' })\n const operation = useOperation()\n\n const generator = new SchemaGenerator(plugin.options, { oas, plugin, pluginManager })\n\n const items = [\n schemas.pathParams,\n schemas.queryParams,\n schemas.headerParams,\n schemas.statusCodes,\n schemas.request,\n schemas.response,\n ].flat().filter(Boolean)\n\n const mapItem = ({ name, schema: object, ...options }: OperationSchemaType, i: number) => {\n return (\n <Oas.Schema key={i} generator={generator} name={name} object={object}>\n {mode === 'directory'\n && <Schema.Imports isTypeOnly />}\n <File.Source>\n <Schema.Source options={options} />\n </File.Source>\n </Oas.Schema>\n )\n }\n\n return (\n <Editor language=\"typescript\">\n <File<FileMeta>\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n >\n {items.map(mapItem)}\n\n <File.Source>\n {printCombinedSchema(factoryName, operation, schemas)}\n </File.Source>\n </File>\n </Editor>\n )\n}\n","import { createRoot } from '@kubb/react'\nimport { SchemaGenerator as Generator } from '@kubb/swagger'\nimport { Oas, Schema } from '@kubb/swagger/components'\nimport { pluginKey as swaggerTypeScriptPluginKey } from '@kubb/swagger-ts'\n\nimport { pluginKey } from './plugin.ts'\nimport { typeParser } from './typeParser.ts'\n\nimport type { AppContextProps } from '@kubb/react'\nimport type { Schema as SchemaType, SchemaGeneratorBuildOptions, SchemaMethodResult } from '@kubb/swagger'\nimport type { SchemaObject } from '@kubb/swagger/oas'\nimport type { FileMeta, PluginOptions } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginOptions['resolvedOptions'], PluginOptions> {\n async schema(name: string, object: SchemaObject): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, mode, plugin, output } = this.context\n\n const root = createRoot<AppContextProps<PluginOptions['appMeta']>>({ logger: pluginManager.logger })\n\n root.render(\n <Oas oas={oas}>\n <Oas.Schema generator={this} name={name} object={object}>\n <Schema.File isTypeOnly output={output} mode={mode} />\n </Oas.Schema>\n </Oas>,\n { meta: { pluginManager, plugin } },\n )\n\n return root.files\n }\n // TODO convert to a react component called `Schema.Parser` with props parser as part of the SchemaContext\n getSource(name: string, schemas: SchemaType[], {\n keysToOmit,\n description,\n }: SchemaGeneratorBuildOptions = {}): string[] {\n const texts: string[] = []\n\n const resolvedName = this.context.pluginManager.resolveName({ name, pluginKey, type: 'function' })\n const resvoledTypeName = this.context.pluginManager.resolveName({ name, pluginKey: swaggerTypeScriptPluginKey, type: 'type' })\n\n const typeOutput = typeParser(schemas, {\n name: resolvedName,\n typeName: resvoledTypeName,\n description,\n enumType: this.options.enumType || 'asConst',\n optionalType: this.options.optionalType,\n keysToOmit,\n })\n\n texts.push(typeOutput)\n\n return texts\n }\n /**\n * @deprecated only used for testing\n */\n\n buildSource(name: string, schema: SchemaObject, options: SchemaGeneratorBuildOptions = {}): string[] {\n const schemas = this.buildSchemas(schema, name)\n\n return this.getSource(name, schemas, options)\n }\n}\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser'\nimport * as factory from '@kubb/parser/factory'\nimport { isKeyword, SchemaGenerator, schemaKeywords } from '@kubb/swagger'\n\nimport type { ts } from '@kubb/parser'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/swagger'\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) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(nodes)\n },\n lazy: undefined,\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: () => 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 type: undefined,\n format: undefined,\n catchall: undefined,\n} satisfies SchemaMapper<(ctx?: any) => 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?: typeof typeKeywordMapper\n}\n\nexport function parseTypeMeta(item: Schema, options: ParserOptions): ts.Node | null | undefined {\n const mapper = options.mapper || typeKeywordMapper\n const value = mapper[item.keyword as keyof typeof mapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(item, schemaKeywords.union)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['union']\n return value(item.args.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.and)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['and']\n return value(item.args.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.array)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['array']\n return value(item.args.items.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.enum)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['enum']\n return value(item.args.typeName)\n }\n\n if (isKeyword(item, schemaKeywords.ref)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['ref']\n return value(item.args.name)\n }\n\n if (isKeyword(item, schemaKeywords.blob)) {\n return value()\n }\n\n if (isKeyword(item, schemaKeywords.tuple)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['tuple']\n return value(\n item.args.map(tupleItem => parseTypeMeta(tupleItem, options)).filter(Boolean) as ts.TypeNode[],\n )\n }\n\n if (isKeyword(item, schemaKeywords.const)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['const']\n\n return value(item.args.name, item.args.format)\n }\n\n if (isKeyword(item, schemaKeywords.object)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['object']\n\n const properties = Object.entries(item.args?.properties || {})\n .filter((item) => {\n const schemas = item[1]\n return schemas && typeof schemas.map === 'function'\n })\n .map((item) => {\n const name = item[0]\n const schemas = item[1]\n\n const isNullish = schemas.some(item => item.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some(item => item.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some(item => item.keyword === schemaKeywords.optional)\n const isReadonly = schemas.some(item => item.keyword === schemaKeywords.readOnly)\n const describeSchema = schemas.find(item => item.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n const deprecatedSchema = schemas.find(item => item.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n const defaultSchema = schemas.find(item => item.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n const exampleSchema = schemas.find(item => item.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n const typeSchema = schemas.find(item => item.keyword === schemaKeywords.type) as SchemaKeywordMapper['type'] | undefined\n const formatSchema = schemas.find(item => item.keyword === schemaKeywords.format) as SchemaKeywordMapper['format'] | undefined\n\n let type = schemas\n .map((item) => parseTypeMeta(item, options))\n .filter(Boolean)[0] as ts.TypeNode\n\n if (isNullable) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n const propertySignature = factory.createPropertySignature({\n questionToken: isOptional && ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string),\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\n ? `@default ${defaultSchema.args}`\n : undefined,\n exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n typeSchema\n ? `@type ${typeSchema.args}${!isOptional ? '' : ' | undefined'} ${formatSchema?.args || ''}`\n : undefined,\n ].filter(Boolean),\n })\n })\n\n const additionalProperties = item.args?.additionalProperties?.length\n ? factory.createIndexSignature(item.args.additionalProperties.map(schema => parseTypeMeta(schema, options)).filter(Boolean).at(0) as ts.TypeNode)\n : undefined\n\n return value([...properties, additionalProperties].filter(Boolean))\n }\n\n if (item.keyword in mapper) {\n return value()\n }\n\n return undefined\n}\n\nexport function typeParser(\n schemas: Schema[],\n options: ParserOptions,\n): string {\n const nodes: ts.Node[] = []\n const extraNodes: ts.Node[] = []\n\n if (!schemas.length) {\n return ''\n }\n\n const isNullish = schemas.some(item => item.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some(item => item.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some(item => item.keyword === schemaKeywords.optional)\n\n let type = schemas.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0) as ts.TypeNode\n || typeKeywordMapper.undefined()\n\n if (isNullable) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n const node = factory.createTypeAliasDeclaration({\n modifiers: [factory.modifiers.export],\n name: options.name,\n type: options.keysToOmit?.length ? factory.createOmitDeclaration({ keys: options.keysToOmit, type, nonNullable: true }) : type,\n })\n\n const enumSchemas = SchemaGenerator.deepSearch(schemas, schemaKeywords.enum)\n if (enumSchemas) {\n enumSchemas.forEach(enumSchema => {\n extraNodes.push(...factory.createEnumDeclaration({\n name: transformers.camelCase(enumSchema.args.name),\n typeName: enumSchema.args.typeName,\n enums: enumSchema.args.items.map(item => item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]).filter(\n Boolean,\n ) as unknown as [\n string,\n string,\n ][],\n type: options.enumType,\n }))\n })\n }\n\n nodes.push(\n factory.appendJSDocToNode({\n node,\n comments: [\n options.description ? `@description ${transformers.jsStringEscape(options.description)}` : undefined,\n ].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","import { definePlugin } from './plugin.ts'\n\nexport { definePlugin, pluginKey, pluginName } from './plugin.ts'\nexport type * from './types.ts'\n\n/**\n * @deprecated Use `import { definePlugin } from '@kubb/swagger-ts'`\n */\nconst definePluginDefault = definePlugin\n\nexport default definePluginDefault\n"],"mappings":"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","names":["createRoot","Generator","Oas","Template","pluginKey","transformers","print","factory","Editor","File","usePlugin","Oas","Schema","useOas","value","item","node","jsx","SchemaGenerator","Fragment","jsx","jsxs","transformers","print","usePlugin","useOas","SchemaGenerator","Oas","Schema","File","Editor","jsx","Generator","createRoot","Oas","transformers","options","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/typeParser.ts","../src/index.ts"],"names":["createRoot","Generator","Oas","Template","pluginKey","transformers","print","factory","Editor","File","usePlugin","Schema","useOas","value","item","node","jsx","SchemaGenerator","Fragment","jsxs","options"],"mappings":"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","sourcesContent":["import path from 'node:path'\n\nimport { createPlugin, FileManager, PluginManager } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginName as swaggerPluginName } from '@kubb/swagger'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOptions as SwaggerPluginOptions } from '@kubb/swagger'\nimport type { PluginOptions } from './types.ts'\nexport const pluginName = 'swagger-ts' satisfies PluginOptions['name']\nexport const pluginKey: PluginOptions['key'] = [pluginName] satisfies PluginOptions['key']\n\nexport const definePlugin = createPlugin<PluginOptions>((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: pluginName,\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 },\n pre: [swaggerPluginName],\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 === 'file') {\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(source, writePath) {\n if (!writePath.endsWith('.ts') || !source) {\n return\n }\n\n return this.fileManager.write(source, writePath, { sanity: false })\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [swaggerPluginName])\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(\n this.plugin.options,\n {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n include: undefined,\n mode,\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(\n this.plugin.options,\n {\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\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 })\n },\n }\n})\n","import { createRoot } from '@kubb/react'\nimport { OperationGenerator as Generator } from '@kubb/swagger'\nimport { Oas } from '@kubb/swagger/components'\n\nimport { OasType } from './components/OasType.tsx'\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { AppContextProps } from '@kubb/react'\nimport type { OperationMethodResult } from '@kubb/swagger'\nimport type { Operation } from '@kubb/swagger/oas'\nimport type { FileMeta, PluginOptions } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginOptions['resolvedOptions'], PluginOptions> {\n async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin } = this.context\n\n const root = createRoot<AppContextProps<PluginOptions['appMeta']>>({ logger: pluginManager.logger })\n\n root.render(\n <Oas oas={oas} operations={operations} getOperationSchemas={(...props) => this.getSchemas(...props)}>\n {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n </Oas>,\n { meta: { pluginManager, plugin } },\n )\n\n return root.files\n }\n\n async operation(\n operation: Operation,\n options: PluginOptions['resolvedOptions'],\n ): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot<AppContextProps<PluginOptions['appMeta']>>({ logger: pluginManager.logger })\n root.render(\n <Oas oas={oas} operations={[operation]} getOperationSchemas={(...props) => this.getSchemas(...props)}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File mode={mode} />\n </Oas.Operation>\n </Oas>,\n { meta: { pluginManager, plugin: { ...plugin, options } } },\n )\n\n return root.files\n }\n\n async get(): OperationMethodResult<FileMeta> {\n return null\n }\n\n async post(): OperationMethodResult<FileMeta> {\n return null\n }\n\n async put(): OperationMethodResult<FileMeta> {\n return null\n }\n async patch(): OperationMethodResult<FileMeta> {\n return null\n }\n async delete(): OperationMethodResult<FileMeta> {\n return null\n }\n}\n","import { Editor, File, Type, usePlugin } from '@kubb/react'\nimport { useGetFile } from '@kubb/react'\nimport { useOas } from '@kubb/swagger/hooks'\n\nimport type { OasTypes } from '@kubb/swagger/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginOptions } 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({\n name,\n typeName,\n api,\n}: 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({\n name,\n typeName,\n Template = defaultTemplates.default,\n}: 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 { key: pluginKey } = usePlugin<PluginOptions>()\n const file = useGetFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Editor language=\"typescript\">\n <File<FileMeta>\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n >\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 </Editor>\n )\n}\n\nOasType.templates = defaultTemplates\n","/* eslint-disable no-empty-pattern */\n/* eslint-disable @typescript-eslint/ban-types */\nimport transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser'\nimport * as factory from '@kubb/parser/factory'\nimport { Editor, File, usePlugin, usePluginManager } from '@kubb/react'\nimport { Oas, Schema } from '@kubb/swagger/components'\nimport { useGetOperationFile, useOas, useOperation, useOperationName, useOperationSchemas } from '@kubb/swagger/hooks'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { KubbFile } from '@kubb/core'\nimport type { ts } from '@kubb/parser'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/swagger'\nimport type { OperationSchemas } from '@kubb/swagger'\nimport type { Operation } from '@kubb/swagger/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginOptions } from '../types.ts'\n\ntype Props = {}\n\nfunction printCombinedSchema(name: string, operation: Operation, schemas: OperationSchemas): string {\n const properties: Record<string, ts.TypeNode> = {\n 'response': factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.response.name),\n undefined,\n ),\n }\n\n if (schemas.request) {\n properties['request'] = factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.request.name),\n undefined,\n )\n }\n\n if (schemas.pathParams) {\n properties['pathParams'] = factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.pathParams.name),\n undefined,\n )\n }\n\n if (schemas.queryParams) {\n properties['queryParams'] = factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.queryParams.name),\n undefined,\n )\n }\n\n if (schemas.headerParams) {\n properties['headerParams'] = factory.createTypeReferenceNode(\n factory.createIdentifier(schemas.headerParams.name),\n undefined,\n )\n }\n\n if (schemas.errors) {\n properties['errors'] = factory.createUnionDeclaration({\n nodes: schemas.errors.map(error => {\n return factory.createTypeReferenceNode(\n factory.createIdentifier(error.name),\n undefined,\n )\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).map(key => {\n const type = properties[key]\n if (!type) {\n return undefined\n }\n\n return factory.createPropertySignature(\n {\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\nexport function OperationSchema({}: Props): ReactNode {\n return (\n <>\n </>\n )\n}\n\ntype FileProps = {\n mode: KubbFile.Mode | undefined\n}\n\nOperationSchema.File = function({ mode = 'directory' }: FileProps): ReactNode {\n const plugin = usePlugin<PluginOptions>()\n\n const pluginManager = usePluginManager()\n const oas = useOas()\n const schemas = useOperationSchemas()\n const file = useGetOperationFile()\n const factoryName = useOperationName({ type: 'type' })\n const operation = useOperation()\n\n const generator = new SchemaGenerator(plugin.options, { oas, plugin, pluginManager })\n\n const items = [\n schemas.pathParams,\n schemas.queryParams,\n schemas.headerParams,\n schemas.statusCodes,\n schemas.request,\n schemas.response,\n ].flat().filter(Boolean)\n\n const mapItem = ({ name, schema: object, ...options }: OperationSchemaType, i: number) => {\n return (\n <Oas.Schema key={i} generator={generator} name={name} object={object}>\n {mode === 'directory'\n && <Schema.Imports isTypeOnly />}\n <File.Source>\n <Schema.Source options={options} />\n </File.Source>\n </Oas.Schema>\n )\n }\n\n return (\n <Editor language=\"typescript\">\n <File<FileMeta>\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n >\n {items.map(mapItem)}\n\n <File.Source>\n {printCombinedSchema(factoryName, operation, schemas)}\n </File.Source>\n </File>\n </Editor>\n )\n}\n","import { createRoot } from '@kubb/react'\nimport { SchemaGenerator as Generator } from '@kubb/swagger'\nimport { Oas, Schema } from '@kubb/swagger/components'\nimport { pluginKey as swaggerTypeScriptPluginKey } from '@kubb/swagger-ts'\n\nimport { pluginKey } from './plugin.ts'\nimport { typeParser } from './typeParser.ts'\n\nimport type { AppContextProps } from '@kubb/react'\nimport type { Schema as SchemaType, SchemaGeneratorBuildOptions, SchemaMethodResult } from '@kubb/swagger'\nimport type { SchemaObject } from '@kubb/swagger/oas'\nimport type { FileMeta, PluginOptions } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginOptions['resolvedOptions'], PluginOptions> {\n async schema(name: string, object: SchemaObject): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, mode, plugin, output } = this.context\n\n const root = createRoot<AppContextProps<PluginOptions['appMeta']>>({ logger: pluginManager.logger })\n\n root.render(\n <Oas oas={oas}>\n <Oas.Schema generator={this} name={name} object={object}>\n <Schema.File isTypeOnly output={output} mode={mode} />\n </Oas.Schema>\n </Oas>,\n { meta: { pluginManager, plugin } },\n )\n\n return root.files\n }\n // TODO convert to a react component called `Schema.Parser` with props parser as part of the SchemaContext\n getSource(name: string, schemas: SchemaType[], {\n keysToOmit,\n description,\n }: SchemaGeneratorBuildOptions = {}): string[] {\n const texts: string[] = []\n\n const resolvedName = this.context.pluginManager.resolveName({ name, pluginKey, type: 'function' })\n const resvoledTypeName = this.context.pluginManager.resolveName({ name, pluginKey: swaggerTypeScriptPluginKey, type: 'type' })\n\n const typeOutput = typeParser(schemas, {\n name: resolvedName,\n typeName: resvoledTypeName,\n description,\n enumType: this.options.enumType || 'asConst',\n optionalType: this.options.optionalType,\n keysToOmit,\n })\n\n texts.push(typeOutput)\n\n return texts\n }\n /**\n * @deprecated only used for testing\n */\n\n buildSource(name: string, schema: SchemaObject, options: SchemaGeneratorBuildOptions = {}): string[] {\n const schemas = this.buildSchemas(schema, name)\n\n return this.getSource(name, schemas, options)\n }\n}\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser'\nimport * as factory from '@kubb/parser/factory'\nimport { isKeyword, SchemaGenerator, schemaKeywords } from '@kubb/swagger'\n\nimport type { ts } from '@kubb/parser'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/swagger'\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) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(nodes)\n },\n lazy: undefined,\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: () => 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 type: undefined,\n format: undefined,\n catchall: undefined,\n} satisfies SchemaMapper<(ctx?: any) => 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?: typeof typeKeywordMapper\n}\n\nexport function parseTypeMeta(item: Schema, options: ParserOptions): ts.Node | null | undefined {\n const mapper = options.mapper || typeKeywordMapper\n const value = mapper[item.keyword as keyof typeof mapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(item, schemaKeywords.union)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['union']\n return value(item.args.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.and)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['and']\n return value(item.args.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.array)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['array']\n return value(item.args.items.map(orItem => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.enum)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['enum']\n return value(item.args.typeName)\n }\n\n if (isKeyword(item, schemaKeywords.ref)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['ref']\n return value(item.args.name)\n }\n\n if (isKeyword(item, schemaKeywords.blob)) {\n return value()\n }\n\n if (isKeyword(item, schemaKeywords.tuple)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['tuple']\n return value(\n item.args.map(tupleItem => parseTypeMeta(tupleItem, options)).filter(Boolean) as ts.TypeNode[],\n )\n }\n\n if (isKeyword(item, schemaKeywords.const)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['const']\n\n return value(item.args.name, item.args.format)\n }\n\n if (isKeyword(item, schemaKeywords.object)) {\n const value = mapper[item.keyword as keyof typeof mapper] as typeof typeKeywordMapper['object']\n\n const properties = Object.entries(item.args?.properties || {})\n .filter((item) => {\n const schemas = item[1]\n return schemas && typeof schemas.map === 'function'\n })\n .map((item) => {\n const name = item[0]\n const schemas = item[1]\n\n const isNullish = schemas.some(item => item.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some(item => item.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some(item => item.keyword === schemaKeywords.optional)\n const isReadonly = schemas.some(item => item.keyword === schemaKeywords.readOnly)\n const describeSchema = schemas.find(item => item.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n const deprecatedSchema = schemas.find(item => item.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n const defaultSchema = schemas.find(item => item.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n const exampleSchema = schemas.find(item => item.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n const typeSchema = schemas.find(item => item.keyword === schemaKeywords.type) as SchemaKeywordMapper['type'] | undefined\n const formatSchema = schemas.find(item => item.keyword === schemaKeywords.format) as SchemaKeywordMapper['format'] | undefined\n\n let type = schemas\n .map((item) => parseTypeMeta(item, options))\n .filter(Boolean)[0] as ts.TypeNode\n\n if (isNullable) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n const propertySignature = factory.createPropertySignature({\n questionToken: isOptional && ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string),\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\n ? `@default ${defaultSchema.args}`\n : undefined,\n exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n typeSchema\n ? `@type ${typeSchema.args}${!isOptional ? '' : ' | undefined'} ${formatSchema?.args || ''}`\n : undefined,\n ].filter(Boolean),\n })\n })\n\n const additionalProperties = item.args?.additionalProperties?.length\n ? factory.createIndexSignature(item.args.additionalProperties.map(schema => parseTypeMeta(schema, options)).filter(Boolean).at(0) as ts.TypeNode)\n : undefined\n\n return value([...properties, additionalProperties].filter(Boolean))\n }\n\n if (item.keyword in mapper) {\n return value()\n }\n\n return undefined\n}\n\nexport function typeParser(\n schemas: Schema[],\n options: ParserOptions,\n): string {\n const nodes: ts.Node[] = []\n const extraNodes: ts.Node[] = []\n\n if (!schemas.length) {\n return ''\n }\n\n const isNullish = schemas.some(item => item.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some(item => item.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some(item => item.keyword === schemaKeywords.optional)\n\n let type = schemas.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0) as ts.TypeNode\n || typeKeywordMapper.undefined()\n\n if (isNullable) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n const node = factory.createTypeAliasDeclaration({\n modifiers: [factory.modifiers.export],\n name: options.name,\n type: options.keysToOmit?.length ? factory.createOmitDeclaration({ keys: options.keysToOmit, type, nonNullable: true }) : type,\n })\n\n const enumSchemas = SchemaGenerator.deepSearch(schemas, schemaKeywords.enum)\n if (enumSchemas) {\n enumSchemas.forEach(enumSchema => {\n extraNodes.push(...factory.createEnumDeclaration({\n name: transformers.camelCase(enumSchema.args.name),\n typeName: enumSchema.args.typeName,\n enums: enumSchema.args.items.map(item => item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]).filter(\n Boolean,\n ) as unknown as [\n string,\n string,\n ][],\n type: options.enumType,\n }))\n })\n }\n\n nodes.push(\n factory.appendJSDocToNode({\n node,\n comments: [\n options.description ? `@description ${transformers.jsStringEscape(options.description)}` : undefined,\n ].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","import { definePlugin } from './plugin.ts'\n\nexport { definePlugin, pluginKey, pluginName } from './plugin.ts'\nexport type * from './types.ts'\n\n/**\n * @deprecated Use `import { definePlugin } from '@kubb/swagger-ts'`\n */\nconst definePluginDefault = definePlugin\n\nexport default definePluginDefault\n"]}
|