diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/config.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/config.ts index 9304515911..53d353a1d7 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/config.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/config.ts @@ -44,10 +44,12 @@ export const defaultConfig: HeyApiTypeScriptPlugin['Config'] = { plugin.config.errors = context.valueToObject({ defaultValue: { case: plugin.config.case ?? 'PascalCase', + enabled: true, error: '{{name}}Error', name: '{{name}}Errors', }, mappers: { + boolean: (enabled) => ({ enabled }), function: (name) => ({ name }), string: (name) => ({ name }), }, @@ -57,9 +59,11 @@ export const defaultConfig: HeyApiTypeScriptPlugin['Config'] = { plugin.config.requests = context.valueToObject({ defaultValue: { case: plugin.config.case ?? 'PascalCase', + enabled: true, name: '{{name}}Data', }, mappers: { + boolean: (enabled) => ({ enabled }), function: (name) => ({ name }), string: (name) => ({ name }), }, @@ -69,10 +73,12 @@ export const defaultConfig: HeyApiTypeScriptPlugin['Config'] = { plugin.config.responses = context.valueToObject({ defaultValue: { case: plugin.config.case ?? 'PascalCase', + enabled: true, name: '{{name}}Responses', response: '{{name}}Response', }, mappers: { + boolean: (enabled) => ({ enabled }), function: (name) => ({ name }), string: (name) => ({ name }), }, diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts index afef704b0d..1e0cb66c99 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/operation.ts @@ -115,32 +115,34 @@ export const operationToType = ({ schema: data, }); - const dataSymbol = plugin.registerSymbol( - buildSymbolIn({ - meta: { - category: 'type', - path, - resource: 'operation', - resourceId: operation.id, - role: 'data', - tags, - tool: 'typescript', - }, - name: operation.id, - naming: plugin.config.requests, - operation, - plugin, - }), - ); - const dataNode = $.type - .alias(dataSymbol) - .export() - .type(dataResult?.type ?? $.type('never')); - plugin.node(dataNode); + if (plugin.config.requests.enabled) { + const dataSymbol = plugin.registerSymbol( + buildSymbolIn({ + meta: { + category: 'type', + path, + resource: 'operation', + resourceId: operation.id, + role: 'data', + tags, + tool: 'typescript', + }, + name: operation.id, + naming: plugin.config.requests, + operation, + plugin, + }), + ); + const dataNode = $.type + .alias(dataSymbol) + .export() + .type(dataResult?.type ?? $.type('never')); + plugin.node(dataNode); + } const { error, errors, response, responses } = operationResponsesMap(operation); - if (errors) { + if (plugin.config.errors.enabled && errors) { const errorsResult = processor.process({ export: false, meta: { @@ -205,7 +207,7 @@ export const operationToType = ({ } } - if (responses) { + if (plugin.config.responses.enabled && responses) { const responsesResult = processor.process({ export: false, meta: { diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/types.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/types.ts index 4a8e75b5ef..63ded3405e 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/types.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/types.ts @@ -112,6 +112,12 @@ export type UserConfig = Plugin.Name<'@hey-api/typescript'> & * @default 'PascalCase' */ case?: Casing; + /** + * Whether this feature is enabled. + * + * @default true + */ + enabled?: boolean; /** * Naming pattern for generated names. * @@ -146,6 +152,12 @@ export type UserConfig = Plugin.Name<'@hey-api/typescript'> & * @default 'PascalCase' */ case?: Casing; + /** + * Whether this feature is enabled. + * + * @default true + */ + enabled?: boolean; /** * Naming pattern for generated names. * @@ -173,6 +185,12 @@ export type UserConfig = Plugin.Name<'@hey-api/typescript'> & * @default 'PascalCase' */ case?: Casing; + /** + * Whether this feature is enabled. + * + * @default true + */ + enabled?: boolean; /** * Naming pattern for generated names. * @@ -290,30 +308,32 @@ export type Config = Plugin.Name<'@hey-api/typescript'> & * - `string` or `function`: Shorthand for `{ name: string | function }` * - `object`: Full configuration object */ - errors: NamingOptions & { - /** - * Naming pattern for generated names. - */ - error: NameTransformer; - }; + errors: FeatureToggle & + NamingOptions & { + /** + * Naming pattern for generated names. + */ + error: NameTransformer; + }; /** * Configuration for request-specific types. * * Controls generation of types for request bodies, query parameters, path * parameters, and headers. */ - requests: NamingOptions; + requests: FeatureToggle & NamingOptions; /** * Configuration for response-specific types. * * Controls generation of types for response bodies and status codes. */ - responses: NamingOptions & { - /** - * Naming pattern for generated names. - */ - response: NameTransformer; - }; + responses: FeatureToggle & + NamingOptions & { + /** + * Naming pattern for generated names. + */ + response: NameTransformer; + }; /** * The top type to use for untyped or unspecified schema values. *