@acrool/rtk-query-codegen-openapi 1.4.0-alpha.0 → 1.4.0-alpha.1
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/lib/bin/cli.mjs +40 -34
- package/lib/bin/cli.mjs.map +1 -1
- package/lib/index.js +56 -0
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +56 -0
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/generators/component-schema-generator.ts +40 -0
- package/src/generators/types-generator.ts +38 -0
package/lib/index.mjs
CHANGED
|
@@ -499,6 +499,27 @@ function renameIdentifier(node, oldName, newName) {
|
|
|
499
499
|
})
|
|
500
500
|
]).transformed[0];
|
|
501
501
|
}
|
|
502
|
+
function isStringEnumType(node) {
|
|
503
|
+
if (!ts.isUnionTypeNode(node.type)) return null;
|
|
504
|
+
const members = [];
|
|
505
|
+
for (const member of node.type.types) {
|
|
506
|
+
if (ts.isLiteralTypeNode(member) && ts.isStringLiteral(member.literal)) {
|
|
507
|
+
members.push(member.literal.text);
|
|
508
|
+
} else {
|
|
509
|
+
return null;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
return members.length > 0 ? members : null;
|
|
513
|
+
}
|
|
514
|
+
function generateEnumDeclaration(name, members) {
|
|
515
|
+
const enumMembers = members.map((value) => {
|
|
516
|
+
const key = value.charAt(0).toUpperCase() + value.slice(1);
|
|
517
|
+
return ` ${key} = "${value}"`;
|
|
518
|
+
});
|
|
519
|
+
return `export enum ${name} {
|
|
520
|
+
${enumMembers.join(",\n")}
|
|
521
|
+
}`;
|
|
522
|
+
}
|
|
502
523
|
function generateComponentSchemaFile(interfaces, includeOnly) {
|
|
503
524
|
const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
|
|
504
525
|
const resultFile = ts.createSourceFile(
|
|
@@ -516,6 +537,13 @@ function generateComponentSchemaFile(interfaces, includeOnly) {
|
|
|
516
537
|
if (includeOnly && !includeOnly.has(originalName)) {
|
|
517
538
|
return;
|
|
518
539
|
}
|
|
540
|
+
if (ts.isTypeAliasDeclaration(node)) {
|
|
541
|
+
const enumMembers = isStringEnumType(node);
|
|
542
|
+
if (enumMembers) {
|
|
543
|
+
renamedInterfaces.push(generateEnumDeclaration(pascalCaseName, enumMembers));
|
|
544
|
+
return;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
519
547
|
const renamedNode = renameIdentifier(node, originalName, pascalCaseName);
|
|
520
548
|
const printed = printer.printNode(ts.EmitHint.Unspecified, renamedNode, resultFile);
|
|
521
549
|
renamedInterfaces.push(printed);
|
|
@@ -693,6 +721,27 @@ function prefixSharedSchemaRefs(node, allSchemaNames, localSchemaNames, declarat
|
|
|
693
721
|
})
|
|
694
722
|
]).transformed[0];
|
|
695
723
|
}
|
|
724
|
+
function isStringEnumType2(node) {
|
|
725
|
+
if (!ts2.isUnionTypeNode(node.type)) return null;
|
|
726
|
+
const members = [];
|
|
727
|
+
for (const member of node.type.types) {
|
|
728
|
+
if (ts2.isLiteralTypeNode(member) && ts2.isStringLiteral(member.literal)) {
|
|
729
|
+
members.push(member.literal.text);
|
|
730
|
+
} else {
|
|
731
|
+
return null;
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
return members.length > 0 ? members : null;
|
|
735
|
+
}
|
|
736
|
+
function generateEnumDeclaration2(name, members) {
|
|
737
|
+
const enumMembers = members.map((value) => {
|
|
738
|
+
const key = value.charAt(0).toUpperCase() + value.slice(1);
|
|
739
|
+
return ` ${key} = "${value}"`;
|
|
740
|
+
});
|
|
741
|
+
return `export enum ${name} {
|
|
742
|
+
${enumMembers.join(",\n")}
|
|
743
|
+
}`;
|
|
744
|
+
}
|
|
696
745
|
function generateTypesFile(endpointInfos, _options, schemaInterfaces, operationDefinitions, localSchemaOptions) {
|
|
697
746
|
const localSchemaNames = localSchemaOptions?.localSchemaNames ?? /* @__PURE__ */ new Set();
|
|
698
747
|
const localSchemaInterfaces = localSchemaOptions?.localSchemaInterfaces ?? {};
|
|
@@ -730,6 +779,13 @@ function generateTypesFile(endpointInfos, _options, schemaInterfaces, operationD
|
|
|
730
779
|
const allSchemaNameSet = new Set(schemaInterfaces ? Object.keys(schemaInterfaces) : []);
|
|
731
780
|
for (const [originalName, node] of Object.entries(localSchemaInterfaces)) {
|
|
732
781
|
const pascalCaseName = toPascalCase2(originalName);
|
|
782
|
+
if (ts2.isTypeAliasDeclaration(node)) {
|
|
783
|
+
const enumMembers = isStringEnumType2(node);
|
|
784
|
+
if (enumMembers) {
|
|
785
|
+
localTypeDefs.push(generateEnumDeclaration2(pascalCaseName, enumMembers));
|
|
786
|
+
continue;
|
|
787
|
+
}
|
|
788
|
+
}
|
|
733
789
|
let transformedNode = renameIdentifier2(node, originalName, pascalCaseName);
|
|
734
790
|
transformedNode = prefixSharedSchemaRefs(transformedNode, allSchemaNameSet, localSchemaNames, pascalCaseName);
|
|
735
791
|
const printed = printer.printNode(ts2.EmitHint.Unspecified, transformedNode, resultFile);
|