@kubb/core 2.0.0-beta.1 → 2.0.0-beta.10

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 (44) hide show
  1. package/dist/index.cjs +292 -240
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +61 -61
  4. package/dist/index.d.ts +61 -61
  5. package/dist/index.js +289 -236
  6. package/dist/index.js.map +1 -1
  7. package/dist/transformers.cjs +222 -0
  8. package/dist/transformers.cjs.map +1 -0
  9. package/dist/transformers.d.cts +55 -0
  10. package/dist/transformers.d.ts +55 -0
  11. package/dist/transformers.js +207 -0
  12. package/dist/transformers.js.map +1 -0
  13. package/dist/utils.cjs +302 -274
  14. package/dist/utils.cjs.map +1 -1
  15. package/dist/utils.d.cts +515 -67
  16. package/dist/utils.d.ts +515 -67
  17. package/dist/utils.js +303 -274
  18. package/dist/utils.js.map +1 -1
  19. package/package.json +14 -9
  20. package/src/BarrelManager.ts +55 -65
  21. package/src/FileManager.ts +93 -24
  22. package/src/PluginManager.ts +35 -17
  23. package/src/build.ts +1 -11
  24. package/src/index.ts +0 -1
  25. package/src/plugin.ts +4 -4
  26. package/src/transformers/casing.ts +9 -0
  27. package/src/transformers/createJSDocBlockText.ts +9 -0
  28. package/src/transformers/index.ts +36 -0
  29. package/src/transformers/trim.ts +7 -0
  30. package/src/types.ts +22 -41
  31. package/src/utils/FunctionParams.ts +3 -2
  32. package/src/utils/TreeNode.ts +6 -3
  33. package/src/utils/URLPath.ts +5 -5
  34. package/src/utils/index.ts +0 -1
  35. package/src/SchemaGenerator.ts +0 -8
  36. package/src/utils/transformers/createJSDocBlockText.ts +0 -15
  37. package/src/utils/transformers/index.ts +0 -22
  38. package/src/utils/transformers/trim.ts +0 -3
  39. /package/src/{utils/transformers → transformers}/combineCodes.ts +0 -0
  40. /package/src/{utils/transformers → transformers}/escape.ts +0 -0
  41. /package/src/{utils/transformers → transformers}/indent.ts +0 -0
  42. /package/src/{utils/transformers → transformers}/nameSorter.ts +0 -0
  43. /package/src/{utils/transformers → transformers}/searchAndReplace.ts +0 -0
  44. /package/src/{utils/transformers → transformers}/transformReservedWord.ts +0 -0
package/dist/utils.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var fs2 = require('fs-extra');
4
- var changeCase = require('change-case');
5
4
  var naturalOrderby = require('natural-orderby');
5
+ var changeCase = require('change-case');
6
6
  var pc2 = require('picocolors');
7
7
  var crypto = require('crypto');
8
8
  var perf_hooks = require('perf_hooks');
@@ -105,6 +105,207 @@ function createPluginCache(Store = /* @__PURE__ */ Object.create(null)) {
105
105
  async function clean(path2) {
106
106
  return fs2.remove(path2);
107
107
  }
108
+ function camelCase(text) {
109
+ return changeCase.camelCase(text, { delimiter: "", stripRegexp: /[^A-Z0-9$]/gi, transform: changeCase.camelCaseTransformMerge });
110
+ }
111
+ function pascalCase(text) {
112
+ return changeCase.pascalCase(text, { delimiter: "", stripRegexp: /[^A-Z0-9$]/gi, transform: changeCase.pascalCaseTransformMerge });
113
+ }
114
+
115
+ // src/transformers/combineCodes.ts
116
+ function combineCodes(codes) {
117
+ return codes.join("\n");
118
+ }
119
+
120
+ // src/transformers/createJSDocBlockText.ts
121
+ function createJSDocBlockText({ comments }) {
122
+ const filteredComments = comments.filter(Boolean);
123
+ if (!filteredComments.length) {
124
+ return "";
125
+ }
126
+ return `/**
127
+ * ${filteredComments.join("\n * ")}
128
+ */`;
129
+ }
130
+
131
+ // src/transformers/escape.ts
132
+ function escape(text) {
133
+ return text ? text.replaceAll("`", "\\`") : "";
134
+ }
135
+ function jsStringEscape(input) {
136
+ return `${input}`.replace(/["'\\\n\r\u2028\u2029]/g, (character) => {
137
+ switch (character) {
138
+ case '"':
139
+ case "'":
140
+ case "\\":
141
+ return "\\" + character;
142
+ case "\n":
143
+ return "\\n";
144
+ case "\r":
145
+ return "\\r";
146
+ case "\u2028":
147
+ return "\\u2028";
148
+ case "\u2029":
149
+ return "\\u2029";
150
+ default:
151
+ return "";
152
+ }
153
+ });
154
+ }
155
+
156
+ // src/transformers/indent.ts
157
+ function createIndent(size) {
158
+ return Array.from({ length: size + 1 }).join(" ");
159
+ }
160
+
161
+ // src/transformers/nameSorter.ts
162
+ function nameSorter(a, b) {
163
+ if (a.name < b.name) {
164
+ return -1;
165
+ }
166
+ if (a.name > b.name) {
167
+ return 1;
168
+ }
169
+ return 0;
170
+ }
171
+
172
+ // src/transformers/searchAndReplace.ts
173
+ function searchAndReplace(options) {
174
+ const { text, replaceBy, prefix = "", key } = options;
175
+ const searchValues = options.searchValues?.(prefix, key) || [
176
+ `${prefix}["${key}"]`,
177
+ `${prefix}['${key}']`,
178
+ `${prefix}[\`${key}\`]`,
179
+ `${prefix}"${key}"`,
180
+ `${prefix}'${key}'`,
181
+ `${prefix}\`${key}\``,
182
+ new RegExp(`${prefix}${key}`, "g")
183
+ ];
184
+ return searchValues.reduce((prev, searchValue) => {
185
+ return prev.toString().replaceAll(searchValue, replaceBy);
186
+ }, text);
187
+ }
188
+
189
+ // src/transformers/transformReservedWord.ts
190
+ var reservedWords = [
191
+ "abstract",
192
+ "arguments",
193
+ "boolean",
194
+ "break",
195
+ "byte",
196
+ "case",
197
+ "catch",
198
+ "char",
199
+ "class",
200
+ "const",
201
+ "continue",
202
+ "debugger",
203
+ "default",
204
+ "delete",
205
+ "do",
206
+ "double",
207
+ "else",
208
+ "enum",
209
+ "eval",
210
+ "export",
211
+ "extends",
212
+ "false",
213
+ "final",
214
+ "finally",
215
+ "float",
216
+ "for",
217
+ "function",
218
+ "goto",
219
+ "if",
220
+ "implements",
221
+ "import",
222
+ "in",
223
+ "instanceof",
224
+ "int",
225
+ "interface",
226
+ "let",
227
+ "long",
228
+ "native",
229
+ "new",
230
+ "null",
231
+ "package",
232
+ "private",
233
+ "protected",
234
+ "public",
235
+ "return",
236
+ "short",
237
+ "static",
238
+ "super",
239
+ "switch",
240
+ "synchronized",
241
+ "this",
242
+ "throw",
243
+ "throws",
244
+ "transient",
245
+ "true",
246
+ "try",
247
+ "typeof",
248
+ "var",
249
+ "void",
250
+ "volatile",
251
+ "while",
252
+ "with",
253
+ "yield",
254
+ "Array",
255
+ "Date",
256
+ "eval",
257
+ "function",
258
+ "hasOwnProperty",
259
+ "Infinity",
260
+ "isFinite",
261
+ "isNaN",
262
+ "isPrototypeOf",
263
+ "length",
264
+ "Math",
265
+ "name",
266
+ "NaN",
267
+ "Number",
268
+ "Object",
269
+ "prototype",
270
+ "String",
271
+ "toString",
272
+ "undefined",
273
+ "valueOf"
274
+ ];
275
+ function transformReservedWord(word) {
276
+ if (word && reservedWords.includes(word) || word?.match(/^\d/)) {
277
+ return `_${word}`;
278
+ }
279
+ return word;
280
+ }
281
+
282
+ // src/transformers/trim.ts
283
+ function trim(text) {
284
+ return text.replaceAll(/\n/g, "").trim();
285
+ }
286
+ function trimExtName(text) {
287
+ return text.replace(/\.[^/.]+$/, "");
288
+ }
289
+
290
+ // src/transformers/index.ts
291
+ var transformers_default = {
292
+ combineCodes,
293
+ escape,
294
+ jsStringEscape,
295
+ createIndent,
296
+ transformReservedWord,
297
+ nameSorter,
298
+ searchAndReplace,
299
+ trim,
300
+ trimExtName,
301
+ JSDoc: {
302
+ createJSDocBlockText
303
+ },
304
+ camelCase,
305
+ pascalCase
306
+ };
307
+
308
+ // src/utils/FunctionParams.ts
108
309
  var FunctionParams = class {
109
310
  constructor(type) {
110
311
  this.items = [];
@@ -129,7 +330,7 @@ var FunctionParams = class {
129
330
  acc.push(`${type}${rest.default ? ` = ${rest.default}` : ""}`);
130
331
  return acc;
131
332
  }
132
- const parameterName = name.startsWith("{") ? name : changeCase.camelCase(name, { delimiter: "", transform: changeCase.camelCaseTransformMerge });
333
+ const parameterName = name.startsWith("{") ? name : transformers_default.camelCase(name);
133
334
  if (type) {
134
335
  if (required) {
135
336
  acc.push(`${parameterName}: ${type}${rest.default ? ` = ${rest.default}` : ""}`);
@@ -231,8 +432,8 @@ var Queue = class {
231
432
  __privateSet(this, _debug, debug);
232
433
  }
233
434
  run(job, options = { controller: new AbortController(), name: crypto__default.default.randomUUID(), description: "" }) {
234
- return new Promise((resolve2, reject) => {
235
- const item = { reject, resolve: resolve2, job, name: options.name, description: options.description || options.name };
435
+ return new Promise((resolve3, reject) => {
436
+ const item = { reject, resolve: resolve3, job, name: options.name, description: options.description || options.name };
236
437
  options.controller?.signal.addEventListener("abort", () => {
237
438
  __privateSet(this, _queue, __privateGet(this, _queue).filter((queueItem) => queueItem.name === item.name));
238
439
  reject("Aborted");
@@ -242,8 +443,8 @@ var Queue = class {
242
443
  });
243
444
  }
244
445
  runSync(job, options = { controller: new AbortController(), name: crypto__default.default.randomUUID(), description: "" }) {
245
- new Promise((resolve2, reject) => {
246
- const item = { reject, resolve: resolve2, job, name: options.name, description: options.description || options.name };
446
+ new Promise((resolve3, reject) => {
447
+ const item = { reject, resolve: resolve3, job, name: options.name, description: options.description || options.name };
247
448
  options.controller?.signal.addEventListener("abort", () => {
248
449
  __privateSet(this, _queue, __privateGet(this, _queue).filter((queueItem) => queueItem.name === item.name));
249
450
  });
@@ -270,13 +471,13 @@ work_fn = function() {
270
471
  __privateWrapper(this, _workerCount)._++;
271
472
  let entry;
272
473
  while (entry = __privateGet(this, _queue).shift()) {
273
- const { reject, resolve: resolve2, job, name, description } = entry;
474
+ const { reject, resolve: resolve3, job, name, description } = entry;
274
475
  if (__privateGet(this, _debug)) {
275
476
  perf_hooks.performance.mark(name + "_start");
276
477
  }
277
478
  job().then((result) => {
278
479
  this.eventEmitter.emit("jobDone", result);
279
- resolve2(result);
480
+ resolve3(result);
280
481
  if (__privateGet(this, _debug)) {
281
482
  perf_hooks.performance.mark(name + "_stop");
282
483
  perf_hooks.performance.measure(description, name + "_start", name + "_stop");
@@ -415,204 +616,12 @@ var throttle = (fn, delay) => {
415
616
 
416
617
  // src/utils/timeout.ts
417
618
  async function timeout(ms) {
418
- return new Promise((resolve2) => {
619
+ return new Promise((resolve3) => {
419
620
  setTimeout(() => {
420
- resolve2(true);
621
+ resolve3(true);
421
622
  }, ms);
422
623
  });
423
624
  }
424
-
425
- // src/utils/transformers/combineCodes.ts
426
- function combineCodes(codes) {
427
- return codes.join("\n");
428
- }
429
-
430
- // src/utils/transformers/createJSDocBlockText.ts
431
- function createJSDocBlockText({ comments, newLine }) {
432
- const filteredComments = comments.filter(Boolean);
433
- if (!filteredComments.length) {
434
- return "";
435
- }
436
- const source = `/**
437
- * ${filteredComments.join("\n * ")}
438
- */`;
439
- if (newLine) {
440
- return `${source}
441
- `;
442
- }
443
- return source;
444
- }
445
-
446
- // src/utils/transformers/escape.ts
447
- function escape(text) {
448
- return text ? text.replaceAll("`", "\\`") : "";
449
- }
450
- function jsStringEscape(input) {
451
- return `${input}`.replace(/["'\\\n\r\u2028\u2029]/g, (character) => {
452
- switch (character) {
453
- case '"':
454
- case "'":
455
- case "\\":
456
- return "\\" + character;
457
- case "\n":
458
- return "\\n";
459
- case "\r":
460
- return "\\r";
461
- case "\u2028":
462
- return "\\u2028";
463
- case "\u2029":
464
- return "\\u2029";
465
- default:
466
- return "";
467
- }
468
- });
469
- }
470
-
471
- // src/utils/transformers/indent.ts
472
- function createIndent(size) {
473
- return Array.from({ length: size + 1 }).join(" ");
474
- }
475
-
476
- // src/utils/transformers/nameSorter.ts
477
- function nameSorter(a, b) {
478
- if (a.name < b.name) {
479
- return -1;
480
- }
481
- if (a.name > b.name) {
482
- return 1;
483
- }
484
- return 0;
485
- }
486
-
487
- // src/utils/transformers/searchAndReplace.ts
488
- function searchAndReplace(options) {
489
- const { text, replaceBy, prefix = "", key } = options;
490
- const searchValues = options.searchValues?.(prefix, key) || [
491
- `${prefix}["${key}"]`,
492
- `${prefix}['${key}']`,
493
- `${prefix}[\`${key}\`]`,
494
- `${prefix}"${key}"`,
495
- `${prefix}'${key}'`,
496
- `${prefix}\`${key}\``,
497
- new RegExp(`${prefix}${key}`, "g")
498
- ];
499
- return searchValues.reduce((prev, searchValue) => {
500
- return prev.toString().replaceAll(searchValue, replaceBy);
501
- }, text);
502
- }
503
-
504
- // src/utils/transformers/transformReservedWord.ts
505
- var reservedWords = [
506
- "abstract",
507
- "arguments",
508
- "boolean",
509
- "break",
510
- "byte",
511
- "case",
512
- "catch",
513
- "char",
514
- "class",
515
- "const",
516
- "continue",
517
- "debugger",
518
- "default",
519
- "delete",
520
- "do",
521
- "double",
522
- "else",
523
- "enum",
524
- "eval",
525
- "export",
526
- "extends",
527
- "false",
528
- "final",
529
- "finally",
530
- "float",
531
- "for",
532
- "function",
533
- "goto",
534
- "if",
535
- "implements",
536
- "import",
537
- "in",
538
- "instanceof",
539
- "int",
540
- "interface",
541
- "let",
542
- "long",
543
- "native",
544
- "new",
545
- "null",
546
- "package",
547
- "private",
548
- "protected",
549
- "public",
550
- "return",
551
- "short",
552
- "static",
553
- "super",
554
- "switch",
555
- "synchronized",
556
- "this",
557
- "throw",
558
- "throws",
559
- "transient",
560
- "true",
561
- "try",
562
- "typeof",
563
- "var",
564
- "void",
565
- "volatile",
566
- "while",
567
- "with",
568
- "yield",
569
- "Array",
570
- "Date",
571
- "eval",
572
- "function",
573
- "hasOwnProperty",
574
- "Infinity",
575
- "isFinite",
576
- "isNaN",
577
- "isPrototypeOf",
578
- "length",
579
- "Math",
580
- "name",
581
- "NaN",
582
- "Number",
583
- "Object",
584
- "prototype",
585
- "String",
586
- "toString",
587
- "undefined",
588
- "valueOf"
589
- ];
590
- function transformReservedWord(word) {
591
- if (word && reservedWords.includes(word) || word?.match(/^\d/)) {
592
- return `_${word}`;
593
- }
594
- return word;
595
- }
596
-
597
- // src/utils/transformers/trim.ts
598
- function trim(text) {
599
- return text.replaceAll(/\n/g, "").trim();
600
- }
601
-
602
- // src/utils/transformers/index.ts
603
- var transformers = {
604
- combineCodes,
605
- escape,
606
- jsStringEscape,
607
- createIndent,
608
- transformReservedWord,
609
- nameSorter,
610
- searchAndReplace,
611
- trim,
612
- JSDoc: {
613
- createJSDocBlockText
614
- }
615
- };
616
625
  async function saveCreateDirectory(path2) {
617
626
  const passedPath = path.dirname(path.resolve(path2));
618
627
  await fs2__default.default.mkdir(passedPath, { recursive: true });
@@ -676,82 +685,71 @@ async function write(data, path2) {
676
685
  var _options;
677
686
  var BarrelManager = class {
678
687
  constructor(options = {}) {
679
- __privateAdd(this, _options, {});
688
+ __privateAdd(this, _options, void 0);
680
689
  __privateSet(this, _options, options);
681
690
  return this;
682
691
  }
683
- getIndexes(root, extName) {
684
- const { treeNode = {}, isTypeOnly, filter, map, output, includeExt } = __privateGet(this, _options);
685
- const extMapper = {
686
- ".ts": {
687
- extensions: /\.ts/,
688
- exclude: [/schemas/, /json/]
689
- },
690
- ".json": {
691
- extensions: /\.json/,
692
- exclude: []
693
- }
694
- };
695
- const tree = TreeNode.build(root, { ...extMapper[extName] || {}, ...treeNode });
692
+ getIndexes(pathToBuild) {
693
+ const { treeNode = {}, isTypeOnly, extName } = __privateGet(this, _options);
694
+ const tree = TreeNode.build(pathToBuild, treeNode);
696
695
  if (!tree) {
697
696
  return null;
698
697
  }
699
- const fileReducer = (files2, currentTree) => {
700
- if (!currentTree.children) {
698
+ const fileReducer = (files, treeNode2) => {
699
+ if (!treeNode2.children) {
701
700
  return [];
702
701
  }
703
- if (currentTree.children?.length > 1) {
704
- const indexPath = path__default.default.resolve(currentTree.data.path, "index.ts");
705
- const exports = currentTree.children.filter(Boolean).map((file) => {
706
- const importPath = file.data.type === "directory" ? `./${file.data.name}/index` : `./${file.data.name.replace(/\.[^.]*$/, "")}`;
707
- if (importPath.includes("index") && file.data.type === "file") {
702
+ if (treeNode2.children.length > 1) {
703
+ const indexPath = path__default.default.resolve(treeNode2.data.path, "index.ts");
704
+ const exports = treeNode2.children.filter(Boolean).map((file) => {
705
+ const importPath = file.data.type === "directory" ? `./${file.data.name}/index` : `./${transformers_default.trimExtName(file.data.name)}`;
706
+ if (importPath.endsWith("index") && file.data.type === "file") {
708
707
  return void 0;
709
708
  }
710
709
  return {
711
- path: includeExt ? `${importPath}${extName}` : importPath,
710
+ path: extName ? `${importPath}${extName}` : importPath,
712
711
  isTypeOnly
713
712
  };
714
713
  }).filter(Boolean);
715
- files2.push({
714
+ files.push({
716
715
  path: indexPath,
717
716
  baseName: "index.ts",
718
717
  source: "",
719
- exports: output ? exports?.filter((item) => {
720
- return item.path.endsWith(output.replace(/\.[^.]*$/, ""));
721
- }) : exports
718
+ exports,
719
+ meta: {
720
+ treeNode: treeNode2
721
+ }
722
722
  });
723
- } else {
724
- currentTree.children?.forEach((child) => {
725
- const indexPath = path__default.default.resolve(currentTree.data.path, "index.ts");
726
- const importPath = child.data.type === "directory" ? `./${child.data.name}/index` : `./${child.data.name.replace(/\.[^.]*$/, "")}`;
727
- const exports = [
728
- {
729
- path: includeExt ? `${importPath}${extName}` : importPath,
730
- isTypeOnly
731
- }
732
- ];
733
- files2.push({
734
- path: indexPath,
735
- baseName: "index.ts",
736
- source: "",
737
- exports: output ? exports?.filter((item) => {
738
- return item.path.endsWith(output.replace(/\.[^.]*$/, ""));
739
- }) : exports
740
- });
723
+ } else if (treeNode2.children.length === 1) {
724
+ const [treeNodeChild] = treeNode2.children;
725
+ const indexPath = path__default.default.resolve(treeNode2.data.path, "index.ts");
726
+ const importPath = treeNodeChild.data.type === "directory" ? `./${treeNodeChild.data.name}/index` : `./${transformers_default.trimExtName(treeNodeChild.data.name)}`;
727
+ const exports = [
728
+ {
729
+ path: extName ? `${importPath}${extName}` : importPath,
730
+ isTypeOnly
731
+ }
732
+ ];
733
+ files.push({
734
+ path: indexPath,
735
+ baseName: "index.ts",
736
+ source: "",
737
+ exports,
738
+ meta: {
739
+ treeNode: treeNode2
740
+ }
741
741
  });
742
742
  }
743
- currentTree.children.forEach((childItem) => {
744
- fileReducer(files2, childItem);
743
+ treeNode2.children.forEach((childItem) => {
744
+ fileReducer(files, childItem);
745
745
  });
746
- return files2;
746
+ return files;
747
747
  };
748
- const files = fileReducer([], tree).reverse();
749
- const filteredFiles = filter ? files.filter(filter) : files;
750
- return map ? filteredFiles.map(map) : filteredFiles;
748
+ return fileReducer([], tree).reverse();
751
749
  }
752
750
  };
753
751
  _options = new WeakMap();
754
- var _cache, _task, _isWriting, _timeout, _queue2, _validate, validate_fn, _add, add_fn, _addOrAppend, addOrAppend_fn;
752
+ var _cache, _task, _isWriting, _timeout, _queue2, _validate, _add, add_fn, _addOrAppend, addOrAppend_fn;
755
753
  var _FileManager = class _FileManager {
756
754
  constructor(options) {
757
755
  __privateAdd(this, _validate);
@@ -784,7 +782,6 @@ var _FileManager = class _FileManager {
784
782
  }
785
783
  async add(...files) {
786
784
  const promises = files.map((file) => {
787
- __privateMethod(this, _validate, validate_fn).call(this, file);
788
785
  if (file.override) {
789
786
  return __privateMethod(this, _add, add_fn).call(this, file);
790
787
  }
@@ -796,12 +793,37 @@ var _FileManager = class _FileManager {
796
793
  }
797
794
  return resolvedFiles[0];
798
795
  }
799
- async addIndexes({ root, extName = ".ts", meta, options = {} }) {
800
- const barrelManager = new BarrelManager(options);
801
- const files = barrelManager.getIndexes(root, extName);
796
+ async addIndexes({ root, output, meta, options = {} }) {
797
+ const { exportType = "barrel" } = output;
798
+ if (!exportType) {
799
+ return void 0;
800
+ }
801
+ const exportPath = output.path.startsWith("./") ? output.path : `./${output.path}`;
802
+ const barrelManager = new BarrelManager({ extName: output.extName, ...options });
803
+ const files = barrelManager.getIndexes(path.resolve(root, output.path));
802
804
  if (!files) {
803
805
  return void 0;
804
806
  }
807
+ const rootFile = {
808
+ path: path.resolve(root, "index.ts"),
809
+ baseName: "index.ts",
810
+ source: "",
811
+ exports: [
812
+ output.exportAs ? {
813
+ name: output.exportAs,
814
+ asAlias: true,
815
+ path: exportPath,
816
+ isTypeOnly: options.isTypeOnly
817
+ } : {
818
+ path: exportPath,
819
+ isTypeOnly: options.isTypeOnly
820
+ }
821
+ ]
822
+ };
823
+ await __privateMethod(this, _addOrAppend, addOrAppend_fn).call(this, {
824
+ ...rootFile,
825
+ meta: meta ? meta : rootFile.meta
826
+ });
805
827
  return await Promise.all(
806
828
  files.map((file) => {
807
829
  return __privateMethod(this, _addOrAppend, addOrAppend_fn).call(this, {
@@ -848,9 +870,22 @@ var _FileManager = class _FileManager {
848
870
  }
849
871
  const exports = file.exports ? combineExports(file.exports) : [];
850
872
  const imports = file.imports ? combineImports(file.imports, exports, file.source) : [];
851
- const importNodes = imports.map((item) => factory__namespace.createImportDeclaration({ name: item.name, path: item.path, isTypeOnly: item.isTypeOnly }));
873
+ const importNodes = imports.filter((item) => {
874
+ return item.path !== transformers_default.trimExtName(file.path);
875
+ }).map((item) => {
876
+ return factory__namespace.createImportDeclaration({
877
+ name: item.name,
878
+ path: item.root ? getRelativePath(item.root, item.path) : item.path,
879
+ isTypeOnly: item.isTypeOnly
880
+ });
881
+ });
852
882
  const exportNodes = exports.map(
853
- (item) => factory__namespace.createExportDeclaration({ name: item.name, path: item.path, isTypeOnly: item.isTypeOnly, asAlias: item.asAlias })
883
+ (item) => factory__namespace.createExportDeclaration({
884
+ name: item.name,
885
+ path: item.path,
886
+ isTypeOnly: item.isTypeOnly,
887
+ asAlias: item.asAlias
888
+ })
854
889
  );
855
890
  return [parser.print([...importNodes, ...exportNodes]), getEnvSource(file.source, file.env)].join("\n");
856
891
  }
@@ -901,18 +936,10 @@ _isWriting = new WeakMap();
901
936
  _timeout = new WeakMap();
902
937
  _queue2 = new WeakMap();
903
938
  _validate = new WeakSet();
904
- validate_fn = function(file) {
905
- if (!file.validate) {
906
- return;
907
- }
908
- if (!file.path.toLowerCase().endsWith(file.baseName.toLowerCase())) {
909
- throw new Error(`${file.path} should end with the baseName ${file.baseName}`);
910
- }
911
- };
912
939
  _add = new WeakSet();
913
940
  add_fn = async function(file) {
914
941
  const controller = new AbortController();
915
- const resolvedFile = { id: crypto__default.default.randomUUID(), ...file };
942
+ const resolvedFile = { id: crypto__default.default.randomUUID(), name: transformers_default.trimExtName(file.baseName), ...file };
916
943
  __privateGet(this, _cache).set(resolvedFile.path, [{ cancel: () => controller.abort(), ...resolvedFile }]);
917
944
  if (__privateGet(this, _queue2)) {
918
945
  await __privateGet(this, _queue2).run(
@@ -985,7 +1012,7 @@ function combineImports(imports, exports, source) {
985
1012
  return checker(importName) || exports.some(({ name: name2 }) => Array.isArray(name2) ? name2.some(checker) : checker(name2));
986
1013
  };
987
1014
  if (Array.isArray(name)) {
988
- name = name.filter((item) => hasImportInSource(item));
1015
+ name = name.filter((item) => typeof item === "string" ? hasImportInSource(item) : hasImportInSource(item.propertyName));
989
1016
  }
990
1017
  const prevByPath = prev.findLast((imp) => imp.path === curr.path && imp.isTypeOnly === curr.isTypeOnly);
991
1018
  const uniquePrev = prev.findLast((imp) => imp.path === curr.path && isEqual__default.default(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly);
@@ -1031,8 +1058,8 @@ function getEnvSource(source, env) {
1031
1058
  throw new TypeError(`Environment should be in upperCase for ${key}`);
1032
1059
  }
1033
1060
  if (typeof replaceBy === "string") {
1034
- prev = transformers.searchAndReplace({ text: prev.replaceAll(`process.env.${key}`, replaceBy), replaceBy, prefix: "process.env", key });
1035
- prev = transformers.searchAndReplace({ text: prev.replaceAll(new RegExp(`(declare const).*
1061
+ prev = transformers_default.searchAndReplace({ text: prev.replaceAll(`process.env.${key}`, replaceBy), replaceBy, prefix: "process.env", key });
1062
+ prev = transformers_default.searchAndReplace({ text: prev.replaceAll(new RegExp(`(declare const).*
1036
1063
  `, "ig"), ""), replaceBy, key });
1037
1064
  }
1038
1065
  return prev;
@@ -1145,6 +1172,8 @@ function setUniqueName(originalName, data) {
1145
1172
  data[originalName] = 1;
1146
1173
  return originalName;
1147
1174
  }
1175
+
1176
+ // src/utils/URLPath.ts
1148
1177
  var URLPath = class {
1149
1178
  constructor(path2) {
1150
1179
  this.path = path2;
@@ -1211,7 +1240,7 @@ var URLPath = class {
1211
1240
  let newPath = this.path.replaceAll("{", "${");
1212
1241
  if (found) {
1213
1242
  newPath = found.reduce((prev, curr) => {
1214
- const pathParam = replacer ? replacer(changeCase.camelCase(curr, { delimiter: "", transform: changeCase.camelCaseTransformMerge })) : changeCase.camelCase(curr, { delimiter: "", transform: changeCase.camelCaseTransformMerge });
1243
+ const pathParam = replacer ? replacer(transformers_default.camelCase(curr)) : transformers_default.camelCase(curr);
1215
1244
  const replacement = `\${${pathParam}}`;
1216
1245
  return prev.replace(curr, replacement);
1217
1246
  }, this.path);
@@ -1227,7 +1256,7 @@ var URLPath = class {
1227
1256
  const params = {};
1228
1257
  found.forEach((item) => {
1229
1258
  item = item.replaceAll("{", "").replaceAll("}", "");
1230
- const pathParam = replacer ? replacer(changeCase.camelCase(item, { delimiter: "", transform: changeCase.camelCaseTransformMerge })) : changeCase.camelCase(item, { delimiter: "", transform: changeCase.camelCaseTransformMerge });
1259
+ const pathParam = replacer ? replacer(transformers_default.camelCase(item)) : transformers_default.camelCase(item);
1231
1260
  params[pathParam] = pathParam;
1232
1261
  }, this.path);
1233
1262
  return params;
@@ -1266,7 +1295,6 @@ exports.renderTemplate = renderTemplate;
1266
1295
  exports.setUniqueName = setUniqueName;
1267
1296
  exports.throttle = throttle;
1268
1297
  exports.timeout = timeout;
1269
- exports.transformers = transformers;
1270
1298
  exports.write = write;
1271
1299
  //# sourceMappingURL=out.js.map
1272
1300
  //# sourceMappingURL=utils.cjs.map