@kubb/plugin-ts 5.0.0-alpha.34 → 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 +111 -176
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +20 -23
- package/dist/index.js +111 -176
- package/dist/index.js.map +1 -1
- package/package.json +5 -6
- package/src/components/Enum.tsx +3 -3
- package/src/components/Type.tsx +6 -8
- package/src/factory.ts +10 -8
- package/src/generators/typeGenerator.tsx +16 -17
- package/src/generators/typeGeneratorLegacy.tsx +48 -49
- package/src/plugin.ts +47 -81
- package/src/printers/functionPrinter.ts +13 -13
- package/src/printers/printerTs.ts +7 -8
- package/src/types.ts +11 -12
- package/src/utils.ts +30 -31
- package/src/presets.ts +0 -28
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
|
|
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 =
|
|
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 =
|
|
560
|
-
const enumNode =
|
|
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 =
|
|
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
|
|
615
|
+
return _kubb_core.ast.createSchema({
|
|
617
616
|
type: "object",
|
|
618
|
-
properties: params.map((param) =>
|
|
617
|
+
properties: params.map((param) => _kubb_core.ast.createProperty({
|
|
619
618
|
name: param.name,
|
|
620
619
|
required: param.required,
|
|
621
|
-
schema:
|
|
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
|
|
631
|
+
return _kubb_core.ast.createSchema({
|
|
633
632
|
type: "object",
|
|
634
633
|
deprecated: node.deprecated,
|
|
635
634
|
properties: [
|
|
636
|
-
|
|
635
|
+
_kubb_core.ast.createProperty({
|
|
637
636
|
name: "data",
|
|
638
|
-
schema: node.requestBody?.schema ?
|
|
637
|
+
schema: node.requestBody?.schema ? _kubb_core.ast.createSchema({
|
|
639
638
|
type: "ref",
|
|
640
639
|
name: resolver.resolveDataName(node),
|
|
641
640
|
optional: true
|
|
642
|
-
}) :
|
|
641
|
+
}) : _kubb_core.ast.createSchema({
|
|
643
642
|
type: "never",
|
|
644
643
|
primitive: void 0,
|
|
645
644
|
optional: true
|
|
646
645
|
})
|
|
647
646
|
}),
|
|
648
|
-
|
|
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
|
-
}) :
|
|
653
|
+
}) : _kubb_core.ast.createSchema({
|
|
655
654
|
type: "never",
|
|
656
655
|
primitive: void 0
|
|
657
656
|
})
|
|
658
657
|
}),
|
|
659
|
-
|
|
658
|
+
_kubb_core.ast.createProperty({
|
|
660
659
|
name: "queryParams",
|
|
661
|
-
schema: queryParams.length > 0 ?
|
|
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
|
-
}) :
|
|
666
|
+
}) : _kubb_core.ast.createSchema({
|
|
668
667
|
type: "never",
|
|
669
668
|
primitive: void 0,
|
|
670
669
|
optional: true
|
|
671
670
|
})
|
|
672
671
|
}),
|
|
673
|
-
|
|
672
|
+
_kubb_core.ast.createProperty({
|
|
674
673
|
name: "headerParams",
|
|
675
|
-
schema: headerParams.length > 0 ?
|
|
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
|
-
}) :
|
|
680
|
+
}) : _kubb_core.ast.createSchema({
|
|
682
681
|
type: "never",
|
|
683
682
|
primitive: void 0,
|
|
684
683
|
optional: true
|
|
685
684
|
})
|
|
686
685
|
}),
|
|
687
|
-
|
|
686
|
+
_kubb_core.ast.createProperty({
|
|
688
687
|
name: "url",
|
|
689
688
|
required: true,
|
|
690
|
-
schema:
|
|
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
|
|
699
|
+
return _kubb_core.ast.createSchema({
|
|
701
700
|
type: "object",
|
|
702
|
-
properties: node.responses.map((res) =>
|
|
701
|
+
properties: node.responses.map((res) => _kubb_core.ast.createProperty({
|
|
703
702
|
name: String(res.statusCode),
|
|
704
703
|
required: true,
|
|
705
|
-
schema:
|
|
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
|
|
714
|
+
return _kubb_core.ast.createSchema({
|
|
716
715
|
type: "union",
|
|
717
|
-
members: responsesWithSchema.map((res) =>
|
|
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 ?
|
|
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
|
|
791
|
+
return _kubb_core.ast.narrowSchema(m, _kubb_core.ast.schemaTypes.enum)?.primitive === "string";
|
|
793
792
|
});
|
|
794
|
-
const hasPlainString = members.some((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 (
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
884
|
-
|
|
885
|
-
const {
|
|
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 =
|
|
888
|
-
const enumSchemaNames = new Set((adapter.inputNode?.schemas ?? []).filter((s) =>
|
|
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 = !!
|
|
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,
|
|
961
|
-
const { enumType, enumTypeSuffix, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output, printer } = options;
|
|
962
|
-
const { adapter, config, resolver, root } =
|
|
963
|
-
const mode =
|
|
964
|
-
const params =
|
|
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) =>
|
|
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.34";
|
|
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
|
|
1206
|
+
return _kubb_core.ast.createSchema({
|
|
1210
1207
|
type: "object",
|
|
1211
1208
|
properties: params.map((param) => {
|
|
1212
1209
|
let schema = param.schema;
|
|
1213
|
-
if (
|
|
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
|
|
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 ?
|
|
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
|
-
}) :
|
|
1236
|
+
}) : _kubb_core.ast.createSchema({
|
|
1240
1237
|
type: "union",
|
|
1241
|
-
members: successResponses.map((res) =>
|
|
1238
|
+
members: successResponses.map((res) => _kubb_core.ast.createSchema({
|
|
1242
1239
|
type: "ref",
|
|
1243
1240
|
name: resolver.resolveResponseStatusName(node, res.statusCode)
|
|
1244
1241
|
}))
|
|
1245
|
-
}) :
|
|
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 ?
|
|
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
|
-
}) :
|
|
1249
|
+
}) : _kubb_core.ast.createSchema({
|
|
1253
1250
|
type: "union",
|
|
1254
|
-
members: errorResponses.map((res) =>
|
|
1251
|
+
members: errorResponses.map((res) => _kubb_core.ast.createSchema({
|
|
1255
1252
|
type: "ref",
|
|
1256
1253
|
name: resolver.resolveResponseStatusName(node, res.statusCode)
|
|
1257
1254
|
}))
|
|
1258
|
-
}) :
|
|
1255
|
+
}) : _kubb_core.ast.createSchema({
|
|
1259
1256
|
type: "any",
|
|
1260
1257
|
primitive: void 0
|
|
1261
1258
|
});
|
|
1262
|
-
const properties = [
|
|
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(
|
|
1264
|
+
if (!isGet && node.requestBody?.schema) properties.push(_kubb_core.ast.createProperty({
|
|
1268
1265
|
name: "Request",
|
|
1269
1266
|
required: true,
|
|
1270
|
-
schema:
|
|
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(
|
|
1273
|
+
if (queryParam) properties.push(_kubb_core.ast.createProperty({
|
|
1277
1274
|
name: "QueryParams",
|
|
1278
1275
|
required: true,
|
|
1279
|
-
schema:
|
|
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(
|
|
1282
|
+
if (pathParam) properties.push(_kubb_core.ast.createProperty({
|
|
1286
1283
|
name: "PathParams",
|
|
1287
1284
|
required: true,
|
|
1288
|
-
schema:
|
|
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(
|
|
1291
|
+
if (headerParam) properties.push(_kubb_core.ast.createProperty({
|
|
1295
1292
|
name: "HeaderParams",
|
|
1296
1293
|
required: true,
|
|
1297
|
-
schema:
|
|
1294
|
+
schema: _kubb_core.ast.createSchema({
|
|
1298
1295
|
type: "ref",
|
|
1299
1296
|
name: resolver.resolveHeaderParamsName(node, headerParam)
|
|
1300
1297
|
})
|
|
1301
1298
|
}));
|
|
1302
|
-
properties.push(
|
|
1299
|
+
properties.push(_kubb_core.ast.createProperty({
|
|
1303
1300
|
name: "Errors",
|
|
1304
1301
|
required: true,
|
|
1305
1302
|
schema: errorsSchema
|
|
1306
1303
|
}));
|
|
1307
|
-
return
|
|
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
|
|
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
|
|
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
|
|
1322
|
+
return _kubb_core.ast.createSchema({
|
|
1326
1323
|
type: "union",
|
|
1327
|
-
members: successResponses.map((res) =>
|
|
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
|
|
1331
|
+
return _kubb_core.ast.transform(node, {
|
|
1335
1332
|
schema(n) {
|
|
1336
|
-
const enumNode =
|
|
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 =
|
|
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
|
-
|
|
1361
|
-
|
|
1362
|
-
const {
|
|
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 =
|
|
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 = !!
|
|
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,
|
|
1431
|
-
const { enumType, enumTypeSuffix, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output } = options;
|
|
1432
|
-
const { adapter, config, resolver, root } =
|
|
1433
|
-
const mode =
|
|
1434
|
-
const params =
|
|
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.
|
|
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,
|
|
1609
|
-
const
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
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
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
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:
|
|
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
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
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 =
|
|
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;
|