Skip to content

Commit 80871bf

Browse files
authored
Merge pull request #508 from AGrigorii/fix-enums-extracting
fix: extracting enums along with extracting request params [#506]
2 parents dbcf6cc + 1c2d846 commit 80871bf

File tree

5 files changed

+20
-9
lines changed

5 files changed

+20
-9
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ generateApi({
130130
toJS: false,
131131
extractRequestParams: false,
132132
extractRequestBody: false,
133+
extractEnums: false,
133134
unwrapResponseData: false,
134135
prettier: { // By default prettier config is load from your project
135136
printWidth: 120,

src/schema-parser/schema-parser.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class SchemaParser {
9292
baseSchemaParsers = {
9393
[SCHEMA_TYPES.ENUM]: (schema, typeName) => {
9494
if (this.config.extractEnums && !typeName) {
95-
const generatedTypeName = this.config.componentTypeNameResolver.resolve([this.buildTypeNameFromPath()]);
95+
const generatedTypeName = this.config.componentTypeNameResolver.resolve([this.buildTypeNameFromPath()], false);
9696
const schemaComponent = this.schemaComponentsMap.createComponent("schemas", generatedTypeName, { ...schema });
9797
return this.parseSchema(schemaComponent, generatedTypeName);
9898
}
@@ -391,9 +391,9 @@ class SchemaParser {
391391
_.merge(schema, this.config.hooks.onPreParseSchema(schema, typeName, schemaType));
392392
parsedSchema = this.baseSchemaParsers[schemaType](schema, typeName);
393393
schema.$parsed = this.config.hooks.onParseSchema(schema, parsedSchema) || parsedSchema;
394-
}
395394

396-
this.$processingSchemaPath.pop();
395+
this.$processingSchemaPath.pop();
396+
}
397397

398398
return schema.$parsed;
399399
};

src/schema-parser/schema-routes.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,16 @@ class SchemaRoutes {
767767
this.extractResponseErrorIfItNeeded(routeInfo, responseBodyInfo, routeName);
768768
}
769769

770-
const queryType = routeParams.query.length ? this.schemaParser.getInlineParseContent(queryObjectSchema) : null;
770+
const typeName = this.schemaUtils.resolveTypeName(
771+
routeName.usage,
772+
this.config.extractingOptions.requestParamsSuffix,
773+
this.config.extractingOptions.requestParamsNameResolver,
774+
false,
775+
);
776+
777+
const queryType = routeParams.query.length
778+
? this.schemaParser.getInlineParseContent(queryObjectSchema, typeName)
779+
: null;
771780
const pathType = routeParams.path.length ? this.schemaParser.getInlineParseContent(pathObjectSchema) : null;
772781
const headersType = routeParams.header.length ? this.schemaParser.getInlineParseContent(headersObjectSchema) : null;
773782

src/schema-parser/schema-utils.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ class SchemaUtils {
145145
return _.uniq(_.filter(contents, (type) => filterFn(type)));
146146
};
147147

148-
resolveTypeName = (typeName, suffixes, resolver) => {
148+
resolveTypeName = (typeName, suffixes, resolver, shouldReserve = true) => {
149149
if (resolver) {
150150
return this.config.componentTypeNameResolver.resolve((reserved) => {
151151
const variant = resolver(pascalCase(typeName), reserved);
@@ -155,6 +155,7 @@ class SchemaUtils {
155155
} else {
156156
return this.config.componentTypeNameResolver.resolve(
157157
suffixes.map((suffix) => pascalCase(`${typeName} ${suffix}`)),
158+
shouldReserve,
158159
);
159160
}
160161
};

src/util/name-resolver.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,21 @@ class NameResolver {
4040
* @param {(string[]) | ((reserved: string[]) => string)} variantsOrResolver
4141
* @returns {string | null}
4242
*/
43-
resolve(variantsOrResolver) {
43+
resolve(variantsOrResolver, shouldReserve = true) {
4444
this.logger.debug("resolving name with using", variantsOrResolver);
4545
if (Array.isArray(variantsOrResolver)) {
4646
const variants = variantsOrResolver;
4747
let usageName = null;
4848
const uniqVariants = _.uniq(_.compact(variants));
4949

5050
_.forEach(uniqVariants, (variant) => {
51-
if (!usageName && !this.isReserved(variant)) {
51+
if (!usageName && (!shouldReserve || !this.isReserved(variant))) {
5252
usageName = variant;
5353
}
5454
});
5555

5656
if (usageName) {
57-
this.reserve([usageName]);
57+
shouldReserve && this.reserve([usageName]);
5858
return usageName;
5959
}
6060

@@ -74,7 +74,7 @@ class NameResolver {
7474
}
7575
}
7676

77-
this.reserve([usageName]);
77+
shouldReserve && this.reserve([usageName]);
7878
return usageName;
7979
}
8080

0 commit comments

Comments
 (0)