@pipelab/plugin-construct 1.0.0-beta.13 → 1.0.0-beta.15

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
@@ -8,11 +8,11 @@ let node_os = require("node:os");
8
8
  let node_url = require("node:url");
9
9
  let node_fs = require("node:fs");
10
10
  node_fs = require_chunk.__toESM(node_fs);
11
+ let node_fs_promises = require("node:fs/promises");
12
+ node_fs_promises = require_chunk.__toESM(node_fs_promises);
11
13
  let node_http = require("node:http");
12
14
  node_http = require_chunk.__toESM(node_http);
13
15
  let node_crypto = require("node:crypto");
14
- let node_fs_promises = require("node:fs/promises");
15
- node_fs_promises = require_chunk.__toESM(node_fs_promises);
16
16
  let node_child_process = require("node:child_process");
17
17
  let node_string_decoder = require("node:string_decoder");
18
18
  let node_util = require("node:util");
@@ -1605,6 +1605,56 @@ function literal(literal_, message) {
1605
1605
  }
1606
1606
  };
1607
1607
  }
1608
+ function looseObject(entries, message) {
1609
+ return {
1610
+ kind: "schema",
1611
+ type: "loose_object",
1612
+ reference: looseObject,
1613
+ expects: "Object",
1614
+ async: false,
1615
+ entries,
1616
+ message,
1617
+ _run(dataset, config2) {
1618
+ const input = dataset.value;
1619
+ if (input && typeof input === "object") {
1620
+ dataset.typed = true;
1621
+ dataset.value = {};
1622
+ for (const key in this.entries) {
1623
+ const value2 = input[key];
1624
+ const valueDataset = this.entries[key]._run({
1625
+ typed: false,
1626
+ value: value2
1627
+ }, config2);
1628
+ if (valueDataset.issues) {
1629
+ const pathItem = {
1630
+ type: "object",
1631
+ origin: "value",
1632
+ input,
1633
+ key,
1634
+ value: value2
1635
+ };
1636
+ for (const issue of valueDataset.issues) {
1637
+ if (issue.path) issue.path.unshift(pathItem);
1638
+ else issue.path = [pathItem];
1639
+ dataset.issues?.push(issue);
1640
+ }
1641
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
1642
+ if (config2.abortEarly) {
1643
+ dataset.typed = false;
1644
+ break;
1645
+ }
1646
+ }
1647
+ if (!valueDataset.typed) dataset.typed = false;
1648
+ if (valueDataset.value !== void 0 || key in input) dataset.value[key] = valueDataset.value;
1649
+ }
1650
+ if (!dataset.issues || !config2.abortEarly) {
1651
+ for (const key in input) if (_isValidObjectKey(input, key) && !(key in this.entries)) dataset.value[key] = input[key];
1652
+ }
1653
+ } else _addIssue(this, "type", dataset, config2);
1654
+ return dataset;
1655
+ }
1656
+ };
1657
+ }
1608
1658
  function number(message) {
1609
1659
  return {
1610
1660
  kind: "schema",
@@ -2142,6 +2192,18 @@ settingsMigratorInternal.createMigrations({
2142
2192
  })
2143
2193
  ]
2144
2194
  });
2195
+ const connectionsMigratorInternal = createMigrator();
2196
+ const defaultConnections = connectionsMigratorInternal.createDefault({
2197
+ version: "1.0.0",
2198
+ connections: []
2199
+ });
2200
+ connectionsMigratorInternal.createMigrations({
2201
+ defaultValue: defaultConnections,
2202
+ migrations: [createMigration({
2203
+ version: "1.0.0",
2204
+ up: finalVersion
2205
+ })]
2206
+ });
2145
2207
  const fileRepoMigratorInternal = createMigrator();
2146
2208
  const defaultFileRepo = fileRepoMigratorInternal.createDefault({
2147
2209
  version: "2.0.0",
@@ -2303,11 +2365,51 @@ const LEGACY_ID_MAP = {
2303
2365
  };
2304
2366
  const getStrictPluginId = (pluginId) => {
2305
2367
  if (!pluginId) return pluginId;
2306
- if (LEGACY_ID_MAP[pluginId]) return LEGACY_ID_MAP[pluginId];
2307
- if (pluginId.startsWith("@") || pluginId.includes("/") || pluginId.startsWith("pipelab-plugin-")) return pluginId;
2308
- const prefixed = `@pipelab/plugin-${pluginId}`;
2309
- return LEGACY_ID_MAP[prefixed] || prefixed;
2368
+ return LEGACY_ID_MAP[pluginId] || pluginId;
2310
2369
  };
2370
+ //#endregion
2371
+ //#region ../../packages/shared/src/save-location.ts
2372
+ const SaveLocationInternalValidator = object({
2373
+ id: string(),
2374
+ project: string(),
2375
+ lastModified: string(),
2376
+ type: literal("internal"),
2377
+ configName: string()
2378
+ });
2379
+ const SaveLocationValidator = union([
2380
+ object({
2381
+ id: string(),
2382
+ project: string(),
2383
+ path: string(),
2384
+ lastModified: string(),
2385
+ type: literal("external"),
2386
+ summary: object({
2387
+ plugins: array(string()),
2388
+ name: string(),
2389
+ description: string()
2390
+ })
2391
+ }),
2392
+ SaveLocationInternalValidator,
2393
+ object({
2394
+ id: string(),
2395
+ project: string(),
2396
+ type: literal("pipelab-cloud")
2397
+ })
2398
+ ]);
2399
+ object({
2400
+ version: literal("1.0.0"),
2401
+ data: optional(record(string(), SaveLocationValidator), {})
2402
+ });
2403
+ const FileRepoProjectValidatorV2$1 = object({
2404
+ id: string(),
2405
+ name: string(),
2406
+ description: string()
2407
+ });
2408
+ object({
2409
+ version: literal("2.0.0"),
2410
+ projects: array(FileRepoProjectValidatorV2$1),
2411
+ pipelines: optional(array(SaveLocationValidator), [])
2412
+ });
2311
2413
  object({
2312
2414
  cacheFolder: string(),
2313
2415
  theme: union([literal("light"), literal("dark")]),
@@ -2459,6 +2561,17 @@ object({
2459
2561
  })),
2460
2562
  isInternalMigrationBannerClosed: optional(boolean(), false)
2461
2563
  });
2564
+ const ConnectionValidator = looseObject({
2565
+ id: string(),
2566
+ pluginName: string(),
2567
+ name: string(),
2568
+ createdAt: string(),
2569
+ isDefault: boolean()
2570
+ });
2571
+ object({
2572
+ version: literal("1.0.0"),
2573
+ connections: array(ConnectionValidator)
2574
+ });
2462
2575
  //#endregion
2463
2576
  //#region ../../node_modules/tslog/dist/esm/prettyLogStyles.js
2464
2577
  const prettyLogStyles = {
@@ -2979,7 +3092,7 @@ const useLogger = () => {
2979
3092
  const OriginValidator = object({
2980
3093
  pluginId: string(),
2981
3094
  nodeId: string(),
2982
- version: pipe(optional(string()), description("Pinned version of the plugin for this block. Falls back to \"latest\" when absent."))
3095
+ version: optional(pipe(string(), description("Pinned version of the plugin for this block. Falls back to \"latest\" when absent.")))
2983
3096
  });
2984
3097
  const BlockActionValidatorV1 = object({
2985
3098
  type: literal("action"),
@@ -2992,7 +3105,7 @@ const EditorParamValidatorV3 = union([literal("simple"), literal("editor")]);
2992
3105
  const BlockActionValidatorV3 = object({
2993
3106
  type: literal("action"),
2994
3107
  uid: string(),
2995
- name: pipe(optional(string()), description("A custom name provided by the user")),
3108
+ name: optional(pipe(string(), description("A custom name provided by the user"))),
2996
3109
  disabled: optional(boolean()),
2997
3110
  params: record(string(), object({
2998
3111
  editor: EditorParamValidatorV3,
@@ -45315,35 +45428,6 @@ const createNumberParam = (value, definition) => {
45315
45428
  };
45316
45429
  };
45317
45430
  //#endregion
45318
- //#region ../../packages/shared/src/save-location.ts
45319
- const SaveLocationInternalValidator = object({
45320
- id: string(),
45321
- project: string(),
45322
- lastModified: string(),
45323
- type: literal("internal"),
45324
- configName: string()
45325
- });
45326
- const SaveLocationValidator = union([
45327
- object({
45328
- id: string(),
45329
- project: string(),
45330
- path: string(),
45331
- lastModified: string(),
45332
- type: literal("external"),
45333
- summary: object({
45334
- plugins: array(string()),
45335
- name: string(),
45336
- description: string()
45337
- })
45338
- }),
45339
- SaveLocationInternalValidator,
45340
- object({
45341
- id: string(),
45342
- project: string(),
45343
- type: literal("pipelab-cloud")
45344
- })
45345
- ]);
45346
- //#endregion
45347
45431
  //#region ../../packages/shared/src/websocket.types.ts
45348
45432
  var WebSocketError = class extends Error {
45349
45433
  constructor(message, code, requestId) {
@@ -45360,20 +45444,6 @@ object({
45360
45444
  version: literal("1.0.0"),
45361
45445
  data: optional(record(string(), SaveLocationValidator), {})
45362
45446
  });
45363
- const FileRepoProjectValidatorV2$1 = object({
45364
- id: string(),
45365
- name: string(),
45366
- description: string()
45367
- });
45368
- object({
45369
- version: literal("2.0.0"),
45370
- projects: array(FileRepoProjectValidatorV2$1),
45371
- pipelines: optional(array(SaveLocationValidator), [])
45372
- });
45373
- object({
45374
- version: literal("1.0.0"),
45375
- data: optional(record(string(), SaveLocationValidator), {})
45376
- });
45377
45447
  const FileRepoProjectValidatorV2 = object({
45378
45448
  id: string(),
45379
45449
  name: string(),
@@ -45385,8 +45455,14 @@ object({
45385
45455
  pipelines: optional(array(SaveLocationValidator), [])
45386
45456
  });
45387
45457
  //#endregion
45458
+ //#region ../../packages/constants/src/index.ts
45459
+ const websocketPort = 33753;
45460
+ const DEFAULT_NODE_VERSION = "24.14.1";
45461
+ const DEFAULT_PNPM_VERSION = "10.12.0";
45462
+ //#endregion
45388
45463
  //#region ../../packages/core-node/src/context.ts
45389
- const _dirname = typeof __dirname !== "undefined" ? __dirname : require("url").pathToFileURL(__filename).href ? (0, node_path.dirname)((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href)) : process.cwd();
45464
+ const metaUrl = require("url").pathToFileURL(__filename).href;
45465
+ const _dirname = typeof __dirname !== "undefined" ? __dirname : metaUrl ? (0, node_path.dirname)((0, node_url.fileURLToPath)(metaUrl)) : process.cwd();
45390
45466
  const isDev = process.env.NODE_ENV === "development";
45391
45467
  /**
45392
45468
  * Finds the monorepo root by looking for pnpm-workspace.yaml.
@@ -48958,9 +49034,6 @@ const useAPI = () => {
48958
49034
  };
48959
49035
  };
48960
49036
  //#endregion
48961
- //#region ../../packages/constants/src/index.ts
48962
- const websocketPort = 33753;
48963
- //#endregion
48964
49037
  //#region ../../packages/core-node/src/websocket-server.ts
48965
49038
  var WebSocketServer = class {
48966
49039
  wss = null;
@@ -59969,14 +60042,14 @@ var require_path_reservations = /* @__PURE__ */ require_chunk.__commonJSMin(((ex
59969
60042
  const assert$1 = require("assert");
59970
60043
  const normalize = require_normalize_unicode();
59971
60044
  const stripSlashes = require_strip_trailing_slashes();
59972
- const { join: join$19 } = require("path");
60045
+ const { join: join$20 } = require("path");
59973
60046
  const isWindows = (process.env.TESTING_TAR_FAKE_PLATFORM || process.platform) === "win32";
59974
60047
  module.exports = () => {
59975
60048
  const queues = /* @__PURE__ */ new Map();
59976
60049
  const reservations = /* @__PURE__ */ new Map();
59977
60050
  const getDirs = (path$62) => {
59978
60051
  return path$62.split("/").slice(0, -1).reduce((set, path$63) => {
59979
- if (set.length) path$63 = join$19(set[set.length - 1], path$63);
60052
+ if (set.length) path$63 = join$20(set[set.length - 1], path$63);
59980
60053
  set.push(path$63 || "/");
59981
60054
  return set;
59982
60055
  }, []);
@@ -60030,7 +60103,7 @@ var require_path_reservations = /* @__PURE__ */ require_chunk.__commonJSMin(((ex
60030
60103
  };
60031
60104
  const reserve = (paths, fn) => {
60032
60105
  paths = isWindows ? ["win32 parallelization disabled"] : paths.map((p) => {
60033
- return stripSlashes(join$19(normalize(p))).toLowerCase();
60106
+ return stripSlashes(join$20(normalize(p))).toLowerCase();
60034
60107
  });
60035
60108
  const dirs = new Set(paths.map((path$67) => getDirs(path$67)).reduce((a, b) => a.concat(b)));
60036
60109
  reservations.set(fn, {
@@ -89368,14 +89441,6 @@ var import_tar = /* @__PURE__ */ require_chunk.__toESM(require_tar$1(), 1);
89368
89441
  var import_yauzl = /* @__PURE__ */ require_chunk.__toESM(require_yauzl(), 1);
89369
89442
  var import_archiver = /* @__PURE__ */ require_chunk.__toESM(require_archiver(), 1);
89370
89443
  /**
89371
- * Generates a unique temporary folder.
89372
- */
89373
- const generateTempFolder = async (base) => {
89374
- const targetBase = base || (0, node_os.tmpdir)();
89375
- await (0, node_fs_promises.mkdir)(targetBase, { recursive: true });
89376
- return await (0, node_fs_promises.mkdtemp)((0, node_path.join)(await (0, node_fs_promises.realpath)(targetBase), "pipelab-"));
89377
- };
89378
- /**
89379
89444
  * Extracts a .tar.gz archive.
89380
89445
  */
89381
89446
  async function extractTarGz(archivePath, destinationDir) {
@@ -95875,7 +95940,7 @@ var require_index_min$3 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports)
95875
95940
  //#region ../../node_modules/@npmcli/promise-spawn/node_modules/which/lib/index.js
95876
95941
  var require_lib$27 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
95877
95942
  const { isexe, sync: isexeSync } = require_index_min$3();
95878
- const { join: join$16, delimiter: delimiter$4, sep: sep$4, posix: posix$1 } = require("path");
95943
+ const { join: join$17, delimiter: delimiter$4, sep: sep$4, posix: posix$1 } = require("path");
95879
95944
  const isWindows = process.platform === "win32";
95880
95945
  /* istanbul ignore next */
95881
95946
  const rSlash = new RegExp(`[${posix$1.sep}${sep$4 === posix$1.sep ? "" : sep$4}]`.replace(/(\\)/g, "\\$1"));
@@ -95905,7 +95970,7 @@ var require_lib$27 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modu
95905
95970
  };
95906
95971
  const getPathPart = (raw, cmd) => {
95907
95972
  const pathPart = /^".*"$/.test(raw) ? raw.slice(1, -1) : raw;
95908
- return (!pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "") + join$16(pathPart, cmd);
95973
+ return (!pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "") + join$17(pathPart, cmd);
95909
95974
  };
95910
95975
  const which = async (cmd, opt = {}) => {
95911
95976
  const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
@@ -96654,7 +96719,7 @@ var require_index_min$2 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports)
96654
96719
  //#region ../../node_modules/@npmcli/git/node_modules/which/lib/index.js
96655
96720
  var require_lib$24 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
96656
96721
  const { isexe, sync: isexeSync } = require_index_min$2();
96657
- const { join: join$15, delimiter: delimiter$3, sep: sep$3, posix } = require("path");
96722
+ const { join: join$16, delimiter: delimiter$3, sep: sep$3, posix } = require("path");
96658
96723
  const isWindows = process.platform === "win32";
96659
96724
  /* istanbul ignore next */
96660
96725
  const rSlash = new RegExp(`[${posix.sep}${sep$3 === posix.sep ? "" : sep$3}]`.replace(/(\\)/g, "\\$1"));
@@ -96684,7 +96749,7 @@ var require_lib$24 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modu
96684
96749
  };
96685
96750
  const getPathPart = (raw, cmd) => {
96686
96751
  const pathPart = /^".*"$/.test(raw) ? raw.slice(1, -1) : raw;
96687
- return (!pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "") + join$15(pathPart, cmd);
96752
+ return (!pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "") + join$16(pathPart, cmd);
96688
96753
  };
96689
96754
  const which = async (cmd, opt = {}) => {
96690
96755
  const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
@@ -98582,7 +98647,7 @@ var require_lib$22 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modu
98582
98647
  //#endregion
98583
98648
  //#region ../../node_modules/npm-normalize-package-bin/lib/index.js
98584
98649
  var require_lib$21 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
98585
- const { join: join$14, basename: basename$4 } = require("path");
98650
+ const { join: join$15, basename: basename$4 } = require("path");
98586
98651
  const normalize = (pkg) => !pkg.bin ? removeBin(pkg) : typeof pkg.bin === "string" ? normalizeString(pkg) : Array.isArray(pkg.bin) ? normalizeArray(pkg) : typeof pkg.bin === "object" ? normalizeObject(pkg) : removeBin(pkg);
98587
98652
  const normalizeString = (pkg) => {
98588
98653
  if (!pkg.name) return removeBin(pkg);
@@ -98605,9 +98670,9 @@ var require_lib$21 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modu
98605
98670
  const clean = {};
98606
98671
  let hasBins = false;
98607
98672
  Object.keys(orig).forEach((binKey) => {
98608
- const base = join$14("/", basename$4(binKey.replace(/\\|:/g, "/"))).slice(1);
98673
+ const base = join$15("/", basename$4(binKey.replace(/\\|:/g, "/"))).slice(1);
98609
98674
  if (typeof orig[binKey] !== "string" || !base) return;
98610
- const binTarget = join$14("/", orig[binKey].replace(/\\/g, "/")).replace(/\\/g, "/").slice(1);
98675
+ const binTarget = join$15("/", orig[binKey].replace(/\\/g, "/")).replace(/\\/g, "/").slice(1);
98611
98676
  if (!binTarget) return;
98612
98677
  clean[base] = binTarget;
98613
98678
  hasBins = true;
@@ -100680,7 +100745,7 @@ var require_polyfill = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, mo
100680
100745
  const { ERR_FS_CP_DIR_TO_NON_DIR, ERR_FS_CP_EEXIST, ERR_FS_CP_EINVAL, ERR_FS_CP_FIFO_PIPE, ERR_FS_CP_NON_DIR_TO_DIR, ERR_FS_CP_SOCKET, ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY, ERR_FS_CP_UNKNOWN, ERR_FS_EISDIR, ERR_INVALID_ARG_TYPE } = require_errors$3();
100681
100746
  const { constants: { errno: { EEXIST, EISDIR, EINVAL, ENOTDIR } } } = require("os");
100682
100747
  const { chmod: chmod$2, copyFile, lstat: lstat$2, mkdir: mkdir$8, readdir: readdir$6, readlink, stat: stat$5, symlink, unlink, utimes } = require("fs/promises");
100683
- const { dirname: dirname$9, isAbsolute: isAbsolute$2, join: join$13, parse, resolve: resolve$10, sep: sep$2, toNamespacedPath } = require("path");
100748
+ const { dirname: dirname$9, isAbsolute: isAbsolute$2, join: join$14, parse, resolve: resolve$10, sep: sep$2, toNamespacedPath } = require("path");
100684
100749
  const { fileURLToPath } = require("url");
100685
100750
  const defaultOptions = {
100686
100751
  dereference: false,
@@ -100889,8 +100954,8 @@ var require_polyfill = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, mo
100889
100954
  const dir = await readdir$6(src);
100890
100955
  for (let i = 0; i < dir.length; i++) {
100891
100956
  const item = dir[i];
100892
- const srcItem = join$13(src, item);
100893
- const destItem = join$13(dest, item);
100957
+ const srcItem = join$14(src, item);
100958
+ const destItem = join$14(dest, item);
100894
100959
  const { destStat } = await checkPaths(srcItem, destItem, opts);
100895
100960
  await startCopy(destStat, srcItem, destItem, opts);
100896
100961
  }
@@ -100954,13 +101019,13 @@ var require_cp = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module)
100954
101019
  //#endregion
100955
101020
  //#region ../../node_modules/cacache/node_modules/@npmcli/fs/lib/with-temp-dir.js
100956
101021
  var require_with_temp_dir = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
100957
- const { join: join$12, sep: sep$1 } = require("path");
101022
+ const { join: join$13, sep: sep$1 } = require("path");
100958
101023
  const getOptions = require_get_options();
100959
101024
  const { mkdir: mkdir$7, mkdtemp, rm: rm$7 } = require("fs/promises");
100960
101025
  const withTempDir = async (root, fn, opts) => {
100961
101026
  const options = getOptions(opts, { copy: ["tmpPrefix"] });
100962
101027
  await mkdir$7(root, { recursive: true });
100963
- const target = await mkdtemp(join$12(`${root}${sep$1}`, options.tmpPrefix || ""));
101028
+ const target = await mkdtemp(join$13(`${root}${sep$1}`, options.tmpPrefix || ""));
100964
101029
  let err;
100965
101030
  let result;
100966
101031
  try {
@@ -100983,10 +101048,10 @@ var require_with_temp_dir = /* @__PURE__ */ require_chunk.__commonJSMin(((export
100983
101048
  //#region ../../node_modules/cacache/node_modules/@npmcli/fs/lib/readdir-scoped.js
100984
101049
  var require_readdir_scoped = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
100985
101050
  const { readdir: readdir$5 } = require("fs/promises");
100986
- const { join: join$11 } = require("path");
101051
+ const { join: join$12 } = require("path");
100987
101052
  const readdirScoped = async (dir) => {
100988
101053
  const results = [];
100989
- for (const item of await readdir$5(dir)) if (item.startsWith("@")) for (const scopedItem of await readdir$5(join$11(dir, item))) results.push(join$11(item, scopedItem));
101054
+ for (const item of await readdir$5(dir)) if (item.startsWith("@")) for (const scopedItem of await readdir$5(join$12(dir, item))) results.push(join$12(item, scopedItem));
100990
101055
  else results.push(item);
100991
101056
  return results;
100992
101057
  };
@@ -100995,7 +101060,7 @@ var require_readdir_scoped = /* @__PURE__ */ require_chunk.__commonJSMin(((expor
100995
101060
  //#endregion
100996
101061
  //#region ../../node_modules/cacache/node_modules/@npmcli/fs/lib/move-file.js
100997
101062
  var require_move_file = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
100998
- const { dirname: dirname$8, join: join$10, resolve: resolve$9, relative: relative$1, isAbsolute: isAbsolute$1 } = require("path");
101063
+ const { dirname: dirname$8, join: join$11, resolve: resolve$9, relative: relative$1, isAbsolute: isAbsolute$1 } = require("path");
100999
101064
  const fs$12 = require("fs/promises");
101000
101065
  const pathExists = async (path$54) => {
101001
101066
  try {
@@ -101020,7 +101085,7 @@ var require_move_file = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, m
101020
101085
  const sourceStat = await fs$12.lstat(source);
101021
101086
  if (sourceStat.isDirectory()) {
101022
101087
  const files = await fs$12.readdir(source);
101023
- await Promise.all(files.map((file) => moveFile(join$10(source, file), join$10(destination, file), options, false, symlinks)));
101088
+ await Promise.all(files.map((file) => moveFile(join$11(source, file), join$11(destination, file), options, false, symlinks)));
101024
101089
  } else if (sourceStat.isSymbolicLink()) symlinks.push({
101025
101090
  source,
101026
101091
  destination
@@ -110559,9 +110624,9 @@ var require_protected = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, m
110559
110624
  //#region ../../node_modules/pacote/lib/util/cache-dir.js
110560
110625
  var require_cache_dir = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
110561
110626
  const { resolve: resolve$7 } = require("node:path");
110562
- const { tmpdir: tmpdir$2, homedir: homedir$1 } = require("node:os");
110627
+ const { tmpdir, homedir: homedir$1 } = require("node:os");
110563
110628
  module.exports = (fakePlatform = false) => {
110564
- const temp = tmpdir$2();
110629
+ const temp = tmpdir();
110565
110630
  const uidOrPid = process.getuid ? process.getuid() : process.pid;
110566
110631
  const home = homedir$1() || resolve$7(temp, "npm-" + uidOrPid);
110567
110632
  const platform = fakePlatform || process.platform;
@@ -112383,7 +112448,7 @@ var require_lib$10 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modu
112383
112448
  var require_lib$9 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
112384
112449
  const { Walker: IgnoreWalker } = require_lib$10();
112385
112450
  const { lstatSync: lstat$1, readFileSync: readFile$4 } = require("fs");
112386
- const { basename: basename$2, dirname: dirname$6, extname: extname$1, join: join$9, relative, resolve: resolve$6, sep } = require("path");
112451
+ const { basename: basename$2, dirname: dirname$6, extname: extname$1, join: join$10, relative, resolve: resolve$6, sep } = require("path");
112387
112452
  const { log } = require_lib$29();
112388
112453
  const defaultRules = Symbol("npm-packlist.rules.default");
112389
112454
  const strictRules = Symbol("npm-packlist.rules.strict");
@@ -112416,7 +112481,7 @@ var require_lib$9 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modul
112416
112481
  const normalizePath = (path$46) => path$46.split("\\").join("/");
112417
112482
  const readOutOfTreeIgnoreFiles = (root, rel, result = []) => {
112418
112483
  for (const file of [".npmignore", ".gitignore"]) try {
112419
- const ignoreContent = readFile$4(join$9(root, file), { encoding: "utf8" });
112484
+ const ignoreContent = readFile$4(join$10(root, file), { encoding: "utf8" });
112420
112485
  result.push(ignoreContent);
112421
112486
  break;
112422
112487
  } catch (err) {
@@ -112425,8 +112490,8 @@ var require_lib$9 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modul
112425
112490
  }
112426
112491
  if (!rel) return result;
112427
112492
  const firstRel = rel.split(sep, 1)[0];
112428
- const newRoot = join$9(root, firstRel);
112429
- return readOutOfTreeIgnoreFiles(newRoot, relative(newRoot, join$9(root, rel)), result);
112493
+ const newRoot = join$10(root, firstRel);
112494
+ return readOutOfTreeIgnoreFiles(newRoot, relative(newRoot, join$10(root, rel)), result);
112430
112495
  };
112431
112496
  var PackWalker = class PackWalker extends IgnoreWalker {
112432
112497
  constructor(tree, opts) {
@@ -112493,7 +112558,7 @@ var require_lib$9 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modul
112493
112558
  let ignoreFiles = null;
112494
112559
  if (this.tree.workspaces) {
112495
112560
  const workspaceDirs = [...this.tree.workspaces.values()].map((dir) => dir.replace(/\\/g, "/"));
112496
- const entryPath = join$9(this.path, entry).replace(/\\/g, "/");
112561
+ const entryPath = join$10(this.path, entry).replace(/\\/g, "/");
112497
112562
  if (workspaceDirs.includes(entryPath)) ignoreFiles = [
112498
112563
  defaultRules,
112499
112564
  "package.json",
@@ -112553,7 +112618,7 @@ var require_lib$9 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modul
112553
112618
  if (file.endsWith("/*")) file += "*";
112554
112619
  const inverse = `!${file}`;
112555
112620
  try {
112556
- const stat = lstat$1(join$9(this.path, file.replace(/^!+/, "")).replace(/\\/g, "/"));
112621
+ const stat = lstat$1(join$10(this.path, file.replace(/^!+/, "")).replace(/\\/g, "/"));
112557
112622
  if (stat.isFile()) {
112558
112623
  strict.unshift(inverse);
112559
112624
  this.requiredFiles.push(file.startsWith("/") ? file.slice(1) : file);
@@ -112610,7 +112675,7 @@ var require_lib$9 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modul
112610
112675
  walker.start();
112611
112676
  });
112612
112677
  const relativeFrom = relative(this.root, walker.path);
112613
- for (const file of bundled) this.result.add(join$9(relativeFrom, file).replace(/\\/g, "/"));
112678
+ for (const file of bundled) this.result.add(join$10(relativeFrom, file).replace(/\\/g, "/"));
112614
112679
  }
112615
112680
  }
112616
112681
  };
@@ -151095,8 +151160,6 @@ const sendStartupProgress = (message) => {
151095
151160
  };
151096
151161
  //#endregion
151097
151162
  //#region ../../packages/core-node/src/utils/remote.ts
151098
- const DEFAULT_NODE_VERSION = "24.14.1";
151099
- const DEFAULT_PNPM_VERSION = "10.12.0";
151100
151163
  function isPackageComplete(packageDir) {
151101
151164
  return (0, node_fs.existsSync)((0, node_path.join)(packageDir, "package.json"));
151102
151165
  }
@@ -151288,7 +151351,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
151288
151351
  const extension = isWindows ? "zip" : "tar.gz";
151289
151352
  const fileName = `node-v${version}-${platform === "osx" ? "darwin" : platform}-${arch}.${extension}`;
151290
151353
  const downloadUrl = `https://nodejs.org/dist/v${version}/${fileName}`;
151291
- const tempDir = await generateTempFolder((0, node_os.tmpdir)());
151354
+ const tempDir = await context.createTempFolder("node-download-");
151292
151355
  const archivePath = (0, node_path.join)(tempDir, fileName);
151293
151356
  sendStartupProgress(`Downloading Node.js v${version}...`);
151294
151357
  console.log(`Downloading Node.js from ${downloadUrl}...`);
@@ -151490,7 +151553,7 @@ async function resolveEntryPoint(packageDir, packageName) {
151490
151553
  }
151491
151554
  //#endregion
151492
151555
  //#region ../../packages/core-node/src/handler-func.ts
151493
- const { join: join$7 } = node_path.default;
151556
+ const { join: join$8 } = node_path.default;
151494
151557
  //#endregion
151495
151558
  //#region ../../packages/core-node/src/handlers/plugins.ts
151496
151559
  const localPluginsMap = /* @__PURE__ */ new Map();
@@ -151956,7 +152019,16 @@ var src_default = createNodeDefinition({
151956
152019
  node: exportProjectAction,
151957
152020
  runner: ExportProjectActionRunner
151958
152021
  }],
151959
- validators: []
152022
+ validators: [],
152023
+ integrations: [{
152024
+ name: "Browser Executable Link",
152025
+ fields: [{
152026
+ key: "path",
152027
+ label: "Browser Executable Path",
152028
+ type: "file",
152029
+ placeholder: "e.g., /usr/bin/google-chrome"
152030
+ }]
152031
+ }]
151960
152032
  });
151961
152033
  //#endregion
151962
152034
  module.exports = src_default;