@kubb/plugin-ts 5.0.0-alpha.33 → 5.0.0-alpha.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -23,12 +23,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
23
  //#endregion
24
24
  let _kubb_parser_ts = require("@kubb/parser-ts");
25
25
  let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
26
- let _kubb_ast = require("@kubb/ast");
26
+ let _kubb_core = require("@kubb/core");
27
27
  let remeda = require("remeda");
28
28
  let typescript = require("typescript");
29
- typescript = __toESM(typescript);
29
+ typescript = __toESM(typescript, 1);
30
30
  let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
31
- let _kubb_core = require("@kubb/core");
32
31
  //#region ../../internals/utils/src/casing.ts
33
32
  /**
34
33
  * Shared implementation for camelCase and PascalCase conversion.
@@ -473,7 +472,7 @@ function buildTupleNode(node, print) {
473
472
  */
474
473
  function buildPropertyType(schema, baseType, optionalType) {
475
474
  const addsUndefined = OPTIONAL_ADDS_UNDEFINED.has(optionalType);
476
- const meta = (0, _kubb_ast.syncSchemaRef)(schema);
475
+ const meta = _kubb_core.ast.syncSchemaRef(schema);
477
476
  let type = baseType;
478
477
  if (meta.nullable) type = createUnionDeclaration({ nodes: [type, keywordTypeNodes.null] });
479
478
  if ((meta.nullish || meta.optional) && addsUndefined) type = createUnionDeclaration({ nodes: [type, keywordTypeNodes.undefined] });
@@ -556,8 +555,8 @@ function Enum({ node, enumType, enumTypeSuffix, enumKeyCasing, resolver }) {
556
555
  //#endregion
557
556
  //#region src/components/Type.tsx
558
557
  function Type({ name, node, printer, enumType, enumTypeSuffix, enumKeyCasing, resolver }) {
559
- const enumSchemaNodes = (0, _kubb_ast.collect)(node, { schema(n) {
560
- const enumNode = (0, _kubb_ast.narrowSchema)(n, _kubb_ast.schemaTypes.enum);
558
+ const enumSchemaNodes = _kubb_core.ast.collect(node, { schema(n) {
559
+ const enumNode = _kubb_core.ast.narrowSchema(n, _kubb_core.ast.schemaTypes.enum);
561
560
  if (enumNode?.name) return enumNode;
562
561
  } });
563
562
  const output = printer.print(node);
@@ -599,7 +598,7 @@ function Type({ name, node, printer, enumType, enumTypeSuffix, enumKeyCasing, re
599
598
 
600
599
  */
601
600
  function buildPropertyJSDocComments(schema) {
602
- const meta = (0, _kubb_ast.syncSchemaRef)(schema);
601
+ const meta = _kubb_core.ast.syncSchemaRef(schema);
603
602
  const isArray = meta?.primitive === "array";
604
603
  return [
605
604
  meta && "description" in meta && meta.description ? `@description ${jsStringEscape(meta.description)}` : void 0,
@@ -613,12 +612,12 @@ function buildPropertyJSDocComments(schema) {
613
612
  ].filter(Boolean);
614
613
  }
615
614
  function buildParams(node, { params, resolver }) {
616
- return (0, _kubb_ast.createSchema)({
615
+ return _kubb_core.ast.createSchema({
617
616
  type: "object",
618
- properties: params.map((param) => (0, _kubb_ast.createProperty)({
617
+ properties: params.map((param) => _kubb_core.ast.createProperty({
619
618
  name: param.name,
620
619
  required: param.required,
621
- schema: (0, _kubb_ast.createSchema)({
620
+ schema: _kubb_core.ast.createSchema({
622
621
  type: "ref",
623
622
  name: resolver.resolveParamName(node, param)
624
623
  })
@@ -629,65 +628,65 @@ function buildData(node, { resolver }) {
629
628
  const pathParams = node.parameters.filter((p) => p.in === "path");
630
629
  const queryParams = node.parameters.filter((p) => p.in === "query");
631
630
  const headerParams = node.parameters.filter((p) => p.in === "header");
632
- return (0, _kubb_ast.createSchema)({
631
+ return _kubb_core.ast.createSchema({
633
632
  type: "object",
634
633
  deprecated: node.deprecated,
635
634
  properties: [
636
- (0, _kubb_ast.createProperty)({
635
+ _kubb_core.ast.createProperty({
637
636
  name: "data",
638
- schema: node.requestBody?.schema ? (0, _kubb_ast.createSchema)({
637
+ schema: node.requestBody?.schema ? _kubb_core.ast.createSchema({
639
638
  type: "ref",
640
639
  name: resolver.resolveDataName(node),
641
640
  optional: true
642
- }) : (0, _kubb_ast.createSchema)({
641
+ }) : _kubb_core.ast.createSchema({
643
642
  type: "never",
644
643
  primitive: void 0,
645
644
  optional: true
646
645
  })
647
646
  }),
648
- (0, _kubb_ast.createProperty)({
647
+ _kubb_core.ast.createProperty({
649
648
  name: "pathParams",
650
649
  required: pathParams.length > 0,
651
650
  schema: pathParams.length > 0 ? buildParams(node, {
652
651
  params: pathParams,
653
652
  resolver
654
- }) : (0, _kubb_ast.createSchema)({
653
+ }) : _kubb_core.ast.createSchema({
655
654
  type: "never",
656
655
  primitive: void 0
657
656
  })
658
657
  }),
659
- (0, _kubb_ast.createProperty)({
658
+ _kubb_core.ast.createProperty({
660
659
  name: "queryParams",
661
- schema: queryParams.length > 0 ? (0, _kubb_ast.createSchema)({
660
+ schema: queryParams.length > 0 ? _kubb_core.ast.createSchema({
662
661
  ...buildParams(node, {
663
662
  params: queryParams,
664
663
  resolver
665
664
  }),
666
665
  optional: true
667
- }) : (0, _kubb_ast.createSchema)({
666
+ }) : _kubb_core.ast.createSchema({
668
667
  type: "never",
669
668
  primitive: void 0,
670
669
  optional: true
671
670
  })
672
671
  }),
673
- (0, _kubb_ast.createProperty)({
672
+ _kubb_core.ast.createProperty({
674
673
  name: "headerParams",
675
- schema: headerParams.length > 0 ? (0, _kubb_ast.createSchema)({
674
+ schema: headerParams.length > 0 ? _kubb_core.ast.createSchema({
676
675
  ...buildParams(node, {
677
676
  params: headerParams,
678
677
  resolver
679
678
  }),
680
679
  optional: true
681
- }) : (0, _kubb_ast.createSchema)({
680
+ }) : _kubb_core.ast.createSchema({
682
681
  type: "never",
683
682
  primitive: void 0,
684
683
  optional: true
685
684
  })
686
685
  }),
687
- (0, _kubb_ast.createProperty)({
686
+ _kubb_core.ast.createProperty({
688
687
  name: "url",
689
688
  required: true,
690
- schema: (0, _kubb_ast.createSchema)({
689
+ schema: _kubb_core.ast.createSchema({
691
690
  type: "url",
692
691
  path: node.path
693
692
  })
@@ -697,12 +696,12 @@ function buildData(node, { resolver }) {
697
696
  }
698
697
  function buildResponses(node, { resolver }) {
699
698
  if (node.responses.length === 0) return null;
700
- return (0, _kubb_ast.createSchema)({
699
+ return _kubb_core.ast.createSchema({
701
700
  type: "object",
702
- properties: node.responses.map((res) => (0, _kubb_ast.createProperty)({
701
+ properties: node.responses.map((res) => _kubb_core.ast.createProperty({
703
702
  name: String(res.statusCode),
704
703
  required: true,
705
- schema: (0, _kubb_ast.createSchema)({
704
+ schema: _kubb_core.ast.createSchema({
706
705
  type: "ref",
707
706
  name: resolver.resolveResponseStatusName(node, res.statusCode)
708
707
  })
@@ -712,9 +711,9 @@ function buildResponses(node, { resolver }) {
712
711
  function buildResponseUnion(node, { resolver }) {
713
712
  const responsesWithSchema = node.responses.filter((res) => res.schema);
714
713
  if (responsesWithSchema.length === 0) return null;
715
- return (0, _kubb_ast.createSchema)({
714
+ return _kubb_core.ast.createSchema({
716
715
  type: "union",
717
- members: responsesWithSchema.map((res) => (0, _kubb_ast.createSchema)({
716
+ members: responsesWithSchema.map((res) => _kubb_core.ast.createSchema({
718
717
  type: "ref",
719
718
  name: resolver.resolveResponseStatusName(node, res.statusCode)
720
719
  }))
@@ -775,7 +774,7 @@ const printerTs = (0, _kubb_core.definePrinter)((options) => {
775
774
  time: dateOrStringNode,
776
775
  ref(node) {
777
776
  if (!node.name) return;
778
- const refName = node.ref ? (0, _kubb_ast.extractRefName)(node.ref) ?? node.name : node.name;
777
+ const refName = node.ref ? _kubb_core.ast.extractRefName(node.ref) ?? node.name : node.name;
779
778
  return createTypeReferenceNode(node.ref && ENUM_TYPES_WITH_KEY_SUFFIX.has(this.options.enumType) && this.options.enumTypeSuffix && this.options.enumSchemaNames?.has(refName) ? this.options.resolver.resolveEnumKeyName({ name: refName }, this.options.enumTypeSuffix) : node.ref ? this.options.resolver.default(refName, "type") : refName, void 0);
780
779
  },
781
780
  enum(node) {
@@ -789,13 +788,13 @@ const printerTs = (0, _kubb_core.definePrinter)((options) => {
789
788
  union(node) {
790
789
  const members = node.members ?? [];
791
790
  const hasStringLiteral = members.some((m) => {
792
- return (0, _kubb_ast.narrowSchema)(m, _kubb_ast.schemaTypes.enum)?.primitive === "string";
791
+ return _kubb_core.ast.narrowSchema(m, _kubb_core.ast.schemaTypes.enum)?.primitive === "string";
793
792
  });
794
- const hasPlainString = members.some((m) => (0, _kubb_ast.isStringType)(m));
793
+ const hasPlainString = members.some((m) => _kubb_core.ast.isStringType(m));
795
794
  if (hasStringLiteral && hasPlainString) return createUnionDeclaration({
796
795
  withParentheses: true,
797
796
  nodes: members.map((m) => {
798
- if ((0, _kubb_ast.isStringType)(m)) return createIntersectionDeclaration({
797
+ if (_kubb_core.ast.isStringType(m)) return createIntersectionDeclaration({
799
798
  nodes: [keywordTypeNodes.string, createTypeLiteralNode([])],
800
799
  withParentheses: true
801
800
  });
@@ -828,7 +827,7 @@ const printerTs = (0, _kubb_core.definePrinter)((options) => {
828
827
  const propertyNodes = node.properties.map((prop) => {
829
828
  const baseType = transform(prop.schema) ?? keywordTypeNodes.unknown;
830
829
  const type = buildPropertyType(prop.schema, baseType, options.optionalType);
831
- const propMeta = (0, _kubb_ast.syncSchemaRef)(prop.schema);
830
+ const propMeta = _kubb_core.ast.syncSchemaRef(prop.schema);
832
831
  return appendJSDocToNode({
833
832
  node: createPropertySignature({
834
833
  questionToken: prop.schema.optional || prop.schema.nullish ? addsQuestionToken : false,
@@ -849,7 +848,7 @@ const printerTs = (0, _kubb_core.definePrinter)((options) => {
849
848
  const { name, syntaxType = "type", description, keysToOmit } = this.options;
850
849
  let base = this.transform(node);
851
850
  if (!base) return null;
852
- const meta = (0, _kubb_ast.syncSchemaRef)(node);
851
+ const meta = _kubb_core.ast.syncSchemaRef(node);
853
852
  if (!name) {
854
853
  if (meta.nullable) base = createUnionDeclaration({ nodes: [base, keywordTypeNodes.null] });
855
854
  if ((meta.nullish || meta.optional) && addsUndefined) base = createUnionDeclaration({ nodes: [base, keywordTypeNodes.undefined] });
@@ -880,12 +879,13 @@ const printerTs = (0, _kubb_core.definePrinter)((options) => {
880
879
  //#region src/generators/typeGenerator.tsx
881
880
  const typeGenerator = (0, _kubb_core.defineGenerator)({
882
881
  name: "typescript",
883
- schema(node, options) {
884
- const { enumType, enumTypeSuffix, enumKeyCasing, syntaxType, optionalType, arrayType, output, group, printer } = options;
885
- const { adapter, config, resolver, root } = this;
882
+ renderer: _kubb_renderer_jsx.jsxRenderer,
883
+ schema(node, ctx) {
884
+ const { enumType, enumTypeSuffix, enumKeyCasing, syntaxType, optionalType, arrayType, output, group, printer } = ctx.options;
885
+ const { adapter, config, resolver, root } = ctx;
886
886
  if (!node.name) return;
887
- const mode = this.getMode(output);
888
- const enumSchemaNames = new Set((adapter.inputNode?.schemas ?? []).filter((s) => (0, _kubb_ast.narrowSchema)(s, _kubb_ast.schemaTypes.enum) && s.name).map((s) => s.name));
887
+ const mode = ctx.getMode(output);
888
+ const enumSchemaNames = new Set((adapter.inputNode?.schemas ?? []).filter((s) => _kubb_core.ast.narrowSchema(s, _kubb_core.ast.schemaTypes.enum) && s.name).map((s) => s.name));
889
889
  function resolveImportName(schemaName) {
890
890
  if (ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && enumTypeSuffix && enumSchemaNames.has(schemaName)) return resolver.resolveEnumKeyName({ name: schemaName }, enumTypeSuffix);
891
891
  return resolver.resolveTypeName(schemaName);
@@ -901,7 +901,7 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
901
901
  group
902
902
  }).path
903
903
  }));
904
- const isEnumSchema = !!(0, _kubb_ast.narrowSchema)(node, _kubb_ast.schemaTypes.enum);
904
+ const isEnumSchema = !!_kubb_core.ast.narrowSchema(node, _kubb_core.ast.schemaTypes.enum);
905
905
  const meta = {
906
906
  name: ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && isEnumSchema ? resolver.resolveEnumKeyName(node, enumTypeSuffix) : resolver.resolveTypeName(node.name),
907
907
  file: resolver.resolveFile({
@@ -957,11 +957,11 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
957
957
  })]
958
958
  });
959
959
  },
960
- operation(node, options) {
961
- const { enumType, enumTypeSuffix, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output, printer } = options;
962
- const { adapter, config, resolver, root } = this;
963
- const mode = this.getMode(output);
964
- const params = (0, _kubb_ast.caseParams)(node.parameters, paramsCasing);
960
+ operation(node, ctx) {
961
+ const { enumType, enumTypeSuffix, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output, printer } = ctx.options;
962
+ const { adapter, config, resolver, root } = ctx;
963
+ const mode = ctx.getMode(output);
964
+ const params = _kubb_core.ast.caseParams(node.parameters, paramsCasing);
965
965
  const meta = { file: resolver.resolveFile({
966
966
  name: node.operationId,
967
967
  extname: ".ts",
@@ -972,7 +972,7 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
972
972
  output,
973
973
  group
974
974
  }) };
975
- const enumSchemaNames = new Set((adapter.inputNode?.schemas ?? []).filter((s) => (0, _kubb_ast.narrowSchema)(s, _kubb_ast.schemaTypes.enum) && s.name).map((s) => s.name));
975
+ const enumSchemaNames = new Set((adapter.inputNode?.schemas ?? []).filter((s) => _kubb_core.ast.narrowSchema(s, _kubb_core.ast.schemaTypes.enum) && s.name).map((s) => s.name));
976
976
  function resolveImportName(schemaName) {
977
977
  if (ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && enumTypeSuffix && enumSchemaNames.has(schemaName)) return resolver.resolveEnumKeyName({ name: schemaName }, enumTypeSuffix);
978
978
  return resolver.resolveTypeName(schemaName);
@@ -1081,9 +1081,6 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
1081
1081
  }
1082
1082
  });
1083
1083
  //#endregion
1084
- //#region package.json
1085
- var version = "5.0.0-alpha.33";
1086
- //#endregion
1087
1084
  //#region src/resolvers/resolverTs.ts
1088
1085
  /**
1089
1086
  * Resolver for `@kubb/plugin-ts` that provides the default naming and path-resolution
@@ -1206,11 +1203,11 @@ const resolverTsLegacy = (0, _kubb_core.defineResolver)(() => {
1206
1203
  //#endregion
1207
1204
  //#region src/generators/typeGeneratorLegacy.tsx
1208
1205
  function buildGroupedParamsSchema({ params, parentName }) {
1209
- return (0, _kubb_ast.createSchema)({
1206
+ return _kubb_core.ast.createSchema({
1210
1207
  type: "object",
1211
1208
  properties: params.map((param) => {
1212
1209
  let schema = param.schema;
1213
- if ((0, _kubb_ast.narrowSchema)(schema, "enum") && !schema.name && parentName) schema = {
1210
+ if (_kubb_core.ast.narrowSchema(schema, "enum") && !schema.name && parentName) schema = {
1214
1211
  ...schema,
1215
1212
  name: pascalCase([
1216
1213
  parentName,
@@ -1218,7 +1215,7 @@ function buildGroupedParamsSchema({ params, parentName }) {
1218
1215
  "enum"
1219
1216
  ].join(" "))
1220
1217
  };
1221
- return (0, _kubb_ast.createProperty)({
1218
+ return _kubb_core.ast.createProperty({
1222
1219
  name: param.name,
1223
1220
  required: param.required,
1224
1221
  schema
@@ -1233,78 +1230,78 @@ function buildLegacyResponsesSchemaNode(node, { resolver }) {
1233
1230
  return !Number.isNaN(code) && code >= 200 && code < 300;
1234
1231
  });
1235
1232
  const errorResponses = node.responses.filter((res) => res.statusCode === "default" || Number(res.statusCode) >= 400);
1236
- const responseSchema = successResponses.length > 0 ? successResponses.length === 1 ? (0, _kubb_ast.createSchema)({
1233
+ const responseSchema = successResponses.length > 0 ? successResponses.length === 1 ? _kubb_core.ast.createSchema({
1237
1234
  type: "ref",
1238
1235
  name: resolver.resolveResponseStatusName(node, successResponses[0].statusCode)
1239
- }) : (0, _kubb_ast.createSchema)({
1236
+ }) : _kubb_core.ast.createSchema({
1240
1237
  type: "union",
1241
- members: successResponses.map((res) => (0, _kubb_ast.createSchema)({
1238
+ members: successResponses.map((res) => _kubb_core.ast.createSchema({
1242
1239
  type: "ref",
1243
1240
  name: resolver.resolveResponseStatusName(node, res.statusCode)
1244
1241
  }))
1245
- }) : (0, _kubb_ast.createSchema)({
1242
+ }) : _kubb_core.ast.createSchema({
1246
1243
  type: "any",
1247
1244
  primitive: void 0
1248
1245
  });
1249
- const errorsSchema = errorResponses.length > 0 ? errorResponses.length === 1 ? (0, _kubb_ast.createSchema)({
1246
+ const errorsSchema = errorResponses.length > 0 ? errorResponses.length === 1 ? _kubb_core.ast.createSchema({
1250
1247
  type: "ref",
1251
1248
  name: resolver.resolveResponseStatusName(node, errorResponses[0].statusCode)
1252
- }) : (0, _kubb_ast.createSchema)({
1249
+ }) : _kubb_core.ast.createSchema({
1253
1250
  type: "union",
1254
- members: errorResponses.map((res) => (0, _kubb_ast.createSchema)({
1251
+ members: errorResponses.map((res) => _kubb_core.ast.createSchema({
1255
1252
  type: "ref",
1256
1253
  name: resolver.resolveResponseStatusName(node, res.statusCode)
1257
1254
  }))
1258
- }) : (0, _kubb_ast.createSchema)({
1255
+ }) : _kubb_core.ast.createSchema({
1259
1256
  type: "any",
1260
1257
  primitive: void 0
1261
1258
  });
1262
- const properties = [(0, _kubb_ast.createProperty)({
1259
+ const properties = [_kubb_core.ast.createProperty({
1263
1260
  name: "Response",
1264
1261
  required: true,
1265
1262
  schema: responseSchema
1266
1263
  })];
1267
- if (!isGet && node.requestBody?.schema) properties.push((0, _kubb_ast.createProperty)({
1264
+ if (!isGet && node.requestBody?.schema) properties.push(_kubb_core.ast.createProperty({
1268
1265
  name: "Request",
1269
1266
  required: true,
1270
- schema: (0, _kubb_ast.createSchema)({
1267
+ schema: _kubb_core.ast.createSchema({
1271
1268
  type: "ref",
1272
1269
  name: resolver.resolveDataName(node)
1273
1270
  })
1274
1271
  }));
1275
1272
  const queryParam = node.parameters.find((p) => p.in === "query");
1276
- if (queryParam) properties.push((0, _kubb_ast.createProperty)({
1273
+ if (queryParam) properties.push(_kubb_core.ast.createProperty({
1277
1274
  name: "QueryParams",
1278
1275
  required: true,
1279
- schema: (0, _kubb_ast.createSchema)({
1276
+ schema: _kubb_core.ast.createSchema({
1280
1277
  type: "ref",
1281
1278
  name: resolver.resolveQueryParamsName(node, queryParam)
1282
1279
  })
1283
1280
  }));
1284
1281
  const pathParam = node.parameters.find((p) => p.in === "path");
1285
- if (pathParam) properties.push((0, _kubb_ast.createProperty)({
1282
+ if (pathParam) properties.push(_kubb_core.ast.createProperty({
1286
1283
  name: "PathParams",
1287
1284
  required: true,
1288
- schema: (0, _kubb_ast.createSchema)({
1285
+ schema: _kubb_core.ast.createSchema({
1289
1286
  type: "ref",
1290
1287
  name: resolver.resolvePathParamsName(node, pathParam)
1291
1288
  })
1292
1289
  }));
1293
1290
  const headerParam = node.parameters.find((p) => p.in === "header");
1294
- if (headerParam) properties.push((0, _kubb_ast.createProperty)({
1291
+ if (headerParam) properties.push(_kubb_core.ast.createProperty({
1295
1292
  name: "HeaderParams",
1296
1293
  required: true,
1297
- schema: (0, _kubb_ast.createSchema)({
1294
+ schema: _kubb_core.ast.createSchema({
1298
1295
  type: "ref",
1299
1296
  name: resolver.resolveHeaderParamsName(node, headerParam)
1300
1297
  })
1301
1298
  }));
1302
- properties.push((0, _kubb_ast.createProperty)({
1299
+ properties.push(_kubb_core.ast.createProperty({
1303
1300
  name: "Errors",
1304
1301
  required: true,
1305
1302
  schema: errorsSchema
1306
1303
  }));
1307
- return (0, _kubb_ast.createSchema)({
1304
+ return _kubb_core.ast.createSchema({
1308
1305
  type: "object",
1309
1306
  properties
1310
1307
  });
@@ -1314,33 +1311,33 @@ function buildLegacyResponseUnionSchemaNode(node, { resolver }) {
1314
1311
  const code = Number(res.statusCode);
1315
1312
  return !Number.isNaN(code) && code >= 200 && code < 300;
1316
1313
  });
1317
- if (successResponses.length === 0) return (0, _kubb_ast.createSchema)({
1314
+ if (successResponses.length === 0) return _kubb_core.ast.createSchema({
1318
1315
  type: "any",
1319
1316
  primitive: void 0
1320
1317
  });
1321
- if (successResponses.length === 1) return (0, _kubb_ast.createSchema)({
1318
+ if (successResponses.length === 1) return _kubb_core.ast.createSchema({
1322
1319
  type: "ref",
1323
1320
  name: resolver.resolveResponseStatusName(node, successResponses[0].statusCode)
1324
1321
  });
1325
- return (0, _kubb_ast.createSchema)({
1322
+ return _kubb_core.ast.createSchema({
1326
1323
  type: "union",
1327
- members: successResponses.map((res) => (0, _kubb_ast.createSchema)({
1324
+ members: successResponses.map((res) => _kubb_core.ast.createSchema({
1328
1325
  type: "ref",
1329
1326
  name: resolver.resolveResponseStatusName(node, res.statusCode)
1330
1327
  }))
1331
1328
  });
1332
1329
  }
1333
1330
  function nameUnnamedEnums(node, parentName) {
1334
- return (0, _kubb_ast.transform)(node, {
1331
+ return _kubb_core.ast.transform(node, {
1335
1332
  schema(n) {
1336
- const enumNode = (0, _kubb_ast.narrowSchema)(n, "enum");
1333
+ const enumNode = _kubb_core.ast.narrowSchema(n, "enum");
1337
1334
  if (enumNode && !enumNode.name) return {
1338
1335
  ...enumNode,
1339
1336
  name: pascalCase([parentName, "enum"].join(" "))
1340
1337
  };
1341
1338
  },
1342
1339
  property(p) {
1343
- const enumNode = (0, _kubb_ast.narrowSchema)(p.schema, "enum");
1340
+ const enumNode = _kubb_core.ast.narrowSchema(p.schema, "enum");
1344
1341
  if (enumNode && !enumNode.name) return {
1345
1342
  ...p,
1346
1343
  schema: {
@@ -1357,11 +1354,12 @@ function nameUnnamedEnums(node, parentName) {
1357
1354
  }
1358
1355
  const typeGeneratorLegacy = (0, _kubb_core.defineGenerator)({
1359
1356
  name: "typescript-legacy",
1360
- schema(node, options) {
1361
- const { enumType, enumTypeSuffix, enumKeyCasing, syntaxType, optionalType, arrayType, output, group } = options;
1362
- const { adapter, config, resolver, root } = this;
1357
+ renderer: _kubb_renderer_jsx.jsxRenderer,
1358
+ schema(node, ctx) {
1359
+ const { enumType, enumTypeSuffix, enumKeyCasing, syntaxType, optionalType, arrayType, output, group } = ctx.options;
1360
+ const { adapter, config, resolver, root } = ctx;
1363
1361
  if (!node.name) return;
1364
- const mode = this.getMode(output);
1362
+ const mode = ctx.getMode(output);
1365
1363
  const imports = adapter.getImports(node, (schemaName) => ({
1366
1364
  name: resolver.resolveTypeName(schemaName),
1367
1365
  path: resolver.resolveFile({
@@ -1373,7 +1371,7 @@ const typeGeneratorLegacy = (0, _kubb_core.defineGenerator)({
1373
1371
  group
1374
1372
  }).path
1375
1373
  }));
1376
- const isEnumSchema = !!(0, _kubb_ast.narrowSchema)(node, _kubb_ast.schemaTypes.enum);
1374
+ const isEnumSchema = !!_kubb_core.ast.narrowSchema(node, _kubb_core.ast.schemaTypes.enum);
1377
1375
  const meta = {
1378
1376
  name: ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && isEnumSchema ? resolver.resolveEnumKeyName(node, enumTypeSuffix) : resolver.resolveTypeName(node.name),
1379
1377
  file: resolver.resolveFile({
@@ -1427,11 +1425,11 @@ const typeGeneratorLegacy = (0, _kubb_core.defineGenerator)({
1427
1425
  })]
1428
1426
  });
1429
1427
  },
1430
- operation(node, options) {
1431
- const { enumType, enumTypeSuffix, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output } = options;
1432
- const { adapter, config, resolver, root } = this;
1433
- const mode = this.getMode(output);
1434
- const params = (0, _kubb_ast.caseParams)(node.parameters, paramsCasing);
1428
+ operation(node, ctx) {
1429
+ const { enumType, enumTypeSuffix, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output } = ctx.options;
1430
+ const { adapter, config, resolver, root } = ctx;
1431
+ const mode = ctx.getMode(output);
1432
+ const params = _kubb_core.ast.caseParams(node.parameters, paramsCasing);
1435
1433
  const meta = { file: resolver.resolveFile({
1436
1434
  name: node.operationId,
1437
1435
  extname: ".ts",
@@ -1558,28 +1556,6 @@ const typeGeneratorLegacy = (0, _kubb_core.defineGenerator)({
1558
1556
  }
1559
1557
  });
1560
1558
  //#endregion
1561
- //#region src/presets.ts
1562
- /**
1563
- * Built-in preset registry for `@kubb/plugin-ts`.
1564
- *
1565
- * - `default` — uses `resolverTs` and `typeGenerator` (current naming conventions).
1566
- * - `kubbV4` — uses `resolverTsLegacy` and `typeGeneratorLegacy` (Kubb v4 naming conventions).
1567
- */
1568
- const presets = (0, _kubb_core.definePresets)({
1569
- default: {
1570
- name: "default",
1571
- resolver: resolverTs,
1572
- generators: [typeGenerator],
1573
- printer: printerTs
1574
- },
1575
- kubbV4: {
1576
- name: "kubbV4",
1577
- resolver: resolverTsLegacy,
1578
- generators: [typeGeneratorLegacy],
1579
- printer: printerTs
1580
- }
1581
- });
1582
- //#endregion
1583
1559
  //#region src/plugin.ts
1584
1560
  /**
1585
1561
  * Canonical plugin name for `@kubb/plugin-ts`, used to identify the plugin in driver lookups and warnings.
@@ -1601,44 +1577,31 @@ const pluginTsName = "plugin-ts";
1601
1577
  * })
1602
1578
  * ```
1603
1579
  */
1604
- const pluginTs = (0, _kubb_core.createPlugin)((options) => {
1580
+ const pluginTs = (0, _kubb_core.definePlugin)((options) => {
1605
1581
  const { output = {
1606
1582
  path: "types",
1607
1583
  barrelType: "named"
1608
- }, group, exclude = [], include, override = [], enumType = "asConst", enumTypeSuffix = "Key", enumKeyCasing = "none", optionalType = "questionToken", arrayType = "array", syntaxType = "type", paramsCasing, printer, compatibilityPreset = "default", resolver: userResolver, transformer: userTransformer, generators: userGenerators = [] } = options;
1609
- const preset = (0, _kubb_core.getPreset)({
1610
- preset: compatibilityPreset,
1611
- presets,
1612
- resolver: userResolver,
1613
- transformer: userTransformer,
1614
- generators: userGenerators
1615
- });
1616
- const mergedGenerator = (0, _kubb_core.mergeGenerators)(preset.generators ?? []);
1617
- let resolveNameWarning = false;
1618
- let resolvePathWarning = false;
1584
+ }, group, exclude = [], include, override = [], enumType = "asConst", enumTypeSuffix = "Key", enumKeyCasing = "none", optionalType = "questionToken", arrayType = "array", syntaxType = "type", paramsCasing, printer, resolver: userResolver, transformer: userTransformer, generators: userGenerators = [], compatibilityPreset = "default" } = options;
1585
+ const defaultResolver = compatibilityPreset === "kubbV4" ? resolverTsLegacy : resolverTs;
1586
+ const defaultGenerator = compatibilityPreset === "kubbV4" ? typeGeneratorLegacy : typeGenerator;
1587
+ const groupConfig = group ? {
1588
+ ...group,
1589
+ name: (ctx) => {
1590
+ if (group.type === "path") return `${ctx.group.split("/")[1]}`;
1591
+ return `${camelCase(ctx.group)}Controller`;
1592
+ }
1593
+ } : void 0;
1619
1594
  return {
1620
1595
  name: pluginTsName,
1621
- version,
1622
- get resolver() {
1623
- return preset.resolver;
1624
- },
1625
- get transformer() {
1626
- return preset.transformer;
1627
- },
1628
- get options() {
1629
- return {
1596
+ options,
1597
+ hooks: { "kubb:plugin:setup"(ctx) {
1598
+ ctx.setOptions({
1630
1599
  output,
1631
1600
  exclude,
1632
1601
  include,
1633
1602
  override,
1634
1603
  optionalType,
1635
- group: group ? {
1636
- ...group,
1637
- name: (ctx) => {
1638
- if (group.type === "path") return `${ctx.group.split("/")[1]}`;
1639
- return `${camelCase(ctx.group)}Controller`;
1640
- }
1641
- } : void 0,
1604
+ group: groupConfig,
1642
1605
  arrayType,
1643
1606
  enumType,
1644
1607
  enumTypeSuffix,
@@ -1646,43 +1609,15 @@ const pluginTs = (0, _kubb_core.createPlugin)((options) => {
1646
1609
  syntaxType,
1647
1610
  paramsCasing,
1648
1611
  printer
1649
- };
1650
- },
1651
- resolvePath(baseName, pathMode, options) {
1652
- if (!resolvePathWarning) {
1653
- this.warn("Do not use resolvePath for pluginTs, use resolverTs.resolvePath instead");
1654
- resolvePathWarning = true;
1655
- }
1656
- return this.plugin.resolver.resolvePath({
1657
- baseName,
1658
- pathMode,
1659
- tag: options?.group?.tag,
1660
- path: options?.group?.path
1661
- }, {
1662
- root: this.root,
1663
- output,
1664
- group: this.plugin.options.group
1665
1612
  });
1666
- },
1667
- resolveName(name, type) {
1668
- if (!resolveNameWarning) {
1669
- this.warn("Do not use resolveName for pluginTs, use resolverTs.default instead");
1670
- resolveNameWarning = true;
1671
- }
1672
- return this.plugin.resolver.default(name, type);
1673
- },
1674
- async schema(node, options) {
1675
- return mergedGenerator.schema?.call(this, node, options);
1676
- },
1677
- async operation(node, options) {
1678
- return mergedGenerator.operation?.call(this, node, options);
1679
- },
1680
- async operations(nodes, options) {
1681
- return mergedGenerator.operations?.call(this, nodes, options);
1682
- },
1683
- async buildStart() {
1684
- await this.openInStudio({ ast: true });
1685
- }
1613
+ ctx.setResolver(userResolver ? {
1614
+ ...defaultResolver,
1615
+ ...userResolver
1616
+ } : defaultResolver);
1617
+ if (userTransformer) ctx.setTransformer(userTransformer);
1618
+ ctx.addGenerator(defaultGenerator);
1619
+ for (const gen of userGenerators) ctx.addGenerator(gen);
1620
+ } }
1686
1621
  };
1687
1622
  });
1688
1623
  //#endregion
@@ -1699,7 +1634,7 @@ const kindToHandlerKey = {
1699
1634
  * Uses `createPrinterFactory` and dispatches handlers by `node.kind`
1700
1635
  * (for function nodes) rather than by `node.type` (for schema nodes).
1701
1636
  */
1702
- const defineFunctionPrinter = (0, _kubb_ast.createPrinterFactory)((node) => kindToHandlerKey[node.kind]);
1637
+ const defineFunctionPrinter = _kubb_core.ast.createPrinterFactory((node) => kindToHandlerKey[node.kind]);
1703
1638
  function rank(param) {
1704
1639
  if (param.kind === "ParameterGroup") {
1705
1640
  if (param.default) return PARAM_RANK.withDefault;