@kubb/plugin-ts 5.0.0-alpha.20 → 5.0.0-alpha.21

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.
Files changed (70) hide show
  1. package/dist/Type-B6fo0gSk.js +120 -0
  2. package/dist/Type-B6fo0gSk.js.map +1 -0
  3. package/dist/Type-oFwUfkZv.cjs +131 -0
  4. package/dist/Type-oFwUfkZv.cjs.map +1 -0
  5. package/dist/builderTs-Cd3juc2G.cjs +120 -0
  6. package/dist/builderTs-Cd3juc2G.cjs.map +1 -0
  7. package/dist/builderTs-DausqHpc.js +116 -0
  8. package/dist/builderTs-DausqHpc.js.map +1 -0
  9. package/dist/builders.cjs +3 -0
  10. package/dist/builders.d.ts +8 -0
  11. package/dist/builders.js +2 -0
  12. package/dist/{casing-Cp-jbC_k.js → casing-BJHFg-zZ.js} +1 -1
  13. package/dist/{casing-Cp-jbC_k.js.map → casing-BJHFg-zZ.js.map} +1 -1
  14. package/dist/{casing-D2uQKLWS.cjs → casing-DHfdqpLi.cjs} +2 -39
  15. package/dist/{casing-D2uQKLWS.cjs.map → casing-DHfdqpLi.cjs.map} +1 -1
  16. package/dist/chunk-ByKO4r7w.cjs +38 -0
  17. package/dist/components.cjs +1 -1
  18. package/dist/components.d.ts +1 -2
  19. package/dist/components.js +1 -1
  20. package/dist/generators-ByK18qUn.js +551 -0
  21. package/dist/generators-ByK18qUn.js.map +1 -0
  22. package/dist/{generators-xHWQCNd9.cjs → generators-aSsiTfUO.cjs} +296 -293
  23. package/dist/generators-aSsiTfUO.cjs.map +1 -0
  24. package/dist/generators.cjs +2 -1
  25. package/dist/generators.d.ts +5 -2
  26. package/dist/generators.js +2 -2
  27. package/dist/index.cjs +38 -36
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +36 -35
  31. package/dist/index.js.map +1 -1
  32. package/dist/{Type-CMC7L-38.js → printerTs-BgZucv4T.js} +18 -130
  33. package/dist/printerTs-BgZucv4T.js.map +1 -0
  34. package/dist/{Type-B70QnSzH.cjs → printerTs-CFXc_LpP.cjs} +40 -133
  35. package/dist/printerTs-CFXc_LpP.cjs.map +1 -0
  36. package/dist/printers.cjs +3 -0
  37. package/dist/printers.d.ts +75 -0
  38. package/dist/printers.js +2 -0
  39. package/dist/{resolvers-DsKabI0F.js → resolverTsLegacy-DLl854-P.js} +8 -7
  40. package/dist/resolverTsLegacy-DLl854-P.js.map +1 -0
  41. package/dist/{resolvers-YIpeP5YD.cjs → resolverTsLegacy-sJ16Iqrl.cjs} +9 -7
  42. package/dist/resolverTsLegacy-sJ16Iqrl.cjs.map +1 -0
  43. package/dist/resolvers.cjs +3 -3
  44. package/dist/resolvers.d.ts +1 -1
  45. package/dist/resolvers.js +1 -1
  46. package/dist/{types-zqLMbIqZ.d.ts → types-BcyuFDn9.d.ts} +26 -22
  47. package/package.json +17 -5
  48. package/src/builders/builderTs.ts +92 -0
  49. package/src/builders/index.ts +1 -0
  50. package/src/components/Type.tsx +4 -6
  51. package/src/factory.ts +0 -32
  52. package/src/generators/index.ts +1 -0
  53. package/src/generators/typeGenerator.tsx +49 -140
  54. package/src/generators/typeGeneratorLegacy.tsx +345 -0
  55. package/src/index.ts +1 -1
  56. package/src/plugin.ts +15 -44
  57. package/src/presets.ts +10 -7
  58. package/src/printers/index.ts +1 -0
  59. package/src/{printer.ts → printers/printerTs.ts} +20 -16
  60. package/src/resolvers/resolverTs.ts +7 -4
  61. package/src/resolvers/resolverTsLegacy.ts +1 -1
  62. package/src/types.ts +39 -21
  63. package/dist/Type-B70QnSzH.cjs.map +0 -1
  64. package/dist/Type-CMC7L-38.js.map +0 -1
  65. package/dist/generators-BFkr7ecU.js +0 -556
  66. package/dist/generators-BFkr7ecU.js.map +0 -1
  67. package/dist/generators-xHWQCNd9.cjs.map +0 -1
  68. package/dist/resolvers-DsKabI0F.js.map +0 -1
  69. package/dist/resolvers-YIpeP5YD.cjs.map +0 -1
  70. package/src/generators/utils.ts +0 -308
@@ -0,0 +1,92 @@
1
+ import { createProperty, createSchema } from '@kubb/ast'
2
+ import { defineBuilder } from '@kubb/core'
3
+ import type { PluginTs } from '../types.ts'
4
+
5
+ export const builderTs = defineBuilder<PluginTs>(() => ({
6
+ name: 'default',
7
+ buildParams({ params, node, resolver }) {
8
+ return createSchema({
9
+ type: 'object',
10
+ properties: params.map((param) =>
11
+ createProperty({
12
+ name: param.name,
13
+ required: param.required,
14
+ schema: createSchema({
15
+ type: 'ref',
16
+ name: resolver.resolveParamName(node, param),
17
+ }),
18
+ }),
19
+ ),
20
+ })
21
+ },
22
+ buildData({ node, resolver }) {
23
+ const pathParams = node.parameters.filter((p) => p.in === 'path')
24
+ const queryParams = node.parameters.filter((p) => p.in === 'query')
25
+ const headerParams = node.parameters.filter((p) => p.in === 'header')
26
+
27
+ return createSchema({
28
+ type: 'object',
29
+ deprecated: node.deprecated,
30
+ properties: [
31
+ createProperty({
32
+ name: 'data',
33
+ schema: node.requestBody?.schema
34
+ ? createSchema({ type: 'ref', name: resolver.resolveDataTypedName(node), optional: true })
35
+ : createSchema({ type: 'never', optional: true }),
36
+ }),
37
+ createProperty({
38
+ name: 'pathParams',
39
+ required: pathParams.length > 0,
40
+ schema: pathParams.length > 0 ? this.buildParams({ params: pathParams, node, resolver }) : createSchema({ type: 'never' }),
41
+ }),
42
+ createProperty({
43
+ name: 'queryParams',
44
+ schema:
45
+ queryParams.length > 0
46
+ ? createSchema({ ...this.buildParams({ params: queryParams, node, resolver }), optional: true })
47
+ : createSchema({ type: 'never', optional: true }),
48
+ }),
49
+ createProperty({
50
+ name: 'headerParams',
51
+ schema:
52
+ headerParams.length > 0
53
+ ? createSchema({ ...this.buildParams({ params: headerParams, node, resolver }), optional: true })
54
+ : createSchema({ type: 'never', optional: true }),
55
+ }),
56
+ createProperty({
57
+ name: 'url',
58
+ required: true,
59
+ schema: createSchema({ type: 'url', path: node.path }),
60
+ }),
61
+ ],
62
+ })
63
+ },
64
+ buildResponses({ node, resolver }) {
65
+ if (node.responses.length === 0) {
66
+ return null
67
+ }
68
+
69
+ return createSchema({
70
+ type: 'object',
71
+ properties: node.responses.map((res) =>
72
+ createProperty({
73
+ name: String(res.statusCode),
74
+ required: true,
75
+ schema: createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, res.statusCode) }),
76
+ }),
77
+ ),
78
+ })
79
+ },
80
+ buildResponseUnion({ node, resolver }) {
81
+ const responsesWithSchema = node.responses.filter((res) => res.schema)
82
+
83
+ if (responsesWithSchema.length === 0) {
84
+ return null
85
+ }
86
+
87
+ return createSchema({
88
+ type: 'union',
89
+ members: responsesWithSchema.map((res) => createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, res.statusCode) })),
90
+ })
91
+ },
92
+ }))
@@ -0,0 +1 @@
1
+ export { builderTs } from './builderTs.ts'
@@ -1,9 +1,8 @@
1
1
  import { collect, narrowSchema, schemaTypes } from '@kubb/ast'
2
2
  import type { EnumSchemaNode, SchemaNode } from '@kubb/ast/types'
3
- import { safePrint } from '@kubb/fabric-core/parsers/typescript'
4
3
  import { File } from '@kubb/react-fabric'
5
4
  import type { FabricReactNode } from '@kubb/react-fabric/types'
6
- import { printerTs } from '../printer.ts'
5
+ import { printerTs } from '../printers/printerTs.ts'
7
6
  import type { PluginTs } from '../types.ts'
8
7
  import { Enum, getEnumNames } from './Enum.tsx'
9
8
 
@@ -17,7 +16,6 @@ type Props = {
17
16
  enumKeyCasing: PluginTs['resolvedOptions']['enumKeyCasing']
18
17
  syntaxType: PluginTs['resolvedOptions']['syntaxType']
19
18
  resolver: PluginTs['resolvedOptions']['resolver']
20
- legacy?: boolean
21
19
  description?: string
22
20
  keysToOmit?: string[]
23
21
  }
@@ -44,9 +42,9 @@ export function Type({
44
42
  })
45
43
 
46
44
  const printer = printerTs({ optionalType, arrayType, enumType, typeName: name, syntaxType, description: resolvedDescription, keysToOmit, resolver })
47
- const typeNode = printer.print(node)
45
+ const output = printer.print(node)
48
46
 
49
- if (!typeNode) {
47
+ if (!output) {
50
48
  return
51
49
  }
52
50
 
@@ -66,7 +64,7 @@ export function Type({
66
64
  {shouldExportEnums && enums.map(({ node }) => <Enum node={node} enumType={enumType} enumKeyCasing={enumKeyCasing} resolver={resolver} />)}
67
65
  {shouldExportType && (
68
66
  <File.Source name={typedName} isTypeOnly isExportable isIndexable>
69
- {safePrint(typeNode)}
67
+ {output}
70
68
  </File.Source>
71
69
  )}
72
70
  </>
package/src/factory.ts CHANGED
@@ -19,16 +19,6 @@ export const syntaxKind = {
19
19
  stringLiteral: SyntaxKind.StringLiteral,
20
20
  } as const
21
21
 
22
- export function getUnknownType(unknownType: 'any' | 'unknown' | 'void' | undefined) {
23
- if (unknownType === 'any') {
24
- return keywordTypeNodes.any
25
- }
26
- if (unknownType === 'void') {
27
- return keywordTypeNodes.void
28
- }
29
-
30
- return keywordTypeNodes.unknown
31
- }
32
22
  function isValidIdentifier(str: string): boolean {
33
23
  if (!str.length || str.trim() !== str) {
34
24
  return false
@@ -76,28 +66,6 @@ export function createIntersectionDeclaration({ nodes, withParentheses }: { node
76
66
  return node
77
67
  }
78
68
 
79
- /**
80
- * Minimum nodes length of 2
81
- * @example `string & number`
82
- */
83
- export function createTupleDeclaration({ nodes, withParentheses }: { nodes: Array<ts.TypeNode>; withParentheses?: boolean }): ts.TypeNode | null {
84
- if (!nodes.length) {
85
- return null
86
- }
87
-
88
- if (nodes.length === 1) {
89
- return nodes[0] || null
90
- }
91
-
92
- const node = factory.createTupleTypeNode(nodes)
93
-
94
- if (withParentheses) {
95
- return factory.createParenthesizedType(node)
96
- }
97
-
98
- return node
99
- }
100
-
101
69
  export function createArrayDeclaration({ nodes, arrayType = 'array' }: { nodes: Array<ts.TypeNode>; arrayType?: 'array' | 'generic' }): ts.TypeNode | null {
102
70
  if (!nodes.length) {
103
71
  return factory.createTupleTypeNode([])
@@ -1 +1,2 @@
1
1
  export { typeGenerator } from './typeGenerator.tsx'
2
+ export { typeGeneratorLegacy } from './typeGeneratorLegacy.tsx'
@@ -1,50 +1,24 @@
1
+ import path from 'node:path'
1
2
  import { caseParams, composeTransformers, narrowSchema, schemaTypes, transform } from '@kubb/ast'
2
3
  import type { SchemaNode } from '@kubb/ast/types'
3
- import { defineGenerator } from '@kubb/core'
4
- import { useKubb } from '@kubb/core/hooks'
4
+ import { defineGenerator, getMode } from '@kubb/core'
5
5
  import { File } from '@kubb/react-fabric'
6
+ import { builderTs } from '../builders/builderTs.ts'
6
7
  import { Type } from '../components/Type.tsx'
7
8
  import { ENUM_TYPES_WITH_KEY_SUFFIX } from '../constants.ts'
8
9
  import type { PluginTs } from '../types'
9
- import {
10
- buildDataSchemaNode,
11
- buildGroupedParamsSchema,
12
- buildLegacyResponsesSchemaNode,
13
- buildLegacyResponseUnionSchemaNode,
14
- buildParamsSchema,
15
- buildResponsesSchemaNode,
16
- buildResponseUnionSchemaNode,
17
- nameUnnamedEnums,
18
- } from './utils.ts'
19
10
 
20
11
  export const typeGenerator = defineGenerator<PluginTs>({
21
12
  name: 'typescript',
22
13
  type: 'react',
23
- Operation({ node, adapter, options }) {
24
- const {
25
- enumType,
26
- enumKeyCasing,
27
- optionalType,
28
- arrayType,
29
- syntaxType,
30
- paramsCasing,
31
- group,
32
- resolver,
33
- baseResolver,
34
- compatibilityPreset,
35
- transformers = [],
36
- } = options
37
- const isKubbV4Compatibility = compatibilityPreset === 'kubbV4'
38
- const { mode, getFile, resolveBanner, resolveFooter } = useKubb<PluginTs>()
14
+ Operation({ node, adapter, options, config }) {
15
+ const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output, resolver, transformers = [] } = options
16
+
17
+ const root = path.resolve(config.root, config.output.path)
18
+ const mode = getMode(path.resolve(root, output.path))
19
+
20
+ const file = resolver.resolveFile({ name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path }, { root, output, group })
39
21
 
40
- const file = getFile({
41
- name: node.operationId,
42
- extname: '.ts',
43
- mode,
44
- options: {
45
- group: group ? (group.type === 'tag' ? { tag: node.tags[0] ?? 'default' } : { path: node.path }) : undefined,
46
- },
47
- })
48
22
  const params = caseParams(node.parameters, paramsCasing)
49
23
 
50
24
  function renderSchemaType({
@@ -68,7 +42,7 @@ export const typeGenerator = defineGenerator<PluginTs>({
68
42
 
69
43
  const imports = adapter.getImports(transformedNode, (schemaName) => ({
70
44
  name: resolver.default(schemaName, 'type'),
71
- path: getFile({ name: schemaName, extname: '.ts', mode }).path,
45
+ path: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group }).path,
72
46
  }))
73
47
 
74
48
  return (
@@ -87,38 +61,22 @@ export const typeGenerator = defineGenerator<PluginTs>({
87
61
  syntaxType={syntaxType}
88
62
  resolver={resolver}
89
63
  keysToOmit={keysToOmit}
90
- legacy={isKubbV4Compatibility}
91
64
  />
92
65
  </>
93
66
  )
94
67
  }
95
68
 
96
- const responseTypes = isKubbV4Compatibility
97
- ? node.responses.map((res) => {
98
- const responseName = resolver.resolveResponseStatusName(node, res.statusCode)
99
- const baseResponseName = baseResolver.resolveResponseStatusName(node, res.statusCode)
100
-
101
- return renderSchemaType({
102
- node: res.schema ? nameUnnamedEnums(res.schema, baseResponseName) : res.schema,
103
- name: responseName,
104
- typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),
105
- description: res.description,
106
- keysToOmit: res.keysToOmit,
107
- })
108
- })
109
- : node.responses.map((res) =>
110
- renderSchemaType({
111
- node: res.schema,
112
- name: resolver.resolveResponseStatusName(node, res.statusCode),
113
- typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),
114
- description: res.description,
115
- keysToOmit: res.keysToOmit,
116
- }),
117
- )
69
+ const paramTypes = params.map((param) =>
70
+ renderSchemaType({
71
+ node: param.schema,
72
+ name: resolver.resolveParamName(node, param),
73
+ typedName: resolver.resolveParamTypedName(node, param),
74
+ }),
75
+ )
118
76
 
119
77
  const requestType = node.requestBody?.schema
120
78
  ? renderSchemaType({
121
- node: isKubbV4Compatibility ? nameUnnamedEnums(node.requestBody.schema, baseResolver.resolveDataName(node)) : node.requestBody.schema,
79
+ node: node.requestBody.schema,
122
80
  name: resolver.resolveDataName(node),
123
81
  typedName: resolver.resolveDataTypedName(node),
124
82
  description: node.requestBody.description ?? node.requestBody.schema.description,
@@ -126,99 +84,44 @@ export const typeGenerator = defineGenerator<PluginTs>({
126
84
  })
127
85
  : null
128
86
 
129
- if (isKubbV4Compatibility) {
130
- const pathParams = params.filter((p) => p.in === 'path')
131
- const queryParams = params.filter((p) => p.in === 'query')
132
- const headerParams = params.filter((p) => p.in === 'header')
133
-
134
- const legacyParamTypes = [
135
- pathParams.length > 0
136
- ? renderSchemaType({
137
- node: buildGroupedParamsSchema({ params: pathParams, parentName: baseResolver.resolvePathParamsName!(node) }),
138
- name: resolver.resolvePathParamsName!(node),
139
- typedName: resolver.resolvePathParamsTypedName!(node),
140
- })
141
- : null,
142
- queryParams.length > 0
143
- ? renderSchemaType({
144
- node: buildGroupedParamsSchema({ params: queryParams, parentName: baseResolver.resolveQueryParamsName!(node) }),
145
- name: resolver.resolveQueryParamsName!(node),
146
- typedName: resolver.resolveQueryParamsTypedName!(node),
147
- })
148
- : null,
149
- headerParams.length > 0
150
- ? renderSchemaType({
151
- node: buildGroupedParamsSchema({ params: headerParams, parentName: baseResolver.resolveHeaderParamsName!(node) }),
152
- name: resolver.resolveHeaderParamsName!(node),
153
- typedName: resolver.resolveHeaderParamsTypedName!(node),
154
- })
155
- : null,
156
- ]
157
-
158
- const legacyResponsesType = renderSchemaType({
159
- node: buildLegacyResponsesSchemaNode({ node, resolver }),
160
- name: resolver.resolveResponsesName(node),
161
- typedName: resolver.resolveResponsesTypedName(node),
162
- })
163
-
164
- const legacyResponseType = renderSchemaType({
165
- node: buildLegacyResponseUnionSchemaNode({ node, resolver }),
166
- name: resolver.resolveResponseName(node),
167
- typedName: resolver.resolveResponseTypedName(node),
168
- })
169
-
170
- return (
171
- <File baseName={file.baseName} path={file.path} meta={file.meta} banner={resolveBanner()} footer={resolveFooter()}>
172
- {legacyParamTypes}
173
- {responseTypes}
174
- {requestType}
175
- {legacyResponseType}
176
- {legacyResponsesType}
177
- </File>
178
- )
179
- }
180
-
181
- const paramTypes = params.map((param) =>
87
+ const responseTypes = node.responses.map((res) =>
182
88
  renderSchemaType({
183
- node: param.schema,
184
- name: resolver.resolveParamName(node, param),
185
- typedName: resolver.resolveParamTypedName(node, param),
89
+ node: res.schema,
90
+ name: resolver.resolveResponseStatusName(node, res.statusCode),
91
+ typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),
92
+ description: res.description,
93
+ keysToOmit: res.keysToOmit,
186
94
  }),
187
95
  )
188
96
 
189
- const queryParamsList = params.filter((p) => p.in === 'query')
190
- const queryParamsType =
191
- queryParamsList.length > 0
192
- ? renderSchemaType({
193
- node: buildParamsSchema({ params: queryParamsList, node, resolver }),
194
- name: resolver.resolveQueryParamsName!(node),
195
- typedName: resolver.resolveQueryParamsTypedName!(node),
196
- })
197
- : null
198
-
199
97
  const dataType = renderSchemaType({
200
- node: buildDataSchemaNode({ node: { ...node, parameters: params }, resolver }),
98
+ node: builderTs.buildData({ node: { ...node, parameters: params }, resolver }),
201
99
  name: resolver.resolveRequestConfigName(node),
202
100
  typedName: resolver.resolveRequestConfigTypedName(node),
203
101
  })
204
102
 
205
103
  const responsesType = renderSchemaType({
206
- node: buildResponsesSchemaNode({ node, resolver }),
104
+ node: builderTs.buildResponses({ node, resolver }),
207
105
  name: resolver.resolveResponsesName(node),
208
106
  typedName: resolver.resolveResponsesTypedName(node),
209
107
  })
210
108
 
211
109
  const responseType = renderSchemaType({
212
- node: buildResponseUnionSchemaNode({ node, resolver }),
110
+ node: builderTs.buildResponseUnion({ node, resolver }),
213
111
  name: resolver.resolveResponseName(node),
214
112
  typedName: resolver.resolveResponseTypedName(node),
215
113
  description: 'Union of all possible responses',
216
114
  })
217
115
 
218
116
  return (
219
- <File baseName={file.baseName} path={file.path} meta={file.meta} banner={resolveBanner()} footer={resolveFooter()}>
117
+ <File
118
+ baseName={file.baseName}
119
+ path={file.path}
120
+ meta={file.meta}
121
+ banner={resolver.resolveBanner(adapter.rootNode, { output, config })}
122
+ footer={resolver.resolveFooter(adapter.rootNode, { output, config })}
123
+ >
220
124
  {paramTypes}
221
- {queryParamsType}
222
125
  {responseTypes}
223
126
  {requestType}
224
127
  {dataType}
@@ -227,10 +130,11 @@ export const typeGenerator = defineGenerator<PluginTs>({
227
130
  </File>
228
131
  )
229
132
  },
230
- Schema({ node, adapter, options }) {
231
- const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, resolver, compatibilityPreset, transformers = [] } = options
232
- const isKubbV4Compatibility = compatibilityPreset === 'kubbV4'
233
- const { mode, getFile, resolveBanner, resolveFooter } = useKubb<PluginTs>()
133
+ Schema({ node, adapter, options, config }) {
134
+ const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, output, group, resolver, transformers = [] } = options
135
+
136
+ const root = path.resolve(config.root, config.output.path)
137
+ const mode = getMode(path.resolve(root, output.path))
234
138
 
235
139
  if (!node.name) {
236
140
  return
@@ -240,7 +144,7 @@ export const typeGenerator = defineGenerator<PluginTs>({
240
144
 
241
145
  const imports = adapter.getImports(transformedNode, (schemaName) => ({
242
146
  name: resolver.default(schemaName, 'type'),
243
- path: getFile({ name: schemaName, extname: '.ts', mode }).path,
147
+ path: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group }).path,
244
148
  }))
245
149
 
246
150
  const isEnumSchema = !!narrowSchema(node, schemaTypes.enum)
@@ -250,11 +154,17 @@ export const typeGenerator = defineGenerator<PluginTs>({
250
154
  const type = {
251
155
  name: resolver.resolveName(node.name),
252
156
  typedName,
253
- file: getFile({ name: node.name, extname: '.ts', mode }),
157
+ file: resolver.resolveFile({ name: node.name, extname: '.ts' }, { root, output, group }),
254
158
  } as const
255
159
 
256
160
  return (
257
- <File baseName={type.file.baseName} path={type.file.path} meta={type.file.meta} banner={resolveBanner()} footer={resolveFooter()}>
161
+ <File
162
+ baseName={type.file.baseName}
163
+ path={type.file.path}
164
+ meta={type.file.meta}
165
+ banner={resolver.resolveBanner(adapter.rootNode, { output, config })}
166
+ footer={resolver.resolveFooter(adapter.rootNode, { output, config })}
167
+ >
258
168
  {mode === 'split' &&
259
169
  imports.map((imp) => (
260
170
  <File.Import key={[node.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />
@@ -269,7 +179,6 @@ export const typeGenerator = defineGenerator<PluginTs>({
269
179
  arrayType={arrayType}
270
180
  syntaxType={syntaxType}
271
181
  resolver={resolver}
272
- legacy={isKubbV4Compatibility}
273
182
  />
274
183
  </File>
275
184
  )