Skip to content

Commit 222cb05

Browse files
committed
fix importing generic schema issue
1 parent 9994b3e commit 222cb05

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

src/core/renderers/declaration.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { OpenAPI } from "~/core/openapi";
22
import { type DeclaredOperation, resolveDeclaredOperations } from "~/core/resolvers/declared-operation";
3+
import { resolveSchemas } from "~/core/resolvers/imported-schema";
34
import getTemplate from "~/core/template";
45
import declarationTemplate from "~/templates/declaration.hbs";
56

@@ -8,10 +9,10 @@ type DeclarationTemplate = {
89
operations: DeclaredOperation[],
910
};
1011

11-
export default function generateDeclaration(importedSchemas: string[], paths: OpenAPI["paths"]) {
12+
export default function generateDeclaration(paths: OpenAPI["paths"]) {
1213
const template = getTemplate<DeclarationTemplate>(declarationTemplate);
1314
return template({
14-
importedSchemas,
15+
importedSchemas: resolveSchemas(paths),
1516
operations: resolveDeclaredOperations(paths),
1617
});
1718
}

src/core/resolvers/imported-schema.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ function resolveRequestSchemas(requestBody: Operation["requestBody"]) {
1010

1111
function resolveResponseSchemas(responses: Operation["responses"]) {
1212
return Object.values(responses).map(response => {
13-
const resolvedSchemas = Object.values(response.content ?? {}).map(content => {
13+
return Object.values(response.content ?? {}).map(content => {
1414
return simplifySchema(resolveSchema(content.schema));
15-
});
16-
return filterGenericSchemas(resolvedSchemas).flat();
15+
}).flat();
1716
}).flat();
1817
}
1918

@@ -22,7 +21,8 @@ export function resolveSchemas(paths: OpenAPI["paths"]) {
2221
...resolveRequestSchemas(operation.requestBody),
2322
...resolveResponseSchemas(operation.responses),
2423
])).flat();
25-
return Array.from(new Set(collection)).toSorted();
24+
const uniqueCollection = Array.from(new Set(collection));
25+
return filterGenericSchemas(uniqueCollection).toSorted();
2626
}
2727

2828
function resolvePropDefinition(definition: SchemaDefinition) {
@@ -43,6 +43,6 @@ function resolvePropDefinition(definition: SchemaDefinition) {
4343

4444
export function resolveSchemasFromProps(props: Record<string, SchemaDefinition>) {
4545
const collection = Object.values(props).map(resolvePropDefinition).flat();
46-
collection.sort();
47-
return Array.from(new Set(filterGenericSchemas(collection)));
46+
const uniqueCollection = Array.from(new Set(collection));
47+
return filterGenericSchemas(uniqueCollection).toSorted();
4848
}

src/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import generateDeclaration from "./core/renderers/declaration";
99
import generateDocumentation from "./core/renderers/documentation";
1010
import generateInterface from "./core/renderers/interface";
1111
import generateSchema from "./core/renderers/schema";
12-
import { resolveSchemas, resolveSchemasFromProps } from "./core/resolvers/imported-schema";
12+
import { resolveSchemasFromProps } from "./core/resolvers/imported-schema";
1313
import resolveOperations from "./core/resolvers/operation";
1414
import resolveProperties from "./core/resolvers/property";
1515
import generateSwaggerJson from "./core/swagger";
@@ -38,13 +38,12 @@ import generateSwaggerJson from "./core/swagger";
3838
const serviceName = capitalize(appName.replace(/-/g, " "));
3939
const envName = `${appName.replace(/-/g, "_").toUpperCase()}_BASE_URL`;
4040

41-
const schemas = resolveSchemas(data.paths);
4241
const resolvedPaths = resolveOperations(data.paths);
4342

4443
const content = generateInterface(envName, resolvedPaths);
4544
await createFile(content, "index.js", outputDir);
4645

47-
const declaration = generateDeclaration(schemas, data.paths);
46+
const declaration = generateDeclaration(data.paths);
4847
await createFile(declaration, "index.d.ts", outputDir);
4948

5049
const doc = generateDocumentation(serviceName, packageName, envName, data.paths);

0 commit comments

Comments
 (0)