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

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/extension.yaml CHANGED
@@ -42,7 +42,7 @@ options:
42
42
  - name: output
43
43
  type: Output
44
44
  required: false
45
- default: "{ path: 'clients', barrelType: 'named' }"
45
+ default: "{ path: 'clients', barrel: { type: 'named' } }"
46
46
  description: Specify the export location for the files and define the behavior of the output.
47
47
  properties:
48
48
  - name: path
@@ -52,13 +52,11 @@ options:
52
52
  tip: |
53
53
  if `output.path` is a file, `group` cannot be used.
54
54
  default: "'clients'"
55
- - name: barrelType
56
- type: "'all' | 'named' | 'propagate' | false"
55
+ - name: barrel
56
+ type: "{ type: 'named' | 'all', nested?: boolean } | false"
57
57
  required: false
58
- default: "'named'"
59
- description: Specify what to export and optionally disable barrel-file generation.
60
- tip: |
61
- Using `propagate` will prevent a plugin from creating a barrel file, but it will still propagate, allowing [`output.barrelType`](https://kubb.dev/docs/5.x/configuration#output-barreltype) to export the specific function or type.
58
+ default: "{ type: 'named' }"
59
+ description: 'Configure barrel file export strategy. Use `type` to control named vs. wildcard exports; set `nested: true` to generate hierarchical barrels in subdirectories.'
62
60
  examples:
63
61
  - name: all
64
62
  files:
@@ -72,10 +70,15 @@ options:
72
70
  code: |
73
71
  export { PetService } from './gen/petService.ts'
74
72
  twoslash: false
75
- - name: propagate
73
+ - name: nested
76
74
  files:
77
- - lang: typescript
78
- code: ''
75
+ - name: kubb.config.ts
76
+ lang: typescript
77
+ code: |
78
+ output: {
79
+ path: './gen',
80
+ barrel: { type: 'named', nested: true },
81
+ }
79
82
  twoslash: false
80
83
  - name: 'false'
81
84
  files:
@@ -751,7 +754,7 @@ examples:
751
754
  pluginClient({
752
755
  output: {
753
756
  path: './clients/axios',
754
- barrelType: 'named',
757
+ barrel: { type: 'named' },
755
758
  banner: '/* eslint-disable no-alert, no-console */',
756
759
  footer: '',
757
760
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-client",
3
- "version": "5.0.0-beta.10",
3
+ "version": "5.0.0-beta.15",
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,18 +87,18 @@
87
87
  "registry": "https://registry.npmjs.org/"
88
88
  },
89
89
  "dependencies": {
90
- "@kubb/core": "5.0.0-beta.10",
91
- "@kubb/renderer-jsx": "5.0.0-beta.10",
92
- "@kubb/plugin-ts": "5.0.0-beta.10",
93
- "@kubb/plugin-zod": "5.0.0-beta.10"
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"
94
94
  },
95
95
  "devDependencies": {
96
- "axios": "^1.16.0",
96
+ "axios": "^1.16.1",
97
97
  "@internals/shared": "0.0.0",
98
98
  "@internals/utils": "0.0.0"
99
99
  },
100
100
  "peerDependencies": {
101
- "@kubb/renderer-jsx": "5.0.0-beta.10",
101
+ "@kubb/renderer-jsx": "5.0.0-beta.19",
102
102
  "axios": "^1.7.2"
103
103
  },
104
104
  "peerDependenciesMeta": {
@@ -7,7 +7,7 @@ import type { ResolverTs } from '@kubb/plugin-ts'
7
7
  import { pluginTsName } from '@kubb/plugin-ts'
8
8
  import type { ResolverZod } from '@kubb/plugin-zod'
9
9
  import { pluginZodName } from '@kubb/plugin-zod'
10
- import { File, jsxRenderer } from '@kubb/renderer-jsx'
10
+ import { File, jsxRendererSync } from '@kubb/renderer-jsx'
11
11
  import { ClassClient } from '../components/ClassClient'
12
12
  import { WrapperClient } from '../components/WrapperClient'
13
13
  import type { PluginClient } from '../types'
@@ -42,11 +42,11 @@ function resolveZodImportNames(node: ast.OperationNode, zodResolver: ResolverZod
42
42
 
43
43
  export const classClientGenerator = defineGenerator<PluginClient>({
44
44
  name: 'classClient',
45
- renderer: jsxRenderer,
45
+ renderer: jsxRendererSync,
46
46
  operations(nodes, ctx) {
47
- const { adapter, config, driver, resolver, root } = ctx
47
+ const { config, driver, resolver, root, inputNode } = ctx
48
48
  const { output, group, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath, sdk } = ctx.options
49
- const baseURL = ctx.options.baseURL ?? adapter.inputNode?.meta?.baseURL
49
+ const baseURL = ctx.options.baseURL ?? inputNode.meta?.baseURL
50
50
 
51
51
  const pluginTs = driver.getPlugin(pluginTsName)
52
52
  if (!pluginTs) return null
@@ -161,8 +161,8 @@ export const classClientGenerator = defineGenerator<PluginClient>({
161
161
  baseName={file.baseName}
162
162
  path={file.path}
163
163
  meta={file.meta}
164
- banner={resolver.resolveBanner(adapter.inputNode, { output, config })}
165
- footer={resolver.resolveFooter(adapter.inputNode, { output, config })}
164
+ banner={resolver.resolveBanner(inputNode, { output, config })}
165
+ footer={resolver.resolveFooter(inputNode, { output, config })}
166
166
  >
167
167
  {importPath ? (
168
168
  <>
@@ -220,8 +220,8 @@ export const classClientGenerator = defineGenerator<PluginClient>({
220
220
  baseName={sdkFile.baseName}
221
221
  path={sdkFile.path}
222
222
  meta={sdkFile.meta}
223
- banner={resolver.resolveBanner(adapter.inputNode, { output, config })}
224
- footer={resolver.resolveFooter(adapter.inputNode, { output, config })}
223
+ banner={resolver.resolveBanner(inputNode, { output, config })}
224
+ footer={resolver.resolveFooter(inputNode, { output, config })}
225
225
  >
226
226
  {importPath ? (
227
227
  <File.Import name={['Client', 'RequestConfig']} path={importPath} isTypeOnly />
@@ -3,18 +3,18 @@ import { resolveOperationTypeNames } from '@internals/shared'
3
3
  import { defineGenerator } from '@kubb/core'
4
4
  import { pluginTsName } from '@kubb/plugin-ts'
5
5
  import { pluginZodName } from '@kubb/plugin-zod'
6
- import { File, jsxRenderer } from '@kubb/renderer-jsx'
6
+ import { File, jsxRendererSync } from '@kubb/renderer-jsx'
7
7
  import { Client } from '../components/Client'
8
8
  import { Url } from '../components/Url.tsx'
9
9
  import type { PluginClient } from '../types'
10
10
 
11
11
  export const clientGenerator = defineGenerator<PluginClient>({
12
12
  name: 'client',
13
- renderer: jsxRenderer,
13
+ renderer: jsxRendererSync,
14
14
  operation(node, ctx) {
15
- const { adapter, config, driver, resolver, root } = ctx
15
+ const { config, driver, resolver, root, inputNode } = ctx
16
16
  const { output, urlType, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath, group } = ctx.options
17
- const baseURL = ctx.options.baseURL ?? adapter.inputNode?.meta?.baseURL
17
+ const baseURL = ctx.options.baseURL ?? inputNode.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(adapter.inputNode, { output, config })}
72
- footer={resolver.resolveFooter(adapter.inputNode, { output, config })}
71
+ banner={resolver.resolveBanner(inputNode, { output, config })}
72
+ footer={resolver.resolveFooter(inputNode, { output, config })}
73
73
  >
74
74
  {importPath ? (
75
75
  <>
@@ -1,14 +1,14 @@
1
1
  import { camelCase } from '@internals/utils'
2
2
  import type { ast } from '@kubb/core'
3
3
  import { defineGenerator } from '@kubb/core'
4
- import { File, Function, jsxRenderer } from '@kubb/renderer-jsx'
4
+ import { File, Function, jsxRendererSync } from '@kubb/renderer-jsx'
5
5
  import type { PluginClient } from '../types'
6
6
 
7
7
  export const groupedClientGenerator = defineGenerator<PluginClient>({
8
8
  name: 'groupedClient',
9
- renderer: jsxRenderer,
9
+ renderer: jsxRendererSync,
10
10
  operations(nodes, ctx) {
11
- const { config, resolver, adapter, root } = ctx
11
+ const { config, resolver, root, inputNode } = 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(adapter.inputNode, { output, config })}
59
- footer={resolver.resolveFooter(adapter.inputNode, { output, config })}
58
+ banner={resolver.resolveBanner(inputNode, { output, config })}
59
+ footer={resolver.resolveFooter(inputNode, { 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} />
@@ -1,13 +1,13 @@
1
1
  import { defineGenerator } from '@kubb/core'
2
- import { File, jsxRenderer } from '@kubb/renderer-jsx'
2
+ import { File, jsxRendererSync } from '@kubb/renderer-jsx'
3
3
  import { Operations } from '../components/Operations'
4
4
  import type { PluginClient } from '../types'
5
5
 
6
6
  export const operationsGenerator = defineGenerator<PluginClient>({
7
7
  name: 'client',
8
- renderer: jsxRenderer,
8
+ renderer: jsxRendererSync,
9
9
  operations(nodes, ctx) {
10
- const { config, resolver, adapter, root } = ctx
10
+ const { config, resolver, root, inputNode } = 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(adapter.inputNode, { output, config })}
22
- footer={resolver.resolveFooter(adapter.inputNode, { output, config })}
21
+ banner={resolver.resolveBanner(inputNode, { output, config })}
22
+ footer={resolver.resolveFooter(inputNode, { output, config })}
23
23
  >
24
24
  <Operations name={name} nodes={nodes} />
25
25
  </File>
@@ -7,7 +7,7 @@ import type { ResolverTs } from '@kubb/plugin-ts'
7
7
  import { pluginTsName } from '@kubb/plugin-ts'
8
8
  import type { ResolverZod } from '@kubb/plugin-zod'
9
9
  import { pluginZodName } from '@kubb/plugin-zod'
10
- import { File, jsxRenderer } from '@kubb/renderer-jsx'
10
+ import { File, jsxRendererSync } from '@kubb/renderer-jsx'
11
11
  import { StaticClassClient } from '../components/StaticClassClient'
12
12
  import type { PluginClient } from '../types'
13
13
 
@@ -40,11 +40,11 @@ function resolveZodImportNames(node: ast.OperationNode, zodResolver: ResolverZod
40
40
 
41
41
  export const staticClassClientGenerator = defineGenerator<PluginClient>({
42
42
  name: 'staticClassClient',
43
- renderer: jsxRenderer,
43
+ renderer: jsxRendererSync,
44
44
  operations(nodes, ctx) {
45
- const { adapter, config, driver, resolver, root } = ctx
45
+ const { config, driver, resolver, root, inputNode } = ctx
46
46
  const { output, group, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath } = ctx.options
47
- const baseURL = ctx.options.baseURL ?? adapter.inputNode?.meta?.baseURL
47
+ const baseURL = ctx.options.baseURL ?? inputNode.meta?.baseURL
48
48
 
49
49
  const pluginTs = driver.getPlugin(pluginTsName)
50
50
  if (!pluginTs) return null
@@ -161,8 +161,8 @@ export const staticClassClientGenerator = defineGenerator<PluginClient>({
161
161
  baseName={file.baseName}
162
162
  path={file.path}
163
163
  meta={file.meta}
164
- banner={resolver.resolveBanner(adapter.inputNode, { output, config })}
165
- footer={resolver.resolveFooter(adapter.inputNode, { output, config })}
164
+ banner={resolver.resolveBanner(inputNode, { output, config })}
165
+ footer={resolver.resolveFooter(inputNode, { output, config })}
166
166
  >
167
167
  {importPath ? (
168
168
  <>