@kubb/core 5.0.0-alpha.7 → 5.0.0-alpha.71

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 (69) hide show
  1. package/README.md +3 -2
  2. package/dist/PluginDriver-BXibeQk-.cjs +1036 -0
  3. package/dist/PluginDriver-BXibeQk-.cjs.map +1 -0
  4. package/dist/PluginDriver-DV3p2Hky.js +945 -0
  5. package/dist/PluginDriver-DV3p2Hky.js.map +1 -0
  6. package/dist/index.cjs +730 -1773
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +289 -240
  9. package/dist/index.js +717 -1741
  10. package/dist/index.js.map +1 -1
  11. package/dist/mocks.cjs +139 -0
  12. package/dist/mocks.cjs.map +1 -0
  13. package/dist/mocks.d.ts +74 -0
  14. package/dist/mocks.js +134 -0
  15. package/dist/mocks.js.map +1 -0
  16. package/dist/types-DWtkW2RX.d.ts +1915 -0
  17. package/package.json +51 -57
  18. package/src/FileManager.ts +115 -0
  19. package/src/FileProcessor.ts +86 -0
  20. package/src/Kubb.ts +205 -130
  21. package/src/PluginDriver.ts +326 -565
  22. package/src/constants.ts +20 -47
  23. package/src/createAdapter.ts +25 -0
  24. package/src/createKubb.ts +546 -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 +64 -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 -16
  35. package/src/mocks.ts +172 -0
  36. package/src/renderNode.ts +35 -0
  37. package/src/storages/fsStorage.ts +43 -13
  38. package/src/storages/memoryStorage.ts +6 -4
  39. package/src/types.ts +752 -226
  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/PluginDriver-Dma9KhLK.d.ts +0 -1056
  44. package/dist/chunk-ByKO4r7w.cjs +0 -38
  45. package/dist/hooks.cjs +0 -102
  46. package/dist/hooks.cjs.map +0 -1
  47. package/dist/hooks.d.ts +0 -75
  48. package/dist/hooks.js +0 -97
  49. package/dist/hooks.js.map +0 -1
  50. package/src/PackageManager.ts +0 -180
  51. package/src/build.ts +0 -419
  52. package/src/config.ts +0 -56
  53. package/src/defineAdapter.ts +0 -22
  54. package/src/defineStorage.ts +0 -56
  55. package/src/errors.ts +0 -1
  56. package/src/hooks/index.ts +0 -4
  57. package/src/hooks/useKubb.ts +0 -138
  58. package/src/hooks/useMode.ts +0 -11
  59. package/src/hooks/usePlugin.ts +0 -11
  60. package/src/hooks/usePluginDriver.ts +0 -11
  61. package/src/utils/FunctionParams.ts +0 -155
  62. package/src/utils/TreeNode.ts +0 -215
  63. package/src/utils/executeStrategies.ts +0 -81
  64. package/src/utils/formatters.ts +0 -56
  65. package/src/utils/getBarrelFiles.ts +0 -141
  66. package/src/utils/getConfigs.ts +0 -30
  67. package/src/utils/getPlugins.ts +0 -23
  68. package/src/utils/linters.ts +0 -25
  69. package/src/utils/resolveOptions.ts +0 -93
@@ -1,30 +0,0 @@
1
- import type { CLIOptions, ConfigInput } from '../config.ts'
2
- import type { Config, UserConfig } from '../types.ts'
3
- import { getPlugins } from './getPlugins.ts'
4
-
5
- /**
6
- * Converting UserConfig to Config Array without a change in the object beside the JSON convert.
7
- */
8
- export async function getConfigs(config: ConfigInput | UserConfig, args: CLIOptions): Promise<Array<Config>> {
9
- const resolvedConfig: Promise<UserConfig | Array<UserConfig>> =
10
- typeof config === 'function' ? Promise.resolve(config(args as CLIOptions)) : Promise.resolve(config)
11
-
12
- let userConfigs = await resolvedConfig
13
-
14
- if (!Array.isArray(userConfigs)) {
15
- userConfigs = [userConfigs]
16
- }
17
-
18
- const results: Array<Config> = []
19
-
20
- for (const item of userConfigs) {
21
- const plugins = item.plugins ? await getPlugins(item.plugins) : undefined
22
-
23
- results.push({
24
- ...item,
25
- plugins,
26
- } as Config)
27
- }
28
-
29
- return results
30
- }
@@ -1,23 +0,0 @@
1
- import type { UnknownUserPlugin, UserConfig } from '../types.ts'
2
-
3
- type PluginsArray = Array<Omit<UnknownUserPlugin, 'inject'>>
4
-
5
- function isJSONPlugins(plugins: UserConfig['plugins']): boolean {
6
- return Array.isArray(plugins) && plugins.some((plugin) => Array.isArray(plugin) && typeof (plugin as unknown[])[0] === 'string')
7
- }
8
-
9
- function isObjectPlugins(plugins: UserConfig['plugins']): boolean {
10
- return plugins instanceof Object && !Array.isArray(plugins)
11
- }
12
-
13
- export function getPlugins(plugins: UserConfig['plugins']): Promise<PluginsArray | undefined> {
14
- if (isObjectPlugins(plugins)) {
15
- throw new Error('Object plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')
16
- }
17
-
18
- if (isJSONPlugins(plugins)) {
19
- throw new Error('JSON plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')
20
- }
21
-
22
- return Promise.resolve(plugins)
23
- }
@@ -1,25 +0,0 @@
1
- import { x } from 'tinyexec'
2
- import type { linters } from '../constants.ts'
3
-
4
- type Linter = keyof typeof linters
5
-
6
- async function isLinterAvailable(linter: Linter): Promise<boolean> {
7
- try {
8
- await x(linter, ['--version'], { nodeOptions: { stdio: 'ignore' } })
9
- return true
10
- } catch {
11
- return false
12
- }
13
- }
14
-
15
- export async function detectLinter(): Promise<Linter | undefined> {
16
- const linterNames: Linter[] = ['biome', 'oxlint', 'eslint']
17
-
18
- for (const linter of linterNames) {
19
- if (await isLinterAvailable(linter)) {
20
- return linter
21
- }
22
- }
23
-
24
- return undefined
25
- }
@@ -1,93 +0,0 @@
1
- import { isOperationNode, isSchemaNode } from '@kubb/ast'
2
- import type { Node, OperationNode, SchemaNode } from '@kubb/ast/types'
3
-
4
- type FilterItem = {
5
- type: string
6
- pattern: string | RegExp
7
- }
8
-
9
- type OverrideItem<TOptions> = FilterItem & {
10
- options: Omit<Partial<TOptions>, 'override'>
11
- }
12
-
13
- type ResolveOptionsContext<TOptions> = {
14
- options: TOptions
15
- exclude?: Array<FilterItem>
16
- include?: Array<FilterItem>
17
- override?: Array<OverrideItem<TOptions>>
18
- }
19
-
20
- function matchesOperationPattern(node: OperationNode, type: string, pattern: string | RegExp): boolean {
21
- switch (type) {
22
- case 'tag':
23
- return node.tags.some((tag) => !!tag.match(pattern))
24
- case 'operationId':
25
- return !!node.operationId.match(pattern)
26
- case 'path':
27
- return !!node.path.match(pattern)
28
- case 'method':
29
- return !!(node.method.toLowerCase() as string).match(pattern)
30
- default:
31
- return false
32
- }
33
- }
34
-
35
- function matchesSchemaPattern(node: SchemaNode, type: string, pattern: string | RegExp): boolean | null {
36
- switch (type) {
37
- case 'schemaName':
38
- return node.name ? !!node.name.match(pattern) : false
39
- default:
40
- return null
41
- }
42
- }
43
-
44
- /**
45
- * Resolves the effective plugin options for a given AST node by applying
46
- * `exclude`, `include`, and `override` rules from the plugin configuration.
47
- *
48
- * Returns `null` when the node is excluded or not matched by `include`.
49
- * Returns the merged options (base options merged with any matching `override`) otherwise.
50
- *
51
- * Supported filter types for `OperationNode`: `tag`, `operationId`, `path`, `method`.
52
- * Supported filter types for `SchemaNode`: `schemaName`.
53
- *
54
- * @example
55
- * const resolved = resolveOptions(operationNode, { options, exclude, include, override })
56
- * if (!resolved) return // excluded
57
- */
58
- export function resolveOptions<TOptions>(node: Node, { options, exclude = [], include, override = [] }: ResolveOptionsContext<TOptions>): TOptions | null {
59
- if (isOperationNode(node)) {
60
- const isExcluded = exclude.some(({ type, pattern }) => matchesOperationPattern(node, type, pattern))
61
- if (isExcluded) {
62
- return null
63
- }
64
-
65
- if (include && !include.some(({ type, pattern }) => matchesOperationPattern(node, type, pattern))) {
66
- return null
67
- }
68
-
69
- const overrideOptions = override.find(({ type, pattern }) => matchesOperationPattern(node, type, pattern))?.options
70
-
71
- return { ...options, ...overrideOptions }
72
- }
73
-
74
- if (isSchemaNode(node)) {
75
- if (exclude.some(({ type, pattern }) => matchesSchemaPattern(node, type, pattern) === true)) {
76
- return null
77
- }
78
-
79
- if (include) {
80
- const results = include.map(({ type, pattern }) => matchesSchemaPattern(node, type, pattern))
81
- const applicable = results.filter((r) => r !== null)
82
- if (applicable.length > 0 && !applicable.includes(true)) {
83
- return null
84
- }
85
- }
86
-
87
- const overrideOptions = override.find(({ type, pattern }) => matchesSchemaPattern(node, type, pattern) === true)?.options
88
-
89
- return { ...options, ...overrideOptions }
90
- }
91
-
92
- return options
93
- }