From 05ba562a10972d5bdeac31ca9a9ed31cfdd70d39 Mon Sep 17 00:00:00 2001 From: Neil MacMunn Date: Thu, 16 May 2024 10:24:48 -0400 Subject: [PATCH] fix: enums containing negative numbers --- packages/openapi-typescript/src/lib/ts.ts | 9 ++++++++- .../test/transform/schema-object/number.test.ts | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/openapi-typescript/src/lib/ts.ts b/packages/openapi-typescript/src/lib/ts.ts index 812cfd4a4..1c1090b4c 100644 --- a/packages/openapi-typescript/src/lib/ts.ts +++ b/packages/openapi-typescript/src/lib/ts.ts @@ -294,7 +294,14 @@ export function tsLiteral(value: unknown): ts.TypeNode { return ts.factory.createIdentifier(JSON.stringify(value)) as unknown as ts.TypeNode; } if (typeof value === "number") { - return ts.factory.createLiteralTypeNode(ts.factory.createNumericLiteral(value)); + const literal = + value < 0 + ? ts.factory.createPrefixUnaryExpression( + ts.SyntaxKind.MinusToken, + ts.factory.createNumericLiteral(Math.abs(value)), + ) + : ts.factory.createNumericLiteral(value); + return ts.factory.createLiteralTypeNode(literal); } if (typeof value === "boolean") { return value === true ? TRUE : FALSE; diff --git a/packages/openapi-typescript/test/transform/schema-object/number.test.ts b/packages/openapi-typescript/test/transform/schema-object/number.test.ts index 69cb66b81..beee93fdc 100644 --- a/packages/openapi-typescript/test/transform/schema-object/number.test.ts +++ b/packages/openapi-typescript/test/transform/schema-object/number.test.ts @@ -21,8 +21,8 @@ describe("transformSchemaObject > number", () => { [ "enum", { - given: { type: "number", enum: [50, 100, 200] }, - want: "50 | 100 | 200", + given: { type: "number", enum: [-50, 50, 100, 200] }, + want: "-50 | 50 | 100 | 200", // options: DEFAULT_OPTIONS, }, ],