@kubb/plugin-zod 0.0.0-canary-20250627213431 → 0.0.0-canary-20250701191350
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -7
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
- package/src/plugin.ts +54 -71
package/dist/index.cjs
CHANGED
|
@@ -30,10 +30,7 @@ var pluginZod = core.createPlugin((options) => {
|
|
|
30
30
|
importPath = version === "4" ? "zod/v4" : "zod",
|
|
31
31
|
coercion = false,
|
|
32
32
|
inferred = false,
|
|
33
|
-
generators = [
|
|
34
|
-
chunkDCHEK74F_cjs.zodGenerator,
|
|
35
|
-
operations ? chunkDCHEK74F_cjs.operationsGenerator : void 0
|
|
36
|
-
].filter(Boolean),
|
|
33
|
+
generators = [chunkDCHEK74F_cjs.zodGenerator, operations ? chunkDCHEK74F_cjs.operationsGenerator : void 0].filter(Boolean),
|
|
37
34
|
wrapOutput = void 0,
|
|
38
35
|
contentType
|
|
39
36
|
} = options;
|
|
@@ -96,9 +93,7 @@ var pluginZod = core.createPlugin((options) => {
|
|
|
96
93
|
return resolvedName;
|
|
97
94
|
},
|
|
98
95
|
async buildStart() {
|
|
99
|
-
const [swaggerPlugin] = core.PluginManager.getDependedPlugins(this.plugins, [
|
|
100
|
-
pluginOas.pluginOasName
|
|
101
|
-
]);
|
|
96
|
+
const [swaggerPlugin] = core.PluginManager.getDependedPlugins(this.plugins, [pluginOas.pluginOasName]);
|
|
102
97
|
const oas = await swaggerPlugin.context.getOas();
|
|
103
98
|
const root = path__default.default.resolve(this.config.root, this.config.output.path);
|
|
104
99
|
const mode = core.FileManager.getMode(path__default.default.resolve(root, output.path));
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts"],"names":["createPlugin","transformers","zodGenerator","operationsGenerator","pluginOasName","pluginTsName","options","path","FileManager","camelCase","pascalCase","PluginManager","SchemaGenerator","OperationGenerator"],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts"],"names":["createPlugin","transformers","zodGenerator","operationsGenerator","pluginOasName","pluginTsName","options","path","FileManager","camelCase","pascalCase","PluginManager","SchemaGenerator","OperationGenerator"],"mappings":"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","file":"index.cjs","sourcesContent":["import path from 'node:path'\nimport type { Plugin } from '@kubb/core'\nimport { createPlugin, FileManager, type Group, 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 typed = false,\n mapper = {},\n operations = false,\n version = '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 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 files: this.fileManager.files,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n"]}
|
package/dist/index.js
CHANGED
|
@@ -24,10 +24,7 @@ var pluginZod = createPlugin((options) => {
|
|
|
24
24
|
importPath = version === "4" ? "zod/v4" : "zod",
|
|
25
25
|
coercion = false,
|
|
26
26
|
inferred = false,
|
|
27
|
-
generators = [
|
|
28
|
-
zodGenerator,
|
|
29
|
-
operations ? operationsGenerator : void 0
|
|
30
|
-
].filter(Boolean),
|
|
27
|
+
generators = [zodGenerator, operations ? operationsGenerator : void 0].filter(Boolean),
|
|
31
28
|
wrapOutput = void 0,
|
|
32
29
|
contentType
|
|
33
30
|
} = options;
|
|
@@ -90,9 +87,7 @@ var pluginZod = createPlugin((options) => {
|
|
|
90
87
|
return resolvedName;
|
|
91
88
|
},
|
|
92
89
|
async buildStart() {
|
|
93
|
-
const [swaggerPlugin] = PluginManager.getDependedPlugins(this.plugins, [
|
|
94
|
-
pluginOasName
|
|
95
|
-
]);
|
|
90
|
+
const [swaggerPlugin] = PluginManager.getDependedPlugins(this.plugins, [pluginOasName]);
|
|
96
91
|
const oas = await swaggerPlugin.context.getOas();
|
|
97
92
|
const root = path.resolve(this.config.root, this.config.output.path);
|
|
98
93
|
const mode = FileManager.getMode(path.resolve(root, output.path));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts"],"names":["options"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts"],"names":["options"],"mappings":"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","file":"index.js","sourcesContent":["import path from 'node:path'\nimport type { Plugin } from '@kubb/core'\nimport { createPlugin, FileManager, type Group, 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 typed = false,\n mapper = {},\n operations = false,\n version = '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 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 files: this.fileManager.files,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n },\n }\n})\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/plugin-zod",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-20250701191350",
|
|
4
4
|
"description": "Generator plugin-zod",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -66,24 +66,24 @@
|
|
|
66
66
|
"!/**/__tests__/**"
|
|
67
67
|
],
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@kubb/core": "0.0.0-canary-
|
|
70
|
-
"@kubb/
|
|
71
|
-
"@kubb/
|
|
72
|
-
"@kubb/plugin-oas": "0.0.0-canary-
|
|
73
|
-
"@kubb/plugin-ts": "0.0.0-canary-
|
|
74
|
-
"@kubb/react": "0.0.0-canary-
|
|
69
|
+
"@kubb/core": "0.0.0-canary-20250701191350",
|
|
70
|
+
"@kubb/parser-ts": "0.0.0-canary-20250701191350",
|
|
71
|
+
"@kubb/oas": "0.0.0-canary-20250701191350",
|
|
72
|
+
"@kubb/plugin-oas": "0.0.0-canary-20250701191350",
|
|
73
|
+
"@kubb/plugin-ts": "0.0.0-canary-20250701191350",
|
|
74
|
+
"@kubb/react": "0.0.0-canary-20250701191350"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@asteasolutions/zod-to-openapi": "^7.3.4",
|
|
78
78
|
"@hono/zod-openapi": "0.19.2",
|
|
79
79
|
"tsup": "^8.5.0",
|
|
80
80
|
"zod": "~3.24.4",
|
|
81
|
-
"@kubb/config-ts": "0.0.0-canary-
|
|
82
|
-
"@kubb/config-tsup": "0.0.0-canary-
|
|
83
|
-
"@kubb/plugin-oas": "0.0.0-canary-
|
|
81
|
+
"@kubb/config-ts": "0.0.0-canary-20250701191350",
|
|
82
|
+
"@kubb/config-tsup": "0.0.0-canary-20250701191350",
|
|
83
|
+
"@kubb/plugin-oas": "0.0.0-canary-20250701191350"
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
86
|
-
"@kubb/react": "0.0.0-canary-
|
|
86
|
+
"@kubb/react": "0.0.0-canary-20250701191350"
|
|
87
87
|
},
|
|
88
88
|
"engines": {
|
|
89
89
|
"node": ">=20"
|
package/src/plugin.ts
CHANGED
|
@@ -1,49 +1,37 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import type { Plugin } from
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from
|
|
9
|
-
import {
|
|
10
|
-
import type {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
pluginOasName,
|
|
14
|
-
SchemaGenerator,
|
|
15
|
-
} from "@kubb/plugin-oas";
|
|
16
|
-
import { pluginTsName } from "@kubb/plugin-ts";
|
|
17
|
-
import { operationsGenerator } from "./generators";
|
|
18
|
-
import { zodGenerator } from "./generators/zodGenerator.tsx";
|
|
19
|
-
import type { PluginZod } from "./types.ts";
|
|
20
|
-
|
|
21
|
-
export const pluginZodName = "plugin-zod" satisfies PluginZod["name"];
|
|
1
|
+
import path from 'node:path'
|
|
2
|
+
import type { Plugin } from '@kubb/core'
|
|
3
|
+
import { createPlugin, FileManager, type Group, PluginManager } from '@kubb/core'
|
|
4
|
+
import { camelCase, pascalCase } from '@kubb/core/transformers'
|
|
5
|
+
import type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'
|
|
6
|
+
import { OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'
|
|
7
|
+
import { pluginTsName } from '@kubb/plugin-ts'
|
|
8
|
+
import { operationsGenerator } from './generators'
|
|
9
|
+
import { zodGenerator } from './generators/zodGenerator.tsx'
|
|
10
|
+
import type { PluginZod } from './types.ts'
|
|
11
|
+
|
|
12
|
+
export const pluginZodName = 'plugin-zod' satisfies PluginZod['name']
|
|
22
13
|
|
|
23
14
|
export const pluginZod = createPlugin<PluginZod>((options) => {
|
|
24
15
|
const {
|
|
25
|
-
output = { path:
|
|
16
|
+
output = { path: 'zod', barrelType: 'named' },
|
|
26
17
|
group,
|
|
27
18
|
exclude = [],
|
|
28
19
|
include,
|
|
29
20
|
override = [],
|
|
30
21
|
transformers = {},
|
|
31
|
-
dateType =
|
|
32
|
-
unknownType =
|
|
22
|
+
dateType = 'string',
|
|
23
|
+
unknownType = 'any',
|
|
33
24
|
typed = false,
|
|
34
25
|
mapper = {},
|
|
35
26
|
operations = false,
|
|
36
|
-
version =
|
|
37
|
-
importPath = version ===
|
|
27
|
+
version = '3',
|
|
28
|
+
importPath = version === '4' ? 'zod/v4' : 'zod',
|
|
38
29
|
coercion = false,
|
|
39
30
|
inferred = false,
|
|
40
|
-
generators = [
|
|
41
|
-
zodGenerator,
|
|
42
|
-
operations ? operationsGenerator : undefined,
|
|
43
|
-
].filter(Boolean),
|
|
31
|
+
generators = [zodGenerator, operations ? operationsGenerator : undefined].filter(Boolean),
|
|
44
32
|
wrapOutput = undefined,
|
|
45
33
|
contentType,
|
|
46
|
-
} = options
|
|
34
|
+
} = options
|
|
47
35
|
|
|
48
36
|
return {
|
|
49
37
|
name: pluginZodName,
|
|
@@ -67,66 +55,61 @@ export const pluginZod = createPlugin<PluginZod>((options) => {
|
|
|
67
55
|
},
|
|
68
56
|
pre: [pluginOasName, typed ? pluginTsName : undefined].filter(Boolean),
|
|
69
57
|
resolvePath(baseName, pathMode, options) {
|
|
70
|
-
const root = path.resolve(this.config.root, this.config.output.path)
|
|
71
|
-
const mode =
|
|
72
|
-
pathMode ?? FileManager.getMode(path.resolve(root, output.path));
|
|
58
|
+
const root = path.resolve(this.config.root, this.config.output.path)
|
|
59
|
+
const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))
|
|
73
60
|
|
|
74
|
-
if (mode ===
|
|
61
|
+
if (mode === 'single') {
|
|
75
62
|
/**
|
|
76
63
|
* when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend
|
|
77
64
|
* Other plugins then need to call addOrAppend instead of just add from the fileManager class
|
|
78
65
|
*/
|
|
79
|
-
return path.resolve(root, output.path)
|
|
66
|
+
return path.resolve(root, output.path)
|
|
80
67
|
}
|
|
81
68
|
|
|
82
69
|
if (group && (options?.group?.path || options?.group?.tag)) {
|
|
83
|
-
const groupName: Group[
|
|
70
|
+
const groupName: Group['name'] = group?.name
|
|
84
71
|
? group.name
|
|
85
72
|
: (ctx) => {
|
|
86
|
-
if (group?.type ===
|
|
87
|
-
return `${ctx.group.split(
|
|
73
|
+
if (group?.type === 'path') {
|
|
74
|
+
return `${ctx.group.split('/')[1]}`
|
|
88
75
|
}
|
|
89
|
-
return `${camelCase(ctx.group)}Controller
|
|
90
|
-
}
|
|
76
|
+
return `${camelCase(ctx.group)}Controller`
|
|
77
|
+
}
|
|
91
78
|
|
|
92
79
|
return path.resolve(
|
|
93
80
|
root,
|
|
94
81
|
output.path,
|
|
95
82
|
groupName({
|
|
96
|
-
group:
|
|
97
|
-
group.type === "path" ? options.group.path! : options.group.tag!,
|
|
83
|
+
group: group.type === 'path' ? options.group.path! : options.group.tag!,
|
|
98
84
|
}),
|
|
99
|
-
baseName
|
|
100
|
-
)
|
|
85
|
+
baseName,
|
|
86
|
+
)
|
|
101
87
|
}
|
|
102
88
|
|
|
103
|
-
return path.resolve(root, output.path, baseName)
|
|
89
|
+
return path.resolve(root, output.path, baseName)
|
|
104
90
|
},
|
|
105
91
|
resolveName(name, type) {
|
|
106
92
|
let resolvedName = camelCase(name, {
|
|
107
|
-
suffix: type ?
|
|
108
|
-
isFile: type ===
|
|
109
|
-
})
|
|
93
|
+
suffix: type ? 'schema' : undefined,
|
|
94
|
+
isFile: type === 'file',
|
|
95
|
+
})
|
|
110
96
|
|
|
111
|
-
if (type ===
|
|
112
|
-
resolvedName = pascalCase(resolvedName)
|
|
97
|
+
if (type === 'type') {
|
|
98
|
+
resolvedName = pascalCase(resolvedName)
|
|
113
99
|
}
|
|
114
100
|
|
|
115
101
|
if (type) {
|
|
116
|
-
return transformers?.name?.(resolvedName, type) || resolvedName
|
|
102
|
+
return transformers?.name?.(resolvedName, type) || resolvedName
|
|
117
103
|
}
|
|
118
104
|
|
|
119
|
-
return resolvedName
|
|
105
|
+
return resolvedName
|
|
120
106
|
},
|
|
121
107
|
async buildStart() {
|
|
122
|
-
const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] =
|
|
123
|
-
PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [
|
|
124
|
-
pluginOasName,
|
|
125
|
-
]);
|
|
108
|
+
const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])
|
|
126
109
|
|
|
127
|
-
const oas = await swaggerPlugin.context.getOas()
|
|
128
|
-
const root = path.resolve(this.config.root, this.config.output.path)
|
|
129
|
-
const mode = FileManager.getMode(path.resolve(root, output.path))
|
|
110
|
+
const oas = await swaggerPlugin.context.getOas()
|
|
111
|
+
const root = path.resolve(this.config.root, this.config.output.path)
|
|
112
|
+
const mode = FileManager.getMode(path.resolve(root, output.path))
|
|
130
113
|
|
|
131
114
|
const schemaGenerator = new SchemaGenerator(this.plugin.options, {
|
|
132
115
|
oas,
|
|
@@ -137,10 +120,10 @@ export const pluginZod = createPlugin<PluginZod>((options) => {
|
|
|
137
120
|
override,
|
|
138
121
|
mode,
|
|
139
122
|
output: output.path,
|
|
140
|
-
})
|
|
123
|
+
})
|
|
141
124
|
|
|
142
|
-
const schemaFiles = await schemaGenerator.build(...generators)
|
|
143
|
-
await this.addFile(...schemaFiles)
|
|
125
|
+
const schemaFiles = await schemaGenerator.build(...generators)
|
|
126
|
+
await this.addFile(...schemaFiles)
|
|
144
127
|
|
|
145
128
|
const operationGenerator = new OperationGenerator(this.plugin.options, {
|
|
146
129
|
oas,
|
|
@@ -151,13 +134,13 @@ export const pluginZod = createPlugin<PluginZod>((options) => {
|
|
|
151
134
|
include,
|
|
152
135
|
override,
|
|
153
136
|
mode,
|
|
154
|
-
})
|
|
137
|
+
})
|
|
155
138
|
|
|
156
|
-
const operationFiles = await operationGenerator.build(...generators)
|
|
157
|
-
await this.addFile(...operationFiles)
|
|
139
|
+
const operationFiles = await operationGenerator.build(...generators)
|
|
140
|
+
await this.addFile(...operationFiles)
|
|
158
141
|
|
|
159
142
|
const barrelFiles = await this.fileManager.getBarrelFiles({
|
|
160
|
-
type: output.barrelType ??
|
|
143
|
+
type: output.barrelType ?? 'named',
|
|
161
144
|
root,
|
|
162
145
|
output,
|
|
163
146
|
files: this.fileManager.files,
|
|
@@ -165,9 +148,9 @@ export const pluginZod = createPlugin<PluginZod>((options) => {
|
|
|
165
148
|
pluginKey: this.plugin.key,
|
|
166
149
|
},
|
|
167
150
|
logger: this.logger,
|
|
168
|
-
})
|
|
151
|
+
})
|
|
169
152
|
|
|
170
|
-
await this.addFile(...barrelFiles)
|
|
153
|
+
await this.addFile(...barrelFiles)
|
|
171
154
|
},
|
|
172
|
-
}
|
|
173
|
-
})
|
|
155
|
+
}
|
|
156
|
+
})
|