@kubb/plugin-vue-query 5.7.0 → 5.7.1

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 CHANGED
@@ -254,78 +254,37 @@ function resolveSuccessNames(node, resolver) {
254
254
  function resolveStatusCodeNames(node, resolver) {
255
255
  return node.responses.map((response) => resolver.response.status(node, response.statusCode));
256
256
  }
257
- const typeNamesByResolver = /* @__PURE__ */ new WeakMap();
258
- function resolveOperationTypeNames(node, resolver, options = {}) {
259
- const cacheKey = `${node.operationId}\0${options.order ?? ""}\0${options.responseStatusNames ?? ""}\0${options.includeParams === false ? "noparams" : ""}\0${(options.exclude ?? []).join(",")}`;
260
- let byResolver = typeNamesByResolver.get(resolver);
261
- if (byResolver) {
262
- const cached = byResolver.get(cacheKey);
263
- if (cached) return cached;
264
- } else {
265
- byResolver = /* @__PURE__ */ new Map();
266
- typeNamesByResolver.set(resolver, byResolver);
267
- }
268
- const { path, query, header } = getOperationParameters(node);
269
- const responseStatusNames = options.responseStatusNames === "error" ? resolveErrorNames(node, resolver) : options.responseStatusNames === false ? [] : resolveStatusCodeNames(node, resolver);
270
- const exclude = new Set(options.exclude ?? []);
271
- const paramNames = options.includeParams === false ? [] : [
272
- ...path.map((param) => resolver.param.path(node, param)),
273
- ...query.map((param) => resolver.param.query(node, param)),
274
- ...header.map((param) => resolver.param.headers(node, param))
275
- ];
276
- const bodyAndResponseNames = [node.requestBody?.content?.[0]?.schema ? resolver.response.body(node) : null, resolver.response.response(node)];
277
- const result = (options.order === "body-response-first" ? [
278
- ...bodyAndResponseNames,
279
- ...paramNames,
280
- ...responseStatusNames
281
- ] : [
282
- ...paramNames,
283
- ...bodyAndResponseNames,
284
- ...responseStatusNames
285
- ]).filter((name) => Boolean(name) && !exclude.has(name));
286
- byResolver.set(cacheKey, result);
287
- return result;
288
- }
289
- // ../../internals/utils/src/casing.ts
290
- /**
291
- * Shared implementation for camelCase and PascalCase conversion.
292
- * Splits on common word boundaries (spaces, hyphens, underscores, dots, slashes, colons)
293
- * and capitalizes each word according to `pascal`.
294
- *
295
- * When `pascal` is `true` the first word is also capitalized (PascalCase), otherwise only subsequent words are.
296
- */
297
- function convert(text, pascal) {
298
- return text.trim().replace(/([a-z\d])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").replace(/(\d)([a-z])/g, "$1 $2").split(/[\s\-_./\\:]+/).filter(Boolean).map((word, i) => {
299
- if (word.length > 1 && word === word.toUpperCase()) return word;
300
- return (i === 0 && !pascal ? word.charAt(0).toLowerCase() : word.charAt(0).toUpperCase()) + word.slice(1);
301
- }).join("").replace(/[^a-zA-Z0-9]/g, "");
302
- }
303
- const cache = /* @__PURE__ */ new Map();
304
- const cacheLimit = 1e4;
305
- function toCamelOrPascal(text, pascal) {
306
- const key = `${pascal ? "P" : "c"}${text}`;
307
- const cached = cache.get(key);
308
- if (cached !== void 0) return cached;
309
- const result = convert(text, pascal);
310
- if (cache.size >= cacheLimit) cache.clear();
311
- cache.set(key, result);
312
- return result;
313
- }
314
257
  /**
315
- * Converts `text` to camelCase.
316
- *
317
- * @example Word boundaries
318
- * `camelCase('hello-world') // 'helloWorld'`
319
- *
320
- * @example With a prefix
321
- * `camelCase('tag', { prefix: 'create' }) // 'createTag'`
258
+ * Lists the type names an operation's types file declares, computed once per resolver and `options` so every
259
+ * dependent reads the same list.
322
260
  */
323
- function camelCase(text, { prefix = "", suffix = "" } = {}) {
324
- return toCamelOrPascal(`${prefix} ${text} ${suffix}`, false);
261
+ function resolveOperationTypeNames(node, resolver, options = {}) {
262
+ const key = `${node.operationId}\0${options.order ?? ""}\0${options.responseStatusNames ?? ""}\0${options.includeParams === false ? "noparams" : ""}\0${(options.exclude ?? []).join(",")}`;
263
+ return resolver.memo(`operationTypeNames:${key}`, () => {
264
+ const { path, query, header } = getOperationParameters(node);
265
+ const responseStatusNames = options.responseStatusNames === "error" ? resolveErrorNames(node, resolver) : options.responseStatusNames === false ? [] : resolveStatusCodeNames(node, resolver);
266
+ const exclude = new Set(options.exclude ?? []);
267
+ const paramNames = options.includeParams === false ? [] : [
268
+ ...path.map((param) => resolver.param.path(node, param)),
269
+ ...query.map((param) => resolver.param.query(node, param)),
270
+ ...header.map((param) => resolver.param.headers(node, param))
271
+ ];
272
+ const bodyAndResponseNames = [node.requestBody?.content?.[0]?.schema ? resolver.response.body(node) : null, resolver.response.response(node)];
273
+ return (options.order === "body-response-first" ? [
274
+ ...bodyAndResponseNames,
275
+ ...paramNames,
276
+ ...responseStatusNames
277
+ ] : [
278
+ ...paramNames,
279
+ ...bodyAndResponseNames,
280
+ ...responseStatusNames
281
+ ]).filter((name) => Boolean(name) && !exclude.has(name));
282
+ });
325
283
  }
284
+ // ../../internals/utils/src/casing.ts
326
285
  /**
327
286
  * Uppercases only the first character of `text`, leaving the rest untouched.
328
- * Unlike {@link pascalCase} it never re-splits word boundaries or strips characters.
287
+ * Unlike `pascalCase` it never re-splits word boundaries or strips characters.
329
288
  *
330
289
  * @example
331
290
  * `capitalize('getPetById') // 'GetPetById'`
@@ -489,8 +448,11 @@ function getNestedAccessor(param, accessor) {
489
448
  return `${accessor}?.['${`${parts.join("']?.['")}']`}`;
490
449
  }
491
450
  // ../../internals/shared/src/resolver.ts
451
+ /**
452
+ * The shared top-level `name` of the operation plugins, computed once per operation name and build.
453
+ */
492
454
  function resolveOperationName(name) {
493
- return ensureValidVarName(camelCase(name));
455
+ return this.memo(`operation:${name}`, () => ensureValidVarName((0, kubb_kit.camelCase)(name)));
494
456
  }
495
457
  /**
496
458
  * Builds the allocation key for a declaration an operation owns. `scope` names which declaration
@@ -533,7 +495,7 @@ function createGroupConfig(group) {
533
495
  if (!group) return null;
534
496
  const defaultName = (ctx) => {
535
497
  if (group.type === "path") return `${ctx.group.split("/")[1]}`;
536
- return camelCase(ctx.group);
498
+ return (0, kubb_kit.camelCase)(ctx.group);
537
499
  };
538
500
  return {
539
501
  ...group,
@@ -546,7 +508,7 @@ var compatibility = {
546
508
  "node": ">=22.22"
547
509
  };
548
510
  // package.json
549
- var version = "5.7.0";
511
+ var version = "5.7.1";
550
512
  // ../../internals/client/src/resolveOperationTypes.ts
551
513
  /**
552
514
  * A `plugin-ts` shaped resolver whose operation type names point at the types `pluginZod({ inferred })`
@@ -557,6 +519,7 @@ function toZodTypeResolver(resolver) {
557
519
  return {
558
520
  ...resolver,
559
521
  file: resolver.file.bind(resolver),
522
+ memo: (key, compute) => resolver.memo(`zodTypes:${key}`, compute),
560
523
  param: {
561
524
  name: (node, p) => type(resolver.param.name(node, p)),
562
525
  path: (node, p) => type(resolver.param.path(node, p)),