@kubb/core 5.0.0-alpha.21 → 5.0.0-alpha.23

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.
@@ -5,11 +5,11 @@ import { mergeResolvers } from './mergeResolvers.ts'
5
5
  type GetPresetParams<TResolver extends Resolver> = {
6
6
  preset: CompatibilityPreset
7
7
  presets: Presets<TResolver>
8
- resolvers: Array<TResolver>
8
+ resolvers?: Array<TResolver>
9
9
  /**
10
10
  * User-supplied generators to append after the preset's generators.
11
11
  */
12
- generators: Array<Generator<any>>
12
+ generators?: Array<Generator<any>>
13
13
  transformers?: Array<Visitor>
14
14
  }
15
15
 
@@ -29,7 +29,7 @@ type GetPresetResult<TResolver extends Resolver> = {
29
29
  * - Combines preset generators with user-supplied generators; falls back to the `default` preset's generators when neither provides any.
30
30
  */
31
31
  export function getPreset<TResolver extends Resolver = Resolver>(params: GetPresetParams<TResolver>): GetPresetResult<TResolver> {
32
- const { preset: presetName, presets, resolvers, transformers: userTransformers, generators: userGenerators } = params
32
+ const { preset: presetName, presets, resolvers = [], transformers: userTransformers = [], generators: userGenerators = [] } = params
33
33
  const [defaultResolver, ...userResolvers] = resolvers
34
34
  const preset = presets[presetName]
35
35
 
@@ -1,7 +1,15 @@
1
1
  import type { Resolver } from '../types.ts'
2
2
 
3
3
  /**
4
- * Merges an array of resolvers into a single resolver. Later entries override earlier ones (last wins).
4
+ * Merges an ordered list of resolvers into a single resolver by shallow-merging each entry left to right.
5
+ *
6
+ * Later entries win when keys conflict, so the last resolver in the list takes highest precedence.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const resolver = mergeResolvers(resolverTs, resolverTsLegacy)
11
+ * // resolverTsLegacy methods override resolverTs where they overlap
12
+ * ```
5
13
  */
6
14
  export function mergeResolvers<T extends Resolver>(...resolvers: Array<T>): T {
7
15
  return resolvers.reduce<T>((acc, curr) => ({ ...acc, ...curr }), resolvers[0]!)
@@ -1,26 +0,0 @@
1
- import type { PluginFactoryOptions } from './types.ts'
2
-
3
- /**
4
- * Builder type for the plugin-specific builder fields.
5
- * `name` is required; all other methods are defined by the concrete plugin builder type.
6
- */
7
- type BuilderBuilder<T extends PluginFactoryOptions> = () => T['builder'] & ThisType<T['builder']>
8
-
9
- /**
10
- * Defines a builder for a plugin — a named collection of schema-building helpers that
11
- * can be exported alongside the plugin and imported by other plugins or generators.
12
- *
13
- * @example
14
- * export const builder = defineBuilder<PluginTs>(() => ({
15
- * name: 'default',
16
- * buildParamsSchema({ params, node, resolver }) {
17
- * return createSchema({ type: 'object', properties: [] })
18
- * },
19
- * buildDataSchemaNode({ node, resolver }) {
20
- * return createSchema({ type: 'object', properties: [] })
21
- * },
22
- * }))
23
- */
24
- export function defineBuilder<T extends PluginFactoryOptions>(build: BuilderBuilder<T>): T['builder'] {
25
- return build() as T['builder']
26
- }
@@ -1,27 +0,0 @@
1
- import type { Visitor } from '@kubb/ast/types'
2
- import type { Generator, Preset, Resolver } from './types.ts'
3
-
4
- /**
5
- * Creates a typed preset object that bundles a name, resolvers, optional
6
- * transformers, and optional generators — the building block for composable plugin presets.
7
- *
8
- * @example
9
- * import { definePreset } from '@kubb/core'
10
- * import { resolverTsLegacy } from '@kubb/plugin-ts'
11
- *
12
- * export const myPreset = definePreset('myPreset', { resolvers: [resolverTsLegacy] })
13
- *
14
- * @example
15
- * // With custom transformers
16
- * export const myPreset = definePreset('myPreset', { resolvers: [resolverTsLegacy], transformers: [myTransformer] })
17
- *
18
- * @example
19
- * // With generators
20
- * export const myPreset = definePreset('myPreset', { resolvers: [resolverTsLegacy], generators: [typeGeneratorLegacy] })
21
- */
22
- export function definePreset<TResolver extends Resolver = Resolver, TName extends string = string>(
23
- name: TName,
24
- { resolvers, transformers, generators }: { resolvers: Array<TResolver>; transformers?: Array<Visitor>; generators?: Array<Generator<any>> },
25
- ): Preset<TResolver> & { name: TName } {
26
- return { name, resolvers, transformers, generators }
27
- }