utils.mjs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { c as colorize } from './shared/consola.DXBYu-KD.mjs';
  2. export { b as align, d as box, a as centerAlign, e as colors, g as getColor, l as leftAlign, r as rightAlign, s as stripAnsi } from './shared/consola.DXBYu-KD.mjs';
  3. import 'node:tty';
  4. function formatTree(items, options) {
  5. options = {
  6. prefix: " ",
  7. ellipsis: "...",
  8. ...options
  9. };
  10. const tree = _buildTree(items, options).join("");
  11. if (options && options.color) {
  12. return colorize(options.color, tree);
  13. }
  14. return tree;
  15. }
  16. function _buildTree(items, options) {
  17. const chunks = [];
  18. const total = items.length - 1;
  19. for (let i = 0; i <= total; i++) {
  20. const item = items[i];
  21. const isItemString = typeof item === "string";
  22. const isLimit = options?.maxDepth != null && options.maxDepth <= 0;
  23. if (isLimit) {
  24. const ellipsis = `${options.prefix}${options.ellipsis}
  25. `;
  26. return [
  27. isItemString ? ellipsis : item.color ? colorize(item.color, ellipsis) : ellipsis
  28. // prettier-ignore
  29. ];
  30. }
  31. const isLast = i === total;
  32. const prefix = isLast ? `${options?.prefix}\u2514\u2500` : `${options?.prefix}\u251C\u2500`;
  33. if (isItemString) {
  34. chunks.push(`${prefix}${item}
  35. `);
  36. } else {
  37. const log = `${prefix}${item.text}
  38. `;
  39. chunks.push(item.color ? colorize(item.color, log) : log);
  40. if (item.children) {
  41. const _tree = _buildTree(item.children, {
  42. ...options,
  43. maxDepth: options?.maxDepth == null ? void 0 : options.maxDepth - 1,
  44. prefix: `${options?.prefix}${isLast ? " " : "\u2502 "}`
  45. });
  46. chunks.push(..._tree);
  47. }
  48. }
  49. }
  50. return chunks;
  51. }
  52. export { colorize, formatTree };