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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { n as PluginTs } from "./types-BpeKGgCn.js";
2
+ import { n as PluginTs } from "./types-aotMcdUB.js";
3
3
  import { Schema } from "@kubb/plugin-oas";
4
4
  import { SchemaObject } from "@kubb/oas";
5
5
  import { FabricReactNode } from "@kubb/react-fabric/types";
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_plugin = require("./plugin-D5rCK1zO.cjs");
2
+ const require_plugin = require("./plugin-DvK-Uhvv.cjs");
3
3
  exports.typeGenerator = require_plugin.typeGenerator$1;
4
4
  exports.typeGeneratorV2 = require_plugin.typeGenerator;
@@ -1,10 +1,10 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { n as PluginTs } from "./types-BpeKGgCn.js";
3
- import { Adapter, AsyncEventEmitter, Config, FileMetaBase, Group, KubbEvents, Output, Plugin, PluginFactoryOptions, PluginManager, ResolveNameParams } from "@kubb/core";
2
+ import { n as PluginTs } from "./types-aotMcdUB.js";
3
+ import * as _kubb_core0 from "@kubb/core";
4
+ import { AsyncEventEmitter, Config, FileMetaBase, Generator, Group, KubbEvents, Output, Plugin, PluginFactoryOptions, PluginManager, ResolveNameParams } from "@kubb/core";
4
5
  import { Fabric } from "@kubb/react-fabric";
5
6
  import { HttpMethod, Oas, Operation, SchemaObject, contentType } from "@kubb/oas";
6
7
  import { FabricReactNode } from "@kubb/react-fabric/types";
7
- import { OperationNode, SchemaNode } from "@kubb/ast/types";
8
8
  import { KubbFile } from "@kubb/fabric-core/types";
9
9
 
10
10
  //#region ../plugin-oas/src/types.d.ts
@@ -93,8 +93,8 @@ type ByContentType = {
93
93
  type: 'contentType';
94
94
  pattern: string | RegExp;
95
95
  };
96
- type Exclude = ByTag | ByOperationId | ByPath | ByMethod | ByContentType;
97
- type Include = ByTag | ByOperationId | ByPath | ByMethod | ByContentType;
96
+ type Exclude = ByTag | ByOperationId | ByPath | ByMethod | ByContentType | BySchemaName;
97
+ type Include = ByTag | ByOperationId | ByPath | ByMethod | ByContentType | BySchemaName;
98
98
  type Override<TOptions> = (ByTag | ByOperationId | ByPath | ByMethod | BySchemaName | ByContentType) & {
99
99
  options: Partial<TOptions>;
100
100
  };
@@ -133,7 +133,7 @@ declare class OperationGenerator<TPluginOptions extends PluginFactoryOptions = P
133
133
  method: HttpMethod;
134
134
  operation: Operation;
135
135
  }>>;
136
- build(...generators: Array<Generator<TPluginOptions, Version>>): Promise<Array<KubbFile.File<TFileMeta>>>;
136
+ build(...generators: Array<Generator$1<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>>;
137
137
  }
138
138
  //#endregion
139
139
  //#region ../plugin-oas/src/SchemaMapper.d.ts
@@ -423,48 +423,33 @@ declare class SchemaGenerator<TOptions extends SchemaGeneratorOptions = SchemaGe
423
423
  static deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): Array<SchemaKeywordMapper[T]>;
424
424
  static find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
425
425
  static combineObjects(tree: Schema[] | undefined): Schema[];
426
- build(...generators: Array<Generator<TPluginOptions, Version>>): Promise<Array<KubbFile.File<TFileMeta>>>;
426
+ build(...generators: Array<Generator$1<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>>;
427
427
  }
428
428
  //#endregion
429
429
  //#region ../plugin-oas/src/generators/createGenerator.d.ts
430
- type CoreGenerator<TOptions extends PluginFactoryOptions, TVersion extends Version> = {
430
+ type CoreGenerator<TOptions extends PluginFactoryOptions> = {
431
431
  name: string;
432
432
  type: 'core';
433
- version: TVersion;
434
- operations: (props: OperationsProps<TOptions, TVersion>) => Promise<KubbFile.File[]>;
435
- operation: (props: OperationProps<TOptions, TVersion>) => Promise<KubbFile.File[]>;
436
- schema: (props: SchemaProps<TOptions, TVersion>) => Promise<KubbFile.File[]>;
433
+ version: '1';
434
+ operations: (props: OperationsProps<TOptions>) => Promise<KubbFile.File[]>;
435
+ operation: (props: OperationProps<TOptions>) => Promise<KubbFile.File[]>;
436
+ schema: (props: SchemaProps<TOptions>) => Promise<KubbFile.File[]>;
437
437
  };
438
438
  //#endregion
439
439
  //#region ../plugin-oas/src/generators/types.d.ts
440
- type Version = '1' | '2';
441
- type OperationsV1Props<TOptions extends PluginFactoryOptions> = {
440
+ type OperationsProps<TOptions extends PluginFactoryOptions> = {
442
441
  config: Config;
443
442
  generator: Omit<OperationGenerator<TOptions>, 'build'>;
444
443
  plugin: Plugin<TOptions>;
445
444
  operations: Array<Operation>;
446
445
  };
447
- type OperationsV2Props<TOptions extends PluginFactoryOptions> = {
448
- config: Config;
449
- adapter: Adapter;
450
- options: Plugin<TOptions>['options'];
451
- nodes: Array<OperationNode>;
452
- };
453
- type OperationV1Props<TOptions extends PluginFactoryOptions> = {
446
+ type OperationProps<TOptions extends PluginFactoryOptions> = {
454
447
  config: Config;
455
448
  generator: Omit<OperationGenerator<TOptions>, 'build'>;
456
449
  plugin: Plugin<TOptions>;
457
450
  operation: Operation;
458
451
  };
459
- type OperationV2Props<TOptions extends PluginFactoryOptions> = {
460
- config: Config;
461
- adapter: Adapter;
462
- options: Plugin<TOptions>['options'];
463
- node: OperationNode;
464
- };
465
- type OperationsProps<TOptions extends PluginFactoryOptions, TVersion extends Version = '1'> = TVersion extends '2' ? OperationsV2Props<TOptions> : OperationsV1Props<TOptions>;
466
- type OperationProps<TOptions extends PluginFactoryOptions, TVersion extends Version = '1'> = TVersion extends '2' ? OperationV2Props<TOptions> : OperationV1Props<TOptions>;
467
- type SchemaV1Props<TOptions extends PluginFactoryOptions> = {
452
+ type SchemaProps<TOptions extends PluginFactoryOptions> = {
468
453
  config: Config;
469
454
  generator: Omit<SchemaGenerator<SchemaGeneratorOptions, TOptions>, 'build'>;
470
455
  plugin: Plugin<TOptions>;
@@ -474,30 +459,23 @@ type SchemaV1Props<TOptions extends PluginFactoryOptions> = {
474
459
  value: SchemaObject;
475
460
  };
476
461
  };
477
- type SchemaV2Props<TOptions extends PluginFactoryOptions> = {
478
- config: Config;
479
- options: Plugin<TOptions>['options'];
480
- node: SchemaNode;
481
- adapter: Adapter;
482
- };
483
- type SchemaProps<TOptions extends PluginFactoryOptions, TVersion extends Version = '1'> = TVersion extends '2' ? SchemaV2Props<TOptions> : SchemaV1Props<TOptions>;
484
- type Generator<TOptions extends PluginFactoryOptions, TVersion extends Version = Version> = CoreGenerator<TOptions, TVersion> | ReactGenerator<TOptions, TVersion>;
462
+ type Generator$1<TOptions extends PluginFactoryOptions> = CoreGenerator<TOptions> | ReactGenerator<TOptions> | Generator<TOptions>;
485
463
  //#endregion
486
464
  //#region ../plugin-oas/src/generators/createReactGenerator.d.ts
487
- type ReactGenerator<TOptions extends PluginFactoryOptions, TVersion extends Version> = {
465
+ type ReactGenerator<TOptions extends PluginFactoryOptions> = {
488
466
  name: string;
489
467
  type: 'react';
490
- version: TVersion;
491
- Operations: (props: OperationsProps<TOptions, TVersion>) => FabricReactNode;
492
- Operation: (props: OperationProps<TOptions, TVersion>) => FabricReactNode;
493
- Schema: (props: SchemaProps<TOptions, TVersion>) => FabricReactNode;
468
+ version: '1';
469
+ Operations: (props: OperationsProps<TOptions>) => FabricReactNode;
470
+ Operation: (props: OperationProps<TOptions>) => FabricReactNode;
471
+ Schema: (props: SchemaProps<TOptions>) => FabricReactNode;
494
472
  };
495
473
  //#endregion
496
474
  //#region src/generators/typeGenerator.d.ts
497
- declare const typeGenerator: ReactGenerator<PluginTs, "1">;
475
+ declare const typeGenerator: ReactGenerator<PluginTs>;
498
476
  //#endregion
499
477
  //#region src/generators/v2/typeGenerator.d.ts
500
- declare const typeGenerator$1: ReactGenerator<PluginTs, "2">;
478
+ declare const typeGenerator$1: _kubb_core0.ReactGeneratorV2<PluginTs>;
501
479
  //#endregion
502
480
  export { typeGenerator, typeGenerator$1 as typeGeneratorV2 };
503
481
  //# sourceMappingURL=generators.d.ts.map
@@ -1,2 +1,2 @@
1
- import { i as typeGenerator, r as typeGenerator$1 } from "./plugin-DmwgRHK8.js";
1
+ import { i as typeGenerator, r as typeGenerator$1 } from "./plugin-Bgm8TNUt.js";
2
2
  export { typeGenerator, typeGenerator$1 as typeGeneratorV2 };
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_plugin = require("./plugin-D5rCK1zO.cjs");
2
+ const require_plugin = require("./plugin-DvK-Uhvv.cjs");
3
3
  exports.pluginTs = require_plugin.pluginTs;
4
4
  exports.pluginTsName = require_plugin.pluginTsName;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { n as PluginTs, t as Options } from "./types-BpeKGgCn.js";
2
+ import { n as PluginTs, t as Options } from "./types-aotMcdUB.js";
3
3
  import * as _kubb_core0 from "@kubb/core";
4
4
 
5
5
  //#region src/plugin.d.ts
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { n as pluginTsName, t as pluginTs } from "./plugin-DmwgRHK8.js";
1
+ import { n as pluginTsName, t as pluginTs } from "./plugin-Bgm8TNUt.js";
2
2
  export { pluginTs, pluginTsName };
@@ -2,7 +2,7 @@ import "./chunk--u3MIqq1.js";
2
2
  import { A as keywordTypeNodes, C as createTypeDeclaration, D as createUnionDeclaration, E as createTypeReferenceNode, F as camelCase, I as pascalCase, M as syntaxKind, N as jsStringEscape, O as createUrlTemplateType, P as trimQuotes, S as createTypeAliasDeclaration, T as createTypeOperatorNode, _ as createPropertySignature, a as createArrayTypeNode, b as createTrue, c as createIdentifier, d as createIntersectionDeclaration, f as createLiteralTypeNode, g as createPrefixUnaryExpression, h as createOptionalTypeNode, i as createArrayDeclaration, j as modifiers, k as getUnknownType, l as createIndexSignature, m as createOmitDeclaration, n as SyntaxKind, o as createEnumDeclaration, p as createNumericLiteral, r as appendJSDocToNode, s as createFalse, t as Type$1, u as createIndexedAccessTypeNode, v as createRestTypeNode, w as createTypeLiteralNode, x as createTupleTypeNode, y as createStringLiteral } from "./components-CRjwjdyE.js";
3
3
  import path from "node:path";
4
4
  import { collect, isPlainStringType, walk } from "@kubb/ast";
5
- import { definePlugin, definePrinter, getBarrelFiles, getMode } from "@kubb/core";
5
+ import { defineGenerator, definePlugin, definePrinter, getBarrelFiles, getMode, resolveOptions } from "@kubb/core";
6
6
  import { OperationGenerator, SchemaGenerator, buildOperation, buildSchema, isKeyword, pluginOasName, schemaKeywords } from "@kubb/plugin-oas";
7
7
  import { useKubb, useMode, usePluginManager } from "@kubb/core/hooks";
8
8
  import { safePrint } from "@kubb/fabric-core/parsers/typescript";
@@ -201,7 +201,6 @@ function printResponseSchema({ baseName, schemas, pluginManager, unknownType })
201
201
  }
202
202
  const typeGenerator$1 = createReactGenerator({
203
203
  name: "typescript",
204
- version: "1",
205
204
  Operation({ operation, generator, plugin }) {
206
205
  const { options, options: { mapper, enumType, enumKeyCasing, syntaxType, optionalType, arrayType, unknownType, paramsCasing } } = plugin;
207
206
  const mode = useMode();
@@ -634,9 +633,9 @@ function Type({ name, typedName, node, keysToOmit, optionalType, arrayType, synt
634
633
  }
635
634
  //#endregion
636
635
  //#region src/generators/v2/typeGenerator.tsx
637
- const typeGenerator = createReactGenerator({
636
+ const typeGenerator = defineGenerator({
638
637
  name: "typescript",
639
- version: "2",
638
+ type: "react",
640
639
  Operation({ node, adapter, options }) {
641
640
  const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType } = options;
642
641
  const { plugin, mode, getFile, resolveName } = useKubb();
@@ -870,32 +869,54 @@ const pluginTs = definePlugin((options) => {
870
869
  await openInStudio({ ast: true });
871
870
  await walk(rootNode, {
872
871
  async schema(schemaNode) {
873
- await generators.map(async (generator) => {
874
- if (generator.type === "react" && generator.version === "2") await buildSchema(schemaNode, {
875
- adapter,
876
- config,
877
- fabric,
878
- Component: generator.Schema,
879
- plugin,
880
- pluginManager,
881
- mode,
882
- version: generator.version
883
- });
872
+ const writeTasks = generators.map(async (generator) => {
873
+ if (generator.type === "react" && generator.version === "2") {
874
+ const options = resolveOptions(schemaNode, {
875
+ options: plugin.options,
876
+ exclude,
877
+ include,
878
+ override
879
+ });
880
+ if (options === null) return;
881
+ await buildSchema(schemaNode, {
882
+ options,
883
+ adapter,
884
+ config,
885
+ fabric,
886
+ Component: generator.Schema,
887
+ plugin,
888
+ pluginManager,
889
+ mode,
890
+ version: generator.version
891
+ });
892
+ }
884
893
  });
894
+ await Promise.all(writeTasks);
885
895
  },
886
896
  async operation(operationNode) {
887
- await generators.map(async (generator) => {
888
- if (generator.type === "react" && generator.version === "2") await buildOperation(operationNode, {
889
- adapter,
890
- config,
891
- fabric,
892
- Component: generator.Operation,
893
- plugin,
894
- pluginManager,
895
- mode,
896
- version: generator.version
897
- });
897
+ const writeTasks = generators.map(async (generator) => {
898
+ if (generator.type === "react" && generator.version === "2") {
899
+ const options = resolveOptions(operationNode, {
900
+ options: plugin.options,
901
+ exclude,
902
+ include,
903
+ override
904
+ });
905
+ if (options === null) return;
906
+ await buildOperation(operationNode, {
907
+ options,
908
+ adapter,
909
+ config,
910
+ fabric,
911
+ Component: generator.Operation,
912
+ plugin,
913
+ pluginManager,
914
+ mode,
915
+ version: generator.version
916
+ });
917
+ }
898
918
  });
919
+ await Promise.all(writeTasks);
899
920
  }
900
921
  }, { depth: "shallow" });
901
922
  return;
@@ -941,4 +962,4 @@ const pluginTs = definePlugin((options) => {
941
962
  //#endregion
942
963
  export { typeGenerator$1 as i, pluginTsName as n, typeGenerator as r, pluginTs as t };
943
964
 
944
- //# sourceMappingURL=plugin-DmwgRHK8.js.map
965
+ //# sourceMappingURL=plugin-Bgm8TNUt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-Bgm8TNUt.js","names":["factory.createUnionDeclaration","factory.createTypeReferenceNode","factory.createIdentifier","factory.createTypeAliasDeclaration","factory.createTypeLiteralNode","factory.createPropertySignature","factory.createIndexedAccessTypeNode","factory.createTypeOperatorNode","typeGenerator","Type","factory.createLiteralTypeNode","factory.createTrue","factory.createFalse","factory.createPrefixUnaryExpression","factory.createNumericLiteral","factory.createStringLiteral","factory.createTypeReferenceNode","factory.createIdentifier","factory.createOptionalTypeNode","factory.createRestTypeNode","factory.createArrayTypeNode","factory.createTupleTypeNode","factory.createUnionDeclaration","factory.createIndexSignature","factory.createIntersectionDeclaration","factory.createTypeLiteralNode","factory.createArrayDeclaration","factory.createPropertySignature","factory.appendJSDocToNode","factory.createTypeReferenceNode","factory.createIdentifier","factory.createArrayTypeNode","factory.createUnionDeclaration","factory.createTypeDeclaration","factory.createOmitDeclaration","factory.createEnumDeclaration","typeGenerator","typeGeneratorV2"],"sources":["../../../internals/utils/src/object.ts","../src/generators/typeGenerator.tsx","../src/printer.ts","../src/components/v2/Type.tsx","../src/generators/v2/typeGenerator.tsx","../src/plugin.ts"],"sourcesContent":["import { trimQuotes } from './string.ts'\n\n/**\n * Serializes a primitive value to a JSON string literal, stripping any surrounding quote characters first.\n *\n * @example\n * stringify('hello') // '\"hello\"'\n * stringify('\"hello\"') // '\"hello\"'\n */\nexport function stringify(value: string | number | boolean | undefined): string {\n if (value === undefined || value === null) return '\"\"'\n return JSON.stringify(trimQuotes(value.toString()))\n}\n\n/**\n * Converts a plain object into a multiline key-value string suitable for embedding in generated code.\n * Nested objects are recursively stringified with indentation.\n *\n * @example\n * stringifyObject({ foo: 'bar', nested: { a: 1 } })\n * // 'foo: bar,\\nnested: {\\n a: 1\\n }'\n */\nexport function stringifyObject(value: Record<string, unknown>): string {\n const items = Object.entries(value)\n .map(([key, val]) => {\n if (val !== null && typeof val === 'object') {\n return `${key}: {\\n ${stringifyObject(val as Record<string, unknown>)}\\n }`\n }\n return `${key}: ${val}`\n })\n .filter(Boolean)\n return items.join(',\\n')\n}\n\n/**\n * Serializes plugin options for safe JSON transport.\n * Strips functions, symbols, and `undefined` values recursively.\n */\nexport function serializePluginOptions<TOptions extends object>(options: TOptions): TOptions {\n if (options === null || options === undefined) return {} as TOptions\n if (typeof options !== 'object') return options\n if (Array.isArray(options)) return options.map(serializePluginOptions) as unknown as TOptions\n\n const serialized: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(options)) {\n if (typeof value === 'function' || typeof value === 'symbol' || value === undefined) continue\n serialized[key] = value !== null && typeof value === 'object' ? serializePluginOptions(value as object) : value\n }\n return serialized as TOptions\n}\n\n/**\n * Converts a dot-notation path or string array into an optional-chaining accessor expression.\n *\n * @example\n * getNestedAccessor('pagination.next.id', 'lastPage')\n * // → \"lastPage?.['pagination']?.['next']?.['id']\"\n */\nexport function getNestedAccessor(param: string | string[], accessor: string): string | undefined {\n const parts = Array.isArray(param) ? param : param.split('.')\n if (parts.length === 0 || (parts.length === 1 && parts[0] === '')) return undefined\n return `${accessor}?.['${`${parts.join(\"']?.['\")}']`}`\n}\n","import { pascalCase } from '@internals/utils'\nimport type { PluginManager } from '@kubb/core'\nimport { useMode, usePluginManager } from '@kubb/core/hooks'\nimport { safePrint } from '@kubb/fabric-core/parsers/typescript'\nimport type { Operation } from '@kubb/oas'\nimport { isKeyword, type OperationSchemas, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { applyParamsCasing, getBanner, getFooter, getImports, isParameterSchema } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport ts from 'typescript'\nimport { Type } from '../components'\nimport * as factory from '../factory.ts'\nimport { createUrlTemplateType, getUnknownType, keywordTypeNodes } from '../factory.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types'\n\nfunction printCombinedSchema({ name, schemas, pluginManager }: { name: string; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n const properties: Record<string, ts.TypeNode> = {}\n\n if (schemas.response) {\n properties['response'] = factory.createUnionDeclaration({\n nodes: schemas.responses.map((res) => {\n const identifier = pluginManager.resolveName({\n name: res.name,\n pluginName: pluginTsName,\n type: 'function',\n })\n\n return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }),\n })!\n }\n\n if (schemas.request) {\n const identifier = pluginManager.resolveName({\n name: schemas.request.name,\n pluginName: pluginTsName,\n type: 'function',\n })\n properties['request'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.pathParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.pathParams.name,\n pluginName: pluginTsName,\n type: 'function',\n })\n properties['pathParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.queryParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.queryParams.name,\n pluginName: pluginTsName,\n type: 'function',\n })\n properties['queryParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.headerParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.headerParams.name,\n pluginName: pluginTsName,\n type: 'function',\n })\n properties['headerParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.errors) {\n properties['errors'] = factory.createUnionDeclaration({\n nodes: schemas.errors.map((error) => {\n const identifier = pluginManager.resolveName({\n name: error.name,\n pluginName: pluginTsName,\n type: 'function',\n })\n\n return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }),\n })!\n }\n\n const namespaceNode = factory.createTypeAliasDeclaration({\n name,\n type: factory.createTypeLiteralNode(\n Object.keys(properties)\n .map((key) => {\n const type = properties[key]\n if (!type) {\n return undefined\n }\n\n return factory.createPropertySignature({\n name: pascalCase(key),\n type,\n })\n })\n .filter(Boolean),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n return safePrint(namespaceNode)\n}\n\nfunction printRequestSchema({\n baseName,\n operation,\n schemas,\n pluginManager,\n}: {\n baseName: string\n operation: Operation\n schemas: OperationSchemas\n pluginManager: PluginManager\n}): string {\n const name = pluginManager.resolveName({\n name: `${baseName} Request`,\n pluginName: pluginTsName,\n type: 'type',\n })\n\n const results: string[] = []\n\n // Generate DataRequest type\n const dataRequestProperties: ts.PropertySignature[] = []\n\n if (schemas.request) {\n const identifier = pluginManager.resolveName({\n name: schemas.request.name,\n pluginName: pluginTsName,\n type: 'type',\n })\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'data',\n questionToken: true,\n type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n }),\n )\n } else {\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'data',\n questionToken: true,\n type: keywordTypeNodes.never,\n }),\n )\n }\n\n // Add pathParams property\n if (schemas.pathParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.pathParams.name,\n pluginName: pluginTsName,\n type: 'type',\n })\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'pathParams',\n type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n }),\n )\n } else {\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'pathParams',\n questionToken: true,\n type: keywordTypeNodes.never,\n }),\n )\n }\n\n // Add queryParams property\n if (schemas.queryParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.queryParams.name,\n pluginName: pluginTsName,\n type: 'type',\n })\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'queryParams',\n questionToken: true,\n type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n }),\n )\n } else {\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'queryParams',\n questionToken: true,\n type: keywordTypeNodes.never,\n }),\n )\n }\n\n // Add headerParams property\n if (schemas.headerParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.headerParams.name,\n pluginName: pluginTsName,\n type: 'type',\n })\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'headerParams',\n questionToken: true,\n type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n }),\n )\n } else {\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'headerParams',\n questionToken: true,\n type: keywordTypeNodes.never,\n }),\n )\n }\n\n // Add url property with template literal type\n dataRequestProperties.push(\n factory.createPropertySignature({\n name: 'url',\n type: createUrlTemplateType(operation.path),\n }),\n )\n\n const dataRequestNode = factory.createTypeAliasDeclaration({\n name,\n type: factory.createTypeLiteralNode(dataRequestProperties),\n modifiers: [factory.modifiers.export],\n })\n\n results.push(safePrint(dataRequestNode))\n\n return results.join('\\n\\n')\n}\n\nfunction printResponseSchema({\n baseName,\n schemas,\n pluginManager,\n unknownType,\n}: {\n baseName: string\n schemas: OperationSchemas\n pluginManager: PluginManager\n unknownType: PluginTs['resolvedOptions']['unknownType']\n}): string {\n const results: string[] = []\n\n const name = pluginManager.resolveName({\n name: `${baseName} ResponseData`,\n pluginName: pluginTsName,\n type: 'type',\n })\n\n // Generate Responses type (mapping status codes to response types)\n if (schemas.responses && schemas.responses.length > 0) {\n const responsesProperties: ts.PropertySignature[] = schemas.responses.map((res) => {\n const identifier = pluginManager.resolveName({\n name: res.name,\n pluginName: pluginTsName,\n type: 'type',\n })\n\n return factory.createPropertySignature({\n name: res.statusCode?.toString() ?? 'default',\n type: factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined),\n })\n })\n\n const responsesNode = factory.createTypeAliasDeclaration({\n name: `${baseName}Responses`,\n type: factory.createTypeLiteralNode(responsesProperties),\n modifiers: [factory.modifiers.export],\n })\n\n results.push(safePrint(responsesNode))\n\n // Generate Response type (union via indexed access)\n const responseNode = factory.createTypeAliasDeclaration({\n name,\n type: factory.createIndexedAccessTypeNode(\n factory.createTypeReferenceNode(factory.createIdentifier(`${baseName}Responses`), undefined),\n factory.createTypeOperatorNode(\n ts.SyntaxKind.KeyOfKeyword,\n factory.createTypeReferenceNode(factory.createIdentifier(`${baseName}Responses`), undefined),\n ),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n results.push(safePrint(responseNode))\n } else {\n const responseNode = factory.createTypeAliasDeclaration({\n name,\n modifiers: [factory.modifiers.export],\n type: getUnknownType(unknownType),\n })\n\n results.push(safePrint(responseNode))\n }\n\n return results.join('\\n\\n')\n}\n\nexport const typeGenerator = createReactGenerator<PluginTs>({\n name: 'typescript',\n Operation({ operation, generator, plugin }) {\n const {\n options,\n options: { mapper, enumType, enumKeyCasing, syntaxType, optionalType, arrayType, unknownType, paramsCasing },\n } = plugin\n\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getName, getGroup } = useOperationManager(generator)\n const schemaManager = useSchemaManager()\n\n const name = getName(operation, { type: 'type', pluginName: pluginTsName })\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: generator.context.fabric,\n oas,\n events: generator.context.events,\n plugin,\n pluginManager,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema, description, keysToOmit, ...options }: OperationSchemaType) => {\n // Apply paramsCasing transformation to pathParams, queryParams, and headerParams (not response)\n const shouldTransform = paramsCasing && isParameterSchema(name)\n const transformedSchema = shouldTransform ? applyParamsCasing(schema, paramsCasing) : schema\n\n const tree = schemaGenerator.parse({ schema: transformedSchema, name, parentName: null })\n const imports = getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const type = {\n name: schemaManager.getName(name, { type: 'type' }),\n typedName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(options.operationName || name, { group }),\n }\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[name, imp.name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n description={description}\n tree={tree}\n schema={transformedSchema}\n mapper={mapper}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n keysToOmit={keysToOmit}\n syntaxType={syntaxType}\n />\n </>\n )\n }\n\n const responseName = schemaManager.getName(schemas.response.name, {\n type: 'type',\n })\n\n const combinedSchemaName = operation.method === 'get' ? `${name}Query` : `${name}Mutation`\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n {operationSchemas.map(mapOperationSchema)}\n\n {generator.context.UNSTABLE_NAMING ? (\n <>\n <File.Source name={`${name}Request`} isExportable isIndexable isTypeOnly>\n {printRequestSchema({ baseName: name, operation, schemas, pluginManager })}\n </File.Source>\n <File.Source name={responseName} isExportable isIndexable isTypeOnly>\n {printResponseSchema({ baseName: name, schemas, pluginManager, unknownType })}\n </File.Source>\n </>\n ) : (\n <File.Source name={combinedSchemaName} isExportable isIndexable isTypeOnly>\n {printCombinedSchema({ name: combinedSchemaName, schemas, pluginManager })}\n </File.Source>\n )}\n </File>\n )\n },\n Schema({ schema, plugin }) {\n const {\n options: { mapper, enumType, enumKeyCasing, syntaxType, optionalType, arrayType, output },\n } = plugin\n const mode = useMode()\n\n const oas = useOas()\n const pluginManager = usePluginManager()\n\n const { getName, getFile } = useSchemaManager()\n const imports = getImports(schema.tree)\n const schemaFromTree = schema.tree.find((item) => item.keyword === schemaKeywords.schema)\n\n let typedName = getName(schema.name, { type: 'type' })\n\n if (['asConst', 'asPascalConst'].includes(enumType) && schemaFromTree && isKeyword(schemaFromTree, schemaKeywords.enum)) {\n typedName = typedName += 'Key' //Suffix for avoiding collisions (https://github.com/kubb-labs/kubb/issues/1873)\n }\n\n const type = {\n name: getName(schema.name, { type: 'function' }),\n typedName,\n file: getFile(schema.name),\n }\n\n return (\n <File\n baseName={type.file.baseName}\n path={type.file.path}\n meta={type.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[schema.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n description={schema.value.description}\n tree={schema.tree}\n schema={schema.value}\n mapper={mapper}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n />\n </File>\n )\n },\n})\n","import { jsStringEscape, stringify } from '@internals/utils'\nimport { isPlainStringType } from '@kubb/ast'\nimport type { ArraySchemaNode, SchemaNode } from '@kubb/ast/types'\nimport type { PrinterFactoryOptions } from '@kubb/core'\nimport { definePrinter } from '@kubb/core'\nimport type ts from 'typescript'\nimport * as factory from './factory.ts'\n\ntype TsOptions = {\n /**\n * @default `'questionToken'`\n */\n optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n /**\n * @default `'array'`\n */\n arrayType: 'array' | 'generic'\n /**\n * @default `'inlineLiteral'`\n */\n enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal' | 'inlineLiteral'\n}\n\ntype TsPrinter = PrinterFactoryOptions<'typescript', TsOptions, ts.TypeNode>\n\nfunction constToTypeNode(value: string | number | boolean, format: 'string' | 'number' | 'boolean'): ts.TypeNode | undefined {\n if (format === 'boolean') {\n return factory.createLiteralTypeNode(value === true ? factory.createTrue() : factory.createFalse())\n }\n if (format === 'number' && typeof value === 'number') {\n if (value < 0) {\n return factory.createLiteralTypeNode(factory.createPrefixUnaryExpression(factory.SyntaxKind.MinusToken, factory.createNumericLiteral(Math.abs(value))))\n }\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value))\n }\n return factory.createLiteralTypeNode(factory.createStringLiteral(String(value)))\n}\n\nfunction dateOrStringNode(node: { representation?: string }): ts.TypeNode {\n return node.representation === 'date' ? factory.createTypeReferenceNode(factory.createIdentifier('Date')) : factory.keywordTypeNodes.string\n}\n\nfunction buildMemberNodes(members: Array<SchemaNode> | undefined, print: (node: SchemaNode) => ts.TypeNode | null | undefined): Array<ts.TypeNode> {\n return (members ?? []).map(print).filter(Boolean) as Array<ts.TypeNode>\n}\n\nfunction buildTupleNode(node: ArraySchemaNode, print: (node: SchemaNode) => ts.TypeNode | null | undefined): ts.TypeNode | undefined {\n let items = (node.items ?? []).map(print).filter(Boolean) as Array<ts.TypeNode>\n\n const restNode = node.rest ? (print(node.rest) ?? undefined) : undefined\n const { min, max } = node\n\n if (max !== undefined) {\n items = items.slice(0, max)\n if (items.length < max && restNode) {\n items = [...items, ...Array(max - items.length).fill(restNode)]\n }\n }\n\n if (min !== undefined) {\n items = items.map((item, i) => (i >= min ? factory.createOptionalTypeNode(item) : item))\n }\n\n if (max === undefined && restNode) {\n items.push(factory.createRestTypeNode(factory.createArrayTypeNode(restNode)))\n }\n\n return factory.createTupleTypeNode(items)\n}\n\nfunction buildPropertyType(schema: SchemaNode, baseType: ts.TypeNode, optionalType: TsOptions['optionalType']): ts.TypeNode {\n const addsUndefined = ['undefined', 'questionTokenAndUndefined'].includes(optionalType)\n\n let type = baseType\n\n if (schema.nullable) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n\n if ((schema.nullish || schema.optional) && addsUndefined) {\n type = factory.createUnionDeclaration({ nodes: [type, factory.keywordTypeNodes.undefined] }) as ts.TypeNode\n }\n\n return type\n}\n\nfunction buildPropertyJSDocComments(schema: SchemaNode): Array<string | undefined> {\n return [\n 'description' in schema && schema.description ? `@description ${jsStringEscape(schema.description as string)}` : undefined,\n 'deprecated' in schema && schema.deprecated ? '@deprecated' : undefined,\n 'min' in schema && schema.min !== undefined ? `@minLength ${schema.min}` : undefined,\n 'max' in schema && schema.max !== undefined ? `@maxLength ${schema.max}` : undefined,\n 'pattern' in schema && schema.pattern ? `@pattern ${schema.pattern}` : undefined,\n 'default' in schema && schema.default !== undefined\n ? `@default ${'primitive' in schema && schema.primitive === 'string' ? stringify(schema.default as string) : schema.default}`\n : undefined,\n 'example' in schema && schema.example !== undefined ? `@example ${schema.example}` : undefined,\n 'primitive' in schema && schema.primitive\n ? [`@type ${schema.primitive || 'unknown'}`, 'optional' in schema && schema.optional ? ' | undefined' : undefined].filter(Boolean).join('')\n : undefined,\n ]\n}\n\nfunction buildIndexSignatures(\n node: { additionalProperties?: SchemaNode | boolean; patternProperties?: Record<string, SchemaNode> },\n propertyCount: number,\n print: (node: SchemaNode) => ts.TypeNode | null | undefined,\n): Array<ts.TypeElement> {\n const elements: Array<ts.TypeElement> = []\n\n if (node.additionalProperties && node.additionalProperties !== true) {\n const additionalType = (print(node.additionalProperties as SchemaNode) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n elements.push(factory.createIndexSignature(propertyCount > 0 ? factory.keywordTypeNodes.unknown : additionalType))\n } else if (node.additionalProperties === true) {\n elements.push(factory.createIndexSignature(factory.keywordTypeNodes.unknown))\n }\n\n if (node.patternProperties) {\n const first = Object.values(node.patternProperties)[0]\n if (first) {\n let patternType = (print(first) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n if (first.nullable) {\n patternType = factory.createUnionDeclaration({ nodes: [patternType, factory.keywordTypeNodes.null] }) as ts.TypeNode\n }\n elements.push(factory.createIndexSignature(patternType))\n }\n }\n\n return elements\n}\n\n/**\n * Converts a `SchemaNode` AST node into a TypeScript `ts.TypeNode`.\n *\n * Built on `definePrinter` — dispatches on `node.type`, with options closed over\n * per printer instance. Produces the same `ts.TypeNode` output as the keyword-based\n * `parse` in `parser.ts`.\n */\nexport const printerTs = definePrinter<TsPrinter>((options) => ({\n name: 'typescript',\n options,\n nodes: {\n any: () => factory.keywordTypeNodes.any,\n unknown: () => factory.keywordTypeNodes.unknown,\n void: () => factory.keywordTypeNodes.void,\n boolean: () => factory.keywordTypeNodes.boolean,\n null: () => factory.keywordTypeNodes.null,\n blob: () => factory.createTypeReferenceNode('Blob', []),\n string: () => factory.keywordTypeNodes.string,\n uuid: () => factory.keywordTypeNodes.string,\n email: () => factory.keywordTypeNodes.string,\n url: () => factory.keywordTypeNodes.string,\n datetime: () => factory.keywordTypeNodes.string,\n number: () => factory.keywordTypeNodes.number,\n integer: () => factory.keywordTypeNodes.number,\n bigint: () => factory.keywordTypeNodes.bigint,\n date: (node) => dateOrStringNode(node),\n time: (node) => dateOrStringNode(node),\n ref(node) {\n if (!node.name) {\n return undefined\n }\n return factory.createTypeReferenceNode(node.name, undefined)\n },\n enum(node) {\n const values = node.namedEnumValues?.map((v) => v.value) ?? node.enumValues ?? []\n\n if (this.options.enumType === 'inlineLiteral' || !node.name) {\n const literalNodes = values\n .filter((v): v is string | number | boolean => v !== null)\n .map((value) => constToTypeNode(value, typeof value === 'number' ? 'number' : typeof value === 'boolean' ? 'boolean' : 'string'))\n .filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes: literalNodes }) ?? undefined\n }\n\n const typeName = ['asConst', 'asPascalConst'].includes(this.options.enumType) ? `${node.name}Key` : node.name\n\n return factory.createTypeReferenceNode(typeName, undefined)\n },\n union(node) {\n const members = node.members ?? []\n\n const hasStringLiteral = members.some((m) => m.type === 'enum' && m.enumType === 'string')\n const hasPlainString = members.some((m) => isPlainStringType(m))\n\n if (hasStringLiteral && hasPlainString) {\n const nodes = members\n .map((m) => {\n if (isPlainStringType(m)) {\n return factory.createIntersectionDeclaration({\n nodes: [factory.keywordTypeNodes.string, factory.createTypeLiteralNode([])],\n withParentheses: true,\n }) as ts.TypeNode\n }\n\n return this.print(m)\n })\n .filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes }) ?? undefined\n }\n\n return factory.createUnionDeclaration({ withParentheses: true, nodes: buildMemberNodes(members, this.print) }) ?? undefined\n },\n intersection(node) {\n return factory.createIntersectionDeclaration({ withParentheses: true, nodes: buildMemberNodes(node.members, this.print) }) ?? undefined\n },\n array(node) {\n const itemNodes = (node.items ?? []).map((item) => this.print(item)).filter(Boolean) as Array<ts.TypeNode>\n\n return factory.createArrayDeclaration({ nodes: itemNodes, arrayType: this.options.arrayType }) ?? undefined\n },\n tuple(node) {\n return buildTupleNode(node, this.print)\n },\n object(node) {\n const addsQuestionToken = ['questionToken', 'questionTokenAndUndefined'].includes(this.options.optionalType)\n const { print } = this\n\n const propertyNodes: Array<ts.TypeElement> = node.properties.map((prop) => {\n const baseType = (print(prop.schema) ?? factory.keywordTypeNodes.unknown) as ts.TypeNode\n const type = buildPropertyType(prop.schema, baseType, this.options.optionalType)\n\n const propertyNode = factory.createPropertySignature({\n questionToken: prop.schema.optional || prop.schema.nullish ? addsQuestionToken : false,\n name: prop.name,\n type,\n readOnly: prop.schema.readOnly,\n })\n\n return factory.appendJSDocToNode({ node: propertyNode, comments: buildPropertyJSDocComments(prop.schema) })\n })\n\n const allElements = [...propertyNodes, ...buildIndexSignatures(node, propertyNodes.length, print)]\n\n if (!allElements.length) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(allElements)\n },\n },\n}))\n","import { camelCase, jsStringEscape, pascalCase, trimQuotes } from '@internals/utils'\nimport { collect } from '@kubb/ast'\nimport type { EnumSchemaNode, SchemaNode } from '@kubb/ast/types'\nimport { safePrint } from '@kubb/fabric-core/parsers/typescript'\nimport { File } from '@kubb/react-fabric'\nimport type { FabricReactNode } from '@kubb/react-fabric/types'\nimport type ts from 'typescript'\nimport * as factory from '../../factory.ts'\nimport { printerTs } from '../../printer.ts'\nimport type { PluginTs } from '../../types.ts'\n\ntype Props = {\n name: string\n typedName: string\n node: SchemaNode\n optionalType: PluginTs['resolvedOptions']['optionalType']\n arrayType: PluginTs['resolvedOptions']['arrayType']\n enumType: PluginTs['resolvedOptions']['enumType']\n enumKeyCasing: PluginTs['resolvedOptions']['enumKeyCasing']\n syntaxType: PluginTs['resolvedOptions']['syntaxType']\n description?: string\n keysToOmit?: string[]\n}\n\nexport function Type({ name, typedName, node, keysToOmit, optionalType, arrayType, syntaxType, enumType, enumKeyCasing, ...rest }: Props): FabricReactNode {\n const typeNodes: ts.Node[] = []\n\n const description = rest.description || node?.description\n const enumSchemaNodes = collect<EnumSchemaNode>(node, {\n schema(n): EnumSchemaNode | undefined {\n if (n.type === 'enum' && n.name) return n as EnumSchemaNode\n },\n })\n\n const printer = printerTs({ optionalType, arrayType, enumType })\n let type = printer.print(node)\n\n if (!type) {\n return\n }\n\n // Add a \"Key\" suffix to avoid collisions where necessary\n if (['asConst', 'asPascalConst'].includes(enumType) && enumSchemaNodes.length > 0) {\n const isDirectEnum = node.type === 'array' && node.items !== undefined\n const isEnumOnly = 'enum' in node && node.enum\n\n if (isDirectEnum || isEnumOnly) {\n const enumSchemaNode = enumSchemaNodes[0]!\n const typeNameWithKey = `${enumSchemaNode.name!}Key`\n\n type = factory.createTypeReferenceNode(typeNameWithKey)\n\n if (isDirectEnum) {\n if (arrayType === 'generic') {\n type = factory.createTypeReferenceNode(factory.createIdentifier('Array'), [type])\n } else {\n type = factory.createArrayTypeNode(type)\n }\n }\n }\n }\n\n if (node) {\n if (node.nullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (node.nullish && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (node.optional && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n }\n\n const useTypeGeneration = syntaxType === 'type' || [factory.syntaxKind.union].includes(type.kind as typeof factory.syntaxKind.union) || !!keysToOmit?.length\n\n typeNodes.push(\n factory.createTypeDeclaration({\n name,\n isExportable: true,\n type: keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n syntax: useTypeGeneration ? 'type' : 'interface',\n comments: [\n node?.title ? `${jsStringEscape(node.title)}` : undefined,\n description ? `@description ${jsStringEscape(description)}` : undefined,\n node?.deprecated ? '@deprecated' : undefined,\n node && 'min' in node && node.min !== undefined ? `@minLength ${node.min}` : undefined,\n node && 'max' in node && node.max !== undefined ? `@maxLength ${node.max}` : undefined,\n node && 'pattern' in node && node.pattern ? `@pattern ${node.pattern}` : undefined,\n node?.default ? `@default ${node.default}` : undefined,\n node?.example ? `@example ${node.example}` : undefined,\n ],\n }),\n )\n\n const enums = [...new Map(enumSchemaNodes.map((n) => [n.name, n])).values()].map((enumSchemaNode) => {\n const enumName = enumType === 'asPascalConst' ? pascalCase(enumSchemaNode.name!) : camelCase(enumSchemaNode.name!)\n const typeName = ['asConst', 'asPascalConst'].includes(enumType) ? `${enumSchemaNode.name!}Key` : enumSchemaNode.name!\n\n const [nameNode, typeNode] = factory.createEnumDeclaration({\n name: enumName,\n typeName,\n enums: (enumSchemaNode.namedEnumValues?.map((v) => [trimQuotes(v.name.toString()), v.value]) ??\n enumSchemaNode.enumValues?.filter((v): v is NonNullable<typeof v> => v !== null && v !== undefined).map((v) => [trimQuotes(v.toString()), v]) ??\n []) as unknown as Array<[string, string]>,\n type: enumType,\n enumKeyCasing,\n })\n\n return {\n nameNode,\n typeNode,\n name: enumName,\n typeName,\n }\n })\n\n // Skip enum exports when using inlineLiteral\n const shouldExportEnums = enumType !== 'inlineLiteral'\n const shouldExportType = enumType === 'inlineLiteral' || enums.every((item) => item.typeName !== name)\n\n return (\n <>\n {shouldExportEnums &&\n enums.map(({ name: enumName, nameNode, typeName, typeNode }) => (\n <>\n {nameNode && (\n <File.Source name={enumName} isExportable isIndexable isTypeOnly={false}>\n {safePrint(nameNode)}\n </File.Source>\n )}\n {\n <File.Source\n name={typeName}\n isIndexable\n isExportable={['enum', 'asConst', 'asPascalConst', 'constEnum', 'literal', undefined].includes(enumType)}\n isTypeOnly={['asConst', 'asPascalConst', 'literal', undefined].includes(enumType)}\n >\n {safePrint(typeNode)}\n </File.Source>\n }\n </>\n ))}\n {shouldExportType && (\n <File.Source name={typedName} isTypeOnly isExportable isIndexable>\n {safePrint(...typeNodes)}\n </File.Source>\n )}\n </>\n )\n}\n","import type { SchemaNode } from '@kubb/ast/types'\nimport { defineGenerator } from '@kubb/core'\nimport { useKubb } from '@kubb/core/hooks'\nimport { File } from '@kubb/react-fabric'\nimport { Type } from '../../components/v2/Type.tsx'\nimport type { PluginTs } from '../../types'\n\nexport const typeGenerator = defineGenerator<PluginTs>({\n name: 'typescript',\n type: 'react',\n Operation({ node, adapter, options }) {\n const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType } = options\n\n const { plugin, mode, getFile, resolveName } = useKubb<PluginTs>()\n\n const file = getFile({\n name: node.operationId,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n })\n\n function renderSchemaType({ node: schemaNode, name, typedName, description }: { node: SchemaNode; name: string; typedName: string; description?: string }) {\n const imports = adapter.getImports(schemaNode, (schemaName) => ({\n name: resolveName({\n name: schemaName,\n pluginName: plugin.name,\n type: 'type',\n }),\n path: getFile({\n name: schemaName,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n }).path,\n }))\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => <File.Import key={[name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />)}\n\n <Type\n name={name}\n typedName={typedName}\n node={schemaNode}\n description={description}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n />\n </>\n )\n }\n\n // Parameter types — each parameter rendered as its own type\n const paramTypes = node.parameters.map((param) => {\n const name = resolveName({\n name: `${node.operationId} ${param.name}`,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: `${node.operationId} ${param.name}`,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: param.schema, name, typedName })\n })\n\n // Response types\n const responseTypes = node.responses\n .filter((res) => res.schema)\n .map((res) => {\n const schemaNode = res.schema!\n const responseName = `${node.operationId} ${res.statusCode}`\n const resolvedName = resolveName({\n name: responseName,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: responseName,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: schemaNode, name: resolvedName, typedName, description: res.description })\n })\n\n // Request body type\n const requestType = node.requestBody\n ? (() => {\n const requestName = `${node.operationId} MutationRequest`\n const resolvedName = resolveName({\n name: requestName,\n pluginName: plugin.name,\n type: 'function',\n })\n const typedName = resolveName({\n name: requestName,\n pluginName: plugin.name,\n type: 'type',\n })\n\n return renderSchemaType({ node: node.requestBody, name: resolvedName, typedName, description: node.requestBody.description })\n })()\n : null\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta}>\n {paramTypes}\n {responseTypes}\n {requestType}\n </File>\n )\n },\n Schema({ node, adapter, options }) {\n const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType } = options\n const { plugin, mode, resolveName, getFile } = useKubb<PluginTs>()\n\n if (!node.name) {\n return\n }\n\n const imports = adapter.getImports(node, (schemaName) => ({\n name: resolveName({\n name: schemaName,\n pluginName: plugin.name,\n type: 'type',\n }),\n path: getFile({\n name: schemaName,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n // options: {\n // group\n // },\n }).path,\n }))\n\n const isEnumSchema = node.type === 'enum'\n\n let typedName = resolveName({\n name: node.name,\n pluginName: plugin.name,\n type: 'type',\n })\n\n if (['asConst', 'asPascalConst'].includes(enumType) && isEnumSchema) {\n typedName = typedName += 'Key'\n }\n\n const type = {\n name: resolveName({\n name: node.name,\n pluginName: plugin.name,\n type: 'function',\n }),\n typedName,\n file: getFile({\n name: node.name,\n pluginName: plugin.name,\n extname: '.ts',\n mode,\n // options: {\n // group\n // },\n }),\n } as const\n\n return (\n <File baseName={type.file.baseName} path={type.file.path} meta={type.file.meta}>\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[node.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n\n <Type\n name={type.name}\n typedName={type.typedName}\n node={node}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { camelCase, pascalCase } from '@internals/utils'\nimport { walk } from '@kubb/ast'\nimport { definePlugin, type Group, getBarrelFiles, getMode, resolveOptions } from '@kubb/core'\nimport { buildOperation, buildSchema, OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { typeGenerator, typeGeneratorV2 } from './generators'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = definePlugin<PluginTs>((options) => {\n const {\n output = { path: 'types', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumKeyCasing = 'none',\n enumSuffix = 'enum',\n dateType = 'string',\n integerType = 'number',\n unknownType = 'any',\n optionalType = 'questionToken',\n arrayType = 'array',\n emptySchemaType = unknownType,\n syntaxType = 'type',\n transformers = {},\n mapper = {},\n paramsCasing,\n generators = [typeGenerator, typeGeneratorV2].filter(Boolean),\n contentType,\n UNSTABLE_NAMING,\n } = options\n\n // @deprecated Will be removed in v5 when collisionDetection defaults to true\n const usedEnumNames = {}\n\n return {\n name: pluginTsName,\n options: {\n output,\n transformers,\n dateType,\n integerType,\n optionalType,\n arrayType,\n enumType,\n enumKeyCasing,\n enumSuffix,\n unknownType,\n emptySchemaType,\n syntaxType,\n group,\n override,\n mapper,\n paramsCasing,\n usedEnumNames,\n },\n pre: [pluginOasName],\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = pascalCase(name, { isFile: type === 'file' })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async install() {\n const { config, fabric, plugin, adapter, rootNode, pluginManager, openInStudio } = this\n\n const root = path.resolve(config.root, config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n\n if (adapter) {\n await openInStudio({ ast: true })\n\n await walk(\n rootNode,\n {\n async schema(schemaNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n const options = resolveOptions(schemaNode, { options: plugin.options, exclude, include, override })\n\n if (options === null) {\n return\n }\n\n await buildSchema(schemaNode, {\n options,\n adapter,\n config,\n fabric,\n Component: generator.Schema,\n plugin,\n pluginManager,\n mode,\n version: generator.version,\n })\n }\n })\n\n await Promise.all(writeTasks)\n },\n async operation(operationNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n const options = resolveOptions(operationNode, { options: plugin.options, exclude, include, override })\n\n if (options === null) {\n return\n }\n\n await buildOperation(operationNode, {\n options,\n adapter,\n config,\n fabric,\n Component: generator.Operation,\n plugin,\n pluginManager,\n mode,\n version: generator.version,\n })\n }\n })\n\n await Promise.all(writeTasks)\n },\n },\n { depth: 'shallow' },\n )\n\n return\n }\n\n // v1 flow\n\n const oas = await this.getOas()\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n events: this.events,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.upsertFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n events: this.events,\n plugin: this.plugin,\n contentType,\n exclude,\n include,\n override,\n mode,\n UNSTABLE_NAMING,\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n await this.upsertFile(...operationFiles)\n\n const barrelFiles = await getBarrelFiles(this.fabric.files, {\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginName: this.plugin.name,\n },\n })\n\n await this.upsertFile(...barrelFiles)\n },\n }\n})\n"],"mappings":"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"}
@@ -216,7 +216,6 @@ function printResponseSchema({ baseName, schemas, pluginManager, unknownType })
216
216
  }
217
217
  const typeGenerator$1 = (0, _kubb_plugin_oas_generators.createReactGenerator)({
218
218
  name: "typescript",
219
- version: "1",
220
219
  Operation({ operation, generator, plugin }) {
221
220
  const { options, options: { mapper, enumType, enumKeyCasing, syntaxType, optionalType, arrayType, unknownType, paramsCasing } } = plugin;
222
221
  const mode = (0, _kubb_core_hooks.useMode)();
@@ -659,9 +658,9 @@ function Type({ name, typedName, node, keysToOmit, optionalType, arrayType, synt
659
658
  }
660
659
  //#endregion
661
660
  //#region src/generators/v2/typeGenerator.tsx
662
- const typeGenerator = (0, _kubb_plugin_oas_generators.createReactGenerator)({
661
+ const typeGenerator = (0, _kubb_core.defineGenerator)({
663
662
  name: "typescript",
664
- version: "2",
663
+ type: "react",
665
664
  Operation({ node, adapter, options }) {
666
665
  const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType } = options;
667
666
  const { plugin, mode, getFile, resolveName } = (0, _kubb_core_hooks.useKubb)();
@@ -895,32 +894,54 @@ const pluginTs = (0, _kubb_core.definePlugin)((options) => {
895
894
  await openInStudio({ ast: true });
896
895
  await (0, _kubb_ast.walk)(rootNode, {
897
896
  async schema(schemaNode) {
898
- await generators.map(async (generator) => {
899
- if (generator.type === "react" && generator.version === "2") await (0, _kubb_plugin_oas.buildSchema)(schemaNode, {
900
- adapter,
901
- config,
902
- fabric,
903
- Component: generator.Schema,
904
- plugin,
905
- pluginManager,
906
- mode,
907
- version: generator.version
908
- });
897
+ const writeTasks = generators.map(async (generator) => {
898
+ if (generator.type === "react" && generator.version === "2") {
899
+ const options = (0, _kubb_core.resolveOptions)(schemaNode, {
900
+ options: plugin.options,
901
+ exclude,
902
+ include,
903
+ override
904
+ });
905
+ if (options === null) return;
906
+ await (0, _kubb_plugin_oas.buildSchema)(schemaNode, {
907
+ options,
908
+ adapter,
909
+ config,
910
+ fabric,
911
+ Component: generator.Schema,
912
+ plugin,
913
+ pluginManager,
914
+ mode,
915
+ version: generator.version
916
+ });
917
+ }
909
918
  });
919
+ await Promise.all(writeTasks);
910
920
  },
911
921
  async operation(operationNode) {
912
- await generators.map(async (generator) => {
913
- if (generator.type === "react" && generator.version === "2") await (0, _kubb_plugin_oas.buildOperation)(operationNode, {
914
- adapter,
915
- config,
916
- fabric,
917
- Component: generator.Operation,
918
- plugin,
919
- pluginManager,
920
- mode,
921
- version: generator.version
922
- });
922
+ const writeTasks = generators.map(async (generator) => {
923
+ if (generator.type === "react" && generator.version === "2") {
924
+ const options = (0, _kubb_core.resolveOptions)(operationNode, {
925
+ options: plugin.options,
926
+ exclude,
927
+ include,
928
+ override
929
+ });
930
+ if (options === null) return;
931
+ await (0, _kubb_plugin_oas.buildOperation)(operationNode, {
932
+ options,
933
+ adapter,
934
+ config,
935
+ fabric,
936
+ Component: generator.Operation,
937
+ plugin,
938
+ pluginManager,
939
+ mode,
940
+ version: generator.version
941
+ });
942
+ }
923
943
  });
944
+ await Promise.all(writeTasks);
924
945
  }
925
946
  }, { depth: "shallow" });
926
947
  return;
@@ -989,4 +1010,4 @@ Object.defineProperty(exports, "typeGenerator$1", {
989
1010
  }
990
1011
  });
991
1012
 
992
- //# sourceMappingURL=plugin-D5rCK1zO.cjs.map
1013
+ //# sourceMappingURL=plugin-DvK-Uhvv.cjs.map