Skip to content

Commit 2bfc2d0

Browse files
authored
Merge pull request #3540 from hey-api/fix/plugin-infer-warn
fix: show warning when plugin infer fails
2 parents fe5bfba + 0512650 commit 2bfc2d0

4 files changed

Lines changed: 45 additions & 11 deletions

File tree

.changeset/fluffy-facts-film.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@hey-api/codegen-core": patch
3+
---
4+
5+
**log**: make group optional in warn method

.changeset/soft-cars-cover.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@hey-api/openapi-ts": patch
3+
---
4+
5+
**config(plugins)**: show warning when plugin infer fails

packages/codegen-core/src/log.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ function debug(message: string, group: keyof typeof DebugGroups) {
5555
console.debug(`${prefix} ${message}`);
5656
}
5757

58-
function warn(message: string, group: keyof typeof WarnGroups) {
58+
function warn(message: string, group?: keyof typeof WarnGroups) {
5959
if (NO_WARNINGS) return;
6060

61-
const color = WarnGroups[group] ?? colors.yellowBright;
61+
const color = group ? WarnGroups[group] : colors.yellowBright;
6262

6363
console.warn(color(`${message}`));
6464
}

packages/openapi-ts/src/plugins/@hey-api/sdk/config.ts

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1+
import { log } from '@hey-api/codegen-core';
12
import { definePluginConfig } from '@hey-api/shared';
23

34
import { resolveExamples } from './examples';
45
import { resolveOperations } from './operations';
56
import { handler } from './plugin';
67
import type { HeyApiSdkPlugin } from './types';
78

9+
const transformerInferWarn =
10+
'You set `transformer: true` but no transformer plugin was found in your plugins. Add a transformer plugin like `@hey-api/transformers` to enable this feature. The transformer option has been disabled.';
11+
const validatorInferWarn =
12+
'You set `validator: true` but no validator plugin was found in your plugins. Add a validator plugin like `zod` to enable this feature. The validator option has been disabled.';
13+
814
export const defaultConfig: HeyApiSdkPlugin['Config'] = {
915
config: {
1016
auth: true,
@@ -38,10 +44,16 @@ export const defaultConfig: HeyApiSdkPlugin['Config'] = {
3844

3945
if (plugin.config.transformer) {
4046
if (typeof plugin.config.transformer === 'boolean') {
41-
plugin.config.transformer = context.pluginByTag('transformer');
47+
try {
48+
plugin.config.transformer = context.pluginByTag('transformer');
49+
plugin.dependencies.add(plugin.config.transformer!);
50+
} catch {
51+
log.warn(transformerInferWarn);
52+
plugin.config.transformer = false;
53+
}
54+
} else {
55+
plugin.dependencies.add(plugin.config.transformer);
4256
}
43-
44-
plugin.dependencies.add(plugin.config.transformer!);
4557
} else {
4658
plugin.config.transformer = false;
4759
}
@@ -55,20 +67,32 @@ export const defaultConfig: HeyApiSdkPlugin['Config'] = {
5567

5668
if (plugin.config.validator.request) {
5769
if (typeof plugin.config.validator.request === 'boolean') {
58-
plugin.config.validator.request = context.pluginByTag('validator');
70+
try {
71+
plugin.config.validator.request = context.pluginByTag('validator');
72+
plugin.dependencies.add(plugin.config.validator.request!);
73+
} catch {
74+
log.warn(validatorInferWarn);
75+
plugin.config.validator.request = false;
76+
}
77+
} else {
78+
plugin.dependencies.add(plugin.config.validator.request);
5979
}
60-
61-
plugin.dependencies.add(plugin.config.validator.request!);
6280
} else {
6381
plugin.config.validator.request = false;
6482
}
6583

6684
if (plugin.config.validator.response) {
6785
if (typeof plugin.config.validator.response === 'boolean') {
68-
plugin.config.validator.response = context.pluginByTag('validator');
86+
try {
87+
plugin.config.validator.response = context.pluginByTag('validator');
88+
plugin.dependencies.add(plugin.config.validator.response!);
89+
} catch {
90+
log.warn(validatorInferWarn);
91+
plugin.config.validator.response = false;
92+
}
93+
} else {
94+
plugin.dependencies.add(plugin.config.validator.response);
6995
}
70-
71-
plugin.dependencies.add(plugin.config.validator.response!);
7296
} else {
7397
plugin.config.validator.response = false;
7498
}

0 commit comments

Comments
 (0)