@kubb/plugin-client 3.0.0-alpha.1 → 3.0.0-alpha.11
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/client.ts +1 -1
- package/dist/chunk-3NQF7BGA.cjs +58 -0
- package/dist/chunk-3NQF7BGA.cjs.map +1 -0
- package/dist/chunk-AZDWYBLW.cjs +4 -0
- package/dist/chunk-AZDWYBLW.cjs.map +1 -0
- package/dist/chunk-PO22ZUSH.cjs +125 -0
- package/dist/chunk-PO22ZUSH.cjs.map +1 -0
- package/dist/chunk-QBFKND4S.js +122 -0
- package/dist/chunk-QBFKND4S.js.map +1 -0
- package/dist/chunk-QLVGX3VO.js +56 -0
- package/dist/chunk-QLVGX3VO.js.map +1 -0
- package/dist/chunk-YJOVLRSC.js +3 -0
- package/dist/chunk-YJOVLRSC.js.map +1 -0
- package/dist/client.cjs +16 -7
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +5 -6
- package/dist/client.js.map +1 -1
- package/dist/components.cjs +12 -4
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.cts +3 -5
- package/dist/components.d.ts +3 -5
- package/dist/components.js +3 -8
- package/dist/components.js.map +1 -1
- package/dist/generators.cjs +13 -0
- package/dist/generators.cjs.map +1 -0
- package/dist/generators.d.cts +10 -0
- package/dist/generators.d.ts +10 -0
- package/dist/generators.js +4 -0
- package/dist/generators.js.map +1 -0
- package/dist/index.cjs +51 -104
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -5
- package/dist/index.d.ts +3 -5
- package/dist/index.js +31 -91
- package/dist/index.js.map +1 -1
- package/dist/{types-xK4X9e5d.d.cts → types-DETYKDFZ.d.cts} +19 -108
- package/dist/{types-xK4X9e5d.d.ts → types-DETYKDFZ.d.ts} +19 -108
- package/package.json +22 -14
- package/src/components/Client.tsx +77 -198
- package/src/components/Operations.tsx +9 -75
- package/src/components/__snapshots__/Client/showPetById.ts +3 -6
- package/src/components/__snapshots__/Operations/showPetById.ts +5 -5
- package/src/generators/axiosGenerator.tsx +63 -0
- package/src/generators/index.ts +1 -0
- package/src/plugin.ts +21 -38
- package/src/types.ts +9 -3
- package/dist/chunk-W57BRY5O.js +0 -201
- package/dist/chunk-W57BRY5O.js.map +0 -1
- package/dist/chunk-W7F5CMU6.cjs +0 -201
- package/dist/chunk-W7F5CMU6.cjs.map +0 -1
- package/src/OperationGenerator.tsx +0 -65
package/dist/chunk-W57BRY5O.js
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
// src/components/Client.tsx
|
|
2
|
-
import { URLPath } from "@kubb/core/utils";
|
|
3
|
-
import { Parser, File, Function, useApp } from "@kubb/react";
|
|
4
|
-
import { pluginTsName } from "@kubb/plugin-ts";
|
|
5
|
-
import { useOperation, useOperationManager } from "@kubb/plugin-oas/hooks";
|
|
6
|
-
import { getComments, getPathParams } from "@kubb/plugin-oas/utils";
|
|
7
|
-
import { isOptional } from "@kubb/oas";
|
|
8
|
-
import { jsx, jsxs } from "@kubb/react/jsx-runtime";
|
|
9
|
-
function Template({ name, generics, returnType, params, JSDoc, client }) {
|
|
10
|
-
const isFormData = client.contentType === "multipart/form-data";
|
|
11
|
-
const headers = [
|
|
12
|
-
client.contentType !== "application/json" ? `'Content-Type': '${client.contentType}'` : void 0,
|
|
13
|
-
client.withHeaders ? "...headers" : void 0
|
|
14
|
-
].filter(Boolean).join(", ");
|
|
15
|
-
const clientParams = {
|
|
16
|
-
data: {
|
|
17
|
-
mode: "object",
|
|
18
|
-
children: {
|
|
19
|
-
method: {
|
|
20
|
-
type: "string",
|
|
21
|
-
value: JSON.stringify(client.method)
|
|
22
|
-
},
|
|
23
|
-
url: {
|
|
24
|
-
type: "string",
|
|
25
|
-
value: client.path.template
|
|
26
|
-
},
|
|
27
|
-
baseURL: client.baseURL ? {
|
|
28
|
-
type: "string",
|
|
29
|
-
value: JSON.stringify(client.baseURL)
|
|
30
|
-
} : void 0,
|
|
31
|
-
params: client.withQueryParams ? {
|
|
32
|
-
type: "any"
|
|
33
|
-
} : void 0,
|
|
34
|
-
data: client.withData ? {
|
|
35
|
-
type: "any",
|
|
36
|
-
value: isFormData ? "formData" : void 0
|
|
37
|
-
} : void 0,
|
|
38
|
-
headers: headers.length ? {
|
|
39
|
-
type: "any",
|
|
40
|
-
value: headers.length ? `{ ${headers}, ...options.headers }` : void 0
|
|
41
|
-
} : void 0,
|
|
42
|
-
options: {
|
|
43
|
-
type: "any",
|
|
44
|
-
mode: "inlineSpread"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
const formData = isFormData ? `
|
|
50
|
-
const formData = new FormData()
|
|
51
|
-
if(data) {
|
|
52
|
-
Object.keys(data).forEach((key) => {
|
|
53
|
-
const value = data[key];
|
|
54
|
-
if (typeof key === "string" && (typeof value === "string" || value instanceof Blob)) {
|
|
55
|
-
formData.append(key, value);
|
|
56
|
-
}
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
` : void 0;
|
|
60
|
-
return /* @__PURE__ */ jsxs(Function, { name, async: true, export: true, generics, returnType, params, JSDoc, children: [
|
|
61
|
-
formData || "",
|
|
62
|
-
/* @__PURE__ */ jsx(Function.Call, { name: "res", to: /* @__PURE__ */ jsx(Function, { name: "client", async: true, generics: client.generics, params: clientParams }) }),
|
|
63
|
-
/* @__PURE__ */ jsx(Function.Return, { children: client.dataReturnType === "data" ? "res.data" : "res" })
|
|
64
|
-
] });
|
|
65
|
-
}
|
|
66
|
-
function RootTemplate({ children }) {
|
|
67
|
-
const {
|
|
68
|
-
plugin: {
|
|
69
|
-
options: {
|
|
70
|
-
client: { importPath },
|
|
71
|
-
extName
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
} = useApp();
|
|
75
|
-
const { getSchemas, getFile } = useOperationManager();
|
|
76
|
-
const operation = useOperation();
|
|
77
|
-
const file = getFile(operation);
|
|
78
|
-
const fileType = getFile(operation, { pluginKey: [pluginTsName] });
|
|
79
|
-
const schemas = getSchemas(operation, { pluginKey: [pluginTsName], type: "type" });
|
|
80
|
-
return /* @__PURE__ */ jsx(Parser, { language: "typescript", children: /* @__PURE__ */ jsxs(File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
|
|
81
|
-
/* @__PURE__ */ jsx(File.Import, { name: "client", path: importPath }),
|
|
82
|
-
/* @__PURE__ */ jsx(File.Import, { name: ["ResponseConfig"], path: importPath, isTypeOnly: true }),
|
|
83
|
-
/* @__PURE__ */ jsx(
|
|
84
|
-
File.Import,
|
|
85
|
-
{
|
|
86
|
-
extName,
|
|
87
|
-
name: [schemas.request?.name, schemas.response.name, schemas.pathParams?.name, schemas.queryParams?.name, schemas.headerParams?.name].filter(Boolean),
|
|
88
|
-
root: file.path,
|
|
89
|
-
path: fileType.path,
|
|
90
|
-
isTypeOnly: true
|
|
91
|
-
}
|
|
92
|
-
),
|
|
93
|
-
/* @__PURE__ */ jsx(File.Source, { children })
|
|
94
|
-
] }) });
|
|
95
|
-
}
|
|
96
|
-
var defaultTemplates = { default: Template, root: RootTemplate };
|
|
97
|
-
function Client({ baseURL, Template: Template3 = defaultTemplates.default }) {
|
|
98
|
-
const {
|
|
99
|
-
plugin: {
|
|
100
|
-
options: { client, dataReturnType, pathParamsType }
|
|
101
|
-
}
|
|
102
|
-
} = useApp();
|
|
103
|
-
const { getSchemas, getName } = useOperationManager();
|
|
104
|
-
const operation = useOperation();
|
|
105
|
-
const contentType = operation.getContentType();
|
|
106
|
-
const name = getName(operation, { type: "function" });
|
|
107
|
-
const schemas = getSchemas(operation, { pluginKey: [pluginTsName], type: "type" });
|
|
108
|
-
return /* @__PURE__ */ jsx(
|
|
109
|
-
Template3,
|
|
110
|
-
{
|
|
111
|
-
name,
|
|
112
|
-
params: {
|
|
113
|
-
pathParams: {
|
|
114
|
-
mode: pathParamsType === "object" ? "object" : "inlineSpread",
|
|
115
|
-
children: getPathParams(schemas.pathParams, { typed: true })
|
|
116
|
-
},
|
|
117
|
-
data: schemas.request?.name ? {
|
|
118
|
-
type: schemas.request?.name,
|
|
119
|
-
optional: isOptional(schemas.request?.schema)
|
|
120
|
-
} : void 0,
|
|
121
|
-
params: schemas.queryParams?.name ? {
|
|
122
|
-
type: schemas.queryParams?.name,
|
|
123
|
-
optional: isOptional(schemas.queryParams?.schema)
|
|
124
|
-
} : void 0,
|
|
125
|
-
headers: schemas.headerParams?.name ? {
|
|
126
|
-
type: schemas.headerParams?.name,
|
|
127
|
-
optional: isOptional(schemas.headerParams?.schema)
|
|
128
|
-
} : void 0,
|
|
129
|
-
options: {
|
|
130
|
-
type: "Partial<Parameters<typeof client>[0]>",
|
|
131
|
-
default: "{}"
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
returnType: dataReturnType === "data" ? `ResponseConfig<${schemas.response.name}>["data"]` : `ResponseConfig<${schemas.response.name}>`,
|
|
135
|
-
JSDoc: {
|
|
136
|
-
comments: getComments(operation)
|
|
137
|
-
},
|
|
138
|
-
client: {
|
|
139
|
-
// only set baseURL from serverIndex(swagger) when no custom client(default) is used
|
|
140
|
-
baseURL: client.importPath === "@kubb/plugin-client/client" ? baseURL : void 0,
|
|
141
|
-
generics: [schemas.response.name, schemas.request?.name].filter(Boolean),
|
|
142
|
-
dataReturnType,
|
|
143
|
-
withQueryParams: !!schemas.queryParams?.name,
|
|
144
|
-
withData: !!schemas.request?.name,
|
|
145
|
-
withHeaders: !!schemas.headerParams?.name,
|
|
146
|
-
method: operation.method,
|
|
147
|
-
path: new URLPath(operation.path),
|
|
148
|
-
contentType
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
Client.File = function({ baseURL, ...props }) {
|
|
154
|
-
const templates = { ...defaultTemplates, ...props.templates };
|
|
155
|
-
const Template3 = templates.default;
|
|
156
|
-
const RootTemplate3 = templates.root;
|
|
157
|
-
return /* @__PURE__ */ jsx(RootTemplate3, { children: /* @__PURE__ */ jsx(Client, { baseURL, Template: Template3 }) });
|
|
158
|
-
};
|
|
159
|
-
Client.templates = defaultTemplates;
|
|
160
|
-
|
|
161
|
-
// src/components/Operations.tsx
|
|
162
|
-
import { URLPath as URLPath2 } from "@kubb/core/utils";
|
|
163
|
-
import { useOperations } from "@kubb/plugin-oas/hooks";
|
|
164
|
-
import { Const, File as File2, Parser as Parser2, useApp as useApp2 } from "@kubb/react";
|
|
165
|
-
import { jsx as jsx2 } from "@kubb/react/jsx-runtime";
|
|
166
|
-
function Template2({ name, operations }) {
|
|
167
|
-
const operationsObject = {};
|
|
168
|
-
operations.forEach((operation) => {
|
|
169
|
-
operationsObject[operation.getOperationId()] = {
|
|
170
|
-
path: new URLPath2(operation.path).URL,
|
|
171
|
-
method: operation.method
|
|
172
|
-
};
|
|
173
|
-
});
|
|
174
|
-
return /* @__PURE__ */ jsx2(Const, { name, export: true, asConst: true, children: JSON.stringify(operationsObject, void 0, 2) });
|
|
175
|
-
}
|
|
176
|
-
function RootTemplate2({ children }) {
|
|
177
|
-
const {
|
|
178
|
-
pluginManager,
|
|
179
|
-
plugin: { key: pluginKey }
|
|
180
|
-
} = useApp2();
|
|
181
|
-
const file = pluginManager.getFile({ name: "operations", extName: ".ts", pluginKey });
|
|
182
|
-
return /* @__PURE__ */ jsx2(Parser2, { language: "typescript", children: /* @__PURE__ */ jsx2(File2, { baseName: file.baseName, path: file.path, meta: file.meta, exportable: false, children: /* @__PURE__ */ jsx2(File2.Source, { children }) }) });
|
|
183
|
-
}
|
|
184
|
-
var defaultTemplates2 = { default: Template2, root: RootTemplate2 };
|
|
185
|
-
function Operations({ baseURL, Template: Template3 = defaultTemplates2.default }) {
|
|
186
|
-
const operations = useOperations();
|
|
187
|
-
return /* @__PURE__ */ jsx2(Template3, { baseURL, name: "operations", operations });
|
|
188
|
-
}
|
|
189
|
-
Operations.File = function({ baseURL, ...props }) {
|
|
190
|
-
const templates = { ...defaultTemplates2, ...props.templates };
|
|
191
|
-
const Template3 = templates.default;
|
|
192
|
-
const RootTemplate3 = templates.root;
|
|
193
|
-
return /* @__PURE__ */ jsx2(RootTemplate3, { children: /* @__PURE__ */ jsx2(Operations, { baseURL, Template: Template3 }) });
|
|
194
|
-
};
|
|
195
|
-
Operations.templates = defaultTemplates2;
|
|
196
|
-
|
|
197
|
-
export {
|
|
198
|
-
Client,
|
|
199
|
-
Operations
|
|
200
|
-
};
|
|
201
|
-
//# sourceMappingURL=chunk-W57BRY5O.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Client.tsx","../src/components/Operations.tsx"],"sourcesContent":["import { URLPath } from '@kubb/core/utils'\nimport { Parser, File, Function, useApp } from '@kubb/react'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getComments, getPathParams } from '@kubb/plugin-oas/utils'\n\nimport { isOptional } from '@kubb/oas'\nimport type { HttpMethod } from '@kubb/oas'\nimport type { KubbNode, Params } from '@kubb/react'\nimport type { ComponentProps, ComponentType } from 'react'\nimport type { FileMeta, PluginClient } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n /**\n * Parameters/options/props that need to be used\n */\n params: Params\n /**\n * Generics that needs to be added for TypeScript\n */\n generics?: string\n /**\n * ReturnType(see async for adding Promise type)\n */\n returnType?: string\n /**\n * Options for JSdocs\n */\n JSDoc?: {\n comments: string[]\n }\n client: {\n baseURL: string | undefined\n generics: string | string[]\n method: HttpMethod\n path: URLPath\n dataReturnType: PluginClient['options']['dataReturnType']\n withQueryParams: boolean\n withData: boolean\n withHeaders: boolean\n contentType: string\n }\n}\n\nfunction Template({ name, generics, returnType, params, JSDoc, client }: TemplateProps): KubbNode {\n const isFormData = client.contentType === 'multipart/form-data'\n const headers = [\n client.contentType !== 'application/json' ? `'Content-Type': '${client.contentType}'` : undefined,\n client.withHeaders ? '...headers' : undefined,\n ]\n .filter(Boolean)\n .join(', ')\n const clientParams: Params = {\n data: {\n mode: 'object',\n children: {\n method: {\n type: 'string',\n value: JSON.stringify(client.method),\n },\n url: {\n type: 'string',\n value: client.path.template,\n },\n baseURL: client.baseURL\n ? {\n type: 'string',\n value: JSON.stringify(client.baseURL),\n }\n : undefined,\n params: client.withQueryParams\n ? {\n type: 'any',\n }\n : undefined,\n data: client.withData\n ? {\n type: 'any',\n value: isFormData ? 'formData' : undefined,\n }\n : undefined,\n headers: headers.length\n ? {\n type: 'any',\n value: headers.length ? `{ ${headers}, ...options.headers }` : undefined,\n }\n : undefined,\n options: {\n type: 'any',\n mode: 'inlineSpread',\n },\n },\n },\n }\n\n const formData = isFormData\n ? `\n const formData = new FormData()\n if(data) {\n Object.keys(data).forEach((key) => {\n const value = data[key];\n if (typeof key === \"string\" && (typeof value === \"string\" || value instanceof Blob)) {\n formData.append(key, value);\n }\n })\n }\n `\n : undefined\n\n return (\n <Function name={name} async export generics={generics} returnType={returnType} params={params} JSDoc={JSDoc}>\n {formData || ''}\n <Function.Call name=\"res\" to={<Function name=\"client\" async generics={client.generics} params={clientParams} />} />\n <Function.Return>{client.dataReturnType === 'data' ? 'res.data' : 'res'}</Function.Return>\n </Function>\n )\n}\n\ntype RootTemplateProps = {\n children?: React.ReactNode\n}\n\nfunction RootTemplate({ children }: RootTemplateProps) {\n const {\n plugin: {\n options: {\n client: { importPath },\n extName,\n },\n },\n } = useApp<PluginClient>()\n\n const { getSchemas, getFile } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const fileType = getFile(operation, { pluginKey: [pluginTsName] })\n const schemas = getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' })\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={'client'} path={importPath} />\n <File.Import name={['ResponseConfig']} path={importPath} isTypeOnly />\n <File.Import\n extName={extName}\n name={[schemas.request?.name, schemas.response.name, schemas.pathParams?.name, schemas.queryParams?.name, schemas.headerParams?.name].filter(Boolean)}\n root={file.path}\n path={fileType.path}\n isTypeOnly\n />\n <File.Source>{children}</File.Source>\n </File>\n </Parser>\n )\n}\n\nconst defaultTemplates = { default: Template, root: RootTemplate } as const\n\ntype Templates = Partial<typeof defaultTemplates>\n\ntype ClientProps = {\n baseURL: string | undefined\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: ComponentType<ComponentProps<typeof Template>>\n}\n\nexport function Client({ baseURL, Template = defaultTemplates.default }: ClientProps): KubbNode {\n const {\n plugin: {\n options: { client, dataReturnType, pathParamsType },\n },\n } = useApp<PluginClient>()\n\n const { getSchemas, getName } = useOperationManager()\n const operation = useOperation()\n\n const contentType = operation.getContentType()\n const name = getName(operation, { type: 'function' })\n const schemas = getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' })\n\n return (\n <Template\n name={name}\n params={{\n pathParams: {\n mode: pathParamsType === 'object' ? 'object' : 'inlineSpread',\n children: getPathParams(schemas.pathParams, { typed: true }),\n },\n data: schemas.request?.name\n ? {\n type: schemas.request?.name,\n optional: isOptional(schemas.request?.schema),\n }\n : undefined,\n params: schemas.queryParams?.name\n ? {\n type: schemas.queryParams?.name,\n optional: isOptional(schemas.queryParams?.schema),\n }\n : undefined,\n headers: schemas.headerParams?.name\n ? {\n type: schemas.headerParams?.name,\n optional: isOptional(schemas.headerParams?.schema),\n }\n : undefined,\n options: {\n type: 'Partial<Parameters<typeof client>[0]>',\n default: '{}',\n },\n }}\n returnType={dataReturnType === 'data' ? `ResponseConfig<${schemas.response.name}>[\"data\"]` : `ResponseConfig<${schemas.response.name}>`}\n JSDoc={{\n comments: getComments(operation),\n }}\n client={{\n // only set baseURL from serverIndex(swagger) when no custom client(default) is used\n baseURL: client.importPath === '@kubb/plugin-client/client' ? baseURL : undefined,\n generics: [schemas.response.name, schemas.request?.name].filter(Boolean),\n dataReturnType,\n withQueryParams: !!schemas.queryParams?.name,\n withData: !!schemas.request?.name,\n withHeaders: !!schemas.headerParams?.name,\n method: operation.method,\n path: new URLPath(operation.path),\n contentType,\n }}\n />\n )\n}\n\ntype FileProps = {\n baseURL: string | undefined\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: Templates\n}\n\nClient.File = function ({ baseURL, ...props }: FileProps): KubbNode {\n const templates = { ...defaultTemplates, ...props.templates }\n\n const Template = templates.default\n const RootTemplate = templates.root\n\n return (\n <RootTemplate>\n <Client baseURL={baseURL} Template={Template} />\n </RootTemplate>\n )\n}\n\nClient.templates = defaultTemplates\n","import { URLPath } from '@kubb/core/utils'\nimport { useOperations } from '@kubb/plugin-oas/hooks'\nimport { Const, File, Parser, useApp } from '@kubb/react'\n\nimport type { HttpMethod, Operation } from '@kubb/oas'\nimport type { KubbNode } from '@kubb/react'\nimport type { ComponentProps, ComponentType } from 'react'\nimport type { FileMeta, PluginClient } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n operations: Operation[]\n baseURL: string | undefined\n}\n\nfunction Template({ name, operations }: TemplateProps): KubbNode {\n const operationsObject: Record<string, { path: string; method: HttpMethod }> = {}\n\n operations.forEach((operation) => {\n operationsObject[operation.getOperationId()] = {\n path: new URLPath(operation.path).URL,\n method: operation.method,\n }\n })\n return (\n <Const name={name} export asConst>\n {JSON.stringify(operationsObject, undefined, 2)}\n </Const>\n )\n}\n\ntype RootTemplateProps = {\n children?: React.ReactNode\n}\n\nfunction RootTemplate({ children }: RootTemplateProps) {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginClient>()\n const file = pluginManager.getFile({ name: 'operations', extName: '.ts', pluginKey })\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta} exportable={false}>\n <File.Source>{children}</File.Source>\n </File>\n </Parser>\n )\n}\n\nconst defaultTemplates = { default: Template, root: RootTemplate } as const\n\ntype Templates = Partial<typeof defaultTemplates>\n\ntype Props = {\n baseURL: string | undefined\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: ComponentType<ComponentProps<typeof Template>>\n}\n\nexport function Operations({ baseURL, Template = defaultTemplates.default }: Props): KubbNode {\n const operations = useOperations()\n\n return <Template baseURL={baseURL} name=\"operations\" operations={operations} />\n}\n\ntype FileProps = {\n baseURL: string | undefined\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: Templates\n}\n\nOperations.File = function ({ baseURL, ...props }: FileProps): KubbNode {\n const templates = { ...defaultTemplates, ...props.templates }\n\n const Template = templates.default\n const RootTemplate = templates.root\n\n return (\n <RootTemplate>\n <Operations baseURL={baseURL} Template={Template} />\n </RootTemplate>\n )\n}\n\nOperations.templates = defaultTemplates\n"],"mappings":"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","names":["Template","RootTemplate","URLPath","File","Parser","useApp","jsx","Template","RootTemplate","defaultTemplates"]}
|
package/dist/chunk-W7F5CMU6.cjs
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/components/Client.tsx
|
|
2
|
-
var _utils = require('@kubb/core/utils');
|
|
3
|
-
var _react = require('@kubb/react');
|
|
4
|
-
var _plugints = require('@kubb/plugin-ts');
|
|
5
|
-
var _hooks = require('@kubb/plugin-oas/hooks');
|
|
6
|
-
var _utils3 = require('@kubb/plugin-oas/utils');
|
|
7
|
-
var _oas = require('@kubb/oas');
|
|
8
|
-
var _jsxruntime = require('@kubb/react/jsx-runtime');
|
|
9
|
-
function Template({ name, generics, returnType, params, JSDoc, client }) {
|
|
10
|
-
const isFormData = client.contentType === "multipart/form-data";
|
|
11
|
-
const headers = [
|
|
12
|
-
client.contentType !== "application/json" ? `'Content-Type': '${client.contentType}'` : void 0,
|
|
13
|
-
client.withHeaders ? "...headers" : void 0
|
|
14
|
-
].filter(Boolean).join(", ");
|
|
15
|
-
const clientParams = {
|
|
16
|
-
data: {
|
|
17
|
-
mode: "object",
|
|
18
|
-
children: {
|
|
19
|
-
method: {
|
|
20
|
-
type: "string",
|
|
21
|
-
value: JSON.stringify(client.method)
|
|
22
|
-
},
|
|
23
|
-
url: {
|
|
24
|
-
type: "string",
|
|
25
|
-
value: client.path.template
|
|
26
|
-
},
|
|
27
|
-
baseURL: client.baseURL ? {
|
|
28
|
-
type: "string",
|
|
29
|
-
value: JSON.stringify(client.baseURL)
|
|
30
|
-
} : void 0,
|
|
31
|
-
params: client.withQueryParams ? {
|
|
32
|
-
type: "any"
|
|
33
|
-
} : void 0,
|
|
34
|
-
data: client.withData ? {
|
|
35
|
-
type: "any",
|
|
36
|
-
value: isFormData ? "formData" : void 0
|
|
37
|
-
} : void 0,
|
|
38
|
-
headers: headers.length ? {
|
|
39
|
-
type: "any",
|
|
40
|
-
value: headers.length ? `{ ${headers}, ...options.headers }` : void 0
|
|
41
|
-
} : void 0,
|
|
42
|
-
options: {
|
|
43
|
-
type: "any",
|
|
44
|
-
mode: "inlineSpread"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
const formData = isFormData ? `
|
|
50
|
-
const formData = new FormData()
|
|
51
|
-
if(data) {
|
|
52
|
-
Object.keys(data).forEach((key) => {
|
|
53
|
-
const value = data[key];
|
|
54
|
-
if (typeof key === "string" && (typeof value === "string" || value instanceof Blob)) {
|
|
55
|
-
formData.append(key, value);
|
|
56
|
-
}
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
` : void 0;
|
|
60
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react.Function, { name, async: true, export: true, generics, returnType, params, JSDoc, children: [
|
|
61
|
-
formData || "",
|
|
62
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Function.Call, { name: "res", to: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Function, { name: "client", async: true, generics: client.generics, params: clientParams }) }),
|
|
63
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Function.Return, { children: client.dataReturnType === "data" ? "res.data" : "res" })
|
|
64
|
-
] });
|
|
65
|
-
}
|
|
66
|
-
function RootTemplate({ children }) {
|
|
67
|
-
const {
|
|
68
|
-
plugin: {
|
|
69
|
-
options: {
|
|
70
|
-
client: { importPath },
|
|
71
|
-
extName
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
} = _react.useApp.call(void 0, );
|
|
75
|
-
const { getSchemas, getFile } = _hooks.useOperationManager.call(void 0, );
|
|
76
|
-
const operation = _hooks.useOperation.call(void 0, );
|
|
77
|
-
const file = getFile(operation);
|
|
78
|
-
const fileType = getFile(operation, { pluginKey: [_plugints.pluginTsName] });
|
|
79
|
-
const schemas = getSchemas(operation, { pluginKey: [_plugints.pluginTsName], type: "type" });
|
|
80
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Parser, { language: "typescript", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react.File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
|
|
81
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Import, { name: "client", path: importPath }),
|
|
82
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Import, { name: ["ResponseConfig"], path: importPath, isTypeOnly: true }),
|
|
83
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
84
|
-
_react.File.Import,
|
|
85
|
-
{
|
|
86
|
-
extName,
|
|
87
|
-
name: [_optionalChain([schemas, 'access', _ => _.request, 'optionalAccess', _2 => _2.name]), schemas.response.name, _optionalChain([schemas, 'access', _3 => _3.pathParams, 'optionalAccess', _4 => _4.name]), _optionalChain([schemas, 'access', _5 => _5.queryParams, 'optionalAccess', _6 => _6.name]), _optionalChain([schemas, 'access', _7 => _7.headerParams, 'optionalAccess', _8 => _8.name])].filter(Boolean),
|
|
88
|
-
root: file.path,
|
|
89
|
-
path: fileType.path,
|
|
90
|
-
isTypeOnly: true
|
|
91
|
-
}
|
|
92
|
-
),
|
|
93
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children })
|
|
94
|
-
] }) });
|
|
95
|
-
}
|
|
96
|
-
var defaultTemplates = { default: Template, root: RootTemplate };
|
|
97
|
-
function Client({ baseURL, Template: Template3 = defaultTemplates.default }) {
|
|
98
|
-
const {
|
|
99
|
-
plugin: {
|
|
100
|
-
options: { client, dataReturnType, pathParamsType }
|
|
101
|
-
}
|
|
102
|
-
} = _react.useApp.call(void 0, );
|
|
103
|
-
const { getSchemas, getName } = _hooks.useOperationManager.call(void 0, );
|
|
104
|
-
const operation = _hooks.useOperation.call(void 0, );
|
|
105
|
-
const contentType = operation.getContentType();
|
|
106
|
-
const name = getName(operation, { type: "function" });
|
|
107
|
-
const schemas = getSchemas(operation, { pluginKey: [_plugints.pluginTsName], type: "type" });
|
|
108
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
109
|
-
Template3,
|
|
110
|
-
{
|
|
111
|
-
name,
|
|
112
|
-
params: {
|
|
113
|
-
pathParams: {
|
|
114
|
-
mode: pathParamsType === "object" ? "object" : "inlineSpread",
|
|
115
|
-
children: _utils3.getPathParams.call(void 0, schemas.pathParams, { typed: true })
|
|
116
|
-
},
|
|
117
|
-
data: _optionalChain([schemas, 'access', _9 => _9.request, 'optionalAccess', _10 => _10.name]) ? {
|
|
118
|
-
type: _optionalChain([schemas, 'access', _11 => _11.request, 'optionalAccess', _12 => _12.name]),
|
|
119
|
-
optional: _oas.isOptional.call(void 0, _optionalChain([schemas, 'access', _13 => _13.request, 'optionalAccess', _14 => _14.schema]))
|
|
120
|
-
} : void 0,
|
|
121
|
-
params: _optionalChain([schemas, 'access', _15 => _15.queryParams, 'optionalAccess', _16 => _16.name]) ? {
|
|
122
|
-
type: _optionalChain([schemas, 'access', _17 => _17.queryParams, 'optionalAccess', _18 => _18.name]),
|
|
123
|
-
optional: _oas.isOptional.call(void 0, _optionalChain([schemas, 'access', _19 => _19.queryParams, 'optionalAccess', _20 => _20.schema]))
|
|
124
|
-
} : void 0,
|
|
125
|
-
headers: _optionalChain([schemas, 'access', _21 => _21.headerParams, 'optionalAccess', _22 => _22.name]) ? {
|
|
126
|
-
type: _optionalChain([schemas, 'access', _23 => _23.headerParams, 'optionalAccess', _24 => _24.name]),
|
|
127
|
-
optional: _oas.isOptional.call(void 0, _optionalChain([schemas, 'access', _25 => _25.headerParams, 'optionalAccess', _26 => _26.schema]))
|
|
128
|
-
} : void 0,
|
|
129
|
-
options: {
|
|
130
|
-
type: "Partial<Parameters<typeof client>[0]>",
|
|
131
|
-
default: "{}"
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
returnType: dataReturnType === "data" ? `ResponseConfig<${schemas.response.name}>["data"]` : `ResponseConfig<${schemas.response.name}>`,
|
|
135
|
-
JSDoc: {
|
|
136
|
-
comments: _utils3.getComments.call(void 0, operation)
|
|
137
|
-
},
|
|
138
|
-
client: {
|
|
139
|
-
// only set baseURL from serverIndex(swagger) when no custom client(default) is used
|
|
140
|
-
baseURL: client.importPath === "@kubb/plugin-client/client" ? baseURL : void 0,
|
|
141
|
-
generics: [schemas.response.name, _optionalChain([schemas, 'access', _27 => _27.request, 'optionalAccess', _28 => _28.name])].filter(Boolean),
|
|
142
|
-
dataReturnType,
|
|
143
|
-
withQueryParams: !!_optionalChain([schemas, 'access', _29 => _29.queryParams, 'optionalAccess', _30 => _30.name]),
|
|
144
|
-
withData: !!_optionalChain([schemas, 'access', _31 => _31.request, 'optionalAccess', _32 => _32.name]),
|
|
145
|
-
withHeaders: !!_optionalChain([schemas, 'access', _33 => _33.headerParams, 'optionalAccess', _34 => _34.name]),
|
|
146
|
-
method: operation.method,
|
|
147
|
-
path: new (0, _utils.URLPath)(operation.path),
|
|
148
|
-
contentType
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
Client.File = function({ baseURL, ...props }) {
|
|
154
|
-
const templates = { ...defaultTemplates, ...props.templates };
|
|
155
|
-
const Template3 = templates.default;
|
|
156
|
-
const RootTemplate3 = templates.root;
|
|
157
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RootTemplate3, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Client, { baseURL, Template: Template3 }) });
|
|
158
|
-
};
|
|
159
|
-
Client.templates = defaultTemplates;
|
|
160
|
-
|
|
161
|
-
// src/components/Operations.tsx
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
function Template2({ name, operations }) {
|
|
167
|
-
const operationsObject = {};
|
|
168
|
-
operations.forEach((operation) => {
|
|
169
|
-
operationsObject[operation.getOperationId()] = {
|
|
170
|
-
path: new (0, _utils.URLPath)(operation.path).URL,
|
|
171
|
-
method: operation.method
|
|
172
|
-
};
|
|
173
|
-
});
|
|
174
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Const, { name, export: true, asConst: true, children: JSON.stringify(operationsObject, void 0, 2) });
|
|
175
|
-
}
|
|
176
|
-
function RootTemplate2({ children }) {
|
|
177
|
-
const {
|
|
178
|
-
pluginManager,
|
|
179
|
-
plugin: { key: pluginKey }
|
|
180
|
-
} = _react.useApp.call(void 0, );
|
|
181
|
-
const file = pluginManager.getFile({ name: "operations", extName: ".ts", pluginKey });
|
|
182
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Parser, { language: "typescript", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File, { baseName: file.baseName, path: file.path, meta: file.meta, exportable: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children }) }) });
|
|
183
|
-
}
|
|
184
|
-
var defaultTemplates2 = { default: Template2, root: RootTemplate2 };
|
|
185
|
-
function Operations({ baseURL, Template: Template3 = defaultTemplates2.default }) {
|
|
186
|
-
const operations = _hooks.useOperations.call(void 0, );
|
|
187
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Template3, { baseURL, name: "operations", operations });
|
|
188
|
-
}
|
|
189
|
-
Operations.File = function({ baseURL, ...props }) {
|
|
190
|
-
const templates = { ...defaultTemplates2, ...props.templates };
|
|
191
|
-
const Template3 = templates.default;
|
|
192
|
-
const RootTemplate3 = templates.root;
|
|
193
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RootTemplate3, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Operations, { baseURL, Template: Template3 }) });
|
|
194
|
-
};
|
|
195
|
-
Operations.templates = defaultTemplates2;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
exports.Client = Client; exports.Operations = Operations;
|
|
201
|
-
//# sourceMappingURL=chunk-W7F5CMU6.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-client/dist/chunk-W7F5CMU6.cjs","../src/components/Client.tsx","../src/components/Operations.tsx"],"names":["Template","RootTemplate","URLPath","jsx","useApp","Parser","File","defaultTemplates"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/plugin-client/dist/chunk-W7F5CMU6.cjs","sourcesContent":[null,"import { URLPath } from '@kubb/core/utils'\nimport { Parser, File, Function, useApp } from '@kubb/react'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getComments, getPathParams } from '@kubb/plugin-oas/utils'\n\nimport { isOptional } from '@kubb/oas'\nimport type { HttpMethod } from '@kubb/oas'\nimport type { KubbNode, Params } from '@kubb/react'\nimport type { ComponentProps, ComponentType } from 'react'\nimport type { FileMeta, PluginClient } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n /**\n * Parameters/options/props that need to be used\n */\n params: Params\n /**\n * Generics that needs to be added for TypeScript\n */\n generics?: string\n /**\n * ReturnType(see async for adding Promise type)\n */\n returnType?: string\n /**\n * Options for JSdocs\n */\n JSDoc?: {\n comments: string[]\n }\n client: {\n baseURL: string | undefined\n generics: string | string[]\n method: HttpMethod\n path: URLPath\n dataReturnType: PluginClient['options']['dataReturnType']\n withQueryParams: boolean\n withData: boolean\n withHeaders: boolean\n contentType: string\n }\n}\n\nfunction Template({ name, generics, returnType, params, JSDoc, client }: TemplateProps): KubbNode {\n const isFormData = client.contentType === 'multipart/form-data'\n const headers = [\n client.contentType !== 'application/json' ? `'Content-Type': '${client.contentType}'` : undefined,\n client.withHeaders ? '...headers' : undefined,\n ]\n .filter(Boolean)\n .join(', ')\n const clientParams: Params = {\n data: {\n mode: 'object',\n children: {\n method: {\n type: 'string',\n value: JSON.stringify(client.method),\n },\n url: {\n type: 'string',\n value: client.path.template,\n },\n baseURL: client.baseURL\n ? {\n type: 'string',\n value: JSON.stringify(client.baseURL),\n }\n : undefined,\n params: client.withQueryParams\n ? {\n type: 'any',\n }\n : undefined,\n data: client.withData\n ? {\n type: 'any',\n value: isFormData ? 'formData' : undefined,\n }\n : undefined,\n headers: headers.length\n ? {\n type: 'any',\n value: headers.length ? `{ ${headers}, ...options.headers }` : undefined,\n }\n : undefined,\n options: {\n type: 'any',\n mode: 'inlineSpread',\n },\n },\n },\n }\n\n const formData = isFormData\n ? `\n const formData = new FormData()\n if(data) {\n Object.keys(data).forEach((key) => {\n const value = data[key];\n if (typeof key === \"string\" && (typeof value === \"string\" || value instanceof Blob)) {\n formData.append(key, value);\n }\n })\n }\n `\n : undefined\n\n return (\n <Function name={name} async export generics={generics} returnType={returnType} params={params} JSDoc={JSDoc}>\n {formData || ''}\n <Function.Call name=\"res\" to={<Function name=\"client\" async generics={client.generics} params={clientParams} />} />\n <Function.Return>{client.dataReturnType === 'data' ? 'res.data' : 'res'}</Function.Return>\n </Function>\n )\n}\n\ntype RootTemplateProps = {\n children?: React.ReactNode\n}\n\nfunction RootTemplate({ children }: RootTemplateProps) {\n const {\n plugin: {\n options: {\n client: { importPath },\n extName,\n },\n },\n } = useApp<PluginClient>()\n\n const { getSchemas, getFile } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const fileType = getFile(operation, { pluginKey: [pluginTsName] })\n const schemas = getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' })\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={'client'} path={importPath} />\n <File.Import name={['ResponseConfig']} path={importPath} isTypeOnly />\n <File.Import\n extName={extName}\n name={[schemas.request?.name, schemas.response.name, schemas.pathParams?.name, schemas.queryParams?.name, schemas.headerParams?.name].filter(Boolean)}\n root={file.path}\n path={fileType.path}\n isTypeOnly\n />\n <File.Source>{children}</File.Source>\n </File>\n </Parser>\n )\n}\n\nconst defaultTemplates = { default: Template, root: RootTemplate } as const\n\ntype Templates = Partial<typeof defaultTemplates>\n\ntype ClientProps = {\n baseURL: string | undefined\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: ComponentType<ComponentProps<typeof Template>>\n}\n\nexport function Client({ baseURL, Template = defaultTemplates.default }: ClientProps): KubbNode {\n const {\n plugin: {\n options: { client, dataReturnType, pathParamsType },\n },\n } = useApp<PluginClient>()\n\n const { getSchemas, getName } = useOperationManager()\n const operation = useOperation()\n\n const contentType = operation.getContentType()\n const name = getName(operation, { type: 'function' })\n const schemas = getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' })\n\n return (\n <Template\n name={name}\n params={{\n pathParams: {\n mode: pathParamsType === 'object' ? 'object' : 'inlineSpread',\n children: getPathParams(schemas.pathParams, { typed: true }),\n },\n data: schemas.request?.name\n ? {\n type: schemas.request?.name,\n optional: isOptional(schemas.request?.schema),\n }\n : undefined,\n params: schemas.queryParams?.name\n ? {\n type: schemas.queryParams?.name,\n optional: isOptional(schemas.queryParams?.schema),\n }\n : undefined,\n headers: schemas.headerParams?.name\n ? {\n type: schemas.headerParams?.name,\n optional: isOptional(schemas.headerParams?.schema),\n }\n : undefined,\n options: {\n type: 'Partial<Parameters<typeof client>[0]>',\n default: '{}',\n },\n }}\n returnType={dataReturnType === 'data' ? `ResponseConfig<${schemas.response.name}>[\"data\"]` : `ResponseConfig<${schemas.response.name}>`}\n JSDoc={{\n comments: getComments(operation),\n }}\n client={{\n // only set baseURL from serverIndex(swagger) when no custom client(default) is used\n baseURL: client.importPath === '@kubb/plugin-client/client' ? baseURL : undefined,\n generics: [schemas.response.name, schemas.request?.name].filter(Boolean),\n dataReturnType,\n withQueryParams: !!schemas.queryParams?.name,\n withData: !!schemas.request?.name,\n withHeaders: !!schemas.headerParams?.name,\n method: operation.method,\n path: new URLPath(operation.path),\n contentType,\n }}\n />\n )\n}\n\ntype FileProps = {\n baseURL: string | undefined\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: Templates\n}\n\nClient.File = function ({ baseURL, ...props }: FileProps): KubbNode {\n const templates = { ...defaultTemplates, ...props.templates }\n\n const Template = templates.default\n const RootTemplate = templates.root\n\n return (\n <RootTemplate>\n <Client baseURL={baseURL} Template={Template} />\n </RootTemplate>\n )\n}\n\nClient.templates = defaultTemplates\n","import { URLPath } from '@kubb/core/utils'\nimport { useOperations } from '@kubb/plugin-oas/hooks'\nimport { Const, File, Parser, useApp } from '@kubb/react'\n\nimport type { HttpMethod, Operation } from '@kubb/oas'\nimport type { KubbNode } from '@kubb/react'\nimport type { ComponentProps, ComponentType } from 'react'\nimport type { FileMeta, PluginClient } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n operations: Operation[]\n baseURL: string | undefined\n}\n\nfunction Template({ name, operations }: TemplateProps): KubbNode {\n const operationsObject: Record<string, { path: string; method: HttpMethod }> = {}\n\n operations.forEach((operation) => {\n operationsObject[operation.getOperationId()] = {\n path: new URLPath(operation.path).URL,\n method: operation.method,\n }\n })\n return (\n <Const name={name} export asConst>\n {JSON.stringify(operationsObject, undefined, 2)}\n </Const>\n )\n}\n\ntype RootTemplateProps = {\n children?: React.ReactNode\n}\n\nfunction RootTemplate({ children }: RootTemplateProps) {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginClient>()\n const file = pluginManager.getFile({ name: 'operations', extName: '.ts', pluginKey })\n\n return (\n <Parser language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta} exportable={false}>\n <File.Source>{children}</File.Source>\n </File>\n </Parser>\n )\n}\n\nconst defaultTemplates = { default: Template, root: RootTemplate } as const\n\ntype Templates = Partial<typeof defaultTemplates>\n\ntype Props = {\n baseURL: string | undefined\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: ComponentType<ComponentProps<typeof Template>>\n}\n\nexport function Operations({ baseURL, Template = defaultTemplates.default }: Props): KubbNode {\n const operations = useOperations()\n\n return <Template baseURL={baseURL} name=\"operations\" operations={operations} />\n}\n\ntype FileProps = {\n baseURL: string | undefined\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: Templates\n}\n\nOperations.File = function ({ baseURL, ...props }: FileProps): KubbNode {\n const templates = { ...defaultTemplates, ...props.templates }\n\n const Template = templates.default\n const RootTemplate = templates.root\n\n return (\n <RootTemplate>\n <Operations baseURL={baseURL} Template={Template} />\n </RootTemplate>\n )\n}\n\nOperations.templates = defaultTemplates\n"]}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { OperationGenerator as Generator } from '@kubb/plugin-oas'
|
|
2
|
-
import { Oas } from '@kubb/plugin-oas/components'
|
|
3
|
-
import { App, createRoot } from '@kubb/react'
|
|
4
|
-
|
|
5
|
-
import { Client, Operations } from './components/index.ts'
|
|
6
|
-
|
|
7
|
-
import type { Operation } from '@kubb/oas'
|
|
8
|
-
import type { OperationMethodResult, OperationsByMethod } from '@kubb/plugin-oas'
|
|
9
|
-
import type { FileMeta, PluginClient } from './types.ts'
|
|
10
|
-
|
|
11
|
-
export class OperationGenerator extends Generator<PluginClient['resolvedOptions'], PluginClient> {
|
|
12
|
-
async all(operations: Operation[], _operationsByMethod: OperationsByMethod): OperationMethodResult<FileMeta> {
|
|
13
|
-
const { pluginManager, oas, plugin, mode } = this.context
|
|
14
|
-
|
|
15
|
-
const root = createRoot({
|
|
16
|
-
logger: pluginManager.logger,
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
const templates = {
|
|
20
|
-
operations: Operations.templates,
|
|
21
|
-
client: Client.templates,
|
|
22
|
-
...this.options.templates,
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
root.render(
|
|
26
|
-
<App pluginManager={pluginManager} plugin={plugin} mode={mode}>
|
|
27
|
-
<Oas oas={oas} operations={operations} generator={this}>
|
|
28
|
-
{templates.operations && <Operations.File baseURL={this.options.baseURL} templates={templates.operations} />}
|
|
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
|
|
38
|
-
|
|
39
|
-
const root = createRoot({
|
|
40
|
-
logger: pluginManager.logger,
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
const templates = {
|
|
44
|
-
operations: Operations.templates,
|
|
45
|
-
client: Client.templates,
|
|
46
|
-
...options.templates,
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (!templates.client) {
|
|
50
|
-
return []
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
root.render(
|
|
54
|
-
<App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>
|
|
55
|
-
<Oas oas={oas} operations={[operation]} generator={this}>
|
|
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
|
-
}
|