@kubb/core 2.0.0-beta.2 → 2.0.0-beta.4

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 (40) hide show
  1. package/dist/index.cjs +188 -156
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +9 -13
  4. package/dist/index.d.ts +9 -13
  5. package/dist/index.js +191 -158
  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.ts +55 -0
  10. package/dist/transformers.js +207 -0
  11. package/dist/transformers.js.map +1 -0
  12. package/dist/utils.cjs +226 -212
  13. package/dist/utils.cjs.map +1 -1
  14. package/dist/utils.d.cts +1 -49
  15. package/dist/utils.d.ts +1 -49
  16. package/dist/utils.js +227 -212
  17. package/dist/utils.js.map +1 -1
  18. package/package.json +9 -4
  19. package/src/FileManager.ts +33 -15
  20. package/src/PluginManager.ts +9 -9
  21. package/src/build.ts +1 -1
  22. package/src/index.ts +0 -1
  23. package/src/transformers/casing.ts +9 -0
  24. package/src/transformers/createJSDocBlockText.ts +9 -0
  25. package/src/transformers/index.ts +36 -0
  26. package/src/transformers/trim.ts +7 -0
  27. package/src/utils/FunctionParams.ts +3 -2
  28. package/src/utils/URLPath.ts +5 -5
  29. package/src/utils/index.ts +0 -1
  30. package/src/utils/write.ts +1 -1
  31. package/src/SchemaGenerator.ts +0 -8
  32. package/src/utils/transformers/createJSDocBlockText.ts +0 -15
  33. package/src/utils/transformers/index.ts +0 -22
  34. package/src/utils/transformers/trim.ts +0 -3
  35. /package/src/{utils/transformers → transformers}/combineCodes.ts +0 -0
  36. /package/src/{utils/transformers → transformers}/escape.ts +0 -0
  37. /package/src/{utils/transformers → transformers}/indent.ts +0 -0
  38. /package/src/{utils/transformers → transformers}/nameSorter.ts +0 -0
  39. /package/src/{utils/transformers → transformers}/searchAndReplace.ts +0 -0
  40. /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}` : ""}`);
@@ -421,198 +622,6 @@ async function timeout(ms) {
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 });
@@ -751,7 +760,7 @@ var BarrelManager = class {
751
760
  }
752
761
  };
753
762
  _options = new WeakMap();
754
- var _cache, _task, _isWriting, _timeout, _queue2, _validate, validate_fn, _add, add_fn, _addOrAppend, addOrAppend_fn;
763
+ var _cache, _task, _isWriting, _timeout, _queue2, _validate, _add, add_fn, _addOrAppend, addOrAppend_fn;
755
764
  var _FileManager = class _FileManager {
756
765
  constructor(options) {
757
766
  __privateAdd(this, _validate);
@@ -784,7 +793,6 @@ var _FileManager = class _FileManager {
784
793
  }
785
794
  async add(...files) {
786
795
  const promises = files.map((file) => {
787
- __privateMethod(this, _validate, validate_fn).call(this, file);
788
796
  if (file.override) {
789
797
  return __privateMethod(this, _add, add_fn).call(this, file);
790
798
  }
@@ -848,9 +856,22 @@ var _FileManager = class _FileManager {
848
856
  }
849
857
  const exports = file.exports ? combineExports(file.exports) : [];
850
858
  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 }));
859
+ const importNodes = imports.filter((item) => {
860
+ return item.path !== transformers_default.trimExtName(file.path);
861
+ }).map((item) => {
862
+ return factory__namespace.createImportDeclaration({
863
+ name: item.name,
864
+ path: item.root ? getRelativePath(item.root, item.path) : item.path,
865
+ isTypeOnly: item.isTypeOnly
866
+ });
867
+ });
852
868
  const exportNodes = exports.map(
853
- (item) => factory__namespace.createExportDeclaration({ name: item.name, path: item.path, isTypeOnly: item.isTypeOnly, asAlias: item.asAlias })
869
+ (item) => factory__namespace.createExportDeclaration({
870
+ name: item.name,
871
+ path: item.path,
872
+ isTypeOnly: item.isTypeOnly,
873
+ asAlias: item.asAlias
874
+ })
854
875
  );
855
876
  return [parser.print([...importNodes, ...exportNodes]), getEnvSource(file.source, file.env)].join("\n");
856
877
  }
@@ -901,14 +922,6 @@ _isWriting = new WeakMap();
901
922
  _timeout = new WeakMap();
902
923
  _queue2 = new WeakMap();
903
924
  _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
925
  _add = new WeakSet();
913
926
  add_fn = async function(file) {
914
927
  const controller = new AbortController();
@@ -985,7 +998,7 @@ function combineImports(imports, exports, source) {
985
998
  return checker(importName) || exports.some(({ name: name2 }) => Array.isArray(name2) ? name2.some(checker) : checker(name2));
986
999
  };
987
1000
  if (Array.isArray(name)) {
988
- name = name.filter((item) => hasImportInSource(item));
1001
+ name = name.filter((item) => typeof item === "string" ? hasImportInSource(item) : hasImportInSource(item.propertyName));
989
1002
  }
990
1003
  const prevByPath = prev.findLast((imp) => imp.path === curr.path && imp.isTypeOnly === curr.isTypeOnly);
991
1004
  const uniquePrev = prev.findLast((imp) => imp.path === curr.path && isEqual__default.default(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly);
@@ -1031,8 +1044,8 @@ function getEnvSource(source, env) {
1031
1044
  throw new TypeError(`Environment should be in upperCase for ${key}`);
1032
1045
  }
1033
1046
  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).*
1047
+ prev = transformers_default.searchAndReplace({ text: prev.replaceAll(`process.env.${key}`, replaceBy), replaceBy, prefix: "process.env", key });
1048
+ prev = transformers_default.searchAndReplace({ text: prev.replaceAll(new RegExp(`(declare const).*
1036
1049
  `, "ig"), ""), replaceBy, key });
1037
1050
  }
1038
1051
  return prev;
@@ -1145,6 +1158,8 @@ function setUniqueName(originalName, data) {
1145
1158
  data[originalName] = 1;
1146
1159
  return originalName;
1147
1160
  }
1161
+
1162
+ // src/utils/URLPath.ts
1148
1163
  var URLPath = class {
1149
1164
  constructor(path2) {
1150
1165
  this.path = path2;
@@ -1211,7 +1226,7 @@ var URLPath = class {
1211
1226
  let newPath = this.path.replaceAll("{", "${");
1212
1227
  if (found) {
1213
1228
  newPath = found.reduce((prev, curr) => {
1214
- const pathParam = replacer ? replacer(changeCase.camelCase(curr, { delimiter: "", transform: changeCase.camelCaseTransformMerge })) : changeCase.camelCase(curr, { delimiter: "", transform: changeCase.camelCaseTransformMerge });
1229
+ const pathParam = replacer ? replacer(transformers_default.camelCase(curr)) : transformers_default.camelCase(curr);
1215
1230
  const replacement = `\${${pathParam}}`;
1216
1231
  return prev.replace(curr, replacement);
1217
1232
  }, this.path);
@@ -1227,7 +1242,7 @@ var URLPath = class {
1227
1242
  const params = {};
1228
1243
  found.forEach((item) => {
1229
1244
  item = item.replaceAll("{", "").replaceAll("}", "");
1230
- const pathParam = replacer ? replacer(changeCase.camelCase(item, { delimiter: "", transform: changeCase.camelCaseTransformMerge })) : changeCase.camelCase(item, { delimiter: "", transform: changeCase.camelCaseTransformMerge });
1245
+ const pathParam = replacer ? replacer(transformers_default.camelCase(item)) : transformers_default.camelCase(item);
1231
1246
  params[pathParam] = pathParam;
1232
1247
  }, this.path);
1233
1248
  return params;
@@ -1266,7 +1281,6 @@ exports.renderTemplate = renderTemplate;
1266
1281
  exports.setUniqueName = setUniqueName;
1267
1282
  exports.throttle = throttle;
1268
1283
  exports.timeout = timeout;
1269
- exports.transformers = transformers;
1270
1284
  exports.write = write;
1271
1285
  //# sourceMappingURL=out.js.map
1272
1286
  //# sourceMappingURL=utils.cjs.map