@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.js
CHANGED
|
@@ -514,6 +514,27 @@ function renameIdentifier(node, oldName, newName) {
|
|
|
514
514
|
})
|
|
515
515
|
]).transformed[0];
|
|
516
516
|
}
|
|
517
|
+
function isStringEnumType(node) {
|
|
518
|
+
if (!import_typescript.default.isUnionTypeNode(node.type)) return null;
|
|
519
|
+
const members = [];
|
|
520
|
+
for (const member of node.type.types) {
|
|
521
|
+
if (import_typescript.default.isLiteralTypeNode(member) && import_typescript.default.isStringLiteral(member.literal)) {
|
|
522
|
+
members.push(member.literal.text);
|
|
523
|
+
} else {
|
|
524
|
+
return null;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
return members.length > 0 ? members : null;
|
|
528
|
+
}
|
|
529
|
+
function generateEnumDeclaration(name, members) {
|
|
530
|
+
const enumMembers = members.map((value) => {
|
|
531
|
+
const key = value.charAt(0).toUpperCase() + value.slice(1);
|
|
532
|
+
return ` ${key} = "${value}"`;
|
|
533
|
+
});
|
|
534
|
+
return `export enum ${name} {
|
|
535
|
+
${enumMembers.join(",\n")}
|
|
536
|
+
}`;
|
|
537
|
+
}
|
|
517
538
|
function generateComponentSchemaFile(interfaces, includeOnly) {
|
|
518
539
|
const printer = import_typescript.default.createPrinter({ newLine: import_typescript.default.NewLineKind.LineFeed });
|
|
519
540
|
const resultFile = import_typescript.default.createSourceFile(
|
|
@@ -531,6 +552,13 @@ function generateComponentSchemaFile(interfaces, includeOnly) {
|
|
|
531
552
|
if (includeOnly && !includeOnly.has(originalName)) {
|
|
532
553
|
return;
|
|
533
554
|
}
|
|
555
|
+
if (import_typescript.default.isTypeAliasDeclaration(node)) {
|
|
556
|
+
const enumMembers = isStringEnumType(node);
|
|
557
|
+
if (enumMembers) {
|
|
558
|
+
renamedInterfaces.push(generateEnumDeclaration(pascalCaseName, enumMembers));
|
|
559
|
+
return;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
534
562
|
const renamedNode = renameIdentifier(node, originalName, pascalCaseName);
|
|
535
563
|
const printed = printer.printNode(import_typescript.default.EmitHint.Unspecified, renamedNode, resultFile);
|
|
536
564
|
renamedInterfaces.push(printed);
|
|
@@ -708,6 +736,27 @@ function prefixSharedSchemaRefs(node, allSchemaNames, localSchemaNames, declarat
|
|
|
708
736
|
})
|
|
709
737
|
]).transformed[0];
|
|
710
738
|
}
|
|
739
|
+
function isStringEnumType2(node) {
|
|
740
|
+
if (!import_typescript2.default.isUnionTypeNode(node.type)) return null;
|
|
741
|
+
const members = [];
|
|
742
|
+
for (const member of node.type.types) {
|
|
743
|
+
if (import_typescript2.default.isLiteralTypeNode(member) && import_typescript2.default.isStringLiteral(member.literal)) {
|
|
744
|
+
members.push(member.literal.text);
|
|
745
|
+
} else {
|
|
746
|
+
return null;
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
return members.length > 0 ? members : null;
|
|
750
|
+
}
|
|
751
|
+
function generateEnumDeclaration2(name, members) {
|
|
752
|
+
const enumMembers = members.map((value) => {
|
|
753
|
+
const key = value.charAt(0).toUpperCase() + value.slice(1);
|
|
754
|
+
return ` ${key} = "${value}"`;
|
|
755
|
+
});
|
|
756
|
+
return `export enum ${name} {
|
|
757
|
+
${enumMembers.join(",\n")}
|
|
758
|
+
}`;
|
|
759
|
+
}
|
|
711
760
|
function generateTypesFile(endpointInfos, _options, schemaInterfaces, operationDefinitions, localSchemaOptions) {
|
|
712
761
|
const localSchemaNames = localSchemaOptions?.localSchemaNames ?? /* @__PURE__ */ new Set();
|
|
713
762
|
const localSchemaInterfaces = localSchemaOptions?.localSchemaInterfaces ?? {};
|
|
@@ -745,6 +794,13 @@ function generateTypesFile(endpointInfos, _options, schemaInterfaces, operationD
|
|
|
745
794
|
const allSchemaNameSet = new Set(schemaInterfaces ? Object.keys(schemaInterfaces) : []);
|
|
746
795
|
for (const [originalName, node] of Object.entries(localSchemaInterfaces)) {
|
|
747
796
|
const pascalCaseName = toPascalCase2(originalName);
|
|
797
|
+
if (import_typescript2.default.isTypeAliasDeclaration(node)) {
|
|
798
|
+
const enumMembers = isStringEnumType2(node);
|
|
799
|
+
if (enumMembers) {
|
|
800
|
+
localTypeDefs.push(generateEnumDeclaration2(pascalCaseName, enumMembers));
|
|
801
|
+
continue;
|
|
802
|
+
}
|
|
803
|
+
}
|
|
748
804
|
let transformedNode = renameIdentifier2(node, originalName, pascalCaseName);
|
|
749
805
|
transformedNode = prefixSharedSchemaRefs(transformedNode, allSchemaNameSet, localSchemaNames, pascalCaseName);
|
|
750
806
|
const printed = printer.printNode(import_typescript2.default.EmitHint.Unspecified, transformedNode, resultFile);
|