@kubb/core 5.0.0-beta.95 → 5.0.0-beta.96

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
@@ -191,7 +191,7 @@ function memoize(store, factory) {
191
191
  }
192
192
  //#endregion
193
193
  //#region package.json
194
- var version = "5.0.0-beta.95";
194
+ var version = "5.0.0-beta.96";
195
195
  //#endregion
196
196
  //#region src/constants.ts
197
197
  /**
@@ -901,23 +901,32 @@ var Resolver = class Resolver {
901
901
  } });
902
902
  }
903
903
  /**
904
- * Merges `override` over `base` and returns a new resolver with helpers re-bound. Top-level
905
- * keys replace, and a namespace (or `file`) merges per method, so overriding `query.name`
906
- * keeps the base `query.keyName`. Used when applying `setResolver` partial overrides. Reads a
907
- * resolver's options through the shared brand rather than `instanceof`, so a `file` override
908
- * survives even when `base` and `override` come from different `@kubb/core` copies.
909
- */
910
- static merge(base, override) {
911
- const patch = resolverOptions in override ? override[resolverOptions] : override;
912
- const merged = { ...base[resolverOptions] };
913
- for (const [key, value] of Object.entries(patch)) {
914
- if (value === void 0) continue;
915
- const current = merged[key];
916
- merged[key] = isNamespace(value) && isNamespace(current) ? {
917
- ...current,
918
- ...value
919
- } : value;
920
- }
904
+ * Folds each `override` over `base`, left to right, and returns a new resolver with helpers
905
+ * re-bound. Top-level keys replace, and a namespace (or `file`) merges per method, so overriding
906
+ * `query.name` keeps the base `query.keyName`. The last override wins per key. Used when applying
907
+ * `setResolver` partial overrides, and to compose shared resolver fragments without spreading each
908
+ * namespace by hand. Reads a resolver's options through the shared brand rather than `instanceof`,
909
+ * so a `file` override survives even when `base` and `override` come from different `@kubb/core`
910
+ * copies.
911
+ *
912
+ * @example Fold several partial overrides onto a resolver
913
+ * ```ts
914
+ * const resolver = Resolver.merge(defaultResolver, sharedNamingPatch, { name: (name) => name.toUpperCase() })
915
+ * ```
916
+ */
917
+ static merge(base, ...overrides) {
918
+ const merged = overrides.reduce((acc, override) => {
919
+ const patch = resolverOptions in override ? override[resolverOptions] : override;
920
+ for (const [key, value] of Object.entries(patch)) {
921
+ if (value === void 0) continue;
922
+ const current = acc[key];
923
+ acc[key] = isNamespace(value) && isNamespace(current) ? {
924
+ ...current,
925
+ ...value
926
+ } : value;
927
+ }
928
+ return acc;
929
+ }, { ...base[resolverOptions] });
921
930
  return new Resolver(merged);
922
931
  }
923
932
  /**