@kubb/plugin-zod 5.0.0-alpha.9 → 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.
Files changed (46) hide show
  1. package/LICENSE +17 -10
  2. package/README.md +25 -7
  3. package/dist/index.cjs +1129 -105
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.ts +369 -4
  6. package/dist/index.js +1116 -105
  7. package/dist/index.js.map +1 -1
  8. package/extension.yaml +505 -0
  9. package/package.json +43 -73
  10. package/src/components/Operations.tsx +25 -18
  11. package/src/components/Zod.tsx +21 -121
  12. package/src/constants.ts +5 -0
  13. package/src/generators/zodGenerator.tsx +213 -166
  14. package/src/index.ts +11 -2
  15. package/src/plugin.ts +67 -156
  16. package/src/printers/printerZod.ts +368 -0
  17. package/src/printers/printerZodMini.ts +313 -0
  18. package/src/resolvers/resolverZod.ts +57 -0
  19. package/src/types.ts +130 -115
  20. package/src/utils.ts +222 -0
  21. package/dist/components-B7zUFnAm.cjs +0 -890
  22. package/dist/components-B7zUFnAm.cjs.map +0 -1
  23. package/dist/components-eECfXVou.js +0 -842
  24. package/dist/components-eECfXVou.js.map +0 -1
  25. package/dist/components.cjs +0 -4
  26. package/dist/components.d.ts +0 -56
  27. package/dist/components.js +0 -2
  28. package/dist/generators-BjPDdJUz.cjs +0 -301
  29. package/dist/generators-BjPDdJUz.cjs.map +0 -1
  30. package/dist/generators-lTWPS6oN.js +0 -290
  31. package/dist/generators-lTWPS6oN.js.map +0 -1
  32. package/dist/generators.cjs +0 -4
  33. package/dist/generators.d.ts +0 -508
  34. package/dist/generators.js +0 -2
  35. package/dist/templates/ToZod.source.cjs +0 -7
  36. package/dist/templates/ToZod.source.cjs.map +0 -1
  37. package/dist/templates/ToZod.source.d.ts +0 -7
  38. package/dist/templates/ToZod.source.js +0 -6
  39. package/dist/templates/ToZod.source.js.map +0 -1
  40. package/dist/types-CoCoOc2u.d.ts +0 -172
  41. package/src/components/index.ts +0 -2
  42. package/src/generators/index.ts +0 -2
  43. package/src/generators/operationsGenerator.tsx +0 -50
  44. package/src/parser.ts +0 -909
  45. package/src/templates/ToZod.source.ts +0 -4
  46. package/templates/ToZod.ts +0 -61
package/extension.yaml ADDED
@@ -0,0 +1,505 @@
1
+ $schema: https://kubb.dev/schemas/extension.json
2
+ kind: plugin
3
+ id: plugin-zod
4
+ name: Zod
5
+ description: Generate Zod validation schemas from OpenAPI specifications for runtime data validation.
6
+ category: validation
7
+ type: official
8
+ npmPackage: '@kubb/plugin-zod'
9
+ docsPath: /plugins/plugin-zod
10
+ repo: https://github.com/kubb-labs/plugins
11
+ maintainers:
12
+ - name: Stijn Van Hulle
13
+ github: stijnvanhulle
14
+ compatibility:
15
+ kubb: '>=5.0.0'
16
+ node: '>=22'
17
+ tags:
18
+ - zod
19
+ - validation
20
+ - schema
21
+ - runtime-validation
22
+ - codegen
23
+ - openapi
24
+ dependencies: []
25
+ resources:
26
+ documentation: https://kubb.dev/plugins/plugin-zod
27
+ repository: https://github.com/kubb-labs/plugins
28
+ issues: https://github.com/kubb-labs/plugins/issues
29
+ changelog: https://github.com/kubb-labs/plugins/blob/main/packages/plugin-zod/CHANGELOG.md
30
+ codesandbox: https://codesandbox.io/p/github/kubb-labs/plugins/main/examples/zod
31
+ featured: true
32
+ icon:
33
+ light: https://kubb.dev/feature/zod.svg
34
+ intro: |
35
+ # @kubb/plugin-zod
36
+
37
+ Generate [Zod](https://zod.dev/) validation schemas from your OpenAPI schema for runtime validation. Kubb generates Zod v4 schemas.
38
+ options:
39
+ - name: output
40
+ type: Output
41
+ required: false
42
+ default: "{ path: 'zod', barrel: { type: 'named' } }"
43
+ description: Specify the export location for the files and define the behavior of the output.
44
+ properties:
45
+ - name: path
46
+ type: string
47
+ required: true
48
+ description: Output directory or file for the generated code, relative to the global `output.path`.
49
+ tip: |
50
+ if `output.path` is a file, `group` cannot be used.
51
+ default: "'zod'"
52
+ - name: barrel
53
+ type: "{ type: 'named' | 'all', nested?: boolean } | false"
54
+ required: false
55
+ default: "{ type: 'named' }"
56
+ description: 'Configure barrel file export strategy. Use `type` to control named vs. wildcard exports; set `nested: true` to generate hierarchical barrels in subdirectories.'
57
+ examples:
58
+ - name: all
59
+ files:
60
+ - lang: typescript
61
+ code: |
62
+ export * from './gen/petService.ts'
63
+ twoslash: false
64
+ - name: named
65
+ files:
66
+ - lang: typescript
67
+ code: |
68
+ export { PetService } from './gen/petService.ts'
69
+ twoslash: false
70
+ - name: nested
71
+ files:
72
+ - name: kubb.config.ts
73
+ lang: typescript
74
+ code: |
75
+ output: {
76
+ path: './gen',
77
+ barrel: { type: 'named', nested: true },
78
+ }
79
+ twoslash: false
80
+ - name: 'false'
81
+ files:
82
+ - lang: typescript
83
+ code: ''
84
+ twoslash: false
85
+ - name: banner
86
+ type: 'string | ((node: RootNode) => string)'
87
+ required: false
88
+ description: Add a banner comment at the top of every generated file. Accepts a static string or a function that receives the `RootNode` and returns a string.
89
+ - name: footer
90
+ type: 'string | ((node: RootNode) => string)'
91
+ required: false
92
+ description: Add a footer comment at the end of every generated file. Accepts a static string or a function that receives the `RootNode` and returns a string.
93
+ - name: override
94
+ type: boolean
95
+ required: false
96
+ default: 'false'
97
+ description: Whether Kubb overrides existing external files that can be generated if they already exist.
98
+ - name: resolver
99
+ type: Partial<ResolverZod> & ThisType<ResolverZod>
100
+ required: false
101
+ description: |
102
+ A single resolver that overrides the naming and path-resolution conventions. Each method you provide replaces the corresponding built-in one. When a method returns `null` or `undefined`, the resolver's result is used as the fallback, so you only need to supply the methods you want to change.
103
+
104
+ `this` inside each method is bound to the **full** resolver, so you can call other resolver methods (e.g. `this.default(name, 'function')`) without losing context.
105
+ body: |
106
+ Each plugin ships a built-in resolver:
107
+
108
+ | Plugin | Default resolver |
109
+ | --- | --- |
110
+ | `@kubb/plugin-ts` | `resolverTs` |
111
+ | `@kubb/plugin-zod` | `resolverZod` |
112
+ | `@kubb/plugin-cypress` | `resolverCypress` |
113
+ | `@kubb/plugin-mcp` | `resolverMcp` |
114
+ codeBlock:
115
+ lang: typescript
116
+ title: Custom resolver (plugin-ts example)
117
+ code: |
118
+ import { pluginTs } from '@kubb/plugin-ts'
119
+
120
+ pluginTs({
121
+ resolver: {
122
+ resolveName(name) {
123
+ // Prefix every operation-derived name; falls back for names where
124
+ // this returns null/undefined.
125
+ return `Api${this.default(name, 'function')}`
126
+ },
127
+ },
128
+ })
129
+ tip: |
130
+ Use `resolver` for fine-grained control over naming conventions.
131
+ - name: group
132
+ type: Group
133
+ required: false
134
+ description: |
135
+ Grouping combines files in a folder based on a specific `type`.
136
+ examples:
137
+ - name: kubb.config.ts
138
+ files:
139
+ - lang: typescript
140
+ code: |
141
+ group: {
142
+ type: 'tag',
143
+ name({ group }) {
144
+ return `${group}Controller`
145
+ }
146
+ }
147
+ twoslash: false
148
+ body: |
149
+ With the configuration above, the generator emits:
150
+
151
+ ```text
152
+ .
153
+ ├── src/
154
+ │ └── petController/
155
+ │ │ ├── addPet.ts
156
+ │ │ └── getPet.ts
157
+ │ └── storeController/
158
+ │ ├── createStore.ts
159
+ │ └── getStoreById.ts
160
+ ├── petStore.yaml
161
+ ├── kubb.config.ts
162
+ └── package.json
163
+ ```
164
+ properties:
165
+ - name: type
166
+ type: "'tag'"
167
+ required: true
168
+ description: Specify the property to group files by. Required when `group` is defined.
169
+ note: |
170
+ `Required: true*` means this is required only when the `group` option is used. The `group` option itself is optional.
171
+ body: |
172
+ - `'tag'`: Uses the first tag from `operation.getTags().at(0)?.name`
173
+ - name: name
174
+ type: '(context: GroupContext) => string'
175
+ required: false
176
+ default: (ctx) => `${ctx.group}Controller`
177
+ description: Return the name of a group based on the group name. This is used for file and identifier generation.
178
+ - name: importPath
179
+ type: string
180
+ required: false
181
+ default: "'zod'"
182
+ description: |
183
+ Import path for Zod. Use `'zod/mini'` to import from Zod's mini bundle.
184
+ - name: typed
185
+ type: boolean
186
+ required: false
187
+ default: 'false'
188
+ description: Annotate schemas with their TypeScript types from `@kubb/plugin-ts`. Requires `@kubb/plugin-ts` in the plugins array.
189
+ important: |
190
+ We rely on [`ToZod`](https://github.com/colinhacks/tozod) from the creator of Zod to create a schema based on a type.
191
+ Kubb contains its own version to those kind of conversions.
192
+ - name: inferred
193
+ type: boolean
194
+ required: false
195
+ default: 'false'
196
+ description: Export a `z.infer<typeof schema>` type alias for each schema to keep types in sync with validation.
197
+ codeBlock:
198
+ lang: typescript
199
+ title: 'inferred: true'
200
+ code: |
201
+ import { z } from 'zod'
202
+
203
+ export const petSchema = z.object({
204
+ name: z.string(),
205
+ status: z.enum(['available', 'pending', 'sold']).optional(),
206
+ })
207
+
208
+ // Inferred type export
209
+ export type Pet = z.infer<typeof petSchema>
210
+ - name: integerType
211
+ warning: |
212
+ This option has been moved to [`adapterOas`](/adapters/adapter-oas#integerType). Use `adapterOas({ integerType })` instead.
213
+ - name: unknownType
214
+ warning: |
215
+ This option has been moved to [`adapterOas`](/adapters/adapter-oas#unknownType). Use `adapterOas({ unknownType })` instead.
216
+ - name: emptySchemaType
217
+ warning: |
218
+ This option has been moved to [`adapterOas`](/adapters/adapter-oas#emptySchemaType). Use `adapterOas({ emptySchemaType })` instead.
219
+ - name: coercion
220
+ type: 'boolean | { dates?: boolean, strings?: boolean, numbers?: boolean }'
221
+ required: false
222
+ default: 'false'
223
+ description: Apply `z.coerce` to automatically convert input values to the expected type before validation. Pass `true` to coerce all primitives, or an object to selectively enable coercion for `dates`, `strings`, and `numbers`. See [Coercion for primitives](https://zod.dev/?id=coercion-for-primitives).
224
+ examples:
225
+ - name: 'true'
226
+ files:
227
+ - lang: typescript
228
+ code: |
229
+ z.coerce.string();
230
+ z.coerce.date();
231
+ z.coerce.number();
232
+ twoslash: false
233
+ - name: 'false'
234
+ files:
235
+ - lang: typescript
236
+ code: |
237
+ z.string();
238
+ z.date();
239
+ z.number();
240
+ twoslash: false
241
+ - name: '{numbers: true, strings: false, dates: false}'
242
+ files:
243
+ - lang: typescript
244
+ code: |
245
+ z.string();
246
+ z.date();
247
+ z.coerce.number();
248
+ twoslash: false
249
+ - name: operations
250
+ type: boolean
251
+ required: false
252
+ default: 'false'
253
+ description: Generate an `operations.ts` file with schemas for each operation, including request and response data.
254
+ - name: paramsCasing
255
+ type: "'camelcase'"
256
+ required: false
257
+ description: Transform parameter property names to camelCase.
258
+ codeBlock:
259
+ lang: typescript
260
+ title: "'camelcase'"
261
+ code: |
262
+ // OpenAPI spec uses: pet_id, X-Api-Key
263
+
264
+ type GetPetPathParams = {
265
+ petId: string // ✓ camelCase
266
+ }
267
+
268
+ type GetPetHeaderParams = {
269
+ xApiKey?: string // ✓ camelCase
270
+ }
271
+ - name: guidType
272
+ type: "'uuid' | 'guid'"
273
+ required: false
274
+ default: "'uuid'"
275
+ description: |
276
+ Validator to use for OpenAPI properties with `format: uuid`. Use `'guid'` to generate `.guid()` validation instead of the default `.uuid()`.
277
+ examples:
278
+ - name: "'uuid' (default)"
279
+ files:
280
+ - lang: typescript
281
+ code: |
282
+ z.uuid()
283
+ twoslash: false
284
+ - name: "'guid'"
285
+ files:
286
+ - lang: typescript
287
+ code: |
288
+ z.guid()
289
+ twoslash: false
290
+ - name: mini
291
+ type: boolean
292
+ required: false
293
+ default: 'false'
294
+ badge:
295
+ type: tip
296
+ text: beta
297
+ description: |
298
+ Use Zod Mini's functional API for better tree-shaking support.
299
+
300
+ When enabled, generates functional syntax (e.g., `z.optional(z.string())`) instead of chainable methods (e.g., `z.string().optional()`).
301
+
302
+ When `mini: true`, `importPath` will default to `'zod/mini'`.
303
+ warning: |
304
+ This feature is currently in beta. The API may change in future releases.
305
+ tip: |
306
+ Zod Mini provides a smaller bundle size with better tree-shaking. See [Zod Mini documentation](https://zod.dev/packages/mini) for more details.
307
+ examples:
308
+ - name: 'mini: true'
309
+ files:
310
+ - lang: typescript
311
+ code: |
312
+ // Import from zod/mini
313
+ import { z } from 'zod/mini'
314
+
315
+ // Functional syntax for better tree-shaking
316
+ z.optional(z.string())
317
+ z.nullable(z.number())
318
+ z.array(z.string()).check(z.minLength(1), z.maxLength(10))
319
+ twoslash: false
320
+ - name: 'mini: false (default)'
321
+ files:
322
+ - lang: typescript
323
+ code: |
324
+ // Import from zod or zod/v4
325
+ import { z } from 'zod'
326
+
327
+ // Chainable method syntax
328
+ z.string().optional()
329
+ z.number().nullable()
330
+ z.array(z.string()).min(1).max(10)
331
+ twoslash: false
332
+ - name: include
333
+ type: Array<Include>
334
+ required: false
335
+ description: Array containing include parameters to include tags, operations, methods, paths, or content types.
336
+ codeBlock:
337
+ lang: typescript
338
+ title: Include
339
+ code: |
340
+ export type Include = {
341
+ type: 'tag' | 'operationId' | 'path' | 'method' | 'contentType'
342
+ pattern: string | RegExp
343
+ }
344
+ - name: exclude
345
+ type: Array<Exclude>
346
+ required: false
347
+ description: Array containing exclude parameters to exclude or skip tags, operations, methods, paths, or content types.
348
+ codeBlock:
349
+ lang: typescript
350
+ title: Exclude
351
+ code: |
352
+ export type Exclude = {
353
+ type: 'tag' | 'operationId' | 'path' | 'method' | 'contentType'
354
+ pattern: string | RegExp
355
+ }
356
+ - name: override
357
+ type: Array<Override>
358
+ required: false
359
+ description: Array containing override parameters to override `options` based on tags, operations, methods, paths, or content types.
360
+ codeBlock:
361
+ lang: typescript
362
+ title: Override
363
+ code: |
364
+ export type Override = {
365
+ type: 'tag' | 'operationId' | 'path' | 'method' | 'contentType'
366
+ pattern: string | RegExp
367
+ options: PluginOptions
368
+ }
369
+ - name: generators
370
+ type: Array<Generator<PluginZod>>
371
+ required: false
372
+ experimental: true
373
+ description: |
374
+ Define additional generators next to the built-in generators.
375
+
376
+ See [Generators](https://kubb.dev/docs/5.x/guides/creating-plugins) for more information on how to use generators.
377
+ - name: transformer
378
+ type: Visitor
379
+ required: false
380
+ description: |
381
+ A single AST visitor applied to every node before code is printed. Each method you provide replaces the corresponding built-in one. When a method returns `null` or `undefined`, the preset transformer's result is used as the fallback — so you only need to supply the methods you want to change.
382
+
383
+ Visitor methods receive the node and a context object. Return a modified node to replace it, or return `undefined`/`void` to leave it unchanged.
384
+ examples:
385
+ - name: Strip descriptions before printing
386
+ files:
387
+ - lang: typescript
388
+ code: |
389
+ import { pluginTs } from '@kubb/plugin-ts'
390
+
391
+ pluginTs({
392
+ transformer: {
393
+ schema(node) {
394
+ return { ...node, description: undefined }
395
+ },
396
+ },
397
+ })
398
+ twoslash: false
399
+ - name: Prefix every operationId
400
+ files:
401
+ - lang: typescript
402
+ code: |
403
+ import { pluginTs } from '@kubb/plugin-ts'
404
+
405
+ pluginTs({
406
+ transformer: {
407
+ operation(node) {
408
+ return { ...node, operationId: `api_${node.operationId}` }
409
+ },
410
+ },
411
+ })
412
+ twoslash: false
413
+ tip: |
414
+ Use `transformer` to rewrite node properties before printing. For output naming customization, use `resolver` instead.
415
+ - name: printer
416
+ type: '{ nodes?: PrinterZodNodes | PrinterZodMiniNodes }'
417
+ required: false
418
+ description: |
419
+ Override individual printer node handlers to customize how specific schema types are rendered. When `mini: true` the overrides apply to the Zod Mini printer.
420
+
421
+ Each key is a `SchemaType` (e.g. `'integer'`, `'date'`). The function you provide replaces the built-in handler for that type. Use `this.transform` to recurse into nested schema nodes.
422
+ examples:
423
+ - name: Override integer to z.number()
424
+ files:
425
+ - lang: typescript
426
+ code: |
427
+ import { pluginZod } from '@kubb/plugin-zod'
428
+
429
+ pluginZod({
430
+ printer: {
431
+ nodes: {
432
+ integer() {
433
+ return 'z.number()'
434
+ },
435
+ },
436
+ },
437
+ })
438
+ twoslash: false
439
+ - name: Override date to z.string().date()
440
+ files:
441
+ - lang: typescript
442
+ code: |
443
+ import { pluginZod } from '@kubb/plugin-zod'
444
+
445
+ pluginZod({
446
+ printer: {
447
+ nodes: {
448
+ date(node) {
449
+ return 'z.string().date()'
450
+ },
451
+ },
452
+ },
453
+ })
454
+ twoslash: false
455
+ - name: wrapOutput
456
+ type: '(arg: { output: string; schema: SchemaNode }) => string | undefined'
457
+ required: false
458
+ description: Wrap the generated Zod schema string with additional validation or metadata. The callback receives the schema's output string and the `SchemaNode` AST node, and returns the modified schema string.
459
+ tip: |
460
+ This is useful for cases where you need to extend the generated zod output with additional properties from an OpenAPI schema. E.g. in the case of `OpenAPI -> Zod -> OpenAPI`, you could include the examples from the schema for a given property and then ultimately provide a modified schema to a router that supports zod and OpenAPI spec generation.
461
+ codeBlock:
462
+ lang: typescript
463
+ title: Conditionally append .openapi() to the generated schema
464
+ code: |
465
+ wrapOutput: ({ output, schema }) => {
466
+ const metadata: Record<string, unknown> = {};
467
+
468
+ if (schema.keywords?.includes('example')) {
469
+ // access SchemaNode properties
470
+ }
471
+
472
+ if (Object.keys(metadata).length > 0) {
473
+ return `${output}.openapi(${JSON.stringify(metadata)})`;
474
+ }
475
+ };
476
+ examples:
477
+ - name: kubb.config.ts
478
+ files:
479
+ - lang: typescript
480
+ code: |
481
+ import { defineConfig } from 'kubb';
482
+ import { pluginTs } from '@kubb/plugin-ts';
483
+ import { pluginZod } from '@kubb/plugin-zod';
484
+
485
+ export default defineConfig({
486
+ input: {
487
+ path: './petStore.yaml',
488
+ },
489
+ output: {
490
+ path: './src/gen',
491
+ },
492
+ plugins: [
493
+ pluginTs(),
494
+ pluginZod({
495
+ output: {
496
+ path: './zod',
497
+ },
498
+ group: { type: 'tag', name: ({ group }) => `${group}Schemas` },
499
+ typed: true,
500
+ dateType: 'stringOffset',
501
+ importPath: 'zod',
502
+ }),
503
+ ],
504
+ });
505
+ twoslash: false
package/package.json CHANGED
@@ -1,74 +1,63 @@
1
1
  {
2
2
  "name": "@kubb/plugin-zod",
3
- "version": "5.0.0-alpha.9",
4
- "description": "Zod schema generator plugin for Kubb, creating type-safe validation schemas from OpenAPI specifications for runtime data validation.",
3
+ "version": "5.0.0-beta.15",
4
+ "description": "Generate Zod validation schemas from your OpenAPI specification for runtime data parsing and type safety. Pairs perfectly with @kubb/plugin-ts for end-to-end type coverage.",
5
5
  "keywords": [
6
- "zod",
7
- "schema",
8
- "schema-validation",
9
- "validation",
10
- "runtime-validation",
11
- "type-safety",
12
- "type-safe",
13
- "typescript",
6
+ "code-generation",
7
+ "codegen",
8
+ "kubb",
14
9
  "openapi",
10
+ "parse",
11
+ "runtime-validation",
12
+ "schema",
15
13
  "swagger",
16
- "oas",
17
- "code-generator",
18
- "codegen",
19
- "plugins",
20
- "kubb"
14
+ "typescript",
15
+ "validation",
16
+ "zod"
21
17
  ],
18
+ "license": "MIT",
19
+ "author": "stijnvanhulle",
22
20
  "repository": {
23
21
  "type": "git",
24
- "url": "git+https://github.com/kubb-labs/kubb.git",
22
+ "url": "git+https://github.com/kubb-labs/plugins.git",
25
23
  "directory": "packages/plugin-zod"
26
24
  },
27
- "license": "MIT",
28
- "author": "stijnvanhulle",
29
- "sideEffects": false,
25
+ "files": [
26
+ "src",
27
+ "templates",
28
+ "dist",
29
+ "extension.yaml",
30
+ "!/**/**.test.**",
31
+ "!/**/__tests__/**",
32
+ "!/**/__snapshots__/**"
33
+ ],
30
34
  "type": "module",
35
+ "sideEffects": false,
36
+ "main": "./dist/index.cjs",
37
+ "module": "./dist/index.js",
38
+ "types": "./dist/index.d.ts",
31
39
  "exports": {
32
40
  ".": {
33
41
  "import": "./dist/index.js",
34
42
  "require": "./dist/index.cjs"
35
43
  },
36
- "./components": {
37
- "import": "./dist/components.js",
38
- "require": "./dist/components.cjs"
39
- },
40
- "./generators": {
41
- "import": "./dist/generators.js",
42
- "require": "./dist/generators.cjs"
43
- },
44
- "./templates/ToZod.source": {
45
- "import": "./dist/templates/ToZod.source.js",
46
- "require": "./dist/templates/ToZod.source.cjs"
47
- },
48
44
  "./package.json": "./package.json"
49
45
  },
50
- "types": "./dist/index.d.ts",
51
- "typesVersions": {
52
- "*": {
53
- "components": [
54
- "./dist/components.d.ts"
55
- ],
56
- "generators": [
57
- "./dist/generators.d.ts"
58
- ],
59
- "templates/ToZod.source": [
60
- "./dist/templates/ToZod.source.d.ts"
61
- ]
62
- }
46
+ "publishConfig": {
47
+ "access": "public",
48
+ "registry": "https://registry.npmjs.org/"
49
+ },
50
+ "dependencies": {
51
+ "@kubb/core": "5.0.0-beta.19",
52
+ "@kubb/renderer-jsx": "5.0.0-beta.19",
53
+ "remeda": "^2.34.1"
54
+ },
55
+ "devDependencies": {
56
+ "@internals/utils": "0.0.0"
57
+ },
58
+ "peerDependencies": {
59
+ "@kubb/renderer-jsx": "5.0.0-beta.19"
63
60
  },
64
- "files": [
65
- "src",
66
- "templates",
67
- "dist",
68
- "!/**/**.test.**",
69
- "!/**/__tests__/**",
70
- "!/**/__snapshots__/**"
71
- ],
72
61
  "size-limit": [
73
62
  {
74
63
  "path": "./dist/*.js",
@@ -76,33 +65,14 @@
76
65
  "gzip": true
77
66
  }
78
67
  ],
79
- "dependencies": {
80
- "@kubb/react-fabric": "0.14.0",
81
- "remeda": "^2.33.6",
82
- "@kubb/core": "5.0.0-alpha.9",
83
- "@kubb/oas": "5.0.0-alpha.9",
84
- "@kubb/plugin-oas": "5.0.0-alpha.9",
85
- "@kubb/plugin-ts": "5.0.0-alpha.9"
86
- },
87
- "devDependencies": {
88
- "@asteasolutions/zod-to-openapi": "^8.4.3",
89
- "zod": "^3.25.76",
90
- "@internals/utils": "0.0.0"
91
- },
92
68
  "engines": {
93
69
  "node": ">=22"
94
70
  },
95
- "publishConfig": {
96
- "access": "public",
97
- "registry": "https://registry.npmjs.org/"
98
- },
99
- "main": "./dist/index.cjs",
100
- "module": "./dist/index.js",
101
71
  "scripts": {
102
72
  "build": "tsdown && size-limit",
103
73
  "clean": "npx rimraf ./dist",
104
- "lint": "bun biome lint .",
105
- "lint:fix": "bun biome lint --fix --unsafe .",
74
+ "lint": "oxlint .",
75
+ "lint:fix": "oxlint --fix .",
106
76
  "release": "pnpm publish --no-git-check",
107
77
  "release:canary": "bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check",
108
78
  "start": "tsdown --watch",