@kubb/core 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (107) hide show
  1. package/README.md +13 -4
  2. package/dist/{FileManager-Bw-FNS3q.d.cts → FileManager-4lbobkix.d.cts} +124 -84
  3. package/dist/{FileManager-BW--rO8q.d.ts → FileManager-CdXrquQt.d.ts} +124 -84
  4. package/dist/chunk-2EU7DMPM.js +96 -0
  5. package/dist/chunk-2EU7DMPM.js.map +1 -0
  6. package/dist/{chunk-LM2YQC3T.cjs → chunk-3MDDPVXB.cjs} +81 -51
  7. package/dist/chunk-3MDDPVXB.cjs.map +1 -0
  8. package/dist/chunk-4X5FFJPJ.js +8 -13
  9. package/dist/chunk-4X5FFJPJ.js.map +1 -1
  10. package/dist/{chunk-67C6RBGQ.cjs → chunk-6NKPFDXC.cjs} +28 -29
  11. package/dist/chunk-6NKPFDXC.cjs.map +1 -0
  12. package/dist/chunk-CLTNHSMO.js +895 -0
  13. package/dist/chunk-CLTNHSMO.js.map +1 -0
  14. package/dist/{chunk-3OXCZ5DJ.js → chunk-E6CN2CZC.js} +63 -54
  15. package/dist/chunk-E6CN2CZC.js.map +1 -0
  16. package/dist/chunk-HBQM723K.js +1049 -0
  17. package/dist/chunk-HBQM723K.js.map +1 -0
  18. package/dist/chunk-MHOAMP5V.cjs +1537 -0
  19. package/dist/chunk-MHOAMP5V.cjs.map +1 -0
  20. package/dist/chunk-PWFXUBH6.cjs +101 -0
  21. package/dist/chunk-PWFXUBH6.cjs.map +1 -0
  22. package/dist/chunk-RSTRL2FG.cjs +42 -0
  23. package/dist/chunk-RSTRL2FG.cjs.map +1 -0
  24. package/dist/chunk-SWGRKRKB.cjs +1088 -0
  25. package/dist/chunk-SWGRKRKB.cjs.map +1 -0
  26. package/dist/index.cjs +551 -599
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +7 -22
  29. package/dist/index.d.ts +7 -22
  30. package/dist/index.js +442 -512
  31. package/dist/index.js.map +1 -1
  32. package/dist/{logger-DChjnJMn.d.cts → logger-DvbHXjIO.d.cts} +29 -19
  33. package/dist/{logger-DChjnJMn.d.ts → logger-DvbHXjIO.d.ts} +29 -19
  34. package/dist/logger.cjs +25 -15
  35. package/dist/logger.cjs.map +1 -1
  36. package/dist/logger.d.cts +1 -2
  37. package/dist/logger.d.ts +1 -2
  38. package/dist/logger.js +3 -15
  39. package/dist/logger.js.map +1 -1
  40. package/dist/mocks.cjs +42 -31
  41. package/dist/mocks.cjs.map +1 -1
  42. package/dist/mocks.d.cts +7 -9
  43. package/dist/mocks.d.ts +7 -9
  44. package/dist/mocks.js +35 -33
  45. package/dist/mocks.js.map +1 -1
  46. package/dist/prompt-7BUJOOIL.cjs +760 -0
  47. package/dist/prompt-7BUJOOIL.cjs.map +1 -0
  48. package/dist/prompt-WQQUN22Z.js +749 -0
  49. package/dist/prompt-WQQUN22Z.js.map +1 -0
  50. package/dist/transformers.cjs +216 -49
  51. package/dist/transformers.cjs.map +1 -1
  52. package/dist/transformers.d.cts +1 -3
  53. package/dist/transformers.d.ts +1 -3
  54. package/dist/transformers.js +149 -35
  55. package/dist/transformers.js.map +1 -1
  56. package/dist/utils.cjs +65 -26
  57. package/dist/utils.cjs.map +1 -1
  58. package/dist/utils.d.cts +32 -3
  59. package/dist/utils.d.ts +32 -3
  60. package/dist/utils.js +3 -26
  61. package/dist/utils.js.map +1 -1
  62. package/package.json +11 -14
  63. package/src/BarrelManager.ts +95 -109
  64. package/src/{Generator.ts → BaseGenerator.ts} +1 -1
  65. package/src/FileManager.ts +190 -298
  66. package/src/PackageManager.ts +1 -1
  67. package/src/PluginManager.ts +149 -90
  68. package/src/PromiseManager.ts +1 -1
  69. package/src/__snapshots__/barrel.json +93 -0
  70. package/src/__snapshots__/grouped.json +120 -0
  71. package/src/__snapshots__/ordered.json +68 -0
  72. package/src/build.ts +87 -122
  73. package/src/config.ts +2 -4
  74. package/src/errors.ts +0 -11
  75. package/src/index.ts +2 -3
  76. package/src/logger.ts +76 -34
  77. package/src/plugin.ts +2 -5
  78. package/src/transformers/escape.ts +0 -10
  79. package/src/transformers/index.ts +2 -3
  80. package/src/transformers/trim.ts +0 -4
  81. package/src/types.ts +48 -17
  82. package/src/utils/TreeNode.ts +132 -50
  83. package/src/utils/executeStrategies.ts +3 -3
  84. package/src/utils/index.ts +2 -1
  85. package/src/utils/parser.ts +166 -0
  86. package/dist/chunk-3OXCZ5DJ.js.map +0 -1
  87. package/dist/chunk-5JZNFPUP.js +0 -309
  88. package/dist/chunk-5JZNFPUP.js.map +0 -1
  89. package/dist/chunk-67C6RBGQ.cjs.map +0 -1
  90. package/dist/chunk-ADC5UNZ5.cjs +0 -1227
  91. package/dist/chunk-ADC5UNZ5.cjs.map +0 -1
  92. package/dist/chunk-HMLY7DHA.js +0 -16
  93. package/dist/chunk-HMLY7DHA.js.map +0 -1
  94. package/dist/chunk-JKZG2IJR.js +0 -283
  95. package/dist/chunk-JKZG2IJR.js.map +0 -1
  96. package/dist/chunk-LM2YQC3T.cjs.map +0 -1
  97. package/dist/chunk-PZT4CTBV.cjs +0 -299
  98. package/dist/chunk-PZT4CTBV.cjs.map +0 -1
  99. package/dist/chunk-SA2GZKXS.js +0 -596
  100. package/dist/chunk-SA2GZKXS.js.map +0 -1
  101. package/dist/chunk-XCPFG6DO.cjs +0 -66
  102. package/dist/chunk-XCPFG6DO.cjs.map +0 -1
  103. package/dist/chunk-YTSNYMHW.cjs +0 -320
  104. package/dist/chunk-YTSNYMHW.cjs.map +0 -1
  105. package/schema.json +0 -86
  106. package/src/utils/cache.ts +0 -35
  107. package/src/utils/getParser.ts +0 -17
package/README.md CHANGED
@@ -13,10 +13,6 @@
13
13
  [![Coverage][coverage-src]][coverage-href]
14
14
  [![License][license-src]][license-href]
15
15
 
16
- <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
17
- <!-- ALL-CONTRIBUTORS-BADGE:END -->
18
- </p>
19
-
20
16
  <h4>
21
17
  <a href="https://codesandbox.io/s/github/kubb-labs/kubb/tree/alpha/examples/typescript" target="_blank">View Demo</a>
22
18
  <span> · </span>
@@ -28,6 +24,19 @@
28
24
  </h4>
29
25
  </div>
30
26
 
27
+ ## Supporting Kubb
28
+
29
+ Kubb uses an MIT-licensed open source project with its ongoing development made possible entirely by the support of Sponsors. If you would like to become a sponsor, please consider:
30
+
31
+ - [Become a Sponsor on GitHub](https://github.com/sponsors/stijnvanhulle)
32
+
33
+ <p align="center">
34
+ <a href="https://github.com/sponsors/stijnvanhulle">
35
+ <img src="https://raw.githubusercontent.com/stijnvanhulle/sponsors/main/sponsors.svg" alt="My sponsors" />
36
+ </a>
37
+ </p>
38
+
39
+
31
40
  <!-- Badges -->
32
41
 
33
42
  [npm-version-src]: https://img.shields.io/npm/v/@kubb/core?flat&colorA=18181B&colorB=f58517
@@ -1,19 +1,8 @@
1
- import PQueue from 'p-queue';
2
1
  import { write, read } from '@kubb/fs';
3
2
  import * as KubbFile from '@kubb/fs/types';
4
- import { BaseName, File, UUID } from '@kubb/fs/src/types.ts';
3
+ import { ResolvedFile } from '@kubb/fs/types';
5
4
  import { PossiblePromise, GreaterThan } from '@kubb/types';
6
- import { DirectoryTreeOptions } from 'directory-tree';
7
- import { E as EventEmitter, L as Logger } from './logger-DChjnJMn.cjs';
8
-
9
- type BarrelManagerOptions = {
10
- treeNode?: DirectoryTreeOptions;
11
- isTypeOnly?: boolean;
12
- /**
13
- * Add .ts or .js
14
- */
15
- extName?: KubbFile.Extname;
16
- };
5
+ import { E as EventEmitter, L as Logger } from './logger-DvbHXjIO.cjs';
17
6
 
18
7
  type RequiredPluginLifecycle = Required<PluginLifecycle>;
19
8
  /**
@@ -23,6 +12,7 @@ type RequiredPluginLifecycle = Required<PluginLifecycle>;
23
12
  type Argument0<H extends keyof PluginLifecycle> = Parameters<RequiredPluginLifecycle[H]>[0];
24
13
  type Strategy = 'hookFirst' | 'hookForPlugin' | 'hookParallel' | 'hookReduceArg0' | 'hookSeq';
25
14
  type Executer<H extends PluginLifecycleHooks = PluginLifecycleHooks> = {
15
+ message: string;
26
16
  strategy: Strategy;
27
17
  hookName: H;
28
18
  plugin: Plugin;
@@ -34,15 +24,11 @@ type SafeParseResult<H extends PluginLifecycleHooks, Result = ReturnType<ParseRe
34
24
  result: Result;
35
25
  plugin: Plugin;
36
26
  };
37
- type Options$1 = {
27
+ type Options = {
38
28
  logger: Logger;
39
- /**
40
- * Task for the FileManager
41
- */
42
- task: (file: ResolvedFile) => Promise<ResolvedFile>;
43
29
  };
44
30
  type Events = {
45
- execute: [executer: Executer];
31
+ executing: [executer: Executer];
46
32
  executed: [executer: Executer];
47
33
  error: [error: Error];
48
34
  };
@@ -55,14 +41,14 @@ type GetFileProps<TOptions = object> = {
55
41
  };
56
42
  declare class PluginManager {
57
43
  #private;
58
- readonly plugins: PluginWithLifeCycle[];
44
+ readonly plugins: Set<Plugin<PluginFactoryOptions<string, object, object, any, object>>>;
59
45
  readonly fileManager: FileManager;
60
46
  readonly events: EventEmitter<Events>;
61
47
  readonly config: Config;
62
48
  readonly executed: Array<Executer>;
63
49
  readonly logger: Logger;
64
- readonly queue: PQueue;
65
- constructor(config: Config, options: Options$1);
50
+ readonly options: Options;
51
+ constructor(config: Config, options: Options);
66
52
  getFile<TOptions = object>({ name, mode, extName, pluginKey, options }: GetFileProps<TOptions>): KubbFile.File<{
67
53
  pluginKey: Plugin['key'];
68
54
  }>;
@@ -75,69 +61,69 @@ declare class PluginManager {
75
61
  /**
76
62
  * Run a specific hookName for plugin x.
77
63
  */
78
- hookForPlugin<H extends PluginLifecycleHooks>({ pluginKey, hookName, parameters, }: {
64
+ hookForPlugin<H extends PluginLifecycleHooks>({ pluginKey, hookName, parameters, message, }: {
79
65
  pluginKey: Plugin['key'];
80
66
  hookName: H;
81
67
  parameters: PluginParameter<H>;
82
- }): Promise<Array<ReturnType<ParseResult<H>> | null>> | null;
68
+ message: string;
69
+ }): Promise<Array<ReturnType<ParseResult<H>> | null>>;
83
70
  /**
84
71
  * Run a specific hookName for plugin x.
85
72
  */
86
- hookForPluginSync<H extends PluginLifecycleHooks>({ pluginKey, hookName, parameters, }: {
73
+ hookForPluginSync<H extends PluginLifecycleHooks>({ pluginKey, hookName, parameters, message, }: {
87
74
  pluginKey: Plugin['key'];
88
75
  hookName: H;
89
76
  parameters: PluginParameter<H>;
77
+ message: string;
90
78
  }): Array<ReturnType<ParseResult<H>>> | null;
91
79
  /**
92
80
  * First non-null result stops and will return it's value.
93
81
  */
94
- hookFirst<H extends PluginLifecycleHooks>({ hookName, parameters, skipped, }: {
82
+ hookFirst<H extends PluginLifecycleHooks>({ hookName, parameters, skipped, message, }: {
95
83
  hookName: H;
96
84
  parameters: PluginParameter<H>;
97
85
  skipped?: ReadonlySet<Plugin> | null;
86
+ message: string;
98
87
  }): Promise<SafeParseResult<H>>;
99
88
  /**
100
89
  * First non-null result stops and will return it's value.
101
90
  */
102
- hookFirstSync<H extends PluginLifecycleHooks>({ hookName, parameters, skipped, }: {
91
+ hookFirstSync<H extends PluginLifecycleHooks>({ hookName, parameters, skipped, message, }: {
103
92
  hookName: H;
104
93
  parameters: PluginParameter<H>;
105
94
  skipped?: ReadonlySet<Plugin> | null;
95
+ message: string;
106
96
  }): SafeParseResult<H>;
107
97
  /**
108
98
  * Run all plugins in parallel(order will be based on `this.plugin` and if `pre` or `post` is set).
109
99
  */
110
- hookParallel<H extends PluginLifecycleHooks, TOuput = void>({ hookName, parameters, }: {
100
+ hookParallel<H extends PluginLifecycleHooks, TOuput = void>({ hookName, parameters, message, }: {
111
101
  hookName: H;
112
102
  parameters?: Parameters<RequiredPluginLifecycle[H]> | undefined;
103
+ message: string;
113
104
  }): Promise<Awaited<TOuput>[]>;
114
105
  /**
115
106
  * Chain all plugins, `reduce` can be passed through to handle every returned value. The return value of the first plugin will be used as the first parameter for the plugin after that.
116
107
  */
117
- hookReduceArg0<H extends PluginLifecycleHooks>({ hookName, parameters, reduce, }: {
108
+ hookReduceArg0<H extends PluginLifecycleHooks>({ hookName, parameters, reduce, message, }: {
118
109
  hookName: H;
119
110
  parameters: PluginParameter<H>;
120
111
  reduce: (reduction: Argument0<H>, result: ReturnType<ParseResult<H>>, plugin: Plugin) => PossiblePromise<Argument0<H> | null>;
112
+ message: string;
121
113
  }): Promise<Argument0<H>>;
122
114
  /**
123
115
  * Chains plugins
124
116
  */
125
- hookSeq<H extends PluginLifecycleHooks>({ hookName, parameters }: {
117
+ hookSeq<H extends PluginLifecycleHooks>({ hookName, parameters, message, }: {
126
118
  hookName: H;
127
119
  parameters?: PluginParameter<H>;
120
+ message: string;
128
121
  }): Promise<void>;
129
122
  getPluginsByKey(hookName: keyof PluginLifecycle, pluginKey: Plugin['key']): Plugin[];
130
123
  static getDependedPlugins<T1 extends PluginFactoryOptions, T2 extends PluginFactoryOptions = never, T3 extends PluginFactoryOptions = never, TOutput = T3 extends never ? (T2 extends never ? [T1: Plugin<T1>] : [T1: Plugin<T1>, T2: Plugin<T2>]) : [T1: Plugin<T1>, T2: Plugin<T2>, T3: Plugin<T3>]>(plugins: Array<Plugin>, dependedPluginNames: string | string[]): TOutput;
131
124
  static get hooks(): readonly ["buildStart", "resolvePath", "resolveName", "buildEnd"];
132
125
  }
133
126
 
134
- interface Cache<TStore extends object = object> {
135
- delete(id: keyof TStore): boolean;
136
- get(id: keyof TStore): TStore[keyof TStore] | null;
137
- has(id: keyof TStore): boolean;
138
- set(id: keyof TStore, value: unknown): void;
139
- }
140
-
141
127
  /**
142
128
  * Config used in `kubb.config.js`
143
129
  *
@@ -160,13 +146,13 @@ type UserConfig = Omit<Config, 'root' | 'plugins'> & {
160
146
  };
161
147
  type InputPath = {
162
148
  /**
163
- * Path to be used as the input. This can be an absolute path or a path relative to the `root`.
149
+ * Define your Swagger/OpenAPI file. This can be an absolute path or a path relative to the `root`.
164
150
  */
165
151
  path: string;
166
152
  };
167
153
  type InputData = {
168
154
  /**
169
- * `string` or `object` containing the data.
155
+ * `string` or `object` containing your Swagger/OpenAPI data.
170
156
  */
171
157
  data: string | unknown;
172
158
  };
@@ -180,33 +166,38 @@ type Config<TInput = Input> = {
180
166
  */
181
167
  name?: string;
182
168
  /**
183
- * Project root directory. Can be an absolute path, or a path relative from
184
- * the location of the config file itself.
169
+ * Project root directory. This can be an absolute path or a path relative to the location of your `kubb.config.ts` file.
185
170
  * @default process.cwd()
186
171
  */
187
172
  root: string;
173
+ /**
174
+ * You can use `input.path` or `input.data` depending on the needs you have.
175
+ */
188
176
  input: TInput;
189
177
  output: {
190
178
  /**
191
- * Path to be used to export all generated files.
192
- * This can be an absolute path, or a path relative based of the defined `root` option.
179
+ * The path where all generated files will be exported. This can be an absolute path or a path relative to the specified root option.
193
180
  */
194
181
  path: string;
195
182
  /**
196
- * Clean output directory before each build.
183
+ * Clean the output directory before each build.
197
184
  */
198
185
  clean?: boolean;
199
186
  /**
200
- * Write files to the fileSystem
201
- * This is being used for the playground.
187
+ * Save files to the file system.
202
188
  * @default true
203
189
  */
204
190
  write?: boolean;
191
+ /**
192
+ * Define what needs to exported, here you can also disable the export of barrel files.
193
+ * @default `'barrelNamed'`
194
+ */
195
+ exportType?: 'barrel' | 'barrelNamed' | false;
205
196
  };
206
197
  /**
207
- * Array of Kubb plugins to use.
208
- * The plugin/package can forsee some options that you need to pass through.
209
- * Sometimes a plugin is depended on another plugin, if that's the case you will get an error back from the plugin you installed.
198
+ * An array of Kubb plugins that will be used in the generation.
199
+ * Each plugin may include additional configurable options(defined in the plugin itself).
200
+ * If a plugin depends on another plugin, an error will be returned if the required dependency is missing. See pre for more details.
210
201
  */
211
202
  plugins?: Array<Plugin>;
212
203
  /**
@@ -266,7 +257,7 @@ type UserPlugin<TOptions extends PluginFactoryOptions = PluginFactoryOptions> =
266
257
  options: TOptions['resolvedOptions'];
267
258
  /**
268
259
  * Specifies the preceding plugins for the current plugin. You can pass an array of preceding plugin names, and the current plugin will be executed after these plugins.
269
- * Can be used to validate depended plugins.
260
+ * Can be used to validate dependent plugins.
270
261
  */
271
262
  pre?: Array<string>;
272
263
  /**
@@ -293,7 +284,7 @@ type Plugin<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
293
284
  key: TOptions['key'];
294
285
  /**
295
286
  * Specifies the preceding plugins for the current plugin. You can pass an array of preceding plugin names, and the current plugin will be executed after these plugins.
296
- * Can be used to validate depended plugins.
287
+ * Can be used to validate dependent plugins.
297
288
  */
298
289
  pre?: Array<string>;
299
290
  /**
@@ -360,10 +351,9 @@ type ResolveNameParams = {
360
351
  };
361
352
  type PluginContext<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
362
353
  config: Config;
363
- cache: Cache<PluginCache>;
364
354
  fileManager: FileManager;
365
355
  pluginManager: PluginManager;
366
- addFile: (...file: Array<KubbFile.File>) => Promise<Array<KubbFile.File>>;
356
+ addFile: (...file: Array<KubbFile.File>) => Promise<Array<KubbFile.ResolvedFile>>;
367
357
  resolvePath: (params: ResolvePathParams<TOptions['resolvePathOptions']>) => KubbFile.OptionalPath;
368
358
  resolveName: (params: ResolveNameParams) => string;
369
359
  logger: Logger;
@@ -376,62 +366,112 @@ type PluginContext<TOptions extends PluginFactoryOptions = PluginFactoryOptions>
376
366
  */
377
367
  plugin: Plugin<TOptions>;
378
368
  };
379
-
380
- type ResolvedFile<TMeta extends FileMetaBase = FileMetaBase, TBaseName extends BaseName = BaseName> = File<TMeta, TBaseName> & {
369
+ type Output = {
370
+ /**
371
+ * Output to save the generated files.
372
+ */
373
+ path: string;
374
+ /**
375
+ * Name to be used for the `export * as {{exportAs}} from './'`
376
+ */
377
+ exportAs?: string;
381
378
  /**
382
- * @default crypto.randomUUID()
379
+ * Add an extension to the generated imports and exports, default it will not use an extension
383
380
  */
384
- id: UUID;
381
+ extName?: KubbFile.Extname;
382
+ /**
383
+ * Define what needs to exported, here you can also disable the export of barrel files
384
+ * @default `'barrelNamed'`
385
+ */
386
+ exportType?: 'barrel' | 'barrelNamed' | false;
387
+ /**
388
+ * Add a banner text in the beginning of every file
389
+ */
390
+ banner?: string;
391
+ /**
392
+ * Add a footer text in the beginning of every file
393
+ */
394
+ footer?: string;
395
+ };
396
+
397
+ type BarrelData = {
398
+ file?: KubbFile.File;
385
399
  /**
386
- * Contains the first part of the baseName, generated based on baseName
387
- * @link https://nodejs.org/api/path.html#pathformatpathobject
400
+ * @deprecated use file instead
388
401
  */
402
+ type: KubbFile.Mode;
403
+ path: string;
389
404
  name: string;
390
405
  };
406
+ declare class TreeNode {
407
+ #private;
408
+ data: BarrelData;
409
+ parent?: TreeNode;
410
+ children: Array<TreeNode>;
411
+ constructor(data: BarrelData, parent?: TreeNode);
412
+ addChild(data: BarrelData): TreeNode;
413
+ get root(): TreeNode;
414
+ get leaves(): Array<TreeNode>;
415
+ forEach(callback: (treeNode: TreeNode) => void): this;
416
+ findDeep(predicate?: (value: TreeNode, index: number, obj: TreeNode[]) => boolean): TreeNode | undefined;
417
+ forEachDeep(callback: (treeNode: TreeNode) => void): void;
418
+ filterDeep(callback: (treeNode: TreeNode) => boolean): Array<TreeNode>;
419
+ mapDeep<T>(callback: (treeNode: TreeNode) => T): Array<T>;
420
+ static build(files: KubbFile.File[], root?: string): TreeNode | null;
421
+ }
422
+ type DirectoryTree = {
423
+ name: string;
424
+ path: string;
425
+ file?: KubbFile.File;
426
+ children: Array<DirectoryTree>;
427
+ };
428
+
391
429
  type FileMetaBase = {
392
430
  pluginKey?: Plugin['key'];
393
431
  };
394
- type FileWithMeta<TMeta extends FileMetaBase = FileMetaBase> = KubbFile.File<TMeta>;
395
- type AddResult<T extends Array<FileWithMeta>> = Promise<Awaited<GreaterThan<T['length'], 1> extends true ? Promise<ResolvedFile[]> : Promise<ResolvedFile>>>;
432
+ type AddResult<T extends Array<KubbFile.File>> = Promise<Awaited<GreaterThan<T['length'], 1> extends true ? Promise<ResolvedFile[]> : Promise<ResolvedFile>>>;
396
433
  type AddIndexesProps = {
397
434
  /**
398
435
  * Root based on root and output.path specified in the config
399
436
  */
400
437
  root: string;
438
+ files: KubbFile.File[];
401
439
  /**
402
440
  * Output for plugin
403
441
  */
404
442
  output: {
405
443
  path: string;
406
- exportAs?: string;
407
444
  extName?: KubbFile.Extname;
445
+ exportAs?: string;
408
446
  exportType?: 'barrel' | 'barrelNamed' | false;
409
447
  };
410
- logger: Logger;
411
- options?: BarrelManagerOptions;
412
- meta?: FileWithMeta['meta'];
413
- };
414
- type Options = {
415
- queue?: PQueue;
416
- task?: (file: ResolvedFile) => Promise<ResolvedFile>;
448
+ group?: {
449
+ output: string;
450
+ exportAs: string;
451
+ };
452
+ logger?: Logger;
453
+ meta?: FileMetaBase;
417
454
  };
418
455
  declare class FileManager {
419
456
  #private;
420
- constructor({ task, queue }?: Options);
421
- get files(): Array<FileWithMeta>;
422
- get isExecuting(): boolean;
423
- add<T extends Array<FileWithMeta> = Array<FileWithMeta>>(...files: T): AddResult<T>;
424
- addIndexes({ root, output, meta, logger, options }: AddIndexesProps): Promise<void>;
425
- getCacheByUUID(UUID: KubbFile.UUID): FileWithMeta | undefined;
426
- get(path: KubbFile.Path): Array<FileWithMeta> | undefined;
427
- remove(path: KubbFile.Path): void;
428
- write(...params: Parameters<typeof write>): Promise<string | undefined>;
429
- read(...params: Parameters<typeof read>): Promise<string>;
430
- static getSource<TMeta extends FileMetaBase = FileMetaBase>(file: FileWithMeta<TMeta>): Promise<string>;
431
- static combineFiles<TMeta extends FileMetaBase = FileMetaBase>(files: Array<FileWithMeta<TMeta> | null>): Array<FileWithMeta<TMeta>>;
457
+ constructor();
458
+ get files(): Array<KubbFile.ResolvedFile>;
459
+ get orderedFiles(): Array<KubbFile.ResolvedFile>;
460
+ get groupedFiles(): DirectoryTree | null;
461
+ get treeNode(): TreeNode | null;
462
+ add<T extends Array<KubbFile.File> = Array<KubbFile.File>>(...files: T): AddResult<T>;
463
+ clear(): void;
464
+ getCacheById(id: string): KubbFile.File | undefined;
465
+ getByPath(path: KubbFile.Path): KubbFile.ResolvedFile | undefined;
466
+ deleteByPath(path: KubbFile.Path): void;
467
+ getBarrelFiles({ files, meta, root, output, logger }: AddIndexesProps): Promise<KubbFile.File[]>;
468
+ write(...params: Parameters<typeof write>): ReturnType<typeof write>;
469
+ read(...params: Parameters<typeof read>): ReturnType<typeof read>;
432
470
  static getMode(path: string | undefined | null): KubbFile.Mode;
433
- static get extensions(): Array<KubbFile.Extname>;
434
- static isJavascript(baseName: string): boolean;
435
471
  }
472
+ type GetSourceOptions = {
473
+ logger?: Logger;
474
+ };
475
+ declare function getSource<TMeta extends FileMetaBase = FileMetaBase>(file: ResolvedFile<TMeta>, { logger }?: GetSourceOptions): Promise<string>;
436
476
 
437
- export { type Config as C, FileManager as F, type GetPluginFactoryOptions as G, type InputPath as I, type PluginContext as P, type ResolvePathParams as R, type UserConfig as U, PluginManager as a, type PluginFactoryOptions as b, type UserPluginWithLifeCycle as c, type FileMetaBase as d, type InputData as e, type PluginKey as f, type UserPlugin as g, type Plugin as h, type PluginWithLifeCycle as i, type PluginLifecycle as j, type PluginLifecycleHooks as k, type PluginParameter as l, type PluginCache as m, type ResolveNameParams as n };
477
+ export { type Config as C, FileManager as F, type GetPluginFactoryOptions as G, type InputPath as I, type Output as O, type PluginContext as P, type ResolvePathParams as R, type UserConfig as U, PluginManager as a, type PluginFactoryOptions as b, type UserPluginWithLifeCycle as c, type FileMetaBase as d, type InputData as e, type PluginKey as f, getSource as g, type UserPlugin as h, type Plugin as i, type PluginWithLifeCycle as j, type PluginLifecycle as k, type PluginLifecycleHooks as l, type PluginParameter as m, type PluginCache as n, type ResolveNameParams as o };