@kubb/plugin-client 5.0.0-beta.10 → 5.0.0-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +48 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +49 -32
- package/dist/index.js.map +1 -1
- package/extension.yaml +14 -11
- package/package.json +7 -7
- package/src/components/ClassClient.tsx +2 -2
- package/src/components/Client.tsx +1 -1
- package/src/components/StaticClassClient.tsx +2 -2
- package/src/components/Url.tsx +1 -1
- package/src/generators/classClientGenerator.tsx +12 -9
- package/src/generators/clientGenerator.tsx +6 -6
- package/src/generators/groupedClientGenerator.tsx +5 -5
- package/src/generators/operationsGenerator.tsx +5 -5
- package/src/generators/staticClassClientGenerator.tsx +10 -7
- package/src/utils.ts +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -256,7 +256,7 @@ type Props = {
|
|
|
256
256
|
isIndexable?: boolean;
|
|
257
257
|
isConfigurable?: boolean;
|
|
258
258
|
returnType?: string;
|
|
259
|
-
baseURL: string | undefined;
|
|
259
|
+
baseURL: string | null | undefined;
|
|
260
260
|
dataReturnType: PluginClient['resolvedOptions']['dataReturnType'];
|
|
261
261
|
paramsCasing: PluginClient['resolvedOptions']['paramsCasing'];
|
|
262
262
|
paramsType: PluginClient['resolvedOptions']['pathParamsType'];
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { source as source$2 } from "./templates/config.source.js";
|
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { ast, defineGenerator, definePlugin, defineResolver } from "@kubb/core";
|
|
7
7
|
import { functionPrinter, pluginTsName } from "@kubb/plugin-ts";
|
|
8
|
-
import { Const, File, Function,
|
|
8
|
+
import { Const, File, Function, jsxRendererSync } from "@kubb/renderer-jsx";
|
|
9
9
|
import { Fragment, jsx, jsxs } from "@kubb/renderer-jsx/jsx-runtime";
|
|
10
10
|
import { pluginZodName } from "@kubb/plugin-zod";
|
|
11
11
|
//#region ../../internals/utils/src/casing.ts
|
|
@@ -294,12 +294,13 @@ var URLPath = class {
|
|
|
294
294
|
* @example
|
|
295
295
|
* new URLPath('/pet/{petId}').toTemplateString() // '`/pet/${petId}`'
|
|
296
296
|
*/
|
|
297
|
-
toTemplateString({ prefix
|
|
298
|
-
|
|
297
|
+
toTemplateString({ prefix, replacer } = {}) {
|
|
298
|
+
const result = this.path.split(/\{([^}]+)\}/).map((part, i) => {
|
|
299
299
|
if (i % 2 === 0) return part;
|
|
300
300
|
const param = this.#transformParam(part);
|
|
301
301
|
return `\${${replacer ? replacer(param) : param}}`;
|
|
302
|
-
}).join("")
|
|
302
|
+
}).join("");
|
|
303
|
+
return `\`${prefix ?? ""}${result}\``;
|
|
303
304
|
}
|
|
304
305
|
/**
|
|
305
306
|
* Extracts all `{param}` segments from the path and returns them as a key-value map.
|
|
@@ -395,7 +396,17 @@ function resolveErrorNames(node, resolver) {
|
|
|
395
396
|
function resolveStatusCodeNames(node, resolver) {
|
|
396
397
|
return node.responses.map((response) => resolver.resolveResponseStatusName(node, response.statusCode));
|
|
397
398
|
}
|
|
399
|
+
const typeNamesByResolver = /* @__PURE__ */ new WeakMap();
|
|
398
400
|
function resolveOperationTypeNames(node, resolver, options = {}) {
|
|
401
|
+
const cacheKey = `${node.operationId}\0${options.paramsCasing ?? ""}\0${options.order ?? ""}\0${options.responseStatusNames ?? ""}\0${(options.exclude ?? []).join(",")}`;
|
|
402
|
+
let byResolver = typeNamesByResolver.get(resolver);
|
|
403
|
+
if (byResolver) {
|
|
404
|
+
const cached = byResolver.get(cacheKey);
|
|
405
|
+
if (cached) return cached;
|
|
406
|
+
} else {
|
|
407
|
+
byResolver = /* @__PURE__ */ new Map();
|
|
408
|
+
typeNamesByResolver.set(resolver, byResolver);
|
|
409
|
+
}
|
|
399
410
|
const { path, query, header } = getOperationParameters(node, { paramsCasing: options.paramsCasing });
|
|
400
411
|
const responseStatusNames = options.responseStatusNames === "error" ? resolveErrorNames(node, resolver) : options.responseStatusNames === false ? [] : resolveStatusCodeNames(node, resolver);
|
|
401
412
|
const exclude = new Set(options.exclude ?? []);
|
|
@@ -405,7 +416,7 @@ function resolveOperationTypeNames(node, resolver, options = {}) {
|
|
|
405
416
|
...header.map((param) => resolver.resolveHeaderParamsName(node, param))
|
|
406
417
|
];
|
|
407
418
|
const bodyAndResponseNames = [node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : void 0, resolver.resolveResponseName(node)];
|
|
408
|
-
|
|
419
|
+
const result = (options.order === "body-response-first" ? [
|
|
409
420
|
...bodyAndResponseNames,
|
|
410
421
|
...paramNames,
|
|
411
422
|
...responseStatusNames
|
|
@@ -414,6 +425,8 @@ function resolveOperationTypeNames(node, resolver, options = {}) {
|
|
|
414
425
|
...bodyAndResponseNames,
|
|
415
426
|
...responseStatusNames
|
|
416
427
|
]).filter((name) => Boolean(name) && !exclude.has(name));
|
|
428
|
+
byResolver.set(cacheKey, result);
|
|
429
|
+
return result;
|
|
417
430
|
}
|
|
418
431
|
//#endregion
|
|
419
432
|
//#region ../../internals/shared/src/params.ts
|
|
@@ -848,11 +861,11 @@ function resolveZodImportNames$1(node, zodResolver) {
|
|
|
848
861
|
__name(resolveZodImportNames$1, "resolveZodImportNames");
|
|
849
862
|
const classClientGenerator = defineGenerator({
|
|
850
863
|
name: "classClient",
|
|
851
|
-
renderer:
|
|
864
|
+
renderer: jsxRendererSync,
|
|
852
865
|
operations(nodes, ctx) {
|
|
853
|
-
const {
|
|
866
|
+
const { config, driver, resolver, root } = ctx;
|
|
854
867
|
const { output, group, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath, sdk } = ctx.options;
|
|
855
|
-
const baseURL = ctx.options.baseURL ??
|
|
868
|
+
const baseURL = ctx.options.baseURL ?? ctx.meta.baseURL;
|
|
856
869
|
const pluginTs = driver.getPlugin(pluginTsName);
|
|
857
870
|
if (!pluginTs) return null;
|
|
858
871
|
const tsResolver = driver.getResolver(pluginTsName);
|
|
@@ -911,7 +924,9 @@ const classClientGenerator = defineGenerator({
|
|
|
911
924
|
file,
|
|
912
925
|
operations: [operationData]
|
|
913
926
|
});
|
|
914
|
-
|
|
927
|
+
return acc;
|
|
928
|
+
}
|
|
929
|
+
if (tag) {
|
|
915
930
|
const name = groupName;
|
|
916
931
|
const file = resolver.resolveFile({
|
|
917
932
|
name,
|
|
@@ -980,11 +995,11 @@ const classClientGenerator = defineGenerator({
|
|
|
980
995
|
baseName: file.baseName,
|
|
981
996
|
path: file.path,
|
|
982
997
|
meta: file.meta,
|
|
983
|
-
banner: resolver.resolveBanner(
|
|
998
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
984
999
|
output,
|
|
985
1000
|
config
|
|
986
1001
|
}),
|
|
987
|
-
footer: resolver.resolveFooter(
|
|
1002
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
988
1003
|
output,
|
|
989
1004
|
config
|
|
990
1005
|
}),
|
|
@@ -1083,11 +1098,11 @@ const classClientGenerator = defineGenerator({
|
|
|
1083
1098
|
baseName: sdkFile.baseName,
|
|
1084
1099
|
path: sdkFile.path,
|
|
1085
1100
|
meta: sdkFile.meta,
|
|
1086
|
-
banner: resolver.resolveBanner(
|
|
1101
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1087
1102
|
output,
|
|
1088
1103
|
config
|
|
1089
1104
|
}),
|
|
1090
|
-
footer: resolver.resolveFooter(
|
|
1105
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1091
1106
|
output,
|
|
1092
1107
|
config
|
|
1093
1108
|
}),
|
|
@@ -1124,11 +1139,11 @@ const classClientGenerator = defineGenerator({
|
|
|
1124
1139
|
//#region src/generators/clientGenerator.tsx
|
|
1125
1140
|
const clientGenerator = defineGenerator({
|
|
1126
1141
|
name: "client",
|
|
1127
|
-
renderer:
|
|
1142
|
+
renderer: jsxRendererSync,
|
|
1128
1143
|
operation(node, ctx) {
|
|
1129
|
-
const {
|
|
1144
|
+
const { config, driver, resolver, root } = ctx;
|
|
1130
1145
|
const { output, urlType, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath, group } = ctx.options;
|
|
1131
|
-
const baseURL = ctx.options.baseURL ??
|
|
1146
|
+
const baseURL = ctx.options.baseURL ?? ctx.meta.baseURL;
|
|
1132
1147
|
const pluginTs = driver.getPlugin(pluginTsName);
|
|
1133
1148
|
if (!pluginTs) return null;
|
|
1134
1149
|
const tsResolver = driver.getResolver(pluginTsName);
|
|
@@ -1175,11 +1190,11 @@ const clientGenerator = defineGenerator({
|
|
|
1175
1190
|
baseName: meta.file.baseName,
|
|
1176
1191
|
path: meta.file.path,
|
|
1177
1192
|
meta: meta.file.meta,
|
|
1178
|
-
banner: resolver.resolveBanner(
|
|
1193
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1179
1194
|
output,
|
|
1180
1195
|
config
|
|
1181
1196
|
}),
|
|
1182
|
-
footer: resolver.resolveFooter(
|
|
1197
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1183
1198
|
output,
|
|
1184
1199
|
config
|
|
1185
1200
|
}),
|
|
@@ -1257,9 +1272,9 @@ const clientGenerator = defineGenerator({
|
|
|
1257
1272
|
//#region src/generators/groupedClientGenerator.tsx
|
|
1258
1273
|
const groupedClientGenerator = defineGenerator({
|
|
1259
1274
|
name: "groupedClient",
|
|
1260
|
-
renderer:
|
|
1275
|
+
renderer: jsxRendererSync,
|
|
1261
1276
|
operations(nodes, ctx) {
|
|
1262
|
-
const { config, resolver,
|
|
1277
|
+
const { config, resolver, root } = ctx;
|
|
1263
1278
|
const { output, group } = ctx.options;
|
|
1264
1279
|
return /* @__PURE__ */ jsx(Fragment, { children: nodes.reduce((acc, operationNode) => {
|
|
1265
1280
|
if (group?.type === "tag") {
|
|
@@ -1303,11 +1318,11 @@ const groupedClientGenerator = defineGenerator({
|
|
|
1303
1318
|
baseName: file.baseName,
|
|
1304
1319
|
path: file.path,
|
|
1305
1320
|
meta: file.meta,
|
|
1306
|
-
banner: resolver.resolveBanner(
|
|
1321
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1307
1322
|
output,
|
|
1308
1323
|
config
|
|
1309
1324
|
}),
|
|
1310
|
-
footer: resolver.resolveFooter(
|
|
1325
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1311
1326
|
output,
|
|
1312
1327
|
config
|
|
1313
1328
|
}),
|
|
@@ -1354,9 +1369,9 @@ function Operations({ name, nodes }) {
|
|
|
1354
1369
|
//#region src/generators/operationsGenerator.tsx
|
|
1355
1370
|
const operationsGenerator = defineGenerator({
|
|
1356
1371
|
name: "client",
|
|
1357
|
-
renderer:
|
|
1372
|
+
renderer: jsxRendererSync,
|
|
1358
1373
|
operations(nodes, ctx) {
|
|
1359
|
-
const { config, resolver,
|
|
1374
|
+
const { config, resolver, root } = ctx;
|
|
1360
1375
|
const { output, group } = ctx.options;
|
|
1361
1376
|
const name = "operations";
|
|
1362
1377
|
const file = resolver.resolveFile({
|
|
@@ -1371,11 +1386,11 @@ const operationsGenerator = defineGenerator({
|
|
|
1371
1386
|
baseName: file.baseName,
|
|
1372
1387
|
path: file.path,
|
|
1373
1388
|
meta: file.meta,
|
|
1374
|
-
banner: resolver.resolveBanner(
|
|
1389
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1375
1390
|
output,
|
|
1376
1391
|
config
|
|
1377
1392
|
}),
|
|
1378
|
-
footer: resolver.resolveFooter(
|
|
1393
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1379
1394
|
output,
|
|
1380
1395
|
config
|
|
1381
1396
|
}),
|
|
@@ -1472,11 +1487,11 @@ function resolveZodImportNames(node, zodResolver) {
|
|
|
1472
1487
|
}
|
|
1473
1488
|
const staticClassClientGenerator = defineGenerator({
|
|
1474
1489
|
name: "staticClassClient",
|
|
1475
|
-
renderer:
|
|
1490
|
+
renderer: jsxRendererSync,
|
|
1476
1491
|
operations(nodes, ctx) {
|
|
1477
|
-
const {
|
|
1492
|
+
const { config, driver, resolver, root } = ctx;
|
|
1478
1493
|
const { output, group, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath } = ctx.options;
|
|
1479
|
-
const baseURL = ctx.options.baseURL ??
|
|
1494
|
+
const baseURL = ctx.options.baseURL ?? ctx.meta.baseURL;
|
|
1480
1495
|
const pluginTs = driver.getPlugin(pluginTsName);
|
|
1481
1496
|
if (!pluginTs) return null;
|
|
1482
1497
|
const tsResolver = driver.getResolver(pluginTsName);
|
|
@@ -1534,7 +1549,9 @@ const staticClassClientGenerator = defineGenerator({
|
|
|
1534
1549
|
file,
|
|
1535
1550
|
operations: [operationData]
|
|
1536
1551
|
});
|
|
1537
|
-
|
|
1552
|
+
return acc;
|
|
1553
|
+
}
|
|
1554
|
+
if (tag) {
|
|
1538
1555
|
const name = groupName;
|
|
1539
1556
|
const file = resolver.resolveFile({
|
|
1540
1557
|
name,
|
|
@@ -1602,11 +1619,11 @@ const staticClassClientGenerator = defineGenerator({
|
|
|
1602
1619
|
baseName: file.baseName,
|
|
1603
1620
|
path: file.path,
|
|
1604
1621
|
meta: file.meta,
|
|
1605
|
-
banner: resolver.resolveBanner(
|
|
1622
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1606
1623
|
output,
|
|
1607
1624
|
config
|
|
1608
1625
|
}),
|
|
1609
|
-
footer: resolver.resolveFooter(
|
|
1626
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1610
1627
|
output,
|
|
1611
1628
|
config
|
|
1612
1629
|
}),
|