@qodalis/cli-lang-it 2.0.0-beta.16 → 2.0.0-beta.18

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.
@@ -8,7 +8,11 @@ var langIt = (() => {
8
8
  var __getProtoOf = Object.getPrototypeOf;
9
9
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
10
  var __commonJS = (cb, mod) => function __require() {
11
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11
+ try {
12
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
13
+ } catch (e) {
14
+ throw mod = 0, e;
15
+ }
12
16
  };
13
17
  var __copyProps = (to, from, except, desc) => {
14
18
  if (from && typeof from === "object" || typeof from === "function") {
@@ -27,7 +31,7 @@ var langIt = (() => {
27
31
  mod
28
32
  ));
29
33
  var require_constants = __commonJS({
30
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/constants.js"(exports$1, module) {
34
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports, module) {
31
35
  var SEMVER_SPEC_VERSION = "2.0.0";
32
36
  var MAX_LENGTH = 256;
33
37
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
@@ -56,26 +60,26 @@ var langIt = (() => {
56
60
  }
57
61
  });
58
62
  var require_debug = __commonJS({
59
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/debug.js"(exports$1, module) {
63
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports, module) {
60
64
  var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
61
65
  };
62
66
  module.exports = debug;
63
67
  }
64
68
  });
65
69
  var require_re = __commonJS({
66
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/re.js"(exports$1, module) {
70
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports, module) {
67
71
  var {
68
72
  MAX_SAFE_COMPONENT_LENGTH,
69
73
  MAX_SAFE_BUILD_LENGTH,
70
74
  MAX_LENGTH
71
75
  } = require_constants();
72
76
  var debug = require_debug();
73
- exports$1 = module.exports = {};
74
- var re = exports$1.re = [];
75
- var safeRe = exports$1.safeRe = [];
76
- var src = exports$1.src = [];
77
- var safeSrc = exports$1.safeSrc = [];
78
- var t = exports$1.t = {};
77
+ exports = module.exports = {};
78
+ var re = exports.re = [];
79
+ var safeRe = exports.safeRe = [];
80
+ var src = exports.src = [];
81
+ var safeSrc = exports.safeSrc = [];
82
+ var t = exports.t = {};
79
83
  var R = 0;
80
84
  var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
81
85
  var safeRegexReplacements = [
@@ -128,18 +132,18 @@ var langIt = (() => {
128
132
  createToken("COERCERTLFULL", src[t.COERCEFULL], true);
129
133
  createToken("LONETILDE", "(?:~>?)");
130
134
  createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
131
- exports$1.tildeTrimReplace = "$1~";
135
+ exports.tildeTrimReplace = "$1~";
132
136
  createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
133
137
  createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
134
138
  createToken("LONECARET", "(?:\\^)");
135
139
  createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true);
136
- exports$1.caretTrimReplace = "$1^";
140
+ exports.caretTrimReplace = "$1^";
137
141
  createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
138
142
  createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
139
143
  createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
140
144
  createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
141
145
  createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
142
- exports$1.comparatorTrimReplace = "$1$2$3";
146
+ exports.comparatorTrimReplace = "$1$2$3";
143
147
  createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);
144
148
  createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);
145
149
  createToken("STAR", "(<|>)?=?\\s*\\*");
@@ -148,7 +152,7 @@ var langIt = (() => {
148
152
  }
149
153
  });
150
154
  var require_parse_options = __commonJS({
151
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/parse-options.js"(exports$1, module) {
155
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports, module) {
152
156
  var looseOption = Object.freeze({ loose: true });
153
157
  var emptyOpts = Object.freeze({});
154
158
  var parseOptions = (options) => {
@@ -164,7 +168,7 @@ var langIt = (() => {
164
168
  }
165
169
  });
166
170
  var require_identifiers = __commonJS({
167
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/identifiers.js"(exports$1, module) {
171
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports, module) {
168
172
  var numeric = /^[0-9]+$/;
169
173
  var compareIdentifiers = (a, b) => {
170
174
  if (typeof a === "number" && typeof b === "number") {
@@ -186,12 +190,24 @@ var langIt = (() => {
186
190
  }
187
191
  });
188
192
  var require_semver = __commonJS({
189
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/semver.js"(exports$1, module) {
193
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports, module) {
190
194
  var debug = require_debug();
191
195
  var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
192
196
  var { safeRe: re, t } = require_re();
193
197
  var parseOptions = require_parse_options();
194
198
  var { compareIdentifiers } = require_identifiers();
199
+ var isPrereleaseIdentifier = (prerelease, identifier) => {
200
+ const identifiers = identifier.split(".");
201
+ if (identifiers.length > prerelease.length) {
202
+ return false;
203
+ }
204
+ for (let i = 0; i < identifiers.length; i++) {
205
+ if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
206
+ return false;
207
+ }
208
+ }
209
+ return true;
210
+ };
195
211
  var SemVer = class _SemVer {
196
212
  constructor(version, options) {
197
213
  options = parseOptions(options);
@@ -438,8 +454,9 @@ var langIt = (() => {
438
454
  if (identifierBase === false) {
439
455
  prerelease = [identifier];
440
456
  }
441
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
442
- if (isNaN(this.prerelease[1])) {
457
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
458
+ const prereleaseBase = this.prerelease[identifier.split(".").length];
459
+ if (isNaN(prereleaseBase)) {
443
460
  this.prerelease = prerelease;
444
461
  }
445
462
  } else {
@@ -462,7 +479,7 @@ var langIt = (() => {
462
479
  }
463
480
  });
464
481
  var require_parse = __commonJS({
465
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/parse.js"(exports$1, module) {
482
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports, module) {
466
483
  var SemVer = require_semver();
467
484
  var parse = (version, options, throwErrors = false) => {
468
485
  if (version instanceof SemVer) {
@@ -481,7 +498,7 @@ var langIt = (() => {
481
498
  }
482
499
  });
483
500
  var require_valid = __commonJS({
484
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/valid.js"(exports$1, module) {
501
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports, module) {
485
502
  var parse = require_parse();
486
503
  var valid2 = (version, options) => {
487
504
  const v = parse(version, options);
@@ -491,7 +508,7 @@ var langIt = (() => {
491
508
  }
492
509
  });
493
510
  var require_clean = __commonJS({
494
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/clean.js"(exports$1, module) {
511
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js"(exports, module) {
495
512
  var parse = require_parse();
496
513
  var clean = (version, options) => {
497
514
  const s = parse(version.trim().replace(/^[=v]+/, ""), options);
@@ -501,7 +518,7 @@ var langIt = (() => {
501
518
  }
502
519
  });
503
520
  var require_inc = __commonJS({
504
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/inc.js"(exports$1, module) {
521
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js"(exports, module) {
505
522
  var SemVer = require_semver();
506
523
  var inc = (version, release, options, identifier, identifierBase) => {
507
524
  if (typeof options === "string") {
@@ -522,7 +539,7 @@ var langIt = (() => {
522
539
  }
523
540
  });
524
541
  var require_diff = __commonJS({
525
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/diff.js"(exports$1, module) {
542
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js"(exports, module) {
526
543
  var parse = require_parse();
527
544
  var diff = (version1, version2) => {
528
545
  const v1 = parse(version1, null, true);
@@ -563,28 +580,28 @@ var langIt = (() => {
563
580
  }
564
581
  });
565
582
  var require_major = __commonJS({
566
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/major.js"(exports$1, module) {
583
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js"(exports, module) {
567
584
  var SemVer = require_semver();
568
585
  var major = (a, loose) => new SemVer(a, loose).major;
569
586
  module.exports = major;
570
587
  }
571
588
  });
572
589
  var require_minor = __commonJS({
573
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/minor.js"(exports$1, module) {
590
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js"(exports, module) {
574
591
  var SemVer = require_semver();
575
592
  var minor = (a, loose) => new SemVer(a, loose).minor;
576
593
  module.exports = minor;
577
594
  }
578
595
  });
579
596
  var require_patch = __commonJS({
580
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/patch.js"(exports$1, module) {
597
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js"(exports, module) {
581
598
  var SemVer = require_semver();
582
599
  var patch = (a, loose) => new SemVer(a, loose).patch;
583
600
  module.exports = patch;
584
601
  }
585
602
  });
586
603
  var require_prerelease = __commonJS({
587
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/prerelease.js"(exports$1, module) {
604
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js"(exports, module) {
588
605
  var parse = require_parse();
589
606
  var prerelease = (version, options) => {
590
607
  const parsed = parse(version, options);
@@ -594,28 +611,28 @@ var langIt = (() => {
594
611
  }
595
612
  });
596
613
  var require_compare = __commonJS({
597
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare.js"(exports$1, module) {
614
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports, module) {
598
615
  var SemVer = require_semver();
599
616
  var compare2 = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
600
617
  module.exports = compare2;
601
618
  }
602
619
  });
603
620
  var require_rcompare = __commonJS({
604
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rcompare.js"(exports$1, module) {
621
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js"(exports, module) {
605
622
  var compare2 = require_compare();
606
623
  var rcompare = (a, b, loose) => compare2(b, a, loose);
607
624
  module.exports = rcompare;
608
625
  }
609
626
  });
610
627
  var require_compare_loose = __commonJS({
611
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare-loose.js"(exports$1, module) {
628
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js"(exports, module) {
612
629
  var compare2 = require_compare();
613
630
  var compareLoose = (a, b) => compare2(a, b, true);
614
631
  module.exports = compareLoose;
615
632
  }
616
633
  });
617
634
  var require_compare_build = __commonJS({
618
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare-build.js"(exports$1, module) {
635
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js"(exports, module) {
619
636
  var SemVer = require_semver();
620
637
  var compareBuild = (a, b, loose) => {
621
638
  const versionA = new SemVer(a, loose);
@@ -626,63 +643,63 @@ var langIt = (() => {
626
643
  }
627
644
  });
628
645
  var require_sort = __commonJS({
629
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/sort.js"(exports$1, module) {
646
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js"(exports, module) {
630
647
  var compareBuild = require_compare_build();
631
648
  var sort = (list2, loose) => list2.sort((a, b) => compareBuild(a, b, loose));
632
649
  module.exports = sort;
633
650
  }
634
651
  });
635
652
  var require_rsort = __commonJS({
636
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rsort.js"(exports$1, module) {
653
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js"(exports, module) {
637
654
  var compareBuild = require_compare_build();
638
655
  var rsort = (list2, loose) => list2.sort((a, b) => compareBuild(b, a, loose));
639
656
  module.exports = rsort;
640
657
  }
641
658
  });
642
659
  var require_gt = __commonJS({
643
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gt.js"(exports$1, module) {
660
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports, module) {
644
661
  var compare2 = require_compare();
645
662
  var gt = (a, b, loose) => compare2(a, b, loose) > 0;
646
663
  module.exports = gt;
647
664
  }
648
665
  });
649
666
  var require_lt = __commonJS({
650
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lt.js"(exports$1, module) {
667
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports, module) {
651
668
  var compare2 = require_compare();
652
669
  var lt = (a, b, loose) => compare2(a, b, loose) < 0;
653
670
  module.exports = lt;
654
671
  }
655
672
  });
656
673
  var require_eq = __commonJS({
657
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/eq.js"(exports$1, module) {
674
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports, module) {
658
675
  var compare2 = require_compare();
659
676
  var eq = (a, b, loose) => compare2(a, b, loose) === 0;
660
677
  module.exports = eq;
661
678
  }
662
679
  });
663
680
  var require_neq = __commonJS({
664
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/neq.js"(exports$1, module) {
681
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports, module) {
665
682
  var compare2 = require_compare();
666
683
  var neq = (a, b, loose) => compare2(a, b, loose) !== 0;
667
684
  module.exports = neq;
668
685
  }
669
686
  });
670
687
  var require_gte = __commonJS({
671
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gte.js"(exports$1, module) {
688
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports, module) {
672
689
  var compare2 = require_compare();
673
690
  var gte2 = (a, b, loose) => compare2(a, b, loose) >= 0;
674
691
  module.exports = gte2;
675
692
  }
676
693
  });
677
694
  var require_lte = __commonJS({
678
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lte.js"(exports$1, module) {
695
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports, module) {
679
696
  var compare2 = require_compare();
680
697
  var lte = (a, b, loose) => compare2(a, b, loose) <= 0;
681
698
  module.exports = lte;
682
699
  }
683
700
  });
684
701
  var require_cmp = __commonJS({
685
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/cmp.js"(exports$1, module) {
702
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports, module) {
686
703
  var eq = require_eq();
687
704
  var neq = require_neq();
688
705
  var gt = require_gt();
@@ -729,7 +746,7 @@ var langIt = (() => {
729
746
  }
730
747
  });
731
748
  var require_coerce = __commonJS({
732
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/coerce.js"(exports$1, module) {
749
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js"(exports, module) {
733
750
  var SemVer = require_semver();
734
751
  var parse = require_parse();
735
752
  var { safeRe: re, t } = require_re();
@@ -771,8 +788,46 @@ var langIt = (() => {
771
788
  module.exports = coerce2;
772
789
  }
773
790
  });
791
+ var require_truncate = __commonJS({
792
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js"(exports, module) {
793
+ var parse = require_parse();
794
+ var constants2 = require_constants();
795
+ var SemVer = require_semver();
796
+ var truncate = (version, truncation, options) => {
797
+ if (!constants2.RELEASE_TYPES.includes(truncation)) {
798
+ return null;
799
+ }
800
+ const clonedVersion = cloneInputVersion(version, options);
801
+ return clonedVersion && doTruncation(clonedVersion, truncation);
802
+ };
803
+ var cloneInputVersion = (version, options) => {
804
+ const versionStringToParse = version instanceof SemVer ? version.version : version;
805
+ return parse(versionStringToParse, options);
806
+ };
807
+ var doTruncation = (version, truncation) => {
808
+ if (isPrerelease(truncation)) {
809
+ return version.version;
810
+ }
811
+ version.prerelease = [];
812
+ switch (truncation) {
813
+ case "major":
814
+ version.minor = 0;
815
+ version.patch = 0;
816
+ break;
817
+ case "minor":
818
+ version.patch = 0;
819
+ break;
820
+ }
821
+ return version.format();
822
+ };
823
+ var isPrerelease = (type) => {
824
+ return type.startsWith("pre");
825
+ };
826
+ module.exports = truncate;
827
+ }
828
+ });
774
829
  var require_lrucache = __commonJS({
775
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/lrucache.js"(exports$1, module) {
830
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports, module) {
776
831
  var LRUCache = class {
777
832
  constructor() {
778
833
  this.max = 1e3;
@@ -807,7 +862,7 @@ var langIt = (() => {
807
862
  }
808
863
  });
809
864
  var require_range = __commonJS({
810
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/range.js"(exports$1, module) {
865
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports, module) {
811
866
  var SPACE_CHARACTERS = /\s+/g;
812
867
  var Range = class _Range {
813
868
  constructor(range, options) {
@@ -874,6 +929,7 @@ var langIt = (() => {
874
929
  return this.range;
875
930
  }
876
931
  parseRange(range) {
932
+ range = range.replace(BUILDSTRIPRE, "");
877
933
  const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
878
934
  const memoKey = memoOpts + ":" + range;
879
935
  const cached = cache.get(memoKey);
@@ -956,12 +1012,14 @@ var langIt = (() => {
956
1012
  var SemVer = require_semver();
957
1013
  var {
958
1014
  safeRe: re,
1015
+ src,
959
1016
  t,
960
1017
  comparatorTrimReplace,
961
1018
  tildeTrimReplace,
962
1019
  caretTrimReplace
963
1020
  } = require_re();
964
1021
  var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
1022
+ var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g");
965
1023
  var isNullSet = (c) => c.value === "<0.0.0-0";
966
1024
  var isAny = (c) => c.value === "";
967
1025
  var isSatisfiable = (comparators, options) => {
@@ -990,20 +1048,22 @@ var langIt = (() => {
990
1048
  return comp;
991
1049
  };
992
1050
  var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
1051
+ var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
993
1052
  var replaceTildes = (comp, options) => {
994
1053
  return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
995
1054
  };
996
1055
  var replaceTilde = (comp, options) => {
997
1056
  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
1057
+ const z = options.includePrerelease ? "-0" : "";
998
1058
  return comp.replace(r, (_, M, m, p, pr) => {
999
1059
  debug("tilde", comp, _, M, m, p, pr);
1000
1060
  let ret;
1001
1061
  if (isX(M)) {
1002
1062
  ret = "";
1003
1063
  } else if (isX(m)) {
1004
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
1064
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
1005
1065
  } else if (isX(p)) {
1006
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
1066
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
1007
1067
  } else if (pr) {
1008
1068
  debug("replaceTilde pr", pr);
1009
1069
  ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
@@ -1049,9 +1109,9 @@ var langIt = (() => {
1049
1109
  debug("no pr");
1050
1110
  if (M === "0") {
1051
1111
  if (m === "0") {
1052
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
1112
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
1053
1113
  } else {
1054
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
1114
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
1055
1115
  }
1056
1116
  } else {
1057
1117
  ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
@@ -1070,6 +1130,9 @@ var langIt = (() => {
1070
1130
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
1071
1131
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
1072
1132
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
1133
+ if (invalidXRangeOrder(M, m, p)) {
1134
+ return comp;
1135
+ }
1073
1136
  const xM = isX(M);
1074
1137
  const xm = xM || isX(m);
1075
1138
  const xp = xm || isX(p);
@@ -1181,7 +1244,7 @@ var langIt = (() => {
1181
1244
  }
1182
1245
  });
1183
1246
  var require_comparator = __commonJS({
1184
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/comparator.js"(exports$1, module) {
1247
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports, module) {
1185
1248
  var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
1186
1249
  var Comparator = class _Comparator {
1187
1250
  static get ANY() {
@@ -1291,7 +1354,7 @@ var langIt = (() => {
1291
1354
  }
1292
1355
  });
1293
1356
  var require_satisfies = __commonJS({
1294
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/satisfies.js"(exports$1, module) {
1357
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports, module) {
1295
1358
  var Range = require_range();
1296
1359
  var satisfies2 = (version, range, options) => {
1297
1360
  try {
@@ -1305,14 +1368,14 @@ var langIt = (() => {
1305
1368
  }
1306
1369
  });
1307
1370
  var require_to_comparators = __commonJS({
1308
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/to-comparators.js"(exports$1, module) {
1371
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js"(exports, module) {
1309
1372
  var Range = require_range();
1310
1373
  var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
1311
1374
  module.exports = toComparators;
1312
1375
  }
1313
1376
  });
1314
1377
  var require_max_satisfying = __commonJS({
1315
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/max-satisfying.js"(exports$1, module) {
1378
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js"(exports, module) {
1316
1379
  var SemVer = require_semver();
1317
1380
  var Range = require_range();
1318
1381
  var maxSatisfying = (versions, range, options) => {
@@ -1338,7 +1401,7 @@ var langIt = (() => {
1338
1401
  }
1339
1402
  });
1340
1403
  var require_min_satisfying = __commonJS({
1341
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/min-satisfying.js"(exports$1, module) {
1404
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js"(exports, module) {
1342
1405
  var SemVer = require_semver();
1343
1406
  var Range = require_range();
1344
1407
  var minSatisfying = (versions, range, options) => {
@@ -1364,7 +1427,7 @@ var langIt = (() => {
1364
1427
  }
1365
1428
  });
1366
1429
  var require_min_version = __commonJS({
1367
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/min-version.js"(exports$1, module) {
1430
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports, module) {
1368
1431
  var SemVer = require_semver();
1369
1432
  var Range = require_range();
1370
1433
  var gt = require_gt();
@@ -1420,7 +1483,7 @@ var langIt = (() => {
1420
1483
  }
1421
1484
  });
1422
1485
  var require_valid2 = __commonJS({
1423
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/valid.js"(exports$1, module) {
1486
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports, module) {
1424
1487
  var Range = require_range();
1425
1488
  var validRange = (range, options) => {
1426
1489
  try {
@@ -1433,7 +1496,7 @@ var langIt = (() => {
1433
1496
  }
1434
1497
  });
1435
1498
  var require_outside = __commonJS({
1436
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/outside.js"(exports$1, module) {
1499
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js"(exports, module) {
1437
1500
  var SemVer = require_semver();
1438
1501
  var Comparator = require_comparator();
1439
1502
  var { ANY } = Comparator;
@@ -1499,21 +1562,21 @@ var langIt = (() => {
1499
1562
  }
1500
1563
  });
1501
1564
  var require_gtr = __commonJS({
1502
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/gtr.js"(exports$1, module) {
1565
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js"(exports, module) {
1503
1566
  var outside = require_outside();
1504
1567
  var gtr = (version, range, options) => outside(version, range, ">", options);
1505
1568
  module.exports = gtr;
1506
1569
  }
1507
1570
  });
1508
1571
  var require_ltr = __commonJS({
1509
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/ltr.js"(exports$1, module) {
1572
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js"(exports, module) {
1510
1573
  var outside = require_outside();
1511
1574
  var ltr = (version, range, options) => outside(version, range, "<", options);
1512
1575
  module.exports = ltr;
1513
1576
  }
1514
1577
  });
1515
1578
  var require_intersects = __commonJS({
1516
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/intersects.js"(exports$1, module) {
1579
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js"(exports, module) {
1517
1580
  var Range = require_range();
1518
1581
  var intersects = (r1, r2, options) => {
1519
1582
  r1 = new Range(r1, options);
@@ -1524,7 +1587,7 @@ var langIt = (() => {
1524
1587
  }
1525
1588
  });
1526
1589
  var require_simplify = __commonJS({
1527
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/simplify.js"(exports$1, module) {
1590
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js"(exports, module) {
1528
1591
  var satisfies2 = require_satisfies();
1529
1592
  var compare2 = require_compare();
1530
1593
  module.exports = (versions, range, options) => {
@@ -1571,7 +1634,7 @@ var langIt = (() => {
1571
1634
  }
1572
1635
  });
1573
1636
  var require_subset = __commonJS({
1574
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/subset.js"(exports$1, module) {
1637
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js"(exports, module) {
1575
1638
  var Range = require_range();
1576
1639
  var Comparator = require_comparator();
1577
1640
  var { ANY } = Comparator;
@@ -1678,7 +1741,7 @@ var langIt = (() => {
1678
1741
  if (higher === c && higher !== gt) {
1679
1742
  return false;
1680
1743
  }
1681
- } else if (gt.operator === ">=" && !satisfies2(gt.semver, String(c), options)) {
1744
+ } else if (gt.operator === ">=" && !c.test(gt.semver)) {
1682
1745
  return false;
1683
1746
  }
1684
1747
  }
@@ -1693,7 +1756,7 @@ var langIt = (() => {
1693
1756
  if (lower === c && lower !== lt) {
1694
1757
  return false;
1695
1758
  }
1696
- } else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
1759
+ } else if (lt.operator === "<=" && !c.test(lt.semver)) {
1697
1760
  return false;
1698
1761
  }
1699
1762
  }
@@ -1730,7 +1793,7 @@ var langIt = (() => {
1730
1793
  }
1731
1794
  });
1732
1795
  var require_semver2 = __commonJS({
1733
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/index.js"(exports$1, module) {
1796
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js"(exports, module) {
1734
1797
  var internalRe = require_re();
1735
1798
  var constants2 = require_constants();
1736
1799
  var SemVer = require_semver();
@@ -1758,6 +1821,7 @@ var langIt = (() => {
1758
1821
  var lte = require_lte();
1759
1822
  var cmp = require_cmp();
1760
1823
  var coerce2 = require_coerce();
1824
+ var truncate = require_truncate();
1761
1825
  var Comparator = require_comparator();
1762
1826
  var Range = require_range();
1763
1827
  var satisfies2 = require_satisfies();
@@ -1796,6 +1860,7 @@ var langIt = (() => {
1796
1860
  lte,
1797
1861
  cmp,
1798
1862
  coerce: coerce2,
1863
+ truncate,
1799
1864
  Comparator,
1800
1865
  Range,
1801
1866
  satisfies: satisfies2,
@@ -1821,11 +1886,35 @@ var langIt = (() => {
1821
1886
  };
1822
1887
  }
1823
1888
  });
1824
- var ICliTranslationService_TOKEN = "cli-translation-service";
1889
+ function createCliToken(name) {
1890
+ return name;
1891
+ }
1892
+ var ICliUserSessionService_TOKEN = createCliToken("cli-user-session-service");
1893
+ var ICliUsersStoreService_TOKEN = createCliToken("cli-users-store-service");
1894
+ var ICliGroupsStoreService_TOKEN = createCliToken("cli-groups-store-service");
1895
+ var ICliAuthService_TOKEN = createCliToken("cli-auth-service");
1896
+ var ICliCompletionProvider_TOKEN = createCliToken("cli-completion-provider");
1897
+ var ICliDragDropService_TOKEN = createCliToken("cli-drag-drop-service");
1898
+ var ICliFileTransferService_TOKEN = createCliToken("cli-file-transfer-service");
1899
+ var ICliTranslationService_TOKEN = createCliToken("cli-translation-service");
1900
+ var ICliPermissionService_TOKEN = createCliToken("cli-permission-service");
1901
+ var ICliFilePickerProvider_TOKEN = createCliToken("cli-file-picker-provider");
1902
+ var ICliHttpClient_TOKEN = createCliToken("cli-http-client");
1903
+ var ICliUserEventService_TOKEN = createCliToken("cli-user-event-service");
1904
+ var ICliAuditService_TOKEN = createCliToken("cli-audit-service");
1905
+ var ICliAuthorizationService_TOKEN = createCliToken("cli-authorization-service");
1906
+ var ICliPermissionRegistry_TOKEN = createCliToken("cli-permission-registry");
1907
+ var ICliSessionsService_TOKEN = createCliToken("cli-sessions-service");
1908
+ var ICliKeyValueStore_TOKEN = createCliToken("cli-key-value-store");
1909
+ var ICliServerAuthTokenProvider_TOKEN = createCliToken("cli-server-auth-token-provider");
1910
+ var ICliServerAuthService_TOKEN = createCliToken("cli-server-auth-service");
1911
+ var ICliServerManager_TOKEN = createCliToken("cli-server-manager");
1825
1912
  function resolveHeaders(provider) {
1826
1913
  if (!provider) return {};
1827
1914
  return typeof provider === "function" ? provider() : provider;
1828
1915
  }
1916
+ var ICliCommandGuard_TOKEN = createCliToken("cli-command-guard");
1917
+ var ICliEventBus_TOKEN = createCliToken("cli-event-bus");
1829
1918
  var semver = __toESM(require_semver2());
1830
1919
  var API_VERSION = 2;
1831
1920
  var VERSIONS_ENDPOINT = "/api/qcli/versions";
@@ -1848,12 +1937,18 @@ var langIt = (() => {
1848
1937
  * Returns the negotiated API version and the base path for all subsequent calls,
1849
1938
  * or null if the server is unreachable or incompatible.
1850
1939
  */
1851
- static async discover(baseUrl, headers) {
1940
+ static async discover(baseUrl, headers, options) {
1941
+ let response;
1852
1942
  try {
1853
1943
  const resolved = resolveHeaders(headers);
1854
- const response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {
1944
+ response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {
1855
1945
  headers: Object.keys(resolved).length > 0 ? resolved : void 0
1856
1946
  });
1947
+ } catch (e) {
1948
+ if (options?.rethrowNetworkErrors) throw e;
1949
+ return null;
1950
+ }
1951
+ try {
1857
1952
  if (!response.ok) return null;
1858
1953
  const info = await response.json();
1859
1954
  const version = this.negotiate(info);
@@ -2688,6 +2783,7 @@ var langIt = (() => {
2688
2783
  var itTranslations = {
2689
2784
  "cli.common.usage": "Utilizzo:",
2690
2785
  "cli.common.examples": "Esempi:",
2786
+ "cli.common.use_hint": "Usa {command} {action}",
2691
2787
  "cli.help.description": "Mostra la guida per un comando",
2692
2788
  "cli.help.long_description": "Mostra le informazioni di aiuto per i comandi",
2693
2789
  "cli.help.shortcuts": "Scorciatoie",
@@ -2733,9 +2829,17 @@ var langIt = (() => {
2733
2829
  "cli.configure.all_reset": "Tutta la configurazione ripristinata ai valori predefiniti",
2734
2830
  "cli.configure.invalid_number": "Numero non valido: {value}",
2735
2831
  "cli.configure.invalid_options": "Valore non valido. Opzioni valide: {options}",
2832
+ "cli.configure.invalid_boolean": 'Valore booleano non valido: "{value}". Usa true o false.',
2736
2833
  "cli.echo.description": "Stampa il testo specificato",
2737
2834
  "cli.echo.long_description": "Stampa il testo specificato nel terminale",
2738
2835
  "cli.echo.piping_note": "Supporta output di testo e oggetti JSON tramite pipe",
2836
+ "cli.echo.help.print_text_terminal_add": "Stampa il testo nel terminale. Aggiungi > file per salvarlo in un file (sostituendolo) o >> file per aggiungerlo in fondo.",
2837
+ "cli.echo.help.print_text": "Stampare testo",
2838
+ "cli.echo.help.write_text_file": "Scrivere testo in un file",
2839
+ "cli.echo.help.append_text_file": "Aggiungere testo a un file",
2840
+ "cli.echo.help.print_greeting": "Stampare un saluto",
2841
+ "cli.echo.help.create_replace_notes_txt": "Creare o sostituire notes.txt",
2842
+ "cli.echo.help.add_line": "Aggiungervi una riga",
2739
2843
  "cli.clear.description": "Pulisci il terminale",
2740
2844
  "cli.clear.long_description": "Cancella tutto il contenuto dello schermo del terminale",
2741
2845
  "cli.clear.shortcut": "Scorciatoia:",
@@ -2745,6 +2849,7 @@ var langIt = (() => {
2745
2849
  "cli.uname.cli_versions": "Versioni del core e delle librerie del CLI",
2746
2850
  "cli.uname.browser_info": "Nome del browser, versione, user agent, lingua e piattaforma",
2747
2851
  "cli.uname.os": "Sistema operativo",
2852
+ "cli.uname.description": "Stampa informazioni dettagliate sul sistema e sul browser",
2748
2853
  "cli.hash.description": "Generare hash digest da testo",
2749
2854
  "cli.hash.long_description": "Generare hash digest crittografici usando la Web Crypto API",
2750
2855
  "cli.cal.description": "Mostrare un calendario",
@@ -2755,6 +2860,7 @@ var langIt = (() => {
2755
2860
  "cli.time.description": "Mostrare ora locale e UTC corrente",
2756
2861
  "cli.time.long_description": "Mostrare ora locale e UTC corrente",
2757
2862
  "cli.time.show_current": "Mostrare ora locale e UTC corrente",
2863
+ "cli.time.now.description": "Mostrare l'ora attuale",
2758
2864
  "cli.uptime.description": "Mostrare il tempo di attivit\xE0 della sessione",
2759
2865
  "cli.uptime.long_description": "Mostra da quanto tempo \xE8 attiva la sessione corrente del terminale",
2760
2866
  "cli.convert.description": "Convertire tra unit\xE0 (lunghezza, peso, temperatura, dati)",
@@ -2773,6 +2879,9 @@ var langIt = (() => {
2773
2879
  "cli.lorem.gen_words": "Generare parole",
2774
2880
  "cli.lorem.gen_sentences": "Generare frasi",
2775
2881
  "cli.lorem.gen_paragraphs": "Generare paragrafi",
2882
+ "cli.lorem.words.description": "Generare un numero di parole",
2883
+ "cli.lorem.sentences.description": "Generare un numero di frasi",
2884
+ "cli.lorem.paragraphs.description": "Generare un numero di paragrafi",
2776
2885
  "cli.alias.description": "Gestire gli alias dei comandi",
2777
2886
  "cli.alias.long_description": "Creare scorciatoie alias per comandi usati frequentemente",
2778
2887
  "cli.alias.create_new": "Creare un nuovo alias",
@@ -2792,6 +2901,9 @@ var langIt = (() => {
2792
2901
  "cli.history.clear": "Cancellare tutta la cronologia",
2793
2902
  "cli.history.arrow_hint": "Usa i tasti freccia {keys} per navigare nella cronologia",
2794
2903
  "cli.history.prefix_hint": "Digita un prefisso e premi {key} per cercare nella cronologia per prefisso",
2904
+ "cli.history.description": "Stampa la cronologia dei comandi della sessione corrente",
2905
+ "cli.history.clear.description": "Cancella la cronologia dei comandi",
2906
+ "cli.history.search.description": "Cercare un pattern nella cronologia dei comandi",
2795
2907
  "cli.theme.description": "Interagire con il tema",
2796
2908
  "cli.theme.long_description": "Personalizzare l'aspetto del terminale con temi e colori",
2797
2909
  "cli.hex.description": "Codificare/decodificare hex e conversioni di base numerica",
@@ -2800,6 +2912,10 @@ var langIt = (() => {
2800
2912
  "cli.hex.hex_to_text": "Esadecimale a testo",
2801
2913
  "cli.hex.base_conversion": "Conversione di base",
2802
2914
  "cli.feedback.long_description": "Segnalare bug, richiedere funzionalit\xE0 o suggerire nuovi comandi \u2014 in modo interattivo o inline.",
2915
+ "cli.feedback.report-bug.description": "Segnala un bug su GitHub",
2916
+ "cli.feedback.request-feature.description": "Richiede una nuova funzionalit\xE0 su GitHub",
2917
+ "cli.feedback.request-command.description": "Richiede un nuovo comando su GitHub",
2918
+ "cli.feedback.description": "Permette agli utenti di segnalare bug o richiedere funzionalit\xE0",
2803
2919
  "cli.jwt.description": "Decodificare e ispezionare token JWT",
2804
2920
  "cli.jwt.long_description": "Decodificare e ispezionare JSON Web Token (JWT)",
2805
2921
  "cli.jwt.decode_display": "Decodificare e mostrare il contenuto del JWT",
@@ -2814,12 +2930,20 @@ var langIt = (() => {
2814
2930
  "cli.services.restart_desc": "Riavviare un servizio",
2815
2931
  "cli.services.logs_desc": "Visualizzare i log del servizio",
2816
2932
  "cli.services.info_desc": "Dettagli del servizio",
2933
+ "cli.services.list.description": "Elencare tutti i servizi in background registrati",
2934
+ "cli.services.start.description": "Avviare un servizio in background",
2935
+ "cli.services.stop.description": "Fermare un servizio in background in esecuzione",
2936
+ "cli.services.restart.description": "Riavviare un servizio in background",
2937
+ "cli.services.logs.description": "Mostrare i log di un servizio in background",
2938
+ "cli.services.info.description": "Mostrare informazioni dettagliate su un servizio",
2817
2939
  "cli.yes.description": "Ripetere una stringa continuamente",
2818
2940
  "cli.yes.long_description": "Ripetere una stringa continuamente",
2819
2941
  "cli.clipboard.description": "Copiare o incollare dagli appunti",
2820
2942
  "cli.clipboard.long_description": "Copiare testo negli appunti di sistema o incollare testo da essi",
2821
2943
  "cli.clipboard.copy_desc": "Copiare testo negli appunti",
2822
2944
  "cli.clipboard.paste_desc": "Incollare dagli appunti",
2945
+ "cli.clipboard.copy.description": "Copiare il testo negli appunti",
2946
+ "cli.clipboard.paste.description": "Incollare il testo dagli appunti",
2823
2947
  "cli.hotkeys.description": "Mostrare informazioni sulle scorciatoie da tastiera",
2824
2948
  "cli.hotkeys.long_description": "Mostra tutte le combinazioni di tasti e scorciatoie disponibili",
2825
2949
  "cli.export.description": "Impostare variabili d'ambiente",
@@ -2827,8 +2951,14 @@ var langIt = (() => {
2827
2951
  "cli.export.show_all": "Mostrare tutte le variabili",
2828
2952
  "cli.export.set_var": "Impostare una variabile",
2829
2953
  "cli.export.set_spaces": "Impostare con spazi",
2954
+ "cli.export.set_many": "Impostarne diverse insieme",
2955
+ "cli.export.set_global": "Impostare per tutti gli utenti",
2956
+ "cli.export.set_session": "Solo questo terminale, non salvato",
2957
+ "cli.export.scopes": "Usa le variabili come $VAR o ${VAR}. Un valore impostato in questo terminale prevale su quello salvato da te, che prevale su uno condiviso. env mostra da dove proviene ciascuno.",
2830
2958
  "cli.unset.description": "Rimuovere variabili d'ambiente",
2831
2959
  "cli.unset.long_description": "Rimuovere una variabile d'ambiente",
2960
+ "cli.unset.own": "Rimuovere per questo terminale e per te (un valore condiviso viene nascosto per te)",
2961
+ "cli.unset.global": "Rimuovere il valore condiviso",
2832
2962
  "cli.env.description": "Mostrare variabili d'ambiente",
2833
2963
  "cli.env.long_description": "Mostrare variabili d'ambiente",
2834
2964
  "cli.env.show_all": "Mostrare tutte le variabili",
@@ -2843,6 +2973,9 @@ var langIt = (() => {
2843
2973
  "cli.json.format_desc": "Formattare JSON con indentazione",
2844
2974
  "cli.json.minify_desc": "Rimuovere spazi bianchi",
2845
2975
  "cli.json.validate_desc": "Verificare se \xE8 JSON valido",
2976
+ "cli.json.format.description": "Formattare JSON con indentazione",
2977
+ "cli.json.minify.description": "Minimizzare JSON rimuovendo gli spazi",
2978
+ "cli.json.validate.description": "Verificare se una stringa \xE8 un JSON valido",
2846
2979
  "cli.base64.description": "Codificare o decodificare stringhe Base64",
2847
2980
  "cli.base64.long_description": "Codificare e decodificare stringhe Base64",
2848
2981
  "cli.base64.utf8_note": "Supporta la codifica testo UTF-8",
@@ -2853,6 +2986,9 @@ var langIt = (() => {
2853
2986
  "cli.timestamp.current": "Timestamp Unix corrente",
2854
2987
  "cli.timestamp.to_date": "Timestamp a data",
2855
2988
  "cli.timestamp.from_date": "Data a timestamp",
2989
+ "cli.timestamp.now.description": "Mostrare il timestamp Unix attuale",
2990
+ "cli.timestamp.to-date.description": "Convertire un timestamp Unix in una data",
2991
+ "cli.timestamp.from-date.description": "Convertire una stringa di data in un timestamp Unix",
2856
2992
  "cli.screen.description": "Mostrare informazioni su schermo e terminale",
2857
2993
  "cli.screen.long_description": "Mostrare dimensioni di schermo, viewport e terminale",
2858
2994
  "cli.screen.shows": "Mostra: risoluzione, profondit\xE0 colore, rapporto pixel, dimensione finestra, dimensione terminale",
@@ -2863,6 +2999,11 @@ var langIt = (() => {
2863
2999
  "cli.random.uuid_desc": "UUID v4 casuale",
2864
3000
  "cli.random.coin_desc": "Lanciare una moneta",
2865
3001
  "cli.random.dice_desc": "Lanciare un dado",
3002
+ "cli.random.number.description": "Generare un numero casuale",
3003
+ "cli.random.string.description": "Generare una stringa casuale",
3004
+ "cli.random.uuid.description": "Generare un UUID v4 casuale",
3005
+ "cli.random.coin.description": "Lanciare una moneta",
3006
+ "cli.random.dice.description": "Lanciare un dado",
2866
3007
  "cli.ping.description": "Inviare ping tipo ICMP a un host",
2867
3008
  "cli.ping.long_description": "Inviare ping HTTP tipo ICMP a un host e mostrare statistiche di andata e ritorno",
2868
3009
  "cli.ping.ctrl_c": "Premi Ctrl+C per fermare e mostrare le statistiche.",
@@ -2878,7 +3019,619 @@ var langIt = (() => {
2878
3019
  "cli.debug.processors": "Tutti i processori registrati",
2879
3020
  "cli.debug.modules": "Tutti i moduli caricati",
2880
3021
  "cli.debug.state": "Ispezionare gli archivi di stato",
2881
- "cli.packages.description": "Gestire i pacchetti nel CLI"
3022
+ "cli.debug.processors.description": "Elencare tutti i processori di comandi registrati",
3023
+ "cli.debug.modules.description": "Elencare tutti i moduli CLI caricati",
3024
+ "cli.debug.state.description": "Ispezionare tutti gli store di stato e i loro valori",
3025
+ "cli.debug.services.description": "Elencare tutti i servizi registrati nel container DI",
3026
+ "cli.debug.environment.description": "Mostrare informazioni su browser, terminale e framework",
3027
+ "cli.debug.history.description": "Mostrare le statistiche della cronologia dei comandi",
3028
+ "cli.debug.health.description": "Verificare lo stato del sistema: storage, connettivit\xE0, stato dei processori",
3029
+ "cli.debug.export.description": "Esportare tutte le informazioni di debug come JSON",
3030
+ "cli.debug.servers.description": "Elencare i server configurati e il loro stato di connessione",
3031
+ "cli.packages.description": "Gestire i pacchetti nel CLI",
3032
+ // ── Servers and events ───────────────────────────────────────────
3033
+ "cli.server.description": "Gestire le connessioni ai server CLI remoti",
3034
+ "cli.server.list.description": "Mostrare i server con stato, versione e comandi",
3035
+ "cli.server.status.description": "Verificare che i server rispondano (tutti, o uno in dettaglio)",
3036
+ "cli.server.commands.description": "Mostrare i comandi di ogni server",
3037
+ "cli.server.reconnect.description": "Riconnettersi ai server e ricaricare i loro comandi",
3038
+ "cli.server.default.description": "Mostrare o impostare il server che esegue i comandi condivisi",
3039
+ "cli.server.jobs.description": "Gestire i job in background sui server connessi",
3040
+ "cli.server.jobs.list.description": "Elencare tutti i job sui server connessi",
3041
+ "cli.server.jobs.info.description": "Mostrare informazioni dettagliate su un job",
3042
+ "cli.server.jobs.trigger.description": "Avviare l'esecuzione immediata di un job",
3043
+ "cli.server.jobs.pause.description": "Mettere in pausa l'esecuzione pianificata di un job",
3044
+ "cli.server.jobs.resume.description": "Riprendere un job in pausa",
3045
+ "cli.server.jobs.stop.description": "Fermare un job e annullare l'esecuzione corrente se in corso",
3046
+ "cli.server.jobs.cancel.description": "Annullare l'esecuzione corrente di un job",
3047
+ "cli.server.jobs.history.description": "Mostrare la cronologia di esecuzione di un job",
3048
+ "cli.server.jobs.logs.description": "Mostrare i log dell'ultima esecuzione o di una specifica",
3049
+ "cli.server.jobs.edit.description": "Modificare le impostazioni di un job in modo interattivo",
3050
+ "cli.server.jobs.watch.description": "Vista in tempo reale degli eventi dei job tramite WebSocket",
3051
+ "cli.server.help.see_everything_you_can": "per vedere tutto ci\xF2 che puoi fare",
3052
+ "cli.server.help.connect_terminal_remote_cli": "Collega il terminale a server CLI remoti (.NET, Node.js, Python) ed esegue i loro comandi.",
3053
+ "cli.server.help.by_name_or_prefix": "I comandi di ogni server sono disponibili per nome ({byName}) e con il server come prefisso ({prefixed}). Quando pi\xF9 server hanno lo stesso comando, lo esegue il server predefinito; se non c'\xE8, ti viene chiesto quale server usare. Un comando locale con lo stesso nome ha la precedenza: usa il nome con prefisso. Un server non raggiungibile viene ritentato ogni 30 secondi e i suoi comandi tornano disponibili quando torna attivo.",
3054
+ "cli.server.help.overview_servers": "Panoramica dei server",
3055
+ "cli.server.help.servers_status_version_commands": "Server con stato, versione e comandi",
3056
+ "cli.server.help.check_servers_reachable_all": "Verificare che i server siano raggiungibili (tutti, o uno in dettaglio)",
3057
+ "cli.server.help.commands_each_server_provides": "Comandi forniti da ciascun server",
3058
+ "cli.server.help.connect_again_unreachable_servers": "Riconnettersi (server non raggiungibili, o uno)",
3059
+ "cli.server.help.show_set_server_shared": "Mostrare o impostare il server per i comandi condivisi",
3060
+ "cli.server.help.open_shell_server_run": "Aprire una shell su un server, o eseguire un comando",
3061
+ "cli.server.help.ping_node_show_details": "Ping a node e mostrarne i dettagli",
3062
+ "cli.server.help.what_node_can_do": "Cosa pu\xF2 fare node",
3063
+ "cli.server.help.run_echo_node_explicitly": "Eseguire echo su node in modo esplicito",
3064
+ "cli.server.help.shared_commands_run_node": "I comandi condivisi vengono eseguiti su node",
3065
+ "cli.server.help.retry_every_unreachable_server": "Ritentare ogni server non raggiungibile",
3066
+ "cli.server.list.help.list_configured_servers_connection": "Elenca i server configurati: stato della connessione, URL, versione del server e dell'API, numero di comandi e accesso alla shell.",
3067
+ "cli.server.list.help.see_why_server_unreachable": "per vedere perch\xE9 un server non \xE8 raggiungibile, server reconnect per riprovare",
3068
+ "cli.server.status.help.details_server": "per i dettagli su un server",
3069
+ "cli.server.status.help.try_again": "per riprovare",
3070
+ "cli.server.status.help.load_commands": "per caricare i suoi comandi",
3071
+ "cli.server.status.help.see_commands": "per vedere i suoi comandi",
3072
+ "cli.server.status.help.ping_servers_without_name": "Esegue il ping dei server. Senza nome, ogni server viene controllato in una volta con il suo tempo di risposta; con un nome, quel server \xE8 mostrato in dettaglio (versioni, OS, shell, streaming) con suggerimenti se non \xE8 raggiungibile.",
3073
+ "cli.server.status.help.check_every_server": "Controllare ogni server",
3074
+ "cli.server.status.help.details_one_server": "Dettagli di un server",
3075
+ "cli.server.status.help.same_server_status": "Uguale a server status",
3076
+ "cli.server.status.help.details_node": "Dettagli di node",
3077
+ "cli.server.commands.help.shared_marker": "su pi\xF9 server: viene eseguito sul server predefinito (server use <name>), oppure chiede",
3078
+ "cli.server.commands.help.local_marker": "un comando locale ha lo stesso nome: eseguilo con il prefisso del server",
3079
+ "cli.server.commands.help.intro": "Elenca i comandi forniti da un server (tutti i server, o uno). Eseguili per nome, o con il server come prefisso: {example} viene sempre eseguito su node, anche quando un altro server o un comando locale si chiama echo.",
3080
+ "cli.server.commands.help.commands_every_server": "Comandi di ogni server",
3081
+ "cli.server.commands.help.commands_one_server": "Comandi di un server",
3082
+ "cli.server.commands.help.what_node_can_do": "Cosa pu\xF2 fare node",
3083
+ "cli.server.reconnect.help.reconnect_them_anyway": "per riconnetterli comunque",
3084
+ "cli.server.reconnect.help.see_why": "per vedere il motivo",
3085
+ "cli.server.reconnect.help.connect_servers_again_reload": "Si riconnette ai server e ricarica i loro comandi, ad es. dopo il riavvio o l'aggiornamento di un server. Senza nome, ogni server non raggiungibile viene ritentato.",
3086
+ "cli.server.reconnect.help.retry_unreachable_servers": "Ritentare i server non raggiungibili",
3087
+ "cli.server.reconnect.help.reconnect_one_server": "Riconnettere un server",
3088
+ "cli.server.reconnect.help.reconnect_every_server": "Riconnettere ogni server",
3089
+ "cli.server.reconnect.help.same_server_reconnect": "Uguale a server reconnect",
3090
+ "cli.server.reconnect.help.reload_commands_node": "Ricaricare i comandi di node",
3091
+ "cli.server.default.help.to_remove": "per rimuoverlo",
3092
+ "cli.server.default.help.to_set_one": "per impostarne uno",
3093
+ "cli.server.default.help.default_server_runs_commands": "Il server predefinito esegue i comandi che hanno pi\xF9 server (altrimenti ti viene chiesto quale) e i comandi che richiedono un solo server, come server logs. Viene ricordato dopo i ricaricamenti.",
3094
+ "cli.server.default.help.show_default_server": "Mostrare il server predefinito",
3095
+ "cli.server.default.help.set": "Impostarlo",
3096
+ "cli.server.default.help.remove": "Rimuoverlo",
3097
+ "cli.server.default.help.same_server_default_node": "Uguale a server default node",
3098
+ "cli.server.jobs.help.see_control_background_jobs": "Vedi e controlla i job in background in esecuzione sui server connessi: elencali, eseguine uno subito, mettilo in pausa o fermalo, leggine la cronologia e i log, cambiane le impostazioni o osserva gli eventi in tempo reale. Un job si sceglie per nome (maiuscole o minuscole) o per ID e viene cercato su ogni server connesso; le azioni si applicano a ogni server che ha il job e --server limita un comando a un solo server.",
3099
+ "cli.server.jobs.help.same_server_jobs_list": "Uguale a server jobs list",
3100
+ "cli.server.jobs.help.live_job_events": "Eventi dei job in tempo reale",
3101
+ "cli.server.jobs.help.all_jobs": "Tutti i job",
3102
+ "cli.server.jobs.help.run_cleanup_job_now": "Eseguire subito il job cleanup",
3103
+ "cli.server.jobs.help.failed_runs": "Le sue esecuzioni fallite",
3104
+ "cli.server.jobs.help.last_run_output_node": "Output dell'ultima esecuzione, su node",
3105
+ "cli.server.jobs.list.help.list_jobs_every_connected": "Elenca i job di ogni server connesso: gruppo, stato, pianificazione, ultima e prossima esecuzione e durata dell'ultima esecuzione. Con pi\xF9 server, ognuno ha la sua tabella.",
3106
+ "cli.server.jobs.list.help.jobs_all_connected_servers": "Job su tutti i server connessi",
3107
+ "cli.server.jobs.list.help.only_one_group": "Solo un gruppo",
3108
+ "cli.server.jobs.list.help.jobs_node_server": "Job sul server node",
3109
+ "cli.server.jobs.list.help.jobs_reports_group": "Job nel gruppo reports",
3110
+ "cli.server.jobs.info.help.show_everything_about_one": "Mostra tutto su un job: pianificazione, tentativi, timeout, politica di sovrapposizione, l'esecuzione in corso e il risultato dell'ultima. Il job si trova per nome (maiuscole o minuscole) o per ID.",
3111
+ "cli.server.jobs.info.help.details_cleanup_job": "Dettagli del job cleanup",
3112
+ "cli.server.jobs.trigger.help.run_job_now_without": "Esegue un job subito, senza attendere la prossima ora pianificata. La sua pianificazione non cambia.",
3113
+ "cli.server.jobs.trigger.help.run_cleanup_now": "Eseguire cleanup subito",
3114
+ "cli.server.jobs.trigger.help.then_read_output": "Poi leggerne l'output",
3115
+ "cli.server.jobs.pause.help.stop_running_job_schedule": "Smette di eseguire un job secondo la pianificazione finch\xE9 non viene ripreso. Usa cancel o stop per un'esecuzione gi\xE0 in corso.",
3116
+ "cli.server.jobs.pause.help.hold_cleanup": "Sospendere cleanup",
3117
+ "cli.server.jobs.pause.help.put_back_schedule": "Rimetterlo in pianificazione",
3118
+ "cli.server.jobs.resume.help.put_paused_job_back": "Rimette un job in pausa nella sua pianificazione.",
3119
+ "cli.server.jobs.resume.help.run_cleanup_schedule_again": "Eseguire di nuovo cleanup secondo la pianificazione",
3120
+ "cli.server.jobs.stop.help.take_job_off_schedule": "Toglie un job dalla pianificazione e annulla l'esecuzione in corso, se presente.",
3121
+ "cli.server.jobs.stop.help.stop_cleanup_completely": "Fermare cleanup del tutto",
3122
+ "cli.server.jobs.cancel.help.cancel_run_progress_job": "Annulla l'esecuzione in corso di un job. Il job resta in pianificazione e viene eseguito di nuovo alla prossima occasione.",
3123
+ "cli.server.jobs.cancel.help.abort_current_cleanup_run": "Interrompere l'esecuzione corrente di cleanup",
3124
+ "cli.server.jobs.history.help.list_past_runs_job": "Elenca le esecuzioni passate di un job: stato, ora di inizio, durata, tentativo e l'inizio del messaggio di errore. Usa l'ID breve con logs --exec per leggere l'output di una singola esecuzione.",
3125
+ "cli.server.jobs.history.help.last_20_runs": "Le ultime 20 esecuzioni",
3126
+ "cli.server.jobs.history.help.page_through_older_runs": "Scorrere le esecuzioni pi\xF9 vecchie",
3127
+ "cli.server.jobs.history.help.only_failed_runs": "Solo le esecuzioni fallite",
3128
+ "cli.server.jobs.history.help.last_5_runs": "Le ultime 5 esecuzioni",
3129
+ "cli.server.jobs.logs.help.print_log_entries_latest": "Stampa le voci di log dell'ultima esecuzione di un job, o di una scelta tramite il suo ID di esecuzione (da history).",
3130
+ "cli.server.jobs.logs.help.logs_latest_run": "Log dell'ultima esecuzione",
3131
+ "cli.server.jobs.logs.help.logs_one_run": "Log di una singola esecuzione",
3132
+ "cli.server.jobs.logs.help.what_last_cleanup_run": "Cosa ha stampato l'ultima esecuzione di cleanup",
3133
+ "cli.server.jobs.edit.help.change_job_step_step": "Modifica un job passo dopo passo: descrizione, gruppo, pianificazione cron o intervallo, tentativi massimi, timeout e politica di sovrapposizione (skip, queue o cancel). Premi Invio per mantenere un valore e Ctrl+C o Esc per annullare; nulla cambia finch\xE9 non confermi. Un job presente su pi\xF9 server richiede --server.",
3134
+ "cli.server.jobs.edit.help.edit_cleanup_server_has": "Modificare cleanup sul server che lo ha",
3135
+ "cli.server.jobs.watch.help.follow_job_events_they": "Segue gli eventi dei job man mano che avvengono (avviato, completato, fallito e cos\xEC via) su ogni server connesso, una riga per evento. Premi Ctrl+C per fermarsi.",
3136
+ "cli.server.jobs.watch.help.events_all_connected_servers": "Eventi da tutti i server connessi",
3137
+ "cli.server.jobs.watch.help.only_events_node": "Solo gli eventi da node",
3138
+ "cli.ssh.description": "Aprire una sessione shell remota su un server",
3139
+ "cli.ssh.help.open_interactive_shell_server": "Apre una shell interattiva su un server, in questo terminale, oppure esegue l\xEC un comando e ne stampa l'output. Si possono usare solo i server che abilitano la shell; con il plugin users serve il permesso shell:execute. Senza nome, ssh usa l'unico server con shell, altrimenti il server predefinito, altrimenti chiede quale usare.",
3140
+ "cli.ssh.help.shell_default_only_server": "Shell sul server predefinito (o unico)",
3141
+ "cli.ssh.help.shell_server_exit_ctrl": "Shell su un server (exit o Ctrl+D per uscire)",
3142
+ "cli.ssh.help.run_one_command_print": "Eseguire un comando e stamparne l'output",
3143
+ "cli.ssh.help.same_ssh": "Uguale a ssh <name>",
3144
+ "cli.ssh.help.interactive_shell_node": "Shell interattiva su node",
3145
+ "cli.ssh.help.one_command_node": "Un comando su node",
3146
+ "cli.ssh.help.same_ssh_2": "Uguale a ssh",
3147
+ "cli.events.description": "Osservare, elencare ed emettere eventi del bus degli eventi",
3148
+ "cli.events.watch.description": "Mostrare gli eventi appena accadono (Ctrl+C per fermare)",
3149
+ "cli.events.log.description": "Mostrare gli eventi recenti (in memoria, non salvati)",
3150
+ "cli.events.emit.description": "Emettere un evento: events emit <tipo> [json]",
3151
+ "cli.events.watch.help.intro": "Stampa gli eventi man mano che avvengono, fino a Ctrl+C",
3152
+ "cli.events.watch.help.every_event": "Ogni evento",
3153
+ "cli.events.watch.help.namespace": "Un namespace",
3154
+ "cli.events.watch.help.one_type": "Un tipo",
3155
+ "cli.events.log.help.intro": "Mostra gli eventi pi\xF9 recenti, dal pi\xF9 vecchio",
3156
+ "cli.events.log.help.last_20": "Ultimi 20 eventi",
3157
+ "cli.events.log.help.last_50_server": "Ultimi 50 eventi del server",
3158
+ "cli.events.emit.help.intro": "Emette un evento, ad es. per testare un plugin che lo ascolta",
3159
+ "cli.events.help.commands": "Comandi:",
3160
+ "cli.events.help.print_live": "Stampare gli eventi in tempo reale",
3161
+ "cli.events.help.recent": "Eventi recenti",
3162
+ "cli.events.help.emit": "Emettere un evento",
3163
+ "cli.events.help.patterns": "Pattern: un tipo esatto (package:installed), un namespace (package:*) o * per tutti.",
3164
+ "cli.events.help.in_memory": "Gli eventi sono tenuti in memoria solo per questo terminale; nulla viene salvato in modo permanente.",
3165
+ // ── Capture ──────────────────────────────────────────────────────
3166
+ "cli.capture.description": "Esportare l'output del terminale in un file scaricabile",
3167
+ "cli.capture.help.save_what_terminal_including": "Salva ci\xF2 che \xE8 nel terminale, scrollback incluso, come file scaricato dal browser. HTML mantiene lo sfondo del tema e il colore del testo; txt \xE8 testo semplice. I colori delle singole righe non vengono conservati.",
3168
+ "cli.capture.help.everything_terminal_html": "Tutto come terminal-<timestamp>.html",
3169
+ "cli.capture.help.plain_text_file": "File di testo semplice",
3170
+ "cli.capture.help.only_last_n_lines": "Solo le ultime n righe",
3171
+ "cli.capture.help.downloads_session_txt": "Scarica session.txt",
3172
+ "cli.capture.help.last_50_lines_html": "Le ultime 50 righe come HTML",
3173
+ "cli.capture.help.same_capture": "Uguale a capture",
3174
+ // ── Diff ─────────────────────────────────────────────────────────
3175
+ "cli.diff.description": "Confrontare i file riga per riga",
3176
+ "cli.diff.help.compare_two_texts_line": "Confronta due testi riga per riga: le righe aggiunte sono in verde con +, quelle rimosse in rosso con -, con alcune righe invariate attorno a ogni modifica come contesto.",
3177
+ "cli.diff.help.compare_two_texts": "Confronta due testi",
3178
+ "cli.diff.help.only_changed_lines": "Solo le righe modificate",
3179
+ "cli.diff.help.one_line_changed": "Una riga modificata",
3180
+ "cli.diff.help.prints_no_differences_found": "Stampa: No differences found",
3181
+ "cli.diff.help.compare_two_files_line": "Confronta due file riga per riga e mostra cosa \xE8 cambiato: le righe che iniziano con < (o -) sono solo nel primo file, quelle che iniziano con > (o +) solo nel secondo.",
3182
+ "cli.diff.help.show_differences": "Mostrare le differenze",
3183
+ "cli.diff.help.unified_format_context": "Formato unified con contesto",
3184
+ "cli.diff.help.what_changed_between_versions": "Cosa \xE8 cambiato tra le versioni",
3185
+ "cli.diff.help.review_edits_git_style": "Rivedere le modifiche, stile git",
3186
+ "cli.diff.help.ignore_upper_lower_case": "Ignorare maiuscole e minuscole",
3187
+ // ── Font Size ────────────────────────────────────────────────────
3188
+ "cli.font-size.description": "Regolare la dimensione del carattere del terminale",
3189
+ "cli.font-size.reset.description": "Ripristinare la dimensione del carattere predefinita",
3190
+ "cli.font-size.set.description": "Impostare la dimensione del carattere a un valore specifico",
3191
+ "cli.font-size.help.intro": "Ingrandisci o riduci il testo del terminale, da {min}px a {max}px. La dimensione scelta viene salvata e ripristinata alla prossima apertura del terminale; reset torna alla dimensione con cui la pagina \xE8 partita.",
3192
+ "cli.font-size.help.show_current_size": "Mostrare la dimensione attuale",
3193
+ "cli.font-size.help.bigger_smaller_by": "Pi\xF9 grande o pi\xF9 piccolo di {step}px",
3194
+ "cli.font-size.help.exact_size": "Dimensione esatta in pixel ({min}-{max})",
3195
+ "cli.font-size.help.back_default_size": "Tornare alla dimensione predefinita",
3196
+ "cli.font-size.help.use_16px_text": "Usare testo da 16px",
3197
+ "cli.font-size.help.grow_by": "Aumentare di {step}px",
3198
+ "cli.font-size.help.forget_saved_size": "Dimenticare la dimensione salvata",
3199
+ // ── Snippet ──────────────────────────────────────────────────────
3200
+ "cli.snippet.description": "Salvare e riutilizzare modelli di comando parametrizzati",
3201
+ "cli.snippet.list.description": "Elencare tutti gli snippet salvati",
3202
+ "cli.snippet.save.description": 'Salvare un nuovo snippet: snippet save <name> "<template>"',
3203
+ "cli.snippet.show.description": "Mostrare il modello di uno snippet: snippet show <name>",
3204
+ "cli.snippet.delete.description": "Eliminare uno snippet: snippet delete <name>",
3205
+ "cli.snippet.run.description": "Eseguire uno snippet con valori di variabili: snippet run <name> var1=val1 var2=val2",
3206
+ "cli.snippet.help.save_command_lines_you": "Salva le righe di comando usate spesso come modelli con nome, con {{placeholders}} compilati all'esecuzione. Gli snippet sono salvati nel browser e condivisi da tutti i tuoi terminali e schede.",
3207
+ "cli.snippet.help.save_replace_snippet": "Salvare (o sostituire) uno snippet",
3208
+ "cli.snippet.help.fill_placeholders_run": "Compilare i segnaposto ed eseguirlo",
3209
+ "cli.snippet.help.all_saved_snippets": "Tutti gli snippet salvati",
3210
+ "cli.snippet.help.print_snippet": "Stampare uno snippet",
3211
+ "cli.snippet.help.delete_snippet_rm_remove": "Eliminare uno snippet (rm, remove)",
3212
+ "cli.snippet.help.template_placeholder": "Un modello con un segnaposto",
3213
+ "cli.snippet.help.runs_echo_hello_ada": "Esegue: echo Hello Ada",
3214
+ "cli.snippet.help.quote_values_spaces": "Racchiudere tra virgolette i valori con spazi",
3215
+ // ── Test ─────────────────────────────────────────────────────────
3216
+ "cli.test.description": "Valuta una condizione (stato di uscita 0 se vera)",
3217
+ "cli.test.help.expressions": "Espressioni:",
3218
+ "cli.test.help.empty_not_empty": "vuoto / non vuoto",
3219
+ "cli.test.help.equal_not_equal": "uguale / diverso",
3220
+ "cli.test.help.integer_comparison": "confronto tra interi",
3221
+ "cli.test.help.exists_file_directory": "esiste / file / directory",
3222
+ // ── Kill ─────────────────────────────────────────────────────────
3223
+ "cli.kill.description": "Terminare un processo in esecuzione tramite PID",
3224
+ "cli.kill.help.stop_running_process_pid": "Ferma un processo in esecuzione tramite il suo PID, come mostrato da ps. Un comando viene annullato, un servizio in background viene fermato. Si possono terminare solo i processi in esecuzione; in seguito risultano killed con codice di uscita -9.",
3225
+ "cli.kill.help.stop_process_pid": "Fermare il processo con quel PID",
3226
+ "cli.kill.help.find_pid": "Trovare il PID",
3227
+ "cli.kill.help.stop_process_3": "Fermare il processo 3",
3228
+ // ── Pkg ──────────────────────────────────────────────────────────
3229
+ "cli.pkg.description": "Gestire i pacchetti nel cli",
3230
+ "cli.pkg.ls.description": "Elencare tutti i pacchetti nel cli",
3231
+ "cli.pkg.browse.description": "Elencare tutti i pacchetti disponibili da tutte le sorgenti configurate",
3232
+ "cli.pkg.add.description": "Aggiungere un pacchetto al cli, ad es. pkg add guid.",
3233
+ "cli.pkg.remove.description": "Rimuovere un pacchetto dal cli",
3234
+ "cli.pkg.versions.description": "Mostrare tutte le versioni pubblicate di un pacchetto",
3235
+ "cli.pkg.check.description": "Verificare gli aggiornamenti disponibili per i pacchetti installati",
3236
+ "cli.pkg.update.description": "Aggiornare un pacchetto nel cli all'ultima versione o aggiornare tutti i pacchetti",
3237
+ "cli.pkg.source.description": "Ottenere o impostare la sorgente dei pacchetti per i download",
3238
+ "cli.pkg.source.get.description": "Mostrare la sorgente CDN attuale",
3239
+ "cli.pkg.source.set.description": "Impostare la sorgente preferita dei pacchetti (interattivo se non si indica un nome)",
3240
+ "cli.pkg.help.list_installed_packages": "Elencare i pacchetti installati",
3241
+ "cli.pkg.help.browse_all_available_packages": "Sfogliare tutti i pacchetti disponibili",
3242
+ "cli.pkg.help.install_package": "Installare un pacchetto",
3243
+ "cli.pkg.help.remove_package": "Rimuovere un pacchetto",
3244
+ "cli.pkg.help.show_all_published_versions": "Mostrare tutte le versioni pubblicate",
3245
+ "cli.pkg.help.check_available_updates": "Verificare gli aggiornamenti disponibili",
3246
+ "cli.pkg.help.update_one_all_packages": "Aggiornare uno o tutti i pacchetti",
3247
+ "cli.pkg.help.get_set_package_source": "Ottenere o impostare la sorgente dei pacchetti",
3248
+ "cli.pkg.help.install_qodalis_cli_guid": "Installare @qodalis/cli-guid",
3249
+ "cli.pkg.help.install_multiple_packages": "Installare pi\xF9 pacchetti",
3250
+ "cli.pkg.help.update_all_packages": "Aggiornare tutti i pacchetti",
3251
+ "cli.pkg.browse.help.install_package": "per installare un pacchetto",
3252
+ "cli.pkg.add.help.short_name": "Nome breve",
3253
+ "cli.pkg.add.help.full_name": "Nome completo",
3254
+ "cli.pkg.add.help.multiple_packages": "Pi\xF9 pacchetti",
3255
+ "cli.pkg.add.help.specific_version": "Versione specifica",
3256
+ "cli.pkg.remove.help.remove_one_package": "Rimuovere un pacchetto",
3257
+ "cli.pkg.remove.help.remove_multiple": "Rimuoverne diversi",
3258
+ "cli.pkg.remove.help.short_alias": "Alias breve",
3259
+ "cli.pkg.versions.help.short_name": "Nome breve",
3260
+ "cli.pkg.versions.help.full_name": "Nome completo",
3261
+ "cli.pkg.check.help.apply_updates": "per applicare gli aggiornamenti",
3262
+ "cli.pkg.update.help.update_latest": "Aggiornare all'ultima versione",
3263
+ "cli.pkg.update.help.update_specific_version": "Aggiornare a una versione specifica",
3264
+ "cli.pkg.update.help.update_all_packages": "Aggiornare tutti i pacchetti",
3265
+ "cli.pkg.update.help.install_specific_version": "Installare una versione specifica",
3266
+ "cli.pkg.source.help.change": "per cambiare",
3267
+ "cli.pkg.source.help.show_current_source": "Mostrare la sorgente attuale",
3268
+ "cli.pkg.source.help.set_preferred_source": "Impostare la sorgente preferita",
3269
+ "cli.pkg.help.install_package_2": "per installare un pacchetto",
3270
+ // ── Ps ───────────────────────────────────────────────────────────
3271
+ "cli.ps.description": "Elencare i processi in esecuzione e recenti",
3272
+ "cli.ps.help.list_processes_terminal_commands": "Elenca i processi di questo terminale: comandi, servizi in background, daemon e job. Quelli in esecuzione sono mostrati insieme a quelli terminati, falliti e interrotti di recente (gli ultimi 50), con il codice di uscita e da quanto tempo sono partiti.",
3273
+ "cli.ps.help.all_processes_oldest_first": "Tutti i processi, dal pi\xF9 vecchio",
3274
+ "cli.ps.help.what_running_now": "Cosa \xE8 in esecuzione ora",
3275
+ "cli.ps.help.stop_process_12_pid": "Fermare il processo 12 dalla colonna PID",
3276
+ // ── Cron ─────────────────────────────────────────────────────────
3277
+ "cli.cron.description": "Pianificare l'esecuzione di comandi a intervalli ripetuti",
3278
+ "cli.cron.add.description": "Aggiungere un job cron: cron add <name> <interval> <command>",
3279
+ "cli.cron.list.description": "Elencare tutti i job cron",
3280
+ "cli.cron.remove.description": "Rimuovere un job cron: cron remove <name>",
3281
+ "cli.cron.enable.description": "Abilitare un job cron in pausa",
3282
+ "cli.cron.disable.description": "Mettere in pausa un job cron senza rimuoverlo",
3283
+ "cli.cron.help.run_command_again_again": "Esegue un comando ripetutamente a intervalli fissi finch\xE9 il terminale \xE8 aperto. I job sono salvati: ripartono all'avvio del terminale e possono essere messi in pausa senza rimuoverli.",
3284
+ "cli.cron.help.add_job": "Aggiungere un job",
3285
+ "cli.cron.help.jobs_interval_status_run": "Job con intervallo, stato e numero di esecuzioni (ls)",
3286
+ "cli.cron.help.pause_job": "Mettere in pausa un job",
3287
+ "cli.cron.help.resume_paused_job": "Riprendere un job in pausa",
3288
+ "cli.cron.help.remove_job_rm_delete": "Rimuovere un job (rm, delete)",
3289
+ "cli.cron.help.intervals_seconds_30_hours": "Intervalli: secondi (30), oppure ore, minuti e secondi (1h, 5m, 1h30m, 90s); almeno 10 secondi.",
3290
+ "cli.cron.help.every_5_minutes": "Ogni 5 minuti",
3291
+ "cli.cron.help.every_hour_half": "Ogni ora e mezza",
3292
+ "cli.cron.help.pause": "Metterlo in pausa",
3293
+ // ── Binary ───────────────────────────────────────────────────────
3294
+ "cli.binary.long_description": "Codifica e decodifica stringhe binarie",
3295
+ "cli.binary.utf8_note": "Supporta la codifica del testo UTF-8",
3296
+ "cli.binary.encode_desc": "Testo in binario",
3297
+ "cli.binary.decode_desc": "Binario in testo",
3298
+ // ── Morse ────────────────────────────────────────────────────────
3299
+ "cli.morse.long_description": "Codifica e decodifica il codice Morse",
3300
+ "cli.morse.note": "Supporta lettere, numeri e punteggiatura comune",
3301
+ "cli.morse.encode_desc": "Testo in Morse",
3302
+ "cli.morse.decode_desc": "Morse in testo",
3303
+ // ── Rot ──────────────────────────────────────────────────────────
3304
+ "cli.rot.long_description": "Applica il cifrario ROT (rotazione) al testo",
3305
+ "cli.rot.note": "Predefinito \xE8 ROT13 (autoinverso: applicarlo due volte restituisce l'originale)",
3306
+ "cli.rot.default_desc": "Applicare ROT13",
3307
+ "cli.rot.shift_desc": "Applicare ROT-N",
3308
+ // ── Awk ──────────────────────────────────────────────────────────
3309
+ "cli.awk.description": "Ricerca di pattern ed elaborazione del testo",
3310
+ "cli.awk.help.process_text_records_fields": "Elabora il testo come record e campi: ogni riga \xE8 divisa nei campi $1, $2, ... ($0 \xE8 l'intera riga) e ogni regola esegue la sua { action } sulle righe corrispondenti. Supporta blocchi BEGIN ed END, pattern /regex/ e di confronto dei campi, print, variabili, NR e NF. Racchiudi il programma tra virgolette; uno semplice funziona anche senza (awk {print $1} file).",
3311
+ "cli.awk.help.run_program_over_file": "Eseguire un programma su un file",
3312
+ "cli.awk.help.split_fields_instead_spaces": "Dividere i campi su <sep> invece che sugli spazi",
3313
+ "cli.awk.help.run_program_over_piped": "Eseguire un programma sull'input da pipe",
3314
+ "cli.awk.help.print_first_column": "Stampare la prima colonna",
3315
+ "cli.awk.help.second_column_csv": "Seconda colonna di un CSV",
3316
+ "cli.awk.help.filter_rows_field": "Filtrare le righe per un campo",
3317
+ "cli.awk.help.sum_second_column": "Sommare la seconda colonna",
3318
+ // ── Basename ─────────────────────────────────────────────────────
3319
+ "cli.basename.description": "Rimuovere la directory da un percorso",
3320
+ "cli.basename.help.print_last_part_path": "Stampa l'ultima parte di un percorso, il nome del file o della directory, senza le directory che lo precedono. Se si indica un suffisso, viene rimosso anche dalla fine.",
3321
+ "cli.basename.help.name_without_directories": "Nome senza le directory",
3322
+ "cli.basename.help.also_remove_trailing_suffix": "Rimuovere anche un suffisso finale",
3323
+ "cli.basename.help.prints_notes_txt": "Stampa notes.txt",
3324
+ "cli.basename.help.prints_notes": "Stampa notes",
3325
+ "cli.basename.help.prints_user": "Stampa user",
3326
+ // ── Cat ──────────────────────────────────────────────────────────
3327
+ "cli.cat.description": "Mostrare il contenuto di un file",
3328
+ "cli.cat.help.print_contents_one_more": "Stampa il contenuto di uno o pi\xF9 file, uniti in ordine, oppure dell'input da pipe. Invia l'output ad altri comandi per cercare, ordinare o contare.",
3329
+ "cli.cat.help.print_files_one_after": "Stampare i file uno dopo l'altro",
3330
+ "cli.cat.help.send_file_another_command": "Inviare un file a un altro comando",
3331
+ "cli.cat.help.show_whole_file": "Mostrare l'intero file",
3332
+ "cli.cat.help.show_only_lines_error": "Mostrare solo le righe con error",
3333
+ "cli.cat.help.print_lines_sorted": "Stampare le righe ordinate",
3334
+ // ── Cd ───────────────────────────────────────────────────────────
3335
+ "cli.cd.description": "Cambiare la directory di lavoro corrente",
3336
+ "cli.cd.help.change_current_directory_without": "Cambia la directory corrente. Senza un percorso va alla tua directory home. I percorsi possono essere assoluti (/...), relativi a dove ti trovi, oppure iniziare con ~ per la home.",
3337
+ "cli.cd.help.go_home_directory": "Andare alla directory home",
3338
+ "cli.cd.help.go_directory": "Entrare in una directory",
3339
+ "cli.cd.help.go_up_one_level": "Salire di un livello",
3340
+ "cli.cd.help.go_docs_home": "Andare a docs nella home",
3341
+ "cli.cd.help.go_sibling_directory": "Andare a una directory sorella",
3342
+ "cli.cd.help.go_root": "Andare alla radice",
3343
+ // ── Chmod ────────────────────────────────────────────────────────
3344
+ "cli.chmod.description": "Cambiare i permessi di un file",
3345
+ "cli.chmod.help.change_who_can_read": "Cambia chi pu\xF2 leggere (r), scrivere (w) ed eseguire (x) un file. Usa una modalit\xE0 ottale come 755 o una simbolica: chi (u utente, g gruppo, o altri, a tutti), poi + per aggiungere, - per rimuovere o = per impostare, poi i permessi.",
3346
+ "cli.chmod.help.set_permissions": "Impostare i permessi",
3347
+ "cli.chmod.help.apply_directory_everything": "Applicare a una directory e a tutto il suo contenuto",
3348
+ "cli.chmod.help.rw_r_r_owner": "rw-r--r--: il proprietario scrive, gli altri leggono",
3349
+ "cli.chmod.help.let_owner_execute": "Consentire l'esecuzione al proprietario",
3350
+ "cli.chmod.help.take_away_write_group": "Togliere la scrittura a gruppo e altri",
3351
+ "cli.chmod.help.set_whole_directory_tree": "Impostare un intero albero di directory",
3352
+ // ── Chown ────────────────────────────────────────────────────────
3353
+ "cli.chown.description": "Cambiare proprietario e gruppo di un file",
3354
+ "cli.chown.help.change_owner_group_files": "Cambia il proprietario e/o il gruppo dei file. Indica user, user:group, user: (solo proprietario) o :group (solo gruppo).",
3355
+ "cli.chown.help.change_owner_group_if": "Cambiare il proprietario, e il gruppo se indicato",
3356
+ "cli.chown.help.change_only_group": "Cambiare solo il gruppo",
3357
+ "cli.chown.help.apply_directory_everything": "Applicare a una directory e a tutto il suo contenuto",
3358
+ "cli.chown.help.make_alice_owner": "Rendere alice la proprietaria",
3359
+ "cli.chown.help.set_owner_group": "Impostare proprietario e gruppo",
3360
+ "cli.chown.help.give_bob_whole_directory": "Dare a bob un'intera directory",
3361
+ // ── Cp ───────────────────────────────────────────────────────────
3362
+ "cli.cp.description": "Copiare file e directory",
3363
+ "cli.cp.help.copy_file_new_path": "Copia un file in un nuovo percorso, o in una directory esistente. Copiare una directory richiede -r, che copia tutto il suo contenuto. Un file gi\xE0 presente nella destinazione viene sostituito.",
3364
+ "cli.cp.help.copy_file_new_name": "Copiare un file con un nuovo nome",
3365
+ "cli.cp.help.copy_files_directory": "Copiare file in una directory",
3366
+ "cli.cp.help.copy_directory_contents": "Copiare una directory e il suo contenuto",
3367
+ "cli.cp.help.make_backup_copy": "Fare una copia di backup",
3368
+ "cli.cp.help.copy_docs": "Copiare in ~/docs",
3369
+ "cli.cp.help.duplicate_whole_directory": "Duplicare un'intera directory",
3370
+ // ── Cut ──────────────────────────────────────────────────────────
3371
+ "cli.cut.description": "Estrarre colonne o campi da ogni riga di un file",
3372
+ "cli.cut.help.print_selected_parts_each": "Stampa le parti selezionate di ogni riga: campi divisi da un delimitatore (-f, tabulazione per impostazione predefinita) o posizioni dei caratteri (-c). Un elenco pu\xF2 contenere numeri singoli, intervalli o entrambi, come 1,3 o 2-4 o 3-.",
3373
+ "cli.cut.help.select_fields": "Selezionare i campi",
3374
+ "cli.cut.help.select_character_positions": "Selezionare le posizioni dei caratteri",
3375
+ "cli.cut.help.cut_piped_input": "Tagliare l'input da pipe",
3376
+ "cli.cut.help.first_third_csv_column": "Prima e terza colonna di un CSV",
3377
+ "cli.cut.help.first_10_characters_each": "Primi 10 caratteri di ogni riga",
3378
+ "cli.cut.help.first_two_fields_split": "Primi due campi divisi su :",
3379
+ // ── Dirname ──────────────────────────────────────────────────────
3380
+ "cli.dirname.description": "Rimuovere l'ultimo componente da un percorso",
3381
+ "cli.dirname.help.print_directory_part_path": "Stampa la parte directory di un percorso, tutto ci\xF2 che precede l'ultimo /. Un nome semplice senza / restituisce . (la directory corrente).",
3382
+ "cli.dirname.help.path_without_last_part": "Percorso senza l'ultima parte",
3383
+ "cli.dirname.help.prints_home_user": "Stampa /home/user",
3384
+ "cli.dirname.help.prints": "Stampa .",
3385
+ "cli.dirname.help.prints_2": "Stampa /",
3386
+ // ── Du ───────────────────────────────────────────────────────────
3387
+ "cli.du.description": "Stimare l'uso di spazio dei file",
3388
+ "cli.du.help.show_how_much_space": "Mostra quanto spazio usano file e directory, in byte. Per una directory, ogni sottodirectory \xE8 elencata con la sua dimensione totale; usa -s per il solo totale o -d per limitare la profondit\xE0.",
3389
+ "cli.du.help.sizes_path_default_current": "Dimensioni di un percorso (predefinito: la directory corrente) e delle sue sottodirectory",
3390
+ "cli.du.help.only_total": "Solo il totale",
3391
+ "cli.du.help.only_levels_deep": "Solo <n> livelli di profondit\xE0",
3392
+ "cli.du.help.size_each_directory_docs": "Dimensione di ogni directory in ~/docs",
3393
+ "cli.du.help.total_home_k_m": "Totale della tua home in K/M/G",
3394
+ "cli.du.help.size_each_top_level": "Dimensione di ogni cartella di primo livello",
3395
+ // ── Find ─────────────────────────────────────────────────────────
3396
+ "cli.find.description": "Cercare file e directory per nome o tipo",
3397
+ "cli.find.help.list_files_directories_under": "Elenca file e directory sotto un percorso (la directory corrente per impostazione predefinita), cercando in tutte le sottodirectory. Il percorso iniziale \xE8 elencato per primo. Filtra per nome con un pattern glob (* e ?; --name distingue maiuscole e minuscole, --iname no) o per tipo.",
3398
+ "cli.find.help.list_everything_under_path": "Elencare tutto sotto un percorso",
3399
+ "cli.find.help.match_names_against_glob": "Cercare i nomi corrispondenti a un glob",
3400
+ "cli.find.help.same_ignoring_case": "Uguale, ignorando maiuscole e minuscole",
3401
+ "cli.find.help.only_files_f_directories": "Solo file (f) o directory (d)",
3402
+ "cli.find.help.list_everything_docs": "Elencare tutto in ~/docs",
3403
+ "cli.find.help.find_all_txt_files": "Trovare tutti i file .txt",
3404
+ "cli.find.help.directories_near_top": "Directory vicine alla radice",
3405
+ "cli.find.help.delete_all_tmp_files": "Eliminare tutti i file .tmp",
3406
+ // ── Grep ─────────────────────────────────────────────────────────
3407
+ "cli.grep.description": "Cercare un pattern nel contenuto dei file",
3408
+ "cli.grep.help.print_lines_match_pattern": "Stampa le righe che corrispondono a un pattern. Il pattern \xE8 un'espressione regolare, le corrispondenze sono evidenziate e l'input pu\xF2 essere file, directory (con -r) o testo da pipe.",
3409
+ "cli.grep.help.search_one_more_files": "Cercare in uno o pi\xF9 file",
3410
+ "cli.grep.help.search_every_file_under": "Cercare in ogni file sotto una directory",
3411
+ "cli.grep.help.filter_piped_input": "Filtrare l'input da pipe",
3412
+ "cli.grep.help.case_insensitive_search": "Ricerca senza distinzione tra maiuscole e minuscole",
3413
+ "cli.grep.help.find_todos_line_numbers": "Trovare i TODO con i numeri di riga",
3414
+ "cli.grep.help.hide_comment_lines": "Nascondere le righe di commento",
3415
+ "cli.grep.help.count_matching_lines": "Contare le righe corrispondenti",
3416
+ // ── Head ─────────────────────────────────────────────────────────
3417
+ "cli.head.description": "Mostrare le prime righe di un file",
3418
+ "cli.head.help.print_first_lines_file": "Stampa le prime righe di un file, 10 per impostazione predefinita. Funziona anche con l'input da pipe. Con pi\xF9 file, ognuno ha un'intestazione ==> name <==.",
3419
+ "cli.head.help.first_10_lines": "Prime 10 righe",
3420
+ "cli.head.help.first_lines": "Prime <count> righe",
3421
+ "cli.head.help.first_lines_piped_input": "Prime righe dell'input da pipe",
3422
+ "cli.head.help.show_start_file": "Mostrare l'inizio di un file",
3423
+ "cli.head.help.first_3_lines_each": "Prime 3 righe di ogni file",
3424
+ "cli.head.help.first_20_lines_log": "Prime 20 righe del log",
3425
+ // ── Ln ───────────────────────────────────────────────────────────
3426
+ "cli.ln.description": "Creare collegamenti simbolici",
3427
+ "cli.ln.help.create_symbolic_link_new": "Crea un collegamento simbolico: un nuovo percorso che punta a un altro file o directory. Sono supportati solo i collegamenti simbolici (-s) e la destinazione non deve necessariamente esistere gi\xE0.",
3428
+ "cli.ln.help.create_pointing": "Creare <link> che punta a <target>",
3429
+ "cli.ln.help.shortcut_file": "Collegamento a un file",
3430
+ "cli.ln.help.shortcut_directory": "Collegamento a una directory",
3431
+ // ── Mkdir ────────────────────────────────────────────────────────
3432
+ "cli.mkdir.description": "Creare directory",
3433
+ "cli.mkdir.help.create_new_directory_p": "Crea una nuova directory. Con -p vengono create anche le directory padre mancanti.",
3434
+ "cli.mkdir.help.create_one_more_directories": "Creare una o pi\xF9 directory",
3435
+ "cli.mkdir.help.create_directory_missing_parents": "Creare una directory e le directory padre mancanti",
3436
+ "cli.mkdir.help.create_projects_current_directory": "Creare projects nella directory corrente",
3437
+ "cli.mkdir.help.create_whole_path_once": "Creare l'intero percorso in una volta",
3438
+ // ── Mv ───────────────────────────────────────────────────────────
3439
+ "cli.mv.description": "Spostare o rinominare file e directory",
3440
+ "cli.mv.help.move_rename_file_directory": "Sposta o rinomina un file o una directory. Se la destinazione \xE8 una directory esistente, l'origine viene spostata al suo interno; altrimenti viene rinominata. Un file gi\xE0 presente nella destinazione viene sostituito.",
3441
+ "cli.mv.help.rename_file_directory": "Rinominare un file o una directory",
3442
+ "cli.mv.help.move_them_directory": "Spostarli in una directory",
3443
+ "cli.mv.help.rename_file": "Rinominare un file",
3444
+ "cli.mv.help.move_docs": "Spostarlo in ~/docs",
3445
+ "cli.mv.help.rename_directory": "Rinominare una directory",
3446
+ // ── Paste ────────────────────────────────────────────────────────
3447
+ "cli.paste.description": "Unire le righe dei file affiancate",
3448
+ "cli.paste.help.join_files_side_side": "Unisce i file affiancati: la riga 1 di ogni file va su una riga di output, separata da una tabulazione, poi la riga 2, e cos\xEC via. Con -s, ogni file viene invece unito su un'unica riga. L'input da pipe \xE8 letto come il file - (o come unico input quando non \xE8 indicato alcun file); -d accetta un elenco di delimitatori usati a turno.",
3449
+ "cli.paste.help.merge_files_line_line": "Unire i file riga per riga",
3450
+ "cli.paste.help.join_all_lines_file": "Unire tutte le righe di un file in una",
3451
+ "cli.paste.help.merge_piped_input_file": "Unire l'input da pipe con un file",
3452
+ "cli.paste.help.two_columns_tab_separated": "Due colonne, separate da tabulazione",
3453
+ "cli.paste.help.merge_comma_separated": "Unire separando con virgole",
3454
+ "cli.paste.help.turn_list_one_csv": "Trasformare un elenco in una riga CSV",
3455
+ // ── Pwd ──────────────────────────────────────────────────────────
3456
+ "cli.pwd.description": "Stampare la directory di lavoro corrente",
3457
+ "cli.pwd.help.print_full_path_directory": "Stampa il percorso completo della directory in cui ti trovi. I percorsi relativi negli altri comandi partono da qui.",
3458
+ "cli.pwd.help.show_current_directory": "Mostrare la directory corrente",
3459
+ "cli.pwd.help.example_home_user": "Ad esempio /home/user",
3460
+ "cli.pwd.help.prints_home_user_docs": "Stampa /home/user/docs",
3461
+ // ── Rm ───────────────────────────────────────────────────────────
3462
+ "cli.rm.description": "Rimuovere file o directory",
3463
+ "cli.rm.help.delete_file_directories_only": "Elimina un file. Le directory vengono rimosse solo con -r, che elimina tutto ci\xF2 che contengono. I file eliminati non possono essere recuperati.",
3464
+ "cli.rm.help.delete_one_more_files": "Eliminare uno o pi\xF9 file",
3465
+ "cli.rm.help.delete_directory_contents": "Eliminare una directory e il suo contenuto",
3466
+ "cli.rm.help.delete_without_error_if": "Eliminare senza errore se manca",
3467
+ "cli.rm.help.delete_one_file": "Eliminare un file",
3468
+ "cli.rm.help.delete_whole_directory": "Eliminare un'intera directory",
3469
+ "cli.rm.help.quiet_if_file_does": "Silenzioso se il file non esiste",
3470
+ // ── Rmdir ────────────────────────────────────────────────────────
3471
+ "cli.rmdir.description": "Rimuovere directory vuote",
3472
+ "cli.rmdir.help.remove_empty_directory_refuses": "Rimuove una directory vuota. Rifiuta di rimuovere una directory che contiene ancora file; usa rm -r per questo.",
3473
+ "cli.rmdir.help.remove_empty_directories": "Rimuovere directory vuote",
3474
+ "cli.rmdir.help.remove_directory_current_one": "Rimuovere una directory in quella corrente",
3475
+ "cli.rmdir.help.remove_full_path": "Rimuovere tramite percorso completo",
3476
+ // ── Sed ──────────────────────────────────────────────────────────
3477
+ "cli.sed.description": "Editor di flusso per filtrare e trasformare il testo",
3478
+ "cli.sed.help.edit_text_line_line": "Modifica il testo riga per riga con uno script: sostituisci (s/old/new/), elimina (d), stampa (p) o esci (q), eventualmente limitato a un numero di riga, a un intervallo (1,5, 3,$ o /start/,/end/) o alle righe corrispondenti a /regex/; ! dopo un indirizzo lo inverte e ; separa i comandi. La sostituzione pu\xF2 usare & (la corrispondenza) e da \\1 a \\9 (gruppi, scritti \\(...\\) o, con -E, (...)). Legge file o input da pipe e stampa il risultato, oppure riscrive i file con -i.",
3479
+ "cli.sed.help.print_edited_file": "Stampare il file modificato",
3480
+ "cli.sed.help.save_edits_file": "Salvare le modifiche nel file",
3481
+ "cli.sed.help.print_only_selected_lines": "Stampare solo le righe selezionate",
3482
+ "cli.sed.help.edit_piped_input": "Modificare l'input da pipe",
3483
+ "cli.sed.help.replace_every_cat_dog": "Sostituire ogni cat con dog",
3484
+ "cli.sed.help.edit_file_place": "Modificare il file sul posto",
3485
+ "cli.sed.help.drop_comment_lines": "Eliminare le righe di commento",
3486
+ "cli.sed.help.print_lines_1_5": "Stampare le righe da 1 a 5",
3487
+ "cli.sed.help.swap_two_words": "Scambiare due parole",
3488
+ // ── Sh ───────────────────────────────────────────────────────────
3489
+ "cli.sh.description": "Esegue un file script",
3490
+ "cli.sh.help.requires_execute": "(richiede il permesso di esecuzione)",
3491
+ "cli.sh.help.script_syntax": "Sintassi degli script:",
3492
+ "cli.sh.help.comments": "Le righe che iniziano con # sono commenti",
3493
+ "cli.sh.help.several_commands": "Pi\xF9 comandi su una riga",
3494
+ "cli.sh.help.assignment": "Assegnazione di variabile",
3495
+ "cli.sh.help.substitution": "Sostituzione di variabile",
3496
+ "cli.sh.help.stop_on_error": "Fermarsi in caso di errore (predefinito)",
3497
+ "cli.sh.help.continue_on_errors": "Continuare in caso di errori",
3498
+ "cli.sh.help.exit": "Interrompe lo script con stato n",
3499
+ "cli.sh.help.control_flow": "Flusso di controllo:",
3500
+ "cli.sh.help.until": "(until cmd: il contrario)",
3501
+ "cli.sh.help.break_continue": "Uscire da un ciclo / saltare un'iterazione",
3502
+ "cli.sh.help.negate": "Negare lo stato di uscita",
3503
+ "cli.sh.help.conditions": "Le condizioni sono comandi:",
3504
+ "cli.sh.help.conditions_status": "(stato 0 = vero; vedi help test). I cicli si fermano dopo 10000 iterazioni",
3505
+ "cli.sh.help.conditions_loops": "di while/until; Ctrl+C interrompe lo script.",
3506
+ "cli.sh.help.example_script": "Script di esempio:",
3507
+ // ── Sort ─────────────────────────────────────────────────────────
3508
+ "cli.sort.description": "Ordinare le righe dei file di testo",
3509
+ "cli.sort.help.sort_lines_file_piped": "Ordina le righe di un file o dell'input da pipe, in ordine alfabetico per impostazione predefinita. Ordina in modo numerico, inverso, per campo, o elimina i duplicati. Pi\xF9 file vengono ordinati insieme in un unico elenco.",
3510
+ "cli.sort.help.sort_lines_alphabetically": "Ordinare le righe alfabeticamente",
3511
+ "cli.sort.help.sort_field_split": "Ordinare per campo <n>, diviso su <sep>",
3512
+ "cli.sort.help.sort_piped_input": "Ordinare l'input da pipe",
3513
+ "cli.sort.help.z": "Dalla A alla Z",
3514
+ "cli.sort.help.largest_number_first": "Prima il numero pi\xF9 grande",
3515
+ "cli.sort.help.sort_csv_second_column": "Ordinare un CSV per la seconda colonna",
3516
+ "cli.sort.help.sorted_without_duplicates": "Ordinato, senza duplicati",
3517
+ // ── Stat ─────────────────────────────────────────────────────────
3518
+ "cli.stat.description": "Mostrare i metadati di file/directory",
3519
+ "cli.stat.help.show_details_about_files": "Mostra i dettagli di file o directory: percorso completo, dimensione, tipo, permessi, proprietario, gruppo, data di creazione e ultima modifica.",
3520
+ "cli.stat.help.show_details_each_path": "Mostrare i dettagli di ogni percorso",
3521
+ "cli.stat.help.details_one_file": "Dettagli di un file",
3522
+ "cli.stat.help.several_paths_once": "Pi\xF9 percorsi insieme",
3523
+ // ── Tac ──────────────────────────────────────────────────────────
3524
+ "cli.tac.description": "Stampare un file in ordine inverso di righe",
3525
+ "cli.tac.help.print_file_lines_reverse": "Stampa un file con le righe in ordine inverso, ultima riga per prima. Funziona anche con l'input da pipe.",
3526
+ "cli.tac.help.print_file_bottom_top": "Stampare un file dal basso verso l'alto",
3527
+ "cli.tac.help.reverse_piped_input": "Invertire l'input da pipe",
3528
+ "cli.tac.help.newest_log_lines_first": "Prima le righe di log pi\xF9 recenti",
3529
+ "cli.tac.help.reverse_list": "Invertire un elenco",
3530
+ // ── Tail ─────────────────────────────────────────────────────────
3531
+ "cli.tail.description": "Mostrare le ultime righe di un file",
3532
+ "cli.tail.help.print_last_lines_file": "Stampa le ultime righe di un file, 10 per impostazione predefinita. Funziona anche con l'input da pipe. Con pi\xF9 file, ognuno ha un'intestazione ==> name <==.",
3533
+ "cli.tail.help.last_10_lines": "Ultime 10 righe",
3534
+ "cli.tail.help.last_lines": "Ultime <count> righe",
3535
+ "cli.tail.help.last_lines_piped_input": "Ultime righe dell'input da pipe",
3536
+ "cli.tail.help.show_end_log": "Mostrare la fine di un log",
3537
+ "cli.tail.help.last_5_lines": "Ultime 5 righe",
3538
+ "cli.tail.help.last_20_lines_log": "Ultime 20 righe del log",
3539
+ // ── Tee ──────────────────────────────────────────────────────────
3540
+ "cli.tee.description": "Copiare l'input da pipe nei file e nell'output",
3541
+ "cli.tee.help.pass_piped_input_through": "Passa l'input da pipe invariato e ne salva una copia in ogni file indicato, sovrascrivendoli o aggiungendo in coda con -a. Come il tee Unix, legge solo l'input da pipe: per copiare un file, passalo con cat.",
3542
+ "cli.tee.help.show_piped_output_save": "Mostrare l'output da pipe e salvarlo",
3543
+ "cli.tee.help.append_instead_overwriting": "Aggiungere invece di sovrascrivere",
3544
+ "cli.tee.help.show_save_copy": "Mostrare e salvare una copia",
3545
+ "cli.tee.help.add_line_log": "Aggiungere una riga a un log",
3546
+ "cli.tee.help.copy_source_txt_txt": "Copiare source.txt in a.txt e b.txt",
3547
+ // ── Touch ────────────────────────────────────────────────────────
3548
+ "cli.touch.description": "Creare un file vuoto o aggiornarne il timestamp",
3549
+ "cli.touch.help.create_empty_file_update": "Crea un file vuoto, oppure aggiorna la data di modifica di un file gi\xE0 esistente. La directory padre deve gi\xE0 esistere.",
3550
+ "cli.touch.help.create_files_refresh_their": "Creare i file, o aggiornarne i timestamp",
3551
+ "cli.touch.help.create_empty_notes_txt": "Creare un notes.txt vuoto",
3552
+ "cli.touch.help.create_file_docs": "Creare un file in ~/docs",
3553
+ // ── Tr ───────────────────────────────────────────────────────────
3554
+ "cli.tr.description": "Tradurre o eliminare caratteri nell'input da pipe",
3555
+ "cli.tr.help.translate_characters_set1_matching": "Traduce i caratteri da SET1 nei caratteri corrispondenti di SET2, li elimina (-d) o riduce le ripetizioni a uno (-s). I set possono usare intervalli come a-z e classi come [:upper:], [:lower:], [:digit:], [:alpha:], [:alnum:] e [:space:]. Le sequenze di escape \\n, \\t e \\\\ sono riconosciute. Come il tr Unix, legge solo l'input da pipe e non accetta operandi file: per trasformare un file, passalo con cat.",
3556
+ "cli.tr.help.replace_characters": "Sostituire caratteri",
3557
+ "cli.tr.help.delete_characters": "Eliminare caratteri",
3558
+ "cli.tr.help.squeeze_repeated_characters": "Ridurre i caratteri ripetuti",
3559
+ "cli.tr.help.convert_file_upper_case": "Convertire un file in maiuscolo",
3560
+ "cli.tr.help.upper_case_piped_text": "Mettere in maiuscolo il testo da pipe",
3561
+ "cli.tr.help.remove_all_digits": "Rimuovere tutte le cifre",
3562
+ "cli.tr.help.collapse_runs_spaces": "Comprimere le sequenze di spazi",
3563
+ // ── Tree ─────────────────────────────────────────────────────────
3564
+ "cli.tree.description": "Mostrare la struttura ad albero delle directory",
3565
+ "cli.tree.help.draw_directory_everything_below": "Disegna una directory e tutto ci\xF2 che contiene come albero, prima le directory, seguite dal conteggio di directory e file. Per impostazione predefinita usa la directory corrente.",
3566
+ "cli.tree.help.show_whole_tree": "Mostrare l'intero albero",
3567
+ "cli.tree.help.only_levels_deep": "Solo <n> livelli di profondit\xE0",
3568
+ "cli.tree.help.tree_current_directory": "Albero della directory corrente",
3569
+ "cli.tree.help.tree_docs": "Albero di ~/docs",
3570
+ "cli.tree.help.top_two_levels_only": "Solo i primi due livelli",
3571
+ // ── Uniq ─────────────────────────────────────────────────────────
3572
+ "cli.uniq.description": "Filtrare le righe duplicate adiacenti di un file",
3573
+ "cli.uniq.help.collapse_repeated_lines_next": "Riduce a una sola le righe ripetute adiacenti. Vengono unificati solo i duplicati adiacenti, quindi ordina prima l'input per trovarli tutti.",
3574
+ "cli.uniq.help.drop_adjacent_duplicate_lines": "Eliminare le righe duplicate adiacenti",
3575
+ "cli.uniq.help.filter_piped_input": "Filtrare l'input da pipe",
3576
+ "cli.uniq.help.collapse_repeated_lines": "Ridurre le righe ripetute",
3577
+ "cli.uniq.help.count_how_often_each": "Contare quante volte appare ogni riga",
3578
+ "cli.uniq.help.show_only_duplicated_lines": "Mostrare solo le righe duplicate",
3579
+ // ── Wc ───────────────────────────────────────────────────────────
3580
+ "cli.wc.description": "Stampare il numero di righe, parole e caratteri",
3581
+ "cli.wc.help.count_lines_words_characters": "Conta righe, parole e caratteri nei file o nell'input da pipe. Con pi\xF9 file, alla fine viene stampata una riga di totale.",
3582
+ "cli.wc.help.lines_words_characters": "Righe, parole e caratteri",
3583
+ "cli.wc.help.only_line_count": "Solo il numero di righe",
3584
+ "cli.wc.help.count_piped_input": "Contare l'input da pipe",
3585
+ "cli.wc.help.all_three_counts": "Tutti e tre i conteggi",
3586
+ "cli.wc.help.line_counts_total": "Conteggi di righe con un totale",
3587
+ "cli.wc.help.how_many_lines_mention": "Quante righe contengono error",
3588
+ // ── Xargs ────────────────────────────────────────────────────────
3589
+ "cli.xargs.description": "Costruire ed eseguire comandi dall'input di un file",
3590
+ "cli.xargs.help.run_command_arguments_taken": "Esegue un comando con argomenti presi dall'input, separati da spazi o a capo. Per impostazione predefinita sono tutti aggiunti a un solo comando; -n lo esegue a gruppi e -I lo esegue una volta per riga, sostituendo un segnaposto. Le opzioni di xargs vanno prima del comando; tutto ci\xF2 che segue, flag inclusi, appartiene al comando. L'input \xE8 testo da pipe o, senza pipe, l'ultimo file indicato.",
3591
+ "cli.xargs.help.append_input_lines": "Aggiungere le righe di input a <cmd>",
3592
+ "cli.xargs.help.run_once_per_line": "Eseguire <cmd> una volta per riga",
3593
+ "cli.xargs.help.read_arguments_file": "Leggere gli argomenti da un file",
3594
+ "cli.xargs.help.delete_every_tmp_file": "Eliminare ogni file .tmp",
3595
+ "cli.xargs.help.copy_each_listed_file": "Copiare ogni file elencato",
3596
+ "cli.xargs.help.one_mkdir_per_line": "Un mkdir per riga",
3597
+ "cli.xargs.help.inner_command_keeps_flags": "Il comando interno mantiene i suoi flag",
3598
+ // ── Markdown ─────────────────────────────────────────────────────
3599
+ "cli.md.description": "Visualizzare il Markdown nel terminale",
3600
+ "cli.md.help.show_markdown_formatted_terminal": "Mostra il Markdown formattato nel terminale: titoli, testo in grassetto e corsivo, elenchi, citazioni, codice e link. Passa il testo direttamente (tra virgolette o no, \\n inizia una nuova riga) oppure inviala da un altro comando.",
3601
+ "cli.md.help.render_inline_text": "Visualizzare testo diretto",
3602
+ "cli.md.help.same_optional_render_verb": "Uguale, con il verbo opzionale render (anche preview, view)",
3603
+ "cli.md.help.render_output_command": "Visualizzare l'output di un comando",
3604
+ "cli.md.help.heading": "Un titolo",
3605
+ "cli.md.help.several_lines": "Pi\xF9 righe",
3606
+ "cli.md.help.piped_text": "Testo da pipe",
3607
+ "cli.md.help.same_using_aliases": "Uguale, usando gli alias",
3608
+ // ── Todo ─────────────────────────────────────────────────────────
3609
+ "cli.todo.description": "Gestisci le attivit\xE0 dal terminale. Aggiungi, elenca, modifica, completa e rimuovi elementi TODO.",
3610
+ "cli.todo.ls.description": "Elencare gli elementi TODO",
3611
+ "cli.todo.add.description": "Aggiungere una nuova attivit\xE0",
3612
+ "cli.todo.edit.description": "Modificare il testo o la scadenza di un'attivit\xE0",
3613
+ "cli.todo.done.description": "Segnare un'attivit\xE0 come fatta",
3614
+ "cli.todo.toggle.description": "Alternare un'attivit\xE0 tra fatta e non fatta",
3615
+ "cli.todo.rm.description": "Rimuovere un'attivit\xE0 tramite ID",
3616
+ "cli.todo.help.commands": "Comandi:",
3617
+ "cli.todo.help.list_all": "Elencare tutte le attivit\xE0",
3618
+ "cli.todo.help.list_pending": "Elencare solo le attivit\xE0 in sospeso",
3619
+ "cli.todo.help.list_completed": "Elencare solo le attivit\xE0 completate",
3620
+ "cli.todo.help.list_overdue": "Elencare solo le attivit\xE0 scadute",
3621
+ "cli.todo.help.add": "Aggiungere una nuova attivit\xE0",
3622
+ "cli.todo.help.add_due": "Aggiungere con data di scadenza",
3623
+ "cli.todo.help.edit": "Modificare un'attivit\xE0",
3624
+ "cli.todo.help.done": "Segnare un'attivit\xE0 come fatta",
3625
+ "cli.todo.help.toggle": "Alternare fatta/non fatta",
3626
+ "cli.todo.help.remove": "Rimuovere un'attivit\xE0",
3627
+ "cli.todo.help.remove_all": "Rimuovere tutte le attivit\xE0",
3628
+ "cli.todo.help.due_formats": "Formati della data di scadenza:",
3629
+ // ── True ─────────────────────────────────────────────────────────
3630
+ "cli.true.description": "Non fa nulla, con successo (stato di uscita 0)",
3631
+ // ── False ────────────────────────────────────────────────────────
3632
+ "cli.false.description": "Non fa nulla, senza successo (stato di uscita 1)",
3633
+ // ── Htop ─────────────────────────────────────────────────────────
3634
+ "cli.htop.description": "Monitor interattivo di processi e servizi"
2882
3635
  };
2883
3636
 
2884
3637
  // src/public-api.ts