Skip to content

Commit 08c1394

Browse files
committed
Fix enum schema name resolve
1 parent 440e0c5 commit 08c1394

3 files changed

Lines changed: 34 additions & 7 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@povio/openapi-codegen-cli",
3-
"version": "0.4.7",
3+
"version": "0.4.8",
44
"main": "./dist/index.js",
55
"bin": {
66
"openapi-codegen": "./dist/sh.js"

src/generators/core/zod/updateEnumZodSchemaData.ts

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,16 +105,22 @@ export function resolveEnumZodSchemaNames(resolver: SchemaResolver) {
105105
nameResolutionIterationsCounter++;
106106
}
107107

108+
if (!allEnumZodSchemaNamesAreUnique(resolver)) {
109+
const enumsDuplicateData = resolver.enumZodSchemaData.filter((enumData) => !isUnique(resolver, enumData));
110+
enumsDuplicateData.forEach((enumData) => {
111+
enumData.zodSchemaName = enumData.meta.zodSchemaNameSegments[0]
112+
.map((name) => sanitizeName(capitalize(name)))
113+
.join("");
114+
});
115+
}
116+
108117
if (!allEnumZodSchemaNamesAreUnique(resolver)) {
109118
throw new Error("Failed to resolve unique names for enum zod schemas");
110119
}
111120
}
112121

113122
function allEnumZodSchemaNamesAreUnique(resolver: SchemaResolver) {
114-
return resolver.enumZodSchemaData.every(
115-
(enumData) =>
116-
resolver.enumZodSchemaData.filter(({ zodSchemaName }) => enumData.zodSchemaName === zodSchemaName).length == 1,
117-
);
123+
return resolver.enumZodSchemaData.every((enumData) => isUnique(resolver, enumData));
118124
}
119125

120126
function additionalResolveEnumZodSchemaName(resolver: SchemaResolver, index: number) {
@@ -136,12 +142,19 @@ function suffixWithPreviousSegmentName(enumsData: EnumZodSchemaData[], index = 2
136142
.map((arr) => arr[arr.length - index])
137143
.filter(Boolean);
138144
if (precedingLastFragments.length === 1) {
139-
data.zodSchemaName = [capitalize(precedingLastFragments[0]), data.zodSchemaName].filter(Boolean).join("");
145+
const zodSchemaName = [sanitizeName(capitalize(precedingLastFragments[0])), data.zodSchemaName]
146+
.filter(Boolean)
147+
.join("");
148+
data.zodSchemaName = zodSchemaName;
140149
} else {
141150
const secondLastFragmentSplit = getMostCommonAdjacentCombinationSplit(precedingLastFragments);
142-
data.zodSchemaName = [secondLastFragmentSplit ? capitalize(secondLastFragmentSplit) : "", data.zodSchemaName]
151+
const zodSchemaName = [
152+
secondLastFragmentSplit ? sanitizeName(capitalize(secondLastFragmentSplit)) : "",
153+
data.zodSchemaName,
154+
]
143155
.filter(Boolean)
144156
.join("");
157+
data.zodSchemaName = zodSchemaName;
145158
}
146159
});
147160
}
@@ -152,3 +165,13 @@ export function resolveEnumZodSchemaTags(resolver: SchemaResolver) {
152165
enumData.tag = tags.length === 1 ? tags[0] : resolver.options.defaultTag;
153166
});
154167
}
168+
169+
function isUnique(resolver: SchemaResolver, enumData: EnumZodSchemaData) {
170+
return (
171+
resolver.enumZodSchemaData.filter(({ zodSchemaName }) => enumData.zodSchemaName === zodSchemaName).length === 1
172+
);
173+
}
174+
175+
function sanitizeName(name: string) {
176+
return name.replace(/(Dto|DTO|Response|Request)/g, "");
177+
}

src/generators/generate/generateAcl.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ export function generateAcl({ resolver, data, tag = "" }: GenerateTypeParams) {
4949
}
5050

5151
export function generateAppAcl(resolver: SchemaResolver, tags: string[]) {
52+
if (!tags || tags.length === 0) {
53+
return;
54+
}
55+
5256
const caslAbilityTupleImport: Import = {
5357
...CASL_ABILITY_IMPORT,
5458
bindings: [CASL_ABILITY_BINDING.pureAbility],

0 commit comments

Comments
 (0)