Skip to content
This repository was archived by the owner on Sep 27, 2024. It is now read-only.

Commit 988118c

Browse files
committed
add enums
1 parent b8f4c12 commit 988118c

File tree

6 files changed

+17
-6
lines changed

6 files changed

+17
-6
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@omer-x/ts-openapi-interface-generator",
3-
"version": "0.1.1",
3+
"version": "0.1.2",
44
"description": "OpenAPI interface generator for TypeScript",
55
"keywords": [
66
"typescript",

src/core/imported-schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function resolveSchemas(paths: Record<string, Record<HttpMethod, ApiPath>
2424
];
2525
}).flat();
2626
}).flat();
27-
return Array.from(new Set(collection));
27+
return Array.from(new Set(collection)).toSorted();
2828
}
2929

3030
function resolvePropDefinition(definition: SchemaDefinition) {

src/core/openapi.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export type SchemaDefinition = {
1212
$ref?: string,
1313
items?: SchemaDefinition | SchemaDefinition[],
1414
oneOf?: SchemaDefinition[],
15+
enum?: (string | null)[],
1516
};
1617

1718
export type PathParameter = {

src/core/schema-definition.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,21 @@ function resolveArray(items: SchemaDefinition[], isArray: boolean) {
66
return isArray ? `(${names})[]` : names;
77
}
88

9+
function resolveEnumItem(item: string | null) {
10+
if (item === null) return "null";
11+
return `"${item}"`;
12+
}
13+
914
export function resolveSchema(definition: SchemaDefinition): string {
1015
// TODO: handle definition.format === "date"
1116
if (definition.type) {
1217
switch (definition.type) {
13-
case "string": return "string";
18+
case "string": {
19+
if (definition.enum) {
20+
return definition.enum.map(resolveEnumItem).join(" | ");
21+
}
22+
return "string";
23+
}
1424
case "number": return "number";
1525
case "array": {
1626
if (definition.items) {

src/templates/schema.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ type {{name}} = {
77
/**
88
* {{{this.description}}}
99
*/
10-
{{this.content}}
10+
{{{this.content}}}
1111
{{/each}}
1212
};
1313

0 commit comments

Comments
 (0)