@kubb/core 5.0.0-alpha.25 → 5.0.0-alpha.27

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.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { $ as formatters, A as PrinterFactoryOptions, B as UserConfig, C as PluginLifecycle, D as Preset, E as PluginWithLifeCycle, F as ResolvePathParams, G as UserResolver, H as UserLogger, I as Resolver, J as Generator, K as KubbEvents, L as ResolverContext, M as ResolveNameParams, N as ResolveOptionsContext, O as Presets, P as ResolvePathOptions, Q as createStorage, R as ResolverFileParams, S as PluginFactoryOptions, T as PluginParameter, U as UserPlugin, V as UserGroup, W as UserPluginWithLifeCycle, X as defineGenerator, Y as ReactGeneratorV2, Z as Storage, _ as LoggerOptions, a as AdapterSource, b as Plugin, c as Config, d as Group, et as linters, f as Include, g as LoggerContext, h as Logger, i as AdapterFactoryOptions, j as ResolveBannerContext, k as Printer, l as DevtoolsOptions, m as InputPath, n as getMode, nt as PossiblePromise, o as BarrelType, p as InputData, q as CoreGeneratorV2, r as Adapter, rt as AsyncEventEmitter, s as CompatibilityPreset, t as PluginDriver, tt as logLevel, u as Exclude, v as Output, w as PluginLifecycleHooks, x as PluginContext, y as Override, z as ResolverPathParams } from "./PluginDriver-BGRDpPpK.js";
3
- import { definePrinter } from "@kubb/ast";
2
+ import { $ as createStorage, A as PrinterFactoryOptions, B as ResolverPathParams, C as PluginLifecycle, D as Preset, E as PluginWithLifeCycle, F as ResolvePathOptions, G as UserPluginWithLifeCycle, H as UserGroup, I as ResolvePathParams, J as CoreGeneratorV2, K as UserResolver, L as Resolver, M as ResolveBannerContext, N as ResolveNameParams, O as Presets, P as ResolveOptionsContext, Q as Storage, R as ResolverContext, S as PluginFactoryOptions, T as PluginParameter, U as UserLogger, V as UserConfig, W as UserPlugin, X as ReactGeneratorV2, Y as Generator, Z as defineGenerator, _ as LoggerOptions, a as AdapterSource, b as Plugin, c as Config, d as Group, et as formatters, f as Include, g as LoggerContext, h as Logger, i as AdapterFactoryOptions, it as AsyncEventEmitter, j as PrinterPartial, k as Printer, l as DevtoolsOptions, m as InputPath, n as getMode, nt as logLevel, o as BarrelType, p as InputData, q as KubbEvents, r as Adapter, rt as PossiblePromise, s as CompatibilityPreset, t as PluginDriver, tt as linters, u as Exclude, v as Output, w as PluginLifecycleHooks, x as PluginContext, y as Override, z as ResolverFileParams } from "./PluginDriver-B12z6KO-.js";
3
+ import { composeTransformers, definePrinter } from "@kubb/ast";
4
4
  import { Node, OperationNode, RootNode, SchemaNode, Visitor } from "@kubb/ast/types";
5
5
  import { Fabric, FabricFile } from "@kubb/fabric-core/types";
6
6
  import { Fabric as Fabric$1 } from "@kubb/react-fabric/types";
@@ -809,25 +809,32 @@ declare function getConfigs(config: ConfigInput | UserConfig, args: CLIOptions):
809
809
  type GetPresetParams<TResolver extends Resolver> = {
810
810
  preset: CompatibilityPreset;
811
811
  presets: Presets<TResolver>;
812
- resolvers?: Array<TResolver>;
812
+ /**
813
+ * Optional single resolver whose methods override the preset resolver.
814
+ * When a method returns `null` or `undefined` the preset resolver's method is used instead.
815
+ */
816
+ resolver?: Partial<TResolver> & ThisType<TResolver>;
813
817
  /**
814
818
  * User-supplied generators to append after the preset's generators.
815
819
  */
816
820
  generators?: Array<Generator<any>>;
817
- transformers?: Array<Visitor>;
821
+ /**
822
+ * Optional single transformer visitor whose methods override the preset transformer.
823
+ * When a method returns `null` or `undefined` the preset transformer's method is used instead.
824
+ */
825
+ transformer?: Visitor;
818
826
  };
819
827
  type GetPresetResult<TResolver extends Resolver> = {
820
828
  resolver: TResolver;
821
- transformers: Array<Visitor>;
829
+ transformer: Visitor | undefined;
822
830
  generators: Array<Generator<any>>;
823
831
  preset: Preset<TResolver> | undefined;
824
832
  };
825
833
  /**
826
- * Resolves a named preset into merged resolvers, transformers, and generators.
834
+ * Resolves a named preset into a resolver, transformer, and generators.
827
835
  *
828
- * - Merges the preset's resolvers on top of the first (default)
829
- * - Merges any additional user-supplied resolvers on top of that to produce the final `resolver`.
830
- * - Concatenates preset transformers before user-supplied transformers.
836
+ * - Selects the preset resolver; wraps it with user overrides using null/undefined fallback.
837
+ * - Composes the preset's transformers into a single visitor; wraps it with the user transformer using null/undefined fallback.
831
838
  * - Combines preset generators with user-supplied generators; falls back to the `default` preset's generators when neither provides any.
832
839
  */
833
840
  declare function getPreset<TResolver extends Resolver = Resolver>(params: GetPresetParams<TResolver>): GetPresetResult<TResolver>;
@@ -850,20 +857,6 @@ type Linter = keyof typeof linters;
850
857
  */
851
858
  declare function detectLinter(): Promise<Linter | null>;
852
859
  //#endregion
853
- //#region src/utils/mergeResolvers.d.ts
854
- /**
855
- * Merges an ordered list of resolvers into a single resolver by shallow-merging each entry left to right.
856
- *
857
- * Later entries win when keys conflict, so the last resolver in the list takes highest precedence.
858
- *
859
- * @example
860
- * ```ts
861
- * const resolver = mergeResolvers(resolverTs, resolverTsLegacy)
862
- * // resolverTsLegacy methods override resolverTs where they overlap
863
- * ```
864
- */
865
- declare function mergeResolvers<T extends Resolver>(...resolvers: Array<T>): T;
866
- //#endregion
867
860
  //#region src/utils/packageJSON.d.ts
868
861
  type DependencyName = string;
869
862
  type DependencyVersion = string;
@@ -884,5 +877,5 @@ type DependencyVersion = string;
884
877
  */
885
878
  declare function satisfiesDependency(dependency: DependencyName | RegExp, version: DependencyVersion, cwd?: string): boolean;
886
879
  //#endregion
887
- export { Adapter, AdapterFactoryOptions, AdapterSource, AsyncEventEmitter, BarrelType, type CLIOptions, CompatibilityPreset, Config, type ConfigInput, CoreGeneratorV2, DevtoolsOptions, Exclude, type FileMetaBase, FunctionParams, type FunctionParamsAST, Generator, Group, Include, InputData, InputPath, KubbEvents, Logger, LoggerContext, LoggerOptions, Output, Override, Plugin, PluginContext, PluginDriver, PluginFactoryOptions, PluginLifecycle, PluginLifecycleHooks, PluginParameter, PluginWithLifeCycle, Preset, Presets, Printer, PrinterFactoryOptions, ReactGeneratorV2, ResolveBannerContext, ResolveNameParams, ResolveOptionsContext, ResolvePathOptions, ResolvePathParams, Resolver, ResolverContext, ResolverFileParams, ResolverPathParams, Storage, URLPath, UserConfig, UserGroup, UserLogger, UserPlugin, UserPluginWithLifeCycle, UserResolver, build, build as default, buildDefaultBanner, createAdapter, createPlugin, createStorage, defaultResolveBanner, defaultResolveFile, defaultResolveFooter, defaultResolveOptions, defaultResolvePath, defineConfig, defineGenerator, defineLogger, definePresets, definePrinter, defineResolver, detectFormatter, detectLinter, formatters, fsStorage, getBarrelFiles, getConfigs, getMode, getPreset, isInputPath, linters, logLevel, memoryStorage, mergeResolvers, renderOperation, renderOperations, renderSchema, runGeneratorOperation, runGeneratorOperations, runGeneratorSchema, safeBuild, satisfiesDependency, setup };
880
+ export { Adapter, AdapterFactoryOptions, AdapterSource, AsyncEventEmitter, BarrelType, type CLIOptions, CompatibilityPreset, Config, type ConfigInput, CoreGeneratorV2, DevtoolsOptions, Exclude, type FileMetaBase, FunctionParams, type FunctionParamsAST, Generator, Group, Include, InputData, InputPath, KubbEvents, Logger, LoggerContext, LoggerOptions, Output, Override, Plugin, PluginContext, PluginDriver, PluginFactoryOptions, PluginLifecycle, PluginLifecycleHooks, PluginParameter, PluginWithLifeCycle, Preset, Presets, Printer, PrinterFactoryOptions, PrinterPartial, ReactGeneratorV2, ResolveBannerContext, ResolveNameParams, ResolveOptionsContext, ResolvePathOptions, ResolvePathParams, Resolver, ResolverContext, ResolverFileParams, ResolverPathParams, Storage, URLPath, UserConfig, UserGroup, UserLogger, UserPlugin, UserPluginWithLifeCycle, UserResolver, build, build as default, buildDefaultBanner, composeTransformers, createAdapter, createPlugin, createStorage, defaultResolveBanner, defaultResolveFile, defaultResolveFooter, defaultResolveOptions, defaultResolvePath, defineConfig, defineGenerator, defineLogger, definePresets, definePrinter, defineResolver, detectFormatter, detectLinter, formatters, fsStorage, getBarrelFiles, getConfigs, getMode, getPreset, isInputPath, linters, logLevel, memoryStorage, renderOperation, renderOperations, renderSchema, runGeneratorOperation, runGeneratorOperations, runGeneratorSchema, safeBuild, satisfiesDependency, setup };
888
881
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { EventEmitter } from "node:events";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { access, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
5
5
  import path, { basename, dirname, extname, join, posix, relative, resolve } from "node:path";
6
- import { definePrinter, isOperationNode, isSchemaNode } from "@kubb/ast";
6
+ import { composeTransformers, composeTransformers as composeTransformers$1, definePrinter, isOperationNode, isSchemaNode } from "@kubb/ast";
7
7
  import { Fabric, createFabric, createReactFabric } from "@kubb/react-fabric";
8
8
  import { typescriptParser } from "@kubb/react-fabric/parsers";
9
9
  import { fsPlugin } from "@kubb/react-fabric/plugins";
@@ -996,6 +996,9 @@ var PluginDriver = class {
996
996
  get resolver() {
997
997
  return plugin.resolver;
998
998
  },
999
+ get transformer() {
1000
+ return plugin.transformer;
1001
+ },
999
1002
  openInStudio(options) {
1000
1003
  if (!driver.config.devtools || driver.#studioIsOpen) return;
1001
1004
  if (typeof driver.config.devtools !== "object") throw new Error("Devtools must be an object");
@@ -1410,7 +1413,7 @@ const fsStorage = createStorage(() => ({
1410
1413
  }));
1411
1414
  //#endregion
1412
1415
  //#region package.json
1413
- var version$1 = "5.0.0-alpha.25";
1416
+ var version$1 = "5.0.0-alpha.27";
1414
1417
  //#endregion
1415
1418
  //#region src/utils/diagnostics.ts
1416
1419
  /**
@@ -2763,46 +2766,43 @@ async function getConfigs(config, args) {
2763
2766
  }));
2764
2767
  }
2765
2768
  //#endregion
2766
- //#region src/utils/mergeResolvers.ts
2769
+ //#region src/utils/getPreset.ts
2767
2770
  /**
2768
- * Merges an ordered list of resolvers into a single resolver by shallow-merging each entry left to right.
2769
- *
2770
- * Later entries win when keys conflict, so the last resolver in the list takes highest precedence.
2771
- *
2772
- * @example
2773
- * ```ts
2774
- * const resolver = mergeResolvers(resolverTs, resolverTsLegacy)
2775
- * // resolverTsLegacy methods override resolverTs where they overlap
2776
- * ```
2771
+ * Returns a copy of `defaults` where each function in `userOverrides` is wrapped
2772
+ * so a `null`/`undefined` return falls back to the original. Non-function values
2773
+ * are assigned directly. All calls use the merged object as `this`.
2777
2774
  */
2778
- function mergeResolvers(...resolvers) {
2779
- return resolvers.reduce((acc, curr) => ({
2780
- ...acc,
2781
- ...curr
2782
- }), resolvers[0]);
2775
+ function withFallback(defaults, userOverrides) {
2776
+ const merged = { ...defaults };
2777
+ for (const key of Object.keys(userOverrides)) {
2778
+ const userVal = userOverrides[key];
2779
+ const defaultVal = defaults[key];
2780
+ if (typeof userVal === "function" && typeof defaultVal === "function") merged[key] = (...args) => userVal.apply(merged, args) ?? defaultVal.apply(merged, args);
2781
+ else if (userVal !== void 0) merged[key] = userVal;
2782
+ }
2783
+ return merged;
2783
2784
  }
2784
- //#endregion
2785
- //#region src/utils/getPreset.ts
2786
2785
  /**
2787
- * Resolves a named preset into merged resolvers, transformers, and generators.
2786
+ * Resolves a named preset into a resolver, transformer, and generators.
2788
2787
  *
2789
- * - Merges the preset's resolvers on top of the first (default)
2790
- * - Merges any additional user-supplied resolvers on top of that to produce the final `resolver`.
2791
- * - Concatenates preset transformers before user-supplied transformers.
2788
+ * - Selects the preset resolver; wraps it with user overrides using null/undefined fallback.
2789
+ * - Composes the preset's transformers into a single visitor; wraps it with the user transformer using null/undefined fallback.
2792
2790
  * - Combines preset generators with user-supplied generators; falls back to the `default` preset's generators when neither provides any.
2793
2791
  */
2794
2792
  function getPreset(params) {
2795
- const { preset: presetName, presets, resolvers = [], transformers: userTransformers = [], generators: userGenerators = [] } = params;
2796
- const [defaultResolver, ...userResolvers] = resolvers;
2793
+ const { preset: presetName, presets, resolver: userResolver, transformer: userTransformer, generators: userGenerators = [] } = params;
2797
2794
  const preset = presets[presetName];
2798
- const resolver = mergeResolvers(mergeResolvers(defaultResolver, ...preset?.resolvers ?? []), ...userResolvers ?? []);
2799
- const transformers = [...preset?.transformers ?? [], ...userTransformers ?? []];
2795
+ const presetResolver = preset?.resolver ?? presets["default"].resolver;
2796
+ const resolver = userResolver ? withFallback(presetResolver, userResolver) : presetResolver;
2797
+ const presetTransformers = preset?.transformers ?? [];
2798
+ const presetTransformer = presetTransformers.length > 0 ? composeTransformers$1(...presetTransformers) : void 0;
2799
+ const transformer = presetTransformer && userTransformer ? withFallback(presetTransformer, userTransformer) : userTransformer ?? presetTransformer;
2800
2800
  const presetGenerators = preset?.generators ?? [];
2801
- const defaultPresetGenerators = presets["default"]?.generators ?? [];
2801
+ const defaultGenerators = presets["default"]?.generators ?? [];
2802
2802
  return {
2803
2803
  resolver,
2804
- transformers,
2805
- generators: presetGenerators.length > 0 || userGenerators.length ? [...presetGenerators, ...userGenerators] : defaultPresetGenerators,
2804
+ transformer,
2805
+ generators: presetGenerators.length > 0 || userGenerators.length > 0 ? [...presetGenerators, ...userGenerators] : defaultGenerators,
2806
2806
  preset
2807
2807
  };
2808
2808
  }
@@ -2889,6 +2889,6 @@ function satisfiesDependency(dependency, version, cwd) {
2889
2889
  return satisfies(semVer, version);
2890
2890
  }
2891
2891
  //#endregion
2892
- export { AsyncEventEmitter, FunctionParams, PluginDriver, URLPath, build, build as default, buildDefaultBanner, createAdapter, createPlugin, createStorage, defaultResolveBanner, defaultResolveFile, defaultResolveFooter, defaultResolveOptions, defaultResolvePath, defineConfig, defineGenerator, defineLogger, definePresets, definePrinter, defineResolver, detectFormatter, detectLinter, formatters, fsStorage, getBarrelFiles, getConfigs, getMode, getPreset, isInputPath, linters, logLevel, memoryStorage, mergeResolvers, renderOperation, renderOperations, renderSchema, runGeneratorOperation, runGeneratorOperations, runGeneratorSchema, safeBuild, satisfiesDependency, setup };
2892
+ export { AsyncEventEmitter, FunctionParams, PluginDriver, URLPath, build, build as default, buildDefaultBanner, composeTransformers, createAdapter, createPlugin, createStorage, defaultResolveBanner, defaultResolveFile, defaultResolveFooter, defaultResolveOptions, defaultResolvePath, defineConfig, defineGenerator, defineLogger, definePresets, definePrinter, defineResolver, detectFormatter, detectLinter, formatters, fsStorage, getBarrelFiles, getConfigs, getMode, getPreset, isInputPath, linters, logLevel, memoryStorage, renderOperation, renderOperations, renderSchema, runGeneratorOperation, runGeneratorOperations, runGeneratorSchema, safeBuild, satisfiesDependency, setup };
2893
2893
 
2894
2894
  //# sourceMappingURL=index.js.map