@kubb/plugin-ts 4.4.0 → 4.5.0
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/{components-dMdRcFGC.cjs → components-BAMqcrcR.cjs} +40 -36
- package/dist/components-BAMqcrcR.cjs.map +1 -0
- package/dist/{components-w0oFnzqd.js → components-pUMLFnXb.js} +39 -35
- package/dist/components-pUMLFnXb.js.map +1 -0
- package/dist/components.cjs +1 -1
- package/dist/components.d.cts +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/components.js +1 -1
- package/dist/generators.cjs +2 -2
- package/dist/generators.d.cts +4 -4
- package/dist/generators.d.ts +4 -4
- package/dist/generators.js +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/{plugin-DOspIoKu.cjs → plugin-BKcG9C_Y.cjs} +72 -79
- package/dist/plugin-BKcG9C_Y.cjs.map +1 -0
- package/dist/{plugin-DII8Z_zh.js → plugin-CfDmQVWY.js} +73 -80
- package/dist/plugin-CfDmQVWY.js.map +1 -0
- package/dist/{types-3xBQBYqb.d.cts → types-BXlkWRNi.d.ts} +184 -304
- package/dist/{types-CvqW_Qsz.d.ts → types-BdHzvKY0.d.cts} +184 -304
- package/package.json +16 -11
- package/src/components/Type.tsx +1 -6
- package/src/generators/index.ts +1 -1
- package/src/generators/oasGenerator.tsx +4 -4
- package/src/generators/typeGenerator.tsx +15 -21
- package/src/parser.ts +11 -15
- package/src/types.ts +2 -1
- package/dist/components-dMdRcFGC.cjs.map +0 -1
- package/dist/components-w0oFnzqd.js.map +0 -1
- package/dist/plugin-DII8Z_zh.js.map +0 -1
- package/dist/plugin-DOspIoKu.cjs.map +0 -1
package/dist/generators.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as PluginTs, r as ReactGenerator } from "./types-BXlkWRNi.js";
|
|
2
2
|
|
|
3
|
-
//#region src/generators/typeGenerator.d.ts
|
|
4
|
-
declare const typeGenerator: ReactGenerator<PluginTs>;
|
|
5
|
-
//#endregion
|
|
6
3
|
//#region src/generators/oasGenerator.d.ts
|
|
7
4
|
declare const oasGenerator: ReactGenerator<PluginTs>;
|
|
8
5
|
//#endregion
|
|
6
|
+
//#region src/generators/typeGenerator.d.ts
|
|
7
|
+
declare const typeGenerator: ReactGenerator<PluginTs>;
|
|
8
|
+
//#endregion
|
|
9
9
|
export { oasGenerator, typeGenerator };
|
|
10
10
|
//# sourceMappingURL=generators.d.ts.map
|
package/dist/generators.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./components-
|
|
2
|
-
import { i as
|
|
1
|
+
import "./components-pUMLFnXb.js";
|
|
2
|
+
import { i as oasGenerator, r as typeGenerator } from "./plugin-CfDmQVWY.js";
|
|
3
3
|
|
|
4
4
|
export { oasGenerator, typeGenerator };
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require('./components-
|
|
2
|
-
const require_plugin = require('./plugin-
|
|
1
|
+
require('./components-BAMqcrcR.cjs');
|
|
2
|
+
const require_plugin = require('./plugin-BKcG9C_Y.cjs');
|
|
3
3
|
|
|
4
4
|
exports.pluginTs = require_plugin.pluginTs;
|
|
5
5
|
exports.pluginTsName = require_plugin.pluginTsName;
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_components = require('./components-
|
|
1
|
+
const require_components = require('./components-BAMqcrcR.cjs');
|
|
2
2
|
let node_path = require("node:path");
|
|
3
3
|
node_path = require_components.__toESM(node_path);
|
|
4
4
|
let __kubb_core = require("@kubb/core");
|
|
@@ -9,10 +9,8 @@ let __kubb_plugin_oas = require("@kubb/plugin-oas");
|
|
|
9
9
|
__kubb_plugin_oas = require_components.__toESM(__kubb_plugin_oas);
|
|
10
10
|
let __kubb_core_hooks = require("@kubb/core/hooks");
|
|
11
11
|
__kubb_core_hooks = require_components.__toESM(__kubb_core_hooks);
|
|
12
|
-
let
|
|
13
|
-
|
|
14
|
-
let __kubb_plugin_oas_components = require("@kubb/plugin-oas/components");
|
|
15
|
-
__kubb_plugin_oas_components = require_components.__toESM(__kubb_plugin_oas_components);
|
|
12
|
+
let __kubb_plugin_oas_generators = require("@kubb/plugin-oas/generators");
|
|
13
|
+
__kubb_plugin_oas_generators = require_components.__toESM(__kubb_plugin_oas_generators);
|
|
16
14
|
let __kubb_plugin_oas_hooks = require("@kubb/plugin-oas/hooks");
|
|
17
15
|
__kubb_plugin_oas_hooks = require_components.__toESM(__kubb_plugin_oas_hooks);
|
|
18
16
|
let __kubb_plugin_oas_utils = require("@kubb/plugin-oas/utils");
|
|
@@ -21,7 +19,48 @@ let __kubb_react_fabric = require("@kubb/react-fabric");
|
|
|
21
19
|
__kubb_react_fabric = require_components.__toESM(__kubb_react_fabric);
|
|
22
20
|
let __kubb_react_fabric_jsx_runtime = require("@kubb/react-fabric/jsx-runtime");
|
|
23
21
|
__kubb_react_fabric_jsx_runtime = require_components.__toESM(__kubb_react_fabric_jsx_runtime);
|
|
22
|
+
let __kubb_fabric_core_parsers_typescript = require("@kubb/fabric-core/parsers/typescript");
|
|
23
|
+
__kubb_fabric_core_parsers_typescript = require_components.__toESM(__kubb_fabric_core_parsers_typescript);
|
|
24
|
+
|
|
25
|
+
//#region src/generators/oasGenerator.tsx
|
|
26
|
+
const oasGenerator = (0, __kubb_plugin_oas_generators.createReactGenerator)({
|
|
27
|
+
name: "oas",
|
|
28
|
+
Operations({ plugin }) {
|
|
29
|
+
const { options: { output }, key: pluginKey } = plugin;
|
|
30
|
+
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
31
|
+
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
32
|
+
const file = pluginManager.getFile({
|
|
33
|
+
name: "oas",
|
|
34
|
+
extname: ".ts",
|
|
35
|
+
pluginKey
|
|
36
|
+
});
|
|
37
|
+
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.File, {
|
|
38
|
+
baseName: file.baseName,
|
|
39
|
+
path: file.path,
|
|
40
|
+
meta: file.meta,
|
|
41
|
+
banner: (0, __kubb_plugin_oas_utils.getBanner)({
|
|
42
|
+
oas,
|
|
43
|
+
output,
|
|
44
|
+
config: pluginManager.config
|
|
45
|
+
}),
|
|
46
|
+
footer: (0, __kubb_plugin_oas_utils.getFooter)({
|
|
47
|
+
oas,
|
|
48
|
+
output
|
|
49
|
+
}),
|
|
50
|
+
children: [/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
51
|
+
name: ["Infer"],
|
|
52
|
+
path: "@kubb/oas",
|
|
53
|
+
isTypeOnly: true
|
|
54
|
+
}), /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.OasType, {
|
|
55
|
+
name: "oas",
|
|
56
|
+
typeName: "Oas",
|
|
57
|
+
api: oas.api
|
|
58
|
+
})]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
24
62
|
|
|
63
|
+
//#endregion
|
|
25
64
|
//#region src/generators/typeGenerator.tsx
|
|
26
65
|
function printCombinedSchema({ name, schemas, pluginManager }) {
|
|
27
66
|
const properties = {};
|
|
@@ -86,15 +125,14 @@ function printCombinedSchema({ name, schemas, pluginManager }) {
|
|
|
86
125
|
modifiers: [require_components.modifiers.export]
|
|
87
126
|
})]);
|
|
88
127
|
}
|
|
89
|
-
const typeGenerator = (0,
|
|
128
|
+
const typeGenerator = (0, __kubb_plugin_oas_generators.createReactGenerator)({
|
|
90
129
|
name: "typescript",
|
|
91
|
-
Operation({ operation,
|
|
92
|
-
const { mapper, enumType, syntaxType, optionalType } =
|
|
93
|
-
const plugin = (0, __kubb_core_hooks.usePlugin)();
|
|
130
|
+
Operation({ operation, generator, plugin }) {
|
|
131
|
+
const { options, options: { mapper, enumType, syntaxType, optionalType } } = plugin;
|
|
94
132
|
const mode = (0, __kubb_core_hooks.useMode)();
|
|
95
133
|
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
96
134
|
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
97
|
-
const { getSchemas, getFile, getName, getGroup } = (0, __kubb_plugin_oas_hooks.useOperationManager)();
|
|
135
|
+
const { getSchemas, getFile, getName, getGroup } = (0, __kubb_plugin_oas_hooks.useOperationManager)(generator);
|
|
98
136
|
const schemaManager = (0, __kubb_plugin_oas_hooks.useSchemaManager)();
|
|
99
137
|
const file = getFile(operation);
|
|
100
138
|
const schemas = getSchemas(operation);
|
|
@@ -104,7 +142,7 @@ const typeGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
104
142
|
});
|
|
105
143
|
const combinedSchemaName = operation.method === "get" ? `${type}Query` : `${type}Mutation`;
|
|
106
144
|
const schemaGenerator = new __kubb_plugin_oas.SchemaGenerator(options, {
|
|
107
|
-
fabric:
|
|
145
|
+
fabric: generator.context.fabric,
|
|
108
146
|
oas,
|
|
109
147
|
plugin,
|
|
110
148
|
pluginManager,
|
|
@@ -131,33 +169,28 @@ const typeGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
131
169
|
typedName: schemaManager.getName(name, { type: "type" }),
|
|
132
170
|
file: schemaManager.getFile(options$1.operationName || name, { group })
|
|
133
171
|
};
|
|
134
|
-
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(
|
|
172
|
+
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric_jsx_runtime.Fragment, { children: [mode === "split" && imports.map((imp) => /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
173
|
+
root: file.path,
|
|
174
|
+
path: imp.path,
|
|
175
|
+
name: imp.name,
|
|
176
|
+
isTypeOnly: true
|
|
177
|
+
}, [
|
|
135
178
|
name,
|
|
136
|
-
|
|
179
|
+
imp.name,
|
|
180
|
+
imp.path,
|
|
181
|
+
imp.isTypeOnly
|
|
182
|
+
].join("-"))), /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.Type, {
|
|
183
|
+
name: type$1.name,
|
|
184
|
+
typedName: type$1.typedName,
|
|
185
|
+
description,
|
|
137
186
|
tree,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
imp.name,
|
|
146
|
-
imp.path,
|
|
147
|
-
imp.isTypeOnly
|
|
148
|
-
].join("-"))), /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.Type, {
|
|
149
|
-
name: type$1.name,
|
|
150
|
-
typedName: type$1.typedName,
|
|
151
|
-
description,
|
|
152
|
-
tree,
|
|
153
|
-
schema: schemaObject,
|
|
154
|
-
mapper,
|
|
155
|
-
enumType,
|
|
156
|
-
optionalType,
|
|
157
|
-
keysToOmit,
|
|
158
|
-
syntaxType
|
|
159
|
-
})]
|
|
160
|
-
}, [name, schemaObject.$ref].join("-"));
|
|
187
|
+
schema: schemaObject,
|
|
188
|
+
mapper,
|
|
189
|
+
enumType,
|
|
190
|
+
optionalType,
|
|
191
|
+
keysToOmit,
|
|
192
|
+
syntaxType
|
|
193
|
+
})] });
|
|
161
194
|
};
|
|
162
195
|
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.File, {
|
|
163
196
|
baseName: file.baseName,
|
|
@@ -185,9 +218,8 @@ const typeGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
185
218
|
})]
|
|
186
219
|
});
|
|
187
220
|
},
|
|
188
|
-
Schema({ schema,
|
|
189
|
-
const { mapper, enumType, syntaxType, optionalType } =
|
|
190
|
-
const { options: { output } } = (0, __kubb_core_hooks.usePlugin)();
|
|
221
|
+
Schema({ schema, plugin }) {
|
|
222
|
+
const { options: { mapper, enumType, syntaxType, optionalType, output } } = plugin;
|
|
191
223
|
const mode = (0, __kubb_core_hooks.useMode)();
|
|
192
224
|
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
193
225
|
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
@@ -239,45 +271,6 @@ const typeGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
239
271
|
}
|
|
240
272
|
});
|
|
241
273
|
|
|
242
|
-
//#endregion
|
|
243
|
-
//#region src/generators/oasGenerator.tsx
|
|
244
|
-
const oasGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
245
|
-
name: "oas",
|
|
246
|
-
Operations() {
|
|
247
|
-
const { options: { output }, key: pluginKey } = (0, __kubb_core_hooks.usePlugin)();
|
|
248
|
-
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
249
|
-
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
250
|
-
const file = pluginManager.getFile({
|
|
251
|
-
name: "oas",
|
|
252
|
-
extname: ".ts",
|
|
253
|
-
pluginKey
|
|
254
|
-
});
|
|
255
|
-
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.File, {
|
|
256
|
-
baseName: file.baseName,
|
|
257
|
-
path: file.path,
|
|
258
|
-
meta: file.meta,
|
|
259
|
-
banner: (0, __kubb_plugin_oas_utils.getBanner)({
|
|
260
|
-
oas,
|
|
261
|
-
output,
|
|
262
|
-
config: pluginManager.config
|
|
263
|
-
}),
|
|
264
|
-
footer: (0, __kubb_plugin_oas_utils.getFooter)({
|
|
265
|
-
oas,
|
|
266
|
-
output
|
|
267
|
-
}),
|
|
268
|
-
children: [/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
269
|
-
name: ["Infer"],
|
|
270
|
-
path: "@kubb/oas",
|
|
271
|
-
isTypeOnly: true
|
|
272
|
-
}), /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.OasType, {
|
|
273
|
-
name: "oas",
|
|
274
|
-
typeName: "Oas",
|
|
275
|
-
api: oas.api
|
|
276
|
-
})]
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
});
|
|
280
|
-
|
|
281
274
|
//#endregion
|
|
282
275
|
//#region src/plugin.ts
|
|
283
276
|
const pluginTsName = "plugin-ts";
|
|
@@ -395,4 +388,4 @@ Object.defineProperty(exports, 'typeGenerator', {
|
|
|
395
388
|
return typeGenerator;
|
|
396
389
|
}
|
|
397
390
|
});
|
|
398
|
-
//# sourceMappingURL=plugin-
|
|
391
|
+
//# sourceMappingURL=plugin-BKcG9C_Y.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-BKcG9C_Y.cjs","names":["File","OasType","properties: Record<string, ts.TypeNode>","transformers","SchemaGenerator","options","type","File","Type","schemaKeywords","pluginOasName","path","options","groupName: Group['name']","transformers","PluginManager","SchemaGenerator","OperationGenerator"],"sources":["../src/generators/oasGenerator.tsx","../src/generators/typeGenerator.tsx","../src/plugin.ts"],"sourcesContent":["import { usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport { OasType } from '../components'\nimport type { PluginTs } from '../types.ts'\n\nexport const oasGenerator = createReactGenerator<PluginTs>({\n name: 'oas',\n Operations({ plugin }) {\n const {\n options: { output },\n key: pluginKey,\n } = plugin\n const pluginManager = usePluginManager()\n const oas = useOas()\n\n const file = pluginManager.getFile({ name: 'oas', extname: '.ts', pluginKey })\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 <File.Import name={['Infer']} path=\"@kubb/oas\" isTypeOnly />\n\n <OasType name={'oas'} typeName={'Oas'} api={oas.api} />\n </File>\n )\n },\n})\n","import type { PluginManager } from '@kubb/core'\nimport { useMode, usePluginManager } from '@kubb/core/hooks'\nimport transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/fabric-core/parsers/typescript'\nimport { isKeyword, type OperationSchemas, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport type ts from 'typescript'\nimport { Type } from '../components'\nimport * as factory from '../factory.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types'\n\nfunction printCombinedSchema({ name, schemas, pluginManager }: { name: string; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n const properties: Record<string, ts.TypeNode> = {}\n\n if (schemas.response) {\n properties['response'] = factory.createUnionDeclaration({\n nodes: schemas.responses.map((res) => {\n const identifier = pluginManager.resolveName({\n name: res.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n\n return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }),\n })!\n }\n\n if (schemas.request) {\n const identifier = pluginManager.resolveName({\n name: schemas.request.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['request'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.pathParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.pathParams.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['pathParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.queryParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.queryParams.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['queryParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.headerParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.headerParams.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['headerParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.errors) {\n properties['errors'] = factory.createUnionDeclaration({\n nodes: schemas.errors.map((error) => {\n const identifier = pluginManager.resolveName({\n name: error.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n\n return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }),\n })!\n }\n\n const namespaceNode = factory.createTypeAliasDeclaration({\n name,\n type: factory.createTypeLiteralNode(\n Object.keys(properties)\n .map((key) => {\n const type = properties[key]\n if (!type) {\n return undefined\n }\n\n return factory.createPropertySignature({\n name: transformers.pascalCase(key),\n type,\n })\n })\n .filter(Boolean),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n return print([namespaceNode])\n}\n\nexport const typeGenerator = createReactGenerator<PluginTs>({\n name: 'typescript',\n Operation({ operation, generator, plugin }) {\n const {\n options,\n options: { mapper, enumType, syntaxType, optionalType },\n } = plugin\n\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getName, getGroup } = useOperationManager(generator)\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const type = getName(operation, { type: 'function', pluginKey: [pluginTsName] })\n const combinedSchemaName = operation.method === 'get' ? `${type}Query` : `${type}Mutation`\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: generator.context.fabric,\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) => {\n const tree = schemaGenerator.parse({ schemaObject, name })\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const type = {\n name: schemaManager.getName(name, { type: 'type' }),\n typedName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(options.operationName || name, { group }),\n }\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[name, imp.name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n description={description}\n tree={tree}\n schema={schemaObject}\n mapper={mapper}\n enumType={enumType}\n optionalType={optionalType}\n keysToOmit={keysToOmit}\n syntaxType={syntaxType}\n />\n </>\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 {operationSchemas.map(mapOperationSchema)}\n\n <File.Source name={combinedSchemaName} isExportable isIndexable isTypeOnly>\n {printCombinedSchema({ name: combinedSchemaName, schemas, pluginManager })}\n </File.Source>\n </File>\n )\n },\n Schema({ schema, plugin }) {\n const {\n options: { mapper, enumType, syntaxType, optionalType, output },\n } = plugin\n const mode = useMode()\n\n const oas = useOas()\n const pluginManager = usePluginManager()\n\n const { getName, getImports, getFile } = useSchemaManager()\n const imports = getImports(schema.tree)\n const schemaFromTree = schema.tree.find((item) => item.keyword === schemaKeywords.schema)\n\n if (enumType === 'asPascalConst') {\n console.warn(`enumType '${enumType}' is deprecated`)\n }\n\n let typedName = getName(schema.name, { type: 'type' })\n\n if (enumType === 'asConst' && schemaFromTree && isKeyword(schemaFromTree, schemaKeywords.enum)) {\n typedName = typedName += 'Key' //Suffix for avoiding collisions (https://github.com/kubb-labs/kubb/issues/1873)\n }\n\n const type = {\n name: getName(schema.name, { type: 'function' }),\n typedName,\n file: getFile(schema.name),\n }\n\n return (\n <File\n baseName={type.file.baseName}\n path={type.file.path}\n meta={type.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[schema.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n description={schema.value.description}\n tree={schema.tree}\n schema={schema.value}\n mapper={mapper}\n enumType={enumType}\n optionalType={optionalType}\n syntaxType={syntaxType}\n />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { createPlugin, type Group, getBarrelFiles, getMode, 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 { oasGenerator, typeGenerator } from './generators'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumSuffix = 'enum',\n dateType = 'string',\n unknownType = 'any',\n optionalType = 'questionToken',\n emptySchemaType = unknownType,\n syntaxType = 'type',\n transformers = {},\n oasType = false,\n mapper = {},\n generators = [typeGenerator, oasType === 'infer' ? oasGenerator : undefined].filter(Boolean),\n contentType,\n } = options\n\n return {\n name: pluginTsName,\n options: {\n output,\n transformers,\n dateType,\n optionalType,\n oasType,\n enumType,\n enumSuffix,\n unknownType,\n emptySchemaType,\n syntaxType,\n group,\n override,\n mapper,\n },\n context() {\n return {\n usedEnumNames: {} as Record<string, number>,\n }\n },\n pre: [pluginOasName],\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? 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 const resolvedName = pascalCase(name, { isFile: type === 'file' })\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 = getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n fabric: this.fabric,\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 fabric: this.fabric,\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 getBarrelFiles(this.fileManager.files, {\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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"}
|
|
@@ -1,16 +1,55 @@
|
|
|
1
|
-
import { a as createTypeLiteralNode, c as modifiers, i as createTypeAliasDeclaration, l as OasType, n as createIdentifier, o as createTypeReferenceNode, r as createPropertySignature, s as createUnionDeclaration, t as Type$1 } from "./components-
|
|
1
|
+
import { a as createTypeLiteralNode, c as modifiers, i as createTypeAliasDeclaration, l as OasType, n as createIdentifier, o as createTypeReferenceNode, r as createPropertySignature, s as createUnionDeclaration, t as Type$1 } from "./components-pUMLFnXb.js";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { PluginManager, createPlugin, getBarrelFiles, getMode } from "@kubb/core";
|
|
4
4
|
import transformers, { camelCase, pascalCase } from "@kubb/core/transformers";
|
|
5
|
-
import { OperationGenerator, SchemaGenerator,
|
|
6
|
-
import { useMode,
|
|
7
|
-
import {
|
|
8
|
-
import { Oas } from "@kubb/plugin-oas/components";
|
|
5
|
+
import { OperationGenerator, SchemaGenerator, isKeyword, pluginOasName, schemaKeywords } from "@kubb/plugin-oas";
|
|
6
|
+
import { useMode, usePluginManager } from "@kubb/core/hooks";
|
|
7
|
+
import { createReactGenerator } from "@kubb/plugin-oas/generators";
|
|
9
8
|
import { useOas, useOperationManager, useSchemaManager } from "@kubb/plugin-oas/hooks";
|
|
10
9
|
import { getBanner, getFooter } from "@kubb/plugin-oas/utils";
|
|
11
10
|
import { File } from "@kubb/react-fabric";
|
|
12
|
-
import { jsx, jsxs } from "@kubb/react-fabric/jsx-runtime";
|
|
11
|
+
import { Fragment, jsx, jsxs } from "@kubb/react-fabric/jsx-runtime";
|
|
12
|
+
import { print } from "@kubb/fabric-core/parsers/typescript";
|
|
13
|
+
|
|
14
|
+
//#region src/generators/oasGenerator.tsx
|
|
15
|
+
const oasGenerator = createReactGenerator({
|
|
16
|
+
name: "oas",
|
|
17
|
+
Operations({ plugin }) {
|
|
18
|
+
const { options: { output }, key: pluginKey } = plugin;
|
|
19
|
+
const pluginManager = usePluginManager();
|
|
20
|
+
const oas = useOas();
|
|
21
|
+
const file = pluginManager.getFile({
|
|
22
|
+
name: "oas",
|
|
23
|
+
extname: ".ts",
|
|
24
|
+
pluginKey
|
|
25
|
+
});
|
|
26
|
+
return /* @__PURE__ */ jsxs(File, {
|
|
27
|
+
baseName: file.baseName,
|
|
28
|
+
path: file.path,
|
|
29
|
+
meta: file.meta,
|
|
30
|
+
banner: getBanner({
|
|
31
|
+
oas,
|
|
32
|
+
output,
|
|
33
|
+
config: pluginManager.config
|
|
34
|
+
}),
|
|
35
|
+
footer: getFooter({
|
|
36
|
+
oas,
|
|
37
|
+
output
|
|
38
|
+
}),
|
|
39
|
+
children: [/* @__PURE__ */ jsx(File.Import, {
|
|
40
|
+
name: ["Infer"],
|
|
41
|
+
path: "@kubb/oas",
|
|
42
|
+
isTypeOnly: true
|
|
43
|
+
}), /* @__PURE__ */ jsx(OasType, {
|
|
44
|
+
name: "oas",
|
|
45
|
+
typeName: "Oas",
|
|
46
|
+
api: oas.api
|
|
47
|
+
})]
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
13
51
|
|
|
52
|
+
//#endregion
|
|
14
53
|
//#region src/generators/typeGenerator.tsx
|
|
15
54
|
function printCombinedSchema({ name, schemas, pluginManager }) {
|
|
16
55
|
const properties = {};
|
|
@@ -77,13 +116,12 @@ function printCombinedSchema({ name, schemas, pluginManager }) {
|
|
|
77
116
|
}
|
|
78
117
|
const typeGenerator = createReactGenerator({
|
|
79
118
|
name: "typescript",
|
|
80
|
-
Operation({ operation,
|
|
81
|
-
const { mapper, enumType, syntaxType, optionalType } =
|
|
82
|
-
const plugin = usePlugin();
|
|
119
|
+
Operation({ operation, generator, plugin }) {
|
|
120
|
+
const { options, options: { mapper, enumType, syntaxType, optionalType } } = plugin;
|
|
83
121
|
const mode = useMode();
|
|
84
122
|
const pluginManager = usePluginManager();
|
|
85
123
|
const oas = useOas();
|
|
86
|
-
const { getSchemas, getFile, getName, getGroup } = useOperationManager();
|
|
124
|
+
const { getSchemas, getFile, getName, getGroup } = useOperationManager(generator);
|
|
87
125
|
const schemaManager = useSchemaManager();
|
|
88
126
|
const file = getFile(operation);
|
|
89
127
|
const schemas = getSchemas(operation);
|
|
@@ -93,7 +131,7 @@ const typeGenerator = createReactGenerator({
|
|
|
93
131
|
});
|
|
94
132
|
const combinedSchemaName = operation.method === "get" ? `${type}Query` : `${type}Mutation`;
|
|
95
133
|
const schemaGenerator = new SchemaGenerator(options, {
|
|
96
|
-
fabric:
|
|
134
|
+
fabric: generator.context.fabric,
|
|
97
135
|
oas,
|
|
98
136
|
plugin,
|
|
99
137
|
pluginManager,
|
|
@@ -120,33 +158,28 @@ const typeGenerator = createReactGenerator({
|
|
|
120
158
|
typedName: schemaManager.getName(name, { type: "type" }),
|
|
121
159
|
file: schemaManager.getFile(options$1.operationName || name, { group })
|
|
122
160
|
};
|
|
123
|
-
return /* @__PURE__ */ jsxs(
|
|
161
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [mode === "split" && imports.map((imp) => /* @__PURE__ */ jsx(File.Import, {
|
|
162
|
+
root: file.path,
|
|
163
|
+
path: imp.path,
|
|
164
|
+
name: imp.name,
|
|
165
|
+
isTypeOnly: true
|
|
166
|
+
}, [
|
|
124
167
|
name,
|
|
125
|
-
|
|
168
|
+
imp.name,
|
|
169
|
+
imp.path,
|
|
170
|
+
imp.isTypeOnly
|
|
171
|
+
].join("-"))), /* @__PURE__ */ jsx(Type$1, {
|
|
172
|
+
name: type$1.name,
|
|
173
|
+
typedName: type$1.typedName,
|
|
174
|
+
description,
|
|
126
175
|
tree,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
imp.name,
|
|
135
|
-
imp.path,
|
|
136
|
-
imp.isTypeOnly
|
|
137
|
-
].join("-"))), /* @__PURE__ */ jsx(Type$1, {
|
|
138
|
-
name: type$1.name,
|
|
139
|
-
typedName: type$1.typedName,
|
|
140
|
-
description,
|
|
141
|
-
tree,
|
|
142
|
-
schema: schemaObject,
|
|
143
|
-
mapper,
|
|
144
|
-
enumType,
|
|
145
|
-
optionalType,
|
|
146
|
-
keysToOmit,
|
|
147
|
-
syntaxType
|
|
148
|
-
})]
|
|
149
|
-
}, [name, schemaObject.$ref].join("-"));
|
|
176
|
+
schema: schemaObject,
|
|
177
|
+
mapper,
|
|
178
|
+
enumType,
|
|
179
|
+
optionalType,
|
|
180
|
+
keysToOmit,
|
|
181
|
+
syntaxType
|
|
182
|
+
})] });
|
|
150
183
|
};
|
|
151
184
|
return /* @__PURE__ */ jsxs(File, {
|
|
152
185
|
baseName: file.baseName,
|
|
@@ -174,9 +207,8 @@ const typeGenerator = createReactGenerator({
|
|
|
174
207
|
})]
|
|
175
208
|
});
|
|
176
209
|
},
|
|
177
|
-
Schema({ schema,
|
|
178
|
-
const { mapper, enumType, syntaxType, optionalType } =
|
|
179
|
-
const { options: { output } } = usePlugin();
|
|
210
|
+
Schema({ schema, plugin }) {
|
|
211
|
+
const { options: { mapper, enumType, syntaxType, optionalType, output } } = plugin;
|
|
180
212
|
const mode = useMode();
|
|
181
213
|
const oas = useOas();
|
|
182
214
|
const pluginManager = usePluginManager();
|
|
@@ -228,45 +260,6 @@ const typeGenerator = createReactGenerator({
|
|
|
228
260
|
}
|
|
229
261
|
});
|
|
230
262
|
|
|
231
|
-
//#endregion
|
|
232
|
-
//#region src/generators/oasGenerator.tsx
|
|
233
|
-
const oasGenerator = createReactGenerator({
|
|
234
|
-
name: "oas",
|
|
235
|
-
Operations() {
|
|
236
|
-
const { options: { output }, key: pluginKey } = usePlugin();
|
|
237
|
-
const pluginManager = usePluginManager();
|
|
238
|
-
const oas = useOas();
|
|
239
|
-
const file = pluginManager.getFile({
|
|
240
|
-
name: "oas",
|
|
241
|
-
extname: ".ts",
|
|
242
|
-
pluginKey
|
|
243
|
-
});
|
|
244
|
-
return /* @__PURE__ */ jsxs(File, {
|
|
245
|
-
baseName: file.baseName,
|
|
246
|
-
path: file.path,
|
|
247
|
-
meta: file.meta,
|
|
248
|
-
banner: getBanner({
|
|
249
|
-
oas,
|
|
250
|
-
output,
|
|
251
|
-
config: pluginManager.config
|
|
252
|
-
}),
|
|
253
|
-
footer: getFooter({
|
|
254
|
-
oas,
|
|
255
|
-
output
|
|
256
|
-
}),
|
|
257
|
-
children: [/* @__PURE__ */ jsx(File.Import, {
|
|
258
|
-
name: ["Infer"],
|
|
259
|
-
path: "@kubb/oas",
|
|
260
|
-
isTypeOnly: true
|
|
261
|
-
}), /* @__PURE__ */ jsx(OasType, {
|
|
262
|
-
name: "oas",
|
|
263
|
-
typeName: "Oas",
|
|
264
|
-
api: oas.api
|
|
265
|
-
})]
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
|
|
270
263
|
//#endregion
|
|
271
264
|
//#region src/plugin.ts
|
|
272
265
|
const pluginTsName = "plugin-ts";
|
|
@@ -360,5 +353,5 @@ const pluginTs = createPlugin((options) => {
|
|
|
360
353
|
});
|
|
361
354
|
|
|
362
355
|
//#endregion
|
|
363
|
-
export {
|
|
364
|
-
//# sourceMappingURL=plugin-
|
|
356
|
+
export { oasGenerator as i, pluginTsName as n, typeGenerator as r, pluginTs as t };
|
|
357
|
+
//# sourceMappingURL=plugin-CfDmQVWY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-CfDmQVWY.js","names":["properties: Record<string, ts.TypeNode>","factory.createUnionDeclaration","factory.createTypeReferenceNode","factory.createIdentifier","factory.createTypeAliasDeclaration","factory.createTypeLiteralNode","factory.createPropertySignature","options","type","Type","options","groupName: Group['name']","transformers"],"sources":["../src/generators/oasGenerator.tsx","../src/generators/typeGenerator.tsx","../src/plugin.ts"],"sourcesContent":["import { usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport { OasType } from '../components'\nimport type { PluginTs } from '../types.ts'\n\nexport const oasGenerator = createReactGenerator<PluginTs>({\n name: 'oas',\n Operations({ plugin }) {\n const {\n options: { output },\n key: pluginKey,\n } = plugin\n const pluginManager = usePluginManager()\n const oas = useOas()\n\n const file = pluginManager.getFile({ name: 'oas', extname: '.ts', pluginKey })\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 <File.Import name={['Infer']} path=\"@kubb/oas\" isTypeOnly />\n\n <OasType name={'oas'} typeName={'Oas'} api={oas.api} />\n </File>\n )\n },\n})\n","import type { PluginManager } from '@kubb/core'\nimport { useMode, usePluginManager } from '@kubb/core/hooks'\nimport transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/fabric-core/parsers/typescript'\nimport { isKeyword, type OperationSchemas, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport type ts from 'typescript'\nimport { Type } from '../components'\nimport * as factory from '../factory.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types'\n\nfunction printCombinedSchema({ name, schemas, pluginManager }: { name: string; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n const properties: Record<string, ts.TypeNode> = {}\n\n if (schemas.response) {\n properties['response'] = factory.createUnionDeclaration({\n nodes: schemas.responses.map((res) => {\n const identifier = pluginManager.resolveName({\n name: res.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n\n return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }),\n })!\n }\n\n if (schemas.request) {\n const identifier = pluginManager.resolveName({\n name: schemas.request.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['request'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.pathParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.pathParams.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['pathParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.queryParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.queryParams.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['queryParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.headerParams) {\n const identifier = pluginManager.resolveName({\n name: schemas.headerParams.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n properties['headerParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }\n\n if (schemas.errors) {\n properties['errors'] = factory.createUnionDeclaration({\n nodes: schemas.errors.map((error) => {\n const identifier = pluginManager.resolveName({\n name: error.name,\n pluginKey: [pluginTsName],\n type: 'function',\n })\n\n return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n }),\n })!\n }\n\n const namespaceNode = factory.createTypeAliasDeclaration({\n name,\n type: factory.createTypeLiteralNode(\n Object.keys(properties)\n .map((key) => {\n const type = properties[key]\n if (!type) {\n return undefined\n }\n\n return factory.createPropertySignature({\n name: transformers.pascalCase(key),\n type,\n })\n })\n .filter(Boolean),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n return print([namespaceNode])\n}\n\nexport const typeGenerator = createReactGenerator<PluginTs>({\n name: 'typescript',\n Operation({ operation, generator, plugin }) {\n const {\n options,\n options: { mapper, enumType, syntaxType, optionalType },\n } = plugin\n\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getName, getGroup } = useOperationManager(generator)\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const type = getName(operation, { type: 'function', pluginKey: [pluginTsName] })\n const combinedSchemaName = operation.method === 'get' ? `${type}Query` : `${type}Mutation`\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: generator.context.fabric,\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) => {\n const tree = schemaGenerator.parse({ schemaObject, name })\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const type = {\n name: schemaManager.getName(name, { type: 'type' }),\n typedName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(options.operationName || name, { group }),\n }\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[name, imp.name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n description={description}\n tree={tree}\n schema={schemaObject}\n mapper={mapper}\n enumType={enumType}\n optionalType={optionalType}\n keysToOmit={keysToOmit}\n syntaxType={syntaxType}\n />\n </>\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 {operationSchemas.map(mapOperationSchema)}\n\n <File.Source name={combinedSchemaName} isExportable isIndexable isTypeOnly>\n {printCombinedSchema({ name: combinedSchemaName, schemas, pluginManager })}\n </File.Source>\n </File>\n )\n },\n Schema({ schema, plugin }) {\n const {\n options: { mapper, enumType, syntaxType, optionalType, output },\n } = plugin\n const mode = useMode()\n\n const oas = useOas()\n const pluginManager = usePluginManager()\n\n const { getName, getImports, getFile } = useSchemaManager()\n const imports = getImports(schema.tree)\n const schemaFromTree = schema.tree.find((item) => item.keyword === schemaKeywords.schema)\n\n if (enumType === 'asPascalConst') {\n console.warn(`enumType '${enumType}' is deprecated`)\n }\n\n let typedName = getName(schema.name, { type: 'type' })\n\n if (enumType === 'asConst' && schemaFromTree && isKeyword(schemaFromTree, schemaKeywords.enum)) {\n typedName = typedName += 'Key' //Suffix for avoiding collisions (https://github.com/kubb-labs/kubb/issues/1873)\n }\n\n const type = {\n name: getName(schema.name, { type: 'function' }),\n typedName,\n file: getFile(schema.name),\n }\n\n return (\n <File\n baseName={type.file.baseName}\n path={type.file.path}\n meta={type.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[schema.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n description={schema.value.description}\n tree={schema.tree}\n schema={schema.value}\n mapper={mapper}\n enumType={enumType}\n optionalType={optionalType}\n syntaxType={syntaxType}\n />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { createPlugin, type Group, getBarrelFiles, getMode, 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 { oasGenerator, typeGenerator } from './generators'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumSuffix = 'enum',\n dateType = 'string',\n unknownType = 'any',\n optionalType = 'questionToken',\n emptySchemaType = unknownType,\n syntaxType = 'type',\n transformers = {},\n oasType = false,\n mapper = {},\n generators = [typeGenerator, oasType === 'infer' ? oasGenerator : undefined].filter(Boolean),\n contentType,\n } = options\n\n return {\n name: pluginTsName,\n options: {\n output,\n transformers,\n dateType,\n optionalType,\n oasType,\n enumType,\n enumSuffix,\n unknownType,\n emptySchemaType,\n syntaxType,\n group,\n override,\n mapper,\n },\n context() {\n return {\n usedEnumNames: {} as Record<string, number>,\n }\n },\n pre: [pluginOasName],\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? 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 const resolvedName = pascalCase(name, { isFile: type === 'file' })\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 = getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n fabric: this.fabric,\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 fabric: this.fabric,\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 getBarrelFiles(this.fileManager.files, {\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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"}
|