@qodalis/cli-core 2.0.0-beta.9 → 2.0.0-rc.2

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.
package/public-api.js CHANGED
@@ -7,7 +7,11 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
9
  var __commonJS = (cb, mod) => function __require() {
10
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ try {
11
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12
+ } catch (e) {
13
+ throw mod = 0, e;
14
+ }
11
15
  };
12
16
  var __copyProps = (to, from, except, desc) => {
13
17
  if (from && typeof from === "object" || typeof from === "function") {
@@ -26,9 +30,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
30
  mod
27
31
  ));
28
32
 
29
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/constants.js
33
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js
30
34
  var require_constants = __commonJS({
31
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/constants.js"(exports$1, module) {
35
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports, module) {
32
36
  var SEMVER_SPEC_VERSION = "2.0.0";
33
37
  var MAX_LENGTH = 256;
34
38
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
@@ -57,30 +61,30 @@ var require_constants = __commonJS({
57
61
  }
58
62
  });
59
63
 
60
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/debug.js
64
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js
61
65
  var require_debug = __commonJS({
62
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/debug.js"(exports$1, module) {
66
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports, module) {
63
67
  var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
64
68
  };
65
69
  module.exports = debug;
66
70
  }
67
71
  });
68
72
 
69
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/re.js
73
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js
70
74
  var require_re = __commonJS({
71
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/re.js"(exports$1, module) {
75
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports, module) {
72
76
  var {
73
77
  MAX_SAFE_COMPONENT_LENGTH,
74
78
  MAX_SAFE_BUILD_LENGTH,
75
79
  MAX_LENGTH
76
80
  } = require_constants();
77
81
  var debug = require_debug();
78
- exports$1 = module.exports = {};
79
- var re = exports$1.re = [];
80
- var safeRe = exports$1.safeRe = [];
81
- var src = exports$1.src = [];
82
- var safeSrc = exports$1.safeSrc = [];
83
- var t = exports$1.t = {};
82
+ exports = module.exports = {};
83
+ var re = exports.re = [];
84
+ var safeRe = exports.safeRe = [];
85
+ var src = exports.src = [];
86
+ var safeSrc = exports.safeSrc = [];
87
+ var t = exports.t = {};
84
88
  var R = 0;
85
89
  var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
86
90
  var safeRegexReplacements = [
@@ -133,18 +137,18 @@ var require_re = __commonJS({
133
137
  createToken("COERCERTLFULL", src[t.COERCEFULL], true);
134
138
  createToken("LONETILDE", "(?:~>?)");
135
139
  createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
136
- exports$1.tildeTrimReplace = "$1~";
140
+ exports.tildeTrimReplace = "$1~";
137
141
  createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
138
142
  createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
139
143
  createToken("LONECARET", "(?:\\^)");
140
144
  createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true);
141
- exports$1.caretTrimReplace = "$1^";
145
+ exports.caretTrimReplace = "$1^";
142
146
  createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
143
147
  createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
144
148
  createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
145
149
  createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
146
150
  createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
147
- exports$1.comparatorTrimReplace = "$1$2$3";
151
+ exports.comparatorTrimReplace = "$1$2$3";
148
152
  createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);
149
153
  createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);
150
154
  createToken("STAR", "(<|>)?=?\\s*\\*");
@@ -153,9 +157,9 @@ var require_re = __commonJS({
153
157
  }
154
158
  });
155
159
 
156
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/parse-options.js
160
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js
157
161
  var require_parse_options = __commonJS({
158
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/parse-options.js"(exports$1, module) {
162
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports, module) {
159
163
  var looseOption = Object.freeze({ loose: true });
160
164
  var emptyOpts = Object.freeze({});
161
165
  var parseOptions = (options) => {
@@ -171,9 +175,9 @@ var require_parse_options = __commonJS({
171
175
  }
172
176
  });
173
177
 
174
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/identifiers.js
178
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js
175
179
  var require_identifiers = __commonJS({
176
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/identifiers.js"(exports$1, module) {
180
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports, module) {
177
181
  var numeric = /^[0-9]+$/;
178
182
  var compareIdentifiers = (a, b) => {
179
183
  if (typeof a === "number" && typeof b === "number") {
@@ -195,14 +199,26 @@ var require_identifiers = __commonJS({
195
199
  }
196
200
  });
197
201
 
198
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/semver.js
202
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js
199
203
  var require_semver = __commonJS({
200
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/semver.js"(exports$1, module) {
204
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports, module) {
201
205
  var debug = require_debug();
202
206
  var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
203
207
  var { safeRe: re, t } = require_re();
204
208
  var parseOptions = require_parse_options();
205
209
  var { compareIdentifiers } = require_identifiers();
210
+ var isPrereleaseIdentifier = (prerelease, identifier) => {
211
+ const identifiers = identifier.split(".");
212
+ if (identifiers.length > prerelease.length) {
213
+ return false;
214
+ }
215
+ for (let i = 0; i < identifiers.length; i++) {
216
+ if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
217
+ return false;
218
+ }
219
+ }
220
+ return true;
221
+ };
206
222
  var SemVer = class _SemVer {
207
223
  constructor(version, options) {
208
224
  options = parseOptions(options);
@@ -449,8 +465,9 @@ var require_semver = __commonJS({
449
465
  if (identifierBase === false) {
450
466
  prerelease = [identifier];
451
467
  }
452
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
453
- if (isNaN(this.prerelease[1])) {
468
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
469
+ const prereleaseBase = this.prerelease[identifier.split(".").length];
470
+ if (isNaN(prereleaseBase)) {
454
471
  this.prerelease = prerelease;
455
472
  }
456
473
  } else {
@@ -473,9 +490,9 @@ var require_semver = __commonJS({
473
490
  }
474
491
  });
475
492
 
476
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/parse.js
493
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js
477
494
  var require_parse = __commonJS({
478
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/parse.js"(exports$1, module) {
495
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports, module) {
479
496
  var SemVer = require_semver();
480
497
  var parse = (version, options, throwErrors = false) => {
481
498
  if (version instanceof SemVer) {
@@ -494,9 +511,9 @@ var require_parse = __commonJS({
494
511
  }
495
512
  });
496
513
 
497
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/valid.js
514
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js
498
515
  var require_valid = __commonJS({
499
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/valid.js"(exports$1, module) {
516
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports, module) {
500
517
  var parse = require_parse();
501
518
  var valid2 = (version, options) => {
502
519
  const v = parse(version, options);
@@ -506,9 +523,9 @@ var require_valid = __commonJS({
506
523
  }
507
524
  });
508
525
 
509
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/clean.js
526
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js
510
527
  var require_clean = __commonJS({
511
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/clean.js"(exports$1, module) {
528
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js"(exports, module) {
512
529
  var parse = require_parse();
513
530
  var clean = (version, options) => {
514
531
  const s = parse(version.trim().replace(/^[=v]+/, ""), options);
@@ -518,9 +535,9 @@ var require_clean = __commonJS({
518
535
  }
519
536
  });
520
537
 
521
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/inc.js
538
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js
522
539
  var require_inc = __commonJS({
523
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/inc.js"(exports$1, module) {
540
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js"(exports, module) {
524
541
  var SemVer = require_semver();
525
542
  var inc = (version, release, options, identifier, identifierBase) => {
526
543
  if (typeof options === "string") {
@@ -541,9 +558,9 @@ var require_inc = __commonJS({
541
558
  }
542
559
  });
543
560
 
544
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/diff.js
561
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js
545
562
  var require_diff = __commonJS({
546
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/diff.js"(exports$1, module) {
563
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js"(exports, module) {
547
564
  var parse = require_parse();
548
565
  var diff = (version1, version2) => {
549
566
  const v1 = parse(version1, null, true);
@@ -584,36 +601,36 @@ var require_diff = __commonJS({
584
601
  }
585
602
  });
586
603
 
587
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/major.js
604
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js
588
605
  var require_major = __commonJS({
589
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/major.js"(exports$1, module) {
606
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js"(exports, module) {
590
607
  var SemVer = require_semver();
591
608
  var major = (a, loose) => new SemVer(a, loose).major;
592
609
  module.exports = major;
593
610
  }
594
611
  });
595
612
 
596
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/minor.js
613
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js
597
614
  var require_minor = __commonJS({
598
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/minor.js"(exports$1, module) {
615
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js"(exports, module) {
599
616
  var SemVer = require_semver();
600
617
  var minor = (a, loose) => new SemVer(a, loose).minor;
601
618
  module.exports = minor;
602
619
  }
603
620
  });
604
621
 
605
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/patch.js
622
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js
606
623
  var require_patch = __commonJS({
607
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/patch.js"(exports$1, module) {
624
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js"(exports, module) {
608
625
  var SemVer = require_semver();
609
626
  var patch = (a, loose) => new SemVer(a, loose).patch;
610
627
  module.exports = patch;
611
628
  }
612
629
  });
613
630
 
614
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/prerelease.js
631
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js
615
632
  var require_prerelease = __commonJS({
616
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/prerelease.js"(exports$1, module) {
633
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js"(exports, module) {
617
634
  var parse = require_parse();
618
635
  var prerelease = (version, options) => {
619
636
  const parsed = parse(version, options);
@@ -623,36 +640,36 @@ var require_prerelease = __commonJS({
623
640
  }
624
641
  });
625
642
 
626
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare.js
643
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js
627
644
  var require_compare = __commonJS({
628
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare.js"(exports$1, module) {
645
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports, module) {
629
646
  var SemVer = require_semver();
630
647
  var compare2 = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
631
648
  module.exports = compare2;
632
649
  }
633
650
  });
634
651
 
635
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rcompare.js
652
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js
636
653
  var require_rcompare = __commonJS({
637
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rcompare.js"(exports$1, module) {
654
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js"(exports, module) {
638
655
  var compare2 = require_compare();
639
656
  var rcompare = (a, b, loose) => compare2(b, a, loose);
640
657
  module.exports = rcompare;
641
658
  }
642
659
  });
643
660
 
644
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare-loose.js
661
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js
645
662
  var require_compare_loose = __commonJS({
646
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare-loose.js"(exports$1, module) {
663
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js"(exports, module) {
647
664
  var compare2 = require_compare();
648
665
  var compareLoose = (a, b) => compare2(a, b, true);
649
666
  module.exports = compareLoose;
650
667
  }
651
668
  });
652
669
 
653
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare-build.js
670
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js
654
671
  var require_compare_build = __commonJS({
655
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare-build.js"(exports$1, module) {
672
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js"(exports, module) {
656
673
  var SemVer = require_semver();
657
674
  var compareBuild = (a, b, loose) => {
658
675
  const versionA = new SemVer(a, loose);
@@ -663,81 +680,81 @@ var require_compare_build = __commonJS({
663
680
  }
664
681
  });
665
682
 
666
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/sort.js
683
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js
667
684
  var require_sort = __commonJS({
668
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/sort.js"(exports$1, module) {
685
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js"(exports, module) {
669
686
  var compareBuild = require_compare_build();
670
- var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
687
+ var sort = (list2, loose) => list2.sort((a, b) => compareBuild(a, b, loose));
671
688
  module.exports = sort;
672
689
  }
673
690
  });
674
691
 
675
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rsort.js
692
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js
676
693
  var require_rsort = __commonJS({
677
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rsort.js"(exports$1, module) {
694
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js"(exports, module) {
678
695
  var compareBuild = require_compare_build();
679
- var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
696
+ var rsort = (list2, loose) => list2.sort((a, b) => compareBuild(b, a, loose));
680
697
  module.exports = rsort;
681
698
  }
682
699
  });
683
700
 
684
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gt.js
701
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js
685
702
  var require_gt = __commonJS({
686
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gt.js"(exports$1, module) {
703
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports, module) {
687
704
  var compare2 = require_compare();
688
705
  var gt = (a, b, loose) => compare2(a, b, loose) > 0;
689
706
  module.exports = gt;
690
707
  }
691
708
  });
692
709
 
693
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lt.js
710
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js
694
711
  var require_lt = __commonJS({
695
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lt.js"(exports$1, module) {
712
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports, module) {
696
713
  var compare2 = require_compare();
697
714
  var lt = (a, b, loose) => compare2(a, b, loose) < 0;
698
715
  module.exports = lt;
699
716
  }
700
717
  });
701
718
 
702
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/eq.js
719
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js
703
720
  var require_eq = __commonJS({
704
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/eq.js"(exports$1, module) {
721
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports, module) {
705
722
  var compare2 = require_compare();
706
723
  var eq = (a, b, loose) => compare2(a, b, loose) === 0;
707
724
  module.exports = eq;
708
725
  }
709
726
  });
710
727
 
711
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/neq.js
728
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js
712
729
  var require_neq = __commonJS({
713
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/neq.js"(exports$1, module) {
730
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports, module) {
714
731
  var compare2 = require_compare();
715
732
  var neq = (a, b, loose) => compare2(a, b, loose) !== 0;
716
733
  module.exports = neq;
717
734
  }
718
735
  });
719
736
 
720
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gte.js
737
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js
721
738
  var require_gte = __commonJS({
722
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gte.js"(exports$1, module) {
739
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports, module) {
723
740
  var compare2 = require_compare();
724
741
  var gte2 = (a, b, loose) => compare2(a, b, loose) >= 0;
725
742
  module.exports = gte2;
726
743
  }
727
744
  });
728
745
 
729
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lte.js
746
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js
730
747
  var require_lte = __commonJS({
731
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lte.js"(exports$1, module) {
748
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports, module) {
732
749
  var compare2 = require_compare();
733
750
  var lte = (a, b, loose) => compare2(a, b, loose) <= 0;
734
751
  module.exports = lte;
735
752
  }
736
753
  });
737
754
 
738
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/cmp.js
755
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js
739
756
  var require_cmp = __commonJS({
740
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/cmp.js"(exports$1, module) {
757
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports, module) {
741
758
  var eq = require_eq();
742
759
  var neq = require_neq();
743
760
  var gt = require_gt();
@@ -784,9 +801,9 @@ var require_cmp = __commonJS({
784
801
  }
785
802
  });
786
803
 
787
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/coerce.js
804
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js
788
805
  var require_coerce = __commonJS({
789
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/coerce.js"(exports$1, module) {
806
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js"(exports, module) {
790
807
  var SemVer = require_semver();
791
808
  var parse = require_parse();
792
809
  var { safeRe: re, t } = require_re();
@@ -829,9 +846,49 @@ var require_coerce = __commonJS({
829
846
  }
830
847
  });
831
848
 
832
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/lrucache.js
849
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js
850
+ var require_truncate = __commonJS({
851
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js"(exports, module) {
852
+ var parse = require_parse();
853
+ var constants2 = require_constants();
854
+ var SemVer = require_semver();
855
+ var truncate = (version, truncation, options) => {
856
+ if (!constants2.RELEASE_TYPES.includes(truncation)) {
857
+ return null;
858
+ }
859
+ const clonedVersion = cloneInputVersion(version, options);
860
+ return clonedVersion && doTruncation(clonedVersion, truncation);
861
+ };
862
+ var cloneInputVersion = (version, options) => {
863
+ const versionStringToParse = version instanceof SemVer ? version.version : version;
864
+ return parse(versionStringToParse, options);
865
+ };
866
+ var doTruncation = (version, truncation) => {
867
+ if (isPrerelease(truncation)) {
868
+ return version.version;
869
+ }
870
+ version.prerelease = [];
871
+ switch (truncation) {
872
+ case "major":
873
+ version.minor = 0;
874
+ version.patch = 0;
875
+ break;
876
+ case "minor":
877
+ version.patch = 0;
878
+ break;
879
+ }
880
+ return version.format();
881
+ };
882
+ var isPrerelease = (type) => {
883
+ return type.startsWith("pre");
884
+ };
885
+ module.exports = truncate;
886
+ }
887
+ });
888
+
889
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js
833
890
  var require_lrucache = __commonJS({
834
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/lrucache.js"(exports$1, module) {
891
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports, module) {
835
892
  var LRUCache = class {
836
893
  constructor() {
837
894
  this.max = 1e3;
@@ -866,9 +923,9 @@ var require_lrucache = __commonJS({
866
923
  }
867
924
  });
868
925
 
869
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/range.js
926
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js
870
927
  var require_range = __commonJS({
871
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/range.js"(exports$1, module) {
928
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports, module) {
872
929
  var SPACE_CHARACTERS = /\s+/g;
873
930
  var Range = class _Range {
874
931
  constructor(range, options) {
@@ -935,6 +992,7 @@ var require_range = __commonJS({
935
992
  return this.range;
936
993
  }
937
994
  parseRange(range) {
995
+ range = range.replace(BUILDSTRIPRE, "");
938
996
  const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
939
997
  const memoKey = memoOpts + ":" + range;
940
998
  const cached = cache.get(memoKey);
@@ -1017,12 +1075,14 @@ var require_range = __commonJS({
1017
1075
  var SemVer = require_semver();
1018
1076
  var {
1019
1077
  safeRe: re,
1078
+ src,
1020
1079
  t,
1021
1080
  comparatorTrimReplace,
1022
1081
  tildeTrimReplace,
1023
1082
  caretTrimReplace
1024
1083
  } = require_re();
1025
1084
  var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
1085
+ var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g");
1026
1086
  var isNullSet = (c) => c.value === "<0.0.0-0";
1027
1087
  var isAny = (c) => c.value === "";
1028
1088
  var isSatisfiable = (comparators, options) => {
@@ -1051,20 +1111,22 @@ var require_range = __commonJS({
1051
1111
  return comp;
1052
1112
  };
1053
1113
  var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
1114
+ var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
1054
1115
  var replaceTildes = (comp, options) => {
1055
1116
  return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
1056
1117
  };
1057
1118
  var replaceTilde = (comp, options) => {
1058
1119
  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
1120
+ const z = options.includePrerelease ? "-0" : "";
1059
1121
  return comp.replace(r, (_, M, m, p, pr) => {
1060
1122
  debug("tilde", comp, _, M, m, p, pr);
1061
1123
  let ret;
1062
1124
  if (isX(M)) {
1063
1125
  ret = "";
1064
1126
  } else if (isX(m)) {
1065
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
1127
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
1066
1128
  } else if (isX(p)) {
1067
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
1129
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
1068
1130
  } else if (pr) {
1069
1131
  debug("replaceTilde pr", pr);
1070
1132
  ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
@@ -1110,9 +1172,9 @@ var require_range = __commonJS({
1110
1172
  debug("no pr");
1111
1173
  if (M === "0") {
1112
1174
  if (m === "0") {
1113
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
1175
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
1114
1176
  } else {
1115
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
1177
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
1116
1178
  }
1117
1179
  } else {
1118
1180
  ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
@@ -1131,6 +1193,9 @@ var require_range = __commonJS({
1131
1193
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
1132
1194
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
1133
1195
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
1196
+ if (invalidXRangeOrder(M, m, p)) {
1197
+ return comp;
1198
+ }
1134
1199
  const xM = isX(M);
1135
1200
  const xm = xM || isX(m);
1136
1201
  const xp = xm || isX(p);
@@ -1242,9 +1307,9 @@ var require_range = __commonJS({
1242
1307
  }
1243
1308
  });
1244
1309
 
1245
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/comparator.js
1310
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js
1246
1311
  var require_comparator = __commonJS({
1247
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/comparator.js"(exports$1, module) {
1312
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports, module) {
1248
1313
  var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
1249
1314
  var Comparator = class _Comparator {
1250
1315
  static get ANY() {
@@ -1354,9 +1419,9 @@ var require_comparator = __commonJS({
1354
1419
  }
1355
1420
  });
1356
1421
 
1357
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/satisfies.js
1422
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js
1358
1423
  var require_satisfies = __commonJS({
1359
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/satisfies.js"(exports$1, module) {
1424
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports, module) {
1360
1425
  var Range = require_range();
1361
1426
  var satisfies2 = (version, range, options) => {
1362
1427
  try {
@@ -1370,18 +1435,18 @@ var require_satisfies = __commonJS({
1370
1435
  }
1371
1436
  });
1372
1437
 
1373
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/to-comparators.js
1438
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js
1374
1439
  var require_to_comparators = __commonJS({
1375
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/to-comparators.js"(exports$1, module) {
1440
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js"(exports, module) {
1376
1441
  var Range = require_range();
1377
1442
  var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
1378
1443
  module.exports = toComparators;
1379
1444
  }
1380
1445
  });
1381
1446
 
1382
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/max-satisfying.js
1447
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js
1383
1448
  var require_max_satisfying = __commonJS({
1384
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/max-satisfying.js"(exports$1, module) {
1449
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js"(exports, module) {
1385
1450
  var SemVer = require_semver();
1386
1451
  var Range = require_range();
1387
1452
  var maxSatisfying = (versions, range, options) => {
@@ -1407,9 +1472,9 @@ var require_max_satisfying = __commonJS({
1407
1472
  }
1408
1473
  });
1409
1474
 
1410
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/min-satisfying.js
1475
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js
1411
1476
  var require_min_satisfying = __commonJS({
1412
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/min-satisfying.js"(exports$1, module) {
1477
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js"(exports, module) {
1413
1478
  var SemVer = require_semver();
1414
1479
  var Range = require_range();
1415
1480
  var minSatisfying = (versions, range, options) => {
@@ -1435,9 +1500,9 @@ var require_min_satisfying = __commonJS({
1435
1500
  }
1436
1501
  });
1437
1502
 
1438
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/min-version.js
1503
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js
1439
1504
  var require_min_version = __commonJS({
1440
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/min-version.js"(exports$1, module) {
1505
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports, module) {
1441
1506
  var SemVer = require_semver();
1442
1507
  var Range = require_range();
1443
1508
  var gt = require_gt();
@@ -1493,9 +1558,9 @@ var require_min_version = __commonJS({
1493
1558
  }
1494
1559
  });
1495
1560
 
1496
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/valid.js
1561
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js
1497
1562
  var require_valid2 = __commonJS({
1498
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/valid.js"(exports$1, module) {
1563
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports, module) {
1499
1564
  var Range = require_range();
1500
1565
  var validRange = (range, options) => {
1501
1566
  try {
@@ -1508,9 +1573,9 @@ var require_valid2 = __commonJS({
1508
1573
  }
1509
1574
  });
1510
1575
 
1511
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/outside.js
1576
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js
1512
1577
  var require_outside = __commonJS({
1513
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/outside.js"(exports$1, module) {
1578
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js"(exports, module) {
1514
1579
  var SemVer = require_semver();
1515
1580
  var Comparator = require_comparator();
1516
1581
  var { ANY } = Comparator;
@@ -1576,27 +1641,27 @@ var require_outside = __commonJS({
1576
1641
  }
1577
1642
  });
1578
1643
 
1579
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/gtr.js
1644
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js
1580
1645
  var require_gtr = __commonJS({
1581
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/gtr.js"(exports$1, module) {
1646
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js"(exports, module) {
1582
1647
  var outside = require_outside();
1583
1648
  var gtr = (version, range, options) => outside(version, range, ">", options);
1584
1649
  module.exports = gtr;
1585
1650
  }
1586
1651
  });
1587
1652
 
1588
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/ltr.js
1653
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js
1589
1654
  var require_ltr = __commonJS({
1590
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/ltr.js"(exports$1, module) {
1655
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js"(exports, module) {
1591
1656
  var outside = require_outside();
1592
1657
  var ltr = (version, range, options) => outside(version, range, "<", options);
1593
1658
  module.exports = ltr;
1594
1659
  }
1595
1660
  });
1596
1661
 
1597
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/intersects.js
1662
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js
1598
1663
  var require_intersects = __commonJS({
1599
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/intersects.js"(exports$1, module) {
1664
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js"(exports, module) {
1600
1665
  var Range = require_range();
1601
1666
  var intersects = (r1, r2, options) => {
1602
1667
  r1 = new Range(r1, options);
@@ -1607,9 +1672,9 @@ var require_intersects = __commonJS({
1607
1672
  }
1608
1673
  });
1609
1674
 
1610
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/simplify.js
1675
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js
1611
1676
  var require_simplify = __commonJS({
1612
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/simplify.js"(exports$1, module) {
1677
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js"(exports, module) {
1613
1678
  var satisfies2 = require_satisfies();
1614
1679
  var compare2 = require_compare();
1615
1680
  module.exports = (versions, range, options) => {
@@ -1656,9 +1721,9 @@ var require_simplify = __commonJS({
1656
1721
  }
1657
1722
  });
1658
1723
 
1659
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/subset.js
1724
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js
1660
1725
  var require_subset = __commonJS({
1661
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/subset.js"(exports$1, module) {
1726
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js"(exports, module) {
1662
1727
  var Range = require_range();
1663
1728
  var Comparator = require_comparator();
1664
1729
  var { ANY } = Comparator;
@@ -1765,7 +1830,7 @@ var require_subset = __commonJS({
1765
1830
  if (higher === c && higher !== gt) {
1766
1831
  return false;
1767
1832
  }
1768
- } else if (gt.operator === ">=" && !satisfies2(gt.semver, String(c), options)) {
1833
+ } else if (gt.operator === ">=" && !c.test(gt.semver)) {
1769
1834
  return false;
1770
1835
  }
1771
1836
  }
@@ -1780,7 +1845,7 @@ var require_subset = __commonJS({
1780
1845
  if (lower === c && lower !== lt) {
1781
1846
  return false;
1782
1847
  }
1783
- } else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
1848
+ } else if (lt.operator === "<=" && !c.test(lt.semver)) {
1784
1849
  return false;
1785
1850
  }
1786
1851
  }
@@ -1817,9 +1882,9 @@ var require_subset = __commonJS({
1817
1882
  }
1818
1883
  });
1819
1884
 
1820
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/index.js
1885
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js
1821
1886
  var require_semver2 = __commonJS({
1822
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/index.js"(exports$1, module) {
1887
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js"(exports, module) {
1823
1888
  var internalRe = require_re();
1824
1889
  var constants2 = require_constants();
1825
1890
  var SemVer = require_semver();
@@ -1847,6 +1912,7 @@ var require_semver2 = __commonJS({
1847
1912
  var lte = require_lte();
1848
1913
  var cmp = require_cmp();
1849
1914
  var coerce2 = require_coerce();
1915
+ var truncate = require_truncate();
1850
1916
  var Comparator = require_comparator();
1851
1917
  var Range = require_range();
1852
1918
  var satisfies2 = require_satisfies();
@@ -1885,6 +1951,7 @@ var require_semver2 = __commonJS({
1885
1951
  lte,
1886
1952
  cmp,
1887
1953
  coerce: coerce2,
1954
+ truncate,
1888
1955
  Comparator,
1889
1956
  Range,
1890
1957
  satisfies: satisfies2,
@@ -1911,11 +1978,7 @@ var require_semver2 = __commonJS({
1911
1978
  }
1912
1979
  });
1913
1980
 
1914
- // src/lib/models/permissions.ts
1915
- var DEFAULT_FILE_PERMISSIONS = "rw-r--r--";
1916
- var DEFAULT_DIR_PERMISSIONS = "rwxr-xr-x";
1917
-
1918
- // src/lib/models/index.ts
1981
+ // src/lib/models/colors.ts
1919
1982
  var CliForegroundColor = /* @__PURE__ */ ((CliForegroundColor2) => {
1920
1983
  CliForegroundColor2["Black"] = "\x1B[30m";
1921
1984
  CliForegroundColor2["Red"] = "\x1B[31m";
@@ -1939,6 +2002,8 @@ var CliBackgroundColor = /* @__PURE__ */ ((CliBackgroundColor2) => {
1939
2002
  CliBackgroundColor2["White"] = "\x1B[47m";
1940
2003
  return CliBackgroundColor2;
1941
2004
  })(CliBackgroundColor || {});
2005
+
2006
+ // src/lib/models/icons.ts
1942
2007
  var CliIcon = /* @__PURE__ */ ((CliIcon2) => {
1943
2008
  CliIcon2["CheckIcon"] = "\u2714";
1944
2009
  CliIcon2["CrossIcon"] = "\u2718";
@@ -2056,6 +2121,54 @@ var CliIcon = /* @__PURE__ */ ((CliIcon2) => {
2056
2121
  CliIcon2["Gift"] = "\u{1F381}";
2057
2122
  return CliIcon2;
2058
2123
  })(CliIcon || {});
2124
+
2125
+ // src/lib/models/services.ts
2126
+ function createCliToken(name) {
2127
+ return name;
2128
+ }
2129
+
2130
+ // src/lib/tokens.ts
2131
+ var ICliUserSessionService_TOKEN = createCliToken("cli-user-session-service");
2132
+ var ICliUsersStoreService_TOKEN = createCliToken("cli-users-store-service");
2133
+ var ICliGroupsStoreService_TOKEN = createCliToken("cli-groups-store-service");
2134
+ var ICliAuthService_TOKEN = createCliToken("cli-auth-service");
2135
+ var ICliCompletionProvider_TOKEN = createCliToken("cli-completion-provider");
2136
+ var ICliDragDropService_TOKEN = createCliToken("cli-drag-drop-service");
2137
+ var ICliFileTransferService_TOKEN = createCliToken("cli-file-transfer-service");
2138
+ var ICliTranslationService_TOKEN = createCliToken("cli-translation-service");
2139
+ var ICliPermissionService_TOKEN = createCliToken("cli-permission-service");
2140
+ var ICliFilePickerProvider_TOKEN = createCliToken("cli-file-picker-provider");
2141
+ var ICliHttpClient_TOKEN = createCliToken("cli-http-client");
2142
+ var ICliUserEventService_TOKEN = createCliToken("cli-user-event-service");
2143
+ var ICliAuditService_TOKEN = createCliToken("cli-audit-service");
2144
+ var ICliAuthorizationService_TOKEN = createCliToken("cli-authorization-service");
2145
+ var ICliPermissionRegistry_TOKEN = createCliToken("cli-permission-registry");
2146
+ var ICliSessionsService_TOKEN = createCliToken("cli-sessions-service");
2147
+ var ICliKeyValueStore_TOKEN = createCliToken("cli-key-value-store");
2148
+
2149
+ // src/lib/interfaces/services.ts
2150
+ var ICliServerAuthTokenProvider_TOKEN = createCliToken("cli-server-auth-token-provider");
2151
+ var ICliServerAuthService_TOKEN = createCliToken("cli-server-auth-service");
2152
+ var ICliServerManager_TOKEN = createCliToken("cli-server-manager");
2153
+
2154
+ // src/lib/models/server.ts
2155
+ function resolveHeaders(provider) {
2156
+ if (!provider) return {};
2157
+ return typeof provider === "function" ? provider() : provider;
2158
+ }
2159
+ function resolveServerHeaders(services, serverName, configHeaders) {
2160
+ if (services) {
2161
+ const authService = services.get(
2162
+ ICliServerAuthService_TOKEN
2163
+ );
2164
+ if (authService) {
2165
+ return authService.getHeaders(serverName, configHeaders);
2166
+ }
2167
+ }
2168
+ return resolveHeaders(configHeaders);
2169
+ }
2170
+
2171
+ // src/lib/models/options.ts
2059
2172
  var CliLogLevel = /* @__PURE__ */ ((CliLogLevel2) => {
2060
2173
  CliLogLevel2[CliLogLevel2["None"] = 0] = "None";
2061
2174
  CliLogLevel2[CliLogLevel2["DEBUG"] = 1] = "DEBUG";
@@ -2065,6 +2178,12 @@ var CliLogLevel = /* @__PURE__ */ ((CliLogLevel2) => {
2065
2178
  CliLogLevel2[CliLogLevel2["ERROR"] = 5] = "ERROR";
2066
2179
  return CliLogLevel2;
2067
2180
  })(CliLogLevel || {});
2181
+
2182
+ // src/lib/models/permissions.ts
2183
+ var DEFAULT_FILE_PERMISSIONS = "rw-r--r--";
2184
+ var DEFAULT_DIR_PERMISSIONS = "rwxr-xr-x";
2185
+
2186
+ // src/lib/models/index.ts
2068
2187
  var enums = {
2069
2188
  CliForegroundColor,
2070
2189
  CliBackgroundColor,
@@ -2072,17 +2191,115 @@ var enums = {
2072
2191
  CliLogLevel
2073
2192
  };
2074
2193
 
2075
- // src/lib/tokens.ts
2076
- var ICliUserSessionService_TOKEN = "cli-user-session-service";
2077
- var ICliUsersStoreService_TOKEN = "cli-users-store-service";
2078
- var ICliGroupsStoreService_TOKEN = "cli-groups-store-service";
2079
- var ICliAuthService_TOKEN = "cli-auth-service";
2080
- var ICliCompletionProvider_TOKEN = "cli-completion-provider";
2081
- var ICliDragDropService_TOKEN = "cli-drag-drop-service";
2082
- var ICliFileTransferService_TOKEN = "cli-file-transfer-service";
2083
- var ICliTranslationService_TOKEN = "cli-translation-service";
2084
- var ICliPermissionService_TOKEN = "cli-permission-service";
2085
- var ICliFilePickerProvider_TOKEN = "cli-file-picker-provider";
2194
+ // src/lib/interfaces/command-guards.ts
2195
+ var ICliCommandGuard_TOKEN = createCliToken("cli-command-guard");
2196
+
2197
+ // src/lib/utils/permissions.ts
2198
+ function cliPermissionMatches(granted, required) {
2199
+ const g = granted.trim().toLowerCase().split(":");
2200
+ const r = required.trim().toLowerCase().split(":");
2201
+ for (let i = 0; i < g.length; i++) {
2202
+ if (g[i] === "*" && i === g.length - 1) return true;
2203
+ if (i >= r.length || g[i] !== "*" && g[i] !== r[i]) return false;
2204
+ }
2205
+ return g.length === r.length;
2206
+ }
2207
+ function cliHasPermission(granted, required) {
2208
+ return !!granted?.some((p) => cliPermissionMatches(p, required));
2209
+ }
2210
+ function cliMissingPermissions(granted, required) {
2211
+ return required.filter((r) => !cliHasPermission(granted, r));
2212
+ }
2213
+ function cliMergePermissions(...lists) {
2214
+ const seen = /* @__PURE__ */ new Set();
2215
+ const out = [];
2216
+ for (const list2 of lists) {
2217
+ for (const p of list2 ?? []) {
2218
+ const key = p.trim();
2219
+ if (key && !seen.has(key.toLowerCase())) {
2220
+ seen.add(key.toLowerCase());
2221
+ out.push(key);
2222
+ }
2223
+ }
2224
+ }
2225
+ return out;
2226
+ }
2227
+ var CliServerPermissions = {
2228
+ /** Open a remote shell on a server (`ssh`) */
2229
+ ShellExecute: "shell:execute"
2230
+ };
2231
+ var CliUsersPermissions = {
2232
+ UsersRead: "users:read",
2233
+ UsersCreate: "users:create",
2234
+ UsersUpdate: "users:update",
2235
+ UsersDelete: "users:delete",
2236
+ GroupsRead: "groups:read",
2237
+ GroupsCreate: "groups:create",
2238
+ GroupsUpdate: "groups:update",
2239
+ GroupsDelete: "groups:delete",
2240
+ SessionsRead: "sessions:read",
2241
+ SessionsRevoke: "sessions:revoke",
2242
+ AuditRead: "audit:read",
2243
+ AuditClear: "audit:clear"
2244
+ };
2245
+
2246
+ // src/lib/interfaces/authorization.ts
2247
+ var CliAccessDeniedError = class _CliAccessDeniedError extends Error {
2248
+ constructor(message = "permission denied") {
2249
+ super(message);
2250
+ this.code = "EACCES";
2251
+ this.name = "CliAccessDeniedError";
2252
+ Object.setPrototypeOf(this, _CliAccessDeniedError.prototype);
2253
+ }
2254
+ };
2255
+ function isCliAccessDeniedError(error) {
2256
+ return error instanceof CliAccessDeniedError || !!error && typeof error === "object" && error.name === "CliAccessDeniedError";
2257
+ }
2258
+ function authorizationService(context) {
2259
+ try {
2260
+ return context.services.get(ICliAuthorizationService_TOKEN);
2261
+ } catch {
2262
+ return void 0;
2263
+ }
2264
+ }
2265
+ function cliAuthorize(context, permission) {
2266
+ const auth = authorizationService(context);
2267
+ return auth ? auth.can(permission) : true;
2268
+ }
2269
+ function cliCanAccess(context, resource, action, bypassPermissions) {
2270
+ const auth = authorizationService(context);
2271
+ return auth ? auth.canAccess(resource, action, bypassPermissions) : true;
2272
+ }
2273
+ function cliEvaluateAccess(principal, resource, action, bypassPermissions = []) {
2274
+ const mode = resource.permissions;
2275
+ const owner = resource.ownership;
2276
+ if (!mode || mode.length < 9 || !owner) return true;
2277
+ if (principal && (cliHasPermission(principal.permissions, "*") || bypassPermissions.some((p) => cliHasPermission(principal.permissions, p)))) {
2278
+ return true;
2279
+ }
2280
+ let offset = 6;
2281
+ if (principal) {
2282
+ if (owner.uid === principal.name || owner.uid === principal.id) offset = 0;
2283
+ else if (principal.groups.some((g) => g.toLowerCase() === owner.gid.toLowerCase())) offset = 3;
2284
+ }
2285
+ const index = offset + (action === "read" ? 0 : action === "write" ? 1 : 2);
2286
+ return mode.charAt(index) !== "-";
2287
+ }
2288
+
2289
+ // src/lib/interfaces/event-bus.ts
2290
+ var ICliEventBus_TOKEN = createCliToken("cli-event-bus");
2291
+
2292
+ // src/lib/interfaces/http-client.ts
2293
+ var CliHttpError = class _CliHttpError extends Error {
2294
+ constructor(message, status, statusText = "", body) {
2295
+ super(message);
2296
+ this.status = status;
2297
+ this.statusText = statusText;
2298
+ this.body = body;
2299
+ this.name = "CliHttpError";
2300
+ Object.setPrototypeOf(this, _CliHttpError.prototype);
2301
+ }
2302
+ };
2086
2303
 
2087
2304
  // src/lib/constants/index.ts
2088
2305
  var DefaultLibraryAuthor = {
@@ -2098,6 +2315,57 @@ var delay = (ms) => {
2098
2315
  return new Promise((resolve) => setTimeout(resolve, ms));
2099
2316
  };
2100
2317
 
2318
+ // src/lib/utils/shell-words.ts
2319
+ function splitShellWords(text) {
2320
+ const words = [];
2321
+ let current = "";
2322
+ let inWord = false;
2323
+ for (let i = 0; i < text.length; i++) {
2324
+ const ch = text[i];
2325
+ if (ch === "\\" && i + 1 < text.length) {
2326
+ current += text[++i];
2327
+ inWord = true;
2328
+ } else if (ch === "'" && text.indexOf("'", i + 1) !== -1) {
2329
+ const end = text.indexOf("'", i + 1);
2330
+ current += text.slice(i + 1, end);
2331
+ inWord = true;
2332
+ i = end;
2333
+ } else if (ch === '"' && closingDoubleQuote(text, i) !== -1) {
2334
+ const end = closingDoubleQuote(text, i);
2335
+ current += unescapeDoubleQuoted(text.slice(i + 1, end));
2336
+ inWord = true;
2337
+ i = end;
2338
+ } else if (/\s/.test(ch)) {
2339
+ if (inWord) words.push(current);
2340
+ current = "";
2341
+ inWord = false;
2342
+ } else {
2343
+ current += ch;
2344
+ inWord = true;
2345
+ }
2346
+ }
2347
+ if (inWord) words.push(current);
2348
+ return words;
2349
+ }
2350
+ function joinShellWords(text) {
2351
+ return splitShellWords(text).join(" ");
2352
+ }
2353
+ function quoteShellWord(value) {
2354
+ if (value !== "" && !/[\s"'\\$`|&;<>(){}*?[\]#~]/.test(value)) return value;
2355
+ if (!value.includes("'")) return `'${value}'`;
2356
+ return `"${value.replace(/(["\\$`])/g, "\\$1")}"`;
2357
+ }
2358
+ function closingDoubleQuote(text, start) {
2359
+ for (let i = start + 1; i < text.length; i++) {
2360
+ if (text[i] === "\\") i++;
2361
+ else if (text[i] === '"') return i;
2362
+ }
2363
+ return -1;
2364
+ }
2365
+ function unescapeDoubleQuoted(text) {
2366
+ return text.replace(/\\(["\\$`])/g, "$1");
2367
+ }
2368
+
2101
2369
  // src/lib/utils/object-describer.ts
2102
2370
  var ObjectDescriber = class {
2103
2371
  static describe(obj, options) {
@@ -2156,16 +2424,17 @@ var ObjectDescriber = class {
2156
2424
  argsToCallF.push(command.args[arg]);
2157
2425
  }
2158
2426
  }
2159
- if (supportsDynamicArgs && command.value) {
2427
+ const value = command.value === void 0 ? void 0 : joinShellWords(command.value);
2428
+ if (supportsDynamicArgs && value) {
2160
2429
  const delimiter = command.args["delimiter"] || ",";
2161
- argsToCallF.push(...command.value.split(delimiter));
2430
+ argsToCallF.push(...value.split(delimiter));
2162
2431
  }
2163
2432
  if (debug) {
2164
2433
  context.writer.writeln(
2165
2434
  "Arguments after processing: " + JSON.stringify(argsToCallF)
2166
2435
  );
2167
2436
  }
2168
- const result = supportsDynamicArgs && args.length === 0 ? funcValue(...argsToCallF) : funcValue(command.value, ...argsToCallF);
2437
+ const result = supportsDynamicArgs && args.length === 0 ? funcValue(...argsToCallF) : funcValue(value, ...argsToCallF);
2169
2438
  context.writer.write(
2170
2439
  context.writer.wrapInColor(
2171
2440
  "Result: ",
@@ -2246,7 +2515,7 @@ function getConfigValue(state, category, key, defaultValue) {
2246
2515
  }
2247
2516
  function getPluginConfigValue(context, category, key, defaultValue) {
2248
2517
  try {
2249
- const storeManager = context.services.get(
2518
+ const storeManager = context.services.getRequired(
2250
2519
  "cli-state-store-manager"
2251
2520
  );
2252
2521
  if (!storeManager) return defaultValue;
@@ -2311,7 +2580,7 @@ function satisfiesVersionRange(installed, range) {
2311
2580
  }
2312
2581
 
2313
2582
  // src/lib/version.ts
2314
- var LIBRARY_VERSION = "2.0.0-beta.9";
2583
+ var LIBRARY_VERSION = "2.0.0-rc.2";
2315
2584
  var API_VERSION = 2;
2316
2585
 
2317
2586
  // src/lib/utils/server-version-negotiator.ts
@@ -2335,9 +2604,18 @@ var ServerVersionNegotiator = class {
2335
2604
  * Returns the negotiated API version and the base path for all subsequent calls,
2336
2605
  * or null if the server is unreachable or incompatible.
2337
2606
  */
2338
- static async discover(baseUrl) {
2607
+ static async discover(baseUrl, headers, options) {
2608
+ let response;
2609
+ try {
2610
+ const resolved = resolveHeaders(headers);
2611
+ response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {
2612
+ headers: Object.keys(resolved).length > 0 ? resolved : void 0
2613
+ });
2614
+ } catch (e) {
2615
+ if (options?.rethrowNetworkErrors) throw e;
2616
+ return null;
2617
+ }
2339
2618
  try {
2340
- const response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`);
2341
2619
  if (!response.ok) return null;
2342
2620
  const info = await response.json();
2343
2621
  const version = this.negotiate(info);
@@ -2352,6 +2630,33 @@ var ServerVersionNegotiator = class {
2352
2630
  }
2353
2631
  };
2354
2632
 
2633
+ // src/lib/utils/websocket-auth.ts
2634
+ function buildAuthenticatedWebSocketUrl(wsUrl, headers) {
2635
+ const resolved = resolveHeaders(headers);
2636
+ if (Object.keys(resolved).length === 0) {
2637
+ return wsUrl;
2638
+ }
2639
+ const separator = wsUrl.includes("?") ? "&" : "?";
2640
+ const params = Object.entries(resolved).map(
2641
+ ([key, value]) => `_header_${encodeURIComponent(key)}=${encodeURIComponent(value)}`
2642
+ ).join("&");
2643
+ return `${wsUrl}${separator}${params}`;
2644
+ }
2645
+ async function resolveServerWebSocketUrl(services, serverName, wsUrl, configHeaders) {
2646
+ const authService = services?.get(ICliServerAuthService_TOKEN);
2647
+ const params = await authService?.getWebSocketParams?.(serverName);
2648
+ if (params) {
2649
+ return appendQueryParams(wsUrl, params);
2650
+ }
2651
+ return buildAuthenticatedWebSocketUrl(wsUrl, () => resolveServerHeaders(services, serverName, configHeaders));
2652
+ }
2653
+ function appendQueryParams(url, params) {
2654
+ const entries = Object.entries(params);
2655
+ if (!entries.length) return url;
2656
+ const query = entries.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join("&");
2657
+ return `${url}${url.includes("?") ? "&" : "?"}${query}`;
2658
+ }
2659
+
2355
2660
  // src/lib/utils/panel-theme-sync.ts
2356
2661
  function hexToRgb(hex) {
2357
2662
  const m = /^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/.exec(hex);
@@ -2424,7 +2729,219 @@ function stripAnsi(text) {
2424
2729
  return text.replace(ANSI_RE, "");
2425
2730
  }
2426
2731
  function visibleLength(text) {
2427
- return stripAnsi(text).length;
2732
+ const stripped = stripAnsi(text);
2733
+ let width = 0;
2734
+ for (const ch of stripped) {
2735
+ const cp = ch.codePointAt(0);
2736
+ if (cp >= 65024 && cp <= 65039) continue;
2737
+ if (cp === 8205) continue;
2738
+ if (cp >= 768 && cp <= 879) continue;
2739
+ width += isWideCharacter(cp) ? 2 : 1;
2740
+ }
2741
+ return width;
2742
+ }
2743
+ function truncateToWidth(text, width, ellipsis = "\u2026") {
2744
+ if (width < 1) return "";
2745
+ if (visibleLength(text) <= width) return text;
2746
+ const room = Math.max(0, width - visibleLength(ellipsis));
2747
+ let out = "";
2748
+ let used = 0;
2749
+ let i = 0;
2750
+ while (i < text.length) {
2751
+ if (text[i] === "\x1B") {
2752
+ const m = /^\x1b\[[0-9;]*m/.exec(text.slice(i));
2753
+ if (m) {
2754
+ out += m[0];
2755
+ i += m[0].length;
2756
+ continue;
2757
+ }
2758
+ }
2759
+ const ch = String.fromCodePoint(text.codePointAt(i));
2760
+ const w = visibleLength(ch);
2761
+ if (used + w > room) break;
2762
+ out += ch;
2763
+ used += w;
2764
+ i += ch.length;
2765
+ }
2766
+ return `${out}${ellipsis}\x1B[0m`;
2767
+ }
2768
+ function isWideCharacter(cp) {
2769
+ if (cp >= 126976) return true;
2770
+ if (cp >= 9728 && cp <= 10175) return true;
2771
+ if (cp >= 9984 && cp <= 10175) return true;
2772
+ if (cp >= 19968 && cp <= 40959) return true;
2773
+ if (cp >= 63744 && cp <= 64255) return true;
2774
+ if (cp >= 65281 && cp <= 65376) return true;
2775
+ if (cp >= 65504 && cp <= 65510) return true;
2776
+ if (cp >= 11904 && cp <= 12255) return true;
2777
+ if (cp >= 12288 && cp <= 12543) return true;
2778
+ if (cp >= 12800 && cp <= 13055) return true;
2779
+ if (cp >= 13056 && cp <= 13311) return true;
2780
+ if (cp >= 127232 && cp <= 127487) return true;
2781
+ if (cp >= 8960 && cp <= 9215) return true;
2782
+ return false;
2783
+ }
2784
+
2785
+ // src/lib/utils/access-guards.ts
2786
+ var list = (value) => Array.isArray(value) ? value.filter((v) => typeof v === "string" && v.trim()) : [];
2787
+ var authorization = (context) => {
2788
+ try {
2789
+ return context.services.get(ICliAuthorizationService_TOKEN);
2790
+ } catch {
2791
+ return void 0;
2792
+ }
2793
+ };
2794
+ function chain(processor) {
2795
+ const out = [];
2796
+ let current = processor;
2797
+ while (current && out.length < 32 && !out.includes(current)) {
2798
+ out.push(current);
2799
+ current = current.parent;
2800
+ }
2801
+ return out;
2802
+ }
2803
+ var requiredPermissionsOf = (p) => [...new Set(chain(p).flatMap((x) => list(x.metadata?.requiredPermissions)))];
2804
+ var requiredGroupLevels = (p) => chain(p).map((x) => list(x.metadata?.requiredGroups)).filter((g) => g.length > 0);
2805
+ var needsAuth = (p) => chain(p).some((x) => x.metadata?.requireAuth === true) || requiredGroupLevels(p).length > 0 || requiredPermissionsOf(p).length > 0;
2806
+ var cliRequireAuthGuard = {
2807
+ name: "access:require-auth",
2808
+ priority: -100,
2809
+ appliesTo: (processor, _command, context) => needsAuth(processor) && !!authorization(context),
2810
+ canActivate: (_command, processor, context) => authorization(context).getPrincipal() ? true : `${processor.command}: login required`
2811
+ };
2812
+ var cliRequiredGroupsGuard = {
2813
+ name: "access:required-groups",
2814
+ priority: -90,
2815
+ appliesTo: (processor, _command, context) => requiredGroupLevels(processor).length > 0 && !!authorization(context),
2816
+ canActivate: (_command, processor, context) => {
2817
+ const auth = authorization(context);
2818
+ const principal = auth.getPrincipal();
2819
+ if (!principal) return `${processor.command}: login required`;
2820
+ if (auth.can("*")) return true;
2821
+ for (const required of requiredGroupLevels(processor)) {
2822
+ const member = required.some((g) => principal.groups.some((pg) => pg.toLowerCase() === g.toLowerCase()));
2823
+ if (!member) return `${processor.command}: permission denied (requires group: ${required.join(" or ")})`;
2824
+ }
2825
+ return true;
2826
+ }
2827
+ };
2828
+ var cliRequiredPermissionsGuard = {
2829
+ name: "access:required-permissions",
2830
+ priority: -80,
2831
+ appliesTo: (processor, _command, context) => requiredPermissionsOf(processor).length > 0 && !!authorization(context),
2832
+ canActivate: (_command, processor, context) => {
2833
+ const principal = authorization(context).getPrincipal();
2834
+ if (!principal) return `${processor.command}: login required`;
2835
+ const missing = cliMissingPermissions(principal.permissions, requiredPermissionsOf(processor));
2836
+ return missing.length === 0 ? true : `${processor.command}: permission denied (requires ${missing.join(", ")})`;
2837
+ }
2838
+ };
2839
+ var cliAccessMetadataGuards = [
2840
+ cliRequireAuthGuard,
2841
+ cliRequiredGroupsGuard,
2842
+ cliRequiredPermissionsGuard
2843
+ ];
2844
+
2845
+ // src/lib/utils/server-target.ts
2846
+ function cliDefaultServer(context) {
2847
+ const servers = context.options?.servers ?? [];
2848
+ const manager = context.services?.get(ICliServerManager_TOKEN);
2849
+ const preferred = manager?.preferredServer?.();
2850
+ return (preferred ? servers.find((s) => s.name === preferred) : void 0) ?? servers[0];
2851
+ }
2852
+
2853
+ // src/lib/utils/help-format.ts
2854
+ function writeColumns(context, rows, formatLeft, formatRight) {
2855
+ const width = Math.max(...rows.map(([left]) => left.length)) + 2;
2856
+ for (const [left, right] of rows) {
2857
+ context.writer.writeln(
2858
+ ` ${formatLeft(left.padEnd(width))}${formatRight(right)}`
2859
+ );
2860
+ }
2861
+ }
2862
+ function writeUsage(context, rows) {
2863
+ const { writer, translator } = context;
2864
+ writer.writeln(`\u{1F4CB} ${translator.t("cli.common.usage", "Usage:")}`);
2865
+ writeColumns(
2866
+ context,
2867
+ rows,
2868
+ (cmd) => writer.wrapInColor(cmd, "\x1B[36m" /* Cyan */),
2869
+ (text) => text
2870
+ );
2871
+ }
2872
+ function writeExamples(context, rows) {
2873
+ const { writer, translator } = context;
2874
+ writer.writeln(`\u{1F4DD} ${translator.t("cli.common.examples", "Examples:")}`);
2875
+ writeColumns(
2876
+ context,
2877
+ rows,
2878
+ (cmd) => cmd,
2879
+ (comment) => writer.wrapInColor(`# ${comment}`, "\x1B[32m" /* Green */)
2880
+ );
2881
+ }
2882
+ function writeWrapped(context, text, indent = 0) {
2883
+ const cols = context.terminal?.cols ?? 80;
2884
+ const width = Math.max(20, Math.min(cols - 1, 100) - indent);
2885
+ const pad = " ".repeat(indent);
2886
+ let line = "";
2887
+ for (const word of text.split(/\s+/).filter(Boolean)) {
2888
+ if (line && visibleLength2(line) + 1 + visibleLength2(word) > width) {
2889
+ context.writer.writeln(pad + line);
2890
+ line = word;
2891
+ } else {
2892
+ line = line ? `${line} ${word}` : word;
2893
+ }
2894
+ }
2895
+ if (line) context.writer.writeln(pad + line);
2896
+ }
2897
+ function visibleLength2(text) {
2898
+ return text.replace(/\x1b\[[0-9;]*m/g, "").length;
2899
+ }
2900
+ function writeHint(context, command, action) {
2901
+ const { writer, translator } = context;
2902
+ const text = `\u{1F4A1} ${translator.t("cli.common.use_hint", "Use {command} {action}", {
2903
+ command: writer.wrapInColor(command, "\x1B[36m" /* Cyan */),
2904
+ action
2905
+ })}`;
2906
+ const width = Math.min((context.terminal?.cols ?? 80) - 1, 100) - 3;
2907
+ if (visibleLength2(text) + 1 <= width) {
2908
+ writer.writeInfo(text);
2909
+ return;
2910
+ }
2911
+ const lines = [];
2912
+ let line = "";
2913
+ for (const word of text.split(" ")) {
2914
+ if (line && visibleLength2(line) + 1 + visibleLength2(word) > width) {
2915
+ lines.push(line);
2916
+ line = word;
2917
+ } else {
2918
+ line = line ? `${line} ${word}` : word;
2919
+ }
2920
+ }
2921
+ if (line) lines.push(line);
2922
+ writer.writeInfo(lines[0]);
2923
+ for (const rest of lines.slice(1)) {
2924
+ writer.writeln(` ${rest}`);
2925
+ }
2926
+ }
2927
+
2928
+ // src/lib/utils/raw-argument.ts
2929
+ function unquoteRawArgument(text) {
2930
+ const value = text.trim();
2931
+ if (value.length < 2) return value;
2932
+ const quote = value[0];
2933
+ if (quote === "'") {
2934
+ return value.indexOf("'", 1) === value.length - 1 ? value.slice(1, -1) : value;
2935
+ }
2936
+ if (quote === '"') {
2937
+ for (let i = 1; i < value.length; i++) {
2938
+ if (value[i] === "\\") i++;
2939
+ else if (value[i] === '"') {
2940
+ return i === value.length - 1 ? value.slice(1, -1).replace(/\\(["\\$`])/g, "$1") : value;
2941
+ }
2942
+ }
2943
+ }
2944
+ return value;
2428
2945
  }
2429
2946
 
2430
2947
  // src/lib/utils/index.ts
@@ -2440,7 +2957,38 @@ var formatJson = (json) => {
2440
2957
  return colorizeJson(identedJson.split("\n").join("\r\n"));
2441
2958
  };
2442
2959
  var colorizeJson = (jsonString) => {
2443
- return jsonString.replace(/"([^"]+)":/g, '\x1B[33m"$1":\x1B[0m').replace(/: "([^"]*)"/g, ': \x1B[32m"$1"\x1B[0m').replace(/: (\d+)/g, ": \x1B[34m$1\x1B[0m").replace(/: (true|false)/g, ": \x1B[35m$1\x1B[0m").replace(/: (null)/g, ": \x1B[36m$1\x1B[0m");
2960
+ const RST = "\x1B[0m";
2961
+ const CYN = "\x1B[36m";
2962
+ const GRN = "\x1B[32m";
2963
+ const YLW = "\x1B[33m";
2964
+ const GRY = "\x1B[90m";
2965
+ const tokenRe = /("(?:[^"\\]|\\.)*"?)(\s*:)?|(\btrue\b|\bfalse\b|\bnull\b)|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)|([{}[\],])/g;
2966
+ let result = "";
2967
+ let lastIndex = 0;
2968
+ let m;
2969
+ while ((m = tokenRe.exec(jsonString)) !== null) {
2970
+ if (m.index > lastIndex) {
2971
+ result += jsonString.slice(lastIndex, m.index);
2972
+ }
2973
+ if (m[1] !== void 0) {
2974
+ if (m[2] !== void 0) {
2975
+ result += CYN + m[1] + RST + m[2];
2976
+ } else {
2977
+ result += GRN + m[1] + RST;
2978
+ }
2979
+ } else if (m[3] !== void 0) {
2980
+ result += YLW + m[3] + RST;
2981
+ } else if (m[4] !== void 0) {
2982
+ result += YLW + m[4] + RST;
2983
+ } else if (m[5] !== void 0) {
2984
+ result += GRY + m[5] + RST;
2985
+ }
2986
+ lastIndex = m.index + m[0].length;
2987
+ }
2988
+ if (lastIndex < jsonString.length) {
2989
+ result += jsonString.slice(lastIndex);
2990
+ }
2991
+ return result;
2444
2992
  };
2445
2993
  var toQueryString = (params) => {
2446
2994
  const searchParams = new URLSearchParams();
@@ -2495,6 +3043,9 @@ var CliModuleRegistry = class {
2495
3043
  constructor() {
2496
3044
  this.modules = /* @__PURE__ */ new Map();
2497
3045
  this.bootHandlers = [];
3046
+ this.unregisterHandlers = [];
3047
+ /** Registrations whose boot handlers are still running. */
3048
+ this.inFlight = /* @__PURE__ */ new Set();
2498
3049
  }
2499
3050
  /**
2500
3051
  * Register a handler that is called whenever a new module is registered.
@@ -2503,10 +3054,27 @@ var CliModuleRegistry = class {
2503
3054
  this.bootHandlers.push(handler);
2504
3055
  }
2505
3056
  /**
2506
- * Register a module and notify all boot handlers.
2507
- * Modules that do not meet the required API version are skipped with a warning.
3057
+ * Register a web plugin module and notify all boot handlers.
3058
+ * Modules whose `apiVersion` is below the runtime's `API_VERSION` are
3059
+ * skipped with a warning — this ensures only compatible frontend plugins load.
2508
3060
  */
2509
- async register(module) {
3061
+ register(module) {
3062
+ const registration = this.registerInternal(module);
3063
+ this.inFlight.add(registration);
3064
+ const done = () => this.inFlight.delete(registration);
3065
+ registration.then(done, done);
3066
+ return registration;
3067
+ }
3068
+ /**
3069
+ * Resolve once every registration in progress (including ones started
3070
+ * meanwhile, e.g. a plugin loading another) has finished booting.
3071
+ */
3072
+ async whenIdle() {
3073
+ while (this.inFlight.size > 0) {
3074
+ await Promise.allSettled([...this.inFlight]);
3075
+ }
3076
+ }
3077
+ async registerInternal(module) {
2510
3078
  const modApiVersion = module.apiVersion;
2511
3079
  if (typeof modApiVersion !== "number" || modApiVersion < API_VERSION) {
2512
3080
  const msg = `[CLI] Plugin "${module.name}" targets API version ${modApiVersion ?? "unknown"}, but this runtime requires API version ${API_VERSION}. Skipping.`;
@@ -2531,6 +3099,36 @@ var CliModuleRegistry = class {
2531
3099
  }
2532
3100
  }
2533
3101
  }
3102
+ /**
3103
+ * Register a handler that is called when a module is unregistered,
3104
+ * e.g. so its processors can be removed.
3105
+ */
3106
+ onModuleUnregister(handler) {
3107
+ this.unregisterHandlers.push(handler);
3108
+ }
3109
+ /**
3110
+ * Unregister a module and notify all unregister handlers. A module
3111
+ * registered again afterwards (e.g. a newer version) boots again.
3112
+ * Returns the removed module, or `undefined` when it was not registered.
3113
+ */
3114
+ unregister(name) {
3115
+ const module = this.modules.get(name);
3116
+ if (!module) return void 0;
3117
+ this.modules.delete(name);
3118
+ for (const handler of this.unregisterHandlers) {
3119
+ try {
3120
+ handler(module);
3121
+ } catch (e) {
3122
+ const msg = `[CLI] Unregister handler failed for module "${name}": ${e instanceof Error ? e.message : e}`;
3123
+ if (this.onWarn) {
3124
+ this.onWarn(msg);
3125
+ } else {
3126
+ console.warn(msg);
3127
+ }
3128
+ }
3129
+ }
3130
+ return module;
3131
+ }
2534
3132
  /**
2535
3133
  * Get a module by name.
2536
3134
  */
@@ -2569,8 +3167,7 @@ var initializeBrowserEnvironment = ({
2569
3167
  ...constants,
2570
3168
  ...utils,
2571
3169
  ...enums,
2572
- bootCliModule,
2573
- bootUmdModule
3170
+ bootCliModule
2574
3171
  };
2575
3172
  Object.defineProperty(window, "ngCore", {
2576
3173
  configurable: true,
@@ -2588,9 +3185,6 @@ var bootCliModule = async (module) => {
2588
3185
  await window.__cliModuleRegistry.register(module);
2589
3186
  }
2590
3187
  };
2591
- var bootUmdModule = async (module) => {
2592
- await bootCliModule(module);
2593
- };
2594
3188
 
2595
3189
  // src/lib/types/CancellablePromise.ts
2596
3190
  var CANCELLATION_ERROR_MESSAGE = "Promise cancelled";
@@ -2633,7 +3227,7 @@ var CancellablePromise = class {
2633
3227
  }
2634
3228
  };
2635
3229
 
2636
- // src/lib/themes/index.ts
3230
+ // src/lib/themes/default-themes.ts
2637
3231
  var DefaultThemes = {
2638
3232
  default: {
2639
3233
  background: "#070b14",
@@ -3269,6 +3863,8 @@ var DefaultThemes = {
3269
3863
  }
3270
3864
  };
3271
3865
  DefaultThemes.yellow = DefaultThemes.highContrastLight;
3866
+
3867
+ // src/lib/themes/default-theme-infos.ts
3272
3868
  var DefaultThemeInfos = {
3273
3869
  default: {
3274
3870
  theme: DefaultThemes.default,
@@ -3597,36 +4193,66 @@ exports.BrowserFileTransferService = BrowserFileTransferService;
3597
4193
  exports.CANCELLATION_ERROR_MESSAGE = CANCELLATION_ERROR_MESSAGE;
3598
4194
  exports.CLI_CONFIGURE_STORE_NAME = CLI_CONFIGURE_STORE_NAME;
3599
4195
  exports.CancellablePromise = CancellablePromise;
4196
+ exports.CliAccessDeniedError = CliAccessDeniedError;
3600
4197
  exports.CliBackgroundColor = CliBackgroundColor;
3601
4198
  exports.CliForegroundColor = CliForegroundColor;
4199
+ exports.CliHttpError = CliHttpError;
3602
4200
  exports.CliIcon = CliIcon;
3603
4201
  exports.CliLogLevel = CliLogLevel;
3604
4202
  exports.CliModuleRegistry = CliModuleRegistry;
4203
+ exports.CliServerPermissions = CliServerPermissions;
4204
+ exports.CliUsersPermissions = CliUsersPermissions;
3605
4205
  exports.DEFAULT_DIR_PERMISSIONS = DEFAULT_DIR_PERMISSIONS;
3606
4206
  exports.DEFAULT_FILE_PERMISSIONS = DEFAULT_FILE_PERMISSIONS;
3607
4207
  exports.DefaultLibraryAuthor = DefaultLibraryAuthor;
3608
4208
  exports.DefaultThemeInfos = DefaultThemeInfos;
3609
4209
  exports.DefaultThemes = DefaultThemes;
4210
+ exports.ICliAuditService_TOKEN = ICliAuditService_TOKEN;
3610
4211
  exports.ICliAuthService_TOKEN = ICliAuthService_TOKEN;
4212
+ exports.ICliAuthorizationService_TOKEN = ICliAuthorizationService_TOKEN;
4213
+ exports.ICliCommandGuard_TOKEN = ICliCommandGuard_TOKEN;
3611
4214
  exports.ICliCompletionProvider_TOKEN = ICliCompletionProvider_TOKEN;
3612
4215
  exports.ICliDragDropService_TOKEN = ICliDragDropService_TOKEN;
4216
+ exports.ICliEventBus_TOKEN = ICliEventBus_TOKEN;
3613
4217
  exports.ICliFilePickerProvider_TOKEN = ICliFilePickerProvider_TOKEN;
3614
4218
  exports.ICliFileTransferService_TOKEN = ICliFileTransferService_TOKEN;
3615
4219
  exports.ICliGroupsStoreService_TOKEN = ICliGroupsStoreService_TOKEN;
4220
+ exports.ICliHttpClient_TOKEN = ICliHttpClient_TOKEN;
4221
+ exports.ICliKeyValueStore_TOKEN = ICliKeyValueStore_TOKEN;
4222
+ exports.ICliPermissionRegistry_TOKEN = ICliPermissionRegistry_TOKEN;
3616
4223
  exports.ICliPermissionService_TOKEN = ICliPermissionService_TOKEN;
4224
+ exports.ICliServerAuthService_TOKEN = ICliServerAuthService_TOKEN;
4225
+ exports.ICliServerAuthTokenProvider_TOKEN = ICliServerAuthTokenProvider_TOKEN;
4226
+ exports.ICliServerManager_TOKEN = ICliServerManager_TOKEN;
4227
+ exports.ICliSessionsService_TOKEN = ICliSessionsService_TOKEN;
3617
4228
  exports.ICliTranslationService_TOKEN = ICliTranslationService_TOKEN;
4229
+ exports.ICliUserEventService_TOKEN = ICliUserEventService_TOKEN;
3618
4230
  exports.ICliUserSessionService_TOKEN = ICliUserSessionService_TOKEN;
3619
4231
  exports.ICliUsersStoreService_TOKEN = ICliUsersStoreService_TOKEN;
3620
4232
  exports.LIBRARY_VERSION = LIBRARY_VERSION;
3621
4233
  exports.ObjectDescriber = ObjectDescriber;
3622
4234
  exports.ServerVersionNegotiator = ServerVersionNegotiator;
4235
+ exports.appendQueryParams = appendQueryParams;
3623
4236
  exports.bootCliModule = bootCliModule;
3624
- exports.bootUmdModule = bootUmdModule;
4237
+ exports.buildAuthenticatedWebSocketUrl = buildAuthenticatedWebSocketUrl;
3625
4238
  exports.clearTerminalLine = clearTerminalLine;
4239
+ exports.cliAccessMetadataGuards = cliAccessMetadataGuards;
4240
+ exports.cliAuthorize = cliAuthorize;
4241
+ exports.cliCanAccess = cliCanAccess;
4242
+ exports.cliDefaultServer = cliDefaultServer;
4243
+ exports.cliEvaluateAccess = cliEvaluateAccess;
4244
+ exports.cliHasPermission = cliHasPermission;
4245
+ exports.cliMergePermissions = cliMergePermissions;
4246
+ exports.cliMissingPermissions = cliMissingPermissions;
4247
+ exports.cliPermissionMatches = cliPermissionMatches;
4248
+ exports.cliRequireAuthGuard = cliRequireAuthGuard;
4249
+ exports.cliRequiredGroupsGuard = cliRequiredGroupsGuard;
4250
+ exports.cliRequiredPermissionsGuard = cliRequiredPermissionsGuard;
3626
4251
  exports.colorFirstWord = colorFirstWord;
3627
4252
  exports.colorizeJson = colorizeJson;
3628
4253
  exports.compareVersions = compareVersions;
3629
4254
  exports.constants = constants;
4255
+ exports.createCliToken = createCliToken;
3630
4256
  exports.createWorkerService = createWorkerService;
3631
4257
  exports.delay = delay;
3632
4258
  exports.derivePanelThemeStyles = derivePanelThemeStyles;
@@ -3638,15 +4264,28 @@ exports.getPluginConfigValue = getPluginConfigValue;
3638
4264
  exports.getRightOfWord = getRightOfWord;
3639
4265
  exports.highlightTextWithBg = highlightTextWithBg;
3640
4266
  exports.initializeBrowserEnvironment = initializeBrowserEnvironment;
4267
+ exports.isCliAccessDeniedError = isCliAccessDeniedError;
4268
+ exports.joinShellWords = joinShellWords;
3641
4269
  exports.loadPanelPosition = loadPanelPosition;
3642
4270
  exports.nextPanelPosition = nextPanelPosition;
4271
+ exports.quoteShellWord = quoteShellWord;
3643
4272
  exports.resolveConfigurationCategories = resolveConfigurationCategories;
4273
+ exports.resolveHeaders = resolveHeaders;
4274
+ exports.resolveServerHeaders = resolveServerHeaders;
4275
+ exports.resolveServerWebSocketUrl = resolveServerWebSocketUrl;
3644
4276
  exports.satisfiesMinVersion = satisfiesMinVersion;
3645
4277
  exports.satisfiesVersionRange = satisfiesVersionRange;
3646
4278
  exports.savePanelPosition = savePanelPosition;
4279
+ exports.splitShellWords = splitShellWords;
3647
4280
  exports.stripAnsi = stripAnsi;
3648
4281
  exports.toQueryString = toQueryString;
4282
+ exports.truncateToWidth = truncateToWidth;
4283
+ exports.unquoteRawArgument = unquoteRawArgument;
3649
4284
  exports.utils = utils;
3650
4285
  exports.visibleLength = visibleLength;
4286
+ exports.writeExamples = writeExamples;
4287
+ exports.writeHint = writeHint;
4288
+ exports.writeUsage = writeUsage;
4289
+ exports.writeWrapped = writeWrapped;
3651
4290
  //# sourceMappingURL=public-api.js.map
3652
4291
  //# sourceMappingURL=public-api.js.map