@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/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);