@kubb/plugin-client 3.0.0-alpha.2 → 3.0.0-alpha.4
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.d.cts +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/index.cjs +31 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +32 -46
- package/dist/index.js.map +1 -1
- package/dist/{types-xK4X9e5d.d.cts → types-qg0fig71.d.cts} +5 -0
- package/dist/{types-xK4X9e5d.d.ts → types-qg0fig71.d.ts} +5 -0
- package/package.json +12 -12
- package/src/OperationGenerator.tsx +15 -51
- package/src/plugin.ts +17 -12
- package/src/types.ts +6 -0
package/dist/components.d.cts
CHANGED
package/dist/components.d.ts
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -13,44 +13,25 @@ var _utils3 = require('@kubb/plugin-oas/utils');
|
|
|
13
13
|
|
|
14
14
|
// src/OperationGenerator.tsx
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
require('@kubb/plugin-oas/components');
|
|
17
|
+
require('@kubb/react');
|
|
18
18
|
var _jsxruntime = require('@kubb/react/jsx-runtime');
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.App, { pluginManager, plugin, mode, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, operations, generator: this, children: templates.operations && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkW7F5CMU6cjs.Operations.File, { baseURL: this.options.baseURL, templates: templates.operations }) }) })
|
|
32
|
-
);
|
|
33
|
-
return root.files;
|
|
34
|
-
}
|
|
35
|
-
async operation(operation, options) {
|
|
36
|
-
const { oas, pluginManager, plugin, mode } = this.context;
|
|
37
|
-
const root = _react.createRoot.call(void 0, {
|
|
38
|
-
logger: pluginManager.logger
|
|
39
|
-
});
|
|
40
|
-
const templates = {
|
|
41
|
-
operations: _chunkW7F5CMU6cjs.Operations.templates,
|
|
42
|
-
client: _chunkW7F5CMU6cjs.Client.templates,
|
|
43
|
-
...options.templates
|
|
44
|
-
};
|
|
45
|
-
if (!templates.client) {
|
|
46
|
-
return [];
|
|
19
|
+
var clientParser = _pluginoas.createReactParser.call(void 0, {
|
|
20
|
+
name: "plugin-client",
|
|
21
|
+
Operations({ options }) {
|
|
22
|
+
if (!options.templates.operations) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkW7F5CMU6cjs.Operations.File, { baseURL: options.baseURL, templates: options.templates.operations });
|
|
26
|
+
},
|
|
27
|
+
Operation({ options, operation }) {
|
|
28
|
+
const isEnabled = options.client.methods.some((method) => operation.method === method);
|
|
29
|
+
if (!options.templates.client || !isEnabled) {
|
|
30
|
+
return null;
|
|
47
31
|
}
|
|
48
|
-
|
|
49
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, operations: [operation], generator: this, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Operation, { operation, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkW7F5CMU6cjs.Client.File, { baseURL: this.options.baseURL, templates: templates.client }) }) }) })
|
|
50
|
-
);
|
|
51
|
-
return root.files;
|
|
32
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkW7F5CMU6cjs.Client.File, { baseURL: options.baseURL, templates: options.templates.client });
|
|
52
33
|
}
|
|
53
|
-
};
|
|
34
|
+
});
|
|
54
35
|
|
|
55
36
|
// src/plugin.ts
|
|
56
37
|
var pluginClientName = "plugin-client";
|
|
@@ -74,6 +55,7 @@ var pluginClient = _core.createPlugin.call(void 0, (options) => {
|
|
|
74
55
|
dataReturnType,
|
|
75
56
|
client: {
|
|
76
57
|
importPath: "@kubb/plugin-client/client",
|
|
58
|
+
methods: ["get", "post", "delete", "put"],
|
|
77
59
|
...options.client
|
|
78
60
|
},
|
|
79
61
|
pathParamsType,
|
|
@@ -110,7 +92,7 @@ var pluginClient = _core.createPlugin.call(void 0, (options) => {
|
|
|
110
92
|
const root = _path2.default.resolve(this.config.root, this.config.output.path);
|
|
111
93
|
const mode = _core.FileManager.getMode(_path2.default.resolve(root, output.path));
|
|
112
94
|
const baseURL = await swaggerPlugin.context.getBaseURL();
|
|
113
|
-
const operationGenerator = new OperationGenerator(
|
|
95
|
+
const operationGenerator = new (0, _pluginoas.OperationGenerator)(
|
|
114
96
|
{
|
|
115
97
|
...this.plugin.options,
|
|
116
98
|
baseURL
|
|
@@ -126,15 +108,9 @@ var pluginClient = _core.createPlugin.call(void 0, (options) => {
|
|
|
126
108
|
mode
|
|
127
109
|
}
|
|
128
110
|
);
|
|
129
|
-
const files = await operationGenerator.build();
|
|
111
|
+
const files = await operationGenerator.build(clientParser);
|
|
130
112
|
await this.addFile(...files);
|
|
131
|
-
|
|
132
|
-
async buildEnd() {
|
|
133
|
-
if (this.config.output.write === false) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
const root = _path2.default.resolve(this.config.root, this.config.output.path);
|
|
137
|
-
if (_optionalChain([group, 'optionalAccess', _6 => _6.type]) === "tag") {
|
|
113
|
+
if (this.config.output.write && _optionalChain([group, 'optionalAccess', _6 => _6.type]) === "tag") {
|
|
138
114
|
const rootFiles = await _utils3.getGroupedByTagFiles.call(void 0, {
|
|
139
115
|
logger: this.logger,
|
|
140
116
|
files: this.fileManager.files,
|
|
@@ -146,12 +122,22 @@ var pluginClient = _core.createPlugin.call(void 0, (options) => {
|
|
|
146
122
|
});
|
|
147
123
|
await this.addFile(...rootFiles);
|
|
148
124
|
}
|
|
149
|
-
|
|
125
|
+
},
|
|
126
|
+
async buildEnd() {
|
|
127
|
+
if (this.config.output.write === false) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const root = _path2.default.resolve(this.config.root, this.config.output.path);
|
|
131
|
+
const files = await this.fileManager.getIndexFiles({
|
|
150
132
|
root,
|
|
151
133
|
output,
|
|
152
134
|
meta: { pluginKey: this.plugin.key },
|
|
153
135
|
logger: this.logger
|
|
154
136
|
});
|
|
137
|
+
await this.fileManager.processFiles({
|
|
138
|
+
logger: this.logger,
|
|
139
|
+
files
|
|
140
|
+
});
|
|
155
141
|
}
|
|
156
142
|
};
|
|
157
143
|
});
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-client/dist/index.cjs","../src/plugin.ts","../src/OperationGenerator.tsx"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,wDAA6B;AAC7B;AACA;ACLA,wEAAiB;AAEjB,kCAAyD;AACzD,uDAA0B;AAC1B,yCAA+B;AAC/B,
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-client/dist/index.cjs","../src/plugin.ts","../src/OperationGenerator.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/plugin-client/dist/index.cjs","sourcesContent":[null,"import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { OperationGenerator, pluginOasName } from '@kubb/plugin-oas'\nimport { getGroupedByTagFiles } from '@kubb/plugin-oas/utils'\n\nimport { clientParser } from './OperationGenerator.tsx'\nimport { Client, Operations } from './components/index.ts'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport type { PluginClient } from './types.ts'\n\nexport const pluginClientName = 'plugin-client' satisfies PluginClient['name']\n\nexport const pluginClient = createPlugin<PluginClient>((options) => {\n const {\n output = { path: 'clients' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n dataReturnType = 'data',\n pathParamsType = 'inline',\n templates,\n } = options\n\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginClientName,\n options: {\n extName: output.extName,\n dataReturnType,\n client: {\n importPath: '@kubb/plugin-client/client',\n methods: ['get', 'post', 'delete', 'put'],\n ...options.client,\n },\n pathParamsType,\n templates: {\n operations: Operations.templates,\n client: Client.templates,\n ...templates,\n },\n baseURL: undefined,\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 ?? 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 (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(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 = FileManager.getMode(path.resolve(root, output.path))\n const baseURL = await swaggerPlugin.context.getBaseURL()\n\n const operationGenerator = new OperationGenerator(\n {\n ...this.plugin.options,\n baseURL,\n },\n {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n exclude,\n include,\n override,\n mode,\n },\n )\n\n const files = await operationGenerator.build(clientParser)\n\n await this.addFile(...files)\n\n if (this.config.output.write && group?.type === 'tag') {\n const rootFiles = await getGroupedByTagFiles({\n logger: this.logger,\n files: this.fileManager.files,\n plugin: this.plugin,\n template,\n exportAs: group.exportAs || '{{tag}}Service',\n root,\n output,\n })\n\n await this.addFile(...rootFiles)\n }\n },\n async buildEnd() {\n if (this.config.output.write === false) {\n return\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n const files = await this.fileManager.getIndexFiles({\n root,\n output,\n meta: { pluginKey: this.plugin.key },\n logger: this.logger,\n })\n\n await this.fileManager.processFiles({\n logger: this.logger,\n files,\n })\n },\n }\n})\n","import { createReactParser, OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { Client, Operations } from './components/index.ts'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult, OperationsByMethod } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginClient } from './types.ts'\n\nexport const clientParser = createReactParser<PluginClient>({\n name: 'plugin-client',\n Operations({ options }) {\n if (!options.templates.operations) {\n return null\n }\n\n return <Operations.File baseURL={options.baseURL} templates={options.templates.operations} />\n },\n Operation({ options, operation }) {\n const isEnabled = options.client.methods.some((method) => operation.method === method)\n\n if (!options.templates.client || !isEnabled) {\n return null\n }\n\n return <Client.File baseURL={options.baseURL} templates={options.templates.client} />\n },\n})\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _kubb_core from '@kubb/core';
|
|
2
|
-
import { O as Options, P as PluginClient } from './types-
|
|
2
|
+
import { O as Options, P as PluginClient } from './types-qg0fig71.cjs';
|
|
3
3
|
import '@kubb/fs/types';
|
|
4
4
|
import '@kubb/plugin-oas';
|
|
5
5
|
import '@kubb/core/utils';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _kubb_core from '@kubb/core';
|
|
2
|
-
import { O as Options, P as PluginClient } from './types-
|
|
2
|
+
import { O as Options, P as PluginClient } from './types-qg0fig71.js';
|
|
3
3
|
import '@kubb/fs/types';
|
|
4
4
|
import '@kubb/plugin-oas';
|
|
5
5
|
import '@kubb/core/utils';
|
package/dist/index.js
CHANGED
|
@@ -8,49 +8,30 @@ import path from "path";
|
|
|
8
8
|
import { FileManager, PluginManager, createPlugin } from "@kubb/core";
|
|
9
9
|
import { camelCase } from "@kubb/core/transformers";
|
|
10
10
|
import { renderTemplate } from "@kubb/core/utils";
|
|
11
|
-
import { pluginOasName } from "@kubb/plugin-oas";
|
|
11
|
+
import { OperationGenerator, pluginOasName } from "@kubb/plugin-oas";
|
|
12
12
|
import { getGroupedByTagFiles } from "@kubb/plugin-oas/utils";
|
|
13
13
|
|
|
14
14
|
// src/OperationGenerator.tsx
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import
|
|
15
|
+
import { createReactParser } from "@kubb/plugin-oas";
|
|
16
|
+
import "@kubb/plugin-oas/components";
|
|
17
|
+
import "@kubb/react";
|
|
18
18
|
import { jsx } from "@kubb/react/jsx-runtime";
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/* @__PURE__ */ jsx(App, { pluginManager, plugin, mode, children: /* @__PURE__ */ jsx(Oas, { oas, operations, generator: this, children: templates.operations && /* @__PURE__ */ jsx(Operations.File, { baseURL: this.options.baseURL, templates: templates.operations }) }) })
|
|
32
|
-
);
|
|
33
|
-
return root.files;
|
|
34
|
-
}
|
|
35
|
-
async operation(operation, options) {
|
|
36
|
-
const { oas, pluginManager, plugin, mode } = this.context;
|
|
37
|
-
const root = createRoot({
|
|
38
|
-
logger: pluginManager.logger
|
|
39
|
-
});
|
|
40
|
-
const templates = {
|
|
41
|
-
operations: Operations.templates,
|
|
42
|
-
client: Client.templates,
|
|
43
|
-
...options.templates
|
|
44
|
-
};
|
|
45
|
-
if (!templates.client) {
|
|
46
|
-
return [];
|
|
19
|
+
var clientParser = createReactParser({
|
|
20
|
+
name: "plugin-client",
|
|
21
|
+
Operations({ options }) {
|
|
22
|
+
if (!options.templates.operations) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return /* @__PURE__ */ jsx(Operations.File, { baseURL: options.baseURL, templates: options.templates.operations });
|
|
26
|
+
},
|
|
27
|
+
Operation({ options, operation }) {
|
|
28
|
+
const isEnabled = options.client.methods.some((method) => operation.method === method);
|
|
29
|
+
if (!options.templates.client || !isEnabled) {
|
|
30
|
+
return null;
|
|
47
31
|
}
|
|
48
|
-
|
|
49
|
-
/* @__PURE__ */ jsx(App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ jsx(Oas, { oas, operations: [operation], generator: this, children: /* @__PURE__ */ jsx(Oas.Operation, { operation, children: /* @__PURE__ */ jsx(Client.File, { baseURL: this.options.baseURL, templates: templates.client }) }) }) })
|
|
50
|
-
);
|
|
51
|
-
return root.files;
|
|
32
|
+
return /* @__PURE__ */ jsx(Client.File, { baseURL: options.baseURL, templates: options.templates.client });
|
|
52
33
|
}
|
|
53
|
-
};
|
|
34
|
+
});
|
|
54
35
|
|
|
55
36
|
// src/plugin.ts
|
|
56
37
|
var pluginClientName = "plugin-client";
|
|
@@ -74,6 +55,7 @@ var pluginClient = createPlugin((options) => {
|
|
|
74
55
|
dataReturnType,
|
|
75
56
|
client: {
|
|
76
57
|
importPath: "@kubb/plugin-client/client",
|
|
58
|
+
methods: ["get", "post", "delete", "put"],
|
|
77
59
|
...options.client
|
|
78
60
|
},
|
|
79
61
|
pathParamsType,
|
|
@@ -126,15 +108,9 @@ var pluginClient = createPlugin((options) => {
|
|
|
126
108
|
mode
|
|
127
109
|
}
|
|
128
110
|
);
|
|
129
|
-
const files = await operationGenerator.build();
|
|
111
|
+
const files = await operationGenerator.build(clientParser);
|
|
130
112
|
await this.addFile(...files);
|
|
131
|
-
|
|
132
|
-
async buildEnd() {
|
|
133
|
-
if (this.config.output.write === false) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
const root = path.resolve(this.config.root, this.config.output.path);
|
|
137
|
-
if (group?.type === "tag") {
|
|
113
|
+
if (this.config.output.write && group?.type === "tag") {
|
|
138
114
|
const rootFiles = await getGroupedByTagFiles({
|
|
139
115
|
logger: this.logger,
|
|
140
116
|
files: this.fileManager.files,
|
|
@@ -146,12 +122,22 @@ var pluginClient = createPlugin((options) => {
|
|
|
146
122
|
});
|
|
147
123
|
await this.addFile(...rootFiles);
|
|
148
124
|
}
|
|
149
|
-
|
|
125
|
+
},
|
|
126
|
+
async buildEnd() {
|
|
127
|
+
if (this.config.output.write === false) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const root = path.resolve(this.config.root, this.config.output.path);
|
|
131
|
+
const files = await this.fileManager.getIndexFiles({
|
|
150
132
|
root,
|
|
151
133
|
output,
|
|
152
134
|
meta: { pluginKey: this.plugin.key },
|
|
153
135
|
logger: this.logger
|
|
154
136
|
});
|
|
137
|
+
await this.fileManager.processFiles({
|
|
138
|
+
logger: this.logger,
|
|
139
|
+
files
|
|
140
|
+
});
|
|
155
141
|
}
|
|
156
142
|
};
|
|
157
143
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts","../src/OperationGenerator.tsx"],"sourcesContent":["import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\nimport { getGroupedByTagFiles } from '@kubb/plugin-oas/utils'\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts","../src/OperationGenerator.tsx"],"sourcesContent":["import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { OperationGenerator, pluginOasName } from '@kubb/plugin-oas'\nimport { getGroupedByTagFiles } from '@kubb/plugin-oas/utils'\n\nimport { clientParser } from './OperationGenerator.tsx'\nimport { Client, Operations } from './components/index.ts'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport type { PluginClient } from './types.ts'\n\nexport const pluginClientName = 'plugin-client' satisfies PluginClient['name']\n\nexport const pluginClient = createPlugin<PluginClient>((options) => {\n const {\n output = { path: 'clients' },\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n dataReturnType = 'data',\n pathParamsType = 'inline',\n templates,\n } = options\n\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginClientName,\n options: {\n extName: output.extName,\n dataReturnType,\n client: {\n importPath: '@kubb/plugin-client/client',\n methods: ['get', 'post', 'delete', 'put'],\n ...options.client,\n },\n pathParamsType,\n templates: {\n operations: Operations.templates,\n client: Client.templates,\n ...templates,\n },\n baseURL: undefined,\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 ?? 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 (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(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 = FileManager.getMode(path.resolve(root, output.path))\n const baseURL = await swaggerPlugin.context.getBaseURL()\n\n const operationGenerator = new OperationGenerator(\n {\n ...this.plugin.options,\n baseURL,\n },\n {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n exclude,\n include,\n override,\n mode,\n },\n )\n\n const files = await operationGenerator.build(clientParser)\n\n await this.addFile(...files)\n\n if (this.config.output.write && group?.type === 'tag') {\n const rootFiles = await getGroupedByTagFiles({\n logger: this.logger,\n files: this.fileManager.files,\n plugin: this.plugin,\n template,\n exportAs: group.exportAs || '{{tag}}Service',\n root,\n output,\n })\n\n await this.addFile(...rootFiles)\n }\n },\n async buildEnd() {\n if (this.config.output.write === false) {\n return\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n const files = await this.fileManager.getIndexFiles({\n root,\n output,\n meta: { pluginKey: this.plugin.key },\n logger: this.logger,\n })\n\n await this.fileManager.processFiles({\n logger: this.logger,\n files,\n })\n },\n }\n})\n","import { createReactParser, OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { Client, Operations } from './components/index.ts'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult, OperationsByMethod } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginClient } from './types.ts'\n\nexport const clientParser = createReactParser<PluginClient>({\n name: 'plugin-client',\n Operations({ options }) {\n if (!options.templates.operations) {\n return null\n }\n\n return <Operations.File baseURL={options.baseURL} templates={options.templates.operations} />\n },\n Operation({ options, operation }) {\n const isEnabled = options.client.methods.some((method) => operation.method === method)\n\n if (!options.templates.client || !isEnabled) {\n return null\n }\n\n return <Client.File baseURL={options.baseURL} templates={options.templates.client} />\n },\n})\n"],"mappings":"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","names":["options"]}
|
|
@@ -183,6 +183,11 @@ type Options = {
|
|
|
183
183
|
* @default '@kubb/plugin-client/client'
|
|
184
184
|
*/
|
|
185
185
|
importPath?: string;
|
|
186
|
+
/**
|
|
187
|
+
* Define which HttpMethods can be used for queries
|
|
188
|
+
* @default ['get', 'post', 'put', 'delete']
|
|
189
|
+
*/
|
|
190
|
+
methods?: Array<HttpMethod>;
|
|
186
191
|
};
|
|
187
192
|
/**
|
|
188
193
|
* ReturnType that needs to be used when calling client().
|
|
@@ -183,6 +183,11 @@ type Options = {
|
|
|
183
183
|
* @default '@kubb/plugin-client/client'
|
|
184
184
|
*/
|
|
185
185
|
importPath?: string;
|
|
186
|
+
/**
|
|
187
|
+
* Define which HttpMethods can be used for queries
|
|
188
|
+
* @default ['get', 'post', 'put', 'delete']
|
|
189
|
+
*/
|
|
190
|
+
methods?: Array<HttpMethod>;
|
|
186
191
|
};
|
|
187
192
|
/**
|
|
188
193
|
* ReturnType that needs to be used when calling client().
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/plugin-client",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.4",
|
|
4
4
|
"description": "Generator plugin-client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"!/**/__tests__/**"
|
|
65
65
|
],
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@kubb/core": "3.0.0-alpha.
|
|
68
|
-
"@kubb/fs": "3.0.0-alpha.
|
|
69
|
-
"@kubb/oas": "3.0.0-alpha.
|
|
70
|
-
"@kubb/parser-ts": "3.0.0-alpha.
|
|
71
|
-
"@kubb/plugin-oas": "3.0.0-alpha.
|
|
72
|
-
"@kubb/plugin-ts": "3.0.0-alpha.
|
|
73
|
-
"@kubb/react": "3.0.0-alpha.
|
|
67
|
+
"@kubb/core": "3.0.0-alpha.4",
|
|
68
|
+
"@kubb/fs": "3.0.0-alpha.4",
|
|
69
|
+
"@kubb/oas": "3.0.0-alpha.4",
|
|
70
|
+
"@kubb/parser-ts": "3.0.0-alpha.4",
|
|
71
|
+
"@kubb/plugin-oas": "3.0.0-alpha.4",
|
|
72
|
+
"@kubb/plugin-ts": "3.0.0-alpha.4",
|
|
73
|
+
"@kubb/react": "3.0.0-alpha.4"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@types/react": "^18.3.4",
|
|
@@ -78,13 +78,13 @@
|
|
|
78
78
|
"react": "^18.3.1",
|
|
79
79
|
"tsup": "^8.2.4",
|
|
80
80
|
"typescript": "^5.5.4",
|
|
81
|
-
"@kubb/config-biome": "3.0.0-alpha.
|
|
82
|
-
"@kubb/config-ts": "3.0.0-alpha.
|
|
83
|
-
"@kubb/config-tsup": "3.0.0-alpha.
|
|
81
|
+
"@kubb/config-biome": "3.0.0-alpha.4",
|
|
82
|
+
"@kubb/config-ts": "3.0.0-alpha.4",
|
|
83
|
+
"@kubb/config-tsup": "3.0.0-alpha.4"
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
86
86
|
"axios": "^1.7.2",
|
|
87
|
-
"@kubb/react": "3.0.0-alpha.
|
|
87
|
+
"@kubb/react": "3.0.0-alpha.4"
|
|
88
88
|
},
|
|
89
89
|
"peerDependenciesMeta": {
|
|
90
90
|
"axios": {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OperationGenerator as Generator } from '@kubb/plugin-oas'
|
|
1
|
+
import { createReactParser, OperationGenerator as Generator } from '@kubb/plugin-oas'
|
|
2
2
|
import { Oas } from '@kubb/plugin-oas/components'
|
|
3
3
|
import { App, createRoot } from '@kubb/react'
|
|
4
4
|
|
|
@@ -8,58 +8,22 @@ import type { Operation } from '@kubb/oas'
|
|
|
8
8
|
import type { OperationMethodResult, OperationsByMethod } from '@kubb/plugin-oas'
|
|
9
9
|
import type { FileMeta, PluginClient } from './types.ts'
|
|
10
10
|
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
logger: pluginManager.logger,
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
const templates = {
|
|
20
|
-
operations: Operations.templates,
|
|
21
|
-
client: Client.templates,
|
|
22
|
-
...this.options.templates,
|
|
11
|
+
export const clientParser = createReactParser<PluginClient>({
|
|
12
|
+
name: 'plugin-client',
|
|
13
|
+
Operations({ options }) {
|
|
14
|
+
if (!options.templates.operations) {
|
|
15
|
+
return null
|
|
23
16
|
}
|
|
24
17
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</Oas>
|
|
30
|
-
</App>,
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
return root.files
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
async operation(operation: Operation, options: PluginClient['resolvedOptions']): OperationMethodResult<FileMeta> {
|
|
37
|
-
const { oas, pluginManager, plugin, mode } = this.context
|
|
18
|
+
return <Operations.File baseURL={options.baseURL} templates={options.templates.operations} />
|
|
19
|
+
},
|
|
20
|
+
Operation({ options, operation }) {
|
|
21
|
+
const isEnabled = options.client.methods.some((method) => operation.method === method)
|
|
38
22
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
const templates = {
|
|
44
|
-
operations: Operations.templates,
|
|
45
|
-
client: Client.templates,
|
|
46
|
-
...options.templates,
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (!templates.client) {
|
|
50
|
-
return []
|
|
23
|
+
if (!options.templates.client || !isEnabled) {
|
|
24
|
+
return null
|
|
51
25
|
}
|
|
52
26
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<Oas.Operation operation={operation}>
|
|
57
|
-
<Client.File baseURL={this.options.baseURL} templates={templates.client} />
|
|
58
|
-
</Oas.Operation>
|
|
59
|
-
</Oas>
|
|
60
|
-
</App>,
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
return root.files
|
|
64
|
-
}
|
|
65
|
-
}
|
|
27
|
+
return <Client.File baseURL={options.baseURL} templates={options.templates.client} />
|
|
28
|
+
},
|
|
29
|
+
})
|
package/src/plugin.ts
CHANGED
|
@@ -3,10 +3,10 @@ import path from 'node:path'
|
|
|
3
3
|
import { FileManager, PluginManager, createPlugin } from '@kubb/core'
|
|
4
4
|
import { camelCase } from '@kubb/core/transformers'
|
|
5
5
|
import { renderTemplate } from '@kubb/core/utils'
|
|
6
|
-
import { pluginOasName } from '@kubb/plugin-oas'
|
|
6
|
+
import { OperationGenerator, pluginOasName } from '@kubb/plugin-oas'
|
|
7
7
|
import { getGroupedByTagFiles } from '@kubb/plugin-oas/utils'
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { clientParser } from './OperationGenerator.tsx'
|
|
10
10
|
import { Client, Operations } from './components/index.ts'
|
|
11
11
|
|
|
12
12
|
import type { Plugin } from '@kubb/core'
|
|
@@ -37,6 +37,7 @@ export const pluginClient = createPlugin<PluginClient>((options) => {
|
|
|
37
37
|
dataReturnType,
|
|
38
38
|
client: {
|
|
39
39
|
importPath: '@kubb/plugin-client/client',
|
|
40
|
+
methods: ['get', 'post', 'delete', 'put'],
|
|
40
41
|
...options.client,
|
|
41
42
|
},
|
|
42
43
|
pathParamsType,
|
|
@@ -102,18 +103,11 @@ export const pluginClient = createPlugin<PluginClient>((options) => {
|
|
|
102
103
|
},
|
|
103
104
|
)
|
|
104
105
|
|
|
105
|
-
const files = await operationGenerator.build()
|
|
106
|
+
const files = await operationGenerator.build(clientParser)
|
|
106
107
|
|
|
107
108
|
await this.addFile(...files)
|
|
108
|
-
},
|
|
109
|
-
async buildEnd() {
|
|
110
|
-
if (this.config.output.write === false) {
|
|
111
|
-
return
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const root = path.resolve(this.config.root, this.config.output.path)
|
|
115
109
|
|
|
116
|
-
if (group?.type === 'tag') {
|
|
110
|
+
if (this.config.output.write && group?.type === 'tag') {
|
|
117
111
|
const rootFiles = await getGroupedByTagFiles({
|
|
118
112
|
logger: this.logger,
|
|
119
113
|
files: this.fileManager.files,
|
|
@@ -126,13 +120,24 @@ export const pluginClient = createPlugin<PluginClient>((options) => {
|
|
|
126
120
|
|
|
127
121
|
await this.addFile(...rootFiles)
|
|
128
122
|
}
|
|
123
|
+
},
|
|
124
|
+
async buildEnd() {
|
|
125
|
+
if (this.config.output.write === false) {
|
|
126
|
+
return
|
|
127
|
+
}
|
|
129
128
|
|
|
130
|
-
|
|
129
|
+
const root = path.resolve(this.config.root, this.config.output.path)
|
|
130
|
+
const files = await this.fileManager.getIndexFiles({
|
|
131
131
|
root,
|
|
132
132
|
output,
|
|
133
133
|
meta: { pluginKey: this.plugin.key },
|
|
134
134
|
logger: this.logger,
|
|
135
135
|
})
|
|
136
|
+
|
|
137
|
+
await this.fileManager.processFiles({
|
|
138
|
+
logger: this.logger,
|
|
139
|
+
files,
|
|
140
|
+
})
|
|
136
141
|
},
|
|
137
142
|
}
|
|
138
143
|
})
|
package/src/types.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type * as KubbFile from '@kubb/fs/types'
|
|
|
3
3
|
|
|
4
4
|
import type { Exclude, Include, Override, ResolvePathOptions } from '@kubb/plugin-oas'
|
|
5
5
|
import type { Client, Operations } from './components/index.ts'
|
|
6
|
+
import type { HttpMethod } from '@kubb/oas'
|
|
6
7
|
|
|
7
8
|
type Templates = {
|
|
8
9
|
operations?: typeof Operations.templates | false
|
|
@@ -73,6 +74,11 @@ export type Options = {
|
|
|
73
74
|
* @default '@kubb/plugin-client/client'
|
|
74
75
|
*/
|
|
75
76
|
importPath?: string
|
|
77
|
+
/**
|
|
78
|
+
* Define which HttpMethods can be used for queries
|
|
79
|
+
* @default ['get', 'post', 'put', 'delete']
|
|
80
|
+
*/
|
|
81
|
+
methods?: Array<HttpMethod>
|
|
76
82
|
}
|
|
77
83
|
/**
|
|
78
84
|
* ReturnType that needs to be used when calling client().
|