@pipelab/plugin-core 1.0.0-beta.2 → 1.0.0-beta.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -39,10 +39,9 @@ let os = require("os");
39
39
  let path = require("path");
40
40
  let util = require("util");
41
41
  let _pipelab_core_node = require("@pipelab/core-node");
42
+ let node_fs = require("node:fs");
42
43
  let node_fs_promises = require("node:fs/promises");
43
44
  let node_path = require("node:path");
44
- let node_os = require("node:os");
45
- let node_fs = require("node:fs");
46
45
  let tar = require("tar");
47
46
  tar = __toESM(tar);
48
47
  let yauzl = require("yauzl");
@@ -51,29 +50,21 @@ let archiver = require("archiver");
51
50
  archiver = __toESM(archiver);
52
51
  let zod = require("zod");
53
52
  //#region ../../packages/migration/src/models/createMigration.ts
54
- function createMigration(migration) {
53
+ function createMigration$1(migration) {
55
54
  return {
56
55
  version: migration.version,
57
56
  up: async (state, nextVersion) => {
58
- const newState = await migration.up(state, nextVersion);
59
- newState.version = nextVersion;
60
- return newState;
61
- },
62
- down: async (state, nextVersion) => {
63
- const newState = await migration.down(state, nextVersion);
57
+ const newState = migration.up ? await migration.up(state, nextVersion) : state;
64
58
  newState.version = nextVersion;
65
59
  return newState;
66
60
  }
67
61
  };
68
62
  }
69
- const initialVersion = () => {
70
- throw new Error("Unable to go down on the initial version!");
71
- };
72
63
  const finalVersion = () => {
73
64
  throw new Error("Unable to go up on the final version!");
74
65
  };
75
66
  //#endregion
76
- //#region ../../node_modules/semver/internal/constants.js
67
+ //#region ../../packages/migration/node_modules/semver/internal/constants.js
77
68
  var require_constants$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
78
69
  const SEMVER_SPEC_VERSION = "2.0.0";
79
70
  const MAX_LENGTH = 256;
@@ -98,12 +89,12 @@ var require_constants$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
98
89
  };
99
90
  }));
100
91
  //#endregion
101
- //#region ../../node_modules/semver/internal/debug.js
92
+ //#region ../../packages/migration/node_modules/semver/internal/debug.js
102
93
  var require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => {
103
94
  module.exports = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {};
104
95
  }));
105
96
  //#endregion
106
- //#region ../../node_modules/semver/internal/re.js
97
+ //#region ../../packages/migration/node_modules/semver/internal/re.js
107
98
  var require_re = /* @__PURE__ */ __commonJSMin(((exports, module) => {
108
99
  const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH } = require_constants$2();
109
100
  const debug = require_debug();
@@ -182,7 +173,7 @@ var require_re = /* @__PURE__ */ __commonJSMin(((exports, module) => {
182
173
  createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
183
174
  }));
184
175
  //#endregion
185
- //#region ../../node_modules/semver/internal/parse-options.js
176
+ //#region ../../packages/migration/node_modules/semver/internal/parse-options.js
186
177
  var require_parse_options = /* @__PURE__ */ __commonJSMin(((exports, module) => {
187
178
  const looseOption = Object.freeze({ loose: true });
188
179
  const emptyOpts = Object.freeze({});
@@ -194,7 +185,7 @@ var require_parse_options = /* @__PURE__ */ __commonJSMin(((exports, module) =>
194
185
  module.exports = parseOptions;
195
186
  }));
196
187
  //#endregion
197
- //#region ../../node_modules/semver/internal/identifiers.js
188
+ //#region ../../packages/migration/node_modules/semver/internal/identifiers.js
198
189
  var require_identifiers = /* @__PURE__ */ __commonJSMin(((exports, module) => {
199
190
  const numeric = /^[0-9]+$/;
200
191
  const compareIdentifiers = (a, b) => {
@@ -214,7 +205,7 @@ var require_identifiers = /* @__PURE__ */ __commonJSMin(((exports, module) => {
214
205
  };
215
206
  }));
216
207
  //#endregion
217
- //#region ../../node_modules/semver/classes/semver.js
208
+ //#region ../../packages/migration/node_modules/semver/classes/semver.js
218
209
  var require_semver$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
219
210
  const debug = require_debug();
220
211
  const { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants$2();
@@ -392,7 +383,7 @@ var require_semver$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
392
383
  };
393
384
  }));
394
385
  //#endregion
395
- //#region ../../node_modules/semver/functions/parse.js
386
+ //#region ../../packages/migration/node_modules/semver/functions/parse.js
396
387
  var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
397
388
  const SemVer = require_semver$1();
398
389
  const parse = (version, options, throwErrors = false) => {
@@ -407,7 +398,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
407
398
  module.exports = parse;
408
399
  }));
409
400
  //#endregion
410
- //#region ../../node_modules/semver/functions/valid.js
401
+ //#region ../../packages/migration/node_modules/semver/functions/valid.js
411
402
  var require_valid$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
412
403
  const parse = require_parse();
413
404
  const valid = (version, options) => {
@@ -417,7 +408,7 @@ var require_valid$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
417
408
  module.exports = valid;
418
409
  }));
419
410
  //#endregion
420
- //#region ../../node_modules/semver/functions/clean.js
411
+ //#region ../../packages/migration/node_modules/semver/functions/clean.js
421
412
  var require_clean = /* @__PURE__ */ __commonJSMin(((exports, module) => {
422
413
  const parse = require_parse();
423
414
  const clean = (version, options) => {
@@ -427,7 +418,7 @@ var require_clean = /* @__PURE__ */ __commonJSMin(((exports, module) => {
427
418
  module.exports = clean;
428
419
  }));
429
420
  //#endregion
430
- //#region ../../node_modules/semver/functions/inc.js
421
+ //#region ../../packages/migration/node_modules/semver/functions/inc.js
431
422
  var require_inc = /* @__PURE__ */ __commonJSMin(((exports, module) => {
432
423
  const SemVer = require_semver$1();
433
424
  const inc = (version, release, options, identifier, identifierBase) => {
@@ -445,7 +436,7 @@ var require_inc = /* @__PURE__ */ __commonJSMin(((exports, module) => {
445
436
  module.exports = inc;
446
437
  }));
447
438
  //#endregion
448
- //#region ../../node_modules/semver/functions/diff.js
439
+ //#region ../../packages/migration/node_modules/semver/functions/diff.js
449
440
  var require_diff = /* @__PURE__ */ __commonJSMin(((exports, module) => {
450
441
  const parse = require_parse();
451
442
  const diff = (version1, version2) => {
@@ -473,28 +464,28 @@ var require_diff = /* @__PURE__ */ __commonJSMin(((exports, module) => {
473
464
  module.exports = diff;
474
465
  }));
475
466
  //#endregion
476
- //#region ../../node_modules/semver/functions/major.js
467
+ //#region ../../packages/migration/node_modules/semver/functions/major.js
477
468
  var require_major = /* @__PURE__ */ __commonJSMin(((exports, module) => {
478
469
  const SemVer = require_semver$1();
479
470
  const major = (a, loose) => new SemVer(a, loose).major;
480
471
  module.exports = major;
481
472
  }));
482
473
  //#endregion
483
- //#region ../../node_modules/semver/functions/minor.js
474
+ //#region ../../packages/migration/node_modules/semver/functions/minor.js
484
475
  var require_minor = /* @__PURE__ */ __commonJSMin(((exports, module) => {
485
476
  const SemVer = require_semver$1();
486
477
  const minor = (a, loose) => new SemVer(a, loose).minor;
487
478
  module.exports = minor;
488
479
  }));
489
480
  //#endregion
490
- //#region ../../node_modules/semver/functions/patch.js
481
+ //#region ../../packages/migration/node_modules/semver/functions/patch.js
491
482
  var require_patch = /* @__PURE__ */ __commonJSMin(((exports, module) => {
492
483
  const SemVer = require_semver$1();
493
484
  const patch = (a, loose) => new SemVer(a, loose).patch;
494
485
  module.exports = patch;
495
486
  }));
496
487
  //#endregion
497
- //#region ../../node_modules/semver/functions/prerelease.js
488
+ //#region ../../packages/migration/node_modules/semver/functions/prerelease.js
498
489
  var require_prerelease = /* @__PURE__ */ __commonJSMin(((exports, module) => {
499
490
  const parse = require_parse();
500
491
  const prerelease = (version, options) => {
@@ -504,28 +495,28 @@ var require_prerelease = /* @__PURE__ */ __commonJSMin(((exports, module) => {
504
495
  module.exports = prerelease;
505
496
  }));
506
497
  //#endregion
507
- //#region ../../node_modules/semver/functions/compare.js
498
+ //#region ../../packages/migration/node_modules/semver/functions/compare.js
508
499
  var require_compare = /* @__PURE__ */ __commonJSMin(((exports, module) => {
509
500
  const SemVer = require_semver$1();
510
501
  const compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
511
502
  module.exports = compare;
512
503
  }));
513
504
  //#endregion
514
- //#region ../../node_modules/semver/functions/rcompare.js
505
+ //#region ../../packages/migration/node_modules/semver/functions/rcompare.js
515
506
  var require_rcompare = /* @__PURE__ */ __commonJSMin(((exports, module) => {
516
507
  const compare = require_compare();
517
508
  const rcompare = (a, b, loose) => compare(b, a, loose);
518
509
  module.exports = rcompare;
519
510
  }));
520
511
  //#endregion
521
- //#region ../../node_modules/semver/functions/compare-loose.js
512
+ //#region ../../packages/migration/node_modules/semver/functions/compare-loose.js
522
513
  var require_compare_loose = /* @__PURE__ */ __commonJSMin(((exports, module) => {
523
514
  const compare = require_compare();
524
515
  const compareLoose = (a, b) => compare(a, b, true);
525
516
  module.exports = compareLoose;
526
517
  }));
527
518
  //#endregion
528
- //#region ../../node_modules/semver/functions/compare-build.js
519
+ //#region ../../packages/migration/node_modules/semver/functions/compare-build.js
529
520
  var require_compare_build = /* @__PURE__ */ __commonJSMin(((exports, module) => {
530
521
  const SemVer = require_semver$1();
531
522
  const compareBuild = (a, b, loose) => {
@@ -536,63 +527,63 @@ var require_compare_build = /* @__PURE__ */ __commonJSMin(((exports, module) =>
536
527
  module.exports = compareBuild;
537
528
  }));
538
529
  //#endregion
539
- //#region ../../node_modules/semver/functions/sort.js
530
+ //#region ../../packages/migration/node_modules/semver/functions/sort.js
540
531
  var require_sort = /* @__PURE__ */ __commonJSMin(((exports, module) => {
541
532
  const compareBuild = require_compare_build();
542
533
  const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
543
534
  module.exports = sort;
544
535
  }));
545
536
  //#endregion
546
- //#region ../../node_modules/semver/functions/rsort.js
537
+ //#region ../../packages/migration/node_modules/semver/functions/rsort.js
547
538
  var require_rsort = /* @__PURE__ */ __commonJSMin(((exports, module) => {
548
539
  const compareBuild = require_compare_build();
549
540
  const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
550
541
  module.exports = rsort;
551
542
  }));
552
543
  //#endregion
553
- //#region ../../node_modules/semver/functions/gt.js
544
+ //#region ../../packages/migration/node_modules/semver/functions/gt.js
554
545
  var require_gt = /* @__PURE__ */ __commonJSMin(((exports, module) => {
555
546
  const compare = require_compare();
556
547
  const gt = (a, b, loose) => compare(a, b, loose) > 0;
557
548
  module.exports = gt;
558
549
  }));
559
550
  //#endregion
560
- //#region ../../node_modules/semver/functions/lt.js
551
+ //#region ../../packages/migration/node_modules/semver/functions/lt.js
561
552
  var require_lt = /* @__PURE__ */ __commonJSMin(((exports, module) => {
562
553
  const compare = require_compare();
563
554
  const lt = (a, b, loose) => compare(a, b, loose) < 0;
564
555
  module.exports = lt;
565
556
  }));
566
557
  //#endregion
567
- //#region ../../node_modules/semver/functions/eq.js
558
+ //#region ../../packages/migration/node_modules/semver/functions/eq.js
568
559
  var require_eq = /* @__PURE__ */ __commonJSMin(((exports, module) => {
569
560
  const compare = require_compare();
570
561
  const eq = (a, b, loose) => compare(a, b, loose) === 0;
571
562
  module.exports = eq;
572
563
  }));
573
564
  //#endregion
574
- //#region ../../node_modules/semver/functions/neq.js
565
+ //#region ../../packages/migration/node_modules/semver/functions/neq.js
575
566
  var require_neq = /* @__PURE__ */ __commonJSMin(((exports, module) => {
576
567
  const compare = require_compare();
577
568
  const neq = (a, b, loose) => compare(a, b, loose) !== 0;
578
569
  module.exports = neq;
579
570
  }));
580
571
  //#endregion
581
- //#region ../../node_modules/semver/functions/gte.js
572
+ //#region ../../packages/migration/node_modules/semver/functions/gte.js
582
573
  var require_gte = /* @__PURE__ */ __commonJSMin(((exports, module) => {
583
574
  const compare = require_compare();
584
575
  const gte = (a, b, loose) => compare(a, b, loose) >= 0;
585
576
  module.exports = gte;
586
577
  }));
587
578
  //#endregion
588
- //#region ../../node_modules/semver/functions/lte.js
579
+ //#region ../../packages/migration/node_modules/semver/functions/lte.js
589
580
  var require_lte = /* @__PURE__ */ __commonJSMin(((exports, module) => {
590
581
  const compare = require_compare();
591
582
  const lte = (a, b, loose) => compare(a, b, loose) <= 0;
592
583
  module.exports = lte;
593
584
  }));
594
585
  //#endregion
595
- //#region ../../node_modules/semver/functions/cmp.js
586
+ //#region ../../packages/migration/node_modules/semver/functions/cmp.js
596
587
  var require_cmp = /* @__PURE__ */ __commonJSMin(((exports, module) => {
597
588
  const eq = require_eq();
598
589
  const neq = require_neq();
@@ -624,7 +615,7 @@ var require_cmp = /* @__PURE__ */ __commonJSMin(((exports, module) => {
624
615
  module.exports = cmp;
625
616
  }));
626
617
  //#endregion
627
- //#region ../../node_modules/semver/functions/coerce.js
618
+ //#region ../../packages/migration/node_modules/semver/functions/coerce.js
628
619
  var require_coerce = /* @__PURE__ */ __commonJSMin(((exports, module) => {
629
620
  const SemVer = require_semver$1();
630
621
  const parse = require_parse();
@@ -652,7 +643,7 @@ var require_coerce = /* @__PURE__ */ __commonJSMin(((exports, module) => {
652
643
  module.exports = coerce;
653
644
  }));
654
645
  //#endregion
655
- //#region ../../node_modules/semver/internal/lrucache.js
646
+ //#region ../../packages/migration/node_modules/semver/internal/lrucache.js
656
647
  var require_lrucache = /* @__PURE__ */ __commonJSMin(((exports, module) => {
657
648
  var LRUCache = class {
658
649
  constructor() {
@@ -685,7 +676,7 @@ var require_lrucache = /* @__PURE__ */ __commonJSMin(((exports, module) => {
685
676
  module.exports = LRUCache;
686
677
  }));
687
678
  //#endregion
688
- //#region ../../node_modules/semver/classes/range.js
679
+ //#region ../../packages/migration/node_modules/semver/classes/range.js
689
680
  var require_range = /* @__PURE__ */ __commonJSMin(((exports, module) => {
690
681
  const SPACE_CHARACTERS = /\s+/g;
691
682
  module.exports = class Range {
@@ -957,7 +948,7 @@ var require_range = /* @__PURE__ */ __commonJSMin(((exports, module) => {
957
948
  };
958
949
  }));
959
950
  //#endregion
960
- //#region ../../node_modules/semver/classes/comparator.js
951
+ //#region ../../packages/migration/node_modules/semver/classes/comparator.js
961
952
  var require_comparator = /* @__PURE__ */ __commonJSMin(((exports, module) => {
962
953
  const ANY = Symbol("SemVer ANY");
963
954
  module.exports = class Comparator {
@@ -1027,7 +1018,7 @@ var require_comparator = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1027
1018
  const Range = require_range();
1028
1019
  }));
1029
1020
  //#endregion
1030
- //#region ../../node_modules/semver/functions/satisfies.js
1021
+ //#region ../../packages/migration/node_modules/semver/functions/satisfies.js
1031
1022
  var require_satisfies = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1032
1023
  const Range = require_range();
1033
1024
  const satisfies = (version, range, options) => {
@@ -1041,14 +1032,14 @@ var require_satisfies = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1041
1032
  module.exports = satisfies;
1042
1033
  }));
1043
1034
  //#endregion
1044
- //#region ../../node_modules/semver/ranges/to-comparators.js
1035
+ //#region ../../packages/migration/node_modules/semver/ranges/to-comparators.js
1045
1036
  var require_to_comparators = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1046
1037
  const Range = require_range();
1047
1038
  const toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
1048
1039
  module.exports = toComparators;
1049
1040
  }));
1050
1041
  //#endregion
1051
- //#region ../../node_modules/semver/ranges/max-satisfying.js
1042
+ //#region ../../packages/migration/node_modules/semver/ranges/max-satisfying.js
1052
1043
  var require_max_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1053
1044
  const SemVer = require_semver$1();
1054
1045
  const Range = require_range();
@@ -1074,7 +1065,7 @@ var require_max_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) =>
1074
1065
  module.exports = maxSatisfying;
1075
1066
  }));
1076
1067
  //#endregion
1077
- //#region ../../node_modules/semver/ranges/min-satisfying.js
1068
+ //#region ../../packages/migration/node_modules/semver/ranges/min-satisfying.js
1078
1069
  var require_min_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1079
1070
  const SemVer = require_semver$1();
1080
1071
  const Range = require_range();
@@ -1100,7 +1091,7 @@ var require_min_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) =>
1100
1091
  module.exports = minSatisfying;
1101
1092
  }));
1102
1093
  //#endregion
1103
- //#region ../../node_modules/semver/ranges/min-version.js
1094
+ //#region ../../packages/migration/node_modules/semver/ranges/min-version.js
1104
1095
  var require_min_version = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1105
1096
  const SemVer = require_semver$1();
1106
1097
  const Range = require_range();
@@ -1139,7 +1130,7 @@ var require_min_version = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1139
1130
  module.exports = minVersion;
1140
1131
  }));
1141
1132
  //#endregion
1142
- //#region ../../node_modules/semver/ranges/valid.js
1133
+ //#region ../../packages/migration/node_modules/semver/ranges/valid.js
1143
1134
  var require_valid = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1144
1135
  const Range = require_range();
1145
1136
  const validRange = (range, options) => {
@@ -1152,7 +1143,7 @@ var require_valid = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1152
1143
  module.exports = validRange;
1153
1144
  }));
1154
1145
  //#endregion
1155
- //#region ../../node_modules/semver/ranges/outside.js
1146
+ //#region ../../packages/migration/node_modules/semver/ranges/outside.js
1156
1147
  var require_outside = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1157
1148
  const SemVer = require_semver$1();
1158
1149
  const Comparator = require_comparator();
@@ -1205,21 +1196,21 @@ var require_outside = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1205
1196
  module.exports = outside;
1206
1197
  }));
1207
1198
  //#endregion
1208
- //#region ../../node_modules/semver/ranges/gtr.js
1199
+ //#region ../../packages/migration/node_modules/semver/ranges/gtr.js
1209
1200
  var require_gtr = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1210
1201
  const outside = require_outside();
1211
1202
  const gtr = (version, range, options) => outside(version, range, ">", options);
1212
1203
  module.exports = gtr;
1213
1204
  }));
1214
1205
  //#endregion
1215
- //#region ../../node_modules/semver/ranges/ltr.js
1206
+ //#region ../../packages/migration/node_modules/semver/ranges/ltr.js
1216
1207
  var require_ltr = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1217
1208
  const outside = require_outside();
1218
1209
  const ltr = (version, range, options) => outside(version, range, "<", options);
1219
1210
  module.exports = ltr;
1220
1211
  }));
1221
1212
  //#endregion
1222
- //#region ../../node_modules/semver/ranges/intersects.js
1213
+ //#region ../../packages/migration/node_modules/semver/ranges/intersects.js
1223
1214
  var require_intersects = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1224
1215
  const Range = require_range();
1225
1216
  const intersects = (r1, r2, options) => {
@@ -1230,7 +1221,7 @@ var require_intersects = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1230
1221
  module.exports = intersects;
1231
1222
  }));
1232
1223
  //#endregion
1233
- //#region ../../node_modules/semver/ranges/simplify.js
1224
+ //#region ../../packages/migration/node_modules/semver/ranges/simplify.js
1234
1225
  var require_simplify = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1235
1226
  const satisfies = require_satisfies();
1236
1227
  const compare = require_compare();
@@ -1260,7 +1251,7 @@ var require_simplify = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1260
1251
  };
1261
1252
  }));
1262
1253
  //#endregion
1263
- //#region ../../node_modules/semver/ranges/subset.js
1254
+ //#region ../../packages/migration/node_modules/semver/ranges/subset.js
1264
1255
  var require_subset = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1265
1256
  const Range = require_range();
1266
1257
  const Comparator = require_comparator();
@@ -1617,19 +1608,6 @@ function custom(check2, message) {
1617
1608
  }
1618
1609
  };
1619
1610
  }
1620
- function lazy(getter) {
1621
- return {
1622
- kind: "schema",
1623
- type: "lazy",
1624
- reference: lazy,
1625
- expects: "unknown",
1626
- async: false,
1627
- getter,
1628
- _run(dataset, config2) {
1629
- return this.getter(dataset.value)._run(dataset, config2);
1630
- }
1631
- };
1632
- }
1633
1611
  function literal(literal_, message) {
1634
1612
  return {
1635
1613
  kind: "schema",
@@ -1646,6 +1624,56 @@ function literal(literal_, message) {
1646
1624
  }
1647
1625
  };
1648
1626
  }
1627
+ function looseObject(entries, message) {
1628
+ return {
1629
+ kind: "schema",
1630
+ type: "loose_object",
1631
+ reference: looseObject,
1632
+ expects: "Object",
1633
+ async: false,
1634
+ entries,
1635
+ message,
1636
+ _run(dataset, config2) {
1637
+ const input = dataset.value;
1638
+ if (input && typeof input === "object") {
1639
+ dataset.typed = true;
1640
+ dataset.value = {};
1641
+ for (const key in this.entries) {
1642
+ const value2 = input[key];
1643
+ const valueDataset = this.entries[key]._run({
1644
+ typed: false,
1645
+ value: value2
1646
+ }, config2);
1647
+ if (valueDataset.issues) {
1648
+ const pathItem = {
1649
+ type: "object",
1650
+ origin: "value",
1651
+ input,
1652
+ key,
1653
+ value: value2
1654
+ };
1655
+ for (const issue of valueDataset.issues) {
1656
+ if (issue.path) issue.path.unshift(pathItem);
1657
+ else issue.path = [pathItem];
1658
+ dataset.issues?.push(issue);
1659
+ }
1660
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
1661
+ if (config2.abortEarly) {
1662
+ dataset.typed = false;
1663
+ break;
1664
+ }
1665
+ }
1666
+ if (!valueDataset.typed) dataset.typed = false;
1667
+ if (valueDataset.value !== void 0 || key in input) dataset.value[key] = valueDataset.value;
1668
+ }
1669
+ if (!dataset.issues || !config2.abortEarly) {
1670
+ for (const key in input) if (_isValidObjectKey(input, key) && !(key in this.entries)) dataset.value[key] = input[key];
1671
+ }
1672
+ } else _addIssue(this, "type", dataset, config2);
1673
+ return dataset;
1674
+ }
1675
+ };
1676
+ }
1649
1677
  function number(message) {
1650
1678
  return {
1651
1679
  kind: "schema",
@@ -1987,20 +2015,19 @@ var Migrator = class {
1987
2015
  if (currentIndex === -1) throw new Error(`Current version "${currentVersion}" not found in migrations`);
1988
2016
  if (targetIndex === -1) throw new Error(`Target version "${targetVersion}" not found in migrations`);
1989
2017
  if (currentIndex === targetIndex) return finalState;
1990
- const isUpgrade = currentIndex < targetIndex;
1991
- const increment = isUpgrade ? 1 : -1;
1992
- const direction = isUpgrade ? "up" : "down";
1993
- for (let i = currentIndex; isUpgrade ? i < targetIndex : i > targetIndex; i += increment) {
2018
+ if (!(currentIndex < targetIndex)) return finalState;
2019
+ for (let i = currentIndex; i < targetIndex; i++) {
1994
2020
  const currentVersion = versions[i];
1995
- const nextVersion = versions[i + increment];
2021
+ const nextVersion = versions[i + 1];
1996
2022
  if (options?.debug) console.log(" Migrating to version:", nextVersion);
1997
2023
  const migrationVersion = currentVersion;
1998
2024
  const migration = this.migrations[migrationVersion];
1999
2025
  const { version: _, ...stateWithoutVersion } = finalState;
2000
2026
  finalState = {
2001
- ...await migration[direction](stateWithoutVersion, currentVersion),
2027
+ ...await migration.up(stateWithoutVersion, currentVersion),
2002
2028
  version: nextVersion
2003
2029
  };
2030
+ if (options?.onStep) await options.onStep(finalState, nextVersion);
2004
2031
  if (options?.debug) console.log(" Migrated state:", finalState);
2005
2032
  }
2006
2033
  return finalState;
@@ -2027,10 +2054,71 @@ const createMigrator = () => {
2027
2054
  };
2028
2055
  //#endregion
2029
2056
  //#region ../../packages/shared/src/config/migrators.ts
2057
+ const DEFAULT_PLUGINS = [
2058
+ {
2059
+ name: "@pipelab/plugin-construct",
2060
+ enabled: true,
2061
+ description: "Construct 3 export & packaging"
2062
+ },
2063
+ {
2064
+ name: "@pipelab/plugin-filesystem",
2065
+ enabled: true,
2066
+ description: "Filesystem utilities"
2067
+ },
2068
+ {
2069
+ name: "@pipelab/plugin-system",
2070
+ enabled: true,
2071
+ description: "System & shell commands"
2072
+ },
2073
+ {
2074
+ name: "@pipelab/plugin-steam",
2075
+ enabled: true,
2076
+ description: "Steam publishing"
2077
+ },
2078
+ {
2079
+ name: "@pipelab/plugin-itch",
2080
+ enabled: true,
2081
+ description: "Itch.io publishing"
2082
+ },
2083
+ {
2084
+ name: "@pipelab/plugin-electron",
2085
+ enabled: true,
2086
+ description: "Electron packaging"
2087
+ },
2088
+ {
2089
+ name: "@pipelab/plugin-discord",
2090
+ enabled: true,
2091
+ description: "Discord Rich Presence"
2092
+ },
2093
+ {
2094
+ name: "@pipelab/plugin-poki",
2095
+ enabled: true,
2096
+ description: "Poki publishing"
2097
+ },
2098
+ {
2099
+ name: "@pipelab/plugin-nvpatch",
2100
+ enabled: true,
2101
+ description: "NW.js patching"
2102
+ },
2103
+ {
2104
+ name: "@pipelab/plugin-tauri",
2105
+ enabled: true,
2106
+ description: "Tauri packaging"
2107
+ },
2108
+ {
2109
+ name: "@pipelab/plugin-minify",
2110
+ enabled: true,
2111
+ description: "Asset minification"
2112
+ },
2113
+ {
2114
+ name: "@pipelab/plugin-netlify",
2115
+ enabled: true,
2116
+ description: "Netlify deployment"
2117
+ }
2118
+ ];
2119
+ const createMigration = (config) => createMigration$1(config);
2030
2120
  const settingsMigratorInternal = createMigrator();
2031
2121
  const defaultAppSettings$1 = settingsMigratorInternal.createDefault({
2032
- cacheFolder: "",
2033
- clearTemporaryFoldersOnPipelineEnd: false,
2034
2122
  locale: "en-US",
2035
2123
  theme: "light",
2036
2124
  version: "7.0.0",
@@ -2045,15 +2133,15 @@ const defaultAppSettings$1 = settingsMigratorInternal.createDefault({
2045
2133
  step: 0,
2046
2134
  completed: false
2047
2135
  }
2048
- }
2136
+ },
2137
+ plugins: DEFAULT_PLUGINS
2049
2138
  });
2050
2139
  const appSettingsMigrator$1 = settingsMigratorInternal.createMigrations({
2051
2140
  defaultValue: defaultAppSettings$1,
2052
2141
  migrations: [
2053
2142
  createMigration({
2054
2143
  version: "1.0.0",
2055
- up: (state) => state,
2056
- down: initialVersion
2144
+ up: (state) => state
2057
2145
  }),
2058
2146
  createMigration({
2059
2147
  version: "2.0.0",
@@ -2062,9 +2150,6 @@ const appSettingsMigrator$1 = settingsMigratorInternal.createMigrations({
2062
2150
  ...state,
2063
2151
  clearTemporaryFoldersOnPipelineEnd: false
2064
2152
  };
2065
- },
2066
- down: () => {
2067
- throw new Error("Can't migrate down from 2.0.0");
2068
2153
  }
2069
2154
  }),
2070
2155
  createMigration({
@@ -2072,11 +2157,7 @@ const appSettingsMigrator$1 = settingsMigratorInternal.createMigrations({
2072
2157
  up: (state) => ({
2073
2158
  ...state,
2074
2159
  locale: "en-US"
2075
- }),
2076
- down: (state) => {
2077
- const { locale, ...rest } = state;
2078
- return rest;
2079
- }
2160
+ })
2080
2161
  }),
2081
2162
  createMigration({
2082
2163
  version: "4.0.0",
@@ -2092,84 +2173,90 @@ const appSettingsMigrator$1 = settingsMigratorInternal.createMigrations({
2092
2173
  completed: false
2093
2174
  }
2094
2175
  }
2095
- }),
2096
- down: (state) => {
2097
- const { tours, ...rest } = state;
2098
- return rest;
2099
- }
2176
+ })
2100
2177
  }),
2101
2178
  createMigration({
2102
2179
  version: "5.0.0",
2103
2180
  up: (state) => ({
2104
2181
  ...state,
2105
2182
  autosave: true
2106
- }),
2107
- down: (state) => {
2108
- const { autosave, ...rest } = state;
2109
- return rest;
2110
- }
2183
+ })
2111
2184
  }),
2112
2185
  createMigration({
2113
2186
  version: "6.0.0",
2114
- up: (state) => ({
2115
- ...state,
2116
- agents: []
2117
- }),
2118
- down: (state) => {
2119
- const { agents, ...rest } = state;
2120
- return rest;
2187
+ up: (state) => {
2188
+ const { cacheFolder, clearTemporaryFoldersOnPipelineEnd: __, ...rest } = state;
2189
+ return {
2190
+ ...rest,
2191
+ cacheFolder,
2192
+ agents: [],
2193
+ plugins: DEFAULT_PLUGINS
2194
+ };
2121
2195
  }
2122
2196
  }),
2123
2197
  createMigration({
2124
2198
  version: "7.0.0",
2125
- up: finalVersion,
2126
- down: () => {
2127
- throw new Error("Can't migrate down from 7.0.0");
2128
- }
2199
+ up: finalVersion
2129
2200
  })
2130
2201
  ]
2131
2202
  });
2203
+ const connectionsMigratorInternal = createMigrator();
2204
+ const defaultConnections$1 = connectionsMigratorInternal.createDefault({
2205
+ version: "1.0.0",
2206
+ connections: []
2207
+ });
2208
+ const connectionsMigrator$1 = connectionsMigratorInternal.createMigrations({
2209
+ defaultValue: defaultConnections$1,
2210
+ migrations: [createMigration({
2211
+ version: "1.0.0",
2212
+ up: finalVersion
2213
+ })]
2214
+ });
2132
2215
  const fileRepoMigratorInternal = createMigrator();
2133
2216
  const defaultFileRepo$1 = fileRepoMigratorInternal.createDefault({
2134
- version: "2.0.0",
2217
+ version: "3.0.0",
2135
2218
  projects: [{
2136
2219
  id: "main",
2137
2220
  name: "Default project",
2138
2221
  description: "The initial default project"
2139
2222
  }],
2140
- pipelines: [],
2141
- proxies: []
2223
+ pipelines: []
2142
2224
  });
2143
2225
  const fileRepoMigrations$1 = fileRepoMigratorInternal.createMigrations({
2144
2226
  defaultValue: defaultFileRepo$1,
2145
- migrations: [createMigration({
2146
- version: "1.0.0",
2147
- up: (state) => {
2148
- return {
2149
- version: "2.0.0",
2150
- projects: [{
2151
- id: "main",
2152
- name: "Default project",
2153
- description: "The initial default project"
2154
- }],
2155
- pipelines: Object.entries(state.data || {}).map(([id, file]) => {
2227
+ migrations: [
2228
+ createMigration({
2229
+ version: "1.0.0",
2230
+ up: (state) => {
2231
+ const pipelines = Object.entries(state.data || {}).map(([id, file]) => {
2156
2232
  return {
2157
2233
  ...file,
2158
2234
  id,
2159
2235
  project: "main"
2160
2236
  };
2161
- }),
2162
- proxies: []
2163
- };
2164
- },
2165
- down: initialVersion
2166
- }), createMigration({
2167
- version: "2.0.0",
2168
- up: finalVersion,
2169
- down: (state) => {
2170
- throw new Error("Cannot downgrade to version 1.0.0");
2171
- }
2172
- })]
2237
+ });
2238
+ return {
2239
+ ...state,
2240
+ projects: [{
2241
+ id: "main",
2242
+ name: "Default project",
2243
+ description: "The initial default project"
2244
+ }],
2245
+ pipelines
2246
+ };
2247
+ }
2248
+ }),
2249
+ createMigration({
2250
+ version: "2.0.0",
2251
+ up: (state) => {
2252
+ return { ...state };
2253
+ }
2254
+ }),
2255
+ createMigration({
2256
+ version: "3.0.0",
2257
+ up: finalVersion
2258
+ })
2259
+ ]
2173
2260
  });
2174
2261
  const savedFileMigratorInternal = createMigrator();
2175
2262
  const savedFileDefaultValue = savedFileMigratorInternal.createDefault({
@@ -2180,8 +2267,7 @@ const savedFileDefaultValue = savedFileMigratorInternal.createDefault({
2180
2267
  description: "",
2181
2268
  name: "",
2182
2269
  variables: [],
2183
- type: "default",
2184
- version: "4.0.0"
2270
+ version: "5.0.0"
2185
2271
  });
2186
2272
  const savedFileMigrator$1 = savedFileMigratorInternal.createMigrations({
2187
2273
  defaultValue: savedFileDefaultValue,
@@ -2195,21 +2281,19 @@ const savedFileMigrator$1 = savedFileMigratorInternal.createMigrations({
2195
2281
  for (const block of blocks) if (block.type === "event") triggers.push(block);
2196
2282
  else newBlocks.push(block);
2197
2283
  return {
2284
+ ...state,
2198
2285
  canvas: {
2286
+ ...state.canvas,
2199
2287
  blocks: newBlocks,
2200
2288
  triggers
2201
- },
2202
- description: state.description,
2203
- name: state.name,
2204
- variables: state.variables
2289
+ }
2205
2290
  };
2206
- },
2207
- down: initialVersion
2291
+ }
2208
2292
  }),
2209
2293
  createMigration({
2210
2294
  version: "2.0.0",
2211
2295
  up: (state) => {
2212
- const { canvas, ...rest } = state;
2296
+ const { canvas } = state;
2213
2297
  const { blocks, triggers } = canvas;
2214
2298
  const newBlocks = [];
2215
2299
  for (const block of blocks) {
@@ -2228,44 +2312,164 @@ const savedFileMigrator$1 = savedFileMigratorInternal.createMigrations({
2228
2312
  });
2229
2313
  }
2230
2314
  return {
2231
- ...rest,
2315
+ ...state,
2232
2316
  canvas: {
2317
+ ...canvas,
2233
2318
  triggers,
2234
2319
  blocks: newBlocks
2235
2320
  }
2236
2321
  };
2237
- },
2238
- down: () => {
2239
- throw new Error("Migration down not implemented");
2240
2322
  }
2241
2323
  }),
2242
2324
  createMigration({
2243
2325
  version: "3.0.0",
2244
- up: (state) => {
2245
- return {
2246
- ...state,
2247
- type: "default"
2248
- };
2249
- },
2250
- down: () => {
2251
- throw new Error("Migration down not implemented");
2252
- }
2326
+ up: (state) => ({
2327
+ ...state,
2328
+ type: "default"
2329
+ })
2253
2330
  }),
2254
2331
  createMigration({
2255
2332
  version: "4.0.0",
2256
- up: finalVersion,
2257
- down: () => {
2258
- throw new Error("Migration down not implemented");
2333
+ up: (_state) => {
2334
+ const state = _state;
2335
+ if (state.type === "simple") return {
2336
+ name: state.name,
2337
+ description: state.description,
2338
+ canvas: {
2339
+ blocks: [],
2340
+ triggers: []
2341
+ },
2342
+ variables: []
2343
+ };
2344
+ const migrateBlock = (block, pluginsMap) => {
2345
+ if (!block) return;
2346
+ if (block.origin?.pluginId) {
2347
+ block.origin.pluginId = getStrictPluginId(block.origin.pluginId);
2348
+ block.origin.version = pluginsMap[block.origin.pluginId] ?? "latest";
2349
+ }
2350
+ };
2351
+ const normalizedPlugins = {};
2352
+ if (state.plugins) for (const [key, val] of Object.entries(state.plugins)) normalizedPlugins[getStrictPluginId(key)] = val;
2353
+ if (state.canvas) {
2354
+ for (const block of state.canvas.blocks ?? []) migrateBlock(block, normalizedPlugins);
2355
+ for (const trigger of state.canvas.triggers ?? []) migrateBlock(trigger, normalizedPlugins);
2356
+ }
2357
+ const { plugins: _dropped, type: _type, ...rest } = state;
2358
+ return rest;
2259
2359
  }
2360
+ }),
2361
+ createMigration({
2362
+ version: "5.0.0",
2363
+ up: finalVersion
2260
2364
  })
2261
2365
  ]
2262
2366
  });
2367
+ const LEGACY_ID_MAP = {
2368
+ construct: "@pipelab/plugin-construct",
2369
+ filesystem: "@pipelab/plugin-filesystem",
2370
+ system: "@pipelab/plugin-system",
2371
+ steam: "@pipelab/plugin-steam",
2372
+ itch: "@pipelab/plugin-itch",
2373
+ electron: "@pipelab/plugin-electron",
2374
+ discord: "@pipelab/plugin-discord",
2375
+ dicord: "@pipelab/plugin-discord",
2376
+ "@pipelab/plugin-dicord": "@pipelab/plugin-discord",
2377
+ poki: "@pipelab/plugin-poki",
2378
+ nvpatch: "@pipelab/plugin-nvpatch",
2379
+ tauri: "@pipelab/plugin-tauri",
2380
+ minify: "@pipelab/plugin-minify",
2381
+ netlify: "@pipelab/plugin-netlify"
2382
+ };
2383
+ const getStrictPluginId = (pluginId) => {
2384
+ if (!pluginId) return pluginId;
2385
+ return LEGACY_ID_MAP[pluginId] || pluginId;
2386
+ };
2387
+ const normalizeBlockPluginId = (block) => {
2388
+ if (!block) return false;
2389
+ let changed = false;
2390
+ if (block.origin?.pluginId) {
2391
+ const strictId = getStrictPluginId(block.origin.pluginId);
2392
+ if (block.origin.pluginId !== strictId) {
2393
+ block.origin.pluginId = strictId;
2394
+ changed = true;
2395
+ }
2396
+ }
2397
+ return changed;
2398
+ };
2399
+ const normalizePipelineConfig$1 = (state) => {
2400
+ if (!state) return false;
2401
+ let changed = false;
2402
+ if (state.canvas) {
2403
+ if (Array.isArray(state.canvas.blocks)) {
2404
+ for (const block of state.canvas.blocks) if (normalizeBlockPluginId(block)) changed = true;
2405
+ }
2406
+ if (Array.isArray(state.canvas.triggers)) {
2407
+ for (const trigger of state.canvas.triggers) if (normalizeBlockPluginId(trigger)) changed = true;
2408
+ }
2409
+ }
2410
+ return changed;
2411
+ };
2263
2412
  const configRegistry$1 = {
2264
2413
  settings: appSettingsMigrator$1,
2265
2414
  projects: fileRepoMigrations$1,
2266
- pipeline: savedFileMigrator$1
2415
+ pipeline: savedFileMigrator$1,
2416
+ connections: connectionsMigrator$1
2267
2417
  };
2268
2418
  //#endregion
2419
+ //#region ../../packages/shared/src/save-location.ts
2420
+ const SaveLocationInternalValidator = object({
2421
+ id: string(),
2422
+ project: string(),
2423
+ lastModified: string(),
2424
+ type: literal("internal"),
2425
+ configName: string()
2426
+ });
2427
+ /** @deprecated External pipeline files are deprecated and will be removed in future versions. */
2428
+ const SaveLocationExternalValidator = object({
2429
+ id: string(),
2430
+ project: string(),
2431
+ path: string(),
2432
+ lastModified: string(),
2433
+ type: literal("external"),
2434
+ summary: object({
2435
+ plugins: array(string()),
2436
+ name: string(),
2437
+ description: string()
2438
+ })
2439
+ });
2440
+ const SaveLocationPipelabCloudValidator = object({
2441
+ id: string(),
2442
+ project: string(),
2443
+ type: literal("pipelab-cloud")
2444
+ });
2445
+ const SaveLocationValidator = union([
2446
+ SaveLocationExternalValidator,
2447
+ SaveLocationInternalValidator,
2448
+ SaveLocationPipelabCloudValidator
2449
+ ]);
2450
+ //#endregion
2451
+ //#region ../../packages/shared/src/config/projects-definition.ts
2452
+ const FileRepoValidatorV1 = object({
2453
+ version: literal("1.0.0"),
2454
+ data: optional(record(string(), SaveLocationValidator), {})
2455
+ });
2456
+ const FileRepoProjectValidatorV2 = object({
2457
+ id: string(),
2458
+ name: string(),
2459
+ description: string()
2460
+ });
2461
+ const FileRepoValidatorV2 = object({
2462
+ version: literal("2.0.0"),
2463
+ projects: array(FileRepoProjectValidatorV2),
2464
+ pipelines: optional(array(SaveLocationValidator), [])
2465
+ });
2466
+ const FileRepoValidatorV3 = object({
2467
+ version: literal("3.0.0"),
2468
+ projects: array(FileRepoProjectValidatorV2),
2469
+ pipelines: optional(array(SaveLocationValidator), [])
2470
+ });
2471
+ const FileRepoValidator = FileRepoValidatorV3;
2472
+ //#endregion
2269
2473
  //#region ../../packages/shared/src/apis.ts
2270
2474
  const ShellChannels = ["dialog:showOpenDialog", "dialog:showSaveDialog"];
2271
2475
  //#endregion
@@ -2377,12 +2581,26 @@ const AppSettingsValidatorV7 = object({
2377
2581
  name: string(),
2378
2582
  url: string()
2379
2583
  })),
2380
- buildHistory: object({ retentionPolicy: object({
2584
+ plugins: array(object({
2585
+ name: string(),
2381
2586
  enabled: boolean(),
2382
- maxEntries: number(),
2383
- maxAge: number()
2384
- }) })
2587
+ description: string()
2588
+ })),
2589
+ cacheFolder: optional(string()),
2590
+ tempFolder: optional(string())
2385
2591
  });
2592
+ const ConnectionValidator = looseObject({
2593
+ id: string(),
2594
+ pluginName: string(),
2595
+ name: string(),
2596
+ createdAt: string(),
2597
+ isDefault: boolean()
2598
+ });
2599
+ const ConnectionsValidatorV1 = object({
2600
+ version: literal("1.0.0"),
2601
+ connections: array(ConnectionValidator)
2602
+ });
2603
+ const ConnectionsValidator = ConnectionsValidatorV1;
2386
2604
  const AppSettingsValidator = AppSettingsValidatorV7;
2387
2605
  //#endregion
2388
2606
  //#region ../../node_modules/tslog/dist/esm/prettyLogStyles.js
@@ -4055,9 +4273,6 @@ const processGraph = async (options) => {
4055
4273
  options.steps[rawNode.uid].outputs = result.result.outputs;
4056
4274
  }
4057
4275
  options.onNodeExit(rawNode);
4058
- } else if (rawNode.type === "loop") {
4059
- options.onNodeEnter(rawNode);
4060
- options.onNodeExit(rawNode);
4061
4276
  } else if (rawNode.type === "comment") {} else if (rawNode.type === "event") {
4062
4277
  options.onNodeEnter(rawNode);
4063
4278
  options.onNodeExit(rawNode);
@@ -4072,7 +4287,7 @@ var en_US_default = {
4072
4287
  settings: {
4073
4288
  "darkTheme": "Dark theme",
4074
4289
  "autosave": "Autosave",
4075
- "autosaveDescription": "When enabled, your changes will be automatically saved as you edit your pipelines.",
4290
+ "autosaveDescription": "Automatically save changes to your pipelines in real-time.",
4076
4291
  "language": "Language",
4077
4292
  "languageOptions": {
4078
4293
  "en-US": "English",
@@ -4087,12 +4302,16 @@ var en_US_default = {
4087
4302
  "storage": "Storage",
4088
4303
  "integrations": "Integrations",
4089
4304
  "advanced": "Advanced",
4090
- "billing": "Billing"
4305
+ "billing": "Billing",
4306
+ "plugins": "Plugins",
4307
+ "core-plugins": "Core Plugins",
4308
+ "community-plugins": "Community Plugins",
4309
+ "versions": "Versions"
4091
4310
  },
4092
4311
  "pipeline-cache-folder": "Pipeline Cache Folder:",
4093
4312
  "enter-or-browse-for-a-folder": "Enter or browse for a folder",
4094
4313
  "browse": "Browse",
4095
- "manage-where-the-app-stores-temporary-and-cache-files": "Manage where the app stores temporary and cache files.",
4314
+ "manage-where-the-app-stores-temporary-and-cache-files": "Configure local directories for temporary files and application cache.",
4096
4315
  "clear-cache": "Clear cache",
4097
4316
  "reset-to-default": "Reset to default",
4098
4317
  "manage-subscription": "Manage Subscription",
@@ -4102,16 +4321,9 @@ var en_US_default = {
4102
4321
  "failed-to-clear-cache-error-message": "Failed to clear cache: {0}",
4103
4322
  "failed-to-reset-cache-folder-error-message": "Failed to reset cache folder: {0}",
4104
4323
  "select-cache-folder": "Select Cache Folder",
4105
- "restart-dashboard-tour": "Restart Dashboard Tour",
4106
- "restart-editor-tour": "Restart Editor Tour",
4107
- "tour-reset-success": "Tour has been reset. It will start the next time you visit the page.",
4108
- "retentionPolicy": "Retention Policy",
4109
- "retentionPolicyDescription": "Manage how long your build logs and history are kept.",
4110
- "retentionEnabled": "Enable Retention Policy",
4111
- "retentionMaxEntries": "Maximum Entries",
4112
- "retentionMaxEntriesDescription": "Keep up to this number of entries per pipeline.",
4113
- "retentionMaxAge": "Maximum Age (days)",
4114
- "retentionMaxAgeDescription": "Keep entries for up to this many days.",
4324
+ "restart-dashboard-tour": "Reset Dashboard Guide",
4325
+ "restart-editor-tour": "Reset Editor Guide",
4326
+ "tour-reset-success": "Help guides have been reset. They will reappear on your next visit.",
4115
4327
  "storage-pipelab": "Pipelab",
4116
4328
  "storage-other": "Other Apps",
4117
4329
  "storage-free": "Free Space",
@@ -4121,12 +4333,11 @@ var en_US_default = {
4121
4333
  },
4122
4334
  headers: {
4123
4335
  "dashboard": "Dashboard",
4124
- "scenarios": "Scenarios",
4336
+ "pipelines": "Pipelines",
4125
4337
  "editor": "Editor",
4126
- "billing": "Billing",
4338
+ "billing": "@:settings.tabs.billing",
4127
4339
  "team": "Team"
4128
4340
  },
4129
- navigation: { "build-history": "Build History" },
4130
4341
  base: {
4131
4342
  "close": "Close",
4132
4343
  "save": "Save",
@@ -4137,44 +4348,55 @@ var en_US_default = {
4137
4348
  "logs": "Logs",
4138
4349
  "ok": "OK",
4139
4350
  "add": "Add",
4140
- "search": "Search..."
4351
+ "search": "Search...",
4352
+ "success": "Success",
4353
+ "error": "Error"
4141
4354
  },
4142
4355
  editor: {
4143
4356
  "invalid-file-content": "Invalid file content",
4144
4357
  "welcome-back": "Welcome back!",
4145
- "please-log-in-to-run-a-scenario": "Please log in to run a scenario",
4146
- "execution-done": "Execution done",
4147
- "your-project-has-been-executed-successfully": "Your project has been executed successfully",
4148
- "execution-failed": "Execution failed",
4149
- "project-has-encountered-an-error": "Project has encountered an error:",
4150
- "project-saved": "Project saved",
4151
- "your-project-has-be-saved-successfully": "Your project has be saved successfully",
4358
+ "please-log-in-to-run-a-pipeline": "Please sign in to run this pipeline.",
4359
+ "execution-done": "Run completed successfully",
4360
+ "your-project-has-been-executed-successfully": "Your pipeline ran and completed successfully.",
4361
+ "execution-failed": "Run failed",
4362
+ "project-has-encountered-an-error": "The pipeline encountered an error:",
4363
+ "project-saved": "Pipeline saved",
4364
+ "your-project-has-be-saved-successfully": "Your pipeline has been saved successfully.",
4152
4365
  "view-history": "History",
4153
4366
  "add-plugin": "Add plugin",
4154
- "display-advanced-nodes": "Display advanced nodes"
4367
+ "display-advanced-nodes": "Display advanced nodes",
4368
+ "project-settings": "Pipeline Settings",
4369
+ "jit-loading-title": "Preparing Plugins",
4370
+ "jit-loading-subtitle": "Please wait while Pipelab downloads and configures the required plugins for this pipeline.",
4371
+ "jit-loading-status": "Downloading and setting up plugin packages...",
4372
+ "validation-failed": "Validation Failed",
4373
+ "validation-plugin-disabled-or-missing": "The block \"{nodeName}\" requires the \"{pluginId}\" plugin, which is not currently installed or enabled.",
4374
+ "validation-missing-param": "Please configure the required field \"{paramName}\" in the \"{nodeName}\" block."
4155
4375
  },
4156
4376
  home: {
4157
4377
  "invalid-preset": "Invalid preset",
4158
- "store-project-on-the-cloud": "Store project on the cloud",
4378
+ "store-project-on-the-cloud": "Save project to Cloud",
4159
4379
  "cloud": "Cloud",
4160
- "store-project-locally": "Store project locally",
4380
+ "store-project-locally": "Save project locally",
4161
4381
  "local": "Local",
4162
4382
  "invalid-number-of-paths-selected": "Invalid number of paths selected",
4163
4383
  "pipelab-project": "Pipelab Project",
4164
4384
  "choose-a-new-path": "Choose a new path",
4165
4385
  "invalid-file-type": "Invalid file type",
4166
- "create-project": "Create project",
4167
- "duplicate-project": "Duplicate project",
4386
+ "create-project": "Create Project",
4387
+ "create-pipeline": "Create Pipeline",
4388
+ "duplicate-project": "Duplicate Project",
4389
+ "duplicate-pipeline": "Duplicate Pipeline",
4168
4390
  "project-name": "Project Name",
4169
4391
  "new-project": "New Project",
4170
- "new-pipeline": "New pipeline",
4392
+ "new-pipeline": "New Pipeline",
4171
4393
  "open": "Open",
4172
4394
  "import": "Import",
4173
4395
  "pipeline-name": "Pipeline Name",
4174
4396
  "your-projects": "Your projects",
4175
4397
  "no-projects-yet": "No projects yet",
4176
4398
  "no-pipelines-yet": "No pipelines yet",
4177
- "delete-project": "Delete project",
4399
+ "delete-project": "Delete Project",
4178
4400
  "confirm-delete-project": "Are you sure you want to delete this project? This action cannot be undone.",
4179
4401
  "cannot-delete-project": "Cannot delete project",
4180
4402
  "project-not-empty": "This project contains pipelines. Please delete them first.",
@@ -4187,39 +4409,49 @@ var en_US_default = {
4187
4409
  "rename-project": "Rename Project",
4188
4410
  "new-project-name": "New Project Name",
4189
4411
  "premium-feature": "This is a premium feature",
4190
- "migrate-warning": "This file type will soon be not supported anymore. Please migrate it using the option from the menu",
4191
- "simple-pipeline": "Simple pipeline",
4412
+ "migrate-warning": "This file format will soon be deprecated. Please migrate it to the new local workspace storage.",
4413
+ "simple-pipeline": "Basic pipeline",
4192
4414
  "advanced-pipeline": "Advanced pipeline",
4193
4415
  "new-simple-project": "New simple project",
4194
4416
  "new-advanced-project": "New advanced project",
4195
- "store-project-internally": "Store project internally",
4417
+ "store-project-internally": "Save project locally",
4196
4418
  "internal": "Internal",
4197
- "confirm-migration-message": "Are you sure you want to migrate this pipeline to internal storage? This will create a copy in the internal storage managed by Pipelab.",
4419
+ "confirm-migration-message": "Are you sure you want to move this pipeline to local workspace storage? Pipelab will manage this pipeline internally.",
4198
4420
  "migrate-pipeline": "Migrate Pipeline",
4199
4421
  "migration-success": "Pipeline migrated successfully",
4200
- "migrate-to-internal": "Migrate to Internal"
4422
+ "migrate-to-internal": "Move to Workspace",
4423
+ "only-internal-supported-notice": "Pipelab now manages all pipelines within the application workspace. External files are deprecated, but can be imported into your workspace.",
4424
+ "import-pipeline": "Import Pipeline",
4425
+ "import-from-stable": "Import from Stable...",
4426
+ "import-from-beta": "Import from Beta...",
4427
+ "import-pipeline-file": "Import pipeline file (.pipelab)...",
4428
+ "import-success": "Pipeline imported successfully",
4429
+ "failed-to-read-file": "Failed to read the selected file",
4430
+ "export-pipeline": "Export Pipeline...",
4431
+ "export-success": "Pipeline exported successfully",
4432
+ "export-failed": "Failed to export pipeline"
4201
4433
  },
4202
- scenarios: { "scenarios": "Scenarios" },
4434
+ pipelines: { "title": "@:headers.pipelines" },
4203
4435
  tour: {
4204
4436
  "start-tour": "Start Tour",
4205
4437
  "projects-list-title": "Project Navigator",
4206
- "projects-list-description": "This sidebar shows all your projects. Selecting a project will display its associated pipelines in the main area.",
4438
+ "projects-list-description": "This sidebar lists your projects. Selecting a project will show its pipelines in the main area.",
4207
4439
  "add-project-title": "Create New Project",
4208
- "add-project-description": "Projects help you organize your pipelines by topic or client. Click here to start a fresh project.",
4209
- "new-pipeline-title": "Build a Pipeline",
4210
- "new-pipeline-description": "Ready to automate? Create a new pipeline to start adding logic and blocks.",
4440
+ "add-project-description": "Projects organize your pipelines by topic or client. Click here to start a new project.",
4441
+ "new-pipeline-title": "Create a Pipeline",
4442
+ "new-pipeline-description": "Ready to automate? Create a new pipeline to start adding actions and logic.",
4211
4443
  "project-actions-title": "Project Management",
4212
4444
  "project-actions-description": "Use these buttons to rename or delete the currently selected project.",
4213
4445
  "editor-canvas-title": "The Visual Canvas",
4214
- "editor-canvas-description": "This is your workspace. Drag and drop blocks here to define your automation flow from top to bottom.",
4446
+ "editor-canvas-description": "This is your canvas. Drag and drop action blocks here to build your automation flow.",
4215
4447
  "editor-save-title": "Save Progress",
4216
- "editor-save-description": "Keep your changes safe. We recommend saving frequently, especially after complex logic changes.",
4217
- "editor-run-title": "Test your Automation",
4218
- "editor-run-description": "Click Run to start the execution. Pipelab will process each block and provide real-time feedback.",
4219
- "editor-logs-title": "Execution Logs",
4220
- "editor-logs-description": "The logs window shows exactly what's happening during execution. Great for debugging and monitoring progress.",
4221
- "editor-close-title": "Exit Editor",
4222
- "editor-close-description": "Done for now? Return to the dashboard to manage other projects or pipelines."
4448
+ "editor-save-description": "Keep your changes safe. We recommend saving your pipeline frequently.",
4449
+ "editor-run-title": "Test Pipeline",
4450
+ "editor-run-description": "Click Run to test your pipeline. Pipelab will execute each block in real-time.",
4451
+ "editor-logs-title": "Run Logs",
4452
+ "editor-logs-description": "The log panel shows real-time execution steps, helping you monitor and debug.",
4453
+ "editor-close-title": "Close Editor",
4454
+ "editor-close-description": "Done for now? Return to the dashboard to manage other projects and pipelines."
4223
4455
  }
4224
4456
  };
4225
4457
  //#endregion
@@ -4227,43 +4459,56 @@ var en_US_default = {
4227
4459
  var fr_FR_default = {
4228
4460
  settings: {
4229
4461
  "darkTheme": "Thème sombre",
4462
+ "autosave": "Enregistrement automatique",
4463
+ "autosaveDescription": "Enregistrez automatiquement les modifications de vos pipelines en temps réel.",
4230
4464
  "language": "Langue",
4231
4465
  "languageOptions": {
4232
4466
  "en-US": "English",
4233
4467
  "fr-FR": "Français",
4234
- "pt-BR": "Portuguese",
4235
- "zh-CN": "Chinese",
4236
- "es-ES": "Spanish",
4237
- "de-DE": "German"
4468
+ "pt-BR": "Português",
4469
+ "zh-CN": "Chinois",
4470
+ "es-ES": "Espagnol",
4471
+ "de-DE": "Allemand"
4238
4472
  },
4239
4473
  "tabs": {
4240
4474
  "general": "Général",
4241
4475
  "storage": "Stockage",
4242
4476
  "integrations": "Intégrations",
4243
4477
  "advanced": "Avancé",
4244
- "billing": "Facturation"
4478
+ "billing": "Facturation",
4479
+ "plugins": "Extensions",
4480
+ "core-plugins": "Extensions de base",
4481
+ "community-plugins": "Extensions de la communauté",
4482
+ "versions": "Versions"
4245
4483
  },
4246
- "clearTempFolders": "Nettoyer automatiquement les fichiers temporaires",
4247
- "clearTempFoldersDescription": "Lorsque cette option est activée, tous les fichiers temporaires créés lors de l'exécution du pipeline seront automatiquement supprimés une fois le pipeline terminé. Cela permet d'économiser de l'espace disque, mais vous devrez peut-être copier vous-même des artefacts pour les préserver.",
4248
- "pipeline-cache-folder": "Pipeline Cache Folder:",
4249
- "enter-or-browse-for-a-folder": "Enter or browse for a folder",
4250
- "browse": "Browse",
4251
- "manage-where-the-app-stores-temporary-and-cache-files": "Manage where the app stores temporary and cache files.",
4252
- "clear-cache": "Clear cache",
4253
- "reset-to-default": "Reset to default",
4254
- "manage-subscription": "Manage Subscription",
4255
- "renewal-date": "Renewal Date",
4256
- "start-date": "Start Date:",
4257
- "cache-cleared-successfully": "Cache cleared successfully",
4258
- "failed-to-clear-cache-error-message": "Failed to clear cache: {0}",
4259
- "failed-to-reset-cache-folder-error-message": "Failed to reset cache folder: {0}",
4260
- "select-cache-folder": "Select Cache Folder"
4484
+ "pipeline-cache-folder": "Dossier cache des pipelines :",
4485
+ "enter-or-browse-for-a-folder": "Saisir ou parcourir pour choisir un dossier",
4486
+ "browse": "Parcourir",
4487
+ "manage-where-the-app-stores-temporary-and-cache-files": "Configurez les dossiers locaux pour les fichiers temporaires et le cache de l'application.",
4488
+ "clear-cache": "Vider le cache",
4489
+ "reset-to-default": "Réinitialiser par défaut",
4490
+ "manage-subscription": "Gérer l'abonnement",
4491
+ "renewal-date": "Date de renouvellement",
4492
+ "start-date": "Date de début :",
4493
+ "cache-cleared-successfully": "Cache vidé avec succès",
4494
+ "failed-to-clear-cache-error-message": "Échec du vidage du cache : {0}",
4495
+ "failed-to-reset-cache-folder-error-message": "Échec de la réinitialisation du dossier cache : {0}",
4496
+ "select-cache-folder": "Sélectionner le dossier cache",
4497
+ "restart-dashboard-tour": "Réinitialiser le guide du tableau de bord",
4498
+ "restart-editor-tour": "Réinitialiser le guide de l'éditeur",
4499
+ "tour-reset-success": "Les guides d'aide ont été réinitialisés. Ils réapparaîtront lors de votre prochaine visite.",
4500
+ "storage-pipelab": "Pipelab",
4501
+ "storage-other": "Autres applications",
4502
+ "storage-free": "Espace libre",
4503
+ "disk-usage": "Utilisation du disque",
4504
+ "free": "Libre",
4505
+ "other": "Autre"
4261
4506
  },
4262
4507
  headers: {
4263
4508
  "dashboard": "Tableau de bord",
4264
- "scenarios": "Scénarios",
4509
+ "pipelines": "Pipelines",
4265
4510
  "editor": "Éditeur",
4266
- "billing": "Facturation",
4511
+ "billing": "@:settings.tabs.billing",
4267
4512
  "team": "Équipe"
4268
4513
  },
4269
4514
  base: {
@@ -4273,49 +4518,122 @@ var fr_FR_default = {
4273
4518
  "cancel": "Annuler",
4274
4519
  "end": "Fin",
4275
4520
  "delete": "Supprimer",
4276
- "logs": "Logs",
4521
+ "logs": "Journaux",
4277
4522
  "ok": "OK",
4278
4523
  "add": "Ajouter",
4279
- "search": "Rechercher..."
4524
+ "search": "Rechercher...",
4525
+ "success": "Succès",
4526
+ "error": "Erreur"
4280
4527
  },
4281
4528
  editor: {
4282
4529
  "invalid-file-content": "Contenu du fichier invalide",
4283
- "welcome-back": "Bon retour parmi nous !",
4284
- "please-log-in-to-run-a-scenario": "Veuillez vous connecter pour exécuter un scénario",
4285
- "execution-done": "Exécution terminée",
4286
- "your-project-has-been-executed-successfully": "Votre projet a été exécuté avec succès",
4530
+ "welcome-back": "Bon retour !",
4531
+ "please-log-in-to-run-a-pipeline": "Veuillez vous connecter pour exécuter ce pipeline.",
4532
+ "execution-done": "Exécution terminée avec succès",
4533
+ "your-project-has-been-executed-successfully": "Votre pipeline s'est exécuté et s'est terminé avec succès.",
4287
4534
  "execution-failed": "Échec de l'exécution",
4288
- "project-has-encountered-an-error": "Le projet a rencontré une erreur :",
4289
- "project-saved": "Projet enregistré",
4290
- "your-project-has-be-saved-successfully": "Votre projet a été enregistré avec succès",
4291
- "add-plugin": "Ajouter un plugin",
4292
- "display-advanced-nodes": "Afficher les nœuds avancés"
4535
+ "project-has-encountered-an-error": "Le pipeline a rencontré une erreur :",
4536
+ "project-saved": "Pipeline enregistré",
4537
+ "your-project-has-be-saved-successfully": "Votre pipeline a été enregistré avec succès.",
4538
+ "view-history": "Historique",
4539
+ "add-plugin": "Ajouter une extension",
4540
+ "display-advanced-nodes": "Afficher les nœuds avancés",
4541
+ "project-settings": "Paramètres du pipeline",
4542
+ "jit-loading-title": "Préparation des extensions",
4543
+ "jit-loading-subtitle": "Veuillez patienter pendant que Pipelab télécharge et configure les extensions requises pour ce pipeline.",
4544
+ "jit-loading-status": "Téléchargement et configuration des paquets d'extension...",
4545
+ "validation-failed": "Échec de la validation",
4546
+ "validation-plugin-disabled-or-missing": "Le bloc \"{nodeName}\" requiert l'extension \"{pluginId}\", qui n'est pas installée ou activée actuellement.",
4547
+ "validation-missing-param": "Veuillez configurer le champ requis \"{paramName}\" dans le bloc \"{nodeName}\"."
4293
4548
  },
4294
4549
  home: {
4295
- "invalid-preset": "Préréglage non valide",
4296
- "store-project-on-the-cloud": "Enregistrer le projet en ligne",
4297
- "cloud": "En ligne",
4550
+ "invalid-preset": "Modèle invalide",
4551
+ "store-project-on-the-cloud": "Enregistrer le projet dans le Cloud",
4552
+ "cloud": "Cloud",
4298
4553
  "store-project-locally": "Enregistrer le projet localement",
4299
4554
  "local": "Local",
4300
- "invalid-number-of-paths-selected": "Nombre non valide de chemins sélectionnés",
4555
+ "invalid-number-of-paths-selected": "Nombre de chemins sélectionné invalide",
4301
4556
  "pipelab-project": "Projet Pipelab",
4302
- "choose-a-new-path": "Choisissez un nouveau chemin",
4557
+ "choose-a-new-path": "Choisir un nouveau chemin",
4303
4558
  "invalid-file-type": "Type de fichier invalide",
4304
- "create-project": "Créer un projet",
4305
- "duplicate-project": "Dupliquer le projet",
4559
+ "create-project": "Créer le Projet",
4560
+ "create-pipeline": "Créer le Pipeline",
4561
+ "duplicate-project": "Dupliquer le Projet",
4562
+ "duplicate-pipeline": "Dupliquer le Pipeline",
4306
4563
  "project-name": "Nom du projet",
4307
- "new-project": "Nouveau projet",
4564
+ "new-project": "Nouveau Projet",
4565
+ "new-pipeline": "Nouveau Pipeline",
4308
4566
  "open": "Ouvrir",
4567
+ "import": "Importer",
4568
+ "pipeline-name": "Nom du pipeline",
4309
4569
  "your-projects": "Vos projets",
4310
- "no-projects-yet": "Aucun projet jusqu'à présent"
4570
+ "no-projects-yet": "Aucun projet pour le moment",
4571
+ "no-pipelines-yet": "Aucun pipeline pour le moment",
4572
+ "delete-project": "Supprimer le Projet",
4573
+ "confirm-delete-project": "Êtes-vous sûr de vouloir supprimer ce projet ? Cette action est irréversible.",
4574
+ "cannot-delete-project": "Impossible de supprimer le projet",
4575
+ "project-not-empty": "Ce projet contient des pipelines. Veuillez d'abord les supprimer.",
4576
+ "transfer": "Transférer",
4577
+ "transfer-successful": "Transfert réussi",
4578
+ "pipeline-transferred": "Pipeline transféré avec succès",
4579
+ "select-project": "Sélectionner le Projet",
4580
+ "build-history": "Historique des exécutions",
4581
+ "duplicate": "Dupliquer",
4582
+ "rename-project": "Renommer le Projet",
4583
+ "new-project-name": "Nouveau nom du projet",
4584
+ "premium-feature": "Ceci est une fonctionnalité premium",
4585
+ "migrate-warning": "Ce format de fichier sera bientôt obsolète. Veuillez le migrer vers le nouveau stockage local.",
4586
+ "simple-pipeline": "Pipeline basique",
4587
+ "advanced-pipeline": "Pipeline avancé",
4588
+ "new-simple-project": "Nouveau projet simple",
4589
+ "new-advanced-project": "Nouveau projet avancé",
4590
+ "store-project-internally": "Enregistrer le projet localement",
4591
+ "internal": "Interne",
4592
+ "confirm-migration-message": "Êtes-vous sûr de vouloir déplacer ce pipeline vers le stockage local de l'application ? Pipelab gérera ce pipeline en interne.",
4593
+ "migrate-pipeline": "Migrer le Pipeline",
4594
+ "migration-success": "Pipeline migré avec succès",
4595
+ "migrate-to-internal": "Déplacer vers l'espace de travail",
4596
+ "only-internal-supported-notice": "Pipelab gère désormais tous les pipelines au sein de l'espace de travail de l'application. Les fichiers externes sont obsolètes, mais peuvent toujours être importés.",
4597
+ "import-pipeline": "Importer le Pipeline",
4598
+ "import-from-stable": "Importer depuis Stable...",
4599
+ "import-from-beta": "Importer depuis Beta...",
4600
+ "import-pipeline-file": "Importer un fichier de pipeline (.pipelab)...",
4601
+ "import-success": "Pipeline importé avec succès",
4602
+ "failed-to-read-file": "Échec de la lecture du fichier sélectionné",
4603
+ "export-pipeline": "Exporter le pipeline...",
4604
+ "export-success": "Pipeline exporté avec succès",
4605
+ "export-failed": "Échec de l'exportation du pipeline"
4311
4606
  },
4312
- scenarios: { "scenarios": "Scénarios" }
4607
+ pipelines: { "title": "@:headers.pipelines" },
4608
+ tour: {
4609
+ "start-tour": "Démarrer le guide",
4610
+ "projects-list-title": "Navigateur de projets",
4611
+ "projects-list-description": "Cette barre latérale liste vos projets. En sélectionnant un projet, ses pipelines s'afficheront dans la zone principale.",
4612
+ "add-project-title": "Créer un nouveau projet",
4613
+ "add-project-description": "Les projets organisent vos pipelines par sujet ou client. Cliquez ici pour commencer un nouveau projet.",
4614
+ "new-pipeline-title": "Créer un pipeline",
4615
+ "new-pipeline-description": "Prêt à automatiser ? Créez un nouveau pipeline pour commencer à ajouter des actions et de la logique.",
4616
+ "project-actions-title": "Gestion du projet",
4617
+ "project-actions-description": "Utilisez ces boutons pour renommer ou supprimer le projet actuellement sélectionné.",
4618
+ "editor-canvas-title": "Le canevas visuel",
4619
+ "editor-canvas-description": "Ceci est votre canevas. Glissez-déposez des blocs d'action ici pour construire votre flux d'automatisation.",
4620
+ "editor-save-title": "Enregistrer la progression",
4621
+ "editor-save-description": "Protégez vos modifications. Nous vous recommandons d'enregistrer fréquemment votre pipeline.",
4622
+ "editor-run-title": "Tester le pipeline",
4623
+ "editor-run-description": "Cliquez sur Exécuter pour tester votre pipeline. Pipelab exécutera chaque bloc en temps réel.",
4624
+ "editor-logs-title": "Journaux d'exécution",
4625
+ "editor-logs-description": "Le panneau des journaux affiche les étapes d'exécution en temps réel, vous aidant à surveiller et déboguer.",
4626
+ "editor-close-title": "Fermer l'éditeur",
4627
+ "editor-close-description": "Terminé pour le moment ? Retournez au tableau de bord pour gérer d'autres projets et pipelines."
4628
+ }
4313
4629
  };
4314
4630
  //#endregion
4315
4631
  //#region ../../packages/shared/src/i18n/pt_BR.json
4316
4632
  var pt_BR_default = {
4317
4633
  settings: {
4318
4634
  "darkTheme": "Tema escuro",
4635
+ "autosave": "Salvar automaticamente",
4636
+ "autosaveDescription": "Salvar alterações em suas pipelines automaticamente em tempo real.",
4319
4637
  "language": "Idioma",
4320
4638
  "languageOptions": {
4321
4639
  "en-US": "English",
@@ -4327,33 +4645,44 @@ var pt_BR_default = {
4327
4645
  },
4328
4646
  "tabs": {
4329
4647
  "general": "Geral",
4330
- "storage": "Armazenagem",
4648
+ "storage": "Armazenamento",
4331
4649
  "integrations": "Integrações",
4332
4650
  "advanced": "Avançado",
4333
- "billing": "Pagamento"
4651
+ "billing": "Faturamento",
4652
+ "plugins": "Extensões",
4653
+ "core-plugins": "Extensões nativas",
4654
+ "community-plugins": "Extensões da comunidade",
4655
+ "versions": "Versões"
4334
4656
  },
4335
- "clearTempFolders": "Automatically clean up temporary files",
4336
- "clearTempFoldersDescription": "When enabled, all temporary files created during pipeline execution will be automatically deleted after the pipeline completes. This helps save disk space but you may need to copy artifacts yourself to preserve them.",
4337
- "pipeline-cache-folder": "Pipeline Cache Folder:",
4338
- "enter-or-browse-for-a-folder": "Enter or browse for a folder",
4339
- "browse": "Browse",
4340
- "manage-where-the-app-stores-temporary-and-cache-files": "Manage where the app stores temporary and cache files.",
4341
- "clear-cache": "Clear cache",
4342
- "reset-to-default": "Reset to default",
4343
- "manage-subscription": "Manage Subscription",
4344
- "renewal-date": "Renewal Date",
4345
- "start-date": "Start Date:",
4346
- "cache-cleared-successfully": "Cache cleared successfully",
4347
- "failed-to-clear-cache-error-message": "Failed to clear cache: {0}",
4348
- "failed-to-reset-cache-folder-error-message": "Failed to reset cache folder: {0}",
4349
- "select-cache-folder": "Select Cache Folder"
4657
+ "pipeline-cache-folder": "Pasta de cache de pipelines:",
4658
+ "enter-or-browse-for-a-folder": "Digite ou procure uma pasta",
4659
+ "browse": "Procurar",
4660
+ "manage-where-the-app-stores-temporary-and-cache-files": "Configurar pastas locais para arquivos temporários e cache do aplicativo.",
4661
+ "clear-cache": "Limpar cache",
4662
+ "reset-to-default": "Redefinir para o padrão",
4663
+ "manage-subscription": "Gerenciar assinatura",
4664
+ "renewal-date": "Data de renovação",
4665
+ "start-date": "Data de início:",
4666
+ "cache-cleared-successfully": "Cache limpo com sucesso",
4667
+ "failed-to-clear-cache-error-message": "Falha ao limpar cache: {0}",
4668
+ "failed-to-reset-cache-folder-error-message": "Falha ao redefinir pasta de cache: {0}",
4669
+ "select-cache-folder": "Selecionar pasta de cache",
4670
+ "restart-dashboard-tour": "Redefinir guia de início",
4671
+ "restart-editor-tour": "Redefinir guia do editor",
4672
+ "tour-reset-success": "Os guias de ajuda foram redefinidos. Eles reaparecerão em sua próxima visita.",
4673
+ "storage-pipelab": "Pipelab",
4674
+ "storage-other": "Outros aplicativos",
4675
+ "storage-free": "Espaço livre",
4676
+ "disk-usage": "Uso do disco",
4677
+ "free": "Livre",
4678
+ "other": "Outro"
4350
4679
  },
4351
4680
  headers: {
4352
- "dashboard": "Dashboard",
4353
- "scenarios": "Scenarios",
4681
+ "dashboard": "Início",
4682
+ "pipelines": "Pipelines",
4354
4683
  "editor": "Editor",
4355
- "billing": "Billing",
4356
- "team": "Team"
4684
+ "billing": "@:settings.tabs.billing",
4685
+ "team": "Equipe"
4357
4686
  },
4358
4687
  base: {
4359
4688
  "close": "Fechar",
@@ -4362,47 +4691,123 @@ var pt_BR_default = {
4362
4691
  "cancel": "Cancelar",
4363
4692
  "end": "Fim",
4364
4693
  "delete": "Excluir",
4365
- "logs": "Logs",
4694
+ "logs": "Registros",
4366
4695
  "ok": "OK",
4367
- "add": "Adicionar"
4696
+ "add": "Adicionar",
4697
+ "search": "Buscar...",
4698
+ "success": "Sucesso",
4699
+ "error": "Erro"
4368
4700
  },
4369
4701
  editor: {
4370
- "invalid-file-content": "Invalid file content",
4371
- "welcome-back": "Welcome back!",
4372
- "please-log-in-to-run-a-scenario": "Please log in to run a scenario",
4373
- "execution-done": "Execution done",
4374
- "your-project-has-been-executed-successfully": "Your project has been executed successfully",
4375
- "execution-failed": "Execution failed",
4376
- "project-has-encountered-an-error": "Project has encountered an error:",
4377
- "project-saved": "Project saved",
4378
- "your-project-has-be-saved-successfully": "Your project has be saved successfully"
4702
+ "invalid-file-content": "Conteúdo do arquivo inválido",
4703
+ "welcome-back": "Bem-vindo de volta!",
4704
+ "please-log-in-to-run-a-pipeline": "Por favor, faça login para executar esta pipeline.",
4705
+ "execution-done": "Execução concluída com sucesso",
4706
+ "your-project-has-been-executed-successfully": "Sua pipeline foi executada e concluída com sucesso.",
4707
+ "execution-failed": "Falha na execução",
4708
+ "project-has-encountered-an-error": "A pipeline encontrou um erro:",
4709
+ "project-saved": "Pipeline salva",
4710
+ "your-project-has-be-saved-successfully": "Sua pipeline foi salva com sucesso.",
4711
+ "view-history": "Histórico",
4712
+ "add-plugin": "Adicionar extensão",
4713
+ "display-advanced-nodes": "Exibir blocos avançados",
4714
+ "project-settings": "Ajustes da pipeline",
4715
+ "jit-loading-title": "Preparando extensões",
4716
+ "jit-loading-subtitle": "Aguarde enquanto o Pipelab baixa e configura as extensões necessárias para esta pipeline.",
4717
+ "jit-loading-status": "Baixando e configurando pacotes de extensões...",
4718
+ "validation-failed": "Falha na validação",
4719
+ "validation-plugin-disabled-or-missing": "O bloco \"{nodeName}\" requer a extensão \"{pluginId}\", que não está instalada ou ativada.",
4720
+ "validation-missing-param": "Por favor, configure o campo obrigatório \"{paramName}\" no bloco \"{nodeName}\"."
4379
4721
  },
4380
4722
  home: {
4381
- "invalid-preset": "Invalid preset",
4382
- "store-project-on-the-cloud": "Store project on the cloud",
4383
- "cloud": "Cloud",
4384
- "store-project-locally": "Store project locally",
4723
+ "invalid-preset": "Modelo inválido",
4724
+ "store-project-on-the-cloud": "Salvar projeto na nuvem",
4725
+ "cloud": "Nuvem",
4726
+ "store-project-locally": "Salvar projeto localmente",
4385
4727
  "local": "Local",
4386
- "invalid-number-of-paths-selected": "Invalid number of paths selected",
4387
- "pipelab-project": "Pipelab Project",
4388
- "choose-a-new-path": "Choose a new path",
4389
- "invalid-file-type": "Invalid file type",
4390
- "create-project": "Create project",
4391
- "duplicate-project": "Duplicate project",
4392
- "project-name": "Project Name",
4393
- "new-project": "New Project",
4394
- "open": "Open",
4395
- "your-projects": "Your projects",
4396
- "no-projects-yet": "No projects yet"
4728
+ "invalid-number-of-paths-selected": "Número de caminhos selecionado inválido",
4729
+ "pipelab-project": "Projeto Pipelab",
4730
+ "choose-a-new-path": "Escolha um novo caminho",
4731
+ "invalid-file-type": "Tipo de arquivo inválido",
4732
+ "create-project": "Criar Projeto",
4733
+ "create-pipeline": "Criar Pipeline",
4734
+ "duplicate-project": "Duplicar Projeto",
4735
+ "duplicate-pipeline": "Duplicar Pipeline",
4736
+ "project-name": "Nome do projeto",
4737
+ "new-project": "Novo Projeto",
4738
+ "new-pipeline": "Nova Pipeline",
4739
+ "open": "Abrir",
4740
+ "import": "Importar",
4741
+ "pipeline-name": "Nome da pipeline",
4742
+ "your-projects": "Seus projetos",
4743
+ "no-projects-yet": "Nenhum projeto ainda",
4744
+ "no-pipelines-yet": "Nenhuma pipeline ainda",
4745
+ "delete-project": "Excluir Projeto",
4746
+ "confirm-delete-project": "Tem certeza de que deseja excluir este projeto? Esta ação não pode ser desfeita.",
4747
+ "cannot-delete-project": "Não é possível excluir o projeto",
4748
+ "project-not-empty": "Este projeto contém pipelines. Por favor, exclua-os primeiro.",
4749
+ "transfer": "Transferir",
4750
+ "transfer-successful": "Transferência bem-sucedida",
4751
+ "pipeline-transferred": "Pipeline transferida com sucesso",
4752
+ "select-project": "Selecionar Projeto",
4753
+ "build-history": "Histórico de execuções",
4754
+ "duplicate": "Duplicar",
4755
+ "rename-project": "Renomear Projeto",
4756
+ "new-project-name": "Novo nome do projeto",
4757
+ "premium-feature": "Este é um recurso premium",
4758
+ "migrate-warning": "Este formato de arquivo em prazo curto será descontinuado. Por favor, migre-o para o novo armazenamento local do aplicativo.",
4759
+ "simple-pipeline": "Pipeline básica",
4760
+ "advanced-pipeline": "Pipeline avançada",
4761
+ "new-simple-project": "Novo projeto simples",
4762
+ "new-advanced-project": "Novo projeto avançado",
4763
+ "store-project-internally": "Salvar projeto localmente",
4764
+ "internal": "Interno",
4765
+ "confirm-migration-message": "Tem certeza de que deseja mover esta pipeline para o armazenamento local do aplicativo? O Pipelab gerenciará esta pipeline internamente.",
4766
+ "migrate-pipeline": "Migrar Pipeline",
4767
+ "migration-success": "Pipeline migrada com sucesso",
4768
+ "migrate-to-internal": "Mover para o espaço de trabalho",
4769
+ "only-internal-supported-notice": "O Pipelab agora gerencia todas as pipelines dentro do espaço de trabalho do aplicativo. Arquivos externos foram descontinuados, mas podem ser importados.",
4770
+ "import-pipeline": "Importar Pipeline",
4771
+ "import-from-stable": "Importar do Stable...",
4772
+ "import-from-beta": "Importar do Beta...",
4773
+ "import-pipeline-file": "Importar arquivo de pipeline (.pipelab)...",
4774
+ "import-success": "Pipeline importada com sucesso",
4775
+ "failed-to-read-file": "Falha ao ler o arquivo selecionado",
4776
+ "export-pipeline": "Exportar pipeline...",
4777
+ "export-success": "Pipeline exportado com sucesso",
4778
+ "export-failed": "Falha ao exportar pipeline"
4397
4779
  },
4398
- scenarios: { "scenarios": "Scenarios" }
4780
+ pipelines: { "title": "@:headers.pipelines" },
4781
+ tour: {
4782
+ "start-tour": "Iniciar guia",
4783
+ "projects-list-title": "Navegador de projetos",
4784
+ "projects-list-description": "Esta barra lateral mostra seus projetos. Ao selecionar um, suas pipelines serão exibidas na área principal.",
4785
+ "add-project-title": "Criar novo projeto",
4786
+ "add-project-description": "Os projetos organizam suas pipelines por tópico ou cliente. Clique aqui para criar um novo projeto.",
4787
+ "new-pipeline-title": "Criar uma pipeline",
4788
+ "new-pipeline-description": "Pronto para automatizar? Crie uma nova pipeline para começar a adicionar ações e lógica.",
4789
+ "project-actions-title": "Gerenciamento de projetos",
4790
+ "project-actions-description": "Use estes botões para renomear ou excluir o projeto selecionado.",
4791
+ "editor-canvas-title": "O painel visual",
4792
+ "editor-canvas-description": "Este é o seu painel. Arraste e solte blocos de ação aqui para construir seu fluxo.",
4793
+ "editor-save-title": "Salvar progresso",
4794
+ "editor-save-description": "Mantenha suas alterações seguras. Recomendamos salvar sua pipeline frequentemente.",
4795
+ "editor-run-title": "Testar pipeline",
4796
+ "editor-run-description": "Clique em Executar para testar sua pipeline. O Pipelab executará cada bloco em tempo real.",
4797
+ "editor-logs-title": "Registros de execução",
4798
+ "editor-logs-description": "O painel de registros exibe as etapas de execução em tempo real, ajudando você a monitorar e depurar.",
4799
+ "editor-close-title": "Fechar editor",
4800
+ "editor-close-description": "Terminou por agora? Volte para o painel principal para gerenciar outros projetos e pipelines."
4801
+ }
4399
4802
  };
4400
4803
  //#endregion
4401
4804
  //#region ../../packages/shared/src/i18n/zh_CN.json
4402
4805
  var zh_CN_default = {
4403
4806
  settings: {
4404
- "darkTheme": "Dark theme",
4405
- "language": "Language",
4807
+ "darkTheme": "深色主题",
4808
+ "autosave": "自动保存",
4809
+ "autosaveDescription": "自动保存流水线修改,省心省力。",
4810
+ "language": "语言",
4406
4811
  "languageOptions": {
4407
4812
  "en-US": "English",
4408
4813
  "fr-FR": "French",
@@ -4412,34 +4817,45 @@ var zh_CN_default = {
4412
4817
  "de-DE": "German"
4413
4818
  },
4414
4819
  "tabs": {
4415
- "general": "General",
4416
- "storage": "Storage",
4417
- "integrations": "Integrations",
4418
- "advanced": "Advanced",
4419
- "billing": "Billing"
4820
+ "general": "常规",
4821
+ "storage": "存储",
4822
+ "integrations": "集成",
4823
+ "advanced": "高级",
4824
+ "billing": "计费",
4825
+ "plugins": "插件",
4826
+ "core-plugins": "核心插件",
4827
+ "community-plugins": "社区插件",
4828
+ "versions": "版本"
4420
4829
  },
4421
- "clearTempFolders": "Automatically clean up temporary files",
4422
- "clearTempFoldersDescription": "When enabled, all temporary files created during pipeline execution will be automatically deleted after the pipeline completes. This helps save disk space but you may need to copy artifacts yourself to preserve them.",
4423
- "pipeline-cache-folder": "Pipeline Cache Folder:",
4424
- "enter-or-browse-for-a-folder": "Enter or browse for a folder",
4425
- "browse": "Browse",
4426
- "manage-where-the-app-stores-temporary-and-cache-files": "Manage where the app stores temporary and cache files.",
4427
- "clear-cache": "Clear cache",
4428
- "reset-to-default": "Reset to default",
4429
- "manage-subscription": "Manage Subscription",
4430
- "renewal-date": "Renewal Date",
4431
- "start-date": "Start Date:",
4432
- "cache-cleared-successfully": "Cache cleared successfully",
4433
- "failed-to-clear-cache-error-message": "Failed to clear cache: {0}",
4434
- "failed-to-reset-cache-folder-error-message": "Failed to reset cache folder: {0}",
4435
- "select-cache-folder": "Select Cache Folder"
4830
+ "pipeline-cache-folder": "流水线缓存文件夹:",
4831
+ "enter-or-browse-for-a-folder": "输入或浏览选择文件夹",
4832
+ "browse": "浏览",
4833
+ "manage-where-the-app-stores-temporary-and-cache-files": "配置用于存储临时文件和应用程序缓存的本地目录。",
4834
+ "clear-cache": "清除缓存",
4835
+ "reset-to-default": "恢复默认",
4836
+ "manage-subscription": "管理订阅",
4837
+ "renewal-date": "续订日期",
4838
+ "start-date": "开始日期:",
4839
+ "cache-cleared-successfully": "缓存清除成功",
4840
+ "failed-to-clear-cache-error-message": "清除缓存失败: {0}",
4841
+ "failed-to-reset-cache-folder-error-message": "重置缓存文件夹失败: {0}",
4842
+ "select-cache-folder": "选择缓存文件夹",
4843
+ "restart-dashboard-tour": "重置仪表盘指南",
4844
+ "restart-editor-tour": "重置编辑器指南",
4845
+ "tour-reset-success": "帮助指南已重置。将在您下次访问时重新显示。",
4846
+ "storage-pipelab": "Pipelab",
4847
+ "storage-other": "其他应用",
4848
+ "storage-free": "空闲空间",
4849
+ "disk-usage": "磁盘使用情况",
4850
+ "free": "空闲",
4851
+ "other": "其他"
4436
4852
  },
4437
4853
  headers: {
4438
- "dashboard": "Dashboard",
4439
- "scenarios": "Scenarios",
4440
- "editor": "Editor",
4441
- "billing": "Billing",
4442
- "team": "Team"
4854
+ "dashboard": "仪表盘",
4855
+ "pipelines": "流水线",
4856
+ "editor": "编辑器",
4857
+ "billing": "@:settings.tabs.billing",
4858
+ "team": "团队"
4443
4859
  },
4444
4860
  base: {
4445
4861
  "close": "关闭",
@@ -4450,45 +4866,121 @@ var zh_CN_default = {
4450
4866
  "delete": "删除",
4451
4867
  "logs": "日志",
4452
4868
  "ok": "确定",
4453
- "add": "添加"
4869
+ "add": "添加",
4870
+ "search": "搜索...",
4871
+ "success": "成功",
4872
+ "error": "错误"
4454
4873
  },
4455
4874
  editor: {
4456
- "invalid-file-content": "Invalid file content",
4457
- "welcome-back": "Welcome back!",
4458
- "please-log-in-to-run-a-scenario": "Please log in to run a scenario",
4459
- "execution-done": "Execution done",
4460
- "your-project-has-been-executed-successfully": "Your project has been executed successfully",
4461
- "execution-failed": "Execution failed",
4462
- "project-has-encountered-an-error": "Project has encountered an error:",
4463
- "project-saved": "Project saved",
4464
- "your-project-has-be-saved-successfully": "Your project has be saved successfully"
4875
+ "invalid-file-content": "无效的文件内容",
4876
+ "welcome-back": "欢迎回来!",
4877
+ "please-log-in-to-run-a-pipeline": "请登录后运行此流水线。",
4878
+ "execution-done": "运行成功完成",
4879
+ "your-project-has-been-executed-successfully": "您的流水线已成功运行完成。",
4880
+ "execution-failed": "运行失败",
4881
+ "project-has-encountered-an-error": "流水线遇到错误:",
4882
+ "project-saved": "流水线已保存",
4883
+ "your-project-has-be-saved-successfully": "您的流水线已成功保存。",
4884
+ "view-history": "历史记录",
4885
+ "add-plugin": "添加插件",
4886
+ "display-advanced-nodes": "显示高级节点",
4887
+ "project-settings": "流水线设置",
4888
+ "jit-loading-title": "正在准备插件",
4889
+ "jit-loading-subtitle": "请稍候,Pipelab 正在下载并配置此流水线所需的插件。",
4890
+ "jit-loading-status": "正在下载并安装插件包...",
4891
+ "validation-failed": "验证失败",
4892
+ "validation-plugin-disabled-or-missing": "节点 \"{nodeName}\" 需要插件 \"{pluginId}\",该插件目前未安装或未启用。",
4893
+ "validation-missing-param": "请配置节点 \"{nodeName}\" 中的必填字段 \"{paramName}\"。"
4465
4894
  },
4466
4895
  home: {
4467
- "invalid-preset": "Invalid preset",
4468
- "store-project-on-the-cloud": "Store project on the cloud",
4469
- "cloud": "Cloud",
4470
- "store-project-locally": "Store project locally",
4471
- "local": "Local",
4472
- "invalid-number-of-paths-selected": "Invalid number of paths selected",
4473
- "pipelab-project": "Pipelab Project",
4474
- "choose-a-new-path": "Choose a new path",
4475
- "invalid-file-type": "Invalid file type",
4476
- "create-project": "Create project",
4477
- "duplicate-project": "Duplicate project",
4478
- "project-name": "Project Name",
4479
- "new-project": "New Project",
4480
- "open": "Open",
4481
- "your-projects": "Your projects",
4482
- "no-projects-yet": "No projects yet"
4896
+ "invalid-preset": "无效的预设",
4897
+ "store-project-on-the-cloud": "保存项目到云端",
4898
+ "cloud": "云端",
4899
+ "store-project-locally": "本地保存项目",
4900
+ "local": "本地",
4901
+ "invalid-number-of-paths-selected": "选择的路径数量无效",
4902
+ "pipelab-project": "Pipelab 项目",
4903
+ "choose-a-new-path": "选择新路径",
4904
+ "invalid-file-type": "无效的文件类型",
4905
+ "create-project": "创建项目",
4906
+ "create-pipeline": "创建流水线",
4907
+ "duplicate-project": "复制项目",
4908
+ "duplicate-pipeline": "复制流水线",
4909
+ "project-name": "项目名称",
4910
+ "new-project": "新建项目",
4911
+ "new-pipeline": "新建流水线",
4912
+ "open": "打开",
4913
+ "import": "导入",
4914
+ "pipeline-name": "流水线名称",
4915
+ "your-projects": "您的项目",
4916
+ "no-projects-yet": "暂无项目",
4917
+ "no-pipelines-yet": "暂无流水线",
4918
+ "delete-project": "删除项目",
4919
+ "confirm-delete-project": "您确定要删除此项目吗?此操作无法撤销。",
4920
+ "cannot-delete-project": "无法删除项目",
4921
+ "project-not-empty": "此项目包含流水线。请先删除它们。",
4922
+ "transfer": "转移",
4923
+ "transfer-successful": "转移成功",
4924
+ "pipeline-transferred": "流水线已成功转移",
4925
+ "select-project": "选择项目",
4926
+ "build-history": "运行历史",
4927
+ "duplicate": "复制",
4928
+ "rename-project": "重命名项目",
4929
+ "new-project-name": "新项目名称",
4930
+ "premium-feature": "这是高级会员功能",
4931
+ "migrate-warning": "此文件格式即将被弃用。请将其迁移到新的本地工作区存储。",
4932
+ "simple-pipeline": "基础流水线",
4933
+ "advanced-pipeline": "高级流水线",
4934
+ "new-simple-project": "新建简单项目",
4935
+ "new-advanced-project": "新建高级项目",
4936
+ "store-project-internally": "本地保存项目",
4937
+ "internal": "内部",
4938
+ "confirm-migration-message": "您确定要将此流水线移动到本地工作区存储吗?Pipelab 将在内部管理此流水线。",
4939
+ "migrate-pipeline": "迁移流水线",
4940
+ "migration-success": "流水线已成功迁移",
4941
+ "migrate-to-internal": "移动到工作区",
4942
+ "only-internal-supported-notice": "Pipelab 现在管理应用工作区内的所有流水线。外部文件已被弃用,但仍可以导入。",
4943
+ "import-pipeline": "导入流水线",
4944
+ "import-from-stable": "从 Stable 导入...",
4945
+ "import-from-beta": "从 Beta 导入...",
4946
+ "import-pipeline-file": "导入管道文件 (.pipelab)...",
4947
+ "import-success": "流水线已成功导入",
4948
+ "failed-to-read-file": "读取所选文件失败",
4949
+ "export-pipeline": "导出流水线...",
4950
+ "export-success": "流水线导出成功",
4951
+ "export-failed": "导出流水线失败"
4483
4952
  },
4484
- scenarios: { "scenarios": "Scenarios" }
4953
+ pipelines: { "title": "@:headers.pipelines" },
4954
+ tour: {
4955
+ "start-tour": "开始向导",
4956
+ "projects-list-title": "项目导航器",
4957
+ "projects-list-description": "此侧边栏列出您的项目。选择一个项目将在主区域显示其包含的流水线。",
4958
+ "add-project-title": "创建新项目",
4959
+ "add-project-description": "项目可以按主题或客户组织您的流水线。点击这里开始一个新项目。",
4960
+ "new-pipeline-title": "创建流水线",
4961
+ "new-pipeline-description": "准备好自动化了吗?创建一个新流水线开始添加操作和逻辑。",
4962
+ "project-actions-title": "项目管理",
4963
+ "project-actions-description": "使用这些按钮重命名或删除当前选择的项目。",
4964
+ "editor-canvas-title": "可视化画布",
4965
+ "editor-canvas-description": "这是您的画布。拖放操作块到这里以构建您的自动化流程。",
4966
+ "editor-save-title": "保存进度",
4967
+ "editor-save-description": "确保您的更改已安全保存。我们建议您经常保存流水线。",
4968
+ "editor-run-title": "测试流水线",
4969
+ "editor-run-description": "点击“运行”测试流水线。Pipelab 将实时执行每个步骤。",
4970
+ "editor-logs-title": "运行日志",
4971
+ "editor-logs-description": "日志面板实时显示执行步骤,帮助您监控和调试。",
4972
+ "editor-close-title": "关闭编辑器",
4973
+ "editor-close-description": "今天的工作完成了吗?返回仪表盘以管理其他项目和流水线。"
4974
+ }
4485
4975
  };
4486
4976
  //#endregion
4487
4977
  //#region ../../packages/shared/src/i18n/es_ES.json
4488
4978
  var es_ES_default = {
4489
4979
  settings: {
4490
- "darkTheme": "Dark theme",
4491
- "language": "Language",
4980
+ "darkTheme": "Tema oscuro",
4981
+ "autosave": "Guardado automático",
4982
+ "autosaveDescription": "Guarda automáticamente los cambios en tus pipelines en tiempo real.",
4983
+ "language": "Idioma",
4492
4984
  "languageOptions": {
4493
4985
  "en-US": "English",
4494
4986
  "fr-FR": "French",
@@ -4499,33 +4991,44 @@ var es_ES_default = {
4499
4991
  },
4500
4992
  "tabs": {
4501
4993
  "general": "General",
4502
- "storage": "Storage",
4503
- "integrations": "Integrations",
4504
- "advanced": "Advanced",
4505
- "billing": "Billing"
4994
+ "storage": "Almacenamiento",
4995
+ "integrations": "Integraciones",
4996
+ "advanced": "Avanzado",
4997
+ "billing": "Facturación",
4998
+ "plugins": "Complementos",
4999
+ "core-plugins": "Complementos principales",
5000
+ "community-plugins": "Complementos de la comunidad",
5001
+ "versions": "Versiones"
4506
5002
  },
4507
- "clearTempFolders": "Automatically clean up temporary files",
4508
- "clearTempFoldersDescription": "Cuando está habilitado, todos los archivos temporales creados durante la ejecución del pipeline se eliminarán automáticamente después de que el pipeline se complete. Esto ayuda a ahorrar espacio en el disco, pero puede que necesite copiar los artefactos usted mismo para preservarlos.",
4509
- "pipeline-cache-folder": "Pipeline Cache Folder:",
4510
- "enter-or-browse-for-a-folder": "Enter or browse for a folder",
4511
- "browse": "Browse",
4512
- "manage-where-the-app-stores-temporary-and-cache-files": "Manage where the app stores temporary and cache files.",
4513
- "clear-cache": "Clear cache",
4514
- "reset-to-default": "Reset to default",
4515
- "manage-subscription": "Manage Subscription",
4516
- "renewal-date": "Renewal Date",
4517
- "start-date": "Start Date:",
4518
- "cache-cleared-successfully": "Cache cleared successfully",
4519
- "failed-to-clear-cache-error-message": "Failed to clear cache: {0}",
4520
- "failed-to-reset-cache-folder-error-message": "Failed to reset cache folder: {0}",
4521
- "select-cache-folder": "Select Cache Folder"
5003
+ "pipeline-cache-folder": "Carpeta de caché de pipelines:",
5004
+ "enter-or-browse-for-a-folder": "Escribe o busca una carpeta",
5005
+ "browse": "Buscar",
5006
+ "manage-where-the-app-stores-temporary-and-cache-files": "Configura carpetas locales para archivos temporales y caché de la aplicación.",
5007
+ "clear-cache": "Limpiar caché",
5008
+ "reset-to-default": "Restablecer por defecto",
5009
+ "manage-subscription": "Gestionar suscripción",
5010
+ "renewal-date": "Fecha de renovación",
5011
+ "start-date": "Fecha de inicio:",
5012
+ "cache-cleared-successfully": "Caché limpia con éxito",
5013
+ "failed-to-clear-cache-error-message": "Error al limpiar la caché: {0}",
5014
+ "failed-to-reset-cache-folder-error-message": "Error al restablecer la carpeta de caché: {0}",
5015
+ "select-cache-folder": "Seleccionar carpeta de caché",
5016
+ "restart-dashboard-tour": "Restablecer guía de inicio",
5017
+ "restart-editor-tour": "Restablecer guía del editor",
5018
+ "tour-reset-success": "Las guías de ayuda se han restablecido. Volverán a aparecer en tu próxima visita.",
5019
+ "storage-pipelab": "Pipelab",
5020
+ "storage-other": "Otras aplicaciones",
5021
+ "storage-free": "Espacio libre",
5022
+ "disk-usage": "Uso del disco",
5023
+ "free": "Libre",
5024
+ "other": "Otro"
4522
5025
  },
4523
5026
  headers: {
4524
- "dashboard": "Dashboard",
4525
- "scenarios": "Scenarios",
5027
+ "dashboard": "Inicio",
5028
+ "pipelines": "Pipelines",
4526
5029
  "editor": "Editor",
4527
- "billing": "Billing",
4528
- "team": "Team"
5030
+ "billing": "@:settings.tabs.billing",
5031
+ "team": "Equipo"
4529
5032
  },
4530
5033
  base: {
4531
5034
  "close": "Cerrar",
@@ -4536,45 +5039,121 @@ var es_ES_default = {
4536
5039
  "delete": "Eliminar",
4537
5040
  "logs": "Registros",
4538
5041
  "ok": "Aceptar",
4539
- "add": "Añadir"
5042
+ "add": "Añadir",
5043
+ "search": "Buscar...",
5044
+ "success": "Éxito",
5045
+ "error": "Error"
4540
5046
  },
4541
5047
  editor: {
4542
- "invalid-file-content": "Invalid file content",
4543
- "welcome-back": "Welcome back!",
4544
- "please-log-in-to-run-a-scenario": "Please log in to run a scenario",
4545
- "execution-done": "Execution done",
4546
- "your-project-has-been-executed-successfully": "Your project has been executed successfully",
4547
- "execution-failed": "Execution failed",
4548
- "project-has-encountered-an-error": "Project has encountered an error:",
4549
- "project-saved": "Project saved",
4550
- "your-project-has-be-saved-successfully": "Your project has be saved successfully"
5048
+ "invalid-file-content": "Contenido de archivo no válido",
5049
+ "welcome-back": "¡Bienvenido de nuevo!",
5050
+ "please-log-in-to-run-a-pipeline": "Inicia sesión para ejecutar este pipeline.",
5051
+ "execution-done": "Ejecución completada con éxito",
5052
+ "your-project-has-been-executed-successfully": "Tu pipeline se ha ejecutado correctamente.",
5053
+ "execution-failed": "Ejecución fallida",
5054
+ "project-has-encountered-an-error": "El pipeline ha encontrado un error:",
5055
+ "project-saved": "Pipeline guardado",
5056
+ "your-project-has-be-saved-successfully": "Tu pipeline se ha guardado correctamente.",
5057
+ "view-history": "Historial",
5058
+ "add-plugin": "Añadir complemento",
5059
+ "display-advanced-nodes": "Mostrar bloques avanzados",
5060
+ "project-settings": "Ajustes del pipeline",
5061
+ "jit-loading-title": "Preparando complementos",
5062
+ "jit-loading-subtitle": "Espera mientras Pipelab descarga y configura los complementos necesarios para este pipeline.",
5063
+ "jit-loading-status": "Descargando y configurando paquetes de complementos...",
5064
+ "validation-failed": "Validación fallida",
5065
+ "validation-plugin-disabled-or-missing": "El bloque \"{nodeName}\" requiere el complemento \"{pluginId}\", que no está instalado o activo.",
5066
+ "validation-missing-param": "Configura el campo obligatorio \"{paramName}\" en el bloque \"{nodeName}\"."
4551
5067
  },
4552
5068
  home: {
4553
- "invalid-preset": "Invalid preset",
4554
- "store-project-on-the-cloud": "Store project on the cloud",
4555
- "cloud": "Cloud",
4556
- "store-project-locally": "Store project locally",
5069
+ "invalid-preset": "Plantilla no válida",
5070
+ "store-project-on-the-cloud": "Guardar proyecto en la nube",
5071
+ "cloud": "Nube",
5072
+ "store-project-locally": "Guardar proyecto localmente",
4557
5073
  "local": "Local",
4558
- "invalid-number-of-paths-selected": "Invalid number of paths selected",
4559
- "pipelab-project": "Pipelab Project",
4560
- "choose-a-new-path": "Choose a new path",
4561
- "invalid-file-type": "Invalid file type",
4562
- "create-project": "Create project",
4563
- "duplicate-project": "Duplicate project",
4564
- "project-name": "Project Name",
4565
- "new-project": "New Project",
4566
- "open": "Open",
4567
- "your-projects": "Your projects",
4568
- "no-projects-yet": "No projects yet"
5074
+ "invalid-number-of-paths-selected": "Número de rutas seleccionado no válido",
5075
+ "pipelab-project": "Proyecto Pipelab",
5076
+ "choose-a-new-path": "Elige una nueva ruta",
5077
+ "invalid-file-type": "Tipo de archivo no válido",
5078
+ "create-project": "Crear Proyecto",
5079
+ "create-pipeline": "Crear Pipeline",
5080
+ "duplicate-project": "Duplicar Proyecto",
5081
+ "duplicate-pipeline": "Duplicar Pipeline",
5082
+ "project-name": "Nombre del proyecto",
5083
+ "new-project": "Nuevo Proyecto",
5084
+ "new-pipeline": "Nuevo Pipeline",
5085
+ "open": "Abrir",
5086
+ "import": "Importar",
5087
+ "pipeline-name": "Nombre del pipeline",
5088
+ "your-projects": "Tus proyectos",
5089
+ "no-projects-yet": "Aún no hay proyectos",
5090
+ "no-pipelines-yet": "Aún no hay pipelines",
5091
+ "delete-project": "Eliminar Proyecto",
5092
+ "confirm-delete-project": "¿Estás seguro de que quieres eliminar este proyecto? Esta acción no se puede deshacer.",
5093
+ "cannot-delete-project": "No se puede eliminar el proyecto",
5094
+ "project-not-empty": "Este proyecto contiene pipelines. Elíminalos primero.",
5095
+ "transfer": "Transferir",
5096
+ "transfer-successful": "Transferencia completada",
5097
+ "pipeline-transferred": "Pipeline transferido con éxito",
5098
+ "select-project": "Seleccionar Proyecto",
5099
+ "build-history": "Historial de ejecuciones",
5100
+ "duplicate": "Duplicar",
5101
+ "rename-project": "Renombrar Proyecto",
5102
+ "new-project-name": "Nuevo nombre del proyecto",
5103
+ "premium-feature": "Esta es una función premium",
5104
+ "migrate-warning": "Este formato de archivo pronto quedará obsoleto. Mígralo al nuevo almacenamiento local de la aplicación.",
5105
+ "simple-pipeline": "Pipeline básico",
5106
+ "advanced-pipeline": "Pipeline avanzado",
5107
+ "new-simple-project": "Nuevo proyecto simple",
5108
+ "new-advanced-project": "Nuevo proyecto avanzado",
5109
+ "store-project-internally": "Guardar proyecto localmente",
5110
+ "internal": "Interno",
5111
+ "confirm-migration-message": "¿Estás seguro de que quieres mover este pipeline al almacenamiento local de la aplicación? Pipelab gérera este pipeline internamente.",
5112
+ "migrate-pipeline": "Migrar Pipeline",
5113
+ "migration-success": "Pipeline migrado con éxito",
5114
+ "migrate-to-internal": "Mover al espacio de trabajo",
5115
+ "only-internal-supported-notice": "Pipelab ahora gestiona todos los pipelines dentro del espacio de trabajo. Los archivos externos están obsoletos, pero pueden importarse.",
5116
+ "import-pipeline": "Importar Pipeline",
5117
+ "import-from-stable": "Importar desde Stable...",
5118
+ "import-from-beta": "Importar desde Beta...",
5119
+ "import-pipeline-file": "Importar archivo de pipeline (.pipelab)...",
5120
+ "import-success": "Pipeline importado con éxito",
5121
+ "failed-to-read-file": "Error al leer el archivo seleccionado",
5122
+ "export-pipeline": "Exportar pipeline...",
5123
+ "export-success": "Pipeline exportado correctamente",
5124
+ "export-failed": "Error al exportar el pipeline"
4569
5125
  },
4570
- scenarios: { "scenarios": "Scenarios" }
5126
+ pipelines: { "title": "@:headers.pipelines" },
5127
+ tour: {
5128
+ "start-tour": "Iniciar guía",
5129
+ "projects-list-title": "Navegador de proyectos",
5130
+ "projects-list-description": "Esta barra lateral muestra tus proyectos. Al seleccionar uno se mostrarán sus pipelines en el área principal.",
5131
+ "add-project-title": "Crear nuevo proyecto",
5132
+ "add-project-description": "Los proyectos organizan tus pipelines por tema o cliente. Haz clic aquí para crear uno.",
5133
+ "new-pipeline-title": "Crear un pipeline",
5134
+ "new-pipeline-description": "¿Listo para automatizar? Crea un nuevo pipeline para empezar a añadir acciones y lógica.",
5135
+ "project-actions-title": "Gestión de proyectos",
5136
+ "project-actions-description": "Usa estos botones para renombrar o eliminar el proyecto seleccionado.",
5137
+ "editor-canvas-title": "El lienzo visual",
5138
+ "editor-canvas-description": "Este es tu lienzo. Arrastra y suelta bloques de acción aquí para construir tu flujo.",
5139
+ "editor-save-title": "Guardar progreso",
5140
+ "editor-save-description": "Mantén tus cambios seguros. Te recomendamos guardar tu pipeline con frecuencia.",
5141
+ "editor-run-title": "Probar pipeline",
5142
+ "editor-run-description": "Haz clic en Ejecutar para probar tu pipeline. Pipelab ejecutará cada bloque en tiempo real.",
5143
+ "editor-logs-title": "Registros de ejecución",
5144
+ "editor-logs-description": "El panel de registros muestra los pasos en tiempo real, ayudándote a supervisar y depurar.",
5145
+ "editor-close-title": "Cerrar editor",
5146
+ "editor-close-description": "¿Has terminado? Vuelve al panel de inicio para gestionar otros proyectos y pipelines."
5147
+ }
4571
5148
  };
4572
5149
  //#endregion
4573
5150
  //#region ../../packages/shared/src/i18n/de_DE.json
4574
5151
  var de_DE_default = {
4575
5152
  settings: {
4576
- "darkTheme": "Dark theme",
4577
- "language": "Language",
5153
+ "darkTheme": "Dunkles Design",
5154
+ "autosave": "Automatisch speichern",
5155
+ "autosaveDescription": "Änderungen an Ihren Pipelines automatisch in Echtzeit speichern.",
5156
+ "language": "Sprache",
4578
5157
  "languageOptions": {
4579
5158
  "en-US": "English",
4580
5159
  "fr-FR": "French",
@@ -4584,33 +5163,44 @@ var de_DE_default = {
4584
5163
  "de-DE": "German"
4585
5164
  },
4586
5165
  "tabs": {
4587
- "general": "General",
4588
- "storage": "Storage",
4589
- "integrations": "Integrations",
4590
- "advanced": "Advanced",
4591
- "billing": "Billing"
5166
+ "general": "Allgemein",
5167
+ "storage": "Speicher",
5168
+ "integrations": "Integrationen",
5169
+ "advanced": "Erweitert",
5170
+ "billing": "Abrechnung",
5171
+ "plugins": "Erweiterungen",
5172
+ "core-plugins": "Kern-Erweiterungen",
5173
+ "community-plugins": "Community-Erweiterungen",
5174
+ "versions": "Versionen"
4592
5175
  },
4593
- "clearTempFolders": "Automatically clean up temporary files",
4594
- "clearTempFoldersDescription": "Wenn aktiviert, werden alle temporären Dateien, die während der Pipeline-Ausführung erstellt wurden, automatisch gelöscht, nachdem die Pipeline abgeschlossen ist. Dies hilft, Speicherplatz auf der Festplatte zu sparen, aber möglicherweise müssen Sie selbst Artefakte kopieren, um sie zu bewahren.",
4595
- "pipeline-cache-folder": "Pipeline Cache Folder:",
4596
- "enter-or-browse-for-a-folder": "Enter or browse for a folder",
4597
- "browse": "Browse",
4598
- "manage-where-the-app-stores-temporary-and-cache-files": "Manage where the app stores temporary and cache files.",
4599
- "clear-cache": "Clear cache",
4600
- "reset-to-default": "Reset to default",
4601
- "manage-subscription": "Manage Subscription",
4602
- "renewal-date": "Renewal Date",
4603
- "start-date": "Start Date:",
4604
- "cache-cleared-successfully": "Cache cleared successfully",
4605
- "failed-to-clear-cache-error-message": "Failed to clear cache: {0}",
4606
- "failed-to-reset-cache-folder-error-message": "Failed to reset cache folder: {0}",
4607
- "select-cache-folder": "Select Cache Folder"
5176
+ "pipeline-cache-folder": "Pipeline-Cache-Ordner:",
5177
+ "enter-or-browse-for-a-folder": "Ordner eingeben oder auswählen",
5178
+ "browse": "Durchsuchen",
5179
+ "manage-where-the-app-stores-temporary-and-cache-files": "Konfigurieren Sie lokale Ordner für temporäre Dateien und Anwendungs-Cache.",
5180
+ "clear-cache": "Cache leeren",
5181
+ "reset-to-default": "Auf Standard zurücksetzen",
5182
+ "manage-subscription": "Abonnement verwalten",
5183
+ "renewal-date": "Verlängerungsdatum",
5184
+ "start-date": "Startdatum:",
5185
+ "cache-cleared-successfully": "Cache erfolgreich geleert",
5186
+ "failed-to-clear-cache-error-message": "Cache konnte nicht geleert werden: {0}",
5187
+ "failed-to-reset-cache-folder-error-message": "Cache-Ordner konnte nicht zurückgesetzt werden: {0}",
5188
+ "select-cache-folder": "Cache-Ordner auswählen",
5189
+ "restart-dashboard-tour": "Dashboard-Anleitung zurücksetzen",
5190
+ "restart-editor-tour": "Editor-Anleitung zurücksetzen",
5191
+ "tour-reset-success": "Anleitungen wurden zurückgesetzt. Sie werden bei Ihrem nächsten Besuch wieder angezeigt.",
5192
+ "storage-pipelab": "Pipelab",
5193
+ "storage-other": "Andere Apps",
5194
+ "storage-free": "Freier Speicher",
5195
+ "disk-usage": "Festplattennutzung",
5196
+ "free": "Frei",
5197
+ "other": "Sonstige"
4608
5198
  },
4609
5199
  headers: {
4610
5200
  "dashboard": "Dashboard",
4611
- "scenarios": "Scenarios",
5201
+ "pipelines": "Pipelines",
4612
5202
  "editor": "Editor",
4613
- "billing": "Billing",
5203
+ "billing": "@:settings.tabs.billing",
4614
5204
  "team": "Team"
4615
5205
  },
4616
5206
  base: {
@@ -4622,44 +5212,119 @@ var de_DE_default = {
4622
5212
  "delete": "Löschen",
4623
5213
  "logs": "Protokolle",
4624
5214
  "ok": "OK",
4625
- "add": "Hinzufügen"
5215
+ "add": "Hinzufügen",
5216
+ "search": "Suchen...",
5217
+ "success": "Erfolg",
5218
+ "error": "Fehler"
4626
5219
  },
4627
5220
  editor: {
4628
- "invalid-file-content": "Invalid file content",
4629
- "welcome-back": "Welcome back!",
4630
- "please-log-in-to-run-a-scenario": "Please log in to run a scenario",
4631
- "execution-done": "Execution done",
4632
- "your-project-has-been-executed-successfully": "Your project has been executed successfully",
4633
- "execution-failed": "Execution failed",
4634
- "project-has-encountered-an-error": "Project has encountered an error:",
4635
- "project-saved": "Project saved",
4636
- "your-project-has-be-saved-successfully": "Your project has be saved successfully"
5221
+ "invalid-file-content": "Ungültiger Dateiinhalt",
5222
+ "welcome-back": "Willkommen zurück!",
5223
+ "please-log-in-to-run-a-pipeline": "Bitte melden Sie sich an, um diese Pipeline auszuführen.",
5224
+ "execution-done": "Ausführung erfolgreich abgeschlossen",
5225
+ "your-project-has-been-executed-successfully": "Ihre Pipeline wurde erfolgreich ausgeführt.",
5226
+ "execution-failed": "Ausführung fehlgeschlagen",
5227
+ "project-has-encountered-an-error": "Die Pipeline hat einen Fehler festgestellt:",
5228
+ "project-saved": "Pipeline gespeichert",
5229
+ "your-project-has-be-saved-successfully": "Ihre Pipeline wurde erfolgreich gespeichert.",
5230
+ "view-history": "Verlauf",
5231
+ "add-plugin": "Erweiterung hinzufügen",
5232
+ "display-advanced-nodes": "Erweiterte Blöcke anzeigen",
5233
+ "project-settings": "Pipeline-Einstellungen",
5234
+ "jit-loading-title": "Erweiterungen werden vorbereitet",
5235
+ "jit-loading-subtitle": "Bitte warten Sie, während Pipelab die für diese Pipeline erforderlichen Erweiterungen herunterlädt und konfigures.",
5236
+ "jit-loading-status": "Herunterladen und Einrichten von Erweiterungspaketen...",
5237
+ "validation-failed": "Validierung fehlgeschlagen",
5238
+ "validation-plugin-disabled-or-missing": "Der Block \"{nodeName}\" erfordert die Erweiterung \"{pluginId}\", die derzeit nicht installiert oder aktiviert ist.",
5239
+ "validation-missing-param": "Bitte konfigurieren Sie das erforderliche Feld \"{paramName}\" im Block \"{nodeName}\"."
4637
5240
  },
4638
5241
  home: {
4639
- "invalid-preset": "Invalid preset",
4640
- "store-project-on-the-cloud": "Store project on the cloud",
5242
+ "invalid-preset": "Ungültige Vorlage",
5243
+ "store-project-on-the-cloud": "Projekt in der Cloud speichern",
4641
5244
  "cloud": "Cloud",
4642
- "store-project-locally": "Store project locally",
4643
- "local": "Local",
4644
- "invalid-number-of-paths-selected": "Invalid number of paths selected",
4645
- "pipelab-project": "Pipelab Project",
4646
- "choose-a-new-path": "Choose a new path",
4647
- "invalid-file-type": "Invalid file type",
4648
- "create-project": "Create project",
4649
- "duplicate-project": "Duplicate project",
4650
- "project-name": "Project Name",
4651
- "new-project": "New Project",
4652
- "open": "Open",
4653
- "your-projects": "Your projects",
4654
- "no-projects-yet": "No projects yet"
5245
+ "store-project-locally": "Projekt lokal speichern",
5246
+ "local": "Lokal",
5247
+ "invalid-number-of-paths-selected": "Ungültige Anzahl ausgewählter Pfade",
5248
+ "pipelab-project": "Pipelab-Projekt",
5249
+ "choose-a-new-path": "Wählen Sie einen neuen Pfad",
5250
+ "invalid-file-type": "Ungültiger Dateityp",
5251
+ "create-project": "Projekt erstellen",
5252
+ "create-pipeline": "Pipeline erstellen",
5253
+ "duplicate-project": "Projekt duplizieren",
5254
+ "duplicate-pipeline": "Pipeline duplizieren",
5255
+ "project-name": "Projektname",
5256
+ "new-project": "Neues Projekt",
5257
+ "new-pipeline": "Neue Pipeline",
5258
+ "open": "Öffnen",
5259
+ "import": "Importieren",
5260
+ "pipeline-name": "Pipelinename",
5261
+ "your-projects": "Ihre Projekte",
5262
+ "no-projects-yet": "Noch keine Projekte",
5263
+ "no-pipelines-yet": "Noch keine Pipelines",
5264
+ "delete-project": "Projekt löschen",
5265
+ "confirm-delete-project": "Sind Sie sicher, dass Sie dieses Projekt löschen möchten? Dies kann nicht rückgängig gemacht werden.",
5266
+ "cannot-delete-project": "Projekt kann nicht gelöscht werden",
5267
+ "project-not-empty": "Dieses Projekt enthält Pipelines. Bitte löschen Sie diese zuerst.",
5268
+ "transfer": "Übertragen",
5269
+ "transfer-successful": "Übertragung erfolgreich",
5270
+ "pipeline-transferred": "Pipeline erfolgreich übertragen",
5271
+ "select-project": "Projekt auswählen",
5272
+ "build-history": "Ausführungsverlauf",
5273
+ "duplicate": "Duplizieren",
5274
+ "rename-project": "Projekt umbenennen",
5275
+ "new-project-name": "Neuer Projektname",
5276
+ "premium-feature": "Dies ist eine Premium-Funktion",
5277
+ "migrate-warning": "Dieses Dateiformat wird bald nicht mehr unterstützt. Bitte migrieren Sie es in den neuen lokalen Arbeitsbereich.",
5278
+ "simple-pipeline": "Einfache Pipeline",
5279
+ "advanced-pipeline": "Erweiterte Pipeline",
5280
+ "new-simple-project": "Neues einfaches Projekt",
5281
+ "new-advanced-project": "Neues erweitertes Projekt",
5282
+ "store-project-internally": "Projekt lokal speichern",
5283
+ "internal": "Intern",
5284
+ "confirm-migration-message": "Sind Sie sicher, dass Sie diese Pipeline in den lokalen Arbeitsbereich verschieben möchten? Pipelab wird diese Pipeline intern verwalten.",
5285
+ "migrate-pipeline": "Pipeline migrieren",
5286
+ "migration-success": "Pipeline erfolgreich migriert",
5287
+ "migrate-to-internal": "In Arbeitsbereich verschieben",
5288
+ "only-internal-supported-notice": "Pipelab verwaltet jetzt alle Pipelines im Arbeitsbereich der Anwendung. Externe Dateien sind veraltet, können aber weiterhin importiert werden.",
5289
+ "import-pipeline": "Pipeline importieren",
5290
+ "import-from-stable": "Aus Stable importieren...",
5291
+ "import-from-beta": "Aus Beta importieren...",
5292
+ "import-pipeline-file": "Pipeline-Datei importieren (.pipelab)...",
5293
+ "import-success": "Pipeline erfolgreich importiert",
5294
+ "failed-to-read-file": "Ausgewählte Datei konnte nicht gelesen werden",
5295
+ "export-pipeline": "Pipeline exportieren...",
5296
+ "export-success": "Pipeline erfolgreich exportiert",
5297
+ "export-failed": "Fehler beim Exportieren der Pipeline"
4655
5298
  },
4656
- scenarios: { "scenarios": "Scenarios" }
5299
+ pipelines: { "title": "@:headers.pipelines" },
5300
+ tour: {
5301
+ "start-tour": "Anleitung starten",
5302
+ "projects-list-title": "Projekt-Navigator",
5303
+ "projects-list-description": "Diese Seitenleiste zeigt Ihre Projekte. Durch Auswahl eines Projekts werden dessen Pipelines im Hauptbereich angezeigt.",
5304
+ "add-project-title": "Neues Projekt erstellen",
5305
+ "add-project-description": "Projekte organisieren Ihre Pipelines nach Thema oder Kunde. Klicken Sie hier, um ein neues Projekt zu starten.",
5306
+ "new-pipeline-title": "Pipeline erstellen",
5307
+ "new-pipeline-description": "Bereit zur Automatisierung? Erstellen Sie eine neue Pipeline, um Aktionen und Logik hinzuzufügen.",
5308
+ "project-actions-title": "Projektverwaltung",
5309
+ "project-actions-description": "Verwenden Sie diese Schaltflächen, um das derzeit ausgewählte Projekt umzubenennen oder zu löschen.",
5310
+ "editor-canvas-title": "Der visuelle Editor",
5311
+ "editor-canvas-description": "Dies ist Ihr Arbeitsbereich. Ziehen Sie Aktionsblöcke hierher, um Ihren Automatisierungsfluss zu erstellen.",
5312
+ "editor-save-title": "Fortschritt speichern",
5313
+ "editor-save-description": "Schützen Sie Ihre Änderungen. Wir empfehlen, Ihre Pipeline häufig zu speichern.",
5314
+ "editor-run-title": "Pipeline testen",
5315
+ "editor-run-description": "Klicken Sie auf Ausführen, um Ihre Pipeline zu testen. Pipelab führt jeden Block in Echtzeit aus.",
5316
+ "editor-logs-title": "Ausführungsprotokolle",
5317
+ "editor-logs-description": "Das Protokollfenster zeigt die Ausführungsschritte in Echtzeit, um Sie bei der Überwachung und Fehlersuche zu unterstützen.",
5318
+ "editor-close-title": "Editor schließen",
5319
+ "editor-close-description": "Fertig für heute? Kehren Sie zum Dashboard zurück, um andere Projekte und Pipelines zu verwalten."
5320
+ }
4657
5321
  };
4658
5322
  //#endregion
4659
5323
  //#region ../../packages/shared/src/model.ts
4660
5324
  const OriginValidator = object({
4661
5325
  pluginId: string(),
4662
- nodeId: string()
5326
+ nodeId: string(),
5327
+ version: optional(pipe(string(), description("Pinned version of the plugin for this block. Falls back to \"latest\" when absent.")))
4663
5328
  });
4664
5329
  const BlockActionValidatorV1 = object({
4665
5330
  type: literal("action"),
@@ -4672,7 +5337,7 @@ const EditorParamValidatorV3 = union([literal("simple"), literal("editor")]);
4672
5337
  const BlockActionValidatorV3 = object({
4673
5338
  type: literal("action"),
4674
5339
  uid: string(),
4675
- name: pipe(optional(string()), description("A custom name provided by the user")),
5340
+ name: optional(pipe(string(), description("A custom name provided by the user"))),
4676
5341
  disabled: optional(boolean()),
4677
5342
  params: record(string(), object({
4678
5343
  editor: EditorParamValidatorV3,
@@ -4680,21 +5345,6 @@ const BlockActionValidatorV3 = object({
4680
5345
  })),
4681
5346
  origin: OriginValidator
4682
5347
  });
4683
- object({
4684
- type: literal("condition"),
4685
- uid: string(),
4686
- origin: OriginValidator,
4687
- params: record(string(), any()),
4688
- branchTrue: lazy(() => array(BlockValidator)),
4689
- branchFalse: lazy(() => array(BlockValidator))
4690
- });
4691
- object({
4692
- type: literal("loop"),
4693
- uid: string(),
4694
- origin: OriginValidator,
4695
- params: record(string(), any()),
4696
- children: lazy(() => array(BlockValidator))
4697
- });
4698
5348
  const BlockEventValidator = object({
4699
5349
  type: literal("event"),
4700
5350
  uid: string(),
@@ -4710,7 +5360,6 @@ object({
4710
5360
  const BlockValidatorV1 = variant("type", [BlockActionValidatorV1, BlockEventValidator]);
4711
5361
  const BlockValidatorV2 = variant("type", [BlockActionValidatorV1]);
4712
5362
  const BlockValidatorV3 = variant("type", [BlockActionValidatorV3]);
4713
- const BlockValidator = BlockValidatorV3;
4714
5363
  const CanvasValidatorV1 = object({ blocks: array(BlockValidatorV1) });
4715
5364
  const CanvasValidatorV2 = object({
4716
5365
  blocks: array(BlockValidatorV2),
@@ -4742,19 +5391,21 @@ const SavedFileValidatorV3 = object({
4742
5391
  canvas: CanvasValidatorV3,
4743
5392
  variables: array(VariableValidatorV1)
4744
5393
  });
4745
- const SavedFileDefaultValidator = object({
5394
+ const SavedFileDefaultValidatorV4 = object({
4746
5395
  version: literal("4.0.0"),
4747
5396
  type: literal("default"),
4748
5397
  name: string(),
4749
5398
  description: string(),
5399
+ plugins: optional(record(string(), string())),
4750
5400
  canvas: CanvasValidatorV3,
4751
5401
  variables: array(VariableValidatorV1)
4752
5402
  });
4753
- const SavedFileSimpleValidator = object({
5403
+ const SavedFileSimpleValidatorV4 = object({
4754
5404
  version: literal("4.0.0"),
4755
5405
  type: literal("simple"),
4756
5406
  name: string(),
4757
5407
  description: string(),
5408
+ plugins: optional(record(string(), string())),
4758
5409
  source: object({
4759
5410
  type: union([
4760
5411
  literal("c3-html"),
@@ -4780,8 +5431,47 @@ const SavedFileSimpleValidator = object({
4780
5431
  })
4781
5432
  })
4782
5433
  });
4783
- const SavedFileValidatorV4 = union([SavedFileDefaultValidator, SavedFileSimpleValidator]);
4784
- const SavedFileValidator = SavedFileValidatorV4;
5434
+ const SavedFileDefaultValidatorV5 = object({
5435
+ version: literal("5.0.0"),
5436
+ name: string(),
5437
+ description: string(),
5438
+ canvas: CanvasValidatorV3,
5439
+ variables: array(VariableValidatorV1)
5440
+ });
5441
+ const SavedFileSimpleValidatorV5 = object({
5442
+ version: literal("5.0.0"),
5443
+ type: literal("simple"),
5444
+ name: string(),
5445
+ description: string(),
5446
+ plugins: record(string(), string()),
5447
+ source: object({
5448
+ type: union([
5449
+ literal("c3-html"),
5450
+ literal("c3-nwjs"),
5451
+ literal("godot"),
5452
+ literal("html")
5453
+ ]),
5454
+ path: string()
5455
+ }),
5456
+ packaging: object({ enabled: boolean() }),
5457
+ publishing: object({
5458
+ steam: object({
5459
+ enabled: boolean(),
5460
+ appId: optional(string())
5461
+ }),
5462
+ itch: object({
5463
+ enabled: boolean(),
5464
+ project: optional(string())
5465
+ }),
5466
+ poki: object({
5467
+ enabled: boolean(),
5468
+ gameId: optional(string())
5469
+ })
5470
+ })
5471
+ });
5472
+ const SavedFileValidatorV4 = union([SavedFileDefaultValidatorV4, SavedFileSimpleValidatorV4]);
5473
+ const SavedFileValidatorV5 = SavedFileDefaultValidatorV5;
5474
+ const SavedFileValidator = SavedFileValidatorV5;
4785
5475
  //#endregion
4786
5476
  //#region ../../node_modules/vue/node_modules/@vue/shared/dist/shared.cjs.prod.js
4787
5477
  /**
@@ -46926,7 +47616,13 @@ const plugins = (0, vue_exports.shallowRef)([]);
46926
47616
  const usePlugins = () => {
46927
47617
  const load = () => {};
46928
47618
  const registerPlugins = (newPlugins) => {
46929
- plugins.value.push(...newPlugins);
47619
+ const current = [...plugins.value];
47620
+ for (const np of newPlugins) {
47621
+ const idx = current.findIndex((p) => p.id === np.id);
47622
+ if (idx !== -1) current[idx] = np;
47623
+ else current.push(np);
47624
+ }
47625
+ plugins.value = current;
46930
47626
  };
46931
47627
  return {
46932
47628
  load,
@@ -47033,18 +47729,6 @@ const createExpression = (expression) => {
47033
47729
  type: "expression"
47034
47730
  };
47035
47731
  };
47036
- const createCondition = (condition) => {
47037
- return {
47038
- ...condition,
47039
- type: "condition"
47040
- };
47041
- };
47042
- const createLoop = (loop) => {
47043
- return {
47044
- ...loop,
47045
- type: "loop"
47046
- };
47047
- };
47048
47732
  const createEvent = (event) => {
47049
47733
  return {
47050
47734
  ...event,
@@ -47052,38 +47736,6 @@ const createEvent = (event) => {
47052
47736
  };
47053
47737
  };
47054
47738
  //#endregion
47055
- //#region ../../packages/shared/src/save-location.ts
47056
- const SaveLocationInternalValidator = object({
47057
- id: string(),
47058
- project: string(),
47059
- lastModified: string(),
47060
- type: literal("internal"),
47061
- configName: string()
47062
- });
47063
- /** @deprecated External pipeline files are deprecated and will be removed in future versions. */
47064
- const SaveLocationExternalValidator = object({
47065
- id: string(),
47066
- project: string(),
47067
- path: string(),
47068
- lastModified: string(),
47069
- type: literal("external"),
47070
- summary: object({
47071
- plugins: array(string()),
47072
- name: string(),
47073
- description: string()
47074
- })
47075
- });
47076
- const SaveLocationPipelabCloudValidator = object({
47077
- id: string(),
47078
- project: string(),
47079
- type: literal("pipelab-cloud")
47080
- });
47081
- const SaveLocationValidator = union([
47082
- SaveLocationExternalValidator,
47083
- SaveLocationInternalValidator,
47084
- SaveLocationPipelabCloudValidator
47085
- ]);
47086
- //#endregion
47087
47739
  //#region ../../packages/shared/src/subscription-errors.ts
47088
47740
  var SubscriptionRequiredError = class extends Error {
47089
47741
  code = "SUBSCRIPTION_REQUIRED";
@@ -64208,6 +64860,24 @@ const supabase = (options) => {
64208
64860
  //#endregion
64209
64861
  //#region ../../packages/shared/src/utils.ts
64210
64862
  const foo = "bar";
64863
+ const transformUrl = (url) => {
64864
+ if (url && typeof url === "string") {
64865
+ const getHost = () => {
64866
+ if (typeof window !== "undefined") if (window.location.port === "5173") return `http://${window.location.hostname}:33753`;
64867
+ else return `${window.location.protocol}//${window.location.host}`;
64868
+ return "http://localhost:33753";
64869
+ };
64870
+ if (url.startsWith("file://")) {
64871
+ const filePath = url.substring(7);
64872
+ return `${getHost()}/media-file/${encodeURIComponent(filePath)}`;
64873
+ }
64874
+ if (url.startsWith("media://")) {
64875
+ const filePath = url.replace(/^media:\/\/+/, "/");
64876
+ return `${getHost()}/media-file/${encodeURIComponent(filePath)}`;
64877
+ }
64878
+ }
64879
+ return url || "";
64880
+ };
64211
64881
  //#endregion
64212
64882
  //#region ../../packages/shared/src/validation.ts
64213
64883
  const isRequired = (param) => {
@@ -64251,34 +64921,6 @@ const isWebSocketResponseMessage = (message) => {
64251
64921
  const isWebSocketErrorMessage = (message) => {
64252
64922
  return message && message.type === "error" && message.requestId && message.error;
64253
64923
  };
64254
- object({
64255
- version: literal("1.0.0"),
64256
- data: optional(record(string(), SaveLocationValidator), {})
64257
- });
64258
- const FileRepoProjectValidatorV2$1 = object({
64259
- id: string(),
64260
- name: string(),
64261
- description: string()
64262
- });
64263
- object({
64264
- version: literal("2.0.0"),
64265
- projects: array(FileRepoProjectValidatorV2$1),
64266
- pipelines: optional(array(SaveLocationValidator), [])
64267
- });
64268
- object({
64269
- version: literal("1.0.0"),
64270
- data: optional(record(string(), SaveLocationValidator), {})
64271
- });
64272
- const FileRepoProjectValidatorV2 = object({
64273
- id: string(),
64274
- name: string(),
64275
- description: string()
64276
- });
64277
- object({
64278
- version: literal("2.0.0"),
64279
- projects: array(FileRepoProjectValidatorV2),
64280
- pipelines: optional(array(SaveLocationValidator), [])
64281
- });
64282
64924
  //#endregion
64283
64925
  //#region ../../packages/shared/src/index.ts
64284
64926
  const appSettingsMigrator = appSettingsMigrator$1;
@@ -64287,11 +64929,12 @@ const fileRepoMigrations = fileRepoMigrations$1;
64287
64929
  const defaultFileRepo = defaultFileRepo$1;
64288
64930
  const savedFileMigrator = savedFileMigrator$1;
64289
64931
  const configRegistry = configRegistry$1;
64932
+ const normalizePipelineConfig = normalizePipelineConfig$1;
64933
+ const connectionsMigrator = connectionsMigrator$1;
64934
+ const defaultConnections = defaultConnections$1;
64290
64935
  //#endregion
64291
64936
  //#region src/pipelab.ts
64292
64937
  const createActionRunner = (runner) => runner;
64293
- const createConditionRunner = (runner) => runner;
64294
- const createLoopRunner = (runner) => runner;
64295
64938
  const createExpressionRunner = (runner) => runner;
64296
64939
  const createEventRunner = (runner) => runner;
64297
64940
  const sleep = (duration) => {
@@ -64314,23 +64957,6 @@ const fileExists = async (path) => {
64314
64957
  }
64315
64958
  };
64316
64959
  //#endregion
64317
- //#region src/fs-utils.ts
64318
- const ensure = async (filesPath, defaultContent = "{}") => {
64319
- await (0, node_fs_promises.mkdir)((0, node_path.dirname)(filesPath), { recursive: true });
64320
- try {
64321
- await (0, node_fs_promises.access)(filesPath);
64322
- } catch {
64323
- await (0, node_fs_promises.writeFile)(filesPath, defaultContent);
64324
- }
64325
- };
64326
- const generateTempFolder = async (base) => {
64327
- const targetBase = base || (0, node_os.tmpdir)();
64328
- await (0, node_fs_promises.mkdir)(targetBase, { recursive: true });
64329
- const realPath = await (0, node_fs_promises.realpath)(targetBase);
64330
- console.log("join", (0, node_path.join)(realPath, "pipelab-"));
64331
- return await (0, node_fs_promises.mkdtemp)((0, node_path.join)(realPath, "pipelab-"));
64332
- };
64333
- //#endregion
64334
64960
  //#region src/archive-utils.ts
64335
64961
  /**
64336
64962
  * Extracts a .tar.gz archive.
@@ -64453,8 +65079,16 @@ exports.AppSettingsValidatorV5 = AppSettingsValidatorV5;
64453
65079
  exports.AppSettingsValidatorV6 = AppSettingsValidatorV6;
64454
65080
  exports.AppSettingsValidatorV7 = AppSettingsValidatorV7;
64455
65081
  exports.BenefitNotFoundError = BenefitNotFoundError;
65082
+ exports.ConnectionValidator = ConnectionValidator;
65083
+ exports.ConnectionsValidator = ConnectionsValidator;
65084
+ exports.ConnectionsValidatorV1 = ConnectionsValidatorV1;
64456
65085
  exports.EditorParamValidatorV3 = EditorParamValidatorV3;
64457
65086
  exports.ExternalCommandError = ExternalCommandError;
65087
+ exports.FileRepoProjectValidatorV2 = FileRepoProjectValidatorV2;
65088
+ exports.FileRepoValidator = FileRepoValidator;
65089
+ exports.FileRepoValidatorV1 = FileRepoValidatorV1;
65090
+ exports.FileRepoValidatorV2 = FileRepoValidatorV2;
65091
+ exports.FileRepoValidatorV3 = FileRepoValidatorV3;
64458
65092
  exports.OriginValidator = OriginValidator;
64459
65093
  exports.PipelabContext = _pipelab_core_node.PipelabContext;
64460
65094
  exports.RELEASE_SYNC = src_default;
@@ -64462,13 +65096,16 @@ exports.SaveLocationExternalValidator = SaveLocationExternalValidator;
64462
65096
  exports.SaveLocationInternalValidator = SaveLocationInternalValidator;
64463
65097
  exports.SaveLocationPipelabCloudValidator = SaveLocationPipelabCloudValidator;
64464
65098
  exports.SaveLocationValidator = SaveLocationValidator;
64465
- exports.SavedFileDefaultValidator = SavedFileDefaultValidator;
64466
- exports.SavedFileSimpleValidator = SavedFileSimpleValidator;
65099
+ exports.SavedFileDefaultValidatorV4 = SavedFileDefaultValidatorV4;
65100
+ exports.SavedFileDefaultValidatorV5 = SavedFileDefaultValidatorV5;
65101
+ exports.SavedFileSimpleValidatorV4 = SavedFileSimpleValidatorV4;
65102
+ exports.SavedFileSimpleValidatorV5 = SavedFileSimpleValidatorV5;
64467
65103
  exports.SavedFileValidator = SavedFileValidator;
64468
65104
  exports.SavedFileValidatorV1 = SavedFileValidatorV1;
64469
65105
  exports.SavedFileValidatorV2 = SavedFileValidatorV2;
64470
65106
  exports.SavedFileValidatorV3 = SavedFileValidatorV3;
64471
65107
  exports.SavedFileValidatorV4 = SavedFileValidatorV4;
65108
+ exports.SavedFileValidatorV5 = SavedFileValidatorV5;
64472
65109
  exports.ShellChannels = ShellChannels;
64473
65110
  exports.SubscriptionExpiredError = SubscriptionExpiredError;
64474
65111
  exports.SubscriptionRequiredError = SubscriptionRequiredError;
@@ -64480,20 +65117,17 @@ exports.WebSocketTimeoutError = WebSocketTimeoutError;
64480
65117
  exports.__toCommonJS = __toCommonJS;
64481
65118
  exports.appSettingsMigrator = appSettingsMigrator;
64482
65119
  exports.configRegistry = configRegistry;
65120
+ exports.connectionsMigrator = connectionsMigrator;
64483
65121
  exports.createAction = createAction;
64484
65122
  exports.createActionRunner = createActionRunner;
64485
65123
  exports.createArray = createArray;
64486
65124
  exports.createBooleanParam = createBooleanParam;
64487
65125
  exports.createColorPicker = createColorPicker;
64488
- exports.createCondition = createCondition;
64489
- exports.createConditionRunner = createConditionRunner;
64490
65126
  exports.createDefinition = createDefinition;
64491
65127
  exports.createEvent = createEvent;
64492
65128
  exports.createEventRunner = createEventRunner;
64493
65129
  exports.createExpression = createExpression;
64494
65130
  exports.createExpressionRunner = createExpressionRunner;
64495
- exports.createLoop = createLoop;
64496
- exports.createLoopRunner = createLoopRunner;
64497
65131
  exports.createNetlifySiteParam = createNetlifySiteParam;
64498
65132
  exports.createNodeDefinition = createNodeDefinition;
64499
65133
  exports.createNumberParam = createNumberParam;
@@ -64513,6 +65147,7 @@ Object.defineProperty(exports, "de_DE", {
64513
65147
  }
64514
65148
  });
64515
65149
  exports.defaultAppSettings = defaultAppSettings;
65150
+ exports.defaultConnections = defaultConnections;
64516
65151
  exports.defaultFileRepo = defaultFileRepo;
64517
65152
  exports.detectRuntime = detectRuntime;
64518
65153
  Object.defineProperty(exports, "downloadFile", {
@@ -64527,7 +65162,12 @@ Object.defineProperty(exports, "en_US", {
64527
65162
  return en_US_default;
64528
65163
  }
64529
65164
  });
64530
- exports.ensure = ensure;
65165
+ Object.defineProperty(exports, "ensure", {
65166
+ enumerable: true,
65167
+ get: function() {
65168
+ return _pipelab_core_node.ensure;
65169
+ }
65170
+ });
64531
65171
  Object.defineProperty(exports, "es_ES", {
64532
65172
  enumerable: true,
64533
65173
  get: function() {
@@ -64570,7 +65210,6 @@ Object.defineProperty(exports, "fr_FR", {
64570
65210
  return fr_FR_default;
64571
65211
  }
64572
65212
  });
64573
- exports.generateTempFolder = generateTempFolder;
64574
65213
  exports.getSubscriptionErrorMessage = getSubscriptionErrorMessage;
64575
65214
  exports.isRenderer = isRenderer;
64576
65215
  exports.isRequired = isRequired;
@@ -64581,6 +65220,7 @@ exports.isWebSocketRequestMessage = isWebSocketRequestMessage;
64581
65220
  exports.isWebSocketResponseMessage = isWebSocketResponseMessage;
64582
65221
  exports.makeResolvedParams = makeResolvedParams;
64583
65222
  exports.newVariant = newVariant;
65223
+ exports.normalizePipelineConfig = normalizePipelineConfig;
64584
65224
  exports.processGraph = processGraph;
64585
65225
  Object.defineProperty(exports, "pt_BR", {
64586
65226
  enumerable: true,
@@ -64609,6 +65249,7 @@ Object.defineProperty(exports, "schema", {
64609
65249
  });
64610
65250
  exports.sleep = sleep;
64611
65251
  exports.supabase = supabase;
65252
+ exports.transformUrl = transformUrl;
64612
65253
  exports.useLogger = useLogger;
64613
65254
  exports.usePlugins = usePlugins;
64614
65255
  exports.variableToFormattedVariable = variableToFormattedVariable;