@kubb/core 5.0.0-alpha.6 → 5.0.0-alpha.61

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.
Files changed (72) hide show
  1. package/README.md +3 -2
  2. package/dist/PluginDriver-Bc0HQM8V.js +948 -0
  3. package/dist/PluginDriver-Bc0HQM8V.js.map +1 -0
  4. package/dist/PluginDriver-Dyl2fwfQ.cjs +1039 -0
  5. package/dist/PluginDriver-Dyl2fwfQ.cjs.map +1 -0
  6. package/dist/index.cjs +691 -1798
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +279 -265
  9. package/dist/index.js +678 -1765
  10. package/dist/index.js.map +1 -1
  11. package/dist/mocks.cjs +138 -0
  12. package/dist/mocks.cjs.map +1 -0
  13. package/dist/mocks.d.ts +74 -0
  14. package/dist/mocks.js +133 -0
  15. package/dist/mocks.js.map +1 -0
  16. package/dist/types-mW3-Ihuf.d.ts +1903 -0
  17. package/package.json +51 -57
  18. package/src/FileManager.ts +110 -0
  19. package/src/FileProcessor.ts +86 -0
  20. package/src/Kubb.ts +205 -130
  21. package/src/PluginDriver.ts +424 -0
  22. package/src/constants.ts +20 -47
  23. package/src/createAdapter.ts +25 -0
  24. package/src/createKubb.ts +527 -0
  25. package/src/createRenderer.ts +57 -0
  26. package/src/createStorage.ts +58 -0
  27. package/src/defineGenerator.ts +88 -100
  28. package/src/defineLogger.ts +13 -3
  29. package/src/defineMiddleware.ts +59 -0
  30. package/src/defineParser.ts +45 -0
  31. package/src/definePlugin.ts +78 -7
  32. package/src/defineResolver.ts +521 -0
  33. package/src/devtools.ts +14 -14
  34. package/src/index.ts +13 -17
  35. package/src/mocks.ts +171 -0
  36. package/src/renderNode.ts +35 -0
  37. package/src/storages/fsStorage.ts +40 -11
  38. package/src/storages/memoryStorage.ts +4 -3
  39. package/src/types.ts +738 -218
  40. package/src/utils/diagnostics.ts +4 -1
  41. package/src/utils/isInputPath.ts +10 -0
  42. package/src/utils/packageJSON.ts +99 -0
  43. package/dist/PluginManager-vZodFEMe.d.ts +0 -1056
  44. package/dist/chunk-ByKO4r7w.cjs +0 -38
  45. package/dist/hooks.cjs +0 -60
  46. package/dist/hooks.cjs.map +0 -1
  47. package/dist/hooks.d.ts +0 -64
  48. package/dist/hooks.js +0 -56
  49. package/dist/hooks.js.map +0 -1
  50. package/src/BarrelManager.ts +0 -74
  51. package/src/PackageManager.ts +0 -180
  52. package/src/PluginManager.ts +0 -667
  53. package/src/PromiseManager.ts +0 -40
  54. package/src/build.ts +0 -419
  55. package/src/config.ts +0 -56
  56. package/src/defineAdapter.ts +0 -22
  57. package/src/defineStorage.ts +0 -56
  58. package/src/errors.ts +0 -1
  59. package/src/hooks/index.ts +0 -4
  60. package/src/hooks/useKubb.ts +0 -55
  61. package/src/hooks/useMode.ts +0 -11
  62. package/src/hooks/usePlugin.ts +0 -11
  63. package/src/hooks/usePluginManager.ts +0 -11
  64. package/src/utils/FunctionParams.ts +0 -155
  65. package/src/utils/TreeNode.ts +0 -215
  66. package/src/utils/executeStrategies.ts +0 -81
  67. package/src/utils/formatters.ts +0 -56
  68. package/src/utils/getBarrelFiles.ts +0 -79
  69. package/src/utils/getConfigs.ts +0 -30
  70. package/src/utils/getPlugins.ts +0 -23
  71. package/src/utils/linters.ts +0 -25
  72. package/src/utils/resolveOptions.ts +0 -93
package/dist/index.d.ts CHANGED
@@ -1,161 +1,308 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { A as UserConfig, B as defineStorage, C as PluginParameter, D as ResolveNameParams, E as PrinterFactoryOptions, F as Generator, G as URLPath, H as linters, I as ReactGeneratorV2, L as defineGenerator, M as UserPlugin, N as UserPluginWithLifeCycle, O as ResolvePathParams, P as CoreGeneratorV2, R as KubbEvents, S as PluginLifecycleHooks, T as Printer, U as logLevel, V as formatters, W as AsyncEventEmitter, _ as Output, a as AdapterFactoryOptions, b as PluginFactoryOptions, c as Config, d as Group, f as InputData, g as LoggerOptions, h as LoggerContext, i as Adapter, j as UserLogger, k as UnknownUserPlugin, l as DevtoolsOptions, m as Logger, n as PluginManager, o as AdapterSource, p as InputPath, r as getMode, s as BarrelType, u as GetPluginFactoryOptions, v as Plugin, w as PluginWithLifeCycle, x as PluginLifecycle, y as PluginContext, z as DefineStorage } from "./PluginManager-vZodFEMe.js";
3
- import { definePrinter } from "@kubb/ast";
4
- import { Fabric, KubbFile } from "@kubb/fabric-core/types";
5
- import { Node } from "@kubb/ast/types";
2
+ import { $ as defineParser, A as KubbPluginStartContext, B as Override, C as KubbGenerationSummaryContext, D as KubbLifecycleStartContext, E as KubbInfoContext, F as Logger, G as ResolveOptionsContext, H as PossibleConfig, I as LoggerContext, J as ResolverFileParams, K as Resolver, L as LoggerOptions, M as KubbSuccessContext, N as KubbVersionNewContext, O as KubbPluginEndContext, P as KubbWarnContext, Q as Parser, R as NormalizedPlugin, S as KubbGenerationStartContext, T as KubbHookStartContext, U as ResolveBannerContext, V as PluginFactoryOptions, W as ResolveNameParams, X as UserConfig, Y as ResolverPathParams, Z as UserLogger, _ as KubbErrorContext, _t as logLevel, a as Config, at as createKubb, b as KubbFilesProcessingStartContext, c as GeneratorContext, ct as Plugin, d as InputData, dt as defineGenerator, et as Middleware, f as InputPath, ft as Storage, g as KubbDebugContext, gt as createRenderer, h as KubbConfigEndContext, ht as RendererFactory, i as CLIOptions, it as BuildOutput, j as KubbPluginsEndContext, k as KubbPluginSetupContext, l as Group, lt as definePlugin, m as KubbBuildStartContext, mt as Renderer, n as AdapterFactoryOptions, nt as Kubb, o as DevtoolsOptions, ot as PluginDriver, p as KubbBuildEndContext, pt as createStorage, q as ResolverContext, r as AdapterSource, rt as KubbHooks, s as Exclude, st as FileManager, t as Adapter, tt as defineMiddleware, u as Include, ut as Generator, v as KubbFileProcessingUpdateContext, vt as AsyncEventEmitter, w as KubbHookEndContext, x as KubbGenerationEndContext, y as KubbFilesProcessingEndContext, z as Output } from "./types-mW3-Ihuf.js";
3
+ import * as ast from "@kubb/ast";
4
+ import { FileNode, InputNode, Node } from "@kubb/ast";
6
5
 
7
- //#region src/build.d.ts
8
- type BuildOptions = {
9
- config: UserConfig;
10
- events?: AsyncEventEmitter<KubbEvents>;
11
- };
12
- type BuildOutput = {
13
- failedPlugins: Set<{
14
- plugin: Plugin;
15
- error: Error;
16
- }>;
17
- fabric: Fabric;
18
- files: Array<KubbFile.ResolvedFile>;
19
- pluginManager: PluginManager;
20
- pluginTimings: Map<string, number>;
21
- error?: Error;
22
- sources: Map<KubbFile.Path, string>;
6
+ //#region ../../internals/utils/src/urlPath.d.ts
7
+ type URLObject = {
8
+ /**
9
+ * The resolved URL string (Express-style or template literal, depending on context).
10
+ */
11
+ url: string;
12
+ /**
13
+ * Extracted path parameters as a key-value map, or `undefined` when the path has none.
14
+ */
15
+ params?: Record<string, string>;
23
16
  };
24
- type SetupResult = {
25
- events: AsyncEventEmitter<KubbEvents>;
26
- fabric: Fabric;
27
- pluginManager: PluginManager;
28
- sources: Map<KubbFile.Path, string>;
17
+ type ObjectOptions = {
18
+ /**
19
+ * Controls whether the `url` is rendered as an Express path or a template literal.
20
+ * @default 'path'
21
+ */
22
+ type?: 'path' | 'template';
23
+ /**
24
+ * Optional transform applied to each extracted parameter name.
25
+ */
26
+ replacer?: (pathParam: string) => string;
27
+ /**
28
+ * When `true`, the result is serialized to a string expression instead of a plain object.
29
+ */
30
+ stringify?: boolean;
29
31
  };
30
- declare function setup(options: BuildOptions): Promise<SetupResult>;
31
- declare function build(options: BuildOptions, overrides?: SetupResult): Promise<BuildOutput>;
32
- declare function safeBuild(options: BuildOptions, overrides?: SetupResult): Promise<BuildOutput>;
33
- //#endregion
34
- //#region src/config.d.ts
35
32
  /**
36
- * CLI options derived from command-line flags.
33
+ * Supported identifier casing strategies for path parameters.
37
34
  */
38
- type CLIOptions = {
39
- /** Path to `kubb.config.js` */config?: string; /** Enable watch mode for input files */
40
- watch?: boolean;
35
+ type PathCasing = 'camelcase';
36
+ type Options = {
41
37
  /**
42
- * Logging verbosity for CLI usage.
43
- *
44
- * - `silent`: hide non-essential logs
45
- * - `info`: show general logs (non-plugin-related)
46
- * - `debug`: include detailed plugin lifecycle logs
47
- * @default 'silent'
38
+ * Casing strategy applied to path parameter names.
39
+ * @default undefined (original identifier preserved)
48
40
  */
49
- logLevel?: 'silent' | 'info' | 'debug'; /** Run Kubb with Bun */
50
- bun?: boolean;
41
+ casing?: PathCasing;
51
42
  };
52
- /** All accepted forms of a Kubb configuration. */
53
- type ConfigInput = PossiblePromise<UserConfig | UserConfig[]> | ((cli: CLIOptions) => PossiblePromise<UserConfig | UserConfig[]>);
54
43
  /**
55
- * Helper for defining a Kubb configuration.
56
- *
57
- * Accepts either:
58
- * - A config object or array of configs
59
- * - A function returning the config(s), optionally async,
60
- * receiving the CLI options as argument
44
+ * Parses and transforms an OpenAPI/Swagger path string into various URL formats.
61
45
  *
62
46
  * @example
63
- * export default defineConfig(({ logLevel }) => ({
64
- * root: 'src',
65
- * plugins: [myPlugin()],
66
- * }))
47
+ * const p = new URLPath('/pet/{petId}')
48
+ * p.URL // '/pet/:petId'
49
+ * p.template // '`/pet/${petId}`'
67
50
  */
68
- declare function defineConfig(config: (cli: CLIOptions) => PossiblePromise<UserConfig | UserConfig[]>): typeof config;
69
- declare function defineConfig(config: PossiblePromise<UserConfig | UserConfig[]>): typeof config;
51
+ declare class URLPath {
52
+ #private;
53
+ /**
54
+ * The raw OpenAPI/Swagger path string, e.g. `/pet/{petId}`.
55
+ */
56
+ path: string;
57
+ constructor(path: string, options?: Options);
58
+ /** Converts the OpenAPI path to Express-style colon syntax, e.g. `/pet/{petId}` → `/pet/:petId`.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * new URLPath('/pet/{petId}').URL // '/pet/:petId'
63
+ * ```
64
+ */
65
+ get URL(): string;
66
+ /** Returns `true` when `path` is a fully-qualified URL (e.g. starts with `https://`).
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * new URLPath('https://petstore.swagger.io/v2/pet').isURL // true
71
+ * new URLPath('/pet/{petId}').isURL // false
72
+ * ```
73
+ */
74
+ get isURL(): boolean;
75
+ /**
76
+ * Converts the OpenAPI path to a TypeScript template literal string.
77
+ *
78
+ * @example
79
+ * new URLPath('/pet/{petId}').template // '`/pet/${petId}`'
80
+ * new URLPath('/account/monetary-accountID').template // '`/account/${monetaryAccountId}`'
81
+ */
82
+ get template(): string;
83
+ /** Returns the path and its extracted params as a structured `URLObject`, or as a stringified expression when `stringify` is set.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * new URLPath('/pet/{petId}').object
88
+ * // { url: '/pet/:petId', params: { petId: 'petId' } }
89
+ * ```
90
+ */
91
+ get object(): URLObject | string;
92
+ /** Returns a map of path parameter names, or `undefined` when the path has no parameters.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * new URLPath('/pet/{petId}').params // { petId: 'petId' }
97
+ * new URLPath('/pet').params // undefined
98
+ * ```
99
+ */
100
+ get params(): Record<string, string> | undefined;
101
+ toObject({
102
+ type,
103
+ replacer,
104
+ stringify
105
+ }?: ObjectOptions): URLObject | string;
106
+ /**
107
+ * Converts the OpenAPI path to a TypeScript template literal string.
108
+ * An optional `replacer` can transform each extracted parameter name before interpolation.
109
+ *
110
+ * @example
111
+ * new URLPath('/pet/{petId}').toTemplateString() // '`/pet/${petId}`'
112
+ */
113
+ toTemplateString({
114
+ prefix,
115
+ replacer
116
+ }?: {
117
+ prefix?: string;
118
+ replacer?: (pathParam: string) => string;
119
+ }): string;
120
+ /**
121
+ * Extracts all `{param}` segments from the path and returns them as a key-value map.
122
+ * An optional `replacer` transforms each parameter name in both key and value positions.
123
+ * Returns `undefined` when no path parameters are found.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * new URLPath('/pet/{petId}/tag/{tagId}').getParams()
128
+ * // { petId: 'petId', tagId: 'tagId' }
129
+ * ```
130
+ */
131
+ getParams(replacer?: (pathParam: string) => string): Record<string, string> | undefined;
132
+ /** Converts the OpenAPI path to Express-style colon syntax.
133
+ *
134
+ * @example
135
+ * ```ts
136
+ * new URLPath('/pet/{petId}').toURLPath() // '/pet/:petId'
137
+ * ```
138
+ */
139
+ toURLPath(): string;
140
+ }
141
+ //#endregion
142
+ //#region src/createAdapter.d.ts
70
143
  /**
71
- * Type guard to check if a given config has an `input.path`.
144
+ * Builder type for an {@link Adapter} takes options and returns the adapter instance.
72
145
  */
73
- declare function isInputPath(config: UserConfig | undefined): config is UserConfig<InputPath>;
74
- //#endregion
75
- //#region src/defineAdapter.d.ts
76
146
  type AdapterBuilder<T extends AdapterFactoryOptions> = (options: T['options']) => Adapter<T>;
77
147
  /**
78
- * Wraps an adapter builder to make the options parameter optional.
148
+ * Creates an adapter factory. Call the returned function with optional options to get the adapter instance.
79
149
  *
80
150
  * @example
81
- * ```ts
82
- * export const adapterOas = defineAdapter<OasAdapter>((options) => {
83
- * const { validate = true, dateType = 'string' } = options
151
+ * export const myAdapter = createAdapter<MyAdapter>((options) => {
84
152
  * return {
85
- * name: adapterOasName,
86
- * options: { validate, dateType, ... },
87
- * parse(source) { ... },
153
+ * name: 'my-adapter',
154
+ * options,
155
+ * async parse(source) { ... },
88
156
  * }
89
157
  * })
90
- * ```
158
+ *
159
+ * // instantiate
160
+ * const adapter = myAdapter({ validate: true })
91
161
  */
92
- declare function defineAdapter<T extends AdapterFactoryOptions = AdapterFactoryOptions>(build: AdapterBuilder<T>): (options?: T['options']) => Adapter<T>;
162
+ declare function createAdapter<T extends AdapterFactoryOptions = AdapterFactoryOptions>(build: AdapterBuilder<T>): (options?: T['options']) => Adapter<T>;
93
163
  //#endregion
94
164
  //#region src/defineLogger.d.ts
95
- declare function defineLogger<Options extends LoggerOptions = LoggerOptions>(logger: UserLogger<Options>): Logger<Options>;
96
- //#endregion
97
- //#region src/definePlugin.d.ts
98
- type PluginBuilder<T extends PluginFactoryOptions = PluginFactoryOptions> = (options: T['options']) => UserPluginWithLifeCycle<T>;
99
165
  /**
100
- * Wraps a plugin builder to make the options parameter optional.
166
+ * Wraps a logger definition into a typed {@link Logger}.
167
+ *
168
+ * @example
169
+ * export const myLogger = defineLogger({
170
+ * name: 'my-logger',
171
+ * install(context, options) {
172
+ * context.on('kubb:info', (message) => console.log('ℹ', message))
173
+ * context.on('kubb:error', (error) => console.error('✗', error.message))
174
+ * },
175
+ * })
101
176
  */
102
- declare function definePlugin<T extends PluginFactoryOptions = PluginFactoryOptions>(build: PluginBuilder<T>): (options?: T['options']) => UserPluginWithLifeCycle<T>;
103
- //#endregion
104
- //#region src/PackageManager.d.ts
105
- type PackageJSON = {
106
- dependencies?: Record<string, string>;
107
- devDependencies?: Record<string, string>;
108
- };
109
- type DependencyName = string;
110
- type DependencyVersion = string;
111
- declare class PackageManager {
112
- #private;
113
- constructor(workspace?: string);
114
- set workspace(workspace: string);
115
- get workspace(): string | undefined;
116
- normalizeDirectory(directory: string): string;
117
- getLocation(path: string): string;
118
- import(path: string): Promise<unknown>;
119
- getPackageJSON(): Promise<PackageJSON | undefined>;
120
- getPackageJSONSync(): PackageJSON | undefined;
121
- static setVersion(dependency: DependencyName, version: DependencyVersion): void;
122
- getVersion(dependency: DependencyName | RegExp): Promise<DependencyVersion | undefined>;
123
- getVersionSync(dependency: DependencyName | RegExp): DependencyVersion | undefined;
124
- isValid(dependency: DependencyName | RegExp, version: DependencyVersion): Promise<boolean>;
125
- isValidSync(dependency: DependencyName | RegExp, version: DependencyVersion): boolean;
126
- }
177
+ declare function defineLogger<Options extends LoggerOptions = LoggerOptions>(logger: UserLogger<Options>): Logger<Options>;
127
178
  //#endregion
128
- //#region src/utils/executeStrategies.d.ts
129
- type PromiseFunc$1<T = unknown, T2 = never> = (state?: T) => T2 extends never ? Promise<T> : Promise<T> | T2;
130
- type ValueOfPromiseFuncArray<TInput extends Array<unknown>> = TInput extends Array<PromiseFunc$1<infer X, infer Y>> ? X | Y : never;
131
- type SeqOutput<TInput extends Array<PromiseFunc$1<TValue, null>>, TValue> = Promise<Array<Awaited<ValueOfPromiseFuncArray<TInput>>>>;
179
+ //#region src/defineResolver.d.ts
132
180
  /**
133
- * Chains promises
181
+ * Builder type for the plugin-specific resolver fields.
182
+ *
183
+ * `default`, `resolveOptions`, `resolvePath`, `resolveFile`, `resolveBanner`, and `resolveFooter`
184
+ * are optional — built-in fallbacks are injected when omitted.
185
+ *
186
+ * The builder receives `ctx` — a reference to the fully assembled resolver — so methods can
187
+ * call sibling resolver methods without using `this`. Because `ctx` is captured by the closure
188
+ * and the resolver is populated after the builder runs, `ctx` correctly reflects any overrides
189
+ * that were applied by the builder itself.
134
190
  */
135
- type HookFirstOutput<TInput extends Array<PromiseFunc$1<TValue, null>>, TValue = unknown> = ValueOfPromiseFuncArray<TInput>;
191
+ type ResolverBuilder<T extends PluginFactoryOptions> = (ctx: T['resolver']) => Omit<T['resolver'], 'default' | 'resolveOptions' | 'resolvePath' | 'resolveFile' | 'resolveBanner' | 'resolveFooter' | 'name' | 'pluginName'> & Partial<Pick<T['resolver'], 'default' | 'resolveOptions' | 'resolvePath' | 'resolveFile' | 'resolveBanner' | 'resolveFooter'>> & {
192
+ name: string;
193
+ pluginName: T['name'];
194
+ };
136
195
  /**
137
- * Chains promises, first non-null result stops and returns
196
+ * Default option resolver applies include/exclude filters and merges matching override options.
197
+ *
198
+ * Returns `null` when the node is filtered out by an `exclude` rule or not matched by any `include` rule.
199
+ *
200
+ * @example Include/exclude filtering
201
+ * ```ts
202
+ * const options = defaultResolveOptions(operationNode, {
203
+ * options: { output: 'types' },
204
+ * exclude: [{ type: 'tag', pattern: 'internal' }],
205
+ * })
206
+ * // → null when node has tag 'internal'
207
+ * ```
208
+ *
209
+ * @example Override merging
210
+ * ```ts
211
+ * const options = defaultResolveOptions(operationNode, {
212
+ * options: { enumType: 'asConst' },
213
+ * override: [{ type: 'operationId', pattern: 'listPets', options: { enumType: 'enum' } }],
214
+ * })
215
+ * // → { enumType: 'enum' } when operationId matches
216
+ * ```
138
217
  */
139
- type HookParallelOutput<TInput extends Array<PromiseFunc$1<TValue, null>>, TValue> = Promise<PromiseSettledResult<Awaited<ValueOfPromiseFuncArray<TInput>>>[]>;
140
218
  /**
141
- * Runs an array of promise functions with optional concurrency limit.
219
+ * Defines a resolver for a plugin, injecting built-in defaults for name casing,
220
+ * include/exclude/override filtering, path resolution, and file construction.
221
+ *
222
+ * All four defaults can be overridden by providing them in the builder function:
223
+ * - `default` — name casing strategy (camelCase / PascalCase)
224
+ * - `resolveOptions` — include/exclude/override filtering
225
+ * - `resolvePath` — output path computation
226
+ * - `resolveFile` — full `FileNode` construction
227
+ *
228
+ * The builder receives `ctx` — a reference to the assembled resolver — so methods can
229
+ * call sibling resolver methods using `ctx` instead of `this`.
230
+ *
231
+ * @example Basic resolver with naming helpers
232
+ * ```ts
233
+ * export const resolver = defineResolver<PluginTs>((ctx) => ({
234
+ * name: 'default',
235
+ * resolveName(node) {
236
+ * return ctx.default(node.name, 'function')
237
+ * },
238
+ * resolveTypedName(node) {
239
+ * return ctx.default(node.name, 'type')
240
+ * },
241
+ * }))
242
+ * ```
243
+ *
244
+ * @example Override resolvePath for a custom output structure
245
+ * ```ts
246
+ * export const resolver = defineResolver<PluginTs>((_ctx) => ({
247
+ * name: 'custom',
248
+ * resolvePath({ baseName }, { root, output }) {
249
+ * return path.resolve(root, output.path, 'generated', baseName)
250
+ * },
251
+ * }))
252
+ * ```
253
+ *
254
+ * @example Use ctx.default inside a helper
255
+ * ```ts
256
+ * export const resolver = defineResolver<PluginTs>((ctx) => ({
257
+ * name: 'default',
258
+ * resolveParamName(node, param) {
259
+ * return ctx.default(`${node.operationId} ${param.in} ${param.name}`, 'type')
260
+ * },
261
+ * }))
262
+ * ```
142
263
  */
143
- type Strategy = 'seq' | 'first' | 'parallel';
144
- type StrategySwitch<TStrategy extends Strategy, TInput extends Array<PromiseFunc$1<TValue, null>>, TValue> = TStrategy extends 'first' ? HookFirstOutput<TInput, TValue> : TStrategy extends 'seq' ? SeqOutput<TInput, TValue> : TStrategy extends 'parallel' ? HookParallelOutput<TInput, TValue> : never;
264
+ declare function defineResolver<T extends PluginFactoryOptions>(build: ResolverBuilder<T>): T['resolver'];
145
265
  //#endregion
146
- //#region src/PromiseManager.d.ts
147
- type PromiseFunc<T = unknown, T2 = never> = () => T2 extends never ? Promise<T> : Promise<T> | T2;
148
- type Options<TState = unknown> = {
149
- nullCheck?: (state: TState) => boolean;
266
+ //#region src/FileProcessor.d.ts
267
+ type ParseOptions = {
268
+ parsers?: Map<FileNode['extname'], Parser>;
269
+ extension?: Record<FileNode['extname'], FileNode['extname'] | ''>;
270
+ };
271
+ type RunOptions = ParseOptions & {
272
+ /**
273
+ * @default 'sequential'
274
+ */
275
+ mode?: 'sequential' | 'parallel';
276
+ onStart?: (files: Array<FileNode>) => Promise<void> | void;
277
+ onEnd?: (files: Array<FileNode>) => Promise<void> | void;
278
+ onUpdate?: (params: {
279
+ file: FileNode;
280
+ source?: string;
281
+ processed: number;
282
+ total: number;
283
+ percentage: number;
284
+ }) => Promise<void> | void;
150
285
  };
151
- declare class PromiseManager<TState = unknown> {
286
+ /**
287
+ * Converts a single file to a string using the registered parsers.
288
+ * Falls back to joining source values when no matching parser is found.
289
+ *
290
+ * @internal
291
+ */
292
+ declare class FileProcessor {
152
293
  #private;
153
- constructor(options?: Options<TState>);
154
- run<TInput extends Array<PromiseFunc<TValue, null>>, TValue, TStrategy extends Strategy, TOutput = StrategySwitch<TStrategy, TInput, TValue>>(strategy: TStrategy, promises: TInput, {
155
- concurrency
156
- }?: {
157
- concurrency?: number;
158
- }): TOutput;
294
+ parse(file: FileNode, {
295
+ parsers,
296
+ extension
297
+ }?: ParseOptions): Promise<string>;
298
+ run(files: Array<FileNode>, {
299
+ parsers,
300
+ mode,
301
+ extension,
302
+ onStart,
303
+ onEnd,
304
+ onUpdate
305
+ }?: RunOptions): Promise<Array<FileNode>>;
159
306
  }
160
307
  //#endregion
161
308
  //#region src/storages/fsStorage.d.ts
@@ -174,7 +321,8 @@ declare class PromiseManager<TState = unknown> {
174
321
  *
175
322
  * @example
176
323
  * ```ts
177
- * import { defineConfig, fsStorage } from '@kubb/core'
324
+ * import { fsStorage } from '@kubb/core'
325
+ * import { defineConfig } from 'kubb'
178
326
  *
179
327
  * export default defineConfig({
180
328
  * input: { path: './petStore.yaml' },
@@ -182,7 +330,7 @@ declare class PromiseManager<TState = unknown> {
182
330
  * })
183
331
  * ```
184
332
  */
185
- declare const fsStorage: (options?: Record<string, never> | undefined) => DefineStorage;
333
+ declare const fsStorage: (options?: Record<string, never> | undefined) => Storage;
186
334
  //#endregion
187
335
  //#region src/storages/memoryStorage.d.ts
188
336
  /**
@@ -194,7 +342,8 @@ declare const fsStorage: (options?: Record<string, never> | undefined) => Define
194
342
  *
195
343
  * @example
196
344
  * ```ts
197
- * import { defineConfig, memoryStorage } from '@kubb/core'
345
+ * import { memoryStorage } from '@kubb/core'
346
+ * import { defineConfig } from 'kubb'
198
347
  *
199
348
  * export default defineConfig({
200
349
  * input: { path: './petStore.yaml' },
@@ -202,149 +351,14 @@ declare const fsStorage: (options?: Record<string, never> | undefined) => Define
202
351
  * })
203
352
  * ```
204
353
  */
205
- declare const memoryStorage: (options?: Record<string, never> | undefined) => DefineStorage;
354
+ declare const memoryStorage: (options?: Record<string, never> | undefined) => Storage;
206
355
  //#endregion
207
- //#region src/utils/FunctionParams.d.ts
208
- type FunctionParamsASTWithoutType = {
209
- name?: string;
210
- type?: string;
211
- /**
212
- * @default true
213
- */
214
- required?: boolean;
215
- /**
216
- * @default true
217
- */
218
- enabled?: boolean;
219
- default?: string;
220
- };
221
- type FunctionParamsASTWithType = {
222
- name?: never;
223
- type: string;
224
- /**
225
- * @default true
226
- */
227
- required?: boolean;
228
- /**
229
- * @default true
230
- */
231
- enabled?: boolean;
232
- default?: string;
233
- };
234
- /**
235
- * @deprecated
236
- */
237
- type FunctionParamsAST = FunctionParamsASTWithoutType | FunctionParamsASTWithType;
356
+ //#region src/utils/isInputPath.d.ts
238
357
  /**
239
- * @deprecated
240
- */
241
- declare class FunctionParams {
242
- #private;
243
- get items(): FunctionParamsAST[];
244
- add(item: FunctionParamsAST | Array<FunctionParamsAST | FunctionParamsAST[] | undefined> | undefined): FunctionParams;
245
- static toObject(items: FunctionParamsAST[]): FunctionParamsAST;
246
- toObject(): FunctionParamsAST;
247
- static toString(items: (FunctionParamsAST | FunctionParamsAST[])[]): string;
248
- toString(): string;
249
- }
250
- //#endregion
251
- //#region src/utils/formatters.d.ts
252
- type Formatter = keyof typeof formatters;
253
- /**
254
- * Detect which formatter is available in the system.
255
- *
256
- * @returns Promise that resolves to the first available formatter or undefined if none are found
257
- *
258
- * @remarks
259
- * Checks in order of preference: biome, oxfmt, prettier.
260
- * Uses the `--version` flag to detect if each formatter command is available.
261
- * This is a reliable method as all supported formatters implement this flag.
262
- *
263
- * @example
264
- * ```typescript
265
- * const formatter = await detectFormatter()
266
- * if (formatter) {
267
- * console.log(`Using ${formatter} for formatting`)
268
- * } else {
269
- * console.log('No formatter found')
270
- * }
271
- * ```
272
- */
273
- declare function detectFormatter(): Promise<Formatter | undefined>;
274
- //#endregion
275
- //#region src/utils/getBarrelFiles.d.ts
276
- type FileMetaBase = {
277
- pluginName?: string;
278
- };
279
- type AddIndexesProps = {
280
- type: BarrelType | false | undefined;
281
- /**
282
- * Root based on root and output.path specified in the config
283
- */
284
- root: string;
285
- /**
286
- * Output for plugin
287
- */
288
- output: {
289
- path: string;
290
- };
291
- group?: {
292
- output: string;
293
- exportAs: string;
294
- };
295
- meta?: FileMetaBase;
296
- };
297
- declare function getBarrelFiles(files: Array<KubbFile.ResolvedFile>, {
298
- type,
299
- meta,
300
- root,
301
- output
302
- }: AddIndexesProps): Promise<KubbFile.File[]>;
303
- //#endregion
304
- //#region src/utils/getConfigs.d.ts
305
- /**
306
- * Converting UserConfig to Config Array without a change in the object beside the JSON convert.
307
- */
308
- declare function getConfigs(config: ConfigInput | UserConfig, args: CLIOptions): Promise<Array<Config>>;
309
- //#endregion
310
- //#region src/utils/linters.d.ts
311
- type Linter = keyof typeof linters;
312
- declare function detectLinter(): Promise<Linter | undefined>;
313
- //#endregion
314
- //#region src/utils/resolveOptions.d.ts
315
- type FilterItem = {
316
- type: string;
317
- pattern: string | RegExp;
318
- };
319
- type OverrideItem<TOptions> = FilterItem & {
320
- options: Omit<Partial<TOptions>, 'override'>;
321
- };
322
- type ResolveOptionsContext<TOptions> = {
323
- options: TOptions;
324
- exclude?: Array<FilterItem>;
325
- include?: Array<FilterItem>;
326
- override?: Array<OverrideItem<TOptions>>;
327
- };
328
- /**
329
- * Resolves the effective plugin options for a given AST node by applying
330
- * `exclude`, `include`, and `override` rules from the plugin configuration.
331
- *
332
- * Returns `null` when the node is excluded or not matched by `include`.
333
- * Returns the merged options (base options merged with any matching `override`) otherwise.
334
- *
335
- * Supported filter types for `OperationNode`: `tag`, `operationId`, `path`, `method`.
336
- * Supported filter types for `SchemaNode`: `schemaName`.
337
- *
338
- * @example
339
- * const resolved = resolveOptions(operationNode, { options, exclude, include, override })
340
- * if (!resolved) return // excluded
358
+ * Type guard to check if a given config has an `input.path`.
341
359
  */
342
- declare function resolveOptions<TOptions>(node: Node, {
343
- options,
344
- exclude,
345
- include,
346
- override
347
- }: ResolveOptionsContext<TOptions>): TOptions | null;
360
+ declare function isInputPath(config: UserConfig | undefined): config is UserConfig<InputPath>;
361
+ declare function isInputPath(config: Config | undefined): config is Config<InputPath>;
348
362
  //#endregion
349
- export { Adapter, AdapterFactoryOptions, AdapterSource, AsyncEventEmitter, BarrelType, type CLIOptions, Config, type ConfigInput, CoreGeneratorV2, DefineStorage, DevtoolsOptions, type FileMetaBase, FunctionParams, type FunctionParamsAST, Generator, GetPluginFactoryOptions, Group, InputData, InputPath, KubbEvents, Logger, LoggerContext, LoggerOptions, Output, PackageManager, Plugin, PluginContext, PluginFactoryOptions, PluginLifecycle, PluginLifecycleHooks, PluginManager, PluginParameter, PluginWithLifeCycle, Printer, PrinterFactoryOptions, PromiseManager, ReactGeneratorV2, ResolveNameParams, ResolvePathParams, URLPath, UnknownUserPlugin, UserConfig, UserLogger, UserPlugin, UserPluginWithLifeCycle, build, build as default, defineAdapter, defineConfig, defineGenerator, defineLogger, definePlugin, definePrinter, defineStorage, detectFormatter, detectLinter, formatters, fsStorage, getBarrelFiles, getConfigs, getMode, isInputPath, linters, logLevel, memoryStorage, resolveOptions, safeBuild, setup };
363
+ export { Adapter, AdapterFactoryOptions, AdapterSource, AsyncEventEmitter, BuildOutput, CLIOptions, Config, DevtoolsOptions, Exclude, FileManager, FileProcessor, Generator, GeneratorContext, Group, Include, InputData, InputPath, Kubb, KubbBuildEndContext, KubbBuildStartContext, KubbConfigEndContext, KubbDebugContext, KubbErrorContext, KubbFileProcessingUpdateContext, KubbFilesProcessingEndContext, KubbFilesProcessingStartContext, KubbGenerationEndContext, KubbGenerationStartContext, KubbGenerationSummaryContext, KubbHookEndContext, KubbHookStartContext, KubbHooks, KubbInfoContext, KubbLifecycleStartContext, KubbPluginEndContext, KubbPluginSetupContext, KubbPluginStartContext, KubbPluginsEndContext, KubbSuccessContext, KubbVersionNewContext, KubbWarnContext, Logger, LoggerContext, LoggerOptions, Middleware, NormalizedPlugin, Output, Override, Parser, Plugin, PluginDriver, PluginFactoryOptions, PossibleConfig, Renderer, RendererFactory, ResolveBannerContext, ResolveNameParams, ResolveOptionsContext, Resolver, ResolverContext, ResolverFileParams, ResolverPathParams, Storage, URLPath, UserConfig, UserLogger, ast, createAdapter, createKubb, createRenderer, createStorage, defineGenerator, defineLogger, defineMiddleware, defineParser, definePlugin, defineResolver, fsStorage, isInputPath, logLevel, memoryStorage };
350
364
  //# sourceMappingURL=index.d.ts.map