@kubb/plugin-zod 3.18.3 → 4.0.2

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/dist/{components-GvkeO2ig.cjs → components-DQw9romi.cjs} +85 -47
  2. package/dist/components-DQw9romi.cjs.map +1 -0
  3. package/dist/{components-CJ6RN1R2.js → components-GBbHstRa.js} +77 -43
  4. package/dist/components-GBbHstRa.js.map +1 -0
  5. package/dist/components.cjs +1 -1
  6. package/dist/components.js +1 -1
  7. package/dist/{generators-C3ALr3ph.js → generators-C6LY9NRE.js} +2 -2
  8. package/dist/{generators-C3ALr3ph.js.map → generators-C6LY9NRE.js.map} +1 -1
  9. package/dist/{generators-D3uH7-vO.cjs → generators-CfwuO_nS.cjs} +16 -9
  10. package/dist/{generators-D3uH7-vO.cjs.map → generators-CfwuO_nS.cjs.map} +1 -1
  11. package/dist/generators.cjs +2 -2
  12. package/dist/generators.js +2 -2
  13. package/dist/index.cjs +17 -15
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.js +7 -10
  16. package/dist/index.js.map +1 -1
  17. package/package.json +9 -10
  18. package/src/components/Zod.tsx +7 -5
  19. package/src/generators/__snapshots__/coercion.ts +5 -8
  20. package/src/generators/__snapshots__/coercionDates.ts +5 -8
  21. package/src/generators/__snapshots__/coercionNumbers.ts +5 -8
  22. package/src/generators/__snapshots__/coercionStrings.ts +5 -8
  23. package/src/generators/__snapshots__/deletePet.ts +1 -1
  24. package/src/generators/__snapshots__/deletePet_wrapOutput.ts +1 -1
  25. package/src/generators/__snapshots__/example.ts +1 -1
  26. package/src/generators/__snapshots__/getPets.ts +2 -2
  27. package/src/generators/__snapshots__/getPets_wrapOutput.ts +2 -2
  28. package/src/generators/__snapshots__/nullable.ts +1 -1
  29. package/src/generators/__snapshots__/oneof.ts +2 -2
  30. package/src/generators/__snapshots__/optionalPetInfer.ts +3 -3
  31. package/src/generators/__snapshots__/optionalPetTyped.ts +3 -3
  32. package/src/generators/__snapshots__/order.ts +6 -6
  33. package/src/generators/__snapshots__/orderDateTypeFalse.ts +6 -6
  34. package/src/generators/__snapshots__/orderDateTypeString.ts +6 -6
  35. package/src/generators/__snapshots__/pet.ts +5 -8
  36. package/src/generators/__snapshots__/petCoercion.ts +5 -8
  37. package/src/generators/__snapshots__/petTupleObject.ts +1 -1
  38. package/src/generators/__snapshots__/petV4.ts +5 -8
  39. package/src/generators/__snapshots__/petWithMapper.ts +5 -8
  40. package/src/generators/__snapshots__/pets.ts +1 -1
  41. package/src/generators/__snapshots__/queryAllDefaulted.ts +2 -2
  42. package/src/generators/__snapshots__/queryAllDefaulted_wrapOutput.ts +2 -2
  43. package/src/generators/__snapshots__/toy.ts +2 -2
  44. package/src/parser.ts +78 -21
  45. package/dist/components-CJ6RN1R2.js.map +0 -1
  46. package/dist/components-GvkeO2ig.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { Operations, Zod } from "./components-CJ6RN1R2.js";
1
+ import { Operations, Zod } from "./components-GBbHstRa.js";
2
2
  import { SchemaGenerator, createReactGenerator, schemaKeywords } from "@kubb/plugin-oas";
3
3
  import { pluginTsName } from "@kubb/plugin-ts";
4
4
  import { Oas } from "@kubb/plugin-oas/components";
@@ -251,4 +251,4 @@ const operationsGenerator = createReactGenerator({
251
251
 
252
252
  //#endregion
253
253
  export { operationsGenerator, zodGenerator };
254
- //# sourceMappingURL=generators-C3ALr3ph.js.map
254
+ //# sourceMappingURL=generators-C6LY9NRE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generators-C3ALr3ph.js","names":["options"],"sources":["../src/generators/zodGenerator.tsx","../src/generators/operationsGenerator.tsx"],"sourcesContent":["import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ operation, options }) {\n const { coercion: globalCoercion, inferred, typed, mapper, wrapOutput } = options\n\n const { plugin, pluginManager, mode } = useApp<PluginZod>()\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaObject, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n // hack so Params can be optional when needed\n const required = Array.isArray(schemaObject?.required) ? !!schemaObject.required.length : !!schemaObject?.required\n const someDefaults = Object.values(schemaObject.properties || {}).some((property) => Object.hasOwn(property, 'default') && property.default !== undefined)\n const optional = !required && !someDefaults && name.includes('Params')\n\n const tree = [...schemaGenerator.parse({ schemaObject, name }), optional ? { keyword: schemaKeywords.optional } : undefined].filter(Boolean)\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const coercion = name.includes('Params') ? { numbers: true, strings: false, dates: true } : globalCoercion\n\n const zod = {\n name: schemaManager.getName(name, { type: 'function' }),\n inferTypeName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, {\n type: 'type',\n pluginKey: [pluginTsName],\n }),\n file: schemaManager.getFile(options.operationName || name, {\n pluginKey: [pluginTsName],\n group,\n }),\n }\n\n return (\n <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && <File.Import isTypeOnly path={plugin.options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={description}\n tree={tree}\n rawSchema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n />\n </Oas.Schema>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['z']} path={plugin.options.importPath} />\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ schema, options }) {\n const { coercion, inferred, typed, mapper, importPath, wrapOutput, version } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n pluginManager,\n plugin: {\n options: { output, emptySchemaType },\n },\n } = useApp<PluginZod>()\n const oas = useOas()\n\n const imports = getImports(schema.tree)\n\n const zod = {\n name: getName(schema.name, { type: 'function' }),\n inferTypeName: getName(schema.name, { type: 'type' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n return (\n <File\n baseName={zod.file.baseName}\n path={zod.file.path}\n meta={zod.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['z']} path={importPath} />\n {typed && <File.Import isTypeOnly root={zod.file.path} path={type.file.path} name={[type.name]} />}\n {typed && <File.Import isTypeOnly path={options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={zod.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={schema.value.description}\n tree={schema.tree}\n rawSchema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n />\n </File>\n )\n },\n})\n","import { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File, useApp } from '@kubb/react'\nimport { Operations } from '../components/Operations'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations }) {\n const {\n pluginManager,\n plugin: {\n key: pluginKey,\n options: { output },\n },\n } = useApp<PluginZod>()\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager()\n\n const name = 'operations'\n const file = pluginManager.getFile({ name, extname: '.ts', pluginKey })\n\n const transformedOperations = operations.map((operation) => ({ operation, data: groupSchemasByName(operation, { type: 'function' }) }))\n\n const imports = Object.entries(transformedOperations)\n .map(([key, { data, operation }]) => {\n const names = [data.request, ...Object.values(data.responses), ...Object.values(data.parameters)].filter(Boolean)\n\n return <File.Import key={key} name={names} root={file.path} path={getFile(operation).path} />\n })\n .filter(Boolean)\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n {imports}\n <Operations name={name} operations={transformedOperations} />\n </File>\n )\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"generators-C6LY9NRE.js","names":["options"],"sources":["../src/generators/zodGenerator.tsx","../src/generators/operationsGenerator.tsx"],"sourcesContent":["import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ operation, options }) {\n const { coercion: globalCoercion, inferred, typed, mapper, wrapOutput } = options\n\n const { plugin, pluginManager, mode } = useApp<PluginZod>()\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaObject, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n // hack so Params can be optional when needed\n const required = Array.isArray(schemaObject?.required) ? !!schemaObject.required.length : !!schemaObject?.required\n const someDefaults = Object.values(schemaObject.properties || {}).some((property) => Object.hasOwn(property, 'default') && property.default !== undefined)\n const optional = !required && !someDefaults && name.includes('Params')\n\n const tree = [...schemaGenerator.parse({ schemaObject, name }), optional ? { keyword: schemaKeywords.optional } : undefined].filter(Boolean)\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const coercion = name.includes('Params') ? { numbers: true, strings: false, dates: true } : globalCoercion\n\n const zod = {\n name: schemaManager.getName(name, { type: 'function' }),\n inferTypeName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, {\n type: 'type',\n pluginKey: [pluginTsName],\n }),\n file: schemaManager.getFile(options.operationName || name, {\n pluginKey: [pluginTsName],\n group,\n }),\n }\n\n return (\n <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && <File.Import isTypeOnly path={plugin.options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={description}\n tree={tree}\n rawSchema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n />\n </Oas.Schema>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['z']} path={plugin.options.importPath} />\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ schema, options }) {\n const { coercion, inferred, typed, mapper, importPath, wrapOutput, version } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n pluginManager,\n plugin: {\n options: { output, emptySchemaType },\n },\n } = useApp<PluginZod>()\n const oas = useOas()\n\n const imports = getImports(schema.tree)\n\n const zod = {\n name: getName(schema.name, { type: 'function' }),\n inferTypeName: getName(schema.name, { type: 'type' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n return (\n <File\n baseName={zod.file.baseName}\n path={zod.file.path}\n meta={zod.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['z']} path={importPath} />\n {typed && <File.Import isTypeOnly root={zod.file.path} path={type.file.path} name={[type.name]} />}\n {typed && <File.Import isTypeOnly path={options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={zod.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={schema.value.description}\n tree={schema.tree}\n rawSchema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n />\n </File>\n )\n },\n})\n","import { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File, useApp } from '@kubb/react'\nimport { Operations } from '../components/Operations'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations }) {\n const {\n pluginManager,\n plugin: {\n key: pluginKey,\n options: { output },\n },\n } = useApp<PluginZod>()\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager()\n\n const name = 'operations'\n const file = pluginManager.getFile({ name, extname: '.ts', pluginKey })\n\n const transformedOperations = operations.map((operation) => ({ operation, data: groupSchemasByName(operation, { type: 'function' }) }))\n\n const imports = Object.entries(transformedOperations)\n .map(([key, { data, operation }]) => {\n const names = [data.request, ...Object.values(data.responses), ...Object.values(data.parameters)].filter(Boolean)\n\n return <File.Import key={key} name={names} root={file.path} path={getFile(operation).path} />\n })\n .filter(Boolean)\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n {imports}\n <Operations name={name} operations={transformedOperations} />\n </File>\n )\n },\n})\n"],"mappings":"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"}
@@ -1,11 +1,18 @@
1
- const require_components = require('./components-GvkeO2ig.cjs');
2
- const __kubb_plugin_oas = require_components.__toESM(require("@kubb/plugin-oas"));
3
- const __kubb_plugin_ts = require_components.__toESM(require("@kubb/plugin-ts"));
4
- const __kubb_plugin_oas_components = require_components.__toESM(require("@kubb/plugin-oas/components"));
5
- const __kubb_plugin_oas_hooks = require_components.__toESM(require("@kubb/plugin-oas/hooks"));
6
- const __kubb_plugin_oas_utils = require_components.__toESM(require("@kubb/plugin-oas/utils"));
7
- const __kubb_react = require_components.__toESM(require("@kubb/react"));
8
- const __kubb_react_jsx_runtime = require_components.__toESM(require("@kubb/react/jsx-runtime"));
1
+ const require_components = require('./components-DQw9romi.cjs');
2
+ let __kubb_plugin_oas = require("@kubb/plugin-oas");
3
+ __kubb_plugin_oas = require_components.__toESM(__kubb_plugin_oas);
4
+ let __kubb_plugin_ts = require("@kubb/plugin-ts");
5
+ __kubb_plugin_ts = require_components.__toESM(__kubb_plugin_ts);
6
+ let __kubb_plugin_oas_components = require("@kubb/plugin-oas/components");
7
+ __kubb_plugin_oas_components = require_components.__toESM(__kubb_plugin_oas_components);
8
+ let __kubb_plugin_oas_hooks = require("@kubb/plugin-oas/hooks");
9
+ __kubb_plugin_oas_hooks = require_components.__toESM(__kubb_plugin_oas_hooks);
10
+ let __kubb_plugin_oas_utils = require("@kubb/plugin-oas/utils");
11
+ __kubb_plugin_oas_utils = require_components.__toESM(__kubb_plugin_oas_utils);
12
+ let __kubb_react = require("@kubb/react");
13
+ __kubb_react = require_components.__toESM(__kubb_react);
14
+ let __kubb_react_jsx_runtime = require("@kubb/react/jsx-runtime");
15
+ __kubb_react_jsx_runtime = require_components.__toESM(__kubb_react_jsx_runtime);
9
16
 
10
17
  //#region src/generators/zodGenerator.tsx
11
18
  const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
@@ -262,4 +269,4 @@ Object.defineProperty(exports, 'zodGenerator', {
262
269
  return zodGenerator;
263
270
  }
264
271
  });
265
- //# sourceMappingURL=generators-D3uH7-vO.cjs.map
272
+ //# sourceMappingURL=generators-CfwuO_nS.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generators-D3uH7-vO.cjs","names":["SchemaGenerator","options","schemaKeywords","pluginTsName","Oas","File","Zod","File","Operations"],"sources":["../src/generators/zodGenerator.tsx","../src/generators/operationsGenerator.tsx"],"sourcesContent":["import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ operation, options }) {\n const { coercion: globalCoercion, inferred, typed, mapper, wrapOutput } = options\n\n const { plugin, pluginManager, mode } = useApp<PluginZod>()\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaObject, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n // hack so Params can be optional when needed\n const required = Array.isArray(schemaObject?.required) ? !!schemaObject.required.length : !!schemaObject?.required\n const someDefaults = Object.values(schemaObject.properties || {}).some((property) => Object.hasOwn(property, 'default') && property.default !== undefined)\n const optional = !required && !someDefaults && name.includes('Params')\n\n const tree = [...schemaGenerator.parse({ schemaObject, name }), optional ? { keyword: schemaKeywords.optional } : undefined].filter(Boolean)\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const coercion = name.includes('Params') ? { numbers: true, strings: false, dates: true } : globalCoercion\n\n const zod = {\n name: schemaManager.getName(name, { type: 'function' }),\n inferTypeName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, {\n type: 'type',\n pluginKey: [pluginTsName],\n }),\n file: schemaManager.getFile(options.operationName || name, {\n pluginKey: [pluginTsName],\n group,\n }),\n }\n\n return (\n <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && <File.Import isTypeOnly path={plugin.options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={description}\n tree={tree}\n rawSchema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n />\n </Oas.Schema>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['z']} path={plugin.options.importPath} />\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ schema, options }) {\n const { coercion, inferred, typed, mapper, importPath, wrapOutput, version } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n pluginManager,\n plugin: {\n options: { output, emptySchemaType },\n },\n } = useApp<PluginZod>()\n const oas = useOas()\n\n const imports = getImports(schema.tree)\n\n const zod = {\n name: getName(schema.name, { type: 'function' }),\n inferTypeName: getName(schema.name, { type: 'type' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n return (\n <File\n baseName={zod.file.baseName}\n path={zod.file.path}\n meta={zod.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['z']} path={importPath} />\n {typed && <File.Import isTypeOnly root={zod.file.path} path={type.file.path} name={[type.name]} />}\n {typed && <File.Import isTypeOnly path={options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={zod.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={schema.value.description}\n tree={schema.tree}\n rawSchema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n />\n </File>\n )\n },\n})\n","import { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File, useApp } from '@kubb/react'\nimport { Operations } from '../components/Operations'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations }) {\n const {\n pluginManager,\n plugin: {\n key: pluginKey,\n options: { output },\n },\n } = useApp<PluginZod>()\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager()\n\n const name = 'operations'\n const file = pluginManager.getFile({ name, extname: '.ts', pluginKey })\n\n const transformedOperations = operations.map((operation) => ({ operation, data: groupSchemasByName(operation, { type: 'function' }) }))\n\n const imports = Object.entries(transformedOperations)\n .map(([key, { data, operation }]) => {\n const names = [data.request, ...Object.values(data.responses), ...Object.values(data.parameters)].filter(Boolean)\n\n return <File.Import key={key} name={names} root={file.path} path={getFile(operation).path} />\n })\n .filter(Boolean)\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n {imports}\n <Operations name={name} operations={transformedOperations} />\n </File>\n )\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"generators-CfwuO_nS.cjs","names":["SchemaGenerator","options","schemaKeywords","pluginTsName","Oas","File","Zod","File","Operations"],"sources":["../src/generators/zodGenerator.tsx","../src/generators/operationsGenerator.tsx"],"sourcesContent":["import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ operation, options }) {\n const { coercion: globalCoercion, inferred, typed, mapper, wrapOutput } = options\n\n const { plugin, pluginManager, mode } = useApp<PluginZod>()\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaObject, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n // hack so Params can be optional when needed\n const required = Array.isArray(schemaObject?.required) ? !!schemaObject.required.length : !!schemaObject?.required\n const someDefaults = Object.values(schemaObject.properties || {}).some((property) => Object.hasOwn(property, 'default') && property.default !== undefined)\n const optional = !required && !someDefaults && name.includes('Params')\n\n const tree = [...schemaGenerator.parse({ schemaObject, name }), optional ? { keyword: schemaKeywords.optional } : undefined].filter(Boolean)\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const coercion = name.includes('Params') ? { numbers: true, strings: false, dates: true } : globalCoercion\n\n const zod = {\n name: schemaManager.getName(name, { type: 'function' }),\n inferTypeName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, {\n type: 'type',\n pluginKey: [pluginTsName],\n }),\n file: schemaManager.getFile(options.operationName || name, {\n pluginKey: [pluginTsName],\n group,\n }),\n }\n\n return (\n <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && <File.Import isTypeOnly path={plugin.options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={description}\n tree={tree}\n rawSchema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n />\n </Oas.Schema>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['z']} path={plugin.options.importPath} />\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ schema, options }) {\n const { coercion, inferred, typed, mapper, importPath, wrapOutput, version } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n pluginManager,\n plugin: {\n options: { output, emptySchemaType },\n },\n } = useApp<PluginZod>()\n const oas = useOas()\n\n const imports = getImports(schema.tree)\n\n const zod = {\n name: getName(schema.name, { type: 'function' }),\n inferTypeName: getName(schema.name, { type: 'type' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n return (\n <File\n baseName={zod.file.baseName}\n path={zod.file.path}\n meta={zod.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['z']} path={importPath} />\n {typed && <File.Import isTypeOnly root={zod.file.path} path={type.file.path} name={[type.name]} />}\n {typed && <File.Import isTypeOnly path={options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={zod.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={schema.value.description}\n tree={schema.tree}\n rawSchema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n />\n </File>\n )\n },\n})\n","import { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File, useApp } from '@kubb/react'\nimport { Operations } from '../components/Operations'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations }) {\n const {\n pluginManager,\n plugin: {\n key: pluginKey,\n options: { output },\n },\n } = useApp<PluginZod>()\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager()\n\n const name = 'operations'\n const file = pluginManager.getFile({ name, extname: '.ts', pluginKey })\n\n const transformedOperations = operations.map((operation) => ({ operation, data: groupSchemasByName(operation, { type: 'function' }) }))\n\n const imports = Object.entries(transformedOperations)\n .map(([key, { data, operation }]) => {\n const names = [data.request, ...Object.values(data.responses), ...Object.values(data.parameters)].filter(Boolean)\n\n return <File.Import key={key} name={names} root={file.path} path={getFile(operation).path} />\n })\n .filter(Boolean)\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n {imports}\n <Operations name={name} operations={transformedOperations} />\n </File>\n )\n },\n})\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- require('./components-GvkeO2ig.cjs');
2
- const require_generators = require('./generators-D3uH7-vO.cjs');
1
+ require('./components-DQw9romi.cjs');
2
+ const require_generators = require('./generators-CfwuO_nS.cjs');
3
3
 
4
4
  exports.operationsGenerator = require_generators.operationsGenerator;
5
5
  exports.zodGenerator = require_generators.zodGenerator;
@@ -1,4 +1,4 @@
1
- import "./components-CJ6RN1R2.js";
2
- import { operationsGenerator, zodGenerator } from "./generators-C3ALr3ph.js";
1
+ import "./components-GBbHstRa.js";
2
+ import { operationsGenerator, zodGenerator } from "./generators-C6LY9NRE.js";
3
3
 
4
4
  export { operationsGenerator, zodGenerator };
package/dist/index.cjs CHANGED
@@ -1,10 +1,15 @@
1
- const require_components = require('./components-GvkeO2ig.cjs');
2
- const require_generators = require('./generators-D3uH7-vO.cjs');
3
- const node_path = require_components.__toESM(require("node:path"));
4
- const __kubb_core = require_components.__toESM(require("@kubb/core"));
5
- const __kubb_core_transformers = require_components.__toESM(require("@kubb/core/transformers"));
6
- const __kubb_plugin_oas = require_components.__toESM(require("@kubb/plugin-oas"));
7
- const __kubb_plugin_ts = require_components.__toESM(require("@kubb/plugin-ts"));
1
+ const require_components = require('./components-DQw9romi.cjs');
2
+ const require_generators = require('./generators-CfwuO_nS.cjs');
3
+ let node_path = require("node:path");
4
+ node_path = require_components.__toESM(node_path);
5
+ let __kubb_core = require("@kubb/core");
6
+ __kubb_core = require_components.__toESM(__kubb_core);
7
+ let __kubb_core_transformers = require("@kubb/core/transformers");
8
+ __kubb_core_transformers = require_components.__toESM(__kubb_core_transformers);
9
+ let __kubb_plugin_oas = require("@kubb/plugin-oas");
10
+ __kubb_plugin_oas = require_components.__toESM(__kubb_plugin_oas);
11
+ let __kubb_plugin_ts = require("@kubb/plugin-ts");
12
+ __kubb_plugin_ts = require_components.__toESM(__kubb_plugin_ts);
8
13
 
9
14
  //#region src/plugin.ts
10
15
  const pluginZodName = "plugin-zod";
@@ -37,8 +42,7 @@ const pluginZod = (0, __kubb_core.createPlugin)((options) => {
37
42
  pre: [__kubb_plugin_oas.pluginOasName, typed ? __kubb_plugin_ts.pluginTsName : void 0].filter(Boolean),
38
43
  resolvePath(baseName, pathMode, options$1) {
39
44
  const root = node_path.default.resolve(this.config.root, this.config.output.path);
40
- const mode = pathMode ?? __kubb_core.FileManager.getMode(node_path.default.resolve(root, output.path));
41
- if (mode === "single")
45
+ if ((pathMode ?? __kubb_core.FileManager.getMode(node_path.default.resolve(root, output.path))) === "single")
42
46
  /**
43
47
  * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend
44
48
  * Other plugins then need to call addOrAppend instead of just add from the fileManager class
@@ -67,7 +71,7 @@ const pluginZod = (0, __kubb_core.createPlugin)((options) => {
67
71
  const oas = await swaggerPlugin.context.getOas();
68
72
  const root = node_path.default.resolve(this.config.root, this.config.output.path);
69
73
  const mode = __kubb_core.FileManager.getMode(node_path.default.resolve(root, output.path));
70
- const schemaGenerator = new __kubb_plugin_oas.SchemaGenerator(this.plugin.options, {
74
+ const schemaFiles = await new __kubb_plugin_oas.SchemaGenerator(this.plugin.options, {
71
75
  oas,
72
76
  pluginManager: this.pluginManager,
73
77
  plugin: this.plugin,
@@ -76,10 +80,9 @@ const pluginZod = (0, __kubb_core.createPlugin)((options) => {
76
80
  override,
77
81
  mode,
78
82
  output: output.path
79
- });
80
- const schemaFiles = await schemaGenerator.build(...generators);
83
+ }).build(...generators);
81
84
  await this.addFile(...schemaFiles);
82
- const operationGenerator = new __kubb_plugin_oas.OperationGenerator(this.plugin.options, {
85
+ const operationFiles = await new __kubb_plugin_oas.OperationGenerator(this.plugin.options, {
83
86
  oas,
84
87
  pluginManager: this.pluginManager,
85
88
  plugin: this.plugin,
@@ -88,8 +91,7 @@ const pluginZod = (0, __kubb_core.createPlugin)((options) => {
88
91
  include,
89
92
  override,
90
93
  mode
91
- });
92
- const operationFiles = await operationGenerator.build(...generators);
94
+ }).build(...generators);
93
95
  await this.addFile(...operationFiles);
94
96
  const barrelFiles = await this.fileManager.getBarrelFiles({
95
97
  type: output.barrelType ?? "named",
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["PackageManager","zodGenerator","operationsGenerator","pluginOasName","pluginTsName","path","FileManager","options","groupName: Group['name']","PluginManager","SchemaGenerator","OperationGenerator"],"sources":["../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { createPlugin, FileManager, type Group, PackageManager, type Plugin, PluginManager } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { operationsGenerator } from './generators'\nimport { zodGenerator } from './generators/zodGenerator.tsx'\nimport type { PluginZod } from './types.ts'\n\nexport const pluginZodName = 'plugin-zod' satisfies PluginZod['name']\n\nexport const pluginZod = createPlugin<PluginZod>((options) => {\n const {\n output = { path: 'zod', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n dateType = 'string',\n unknownType = 'any',\n emptySchemaType = unknownType,\n typed = false,\n mapper = {},\n operations = false,\n version = new PackageManager().isValidSync('zod', '>=4') ? '4' : '3',\n importPath = version === '4' ? 'zod/v4' : 'zod',\n coercion = false,\n inferred = false,\n generators = [zodGenerator, operations ? operationsGenerator : undefined].filter(Boolean),\n wrapOutput = undefined,\n contentType,\n } = options\n\n return {\n name: pluginZodName,\n options: {\n output,\n transformers,\n include,\n exclude,\n override,\n typed,\n dateType,\n unknownType,\n emptySchemaType,\n mapper,\n importPath,\n coercion,\n operations,\n inferred,\n group,\n wrapOutput,\n version,\n },\n pre: [pluginOasName, typed ? pluginTsName : undefined].filter(Boolean),\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n let resolvedName = camelCase(name, {\n suffix: type ? 'schema' : undefined,\n isFile: type === 'file',\n })\n\n if (type === 'type') {\n resolvedName = pascalCase(resolvedName)\n }\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n await this.addFile(...operationFiles)\n\n const barrelFiles = await this.fileManager.getBarrelFiles({\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n"],"mappings":";;;;;;;;;AAUA,MAAa,gBAAgB;AAE7B,MAAa,2CAAqC,YAAY;CAC5D,MAAM,EACJ,SAAS;EAAE,MAAM;EAAO,YAAY;IACpC,OACA,UAAU,IACV,SACA,WAAW,IACX,eAAe,IACf,WAAW,UACX,cAAc,OACd,kBAAkB,aAClB,QAAQ,OACR,SAAS,IACT,aAAa,OACb,UAAU,IAAIA,6BAAiB,YAAY,OAAO,SAAS,MAAM,KACjE,aAAa,YAAY,MAAM,WAAW,OAC1C,WAAW,OACX,WAAW,OACX,aAAa,CAACC,iCAAc,aAAaC,yCAAsB,QAAW,OAAO,UACjF,aAAa,QACb,gBACE;AAEJ,QAAO;EACL,MAAM;EACN,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;EAEF,KAAK,CAACC,iCAAe,QAAQC,gCAAe,QAAW,OAAO;EAC9D,YAAY,UAAU,UAAU,WAAS;GACvC,MAAM,OAAOC,kBAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO;GAC/D,MAAM,OAAO,YAAYC,wBAAY,QAAQD,kBAAK,QAAQ,MAAM,OAAO;AAEvE,OAAI,SAAS;;;;;AAKX,UAAOA,kBAAK,QAAQ,MAAM,OAAO;AAGnC,OAAI,UAAUE,WAAS,OAAO,QAAQA,WAAS,OAAO,MAAM;IAC1D,MAAMC,YAA2B,OAAO,OACpC,MAAM,QACL,QAAQ;AACP,SAAI,OAAO,SAAS,OAClB,QAAO,GAAG,IAAI,MAAM,MAAM,KAAK;AAEjC,YAAO,2CAAa,IAAI,OAAO;;AAGrC,WAAOH,kBAAK,QACV,MACA,OAAO,MACP,UAAU,EACR,OAAO,MAAM,SAAS,SAASE,UAAQ,MAAM,OAAQA,UAAQ,MAAM,QAErE;;AAIJ,UAAOF,kBAAK,QAAQ,MAAM,OAAO,MAAM;;EAEzC,YAAY,MAAM,MAAM;GACtB,IAAI,uDAAyB,MAAM;IACjC,QAAQ,OAAO,WAAW;IAC1B,QAAQ,SAAS;;AAGnB,OAAI,SAAS,OACX,yDAA0B;AAG5B,OAAI,KACF,QAAO,cAAc,OAAO,cAAc,SAAS;AAGrD,UAAO;;EAET,MAAM,aAAa;GACjB,MAAM,CAAC,iBAAiDI,0BAAc,mBAAyC,KAAK,SAAS,CAACN;GAE9H,MAAM,MAAM,MAAM,cAAc,QAAQ;GACxC,MAAM,OAAOE,kBAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO;GAC/D,MAAM,OAAOC,wBAAY,QAAQD,kBAAK,QAAQ,MAAM,OAAO;GAE3D,MAAM,kBAAkB,IAAIK,kCAAgB,KAAK,OAAO,SAAS;IAC/D;IACA,eAAe,KAAK;IACpB,QAAQ,KAAK;IACb;IACA,SAAS;IACT;IACA;IACA,QAAQ,OAAO;;GAGjB,MAAM,cAAc,MAAM,gBAAgB,MAAM,GAAG;AACnD,SAAM,KAAK,QAAQ,GAAG;GAEtB,MAAM,qBAAqB,IAAIC,qCAAmB,KAAK,OAAO,SAAS;IACrE;IACA,eAAe,KAAK;IACpB,QAAQ,KAAK;IACb;IACA;IACA;IACA;IACA;;GAGF,MAAM,iBAAiB,MAAM,mBAAmB,MAAM,GAAG;AACzD,SAAM,KAAK,QAAQ,GAAG;GAEtB,MAAM,cAAc,MAAM,KAAK,YAAY,eAAe;IACxD,MAAM,OAAO,cAAc;IAC3B;IACA;IACA,MAAM,EACJ,WAAW,KAAK,OAAO;IAEzB,QAAQ,KAAK;;AAGf,SAAM,KAAK,QAAQ,GAAG"}
1
+ {"version":3,"file":"index.cjs","names":["PackageManager","zodGenerator","operationsGenerator","pluginOasName","pluginTsName","path","FileManager","options","groupName: Group['name']","PluginManager","SchemaGenerator","OperationGenerator"],"sources":["../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { createPlugin, FileManager, type Group, PackageManager, type Plugin, PluginManager } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { operationsGenerator } from './generators'\nimport { zodGenerator } from './generators/zodGenerator.tsx'\nimport type { PluginZod } from './types.ts'\n\nexport const pluginZodName = 'plugin-zod' satisfies PluginZod['name']\n\nexport const pluginZod = createPlugin<PluginZod>((options) => {\n const {\n output = { path: 'zod', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n dateType = 'string',\n unknownType = 'any',\n emptySchemaType = unknownType,\n typed = false,\n mapper = {},\n operations = false,\n version = new PackageManager().isValidSync('zod', '>=4') ? '4' : '3',\n importPath = version === '4' ? 'zod/v4' : 'zod',\n coercion = false,\n inferred = false,\n generators = [zodGenerator, operations ? operationsGenerator : undefined].filter(Boolean),\n wrapOutput = undefined,\n contentType,\n } = options\n\n return {\n name: pluginZodName,\n options: {\n output,\n transformers,\n include,\n exclude,\n override,\n typed,\n dateType,\n unknownType,\n emptySchemaType,\n mapper,\n importPath,\n coercion,\n operations,\n inferred,\n group,\n wrapOutput,\n version,\n },\n pre: [pluginOasName, typed ? pluginTsName : undefined].filter(Boolean),\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n let resolvedName = camelCase(name, {\n suffix: type ? 'schema' : undefined,\n isFile: type === 'file',\n })\n\n if (type === 'type') {\n resolvedName = pascalCase(resolvedName)\n }\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n await this.addFile(...operationFiles)\n\n const barrelFiles = await this.fileManager.getBarrelFiles({\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import "./components-CJ6RN1R2.js";
2
- import { operationsGenerator, zodGenerator } from "./generators-C3ALr3ph.js";
1
+ import "./components-GBbHstRa.js";
2
+ import { operationsGenerator, zodGenerator } from "./generators-C6LY9NRE.js";
3
3
  import path from "node:path";
4
4
  import { FileManager, PackageManager, PluginManager, createPlugin } from "@kubb/core";
5
5
  import { camelCase, pascalCase } from "@kubb/core/transformers";
@@ -37,8 +37,7 @@ const pluginZod = createPlugin((options) => {
37
37
  pre: [pluginOasName, typed ? pluginTsName : void 0].filter(Boolean),
38
38
  resolvePath(baseName, pathMode, options$1) {
39
39
  const root = path.resolve(this.config.root, this.config.output.path);
40
- const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path));
41
- if (mode === "single")
40
+ if ((pathMode ?? FileManager.getMode(path.resolve(root, output.path))) === "single")
42
41
  /**
43
42
  * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend
44
43
  * Other plugins then need to call addOrAppend instead of just add from the fileManager class
@@ -67,7 +66,7 @@ const pluginZod = createPlugin((options) => {
67
66
  const oas = await swaggerPlugin.context.getOas();
68
67
  const root = path.resolve(this.config.root, this.config.output.path);
69
68
  const mode = FileManager.getMode(path.resolve(root, output.path));
70
- const schemaGenerator = new SchemaGenerator(this.plugin.options, {
69
+ const schemaFiles = await new SchemaGenerator(this.plugin.options, {
71
70
  oas,
72
71
  pluginManager: this.pluginManager,
73
72
  plugin: this.plugin,
@@ -76,10 +75,9 @@ const pluginZod = createPlugin((options) => {
76
75
  override,
77
76
  mode,
78
77
  output: output.path
79
- });
80
- const schemaFiles = await schemaGenerator.build(...generators);
78
+ }).build(...generators);
81
79
  await this.addFile(...schemaFiles);
82
- const operationGenerator = new OperationGenerator(this.plugin.options, {
80
+ const operationFiles = await new OperationGenerator(this.plugin.options, {
83
81
  oas,
84
82
  pluginManager: this.pluginManager,
85
83
  plugin: this.plugin,
@@ -88,8 +86,7 @@ const pluginZod = createPlugin((options) => {
88
86
  include,
89
87
  override,
90
88
  mode
91
- });
92
- const operationFiles = await operationGenerator.build(...generators);
89
+ }).build(...generators);
93
90
  await this.addFile(...operationFiles);
94
91
  const barrelFiles = await this.fileManager.getBarrelFiles({
95
92
  type: output.barrelType ?? "named",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["options","groupName: Group['name']","transformers"],"sources":["../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { createPlugin, FileManager, type Group, PackageManager, type Plugin, PluginManager } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { operationsGenerator } from './generators'\nimport { zodGenerator } from './generators/zodGenerator.tsx'\nimport type { PluginZod } from './types.ts'\n\nexport const pluginZodName = 'plugin-zod' satisfies PluginZod['name']\n\nexport const pluginZod = createPlugin<PluginZod>((options) => {\n const {\n output = { path: 'zod', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n dateType = 'string',\n unknownType = 'any',\n emptySchemaType = unknownType,\n typed = false,\n mapper = {},\n operations = false,\n version = new PackageManager().isValidSync('zod', '>=4') ? '4' : '3',\n importPath = version === '4' ? 'zod/v4' : 'zod',\n coercion = false,\n inferred = false,\n generators = [zodGenerator, operations ? operationsGenerator : undefined].filter(Boolean),\n wrapOutput = undefined,\n contentType,\n } = options\n\n return {\n name: pluginZodName,\n options: {\n output,\n transformers,\n include,\n exclude,\n override,\n typed,\n dateType,\n unknownType,\n emptySchemaType,\n mapper,\n importPath,\n coercion,\n operations,\n inferred,\n group,\n wrapOutput,\n version,\n },\n pre: [pluginOasName, typed ? pluginTsName : undefined].filter(Boolean),\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n let resolvedName = camelCase(name, {\n suffix: type ? 'schema' : undefined,\n isFile: type === 'file',\n })\n\n if (type === 'type') {\n resolvedName = pascalCase(resolvedName)\n }\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n await this.addFile(...operationFiles)\n\n const barrelFiles = await this.fileManager.getBarrelFiles({\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n"],"mappings":";;;;;;;;;AAUA,MAAa,gBAAgB;AAE7B,MAAa,YAAY,cAAyB,YAAY;CAC5D,MAAM,EACJ,SAAS;EAAE,MAAM;EAAO,YAAY;IACpC,OACA,UAAU,IACV,SACA,WAAW,IACX,+BAAe,IACf,WAAW,UACX,cAAc,OACd,kBAAkB,aAClB,QAAQ,OACR,SAAS,IACT,aAAa,OACb,UAAU,IAAI,iBAAiB,YAAY,OAAO,SAAS,MAAM,KACjE,aAAa,YAAY,MAAM,WAAW,OAC1C,WAAW,OACX,WAAW,OACX,aAAa,CAAC,cAAc,aAAa,sBAAsB,QAAW,OAAO,UACjF,aAAa,QACb,gBACE;AAEJ,QAAO;EACL,MAAM;EACN,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;EAEF,KAAK,CAAC,eAAe,QAAQ,eAAe,QAAW,OAAO;EAC9D,YAAY,UAAU,UAAU,WAAS;GACvC,MAAM,OAAO,KAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO;GAC/D,MAAM,OAAO,YAAY,YAAY,QAAQ,KAAK,QAAQ,MAAM,OAAO;AAEvE,OAAI,SAAS;;;;;AAKX,UAAO,KAAK,QAAQ,MAAM,OAAO;AAGnC,OAAI,UAAUA,WAAS,OAAO,QAAQA,WAAS,OAAO,MAAM;IAC1D,MAAMC,YAA2B,OAAO,OACpC,MAAM,QACL,QAAQ;AACP,SAAI,OAAO,SAAS,OAClB,QAAO,GAAG,IAAI,MAAM,MAAM,KAAK;AAEjC,YAAO,GAAG,UAAU,IAAI,OAAO;;AAGrC,WAAO,KAAK,QACV,MACA,OAAO,MACP,UAAU,EACR,OAAO,MAAM,SAAS,SAASD,UAAQ,MAAM,OAAQA,UAAQ,MAAM,QAErE;;AAIJ,UAAO,KAAK,QAAQ,MAAM,OAAO,MAAM;;EAEzC,YAAY,MAAM,MAAM;GACtB,IAAI,eAAe,UAAU,MAAM;IACjC,QAAQ,OAAO,WAAW;IAC1B,QAAQ,SAAS;;AAGnB,OAAI,SAAS,OACX,gBAAe,WAAW;AAG5B,OAAI,KACF,QAAOE,gBAAc,OAAO,cAAc,SAAS;AAGrD,UAAO;;EAET,MAAM,aAAa;GACjB,MAAM,CAAC,iBAAiD,cAAc,mBAAyC,KAAK,SAAS,CAAC;GAE9H,MAAM,MAAM,MAAM,cAAc,QAAQ;GACxC,MAAM,OAAO,KAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO;GAC/D,MAAM,OAAO,YAAY,QAAQ,KAAK,QAAQ,MAAM,OAAO;GAE3D,MAAM,kBAAkB,IAAI,gBAAgB,KAAK,OAAO,SAAS;IAC/D;IACA,eAAe,KAAK;IACpB,QAAQ,KAAK;IACb;IACA,SAAS;IACT;IACA;IACA,QAAQ,OAAO;;GAGjB,MAAM,cAAc,MAAM,gBAAgB,MAAM,GAAG;AACnD,SAAM,KAAK,QAAQ,GAAG;GAEtB,MAAM,qBAAqB,IAAI,mBAAmB,KAAK,OAAO,SAAS;IACrE;IACA,eAAe,KAAK;IACpB,QAAQ,KAAK;IACb;IACA;IACA;IACA;IACA;;GAGF,MAAM,iBAAiB,MAAM,mBAAmB,MAAM,GAAG;AACzD,SAAM,KAAK,QAAQ,GAAG;GAEtB,MAAM,cAAc,MAAM,KAAK,YAAY,eAAe;IACxD,MAAM,OAAO,cAAc;IAC3B;IACA;IACA,MAAM,EACJ,WAAW,KAAK,OAAO;IAEzB,QAAQ,KAAK;;AAGf,SAAM,KAAK,QAAQ,GAAG"}
1
+ {"version":3,"file":"index.js","names":["options","groupName: Group['name']","transformers"],"sources":["../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { createPlugin, FileManager, type Group, PackageManager, type Plugin, PluginManager } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport { OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { operationsGenerator } from './generators'\nimport { zodGenerator } from './generators/zodGenerator.tsx'\nimport type { PluginZod } from './types.ts'\n\nexport const pluginZodName = 'plugin-zod' satisfies PluginZod['name']\n\nexport const pluginZod = createPlugin<PluginZod>((options) => {\n const {\n output = { path: 'zod', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n dateType = 'string',\n unknownType = 'any',\n emptySchemaType = unknownType,\n typed = false,\n mapper = {},\n operations = false,\n version = new PackageManager().isValidSync('zod', '>=4') ? '4' : '3',\n importPath = version === '4' ? 'zod/v4' : 'zod',\n coercion = false,\n inferred = false,\n generators = [zodGenerator, operations ? operationsGenerator : undefined].filter(Boolean),\n wrapOutput = undefined,\n contentType,\n } = options\n\n return {\n name: pluginZodName,\n options: {\n output,\n transformers,\n include,\n exclude,\n override,\n typed,\n dateType,\n unknownType,\n emptySchemaType,\n mapper,\n importPath,\n coercion,\n operations,\n inferred,\n group,\n wrapOutput,\n version,\n },\n pre: [pluginOasName, typed ? pluginTsName : undefined].filter(Boolean),\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n let resolvedName = camelCase(name, {\n suffix: type ? 'schema' : undefined,\n isFile: type === 'file',\n })\n\n if (type === 'type') {\n resolvedName = pascalCase(resolvedName)\n }\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n await this.addFile(...operationFiles)\n\n const barrelFiles = await this.fileManager.getBarrelFiles({\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-zod",
3
- "version": "3.18.3",
3
+ "version": "4.0.2",
4
4
  "description": "Zod schema generator plugin for Kubb, creating type-safe validation schemas from OpenAPI specifications for runtime data validation.",
5
5
  "keywords": [
6
6
  "zod",
@@ -73,23 +73,22 @@
73
73
  "!/**/__tests__/**"
74
74
  ],
75
75
  "dependencies": {
76
- "@kubb/core": "3.18.3",
77
- "@kubb/oas": "3.18.3",
78
- "@kubb/parser-ts": "3.18.3",
79
- "@kubb/plugin-oas": "3.18.3",
80
- "@kubb/plugin-ts": "3.18.3",
81
- "@kubb/react": "3.18.3"
76
+ "@kubb/core": "4.0.2",
77
+ "@kubb/oas": "4.0.2",
78
+ "@kubb/parser-ts": "4.0.2",
79
+ "@kubb/plugin-oas": "4.0.2",
80
+ "@kubb/react": "4.0.2",
81
+ "@kubb/plugin-ts": "4.0.2"
82
82
  },
83
83
  "devDependencies": {
84
84
  "@asteasolutions/zod-to-openapi": "^7.3.4",
85
85
  "@hono/zod-openapi": "0.19.2",
86
86
  "tsdown": "^0.14.2",
87
87
  "zod": "^3.25.76",
88
- "@kubb/config-ts": "3.18.3",
89
- "@kubb/plugin-oas": "3.18.3"
88
+ "@kubb/plugin-oas": "4.0.2"
90
89
  },
91
90
  "peerDependencies": {
92
- "@kubb/react": "^3.0.0"
91
+ "@kubb/react": "^4.0.0"
93
92
  },
94
93
  "engines": {
95
94
  "node": ">=20"
@@ -45,12 +45,14 @@ export function Zod({
45
45
  })
46
46
 
47
47
  const output = schemas
48
- .map((schema, _index, siblings) =>
49
- parserZod.parse(
48
+ .map((schema, index) => {
49
+ const siblings = schemas.filter((_, i) => i !== index)
50
+
51
+ return parserZod.parse(
50
52
  { parent: undefined, current: schema, siblings },
51
53
  { name, keysToOmit, typeName, description, mapper, coercion, wrapOutput, rawSchema, version },
52
- ),
53
- )
54
+ )
55
+ })
54
56
  .filter(Boolean)
55
57
  .join('')
56
58
 
@@ -86,7 +88,7 @@ export function Zod({
86
88
  )
87
89
 
88
90
  const baseSchemaOutput =
89
- [output, keysToOmit?.length ? `${suffix}.omit({ ${keysToOmit.map((key) => `${key}: true`).join(',')} })` : undefined].filter(Boolean).join('') ||
91
+ [output, keysToOmit?.length ? `${suffix}.omit({ ${keysToOmit.map((key) => `'${key}': true`).join(',')} })` : undefined].filter(Boolean).join('') ||
90
92
  emptyValue ||
91
93
  ''
92
94
  const wrappedSchemaOutput = wrapOutput ? wrapOutput({ output: baseSchemaOutput, schema: rawSchema }) || baseSchemaOutput : baseSchemaOutput
@@ -7,12 +7,9 @@ import { z } from 'zod'
7
7
  export const pet = z.object({
8
8
  id: z.coerce.number().int(),
9
9
  name: z.coerce.string(),
10
- date: z.coerce.date().optional(),
11
- uuid: z.coerce.string().uuid().optional(),
12
- email: z.coerce.string().email().optional(),
13
- pattern: z.coerce
14
- .string()
15
- .regex(/^[a-zA-Z0-9]{3}$/)
16
- .optional(),
17
- tag: z.coerce.string().min(5).max(100).optional(),
10
+ date: z.optional(z.coerce.date()),
11
+ uuid: z.optional(z.coerce.string().uuid()),
12
+ email: z.optional(z.coerce.string().email()),
13
+ pattern: z.optional(z.coerce.string().regex(/^[a-zA-Z0-9]{3}$/)),
14
+ tag: z.optional(z.coerce.string().min(5).max(100)),
18
15
  })
@@ -7,12 +7,9 @@ import { z } from 'zod'
7
7
  export const pet = z.object({
8
8
  id: z.number().int(),
9
9
  name: z.string(),
10
- date: z.coerce.date().optional(),
11
- uuid: z.string().uuid().optional(),
12
- email: z.string().email().optional(),
13
- pattern: z
14
- .string()
15
- .regex(/^[a-zA-Z0-9]{3}$/)
16
- .optional(),
17
- tag: z.string().min(5).max(100).optional(),
10
+ date: z.optional(z.coerce.date()),
11
+ uuid: z.optional(z.string().uuid()),
12
+ email: z.optional(z.string().email()),
13
+ pattern: z.optional(z.string().regex(/^[a-zA-Z0-9]{3}$/)),
14
+ tag: z.optional(z.string().min(5).max(100)),
18
15
  })
@@ -7,12 +7,9 @@ import { z } from 'zod'
7
7
  export const pet = z.object({
8
8
  id: z.coerce.number().int(),
9
9
  name: z.string(),
10
- date: z.date().optional(),
11
- uuid: z.string().uuid().optional(),
12
- email: z.string().email().optional(),
13
- pattern: z
14
- .string()
15
- .regex(/^[a-zA-Z0-9]{3}$/)
16
- .optional(),
17
- tag: z.string().min(5).max(100).optional(),
10
+ date: z.optional(z.date()),
11
+ uuid: z.optional(z.string().uuid()),
12
+ email: z.optional(z.string().email()),
13
+ pattern: z.optional(z.string().regex(/^[a-zA-Z0-9]{3}$/)),
14
+ tag: z.optional(z.string().min(5).max(100)),
18
15
  })
@@ -7,12 +7,9 @@ import { z } from 'zod'
7
7
  export const pet = z.object({
8
8
  id: z.number().int(),
9
9
  name: z.coerce.string(),
10
- date: z.date().optional(),
11
- uuid: z.coerce.string().uuid().optional(),
12
- email: z.coerce.string().email().optional(),
13
- pattern: z.coerce
14
- .string()
15
- .regex(/^[a-zA-Z0-9]{3}$/)
16
- .optional(),
17
- tag: z.coerce.string().min(5).max(100).optional(),
10
+ date: z.optional(z.date()),
11
+ uuid: z.optional(z.coerce.string().uuid()),
12
+ email: z.optional(z.coerce.string().email()),
13
+ pattern: z.optional(z.coerce.string().regex(/^[a-zA-Z0-9]{3}$/)),
14
+ tag: z.optional(z.coerce.string().min(5).max(100)),
18
15
  })
@@ -10,7 +10,7 @@ export const deletePetPathParams = z.object({
10
10
 
11
11
  export const deletePetHeaderParams = z
12
12
  .object({
13
- api_key: z.string().optional(),
13
+ api_key: z.optional(z.string()),
14
14
  })
15
15
  .optional()
16
16
 
@@ -10,7 +10,7 @@ export const deletePetPathParams = z.object({
10
10
 
11
11
  export const deletePetHeaderParams = z
12
12
  .object({
13
- api_key: z.string().optional(),
13
+ api_key: z.optional(z.string()),
14
14
  })
15
15
  .optional()
16
16
 
@@ -5,5 +5,5 @@
5
5
  import { z } from 'zod'
6
6
 
7
7
  export const example = z.object({
8
- nestedExamples: z.lazy(() => example).optional(),
8
+ nestedExamples: z.optional(z.lazy(() => example)),
9
9
  })
@@ -5,8 +5,8 @@
5
5
  import { z } from 'zod'
6
6
 
7
7
  export const listPetsQueryParams = z.object({
8
- limit: z.string().describe('How many items to return at one time (max 100)').optional(),
9
- offset: z.coerce.number().int().default(0),
8
+ limit: z.optional(z.string().describe('How many items to return at one time (max 100)')),
9
+ offset: z.optional(z.coerce.number().int().default(0)),
10
10
  })
11
11
 
12
12
  /**
@@ -5,8 +5,8 @@
5
5
  import { z } from '@hono/zod-openapi'
6
6
 
7
7
  export const listPetsQueryParams = z.object({
8
- limit: z.string().describe('How many items to return at one time (max 100)').optional(),
9
- offset: z.coerce.number().int().default(0),
8
+ limit: z.optional(z.string().describe('How many items to return at one time (max 100)')),
9
+ offset: z.optional(z.coerce.number().int().default(0)),
10
10
  })
11
11
 
12
12
  /**
@@ -6,6 +6,6 @@ import { z } from 'zod'
6
6
 
7
7
  export const nullable = z
8
8
  .object({
9
- foo: z.string().nullable().nullish(),
9
+ foo: z.string().nullish(),
10
10
  })
11
11
  .nullable()
@@ -6,9 +6,9 @@ import { z } from 'zod'
6
6
 
7
7
  export const test = z.union([
8
8
  z.object({
9
- propertyA: z.string().optional(),
9
+ propertyA: z.optional(z.string()),
10
10
  }),
11
11
  z.object({
12
- propertyA: z.string().optional(),
12
+ propertyA: z.optional(z.string()),
13
13
  }),
14
14
  ])