From 74256208082a9d44b133f9f8a1102429fc7c5a7e Mon Sep 17 00:00:00 2001 From: pas-mike Date: Thu, 15 Feb 2024 12:16:16 +0000 Subject: [PATCH] refactor(typegen): moved banner into generateTypesForDocument --- packages/typegen/src/typegen.test.ts | 3 +++ packages/typegen/src/typegen.ts | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/typegen/src/typegen.test.ts b/packages/typegen/src/typegen.test.ts index 7b0b31e..6582dc3 100644 --- a/packages/typegen/src/typegen.test.ts +++ b/packages/typegen/src/typegen.test.ts @@ -4,6 +4,7 @@ import { generateTypesForDocument } from './typegen'; const examplePetAPIYAML = path.join(__dirname, '__tests__', 'resources', 'example-pet-api.openapi.yml'); describe('typegen', () => { + let banner: string; let imports: string; let schemaTypes: string; let operationTypings: string; @@ -11,11 +12,13 @@ describe('typegen', () => { beforeAll(async () => { const types = await generateTypesForDocument(examplePetAPIYAML, { transformOperationName: (operationId: string) => operationId, + banner: '/* eslint-disable */', disableOptionalPathParameters: true, }); imports = types[0]; schemaTypes = types[1]; operationTypings = types[2]; + banner = types[3]; }); test('generates type files from valid v3 specification', async () => { diff --git a/packages/typegen/src/typegen.ts b/packages/typegen/src/typegen.ts index db6b166..43f9ccc 100644 --- a/packages/typegen/src/typegen.ts +++ b/packages/typegen/src/typegen.ts @@ -11,6 +11,7 @@ import { JSONSchema } from '@apidevtools/json-schema-ref-parser/dist/lib/types'; interface TypegenOptions { transformOperationName?: (operation: string) => string; disableOptionalPathParameters?: boolean; + banner?: string; } interface ExportedType { @@ -40,7 +41,7 @@ export async function main() { .option('banner', { alias: 'b', type: 'string', - description: 'Add comment to the generated file e.g. /* eslint-disable */', + description: 'Add banner to generated file', }) .option('disableOptionalPathParameters', { type: 'boolean', @@ -54,6 +55,7 @@ export async function main() { const opts: TypegenOptions = { transformOperationName: (operation: string) => operation, + banner: argv.banner, }; if (argv.transformOperationName) { @@ -74,8 +76,8 @@ export async function main() { opts.disableOptionalPathParameters = argv.disableOptionalPathParameters ?? true; - const [imports, schemaTypes, operationTypings] = await generateTypesForDocument(argv._[0] as string, opts); - console.log(argv.banner ? `${argv.banner}\n` : ''); + const [imports, schemaTypes, operationTypings, banner] = await generateTypesForDocument(argv._[0] as string, opts); + console.log(banner, '\n'); console.log(imports, '\n'); console.log(schemaTypes); console.log(operationTypings); @@ -100,6 +102,8 @@ export async function generateTypesForDocument(definition: Document | string, op await api.init(); const operationTypings = generateOperationMethodTypings(api, exportedTypes, opts); + const banner = opts.banner ?? ''; + const imports = [ 'import type {', ' OpenAPIClient,', @@ -110,7 +114,7 @@ export async function generateTypesForDocument(definition: Document | string, op `} from 'openapi-client-axios';`, ].join('\n'); - return [imports, schemaTypes, operationTypings]; + return [imports, schemaTypes, operationTypings, banner]; } function generateMethodForOperation(