From 7b3c8f20a70115b7130807eb39410c0ba03c5275 Mon Sep 17 00:00:00 2001 From: Lubos Date: Thu, 5 Feb 2026 15:24:27 +0800 Subject: [PATCH] feat: add comments option to all plugins --- .changeset/itchy-walls-type.md | 5 +++++ .../src/plugins/@hey-api/sdk/config.ts | 1 + .../src/plugins/@hey-api/sdk/types.ts | 2 ++ .../src/plugins/@hey-api/sdk/v1/node.ts | 8 ++++++-- .../src/plugins/@angular/common/config.ts | 1 + .../plugins/@angular/common/shared/node.ts | 13 +++++++++---- .../src/plugins/@angular/common/types.ts | 2 ++ .../src/plugins/@hey-api/sdk/config.ts | 1 + .../src/plugins/@hey-api/sdk/types.ts | 2 ++ .../src/plugins/@hey-api/sdk/v1/node.ts | 10 +++++++--- .../src/plugins/@hey-api/typescript/config.ts | 1 + .../@hey-api/typescript/shared/export.ts | 12 ++++++------ .../@hey-api/typescript/shared/webhook.ts | 2 +- .../src/plugins/@hey-api/typescript/types.ts | 2 ++ .../@hey-api/typescript/v1/toAst/object.ts | 2 +- .../src/plugins/@pinia/colada/types.ts | 19 ++----------------- .../angular-query-experimental/types.ts | 19 ++----------------- .../plugins/@tanstack/react-query/types.ts | 19 ++----------------- .../plugins/@tanstack/solid-query/types.ts | 19 ++----------------- .../plugins/@tanstack/svelte-query/types.ts | 19 ++----------------- .../src/plugins/@tanstack/vue-query/types.ts | 19 ++----------------- .../openapi-ts/src/plugins/arktype/types.ts | 14 ++------------ packages/openapi-ts/src/plugins/swr/types.ts | 19 ++----------------- .../openapi-ts/src/plugins/valibot/types.ts | 14 ++------------ packages/openapi-ts/src/plugins/zod/types.ts | 14 ++------------ packages/shared/src/config/shared.ts | 15 +++++++++++++++ packages/shared/src/index.ts | 2 ++ packages/shared/src/plugins/types.ts | 10 +++++++++- 28 files changed, 93 insertions(+), 173 deletions(-) create mode 100644 .changeset/itchy-walls-type.md diff --git a/.changeset/itchy-walls-type.md b/.changeset/itchy-walls-type.md new file mode 100644 index 000000000..162d764d0 --- /dev/null +++ b/.changeset/itchy-walls-type.md @@ -0,0 +1,5 @@ +--- +"@hey-api/openapi-ts": patch +--- + +**plugin**: add `comments` option to all plugins diff --git a/packages/openapi-python/src/plugins/@hey-api/sdk/config.ts b/packages/openapi-python/src/plugins/@hey-api/sdk/config.ts index a88c14669..e05aba579 100644 --- a/packages/openapi-python/src/plugins/@hey-api/sdk/config.ts +++ b/packages/openapi-python/src/plugins/@hey-api/sdk/config.ts @@ -8,6 +8,7 @@ export const defaultConfig: HeyApiSdkPlugin['Config'] = { config: { // auth: true, client: true, + comments: true, includeInEntry: true, paramsStructure: 'grouped', // responseStyle: 'fields', diff --git a/packages/openapi-python/src/plugins/@hey-api/sdk/types.ts b/packages/openapi-python/src/plugins/@hey-api/sdk/types.ts index 4eb9b25f3..ff492a2c7 100644 --- a/packages/openapi-python/src/plugins/@hey-api/sdk/types.ts +++ b/packages/openapi-python/src/plugins/@hey-api/sdk/types.ts @@ -7,6 +7,7 @@ import type { OperationsConfig, UserOperationsConfig } from './operations'; export type UserConfig = Plugin.Name<'@hey-api/python-sdk'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Should the generated functions contain auth mechanisms? You may want to @@ -127,6 +128,7 @@ export type UserConfig = Plugin.Name<'@hey-api/python-sdk'> & export type Config = Plugin.Name<'@hey-api/python-sdk'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Should the generated functions contain auth mechanisms? You may want to diff --git a/packages/openapi-python/src/plugins/@hey-api/sdk/v1/node.ts b/packages/openapi-python/src/plugins/@hey-api/sdk/v1/node.ts index 904f5b9ca..0aea28177 100644 --- a/packages/openapi-python/src/plugins/@hey-api/sdk/v1/node.ts +++ b/packages/openapi-python/src/plugins/@hey-api/sdk/v1/node.ts @@ -23,9 +23,12 @@ export const source = globalThis.Symbol('@hey-api/python-sdk'); function attachComment>(args: { node: T; operation: IR.OperationObject; + plugin: HeyApiSdkPlugin['Instance']; }): T { - const { node, operation } = args; - return node.$if(createOperationComment(operation), (n, v) => n.doc(v)) as T; + const { node, operation, plugin } = args; + return node.$if(plugin.config.comments && createOperationComment(operation), (n, v) => + n.doc(v), + ) as T; } function createShellMeta(node: StructureNode): SymbolMeta { @@ -174,6 +177,7 @@ export function toNode( attachComment({ node: m, operation, + plugin, }), ), operation, diff --git a/packages/openapi-ts/src/plugins/@angular/common/config.ts b/packages/openapi-ts/src/plugins/@angular/common/config.ts index 9eba7b791..2244d1992 100644 --- a/packages/openapi-ts/src/plugins/@angular/common/config.ts +++ b/packages/openapi-ts/src/plugins/@angular/common/config.ts @@ -7,6 +7,7 @@ import type { AngularCommonPlugin } from './types'; export const defaultConfig: AngularCommonPlugin['Config'] = { config: { + comments: true, includeInEntry: false, }, dependencies: ['@hey-api/client-angular', '@hey-api/sdk'], diff --git a/packages/openapi-ts/src/plugins/@angular/common/shared/node.ts b/packages/openapi-ts/src/plugins/@angular/common/shared/node.ts index e40865ae1..e2c902c0f 100644 --- a/packages/openapi-ts/src/plugins/@angular/common/shared/node.ts +++ b/packages/openapi-ts/src/plugins/@angular/common/shared/node.ts @@ -26,9 +26,12 @@ export const source = globalThis.Symbol('@angular/common'); function attachComment>(args: { node: T; operation: IR.OperationObject; + plugin: AngularCommonPlugin['Instance']; }): T { - const { node, operation } = args; - return node.$if(createOperationComment(operation), (n, v) => n.doc(v)) as T; + const { node, operation, plugin } = args; + return node.$if(plugin.config.comments && createOperationComment(operation), (n, v) => + n.doc(v), + ) as T; } function createHttpRequestFnMeta(operation: IR.OperationObject): SymbolMeta { @@ -344,7 +347,7 @@ export function toHttpRequestNode( plugin, }), ); - node = attachComment({ node, operation }); + node = attachComment({ node, operation, plugin }); nodes.push(node); } return { nodes }; @@ -369,6 +372,7 @@ export function toHttpRequestNode( attachComment({ node: m, operation, + plugin, }).public(), ), operation, @@ -411,7 +415,7 @@ export function toHttpResourceNode( plugin, }), ); - node = attachComment({ node, operation }); + node = attachComment({ node, operation, plugin }); nodes.push(node); } return { nodes }; @@ -436,6 +440,7 @@ export function toHttpResourceNode( attachComment({ node: m, operation, + plugin, }).public(), ), operation, diff --git a/packages/openapi-ts/src/plugins/@angular/common/types.ts b/packages/openapi-ts/src/plugins/@angular/common/types.ts index 73c16956e..3e9375e33 100644 --- a/packages/openapi-ts/src/plugins/@angular/common/types.ts +++ b/packages/openapi-ts/src/plugins/@angular/common/types.ts @@ -5,6 +5,7 @@ import type { HttpResourcesConfig, UserHttpResourcesConfig } from './httpResourc export type UserConfig = Plugin.Name<'@angular/common'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Options for generating HTTP Request instances. @@ -22,6 +23,7 @@ export type UserConfig = Plugin.Name<'@angular/common'> & export type Config = Plugin.Name<'@angular/common'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Options for generating HTTP Request instances. diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/config.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/config.ts index 6f9e00250..cfe8ca9ee 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/config.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/config.ts @@ -9,6 +9,7 @@ export const defaultConfig: HeyApiSdkPlugin['Config'] = { config: { auth: true, client: true, + comments: true, includeInEntry: true, paramsStructure: 'grouped', responseStyle: 'fields', diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/types.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/types.ts index e7aee215f..67711a93c 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/types.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/types.ts @@ -10,6 +10,7 @@ import type { OperationsConfig, UserOperationsConfig } from './operations'; export type UserConfig = Plugin.Name<'@hey-api/sdk'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Should the generated functions contain auth mechanisms? You may want to @@ -196,6 +197,7 @@ export type UserConfig = Plugin.Name<'@hey-api/sdk'> & export type Config = Plugin.Name<'@hey-api/sdk'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Should the generated functions contain auth mechanisms? You may want to diff --git a/packages/openapi-ts/src/plugins/@hey-api/sdk/v1/node.ts b/packages/openapi-ts/src/plugins/@hey-api/sdk/v1/node.ts index 2a41b713c..b1fff5436 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/sdk/v1/node.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/sdk/v1/node.ts @@ -38,9 +38,12 @@ export function isInstance(plugin: HeyApiSdkPlugin['Instance']): boolean { function attachComment>(args: { node: T; operation: IR.OperationObject; + plugin: HeyApiSdkPlugin['Instance']; }): T { - const { node, operation } = args; - return node.$if(createOperationComment(operation), (n, v) => n.doc(v)) as T; + const { node, operation, plugin } = args; + return node.$if(plugin.config.comments && createOperationComment(operation), (n, v) => + n.doc(v), + ) as T; } function createShellMeta(node: StructureNode): SymbolMeta { @@ -327,7 +330,7 @@ export function toNode( plugin, }), ); - node = attachComment({ node, operation }); + node = attachComment({ node, operation, plugin }); nodes.push(node); exampleIntent(node, operation, plugin); } @@ -358,6 +361,7 @@ export function toNode( attachComment({ node: m, operation, + plugin, }) .public() .static(!isAngularClient && !isInstance(plugin)), 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 b4f2473e6..930451591 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/config.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/config.ts @@ -8,6 +8,7 @@ export const defaultConfig: HeyApiTypeScriptPlugin['Config'] = { api: new Api(), config: { case: 'PascalCase', + comments: true, includeInEntry: true, topType: 'unknown', }, diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts index f97522c8a..1bb737464 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/export.ts @@ -104,12 +104,12 @@ export const exportType = ({ }); const objectNode = $.const(symbolObject) .export() - .$if(createSchemaComment(schema), (c, v) => c.doc(v)) + .$if(plugin.config.comments && createSchemaComment(schema), (c, v) => c.doc(v)) .assign( $.object( ...enumObject.obj.map((item) => $.prop({ kind: 'prop', name: item.key }) - .$if(createSchemaComment(item.schema), (p, v) => p.doc(v)) + .$if(plugin.config.comments && createSchemaComment(item.schema), (p, v) => p.doc(v)) .value($.fromValue(item.schema.const)), ), ).as('const'), @@ -129,7 +129,7 @@ export const exportType = ({ const node = $.type .alias(symbol) .export() - .$if(createSchemaComment(schema), (t, v) => t.doc(v)) + .$if(plugin.config.comments && createSchemaComment(schema), (t, v) => t.doc(v)) .type($.type(symbol).idx($.type(symbol).typeofType().keyof()).typeofType()); plugin.node(node); return; @@ -154,12 +154,12 @@ export const exportType = ({ }); const enumNode = $.enum(symbol) .export() - .$if(createSchemaComment(schema), (e, v) => e.doc(v)) + .$if(plugin.config.comments && createSchemaComment(schema), (e, v) => e.doc(v)) .const(plugin.config.enums.mode === 'typescript-const') .members( ...enumObject.obj.map((item) => $.member(item.key) - .$if(createSchemaComment(item.schema), (m, v) => m.doc(v)) + .$if(plugin.config.comments && createSchemaComment(item.schema), (m, v) => m.doc(v)) .value($.fromValue(item.schema.const)), ), ); @@ -182,7 +182,7 @@ export const exportType = ({ const node = $.type .alias(symbol) .export() - .$if(createSchemaComment(schema), (t, v) => t.doc(v)) + .$if(plugin.config.comments && createSchemaComment(schema), (t, v) => t.doc(v)) .type(type); plugin.node(node); }; diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts index 56fa60480..d04cae644 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/shared/webhook.ts @@ -45,7 +45,7 @@ const operationToDataType = ({ const node = $.type .alias(symbolWebhookPayload) .export() - .$if(createSchemaComment(operation.body.schema), (t, v) => t.doc(v)) + .$if(plugin.config.comments && createSchemaComment(operation.body.schema), (t, v) => t.doc(v)) .type( irSchemaToAst({ plugin, 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 ab0c9effa..745c69bc0 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/types.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/types.ts @@ -7,6 +7,7 @@ export type EnumsType = 'javascript' | 'typescript' | 'typescript-const'; export type UserConfig = Plugin.Name<'@hey-api/typescript'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -230,6 +231,7 @@ export type UserConfig = Plugin.Name<'@hey-api/typescript'> & export type Config = Plugin.Name<'@hey-api/typescript'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. diff --git a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/object.ts b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/object.ts index c158e1d07..c06359350 100644 --- a/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/object.ts +++ b/packages/openapi-ts/src/plugins/@hey-api/typescript/v1/toAst/object.ts @@ -34,7 +34,7 @@ export const objectToAst = ({ const isRequired = required.includes(name); shape.prop(name, (p) => p - .$if(createSchemaComment(property), (p, v) => p.doc(v)) + .$if(plugin.config.comments && createSchemaComment(property), (p, v) => p.doc(v)) .readonly(property.accessScope === 'read') .required(isRequired) .type(propertyType), diff --git a/packages/openapi-ts/src/plugins/@pinia/colada/types.ts b/packages/openapi-ts/src/plugins/@pinia/colada/types.ts index 27df269d3..fa1b1c18d 100644 --- a/packages/openapi-ts/src/plugins/@pinia/colada/types.ts +++ b/packages/openapi-ts/src/plugins/@pinia/colada/types.ts @@ -4,6 +4,7 @@ import type { DefinePlugin, Plugin } from '@hey-api/shared'; export type UserConfig = Plugin.Name<'@pinia/colada'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -11,17 +12,6 @@ export type UserConfig = Plugin.Name<'@pinia/colada'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from SDK functions to the generated Pinia Colada code? - * - * Duplicating comments this way is useful so you don't need to drill into - * the underlying SDK function to learn what it does or whether it's - * deprecated. You can set this option to `false` if you prefer less - * comment duplication. - * - * @default true - */ - comments?: boolean; /** * Configuration for generated mutation options helpers. * @@ -184,17 +174,12 @@ export type UserConfig = Plugin.Name<'@pinia/colada'> & export type Config = Plugin.Name<'@pinia/colada'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from SDK functions to the generated Pinia Colada code? - * - * @default true - */ - comments: boolean; /** * Resolved configuration for generated mutation options helpers. */ diff --git a/packages/openapi-ts/src/plugins/@tanstack/angular-query-experimental/types.ts b/packages/openapi-ts/src/plugins/@tanstack/angular-query-experimental/types.ts index f529c20d0..88626abbc 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/angular-query-experimental/types.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/angular-query-experimental/types.ts @@ -4,6 +4,7 @@ import type { DefinePlugin, Plugin } from '@hey-api/shared'; export type UserConfig = Plugin.Name<'@tanstack/angular-query-experimental'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -11,17 +12,6 @@ export type UserConfig = Plugin.Name<'@tanstack/angular-query-experimental'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * Duplicating comments this way is useful so you don't need to drill into - * the underlying SDK function to learn what it does or whether it's - * deprecated. You can set this option to `false` if you prefer less - * comment duplication. - * - * @default true - */ - comments?: boolean; /** * Configuration for generated infinite query key helpers. * @@ -292,17 +282,12 @@ export type UserConfig = Plugin.Name<'@tanstack/angular-query-experimental'> & export type Config = Plugin.Name<'@tanstack/angular-query-experimental'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * @default true - */ - comments: boolean; /** * Resolved configuration for generated infinite query key helpers. * diff --git a/packages/openapi-ts/src/plugins/@tanstack/react-query/types.ts b/packages/openapi-ts/src/plugins/@tanstack/react-query/types.ts index fe254908e..092e19ddc 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/react-query/types.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/react-query/types.ts @@ -4,6 +4,7 @@ import type { DefinePlugin, Plugin } from '@hey-api/shared'; export type UserConfig = Plugin.Name<'@tanstack/react-query'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -11,17 +12,6 @@ export type UserConfig = Plugin.Name<'@tanstack/react-query'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * Duplicating comments this way is useful so you don't need to drill into - * the underlying SDK function to learn what it does or whether it's - * deprecated. You can set this option to `false` if you prefer less - * comment duplication. - * - * @default true - */ - comments?: boolean; /** * Configuration for generated infinite query key helpers. * @@ -337,17 +327,12 @@ export type UserConfig = Plugin.Name<'@tanstack/react-query'> & export type Config = Plugin.Name<'@tanstack/react-query'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * @default true - */ - comments: boolean; /** * Resolved configuration for generated infinite query key helpers. * diff --git a/packages/openapi-ts/src/plugins/@tanstack/solid-query/types.ts b/packages/openapi-ts/src/plugins/@tanstack/solid-query/types.ts index 29e15d40b..8b53bc9aa 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/solid-query/types.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/solid-query/types.ts @@ -10,6 +10,7 @@ import type { export type UserConfig = Plugin.Name<'@tanstack/solid-query'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -17,17 +18,6 @@ export type UserConfig = Plugin.Name<'@tanstack/solid-query'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * Duplicating comments this way is useful so you don't need to drill into - * the underlying SDK function to learn what it does or whether it's - * deprecated. You can set this option to `false` if you prefer less - * comment duplication. - * - * @default true - */ - comments?: boolean; /** * Configuration for generated infinite query key helpers. * @@ -299,17 +289,12 @@ export type UserConfig = Plugin.Name<'@tanstack/solid-query'> & export type Config = Plugin.Name<'@tanstack/solid-query'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * @default true - */ - comments: boolean; /** * Resolved configuration for generated infinite query key helpers. * diff --git a/packages/openapi-ts/src/plugins/@tanstack/svelte-query/types.ts b/packages/openapi-ts/src/plugins/@tanstack/svelte-query/types.ts index 1268b2eb7..a6a349f4f 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/svelte-query/types.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/svelte-query/types.ts @@ -10,6 +10,7 @@ import type { export type UserConfig = Plugin.Name<'@tanstack/svelte-query'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -17,17 +18,6 @@ export type UserConfig = Plugin.Name<'@tanstack/svelte-query'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * Duplicating comments this way is useful so you don't need to drill into - * the underlying SDK function to learn what it does or whether it's - * deprecated. You can set this option to `false` if you prefer less - * comment duplication. - * - * @default true - */ - comments?: boolean; /** * Configuration for generated infinite query key helpers. * @@ -298,17 +288,12 @@ export type UserConfig = Plugin.Name<'@tanstack/svelte-query'> & export type Config = Plugin.Name<'@tanstack/svelte-query'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * @default true - */ - comments: boolean; /** * Resolved configuration for generated infinite query key helpers. * diff --git a/packages/openapi-ts/src/plugins/@tanstack/vue-query/types.ts b/packages/openapi-ts/src/plugins/@tanstack/vue-query/types.ts index 8a3871dbd..72e226a5e 100644 --- a/packages/openapi-ts/src/plugins/@tanstack/vue-query/types.ts +++ b/packages/openapi-ts/src/plugins/@tanstack/vue-query/types.ts @@ -10,6 +10,7 @@ import type { export type UserConfig = Plugin.Name<'@tanstack/vue-query'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -17,17 +18,6 @@ export type UserConfig = Plugin.Name<'@tanstack/vue-query'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * Duplicating comments this way is useful so you don't need to drill into - * the underlying SDK function to learn what it does or whether it's - * deprecated. You can set this option to `false` if you prefer less - * comment duplication. - * - * @default true - */ - comments?: boolean; /** * Configuration for generated infinite query key helpers. * @@ -301,17 +291,12 @@ export type UserConfig = Plugin.Name<'@tanstack/vue-query'> & export type Config = Plugin.Name<'@tanstack/vue-query'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from SDK functions to the generated TanStack Query code? - * - * @default true - */ - comments: boolean; /** * Resolved configuration for generated infinite query key helpers. * diff --git a/packages/openapi-ts/src/plugins/arktype/types.ts b/packages/openapi-ts/src/plugins/arktype/types.ts index f0cfcfcc8..4c3890cd3 100644 --- a/packages/openapi-ts/src/plugins/arktype/types.ts +++ b/packages/openapi-ts/src/plugins/arktype/types.ts @@ -11,6 +11,7 @@ import type { IApi } from './api'; export type UserConfig = Plugin.Name<'arktype'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -18,12 +19,6 @@ export type UserConfig = Plugin.Name<'arktype'> & * @default 'PascalCase' */ case?: Casing; - /** - * Add comments from input to the generated Arktype schemas? - * - * @default true - */ - comments?: boolean; /** * Configuration for reusable schema definitions. * @@ -371,17 +366,12 @@ export type UserConfig = Plugin.Name<'arktype'> & export type Config = Plugin.Name<'arktype'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from input to the generated Arktype schemas? - * - * @default true - */ - comments: boolean; /** * Configuration for reusable schema definitions. * diff --git a/packages/openapi-ts/src/plugins/swr/types.ts b/packages/openapi-ts/src/plugins/swr/types.ts index f47bdb1a1..b61be330f 100644 --- a/packages/openapi-ts/src/plugins/swr/types.ts +++ b/packages/openapi-ts/src/plugins/swr/types.ts @@ -10,6 +10,7 @@ import type { export type UserConfig = Plugin.Name<'swr'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & { /** * Casing convention for generated names. @@ -17,17 +18,6 @@ export type UserConfig = Plugin.Name<'swr'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from SDK functions to the generated SWR code? - * - * Duplicating comments this way is useful so you don't need to drill into - * the underlying SDK function to learn what it does or whether it's - * deprecated. You can set this option to `false` if you prefer less - * comment duplication. - * - * @default true - */ - comments?: boolean; /** * Configuration for generated infinite query key helpers. * @@ -343,17 +333,12 @@ export type UserConfig = Plugin.Name<'swr'> & export type Config = Plugin.Name<'swr'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from SDK functions to the generated SWR code? - * - * @default true - */ - comments: boolean; /** * Resolved configuration for generated infinite query key helpers. * diff --git a/packages/openapi-ts/src/plugins/valibot/types.ts b/packages/openapi-ts/src/plugins/valibot/types.ts index a2308159a..8202fde61 100644 --- a/packages/openapi-ts/src/plugins/valibot/types.ts +++ b/packages/openapi-ts/src/plugins/valibot/types.ts @@ -12,6 +12,7 @@ import type { Resolvers } from './resolvers'; export type UserConfig = Plugin.Name<'valibot'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & Resolvers & { /** @@ -20,12 +21,6 @@ export type UserConfig = Plugin.Name<'valibot'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from input to the generated Valibot schemas? - * - * @default true - */ - comments?: boolean; /** * Configuration for reusable schema definitions. * @@ -175,18 +170,13 @@ export type UserConfig = Plugin.Name<'valibot'> & export type Config = Plugin.Name<'valibot'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & Resolvers & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from input to the generated Valibot schemas? - * - * @default true - */ - comments: boolean; /** * Configuration for reusable schema definitions. * diff --git a/packages/openapi-ts/src/plugins/zod/types.ts b/packages/openapi-ts/src/plugins/zod/types.ts index ede551bf8..7d2ca09b3 100644 --- a/packages/openapi-ts/src/plugins/zod/types.ts +++ b/packages/openapi-ts/src/plugins/zod/types.ts @@ -12,6 +12,7 @@ import type { Resolvers } from './resolvers'; export type UserConfig = Plugin.Name<'zod'> & Plugin.Hooks & + Plugin.UserComments & Plugin.UserExports & Resolvers & { /** @@ -20,12 +21,6 @@ export type UserConfig = Plugin.Name<'zod'> & * @default 'camelCase' */ case?: Casing; - /** - * Add comments from input to the generated Zod schemas? - * - * @default true - */ - comments?: boolean; /** * The compatibility version to target for generated output. * @@ -412,18 +407,13 @@ export type UserConfig = Plugin.Name<'zod'> & export type Config = Plugin.Name<'zod'> & Plugin.Hooks & + Plugin.Comments & Plugin.Exports & Resolvers & { /** * Casing convention for generated names. */ case: Casing; - /** - * Add comments from input to the generated Zod schemas? - * - * @default true - */ - comments: boolean; /** * The compatibility version to target for generated output. * diff --git a/packages/shared/src/config/shared.ts b/packages/shared/src/config/shared.ts index e65eaac5a..3d42a174a 100644 --- a/packages/shared/src/config/shared.ts +++ b/packages/shared/src/config/shared.ts @@ -53,6 +53,21 @@ export type IndexExportOption = { includeInEntry: boolean | ((symbol: Symbol) => boolean); }; +export type UserCommentsOption = { + /** + * Whether to add comments to the generated code. + * + * @default true + */ + comments?: boolean; +}; +export type CommentsOption = { + /** + * Whether to add comments to the generated code. + */ + comments: boolean; +}; + export type NamingOptions = { /** * Casing convention for generated names. diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 0de41e49e..a7c22882e 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -19,9 +19,11 @@ export type { BaseOutput, BaseUserConfig, BaseUserOutput, + CommentsOption, FeatureToggle, IndexExportOption, NamingOptions, + UserCommentsOption, UserIndexExportOption, } from './config/shared'; export type { ValueToObject } from './config/utils/config'; diff --git a/packages/shared/src/plugins/types.ts b/packages/shared/src/plugins/types.ts index 85ba45e1b..79cf9fda4 100644 --- a/packages/shared/src/plugins/types.ts +++ b/packages/shared/src/plugins/types.ts @@ -1,7 +1,12 @@ /* eslint-disable @typescript-eslint/no-namespace */ import type { AnyString } from '@hey-api/types'; -import type { IndexExportOption, UserIndexExportOption } from '../config/shared'; +import type { + CommentsOption, + IndexExportOption, + UserCommentsOption, + UserIndexExportOption, +} from '../config/shared'; import type { ValueToObject } from '../config/utils/config'; import type { Dependency } from '../config/utils/dependencies'; import type { Hooks as ParserHooks } from '../parser/hooks'; @@ -72,6 +77,9 @@ export namespace Plugin { tags?: ReadonlyArray; }; + export type Comments = CommentsOption; + export type UserComments = UserCommentsOption; + export type Exports = IndexExportOption; export type UserExports = UserIndexExportOption; -- 2.51.2