@kubb/plugin-client 5.0.0-beta.15 → 5.0.0-beta.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-client",
3
- "version": "5.0.0-beta.15",
3
+ "version": "5.0.0-beta.22",
4
4
  "description": "Generate type-safe HTTP clients from your OpenAPI specification. Supports Axios, Fetch, and custom client adapters with full TypeScript inference and zero boilerplate.",
5
5
  "keywords": [
6
6
  "api-client",
@@ -87,10 +87,10 @@
87
87
  "registry": "https://registry.npmjs.org/"
88
88
  },
89
89
  "dependencies": {
90
- "@kubb/core": "5.0.0-beta.19",
91
- "@kubb/renderer-jsx": "5.0.0-beta.19",
92
- "@kubb/plugin-ts": "5.0.0-beta.15",
93
- "@kubb/plugin-zod": "5.0.0-beta.15"
90
+ "@kubb/core": "5.0.0-beta.22",
91
+ "@kubb/renderer-jsx": "5.0.0-beta.22",
92
+ "@kubb/plugin-ts": "5.0.0-beta.22",
93
+ "@kubb/plugin-zod": "5.0.0-beta.22"
94
94
  },
95
95
  "devDependencies": {
96
96
  "axios": "^1.16.1",
@@ -98,7 +98,7 @@
98
98
  "@internals/utils": "0.0.0"
99
99
  },
100
100
  "peerDependencies": {
101
- "@kubb/renderer-jsx": "5.0.0-beta.19",
101
+ "@kubb/renderer-jsx": "5.0.0-beta.22",
102
102
  "axios": "^1.7.2"
103
103
  },
104
104
  "peerDependenciesMeta": {
@@ -22,7 +22,7 @@ type Props = {
22
22
  isExportable?: boolean
23
23
  isIndexable?: boolean
24
24
  operations: Array<OperationData>
25
- baseURL: string | undefined
25
+ baseURL: string | null | undefined
26
26
  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']
27
27
  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']
28
28
  paramsType: PluginClient['resolvedOptions']['pathParamsType']
@@ -36,7 +36,7 @@ type GenerateMethodProps = {
36
36
  name: string
37
37
  tsResolver: ResolverTs
38
38
  zodResolver?: ResolverZod
39
- baseURL: string | undefined
39
+ baseURL: string | null | undefined
40
40
  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']
41
41
  parser: PluginClient['resolvedOptions']['parser'] | undefined
42
42
  paramsType: PluginClient['resolvedOptions']['paramsType']
@@ -18,7 +18,7 @@ type Props = {
18
18
  isConfigurable?: boolean
19
19
  returnType?: string
20
20
 
21
- baseURL: string | undefined
21
+ baseURL: string | null | undefined
22
22
  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']
23
23
  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']
24
24
  paramsType: PluginClient['resolvedOptions']['pathParamsType']
@@ -22,7 +22,7 @@ type Props = {
22
22
  isExportable?: boolean
23
23
  isIndexable?: boolean
24
24
  operations: Array<OperationData>
25
- baseURL: string | undefined
25
+ baseURL: string | null | undefined
26
26
  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']
27
27
  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']
28
28
  paramsType: PluginClient['resolvedOptions']['pathParamsType']
@@ -36,7 +36,7 @@ type GenerateMethodProps = {
36
36
  name: string
37
37
  tsResolver: ResolverTs
38
38
  zodResolver?: ResolverZod
39
- baseURL: string | undefined
39
+ baseURL: string | null | undefined
40
40
  dataReturnType: PluginClient['resolvedOptions']['dataReturnType']
41
41
  parser: PluginClient['resolvedOptions']['parser'] | undefined
42
42
  paramsType: PluginClient['resolvedOptions']['paramsType']
@@ -12,7 +12,7 @@ type Props = {
12
12
  isExportable?: boolean
13
13
  isIndexable?: boolean
14
14
 
15
- baseURL: string | undefined
15
+ baseURL: string | null | undefined
16
16
  paramsCasing: PluginClient['resolvedOptions']['paramsCasing']
17
17
  paramsType: PluginClient['resolvedOptions']['pathParamsType']
18
18
  pathParamsType: PluginClient['resolvedOptions']['pathParamsType']
@@ -44,9 +44,9 @@ export const classClientGenerator = defineGenerator<PluginClient>({
44
44
  name: 'classClient',
45
45
  renderer: jsxRendererSync,
46
46
  operations(nodes, ctx) {
47
- const { config, driver, resolver, root, inputNode } = ctx
47
+ const { config, driver, resolver, root } = ctx
48
48
  const { output, group, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath, sdk } = ctx.options
49
- const baseURL = ctx.options.baseURL ?? inputNode.meta?.baseURL
49
+ const baseURL = ctx.options.baseURL ?? ctx.meta.baseURL
50
50
 
51
51
  const pluginTs = driver.getPlugin(pluginTsName)
52
52
  if (!pluginTs) return null
@@ -94,7 +94,10 @@ export const classClientGenerator = defineGenerator<PluginClient>({
94
94
  } else {
95
95
  acc.push({ name, propertyName: resolver.resolveClientPropertyName(name), file, operations: [operationData] })
96
96
  }
97
- } else if (tag) {
97
+ return acc
98
+ }
99
+
100
+ if (tag) {
98
101
  const name = groupName
99
102
  const file = resolver.resolveFile({ name, extname: '.ts', tag }, { root, output, group })
100
103
  const operationData = buildOperationData(operationNode)
@@ -161,8 +164,8 @@ export const classClientGenerator = defineGenerator<PluginClient>({
161
164
  baseName={file.baseName}
162
165
  path={file.path}
163
166
  meta={file.meta}
164
- banner={resolver.resolveBanner(inputNode, { output, config })}
165
- footer={resolver.resolveFooter(inputNode, { output, config })}
167
+ banner={resolver.resolveBanner(ctx.meta, { output, config })}
168
+ footer={resolver.resolveFooter(ctx.meta, { output, config })}
166
169
  >
167
170
  {importPath ? (
168
171
  <>
@@ -220,8 +223,8 @@ export const classClientGenerator = defineGenerator<PluginClient>({
220
223
  baseName={sdkFile.baseName}
221
224
  path={sdkFile.path}
222
225
  meta={sdkFile.meta}
223
- banner={resolver.resolveBanner(inputNode, { output, config })}
224
- footer={resolver.resolveFooter(inputNode, { output, config })}
226
+ banner={resolver.resolveBanner(ctx.meta, { output, config })}
227
+ footer={resolver.resolveFooter(ctx.meta, { output, config })}
225
228
  >
226
229
  {importPath ? (
227
230
  <File.Import name={['Client', 'RequestConfig']} path={importPath} isTypeOnly />
@@ -12,9 +12,9 @@ export const clientGenerator = defineGenerator<PluginClient>({
12
12
  name: 'client',
13
13
  renderer: jsxRendererSync,
14
14
  operation(node, ctx) {
15
- const { config, driver, resolver, root, inputNode } = ctx
15
+ const { config, driver, resolver, root } = ctx
16
16
  const { output, urlType, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath, group } = ctx.options
17
- const baseURL = ctx.options.baseURL ?? inputNode.meta?.baseURL
17
+ const baseURL = ctx.options.baseURL ?? ctx.meta.baseURL
18
18
 
19
19
  const pluginTs = driver.getPlugin(pluginTsName)
20
20
 
@@ -68,8 +68,8 @@ export const clientGenerator = defineGenerator<PluginClient>({
68
68
  baseName={meta.file.baseName}
69
69
  path={meta.file.path}
70
70
  meta={meta.file.meta}
71
- banner={resolver.resolveBanner(inputNode, { output, config })}
72
- footer={resolver.resolveFooter(inputNode, { output, config })}
71
+ banner={resolver.resolveBanner(ctx.meta, { output, config })}
72
+ footer={resolver.resolveFooter(ctx.meta, { output, config })}
73
73
  >
74
74
  {importPath ? (
75
75
  <>
@@ -8,7 +8,7 @@ export const groupedClientGenerator = defineGenerator<PluginClient>({
8
8
  name: 'groupedClient',
9
9
  renderer: jsxRendererSync,
10
10
  operations(nodes, ctx) {
11
- const { config, resolver, root, inputNode } = ctx
11
+ const { config, resolver, root } = ctx
12
12
  const { output, group } = ctx.options
13
13
 
14
14
  const controllers = nodes.reduce(
@@ -55,8 +55,8 @@ export const groupedClientGenerator = defineGenerator<PluginClient>({
55
55
  baseName={file.baseName}
56
56
  path={file.path}
57
57
  meta={file.meta}
58
- banner={resolver.resolveBanner(inputNode, { output, config })}
59
- footer={resolver.resolveFooter(inputNode, { output, config })}
58
+ banner={resolver.resolveBanner(ctx.meta, { output, config })}
59
+ footer={resolver.resolveFooter(ctx.meta, { output, config })}
60
60
  >
61
61
  {clients.map((client) => (
62
62
  <File.Import key={client.name} name={[client.name]} root={file.path} path={client.file.path} />
@@ -7,7 +7,7 @@ export const operationsGenerator = defineGenerator<PluginClient>({
7
7
  name: 'client',
8
8
  renderer: jsxRendererSync,
9
9
  operations(nodes, ctx) {
10
- const { config, resolver, root, inputNode } = ctx
10
+ const { config, resolver, root } = ctx
11
11
  const { output, group } = ctx.options
12
12
 
13
13
  const name = 'operations'
@@ -18,8 +18,8 @@ export const operationsGenerator = defineGenerator<PluginClient>({
18
18
  baseName={file.baseName}
19
19
  path={file.path}
20
20
  meta={file.meta}
21
- banner={resolver.resolveBanner(inputNode, { output, config })}
22
- footer={resolver.resolveFooter(inputNode, { output, config })}
21
+ banner={resolver.resolveBanner(ctx.meta, { output, config })}
22
+ footer={resolver.resolveFooter(ctx.meta, { output, config })}
23
23
  >
24
24
  <Operations name={name} nodes={nodes} />
25
25
  </File>
@@ -42,9 +42,9 @@ export const staticClassClientGenerator = defineGenerator<PluginClient>({
42
42
  name: 'staticClassClient',
43
43
  renderer: jsxRendererSync,
44
44
  operations(nodes, ctx) {
45
- const { config, driver, resolver, root, inputNode } = ctx
45
+ const { config, driver, resolver, root } = ctx
46
46
  const { output, group, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath } = ctx.options
47
- const baseURL = ctx.options.baseURL ?? inputNode.meta?.baseURL
47
+ const baseURL = ctx.options.baseURL ?? ctx.meta.baseURL
48
48
 
49
49
  const pluginTs = driver.getPlugin(pluginTsName)
50
50
  if (!pluginTs) return null
@@ -92,7 +92,10 @@ export const staticClassClientGenerator = defineGenerator<PluginClient>({
92
92
  } else {
93
93
  acc.push({ name, file, operations: [operationData] })
94
94
  }
95
- } else if (tag) {
95
+ return acc
96
+ }
97
+
98
+ if (tag) {
96
99
  const name = groupName
97
100
  const file = resolver.resolveFile({ name, extname: '.ts', tag }, { root, output, group })
98
101
  const operationData = buildOperationData(operationNode)
@@ -161,8 +164,8 @@ export const staticClassClientGenerator = defineGenerator<PluginClient>({
161
164
  baseName={file.baseName}
162
165
  path={file.path}
163
166
  meta={file.meta}
164
- banner={resolver.resolveBanner(inputNode, { output, config })}
165
- footer={resolver.resolveFooter(inputNode, { output, config })}
167
+ banner={resolver.resolveBanner(ctx.meta, { output, config })}
168
+ footer={resolver.resolveFooter(ctx.meta, { output, config })}
166
169
  >
167
170
  {importPath ? (
168
171
  <>
package/src/utils.ts CHANGED
@@ -45,7 +45,7 @@ export function buildClassClientParams({
45
45
  }: {
46
46
  node: ast.OperationNode
47
47
  path: URLPath
48
- baseURL: string | undefined
48
+ baseURL: string | null | undefined
49
49
  tsResolver: ResolverTs
50
50
  isFormData: boolean
51
51
  isMultipleContentTypes: boolean