@kubb/swagger-ts 2.11.1 → 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.
@@ -11,15 +11,10 @@ import { OperationGenerator as Generator2 } from "@kubb/swagger";
11
11
  import { Oas as Oas3 } from "@kubb/swagger/components";
12
12
 
13
13
  // src/components/OasType.tsx
14
- import { Editor, File, Type, usePlugin } from "@kubb/react";
15
- import { useGetFile } from "@kubb/react";
14
+ import { Editor, File, Type, usePlugin, usePluginManager } from "@kubb/react";
16
15
  import { useOas } from "@kubb/swagger/hooks";
17
16
  import { Fragment, jsx, jsxs } from "@kubb/react/jsx-runtime";
18
- function Template({
19
- name,
20
- typeName,
21
- api
22
- }) {
17
+ function Template({ name, typeName, api }) {
23
18
  return /* @__PURE__ */ jsxs(Fragment, { children: [
24
19
  `export const ${name} = ${JSON.stringify(api, void 0, 2)} as const`,
25
20
  /* @__PURE__ */ jsx("br", {}),
@@ -27,30 +22,19 @@ function Template({
27
22
  ] });
28
23
  }
29
24
  var defaultTemplates = { default: Template };
30
- function OasType({
31
- name,
32
- typeName,
33
- Template: Template2 = defaultTemplates.default
34
- }) {
25
+ function OasType({ name, typeName, Template: Template2 = defaultTemplates.default }) {
35
26
  const oas = useOas();
36
27
  return /* @__PURE__ */ jsx(Template2, { name, typeName, api: oas.api });
37
28
  }
38
29
  OasType.File = function({ name, typeName, templates = defaultTemplates }) {
39
30
  const { key: pluginKey2 } = usePlugin();
40
- const file = useGetFile({ name, extName: ".ts", pluginKey: pluginKey2 });
31
+ const pluginManager = usePluginManager();
32
+ const file = pluginManager.getFile({ name, extName: ".ts", pluginKey: pluginKey2 });
41
33
  const Template2 = templates.default;
42
- return /* @__PURE__ */ jsx(Editor, { language: "typescript", children: /* @__PURE__ */ jsxs(
43
- File,
44
- {
45
- baseName: file.baseName,
46
- path: file.path,
47
- meta: file.meta,
48
- children: [
49
- /* @__PURE__ */ jsx(File.Import, { name: ["Infer"], path: "@kubb/swagger-ts/oas", isTypeOnly: true }),
50
- /* @__PURE__ */ jsx(File.Source, { children: /* @__PURE__ */ jsx(OasType, { Template: Template2, name, typeName }) })
51
- ]
52
- }
53
- ) });
34
+ return /* @__PURE__ */ jsx(Editor, { language: "typescript", children: /* @__PURE__ */ jsxs(File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
35
+ /* @__PURE__ */ jsx(File.Import, { name: ["Infer"], path: "@kubb/swagger-ts/oas", isTypeOnly: true }),
36
+ /* @__PURE__ */ jsx(File.Source, { children: /* @__PURE__ */ jsx(OasType, { Template: Template2, name, typeName }) })
37
+ ] }) });
54
38
  };
55
39
  OasType.templates = defaultTemplates;
56
40
 
@@ -58,9 +42,9 @@ OasType.templates = defaultTemplates;
58
42
  import transformers2 from "@kubb/core/transformers";
59
43
  import { print as print2 } from "@kubb/parser";
60
44
  import * as factory2 from "@kubb/parser/factory";
61
- import { Editor as Editor2, File as File2, usePlugin as usePlugin2, usePluginManager } from "@kubb/react";
45
+ import { Editor as Editor2, File as File2, usePlugin as usePlugin2, usePluginManager as usePluginManager2 } from "@kubb/react";
62
46
  import { Oas as Oas2, Schema as Schema2 } from "@kubb/swagger/components";
63
- import { useGetOperationFile, useOas as useOas2, useOperation, useOperationName, useOperationSchemas } from "@kubb/swagger/hooks";
47
+ import { useOas as useOas2, useOperation, useOperationManager } from "@kubb/swagger/hooks";
64
48
 
65
49
  // src/SchemaGenerator.tsx
66
50
  import { createRoot } from "@kubb/react";
@@ -196,9 +180,7 @@ function parseTypeMeta(item, options) {
196
180
  }
197
181
  if (isKeyword(item, schemaKeywords.tuple)) {
198
182
  const value2 = mapper[item.keyword];
199
- return value2(
200
- item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean)
201
- );
183
+ return value2(item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean));
202
184
  }
203
185
  if (isKeyword(item, schemaKeywords.const)) {
204
186
  const value2 = mapper[item.keyword];
@@ -224,13 +206,19 @@ function parseTypeMeta(item, options) {
224
206
  const formatSchema = schemas.find((item3) => item3.keyword === schemaKeywords.format);
225
207
  let type = schemas.map((item3) => parseTypeMeta(item3, options)).filter(Boolean)[0];
226
208
  if (isNullable) {
227
- type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] });
209
+ type = factory.createUnionDeclaration({
210
+ nodes: [type, factory.keywordTypeNodes.null]
211
+ });
228
212
  }
229
213
  if (isNullish && ["undefined", "questionTokenAndUndefined"].includes(options.optionalType)) {
230
- type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] });
214
+ type = factory.createUnionDeclaration({
215
+ nodes: [type, factory.keywordTypeNodes.undefined]
216
+ });
231
217
  }
232
218
  if (isOptional && ["undefined", "questionTokenAndUndefined"].includes(options.optionalType)) {
233
- type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] });
219
+ type = factory.createUnionDeclaration({
220
+ nodes: [type, factory.keywordTypeNodes.undefined]
221
+ });
234
222
  }
235
223
  const propertySignature = factory.createPropertySignature({
236
224
  questionToken: isOptional && ["questionToken", "questionTokenAndUndefined"].includes(options.optionalType),
@@ -242,14 +230,16 @@ function parseTypeMeta(item, options) {
242
230
  node: propertySignature,
243
231
  comments: [
244
232
  describeSchema ? `@description ${transformers.jsStringEscape(describeSchema.args)}` : void 0,
245
- deprecatedSchema ? `@deprecated` : void 0,
233
+ deprecatedSchema ? "@deprecated" : void 0,
246
234
  defaultSchema ? `@default ${defaultSchema.args}` : void 0,
247
235
  exampleSchema ? `@example ${exampleSchema.args}` : void 0,
248
236
  typeSchema ? `@type ${typeSchema.args}${!isOptional ? "" : " | undefined"} ${formatSchema?.args || ""}` : void 0
249
237
  ].filter(Boolean)
250
238
  });
251
239
  });
252
- const additionalProperties = item.args?.additionalProperties?.length ? factory.createIndexSignature(item.args.additionalProperties.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0)) : void 0;
240
+ const additionalProperties = item.args?.additionalProperties?.length ? factory.createIndexSignature(
241
+ item.args.additionalProperties.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0)
242
+ ) : void 0;
253
243
  return value2([...properties, additionalProperties].filter(Boolean));
254
244
  }
255
245
  if (item.keyword in mapper) {
@@ -268,38 +258,46 @@ function typeParser(schemas, options) {
268
258
  const isOptional = schemas.some((item) => item.keyword === schemaKeywords.optional);
269
259
  let type = schemas.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0) || typeKeywordMapper.undefined();
270
260
  if (isNullable) {
271
- type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] });
261
+ type = factory.createUnionDeclaration({
262
+ nodes: [type, factory.keywordTypeNodes.null]
263
+ });
272
264
  }
273
265
  if (isNullish && ["undefined", "questionTokenAndUndefined"].includes(options.optionalType)) {
274
- type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] });
266
+ type = factory.createUnionDeclaration({
267
+ nodes: [type, factory.keywordTypeNodes.undefined]
268
+ });
275
269
  }
276
270
  if (isOptional && ["undefined", "questionTokenAndUndefined"].includes(options.optionalType)) {
277
- type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] });
271
+ type = factory.createUnionDeclaration({
272
+ nodes: [type, factory.keywordTypeNodes.undefined]
273
+ });
278
274
  }
279
275
  const node = factory.createTypeAliasDeclaration({
280
276
  modifiers: [factory.modifiers.export],
281
277
  name: options.name,
282
- type: options.keysToOmit?.length ? factory.createOmitDeclaration({ keys: options.keysToOmit, type, nonNullable: true }) : type
278
+ type: options.keysToOmit?.length ? factory.createOmitDeclaration({
279
+ keys: options.keysToOmit,
280
+ type,
281
+ nonNullable: true
282
+ }) : type
283
283
  });
284
284
  const enumSchemas = SchemaGenerator.deepSearch(schemas, schemaKeywords.enum);
285
285
  if (enumSchemas) {
286
286
  enumSchemas.forEach((enumSchema) => {
287
- extraNodes.push(...factory.createEnumDeclaration({
288
- name: transformers.camelCase(enumSchema.args.name),
289
- typeName: enumSchema.args.typeName,
290
- enums: enumSchema.args.items.map((item) => item.value === void 0 ? void 0 : [transformers.trimQuotes(item.name?.toString()), item.value]).filter(
291
- Boolean
292
- ),
293
- type: options.enumType
294
- }));
287
+ extraNodes.push(
288
+ ...factory.createEnumDeclaration({
289
+ name: transformers.camelCase(enumSchema.args.name),
290
+ typeName: enumSchema.args.typeName,
291
+ enums: enumSchema.args.items.map((item) => item.value === void 0 ? void 0 : [transformers.trimQuotes(item.name?.toString()), item.value]).filter(Boolean),
292
+ type: options.enumType
293
+ })
294
+ );
295
295
  });
296
296
  }
297
297
  nodes.push(
298
298
  factory.appendJSDocToNode({
299
299
  node,
300
- comments: [
301
- options.description ? `@description ${transformers.jsStringEscape(options.description)}` : void 0
302
- ].filter(Boolean)
300
+ comments: [options.description ? `@description ${transformers.jsStringEscape(options.description)}` : void 0].filter(Boolean)
303
301
  })
304
302
  );
305
303
  const filterdNodes = nodes.filter(
@@ -315,7 +313,9 @@ import { jsx as jsx2 } from "@kubb/react/jsx-runtime";
315
313
  var SchemaGenerator2 = class extends Generator {
316
314
  async schema(name, object) {
317
315
  const { oas, pluginManager, mode, plugin, output } = this.context;
318
- const root = createRoot({ logger: pluginManager.logger });
316
+ const root = createRoot({
317
+ logger: pluginManager.logger
318
+ });
319
319
  root.render(
320
320
  /* @__PURE__ */ jsx2(Oas, { oas, children: /* @__PURE__ */ jsx2(Oas.Schema, { generator: this, name, object, children: /* @__PURE__ */ jsx2(Schema.File, { isTypeOnly: true, output, mode }) }) }),
321
321
  { meta: { pluginManager, plugin } }
@@ -323,13 +323,18 @@ var SchemaGenerator2 = class extends Generator {
323
323
  return root.files;
324
324
  }
325
325
  // TODO convert to a react component called `Schema.Parser` with props parser as part of the SchemaContext
326
- getSource(name, schemas, {
327
- keysToOmit,
328
- description
329
- } = {}) {
326
+ getSource(name, schemas, { keysToOmit, description } = {}) {
330
327
  const texts = [];
331
- const resolvedName = this.context.pluginManager.resolveName({ name, pluginKey, type: "function" });
332
- const resvoledTypeName = this.context.pluginManager.resolveName({ name, pluginKey, type: "type" });
328
+ const resolvedName = this.context.pluginManager.resolveName({
329
+ name,
330
+ pluginKey,
331
+ type: "function"
332
+ });
333
+ const resvoledTypeName = this.context.pluginManager.resolveName({
334
+ name,
335
+ pluginKey,
336
+ type: "type"
337
+ });
333
338
  const typeOutput = typeParser(schemas, {
334
339
  name: resolvedName,
335
340
  typeName: resvoledTypeName,
@@ -354,42 +359,24 @@ var SchemaGenerator2 = class extends Generator {
354
359
  import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs2 } from "@kubb/react/jsx-runtime";
355
360
  function printCombinedSchema(name, operation, schemas) {
356
361
  const properties = {
357
- "response": factory2.createTypeReferenceNode(
358
- factory2.createIdentifier(schemas.response.name),
359
- void 0
360
- )
362
+ response: factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.response.name), void 0)
361
363
  };
362
364
  if (schemas.request) {
363
- properties["request"] = factory2.createTypeReferenceNode(
364
- factory2.createIdentifier(schemas.request.name),
365
- void 0
366
- );
365
+ properties["request"] = factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.request.name), void 0);
367
366
  }
368
367
  if (schemas.pathParams) {
369
- properties["pathParams"] = factory2.createTypeReferenceNode(
370
- factory2.createIdentifier(schemas.pathParams.name),
371
- void 0
372
- );
368
+ properties["pathParams"] = factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.pathParams.name), void 0);
373
369
  }
374
370
  if (schemas.queryParams) {
375
- properties["queryParams"] = factory2.createTypeReferenceNode(
376
- factory2.createIdentifier(schemas.queryParams.name),
377
- void 0
378
- );
371
+ properties["queryParams"] = factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.queryParams.name), void 0);
379
372
  }
380
373
  if (schemas.headerParams) {
381
- properties["headerParams"] = factory2.createTypeReferenceNode(
382
- factory2.createIdentifier(schemas.headerParams.name),
383
- void 0
384
- );
374
+ properties["headerParams"] = factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.headerParams.name), void 0);
385
375
  }
386
376
  if (schemas.errors) {
387
377
  properties["errors"] = factory2.createUnionDeclaration({
388
378
  nodes: schemas.errors.map((error) => {
389
- return factory2.createTypeReferenceNode(
390
- factory2.createIdentifier(error.name),
391
- void 0
392
- );
379
+ return factory2.createTypeReferenceNode(factory2.createIdentifier(error.name), void 0);
393
380
  })
394
381
  });
395
382
  }
@@ -401,12 +388,10 @@ function printCombinedSchema(name, operation, schemas) {
401
388
  if (!type) {
402
389
  return void 0;
403
390
  }
404
- return factory2.createPropertySignature(
405
- {
406
- name: transformers2.pascalCase(key),
407
- type
408
- }
409
- );
391
+ return factory2.createPropertySignature({
392
+ name: transformers2.pascalCase(key),
393
+ type
394
+ });
410
395
  }).filter(Boolean)
411
396
  ),
412
397
  modifiers: [factory2.modifiers.export]
@@ -418,39 +403,29 @@ function OperationSchema({}) {
418
403
  }
419
404
  OperationSchema.File = function({ mode = "directory" }) {
420
405
  const plugin = usePlugin2();
421
- const pluginManager = usePluginManager();
406
+ const pluginManager = usePluginManager2();
422
407
  const oas = useOas2();
423
- const schemas = useOperationSchemas();
424
- const file = useGetOperationFile();
425
- const factoryName = useOperationName({ type: "type" });
408
+ const { getSchemas, getFile, getName } = useOperationManager();
426
409
  const operation = useOperation();
427
- const generator = new SchemaGenerator2(plugin.options, { oas, plugin, pluginManager });
428
- const items = [
429
- schemas.pathParams,
430
- schemas.queryParams,
431
- schemas.headerParams,
432
- schemas.statusCodes,
433
- schemas.request,
434
- schemas.response
435
- ].flat().filter(Boolean);
410
+ const file = getFile(operation);
411
+ const schemas = getSchemas(operation);
412
+ const factoryName = getName(operation, { type: "type" });
413
+ const generator = new SchemaGenerator2(plugin.options, {
414
+ oas,
415
+ plugin,
416
+ pluginManager
417
+ });
418
+ const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean);
436
419
  const mapItem = ({ name, schema: object, ...options }, i) => {
437
420
  return /* @__PURE__ */ jsxs2(Oas2.Schema, { generator, name, object, children: [
438
421
  mode === "directory" && /* @__PURE__ */ jsx3(Schema2.Imports, { isTypeOnly: true }),
439
422
  /* @__PURE__ */ jsx3(File2.Source, { children: /* @__PURE__ */ jsx3(Schema2.Source, { options }) })
440
423
  ] }, i);
441
424
  };
442
- return /* @__PURE__ */ jsx3(Editor2, { language: "typescript", children: /* @__PURE__ */ jsxs2(
443
- File2,
444
- {
445
- baseName: file.baseName,
446
- path: file.path,
447
- meta: file.meta,
448
- children: [
449
- items.map(mapItem),
450
- /* @__PURE__ */ jsx3(File2.Source, { children: printCombinedSchema(factoryName, operation, schemas) })
451
- ]
452
- }
453
- ) });
425
+ return /* @__PURE__ */ jsx3(Editor2, { language: "typescript", children: /* @__PURE__ */ jsxs2(File2, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
426
+ items.map(mapItem),
427
+ /* @__PURE__ */ jsx3(File2.Source, { children: printCombinedSchema(factoryName, operation, schemas) })
428
+ ] }) });
454
429
  };
455
430
 
456
431
  // src/OperationGenerator.tsx
@@ -458,7 +433,9 @@ import { jsx as jsx4 } from "@kubb/react/jsx-runtime";
458
433
  var OperationGenerator = class extends Generator2 {
459
434
  async all(operations) {
460
435
  const { oas, pluginManager, plugin } = this.context;
461
- const root = createRoot2({ logger: pluginManager.logger });
436
+ const root = createRoot2({
437
+ logger: pluginManager.logger
438
+ });
462
439
  root.render(
463
440
  /* @__PURE__ */ jsx4(Oas3, { oas, operations, getOperationSchemas: (...props) => this.getSchemas(...props), children: plugin.options.oasType && /* @__PURE__ */ jsx4(OasType.File, { name: "oas", typeName: "Oas" }) }),
464
441
  { meta: { pluginManager, plugin } }
@@ -467,7 +444,9 @@ var OperationGenerator = class extends Generator2 {
467
444
  }
468
445
  async operation(operation, options) {
469
446
  const { oas, pluginManager, plugin, mode } = this.context;
470
- const root = createRoot2({ logger: pluginManager.logger });
447
+ const root = createRoot2({
448
+ logger: pluginManager.logger
449
+ });
471
450
  root.render(
472
451
  /* @__PURE__ */ jsx4(Oas3, { oas, operations: [operation], getOperationSchemas: (...props) => this.getSchemas(...props), children: /* @__PURE__ */ jsx4(Oas3.Operation, { operation, children: /* @__PURE__ */ jsx4(OperationSchema.File, { mode }) }) }),
473
452
  { meta: { pluginManager, plugin: { ...plugin, options } } }
@@ -554,33 +533,27 @@ var definePlugin = createPlugin((options) => {
554
533
  const oas = await swaggerPlugin.api.getOas();
555
534
  const root = path.resolve(this.config.root, this.config.output.path);
556
535
  const mode = FileManager.getMode(path.resolve(root, output.path));
557
- const schemaGenerator = new SchemaGenerator2(
558
- this.plugin.options,
559
- {
560
- oas,
561
- pluginManager: this.pluginManager,
562
- plugin: this.plugin,
563
- contentType: swaggerPlugin.api.contentType,
564
- include: void 0,
565
- mode,
566
- output: output.path
567
- }
568
- );
536
+ const schemaGenerator = new SchemaGenerator2(this.plugin.options, {
537
+ oas,
538
+ pluginManager: this.pluginManager,
539
+ plugin: this.plugin,
540
+ contentType: swaggerPlugin.api.contentType,
541
+ include: void 0,
542
+ mode,
543
+ output: output.path
544
+ });
569
545
  const schemaFiles = await schemaGenerator.build();
570
546
  await this.addFile(...schemaFiles);
571
- const operationGenerator = new OperationGenerator(
572
- this.plugin.options,
573
- {
574
- oas,
575
- pluginManager: this.pluginManager,
576
- plugin: this.plugin,
577
- contentType: swaggerPlugin.api.contentType,
578
- exclude,
579
- include,
580
- override,
581
- mode
582
- }
583
- );
547
+ const operationGenerator = new OperationGenerator(this.plugin.options, {
548
+ oas,
549
+ pluginManager: this.pluginManager,
550
+ plugin: this.plugin,
551
+ contentType: swaggerPlugin.api.contentType,
552
+ exclude,
553
+ include,
554
+ override,
555
+ mode
556
+ });
584
557
  const operationFiles = await operationGenerator.build();
585
558
  await this.addFile(...operationFiles);
586
559
  },
@@ -610,4 +583,4 @@ export {
610
583
  definePlugin,
611
584
  src_default
612
585
  };
613
- //# sourceMappingURL=chunk-QIZFD754.js.map
586
+ //# sourceMappingURL=chunk-ZNLTJZHN.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/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(this.plugin.options, {\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 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 })\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']>>({\n logger: pluginManager.logger,\n })\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(operation: Operation, options: PluginOptions['resolvedOptions']): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot<AppContextProps<PluginOptions['appMeta']>>({\n logger: pluginManager.logger,\n })\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, usePluginManager } 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({ 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 { key: pluginKey } = usePlugin<PluginOptions>()\n const pluginManager = usePluginManager()\n const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Editor 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 </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 { useOas, useOperation, useOperationManager } 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(factory.createIdentifier(schemas.response.name), undefined),\n }\n\n if (schemas.request) {\n properties['request'] = factory.createTypeReferenceNode(factory.createIdentifier(schemas.request.name), undefined)\n }\n\n if (schemas.pathParams) {\n properties['pathParams'] = factory.createTypeReferenceNode(factory.createIdentifier(schemas.pathParams.name), undefined)\n }\n\n if (schemas.queryParams) {\n properties['queryParams'] = factory.createTypeReferenceNode(factory.createIdentifier(schemas.queryParams.name), undefined)\n }\n\n if (schemas.headerParams) {\n properties['headerParams'] = factory.createTypeReferenceNode(factory.createIdentifier(schemas.headerParams.name), undefined)\n }\n\n if (schemas.errors) {\n properties['errors'] = factory.createUnionDeclaration({\n nodes: schemas.errors.map((error) => {\n return factory.createTypeReferenceNode(factory.createIdentifier(error.name), 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\nexport function OperationSchema({}: Props): ReactNode {\n return <></>\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 { 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 })\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: object, ...options }: OperationSchemaType, i: number) => {\n return (\n <Oas.Schema key={i} generator={generator} name={name} object={object}>\n {mode === 'directory' && <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> baseName={file.baseName} path={file.path} meta={file.meta}>\n {items.map(mapItem)}\n\n <File.Source>{printCombinedSchema(factoryName, operation, schemas)}</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']>>({\n logger: pluginManager.logger,\n })\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[], { keysToOmit, description }: SchemaGeneratorBuildOptions = {}): string[] {\n const texts: string[] = []\n\n const resolvedName = this.context.pluginManager.resolveName({\n name,\n pluginKey,\n type: 'function',\n })\n const resvoledTypeName = this.context.pluginManager.resolveName({\n name,\n pluginKey: swaggerTypeScriptPluginKey,\n type: 'type',\n })\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(item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean) as ts.TypeNode[])\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.map((item) => parseTypeMeta(item, 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 && ['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 ? `@default ${defaultSchema.args}` : undefined,\n exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n typeSchema ? `@type ${typeSchema.args}${!isOptional ? '' : ' | undefined'} ${formatSchema?.args || ''}` : undefined,\n ].filter(Boolean),\n })\n })\n\n const additionalProperties = item.args?.additionalProperties?.length\n ? factory.createIndexSignature(\n item.args.additionalProperties\n .map((schema) => parseTypeMeta(schema, options))\n .filter(Boolean)\n .at(0) as ts.TypeNode,\n )\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(schemas: Schema[], options: ParserOptions): 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 =\n (schemas\n .map((schema) => parseTypeMeta(schema, options))\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(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 node = factory.createTypeAliasDeclaration({\n modifiers: [factory.modifiers.export],\n name: options.name,\n type: options.keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: options.keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n })\n\n const enumSchemas = SchemaGenerator.deepSearch(schemas, 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: options.enumType,\n }),\n )\n })\n }\n\n nodes.push(\n factory.appendJSDocToNode({\n node,\n comments: [options.description ? `@description ${transformers.jsStringEscape(options.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","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":";AAAA,OAAO,UAAU;AAEjB,SAAS,cAAc,aAAa,qBAAqB;AACzD,SAAS,WAAW,kBAAkB;AACtC,SAAS,sBAAsB;AAC/B,SAAS,cAAc,yBAAyB;;;ACLhD,SAAS,cAAAA,mBAAkB;AAC3B,SAAS,sBAAsBC,kBAAiB;AAChD,SAAS,OAAAC,YAAW;;;ACFpB,SAAS,QAAQ,MAAM,MAAM,WAAW,wBAAwB;AAChE,SAAS,cAAc;AAiBnB,mBAEE,KAFF;AAFJ,SAAS,SAAS,EAAE,MAAM,UAAU,IAAI,GAA6B;AACnE,SACE,iCACG;AAAA,oBAAgB,IAAI,MAAM,KAAK,UAAU,KAAK,QAAW,CAAC,CAAC;AAAA,IAC5D,oBAAC,QAAG;AAAA,IACJ,oBAAC,QAAK,MAAM,UAAU,QAAM,MACzB,0BAAgB,IAAI,KACvB;AAAA,KACF;AAEJ;AAEA,IAAM,mBAAmB,EAAE,SAAS,SAAS;AAWtC,SAAS,QAAQ,EAAE,MAAM,UAAU,UAAAC,YAAW,iBAAiB,QAAQ,GAAqB;AACjG,QAAM,MAAM,OAAO;AAEnB,SAAO,oBAACA,WAAA,EAAS,MAAY,UAAoB,KAAK,IAAI,KAAK;AACjE;AAWA,QAAQ,OAAO,SAAU,EAAE,MAAM,UAAU,YAAY,iBAAiB,GAAyB;AAC/F,QAAM,EAAE,KAAKC,WAAU,IAAI,UAAyB;AACpD,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,OAAO,cAAc,QAAQ,EAAE,MAAM,SAAS,OAAO,WAAAA,WAAU,CAAC;AAEtE,QAAMD,YAAW,UAAU;AAE3B,SACE,oBAAC,UAAO,UAAS,cACf,+BAAC,QAAe,UAAU,KAAK,UAAU,MAAM,KAAK,MAAM,MAAM,KAAK,MACnE;AAAA,wBAAC,KAAK,QAAL,EAAY,MAAM,CAAC,OAAO,GAAG,MAAK,wBAAuB,YAAU,MAAC;AAAA,IACrE,oBAAC,KAAK,QAAL,EACC,8BAAC,WAAQ,UAAUA,WAAU,MAAY,UAAoB,GAC/D;AAAA,KACF,GACF;AAEJ;AAEA,QAAQ,YAAY;;;ACvEpB,OAAOE,mBAAkB;AACzB,SAAS,SAAAC,cAAa;AACtB,YAAYC,cAAa;AACzB,SAAS,UAAAC,SAAQ,QAAAC,OAAM,aAAAC,YAAW,oBAAAC,yBAAwB;AAC1D,SAAS,OAAAC,MAAK,UAAAC,eAAc;AAC5B,SAAS,UAAAC,SAAQ,cAAc,2BAA2B;;;ACP1D,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB,iBAAiB;AAC7C,SAAS,KAAK,cAAc;;;ACF5B,OAAO,kBAAkB;AACzB,SAAS,aAAa;AACtB,YAAY,aAAa;AACzB,SAAS,WAAW,iBAAiB,sBAAsB;AAKpD,IAAM,oBAAoB;AAAA,EAC/B,KAAK,MAAc,yBAAiB;AAAA,EACpC,SAAS,MAAc,yBAAiB;AAAA,EACxC,QAAQ,MAAc,yBAAiB;AAAA,EACvC,SAAS,MAAc,yBAAiB;AAAA,EACxC,QAAQ,CAAC,UAA6B;AACpC,QAAI,CAAC,OAAO;AACV,aAAe,yBAAiB;AAAA,IAClC;AAEA,WAAe,8BAAsB,KAAK;AAAA,EAC5C;AAAA,EACA,MAAM;AAAA,EACN,QAAQ,MAAc,yBAAiB;AAAA,EACvC,SAAS,MAAc,yBAAiB;AAAA,EACxC,WAAW,MAAc,yBAAiB;AAAA,EAC1C,UAAU;AAAA,EACV,MAAM,MAAc,yBAAiB;AAAA,EACrC,SAAS;AAAA,EACT,OAAO,CAAC,UAA0B;AAChC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,WAAe,+BAAuB,EAAE,MAAM,CAAC;AAAA,EACjD;AAAA,EACA,OAAO,CAAC,UAA0B;AAChC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,WAAe,4BAAoB,KAAK;AAAA,EAC1C;AAAA,EACA,MAAM,CAAC,SAAkB;AACvB,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACT;AAEA,WAAe,gCAAwB,MAAM,MAAS;AAAA,EACxD;AAAA,EACA,OAAO,CAAC,UAA0B;AAChC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,WAAe,+BAAuB;AAAA,MACpC,iBAAiB;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,OAAO,CAAC,MAAwB,WAAiC;AAC/D,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACT;AAEA,QAAI,WAAW,UAAU;AACvB,aAAe,8BAA8B,6BAAqB,IAAI,CAAC;AAAA,IACzE;AAEA,WAAe,8BAA8B,4BAAoB,KAAK,SAAS,CAAC,CAAC;AAAA,EACnF;AAAA,EACA,UAAU,MAAc,yBAAiB;AAAA,EACzC,MAAM,MAAc,gCAAgC,yBAAiB,MAAM,CAAC;AAAA,EAC5E,MAAM;AAAA,EACN,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,KAAK,CAAC,UAA0B;AAC9B,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,WAAe,sCAA8B;AAAA,MAC3C,iBAAiB;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,UAAU;AAAA,EACV,KAAK;AAAA,EACL,KAAK;AAAA,EACL,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,KAAK,CAAC,iBAA0B;AAC9B,QAAI,CAAC,cAAc;AACjB,aAAO;AAAA,IACT;AAEA,WAAe,gCAAwB,cAAc,MAAS;AAAA,EAChE;AAAA,EACA,MAAM,MAAc,gCAAwB,QAAQ,CAAC,CAAC;AAAA,EACtD,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AACZ;AAkBO,SAAS,cAAc,MAAc,SAAoD;AAC9F,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,QAAQ,OAAO,KAAK,OAA8B;AAExD,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,MAAM,eAAe,KAAK,GAAG;AACzC,UAAMC,SAAQ,OAAO,KAAK,OAA8B;AACxD,WAAOA,OAAM,KAAK,KAAK,IAAI,CAAC,WAAW,cAAc,QAAQ,OAAO,CAAC,EAAE,OAAO,OAAO,CAAkB;AAAA,EACzG;AAEA,MAAI,UAAU,MAAM,eAAe,GAAG,GAAG;AACvC,UAAMA,SAAQ,OAAO,KAAK,OAA8B;AACxD,WAAOA,OAAM,KAAK,KAAK,IAAI,CAAC,WAAW,cAAc,QAAQ,OAAO,CAAC,EAAE,OAAO,OAAO,CAAkB;AAAA,EACzG;AAEA,MAAI,UAAU,MAAM,eAAe,KAAK,GAAG;AACzC,UAAMA,SAAQ,OAAO,KAAK,OAA8B;AACxD,WAAOA,OAAM,KAAK,KAAK,MAAM,IAAI,CAAC,WAAW,cAAc,QAAQ,OAAO,CAAC,EAAE,OAAO,OAAO,CAAkB;AAAA,EAC/G;AAEA,MAAI,UAAU,MAAM,eAAe,IAAI,GAAG;AACxC,UAAMA,SAAQ,OAAO,KAAK,OAA8B;AACxD,WAAOA,OAAM,KAAK,KAAK,QAAQ;AAAA,EACjC;AAEA,MAAI,UAAU,MAAM,eAAe,GAAG,GAAG;AACvC,UAAMA,SAAQ,OAAO,KAAK,OAA8B;AACxD,WAAOA,OAAM,KAAK,KAAK,IAAI;AAAA,EAC7B;AAEA,MAAI,UAAU,MAAM,eAAe,IAAI,GAAG;AACxC,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,UAAU,MAAM,eAAe,KAAK,GAAG;AACzC,UAAMA,SAAQ,OAAO,KAAK,OAA8B;AACxD,WAAOA,OAAM,KAAK,KAAK,IAAI,CAAC,cAAc,cAAc,WAAW,OAAO,CAAC,EAAE,OAAO,OAAO,CAAkB;AAAA,EAC/G;AAEA,MAAI,UAAU,MAAM,eAAe,KAAK,GAAG;AACzC,UAAMA,SAAQ,OAAO,KAAK,OAA8B;AAExD,WAAOA,OAAM,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM;AAAA,EAC/C;AAEA,MAAI,UAAU,MAAM,eAAe,MAAM,GAAG;AAC1C,UAAMA,SAAQ,OAAO,KAAK,OAA8B;AAExD,UAAM,aAAa,OAAO,QAAQ,KAAK,MAAM,cAAc,CAAC,CAAC,EAC1D,OAAO,CAACC,UAAS;AAChB,YAAM,UAAUA,MAAK,CAAC;AACtB,aAAO,WAAW,OAAO,QAAQ,QAAQ;AAAA,IAC3C,CAAC,EACA,IAAI,CAACA,UAAS;AACb,YAAM,OAAOA,MAAK,CAAC;AACnB,YAAM,UAAUA,MAAK,CAAC;AAEtB,YAAM,YAAY,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,OAAO;AAChF,YAAM,aAAa,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,QAAQ;AAClF,YAAM,aAAa,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,QAAQ;AAClF,YAAM,aAAa,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,QAAQ;AAClF,YAAM,iBAAiB,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,QAAQ;AACtF,YAAM,mBAAmB,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,UAAU;AAC1F,YAAM,gBAAgB,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,OAAO;AACpF,YAAM,gBAAgB,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,OAAO;AACpF,YAAM,aAAa,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,IAAI;AAC9E,YAAM,eAAe,QAAQ,KAAK,CAACA,UAASA,MAAK,YAAY,eAAe,MAAM;AAElF,UAAI,OAAO,QAAQ,IAAI,CAACA,UAAS,cAAcA,OAAM,OAAO,CAAC,EAAE,OAAO,OAAO,EAAE,CAAC;AAEhF,UAAI,YAAY;AACd,eAAe,+BAAuB;AAAA,UACpC,OAAO,CAAC,MAAc,yBAAiB,IAAI;AAAA,QAC7C,CAAC;AAAA,MACH;AAEA,UAAI,aAAa,CAAC,aAAa,2BAA2B,EAAE,SAAS,QAAQ,YAAsB,GAAG;AACpG,eAAe,+BAAuB;AAAA,UACpC,OAAO,CAAC,MAAc,yBAAiB,SAAS;AAAA,QAClD,CAAC;AAAA,MACH;AAEA,UAAI,cAAc,CAAC,aAAa,2BAA2B,EAAE,SAAS,QAAQ,YAAsB,GAAG;AACrG,eAAe,+BAAuB;AAAA,UACpC,OAAO,CAAC,MAAc,yBAAiB,SAAS;AAAA,QAClD,CAAC;AAAA,MACH;AAEA,YAAM,oBAA4B,gCAAwB;AAAA,QACxD,eAAe,cAAc,CAAC,iBAAiB,2BAA2B,EAAE,SAAS,QAAQ,YAAsB;AAAA,QACnH;AAAA,QACA;AAAA,QACA,UAAU;AAAA,MACZ,CAAC;AAED,aAAe,0BAAkB;AAAA,QAC/B,MAAM;AAAA,QACN,UAAU;AAAA,UACR,iBAAiB,gBAAgB,aAAa,eAAe,eAAe,IAAI,CAAC,KAAK;AAAA,UACtF,mBAAmB,gBAAgB;AAAA,UACnC,gBAAgB,YAAY,cAAc,IAAI,KAAK;AAAA,UACnD,gBAAgB,YAAY,cAAc,IAAI,KAAK;AAAA,UACnD,aAAa,SAAS,WAAW,IAAI,GAAG,CAAC,aAAa,KAAK,cAAc,IAAI,cAAc,QAAQ,EAAE,KAAK;AAAA,QAC5G,EAAE,OAAO,OAAO;AAAA,MAClB,CAAC;AAAA,IACH,CAAC;AAEH,UAAM,uBAAuB,KAAK,MAAM,sBAAsB,SAClD;AAAA,MACN,KAAK,KAAK,qBACP,IAAI,CAAC,WAAW,cAAc,QAAQ,OAAO,CAAC,EAC9C,OAAO,OAAO,EACd,GAAG,CAAC;AAAA,IACT,IACA;AAEJ,WAAOD,OAAM,CAAC,GAAG,YAAY,oBAAoB,EAAE,OAAO,OAAO,CAAC;AAAA,EACpE;AAEA,MAAI,KAAK,WAAW,QAAQ;AAC1B,WAAO,MAAM;AAAA,EACf;AAEA,SAAO;AACT;AAEO,SAAS,WAAW,SAAmB,SAAgC;AAC5E,QAAM,QAAmB,CAAC;AAC1B,QAAM,aAAwB,CAAC;AAE/B,MAAI,CAAC,QAAQ,QAAQ;AACnB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,QAAQ,KAAK,CAAC,SAAS,KAAK,YAAY,eAAe,OAAO;AAChF,QAAM,aAAa,QAAQ,KAAK,CAAC,SAAS,KAAK,YAAY,eAAe,QAAQ;AAClF,QAAM,aAAa,QAAQ,KAAK,CAAC,SAAS,KAAK,YAAY,eAAe,QAAQ;AAElF,MAAI,OACD,QACE,IAAI,CAAC,WAAW,cAAc,QAAQ,OAAO,CAAC,EAC9C,OAAO,OAAO,EACd,GAAG,CAAC,KAAqB,kBAAkB,UAAU;AAE1D,MAAI,YAAY;AACd,WAAe,+BAAuB;AAAA,MACpC,OAAO,CAAC,MAAc,yBAAiB,IAAI;AAAA,IAC7C,CAAC;AAAA,EACH;AAEA,MAAI,aAAa,CAAC,aAAa,2BAA2B,EAAE,SAAS,QAAQ,YAAsB,GAAG;AACpG,WAAe,+BAAuB;AAAA,MACpC,OAAO,CAAC,MAAc,yBAAiB,SAAS;AAAA,IAClD,CAAC;AAAA,EACH;AAEA,MAAI,cAAc,CAAC,aAAa,2BAA2B,EAAE,SAAS,QAAQ,YAAsB,GAAG;AACrG,WAAe,+BAAuB;AAAA,MACpC,OAAO,CAAC,MAAc,yBAAiB,SAAS;AAAA,IAClD,CAAC;AAAA,EACH;AAEA,QAAM,OAAe,mCAA2B;AAAA,IAC9C,WAAW,CAAS,kBAAU,MAAM;AAAA,IACpC,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ,YAAY,SACd,8BAAsB;AAAA,MAC5B,MAAM,QAAQ;AAAA,MACd;AAAA,MACA,aAAa;AAAA,IACf,CAAC,IACD;AAAA,EACN,CAAC;AAED,QAAM,cAAc,gBAAgB,WAAW,SAAS,eAAe,IAAI;AAC3E,MAAI,aAAa;AACf,gBAAY,QAAQ,CAAC,eAAe;AAClC,iBAAW;AAAA,QACT,GAAW,8BAAsB;AAAA,UAC/B,MAAM,aAAa,UAAU,WAAW,KAAK,IAAI;AAAA,UACjD,UAAU,WAAW,KAAK;AAAA,UAC1B,OAAO,WAAW,KAAK,MACpB,IAAI,CAAC,SAAU,KAAK,UAAU,SAAY,SAAY,CAAC,aAAa,WAAW,KAAK,MAAM,SAAS,CAAC,GAAG,KAAK,KAAK,CAAE,EACnH,OAAO,OAAO;AAAA,UACjB,MAAM,QAAQ;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM;AAAA,IACI,0BAAkB;AAAA,MACxB;AAAA,MACA,UAAU,CAAC,QAAQ,cAAc,gBAAgB,aAAa,eAAe,QAAQ,WAAW,CAAC,KAAK,MAAS,EAAE,OAAO,OAAO;AAAA,IACjI,CAAC;AAAA,EACH;AAEA,QAAM,eAAe,MAAM;AAAA,IACzB,CAACE,UACC,CAAC,WAAW;AAAA,MACV,CAAC,cAAwB,WAAuC,MAAM,gBAAiBA,OAAkC,MAAM;AAAA,IACjI;AAAA,EACJ;AAEA,SAAO,MAAM,CAAC,GAAG,YAAY,GAAG,YAAY,CAAC;AAC/C;;;ADvTU,gBAAAC,YAAA;AAXH,IAAMC,mBAAN,cAA8B,UAA2D;AAAA,EAC9F,MAAM,OAAO,MAAc,QAAoD;AAC7E,UAAM,EAAE,KAAK,eAAe,MAAM,QAAQ,OAAO,IAAI,KAAK;AAE1D,UAAM,OAAO,WAAsD;AAAA,MACjE,QAAQ,cAAc;AAAA,IACxB,CAAC;AAED,SAAK;AAAA,MACH,gBAAAD,KAAC,OAAI,KACH,0BAAAA,KAAC,IAAI,QAAJ,EAAW,WAAW,MAAM,MAAY,QACvC,0BAAAA,KAAC,OAAO,MAAP,EAAY,YAAU,MAAC,QAAgB,MAAY,GACtD,GACF;AAAA,MACA,EAAE,MAAM,EAAE,eAAe,OAAO,EAAE;AAAA,IACpC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAEA,UAAU,MAAc,SAAuB,EAAE,YAAY,YAAY,IAAiC,CAAC,GAAa;AACtH,UAAM,QAAkB,CAAC;AAEzB,UAAM,eAAe,KAAK,QAAQ,cAAc,YAAY;AAAA,MAC1D;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AACD,UAAM,mBAAmB,KAAK,QAAQ,cAAc,YAAY;AAAA,MAC9D;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAED,UAAM,aAAa,WAAW,SAAS;AAAA,MACrC,MAAM;AAAA,MACN,UAAU;AAAA,MACV;AAAA,MACA,UAAU,KAAK,QAAQ,YAAY;AAAA,MACnC,cAAc,KAAK,QAAQ;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,UAAM,KAAK,UAAU;AAErB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,MAAc,QAAsB,UAAuC,CAAC,GAAa;AACnG,UAAM,UAAU,KAAK,aAAa,QAAQ,IAAI;AAE9C,WAAO,KAAK,UAAU,MAAM,SAAS,OAAO;AAAA,EAC9C;AACF;;;ADKS,qBAAAE,WAAA,OAAAC,MA4BH,QAAAC,aA5BG;AArDT,SAAS,oBAAoB,MAAc,WAAsB,SAAmC;AAClG,QAAM,aAA0C;AAAA,IAC9C,UAAkB,iCAAgC,0BAAiB,QAAQ,SAAS,IAAI,GAAG,MAAS;AAAA,EACtG;AAEA,MAAI,QAAQ,SAAS;AACnB,eAAW,SAAS,IAAY,iCAAgC,0BAAiB,QAAQ,QAAQ,IAAI,GAAG,MAAS;AAAA,EACnH;AAEA,MAAI,QAAQ,YAAY;AACtB,eAAW,YAAY,IAAY,iCAAgC,0BAAiB,QAAQ,WAAW,IAAI,GAAG,MAAS;AAAA,EACzH;AAEA,MAAI,QAAQ,aAAa;AACvB,eAAW,aAAa,IAAY,iCAAgC,0BAAiB,QAAQ,YAAY,IAAI,GAAG,MAAS;AAAA,EAC3H;AAEA,MAAI,QAAQ,cAAc;AACxB,eAAW,cAAc,IAAY,iCAAgC,0BAAiB,QAAQ,aAAa,IAAI,GAAG,MAAS;AAAA,EAC7H;AAEA,MAAI,QAAQ,QAAQ;AAClB,eAAW,QAAQ,IAAY,gCAAuB;AAAA,MACpD,OAAO,QAAQ,OAAO,IAAI,CAAC,UAAU;AACnC,eAAe,iCAAgC,0BAAiB,MAAM,IAAI,GAAG,MAAS;AAAA,MACxF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,QAAM,gBAAwB,oCAA2B;AAAA,IACvD,MAAM,UAAU,WAAW,QAAQ,GAAG,IAAI,UAAU,GAAG,IAAI;AAAA,IAC3D,MAAc;AAAA,MACZ,OAAO,KAAK,UAAU,EACnB,IAAI,CAAC,QAAQ;AACZ,cAAM,OAAO,WAAW,GAAG;AAC3B,YAAI,CAAC,MAAM;AACT,iBAAO;AAAA,QACT;AAEA,eAAe,iCAAwB;AAAA,UACrC,MAAMC,cAAa,WAAW,GAAG;AAAA,UACjC;AAAA,QACF,CAAC;AAAA,MACH,CAAC,EACA,OAAO,OAAO;AAAA,IACnB;AAAA,IACA,WAAW,CAAS,mBAAU,MAAM;AAAA,EACtC,CAAC;AAED,SAAOC,OAAM,aAAa;AAC5B;AAEO,SAAS,gBAAgB,CAAC,GAAqB;AACpD,SAAO,gBAAAH,KAAAD,WAAA,EAAE;AACX;AAMA,gBAAgB,OAAO,SAAU,EAAE,OAAO,YAAY,GAAyB;AAC7E,QAAM,SAASK,WAAyB;AAExC,QAAM,gBAAgBC,kBAAiB;AACvC,QAAM,MAAMC,QAAO;AACnB,QAAM,EAAE,YAAY,SAAS,QAAQ,IAAI,oBAAoB;AAC7D,QAAM,YAAY,aAAa;AAE/B,QAAM,OAAO,QAAQ,SAAS;AAC9B,QAAM,UAAU,WAAW,SAAS;AACpC,QAAM,cAAc,QAAQ,WAAW,EAAE,MAAM,OAAO,CAAC;AACvD,QAAM,YAAY,IAAIC,iBAAgB,OAAO,SAAS;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,QAAQ,CAAC,QAAQ,YAAY,QAAQ,aAAa,QAAQ,cAAc,QAAQ,aAAa,QAAQ,SAAS,QAAQ,QAAQ,EAAE,KAAK,EAAE,OAAO,OAAO;AAE3J,QAAM,UAAU,CAAC,EAAE,MAAM,QAAQ,QAAQ,GAAG,QAAQ,GAAwB,MAAc;AACxF,WACE,gBAAAN,MAACO,KAAI,QAAJ,EAAmB,WAAsB,MAAY,QACnD;AAAA,eAAS,eAAe,gBAAAR,KAACS,QAAO,SAAP,EAAe,YAAU,MAAC;AAAA,MACpD,gBAAAT,KAACU,MAAK,QAAL,EACC,0BAAAV,KAACS,QAAO,QAAP,EAAc,SAAkB,GACnC;AAAA,SAJe,CAKjB;AAAA,EAEJ;AAEA,SACE,gBAAAT,KAACW,SAAA,EAAO,UAAS,cACf,0BAAAV,MAACS,OAAA,EAAe,UAAU,KAAK,UAAU,MAAM,KAAK,MAAM,MAAM,KAAK,MAClE;AAAA,UAAM,IAAI,OAAO;AAAA,IAElB,gBAAAV,KAACU,MAAK,QAAL,EAAa,8BAAoB,aAAa,WAAW,OAAO,GAAE;AAAA,KACrE,GACF;AAEJ;;;AFlGmC,gBAAAE,YAAA;AAV5B,IAAM,qBAAN,cAAiCC,WAA2D;AAAA,EACjG,MAAM,IAAI,YAA0D;AAClE,UAAM,EAAE,KAAK,eAAe,OAAO,IAAI,KAAK;AAE5C,UAAM,OAAOC,YAAsD;AAAA,MACjE,QAAQ,cAAc;AAAA,IACxB,CAAC;AAED,SAAK;AAAA,MACH,gBAAAF,KAACG,MAAA,EAAI,KAAU,YAAwB,qBAAqB,IAAI,UAAU,KAAK,WAAW,GAAG,KAAK,GAC/F,iBAAO,QAAQ,WAAW,gBAAAH,KAAC,QAAQ,MAAR,EAAa,MAAK,OAAM,UAAS,OAAM,GACrE;AAAA,MACA,EAAE,MAAM,EAAE,eAAe,OAAO,EAAE;AAAA,IACpC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,UAAU,WAAsB,SAA4E;AAChH,UAAM,EAAE,KAAK,eAAe,QAAQ,KAAK,IAAI,KAAK;AAElD,UAAM,OAAOE,YAAsD;AAAA,MACjE,QAAQ,cAAc;AAAA,IACxB,CAAC;AACD,SAAK;AAAA,MACH,gBAAAF,KAACG,MAAA,EAAI,KAAU,YAAY,CAAC,SAAS,GAAG,qBAAqB,IAAI,UAAU,KAAK,WAAW,GAAG,KAAK,GACjG,0BAAAH,KAACG,KAAI,WAAJ,EAAc,WACb,0BAAAH,KAAC,gBAAgB,MAAhB,EAAqB,MAAY,GACpC,GACF;AAAA,MACA,EAAE,MAAM,EAAE,eAAe,QAAQ,EAAE,GAAG,QAAQ,QAAQ,EAAE,EAAE;AAAA,IAC5D;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,MAAuC;AAC3C,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAwC;AAC5C,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,MAAuC;AAC3C,WAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAyC;AAC7C,WAAO;AAAA,EACT;AAAA,EACA,MAAM,SAA0C;AAC9C,WAAO;AAAA,EACT;AACF;;;ADpDO,IAAM,aAAa;AACnB,IAAM,YAAkC,CAAC,UAAU;AAEnD,IAAM,eAAe,aAA4B,CAAC,YAAY;AACnE,QAAM;AAAA,IACJ,SAAS,EAAE,MAAM,QAAQ;AAAA,IACzB;AAAA,IACA,UAAU,CAAC;AAAA,IACX;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,WAAW;AAAA,IACX,aAAa;AAAA,IACb,WAAW;AAAA,IACX,cAAc;AAAA,IACd,eAAe;AAAA,IACf,cAAAI,gBAAe,CAAC;AAAA,IAChB,UAAU;AAAA,EACZ,IAAI;AACJ,QAAM,WAAW,OAAO,SAAS,MAAM,SAAS,GAAG,OAAO,IAAI;AAE9D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,MACP,cAAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA,eAAe,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,IACA,KAAK,CAAC,iBAAiB;AAAA,IACvB,YAAY,UAAU,UAAUC,UAAS;AACvC,YAAM,OAAO,KAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO,IAAI;AACnE,YAAM,OAAO,YAAY,YAAY,QAAQ,KAAK,QAAQ,MAAM,OAAO,IAAI,CAAC;AAE5E,UAAI,SAAS,QAAQ;AAKnB,eAAO,KAAK,QAAQ,MAAM,OAAO,IAAI;AAAA,MACvC;AAEA,UAAIA,UAAS,OAAO,OAAO,SAAS,OAAO;AACzC,cAAM,MAAM,UAAUA,SAAQ,GAAG;AAEjC,eAAO,KAAK,QAAQ,MAAM,eAAe,UAAU,EAAE,IAAI,CAAC,GAAG,QAAQ;AAAA,MACvE;AAEA,aAAO,KAAK,QAAQ,MAAM,OAAO,MAAM,QAAQ;AAAA,IACjD;AAAA,IACA,YAAY,MAAM,MAAM;AACtB,YAAM,eAAe,WAAW,MAAM,EAAE,QAAQ,SAAS,OAAO,CAAC;AAEjE,UAAI,MAAM;AACR,eAAOD,eAAc,OAAO,cAAc,IAAI,KAAK;AAAA,MACrD;AAEA,aAAO;AAAA,IACT;AAAA,IACA,MAAM,UAAU,QAAQ,WAAW;AACjC,UAAI,CAAC,UAAU,SAAS,KAAK,KAAK,CAAC,QAAQ;AACzC;AAAA,MACF;AAEA,aAAO,KAAK,YAAY,MAAM,QAAQ,WAAW,EAAE,QAAQ,MAAM,CAAC;AAAA,IACpE;AAAA,IACA,MAAM,aAAa;AACjB,YAAM,CAAC,aAAa,IAAoC,cAAc,mBAAyC,KAAK,SAAS,CAAC,iBAAiB,CAAC;AAEhJ,YAAM,MAAM,MAAM,cAAc,IAAI,OAAO;AAC3C,YAAM,OAAO,KAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO,IAAI;AACnE,YAAM,OAAO,YAAY,QAAQ,KAAK,QAAQ,MAAM,OAAO,IAAI,CAAC;AAEhE,YAAM,kBAAkB,IAAIE,iBAAgB,KAAK,OAAO,SAAS;AAAA,QAC/D;AAAA,QACA,eAAe,KAAK;AAAA,QACpB,QAAQ,KAAK;AAAA,QACb,aAAa,cAAc,IAAI;AAAA,QAC/B,SAAS;AAAA,QACT;AAAA,QACA,QAAQ,OAAO;AAAA,MACjB,CAAC;AAED,YAAM,cAAc,MAAM,gBAAgB,MAAM;AAChD,YAAM,KAAK,QAAQ,GAAG,WAAW;AAEjC,YAAM,qBAAqB,IAAI,mBAAmB,KAAK,OAAO,SAAS;AAAA,QACrE;AAAA,QACA,eAAe,KAAK;AAAA,QACpB,QAAQ,KAAK;AAAA,QACb,aAAa,cAAc,IAAI;AAAA,QAC/B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,iBAAiB,MAAM,mBAAmB,MAAM;AACtD,YAAM,KAAK,QAAQ,GAAG,cAAc;AAAA,IACtC;AAAA,IACA,MAAM,WAAW;AACf,UAAI,KAAK,OAAO,OAAO,UAAU,OAAO;AACtC;AAAA,MACF;AAEA,YAAM,OAAO,KAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO,IAAI;AAEnE,YAAM,KAAK,YAAY,WAAW;AAAA,QAChC;AAAA,QACA;AAAA,QACA,MAAM,EAAE,WAAW,KAAK,OAAO,IAAI;AAAA,MACrC,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;;;AM3HD,IAAM,sBAAsB;AAE5B,IAAO,cAAQ;","names":["createRoot","Generator","Oas","Template","pluginKey","transformers","print","factory","Editor","File","usePlugin","usePluginManager","Oas","Schema","useOas","value","item","node","jsx","SchemaGenerator","Fragment","jsx","jsxs","transformers","print","usePlugin","usePluginManager","useOas","SchemaGenerator","Oas","Schema","File","Editor","jsx","Generator","createRoot","Oas","transformers","options","SchemaGenerator"]}
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkY5R6DTFDcjs = require('./chunk-Y5R6DTFD.cjs');
4
+ var _chunkWZKUY426cjs = require('./chunk-WZKUY426.cjs');
5
5
 
6
6
 
7
7
 
8
- exports.OasType = _chunkY5R6DTFDcjs.OasType; exports.OperationSchema = _chunkY5R6DTFDcjs.OperationSchema;
8
+ exports.OasType = _chunkWZKUY426cjs.OasType; exports.OperationSchema = _chunkWZKUY426cjs.OperationSchema;
9
9
  //# sourceMappingURL=components.cjs.map
@@ -10,7 +10,7 @@ type TemplateProps = {
10
10
  typeName: string;
11
11
  api: OasTypes.OASDocument;
12
12
  };
13
- declare function Template({ name, typeName, api, }: TemplateProps): ReactNode;
13
+ declare function Template({ name, typeName, api }: TemplateProps): ReactNode;
14
14
  declare const defaultTemplates: {
15
15
  readonly default: typeof Template;
16
16
  };
@@ -22,7 +22,7 @@ type Props$1 = {
22
22
  */
23
23
  Template?: React.ComponentType<React.ComponentProps<typeof Template>>;
24
24
  };
25
- declare function OasType({ name, typeName, Template, }: Props$1): ReactNode;
25
+ declare function OasType({ name, typeName, Template }: Props$1): ReactNode;
26
26
  declare namespace OasType {
27
27
  var File: ({ name, typeName, templates }: FileProps$1) => ReactNode;
28
28
  var templates: {
@@ -10,7 +10,7 @@ type TemplateProps = {
10
10
  typeName: string;
11
11
  api: OasTypes.OASDocument;
12
12
  };
13
- declare function Template({ name, typeName, api, }: TemplateProps): ReactNode;
13
+ declare function Template({ name, typeName, api }: TemplateProps): ReactNode;
14
14
  declare const defaultTemplates: {
15
15
  readonly default: typeof Template;
16
16
  };
@@ -22,7 +22,7 @@ type Props$1 = {
22
22
  */
23
23
  Template?: React.ComponentType<React.ComponentProps<typeof Template>>;
24
24
  };
25
- declare function OasType({ name, typeName, Template, }: Props$1): ReactNode;
25
+ declare function OasType({ name, typeName, Template }: Props$1): ReactNode;
26
26
  declare namespace OasType {
27
27
  var File: ({ name, typeName, templates }: FileProps$1) => ReactNode;
28
28
  var templates: {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  OasType,
3
3
  OperationSchema
4
- } from "./chunk-QIZFD754.js";
4
+ } from "./chunk-ZNLTJZHN.js";
5
5
  export {
6
6
  OasType,
7
7
  OperationSchema
@@ -42,7 +42,7 @@ type ResolveRef<TObj, TRef extends string> = {
42
42
  } & Object$1.Path<TObj, RefToPath<TRef>>;
43
43
  type ResolveRefInObj<T, TBase> = T extends {
44
44
  $ref: infer Ref;
45
- } ? Ref extends string ? ResolveRef<TBase, Ref> : T : T;
45
+ } ? (Ref extends string ? ResolveRef<TBase, Ref> : T) : T;
46
46
  type ResolveRefsInObj<T, TBase = T> = {
47
47
  [K in keyof T]: ResolveRefsInObj<ResolveRefInObj<T[K], TBase>, TBase>;
48
48
  };
@@ -101,10 +101,7 @@ interface ParamToRequestParam<TParameters extends Checks$4['Parameters']> extend
101
101
  [TKey in TParamType extends keyof ParamPropMap ? ParamPropMap[TParamType] : never]?: ParamObj<this['arg0']>;
102
102
  } : {};
103
103
  }
104
- type ParamMap<TParameters extends Checks$4['Parameters']> = Pipe<TParameters, [
105
- Tuples.Map<ParamToRequestParam<TParameters>>,
106
- Tuples.ToIntersection
107
- ]>;
104
+ type ParamMap<TParameters extends Checks$4['Parameters']> = Pipe<TParameters, [Tuples.Map<ParamToRequestParam<TParameters>>, Tuples.ToIntersection]>;
108
105
  type MethodMap<TOAS extends OasTypes.OASDocument, TPath extends keyof PathMap<TOAS>> = PathMap<TOAS>[TPath];
109
106
  type StatusMap<TOAS extends OasTypes.OASDocument, TPath extends keyof PathMap<TOAS>, TMethod extends keyof MethodMap<TOAS, TPath>> = MethodMap<TOAS, TPath>[TMethod] extends Checks$4['Responses'] ? MethodMap<TOAS, TPath>[TMethod]['responses'] : never;
110
107
 
@@ -42,7 +42,7 @@ type ResolveRef<TObj, TRef extends string> = {
42
42
  } & Object$1.Path<TObj, RefToPath<TRef>>;
43
43
  type ResolveRefInObj<T, TBase> = T extends {
44
44
  $ref: infer Ref;
45
- } ? Ref extends string ? ResolveRef<TBase, Ref> : T : T;
45
+ } ? (Ref extends string ? ResolveRef<TBase, Ref> : T) : T;
46
46
  type ResolveRefsInObj<T, TBase = T> = {
47
47
  [K in keyof T]: ResolveRefsInObj<ResolveRefInObj<T[K], TBase>, TBase>;
48
48
  };
@@ -101,10 +101,7 @@ interface ParamToRequestParam<TParameters extends Checks$4['Parameters']> extend
101
101
  [TKey in TParamType extends keyof ParamPropMap ? ParamPropMap[TParamType] : never]?: ParamObj<this['arg0']>;
102
102
  } : {};
103
103
  }
104
- type ParamMap<TParameters extends Checks$4['Parameters']> = Pipe<TParameters, [
105
- Tuples.Map<ParamToRequestParam<TParameters>>,
106
- Tuples.ToIntersection
107
- ]>;
104
+ type ParamMap<TParameters extends Checks$4['Parameters']> = Pipe<TParameters, [Tuples.Map<ParamToRequestParam<TParameters>>, Tuples.ToIntersection]>;
108
105
  type MethodMap<TOAS extends OasTypes.OASDocument, TPath extends keyof PathMap<TOAS>> = PathMap<TOAS>[TPath];
109
106
  type StatusMap<TOAS extends OasTypes.OASDocument, TPath extends keyof PathMap<TOAS>, TMethod extends keyof MethodMap<TOAS, TPath>> = MethodMap<TOAS, TPath>[TMethod] extends Checks$4['Responses'] ? MethodMap<TOAS, TPath>[TMethod]['responses'] : never;
110
107
 
package/dist/index.cjs CHANGED
@@ -3,11 +3,11 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkY5R6DTFDcjs = require('./chunk-Y5R6DTFD.cjs');
6
+ var _chunkWZKUY426cjs = require('./chunk-WZKUY426.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
- exports.default = _chunkY5R6DTFDcjs.src_default; exports.definePlugin = _chunkY5R6DTFDcjs.definePlugin; exports.pluginKey = _chunkY5R6DTFDcjs.pluginKey; exports.pluginName = _chunkY5R6DTFDcjs.pluginName;
12
+ exports.default = _chunkWZKUY426cjs.src_default; exports.definePlugin = _chunkWZKUY426cjs.definePlugin; exports.pluginKey = _chunkWZKUY426cjs.pluginKey; exports.pluginName = _chunkWZKUY426cjs.pluginName;
13
13
  //# sourceMappingURL=index.cjs.map