@kubb/plugin-client 5.0.0-beta.10 → 5.0.0-beta.15

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.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, jsxRenderer } from "@kubb/renderer-jsx";
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
@@ -395,7 +395,17 @@ function resolveErrorNames(node, resolver) {
395
395
  function resolveStatusCodeNames(node, resolver) {
396
396
  return node.responses.map((response) => resolver.resolveResponseStatusName(node, response.statusCode));
397
397
  }
398
+ const typeNamesByResolver = /* @__PURE__ */ new WeakMap();
398
399
  function resolveOperationTypeNames(node, resolver, options = {}) {
400
+ const cacheKey = `${node.operationId}\0${options.paramsCasing ?? ""}\0${options.order ?? ""}\0${options.responseStatusNames ?? ""}\0${(options.exclude ?? []).join(",")}`;
401
+ let byResolver = typeNamesByResolver.get(resolver);
402
+ if (byResolver) {
403
+ const cached = byResolver.get(cacheKey);
404
+ if (cached) return cached;
405
+ } else {
406
+ byResolver = /* @__PURE__ */ new Map();
407
+ typeNamesByResolver.set(resolver, byResolver);
408
+ }
399
409
  const { path, query, header } = getOperationParameters(node, { paramsCasing: options.paramsCasing });
400
410
  const responseStatusNames = options.responseStatusNames === "error" ? resolveErrorNames(node, resolver) : options.responseStatusNames === false ? [] : resolveStatusCodeNames(node, resolver);
401
411
  const exclude = new Set(options.exclude ?? []);
@@ -405,7 +415,7 @@ function resolveOperationTypeNames(node, resolver, options = {}) {
405
415
  ...header.map((param) => resolver.resolveHeaderParamsName(node, param))
406
416
  ];
407
417
  const bodyAndResponseNames = [node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : void 0, resolver.resolveResponseName(node)];
408
- return (options.order === "body-response-first" ? [
418
+ const result = (options.order === "body-response-first" ? [
409
419
  ...bodyAndResponseNames,
410
420
  ...paramNames,
411
421
  ...responseStatusNames
@@ -414,6 +424,8 @@ function resolveOperationTypeNames(node, resolver, options = {}) {
414
424
  ...bodyAndResponseNames,
415
425
  ...responseStatusNames
416
426
  ]).filter((name) => Boolean(name) && !exclude.has(name));
427
+ byResolver.set(cacheKey, result);
428
+ return result;
417
429
  }
418
430
  //#endregion
419
431
  //#region ../../internals/shared/src/params.ts
@@ -848,11 +860,11 @@ function resolveZodImportNames$1(node, zodResolver) {
848
860
  __name(resolveZodImportNames$1, "resolveZodImportNames");
849
861
  const classClientGenerator = defineGenerator({
850
862
  name: "classClient",
851
- renderer: jsxRenderer,
863
+ renderer: jsxRendererSync,
852
864
  operations(nodes, ctx) {
853
- const { adapter, config, driver, resolver, root } = ctx;
865
+ const { config, driver, resolver, root, inputNode } = ctx;
854
866
  const { output, group, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath, sdk } = ctx.options;
855
- const baseURL = ctx.options.baseURL ?? adapter.inputNode?.meta?.baseURL;
867
+ const baseURL = ctx.options.baseURL ?? inputNode.meta?.baseURL;
856
868
  const pluginTs = driver.getPlugin(pluginTsName);
857
869
  if (!pluginTs) return null;
858
870
  const tsResolver = driver.getResolver(pluginTsName);
@@ -980,11 +992,11 @@ const classClientGenerator = defineGenerator({
980
992
  baseName: file.baseName,
981
993
  path: file.path,
982
994
  meta: file.meta,
983
- banner: resolver.resolveBanner(adapter.inputNode, {
995
+ banner: resolver.resolveBanner(inputNode, {
984
996
  output,
985
997
  config
986
998
  }),
987
- footer: resolver.resolveFooter(adapter.inputNode, {
999
+ footer: resolver.resolveFooter(inputNode, {
988
1000
  output,
989
1001
  config
990
1002
  }),
@@ -1083,11 +1095,11 @@ const classClientGenerator = defineGenerator({
1083
1095
  baseName: sdkFile.baseName,
1084
1096
  path: sdkFile.path,
1085
1097
  meta: sdkFile.meta,
1086
- banner: resolver.resolveBanner(adapter.inputNode, {
1098
+ banner: resolver.resolveBanner(inputNode, {
1087
1099
  output,
1088
1100
  config
1089
1101
  }),
1090
- footer: resolver.resolveFooter(adapter.inputNode, {
1102
+ footer: resolver.resolveFooter(inputNode, {
1091
1103
  output,
1092
1104
  config
1093
1105
  }),
@@ -1124,11 +1136,11 @@ const classClientGenerator = defineGenerator({
1124
1136
  //#region src/generators/clientGenerator.tsx
1125
1137
  const clientGenerator = defineGenerator({
1126
1138
  name: "client",
1127
- renderer: jsxRenderer,
1139
+ renderer: jsxRendererSync,
1128
1140
  operation(node, ctx) {
1129
- const { adapter, config, driver, resolver, root } = ctx;
1141
+ const { config, driver, resolver, root, inputNode } = ctx;
1130
1142
  const { output, urlType, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath, group } = ctx.options;
1131
- const baseURL = ctx.options.baseURL ?? adapter.inputNode?.meta?.baseURL;
1143
+ const baseURL = ctx.options.baseURL ?? inputNode.meta?.baseURL;
1132
1144
  const pluginTs = driver.getPlugin(pluginTsName);
1133
1145
  if (!pluginTs) return null;
1134
1146
  const tsResolver = driver.getResolver(pluginTsName);
@@ -1175,11 +1187,11 @@ const clientGenerator = defineGenerator({
1175
1187
  baseName: meta.file.baseName,
1176
1188
  path: meta.file.path,
1177
1189
  meta: meta.file.meta,
1178
- banner: resolver.resolveBanner(adapter.inputNode, {
1190
+ banner: resolver.resolveBanner(inputNode, {
1179
1191
  output,
1180
1192
  config
1181
1193
  }),
1182
- footer: resolver.resolveFooter(adapter.inputNode, {
1194
+ footer: resolver.resolveFooter(inputNode, {
1183
1195
  output,
1184
1196
  config
1185
1197
  }),
@@ -1257,9 +1269,9 @@ const clientGenerator = defineGenerator({
1257
1269
  //#region src/generators/groupedClientGenerator.tsx
1258
1270
  const groupedClientGenerator = defineGenerator({
1259
1271
  name: "groupedClient",
1260
- renderer: jsxRenderer,
1272
+ renderer: jsxRendererSync,
1261
1273
  operations(nodes, ctx) {
1262
- const { config, resolver, adapter, root } = ctx;
1274
+ const { config, resolver, root, inputNode } = ctx;
1263
1275
  const { output, group } = ctx.options;
1264
1276
  return /* @__PURE__ */ jsx(Fragment, { children: nodes.reduce((acc, operationNode) => {
1265
1277
  if (group?.type === "tag") {
@@ -1303,11 +1315,11 @@ const groupedClientGenerator = defineGenerator({
1303
1315
  baseName: file.baseName,
1304
1316
  path: file.path,
1305
1317
  meta: file.meta,
1306
- banner: resolver.resolveBanner(adapter.inputNode, {
1318
+ banner: resolver.resolveBanner(inputNode, {
1307
1319
  output,
1308
1320
  config
1309
1321
  }),
1310
- footer: resolver.resolveFooter(adapter.inputNode, {
1322
+ footer: resolver.resolveFooter(inputNode, {
1311
1323
  output,
1312
1324
  config
1313
1325
  }),
@@ -1354,9 +1366,9 @@ function Operations({ name, nodes }) {
1354
1366
  //#region src/generators/operationsGenerator.tsx
1355
1367
  const operationsGenerator = defineGenerator({
1356
1368
  name: "client",
1357
- renderer: jsxRenderer,
1369
+ renderer: jsxRendererSync,
1358
1370
  operations(nodes, ctx) {
1359
- const { config, resolver, adapter, root } = ctx;
1371
+ const { config, resolver, root, inputNode } = ctx;
1360
1372
  const { output, group } = ctx.options;
1361
1373
  const name = "operations";
1362
1374
  const file = resolver.resolveFile({
@@ -1371,11 +1383,11 @@ const operationsGenerator = defineGenerator({
1371
1383
  baseName: file.baseName,
1372
1384
  path: file.path,
1373
1385
  meta: file.meta,
1374
- banner: resolver.resolveBanner(adapter.inputNode, {
1386
+ banner: resolver.resolveBanner(inputNode, {
1375
1387
  output,
1376
1388
  config
1377
1389
  }),
1378
- footer: resolver.resolveFooter(adapter.inputNode, {
1390
+ footer: resolver.resolveFooter(inputNode, {
1379
1391
  output,
1380
1392
  config
1381
1393
  }),
@@ -1472,11 +1484,11 @@ function resolveZodImportNames(node, zodResolver) {
1472
1484
  }
1473
1485
  const staticClassClientGenerator = defineGenerator({
1474
1486
  name: "staticClassClient",
1475
- renderer: jsxRenderer,
1487
+ renderer: jsxRendererSync,
1476
1488
  operations(nodes, ctx) {
1477
- const { adapter, config, driver, resolver, root } = ctx;
1489
+ const { config, driver, resolver, root, inputNode } = ctx;
1478
1490
  const { output, group, dataReturnType, paramsCasing, paramsType, pathParamsType, parser, importPath } = ctx.options;
1479
- const baseURL = ctx.options.baseURL ?? adapter.inputNode?.meta?.baseURL;
1491
+ const baseURL = ctx.options.baseURL ?? inputNode.meta?.baseURL;
1480
1492
  const pluginTs = driver.getPlugin(pluginTsName);
1481
1493
  if (!pluginTs) return null;
1482
1494
  const tsResolver = driver.getResolver(pluginTsName);
@@ -1602,11 +1614,11 @@ const staticClassClientGenerator = defineGenerator({
1602
1614
  baseName: file.baseName,
1603
1615
  path: file.path,
1604
1616
  meta: file.meta,
1605
- banner: resolver.resolveBanner(adapter.inputNode, {
1617
+ banner: resolver.resolveBanner(inputNode, {
1606
1618
  output,
1607
1619
  config
1608
1620
  }),
1609
- footer: resolver.resolveFooter(adapter.inputNode, {
1621
+ footer: resolver.resolveFooter(inputNode, {
1610
1622
  output,
1611
1623
  config
1612
1624
  }),