dev-cockpit 0.2.9 → 0.3.0

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.js CHANGED
@@ -294,8 +294,8 @@ var require_req = __commonJS({
294
294
  if (req.originalUrl) {
295
295
  _req.url = req.originalUrl;
296
296
  } else {
297
- const path22 = req.path;
298
- _req.url = typeof path22 === "string" ? path22 : req.url ? req.url.path || req.url : void 0;
297
+ const path23 = req.path;
298
+ _req.url = typeof path23 === "string" ? path23 : req.url ? req.url.path || req.url : void 0;
299
299
  }
300
300
  if (req.query) {
301
301
  _req.query = req.query;
@@ -460,14 +460,14 @@ var require_redact = __commonJS({
460
460
  }
461
461
  return obj;
462
462
  }
463
- function parsePath(path22) {
463
+ function parsePath(path23) {
464
464
  const parts = [];
465
465
  let current = "";
466
466
  let inBrackets = false;
467
467
  let inQuotes = false;
468
468
  let quoteChar = "";
469
- for (let i2 = 0; i2 < path22.length; i2++) {
470
- const char = path22[i2];
469
+ for (let i2 = 0; i2 < path23.length; i2++) {
470
+ const char = path23[i2];
471
471
  if (!inBrackets && char === ".") {
472
472
  if (current) {
473
473
  parts.push(current);
@@ -598,10 +598,10 @@ var require_redact = __commonJS({
598
598
  return current;
599
599
  }
600
600
  function redactPaths(obj, paths, censor, remove = false) {
601
- for (const path22 of paths) {
602
- const parts = parsePath(path22);
601
+ for (const path23 of paths) {
602
+ const parts = parsePath(path23);
603
603
  if (parts.includes("*")) {
604
- redactWildcardPath(obj, parts, censor, path22, remove);
604
+ redactWildcardPath(obj, parts, censor, path23, remove);
605
605
  } else {
606
606
  if (remove) {
607
607
  removeKey(obj, parts);
@@ -686,8 +686,8 @@ var require_redact = __commonJS({
686
686
  }
687
687
  } else {
688
688
  if (afterWildcard.includes("*")) {
689
- const wrappedCensor = typeof censor === "function" ? (value, path22) => {
690
- const fullPath = [...pathArray.slice(0, pathLength), ...path22];
689
+ const wrappedCensor = typeof censor === "function" ? (value, path23) => {
690
+ const fullPath = [...pathArray.slice(0, pathLength), ...path23];
691
691
  return censor(value, fullPath);
692
692
  } : censor;
693
693
  redactWildcardPath(current, afterWildcard, wrappedCensor, originalPath, remove);
@@ -722,8 +722,8 @@ var require_redact = __commonJS({
722
722
  return null;
723
723
  }
724
724
  const pathStructure = /* @__PURE__ */ new Map();
725
- for (const path22 of pathsToClone) {
726
- const parts = parsePath(path22);
725
+ for (const path23 of pathsToClone) {
726
+ const parts = parsePath(path23);
727
727
  let current = pathStructure;
728
728
  for (let i2 = 0; i2 < parts.length; i2++) {
729
729
  const part = parts[i2];
@@ -775,24 +775,24 @@ var require_redact = __commonJS({
775
775
  }
776
776
  return cloneSelectively(obj, pathStructure);
777
777
  }
778
- function validatePath(path22) {
779
- if (typeof path22 !== "string") {
778
+ function validatePath(path23) {
779
+ if (typeof path23 !== "string") {
780
780
  throw new Error("Paths must be (non-empty) strings");
781
781
  }
782
- if (path22 === "") {
782
+ if (path23 === "") {
783
783
  throw new Error("Invalid redaction path ()");
784
784
  }
785
- if (path22.includes("..")) {
786
- throw new Error(`Invalid redaction path (${path22})`);
785
+ if (path23.includes("..")) {
786
+ throw new Error(`Invalid redaction path (${path23})`);
787
787
  }
788
- if (path22.includes(",")) {
789
- throw new Error(`Invalid redaction path (${path22})`);
788
+ if (path23.includes(",")) {
789
+ throw new Error(`Invalid redaction path (${path23})`);
790
790
  }
791
791
  let bracketCount = 0;
792
792
  let inQuotes = false;
793
793
  let quoteChar = "";
794
- for (let i2 = 0; i2 < path22.length; i2++) {
795
- const char = path22[i2];
794
+ for (let i2 = 0; i2 < path23.length; i2++) {
795
+ const char = path23[i2];
796
796
  if ((char === '"' || char === "'") && bracketCount > 0) {
797
797
  if (!inQuotes) {
798
798
  inQuotes = true;
@@ -806,20 +806,20 @@ var require_redact = __commonJS({
806
806
  } else if (char === "]" && !inQuotes) {
807
807
  bracketCount--;
808
808
  if (bracketCount < 0) {
809
- throw new Error(`Invalid redaction path (${path22})`);
809
+ throw new Error(`Invalid redaction path (${path23})`);
810
810
  }
811
811
  }
812
812
  }
813
813
  if (bracketCount !== 0) {
814
- throw new Error(`Invalid redaction path (${path22})`);
814
+ throw new Error(`Invalid redaction path (${path23})`);
815
815
  }
816
816
  }
817
817
  function validatePaths(paths) {
818
818
  if (!Array.isArray(paths)) {
819
819
  throw new TypeError("paths must be an array");
820
820
  }
821
- for (const path22 of paths) {
822
- validatePath(path22);
821
+ for (const path23 of paths) {
822
+ validatePath(path23);
823
823
  }
824
824
  }
825
825
  function slowRedact(options2 = {}) {
@@ -987,8 +987,8 @@ var require_redaction = __commonJS({
987
987
  if (shape[k] === null) {
988
988
  o2[k] = (value) => topCensor(value, [k]);
989
989
  } else {
990
- const wrappedCensor = typeof censor === "function" ? (value, path22) => {
991
- return censor(value, [k, ...path22]);
990
+ const wrappedCensor = typeof censor === "function" ? (value, path23) => {
991
+ return censor(value, [k, ...path23]);
992
992
  } : censor;
993
993
  o2[k] = Redact({
994
994
  paths: shape[k],
@@ -1209,7 +1209,7 @@ var require_sonic_boom = __commonJS({
1209
1209
  var fs18 = __require("fs");
1210
1210
  var EventEmitter3 = __require("events");
1211
1211
  var inherits = __require("util").inherits;
1212
- var path22 = __require("path");
1212
+ var path23 = __require("path");
1213
1213
  var sleep = require_atomic_sleep();
1214
1214
  var assert = __require("assert");
1215
1215
  var BUSY_WRITE_TIMEOUT = 100;
@@ -1263,7 +1263,7 @@ var require_sonic_boom = __commonJS({
1263
1263
  const mode = sonic.mode;
1264
1264
  if (sonic.sync) {
1265
1265
  try {
1266
- if (sonic.mkdir) fs18.mkdirSync(path22.dirname(file), { recursive: true });
1266
+ if (sonic.mkdir) fs18.mkdirSync(path23.dirname(file), { recursive: true });
1267
1267
  const fd = fs18.openSync(file, flags, mode);
1268
1268
  fileOpened(null, fd);
1269
1269
  } catch (err) {
@@ -1271,7 +1271,7 @@ var require_sonic_boom = __commonJS({
1271
1271
  throw err;
1272
1272
  }
1273
1273
  } else if (sonic.mkdir) {
1274
- fs18.mkdir(path22.dirname(file), { recursive: true }, (err) => {
1274
+ fs18.mkdir(path23.dirname(file), { recursive: true }, (err) => {
1275
1275
  if (err) return fileOpened(err);
1276
1276
  fs18.open(file, flags, mode, fileOpened);
1277
1277
  });
@@ -4342,7 +4342,7 @@ var require_windows = __commonJS({
4342
4342
  module.exports = isexe;
4343
4343
  isexe.sync = sync;
4344
4344
  var fs18 = __require("fs");
4345
- function checkPathExt(path22, options2) {
4345
+ function checkPathExt(path23, options2) {
4346
4346
  var pathext = options2.pathExt !== void 0 ? options2.pathExt : process.env.PATHEXT;
4347
4347
  if (!pathext) {
4348
4348
  return true;
@@ -4353,25 +4353,25 @@ var require_windows = __commonJS({
4353
4353
  }
4354
4354
  for (var i2 = 0; i2 < pathext.length; i2++) {
4355
4355
  var p = pathext[i2].toLowerCase();
4356
- if (p && path22.substr(-p.length).toLowerCase() === p) {
4356
+ if (p && path23.substr(-p.length).toLowerCase() === p) {
4357
4357
  return true;
4358
4358
  }
4359
4359
  }
4360
4360
  return false;
4361
4361
  }
4362
- function checkStat(stat4, path22, options2) {
4362
+ function checkStat(stat4, path23, options2) {
4363
4363
  if (!stat4.isSymbolicLink() && !stat4.isFile()) {
4364
4364
  return false;
4365
4365
  }
4366
- return checkPathExt(path22, options2);
4366
+ return checkPathExt(path23, options2);
4367
4367
  }
4368
- function isexe(path22, options2, cb) {
4369
- fs18.stat(path22, function(er, stat4) {
4370
- cb(er, er ? false : checkStat(stat4, path22, options2));
4368
+ function isexe(path23, options2, cb) {
4369
+ fs18.stat(path23, function(er, stat4) {
4370
+ cb(er, er ? false : checkStat(stat4, path23, options2));
4371
4371
  });
4372
4372
  }
4373
- function sync(path22, options2) {
4374
- return checkStat(fs18.statSync(path22), path22, options2);
4373
+ function sync(path23, options2) {
4374
+ return checkStat(fs18.statSync(path23), path23, options2);
4375
4375
  }
4376
4376
  }
4377
4377
  });
@@ -4382,13 +4382,13 @@ var require_mode = __commonJS({
4382
4382
  module.exports = isexe;
4383
4383
  isexe.sync = sync;
4384
4384
  var fs18 = __require("fs");
4385
- function isexe(path22, options2, cb) {
4386
- fs18.stat(path22, function(er, stat4) {
4385
+ function isexe(path23, options2, cb) {
4386
+ fs18.stat(path23, function(er, stat4) {
4387
4387
  cb(er, er ? false : checkStat(stat4, options2));
4388
4388
  });
4389
4389
  }
4390
- function sync(path22, options2) {
4391
- return checkStat(fs18.statSync(path22), options2);
4390
+ function sync(path23, options2) {
4391
+ return checkStat(fs18.statSync(path23), options2);
4392
4392
  }
4393
4393
  function checkStat(stat4, options2) {
4394
4394
  return stat4.isFile() && checkMode(stat4, options2);
@@ -4421,7 +4421,7 @@ var require_isexe = __commonJS({
4421
4421
  }
4422
4422
  module.exports = isexe;
4423
4423
  isexe.sync = sync;
4424
- function isexe(path22, options2, cb) {
4424
+ function isexe(path23, options2, cb) {
4425
4425
  if (typeof options2 === "function") {
4426
4426
  cb = options2;
4427
4427
  options2 = {};
@@ -4431,7 +4431,7 @@ var require_isexe = __commonJS({
4431
4431
  throw new TypeError("callback not provided");
4432
4432
  }
4433
4433
  return new Promise(function(resolve3, reject) {
4434
- isexe(path22, options2 || {}, function(er, is) {
4434
+ isexe(path23, options2 || {}, function(er, is) {
4435
4435
  if (er) {
4436
4436
  reject(er);
4437
4437
  } else {
@@ -4440,7 +4440,7 @@ var require_isexe = __commonJS({
4440
4440
  });
4441
4441
  });
4442
4442
  }
4443
- core(path22, options2 || {}, function(er, is) {
4443
+ core(path23, options2 || {}, function(er, is) {
4444
4444
  if (er) {
4445
4445
  if (er.code === "EACCES" || options2 && options2.ignoreErrors) {
4446
4446
  er = null;
@@ -4450,9 +4450,9 @@ var require_isexe = __commonJS({
4450
4450
  cb(er, is);
4451
4451
  });
4452
4452
  }
4453
- function sync(path22, options2) {
4453
+ function sync(path23, options2) {
4454
4454
  try {
4455
- return core.sync(path22, options2 || {});
4455
+ return core.sync(path23, options2 || {});
4456
4456
  } catch (er) {
4457
4457
  if (options2 && options2.ignoreErrors || er.code === "EACCES") {
4458
4458
  return false;
@@ -4468,7 +4468,7 @@ var require_isexe = __commonJS({
4468
4468
  var require_which = __commonJS({
4469
4469
  "node_modules/which/which.js"(exports, module) {
4470
4470
  var isWindows2 = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
4471
- var path22 = __require("path");
4471
+ var path23 = __require("path");
4472
4472
  var COLON = isWindows2 ? ";" : ":";
4473
4473
  var isexe = require_isexe();
4474
4474
  var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
@@ -4506,7 +4506,7 @@ var require_which = __commonJS({
4506
4506
  return opt.all && found.length ? resolve3(found) : reject(getNotFoundError(cmd));
4507
4507
  const ppRaw = pathEnv[i2];
4508
4508
  const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
4509
- const pCmd = path22.join(pathPart, cmd);
4509
+ const pCmd = path23.join(pathPart, cmd);
4510
4510
  const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
4511
4511
  resolve3(subStep(p, i2, 0));
4512
4512
  });
@@ -4533,7 +4533,7 @@ var require_which = __commonJS({
4533
4533
  for (let i2 = 0; i2 < pathEnv.length; i2++) {
4534
4534
  const ppRaw = pathEnv[i2];
4535
4535
  const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
4536
- const pCmd = path22.join(pathPart, cmd);
4536
+ const pCmd = path23.join(pathPart, cmd);
4537
4537
  const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
4538
4538
  for (let j = 0; j < pathExt.length; j++) {
4539
4539
  const cur = p + pathExt[j];
@@ -4581,7 +4581,7 @@ var require_path_key = __commonJS({
4581
4581
  var require_resolveCommand = __commonJS({
4582
4582
  "node_modules/cross-spawn/lib/util/resolveCommand.js"(exports, module) {
4583
4583
  "use strict";
4584
- var path22 = __require("path");
4584
+ var path23 = __require("path");
4585
4585
  var which = require_which();
4586
4586
  var getPathKey = require_path_key();
4587
4587
  function resolveCommandAttempt(parsed, withoutPathExt) {
@@ -4599,7 +4599,7 @@ var require_resolveCommand = __commonJS({
4599
4599
  try {
4600
4600
  resolved = which.sync(parsed.command, {
4601
4601
  path: env[getPathKey({ env })],
4602
- pathExt: withoutPathExt ? path22.delimiter : void 0
4602
+ pathExt: withoutPathExt ? path23.delimiter : void 0
4603
4603
  });
4604
4604
  } catch (e) {
4605
4605
  } finally {
@@ -4608,7 +4608,7 @@ var require_resolveCommand = __commonJS({
4608
4608
  }
4609
4609
  }
4610
4610
  if (resolved) {
4611
- resolved = path22.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved);
4611
+ resolved = path23.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved);
4612
4612
  }
4613
4613
  return resolved;
4614
4614
  }
@@ -4662,8 +4662,8 @@ var require_shebang_command = __commonJS({
4662
4662
  if (!match) {
4663
4663
  return null;
4664
4664
  }
4665
- const [path22, argument] = match[0].replace(/#! ?/, "").split(" ");
4666
- const binary = path22.split("/").pop();
4665
+ const [path23, argument] = match[0].replace(/#! ?/, "").split(" ");
4666
+ const binary = path23.split("/").pop();
4667
4667
  if (binary === "env") {
4668
4668
  return argument;
4669
4669
  }
@@ -4698,7 +4698,7 @@ var require_readShebang = __commonJS({
4698
4698
  var require_parse = __commonJS({
4699
4699
  "node_modules/cross-spawn/lib/parse.js"(exports, module) {
4700
4700
  "use strict";
4701
- var path22 = __require("path");
4701
+ var path23 = __require("path");
4702
4702
  var resolveCommand = require_resolveCommand();
4703
4703
  var escape3 = require_escape();
4704
4704
  var readShebang = require_readShebang();
@@ -4723,7 +4723,7 @@ var require_parse = __commonJS({
4723
4723
  const needsShell = !isExecutableRegExp.test(commandFile);
4724
4724
  if (parsed.options.forceShell || needsShell) {
4725
4725
  const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);
4726
- parsed.command = path22.normalize(parsed.command);
4726
+ parsed.command = path23.normalize(parsed.command);
4727
4727
  parsed.command = escape3.command(parsed.command);
4728
4728
  parsed.args = parsed.args.map((arg) => escape3.argument(arg, needsDoubleEscapeMetaChars));
4729
4729
  const shellCommand = [parsed.command].concat(parsed.args).join(" ");
@@ -4910,17 +4910,17 @@ var require_visit = __commonJS({
4910
4910
  visit.BREAK = BREAK;
4911
4911
  visit.SKIP = SKIP;
4912
4912
  visit.REMOVE = REMOVE;
4913
- function visit_(key, node, visitor, path22) {
4914
- const ctrl = callVisitor(key, node, visitor, path22);
4913
+ function visit_(key, node, visitor, path23) {
4914
+ const ctrl = callVisitor(key, node, visitor, path23);
4915
4915
  if (identity4.isNode(ctrl) || identity4.isPair(ctrl)) {
4916
- replaceNode(key, path22, ctrl);
4917
- return visit_(key, ctrl, visitor, path22);
4916
+ replaceNode(key, path23, ctrl);
4917
+ return visit_(key, ctrl, visitor, path23);
4918
4918
  }
4919
4919
  if (typeof ctrl !== "symbol") {
4920
4920
  if (identity4.isCollection(node)) {
4921
- path22 = Object.freeze(path22.concat(node));
4921
+ path23 = Object.freeze(path23.concat(node));
4922
4922
  for (let i2 = 0; i2 < node.items.length; ++i2) {
4923
- const ci = visit_(i2, node.items[i2], visitor, path22);
4923
+ const ci = visit_(i2, node.items[i2], visitor, path23);
4924
4924
  if (typeof ci === "number")
4925
4925
  i2 = ci - 1;
4926
4926
  else if (ci === BREAK)
@@ -4931,13 +4931,13 @@ var require_visit = __commonJS({
4931
4931
  }
4932
4932
  }
4933
4933
  } else if (identity4.isPair(node)) {
4934
- path22 = Object.freeze(path22.concat(node));
4935
- const ck = visit_("key", node.key, visitor, path22);
4934
+ path23 = Object.freeze(path23.concat(node));
4935
+ const ck = visit_("key", node.key, visitor, path23);
4936
4936
  if (ck === BREAK)
4937
4937
  return BREAK;
4938
4938
  else if (ck === REMOVE)
4939
4939
  node.key = null;
4940
- const cv = visit_("value", node.value, visitor, path22);
4940
+ const cv = visit_("value", node.value, visitor, path23);
4941
4941
  if (cv === BREAK)
4942
4942
  return BREAK;
4943
4943
  else if (cv === REMOVE)
@@ -4958,17 +4958,17 @@ var require_visit = __commonJS({
4958
4958
  visitAsync.BREAK = BREAK;
4959
4959
  visitAsync.SKIP = SKIP;
4960
4960
  visitAsync.REMOVE = REMOVE;
4961
- async function visitAsync_(key, node, visitor, path22) {
4962
- const ctrl = await callVisitor(key, node, visitor, path22);
4961
+ async function visitAsync_(key, node, visitor, path23) {
4962
+ const ctrl = await callVisitor(key, node, visitor, path23);
4963
4963
  if (identity4.isNode(ctrl) || identity4.isPair(ctrl)) {
4964
- replaceNode(key, path22, ctrl);
4965
- return visitAsync_(key, ctrl, visitor, path22);
4964
+ replaceNode(key, path23, ctrl);
4965
+ return visitAsync_(key, ctrl, visitor, path23);
4966
4966
  }
4967
4967
  if (typeof ctrl !== "symbol") {
4968
4968
  if (identity4.isCollection(node)) {
4969
- path22 = Object.freeze(path22.concat(node));
4969
+ path23 = Object.freeze(path23.concat(node));
4970
4970
  for (let i2 = 0; i2 < node.items.length; ++i2) {
4971
- const ci = await visitAsync_(i2, node.items[i2], visitor, path22);
4971
+ const ci = await visitAsync_(i2, node.items[i2], visitor, path23);
4972
4972
  if (typeof ci === "number")
4973
4973
  i2 = ci - 1;
4974
4974
  else if (ci === BREAK)
@@ -4979,13 +4979,13 @@ var require_visit = __commonJS({
4979
4979
  }
4980
4980
  }
4981
4981
  } else if (identity4.isPair(node)) {
4982
- path22 = Object.freeze(path22.concat(node));
4983
- const ck = await visitAsync_("key", node.key, visitor, path22);
4982
+ path23 = Object.freeze(path23.concat(node));
4983
+ const ck = await visitAsync_("key", node.key, visitor, path23);
4984
4984
  if (ck === BREAK)
4985
4985
  return BREAK;
4986
4986
  else if (ck === REMOVE)
4987
4987
  node.key = null;
4988
- const cv = await visitAsync_("value", node.value, visitor, path22);
4988
+ const cv = await visitAsync_("value", node.value, visitor, path23);
4989
4989
  if (cv === BREAK)
4990
4990
  return BREAK;
4991
4991
  else if (cv === REMOVE)
@@ -5012,23 +5012,23 @@ var require_visit = __commonJS({
5012
5012
  }
5013
5013
  return visitor;
5014
5014
  }
5015
- function callVisitor(key, node, visitor, path22) {
5015
+ function callVisitor(key, node, visitor, path23) {
5016
5016
  if (typeof visitor === "function")
5017
- return visitor(key, node, path22);
5017
+ return visitor(key, node, path23);
5018
5018
  if (identity4.isMap(node))
5019
- return visitor.Map?.(key, node, path22);
5019
+ return visitor.Map?.(key, node, path23);
5020
5020
  if (identity4.isSeq(node))
5021
- return visitor.Seq?.(key, node, path22);
5021
+ return visitor.Seq?.(key, node, path23);
5022
5022
  if (identity4.isPair(node))
5023
- return visitor.Pair?.(key, node, path22);
5023
+ return visitor.Pair?.(key, node, path23);
5024
5024
  if (identity4.isScalar(node))
5025
- return visitor.Scalar?.(key, node, path22);
5025
+ return visitor.Scalar?.(key, node, path23);
5026
5026
  if (identity4.isAlias(node))
5027
- return visitor.Alias?.(key, node, path22);
5027
+ return visitor.Alias?.(key, node, path23);
5028
5028
  return void 0;
5029
5029
  }
5030
- function replaceNode(key, path22, node) {
5031
- const parent = path22[path22.length - 1];
5030
+ function replaceNode(key, path23, node) {
5031
+ const parent = path23[path23.length - 1];
5032
5032
  if (identity4.isCollection(parent)) {
5033
5033
  parent.items[key] = node;
5034
5034
  } else if (identity4.isPair(parent)) {
@@ -5638,10 +5638,10 @@ var require_Collection = __commonJS({
5638
5638
  var createNode = require_createNode();
5639
5639
  var identity4 = require_identity();
5640
5640
  var Node = require_Node();
5641
- function collectionFromPath(schema, path22, value) {
5641
+ function collectionFromPath(schema, path23, value) {
5642
5642
  let v = value;
5643
- for (let i2 = path22.length - 1; i2 >= 0; --i2) {
5644
- const k = path22[i2];
5643
+ for (let i2 = path23.length - 1; i2 >= 0; --i2) {
5644
+ const k = path23[i2];
5645
5645
  if (typeof k === "number" && Number.isInteger(k) && k >= 0) {
5646
5646
  const a2 = [];
5647
5647
  a2[k] = v;
@@ -5660,7 +5660,7 @@ var require_Collection = __commonJS({
5660
5660
  sourceObjects: /* @__PURE__ */ new Map()
5661
5661
  });
5662
5662
  }
5663
- var isEmptyPath = (path22) => path22 == null || typeof path22 === "object" && !!path22[Symbol.iterator]().next().done;
5663
+ var isEmptyPath = (path23) => path23 == null || typeof path23 === "object" && !!path23[Symbol.iterator]().next().done;
5664
5664
  var Collection = class extends Node.NodeBase {
5665
5665
  constructor(type, schema) {
5666
5666
  super(type);
@@ -5690,11 +5690,11 @@ var require_Collection = __commonJS({
5690
5690
  * be a Pair instance or a `{ key, value }` object, which may not have a key
5691
5691
  * that already exists in the map.
5692
5692
  */
5693
- addIn(path22, value) {
5694
- if (isEmptyPath(path22))
5693
+ addIn(path23, value) {
5694
+ if (isEmptyPath(path23))
5695
5695
  this.add(value);
5696
5696
  else {
5697
- const [key, ...rest] = path22;
5697
+ const [key, ...rest] = path23;
5698
5698
  const node = this.get(key, true);
5699
5699
  if (identity4.isCollection(node))
5700
5700
  node.addIn(rest, value);
@@ -5708,8 +5708,8 @@ var require_Collection = __commonJS({
5708
5708
  * Removes a value from the collection.
5709
5709
  * @returns `true` if the item was found and removed.
5710
5710
  */
5711
- deleteIn(path22) {
5712
- const [key, ...rest] = path22;
5711
+ deleteIn(path23) {
5712
+ const [key, ...rest] = path23;
5713
5713
  if (rest.length === 0)
5714
5714
  return this.delete(key);
5715
5715
  const node = this.get(key, true);
@@ -5723,8 +5723,8 @@ var require_Collection = __commonJS({
5723
5723
  * scalar values from their surrounding node; to disable set `keepScalar` to
5724
5724
  * `true` (collections are always returned intact).
5725
5725
  */
5726
- getIn(path22, keepScalar) {
5727
- const [key, ...rest] = path22;
5726
+ getIn(path23, keepScalar) {
5727
+ const [key, ...rest] = path23;
5728
5728
  const node = this.get(key, true);
5729
5729
  if (rest.length === 0)
5730
5730
  return !keepScalar && identity4.isScalar(node) ? node.value : node;
@@ -5742,8 +5742,8 @@ var require_Collection = __commonJS({
5742
5742
  /**
5743
5743
  * Checks if the collection includes a value with the key `key`.
5744
5744
  */
5745
- hasIn(path22) {
5746
- const [key, ...rest] = path22;
5745
+ hasIn(path23) {
5746
+ const [key, ...rest] = path23;
5747
5747
  if (rest.length === 0)
5748
5748
  return this.has(key);
5749
5749
  const node = this.get(key, true);
@@ -5753,8 +5753,8 @@ var require_Collection = __commonJS({
5753
5753
  * Sets a value in this collection. For `!!set`, `value` needs to be a
5754
5754
  * boolean to add/remove the item from the set.
5755
5755
  */
5756
- setIn(path22, value) {
5757
- const [key, ...rest] = path22;
5756
+ setIn(path23, value) {
5757
+ const [key, ...rest] = path23;
5758
5758
  if (rest.length === 0) {
5759
5759
  this.set(key, value);
5760
5760
  } else {
@@ -8269,9 +8269,9 @@ var require_Document = __commonJS({
8269
8269
  this.contents.add(value);
8270
8270
  }
8271
8271
  /** Adds a value to the document. */
8272
- addIn(path22, value) {
8272
+ addIn(path23, value) {
8273
8273
  if (assertCollection(this.contents))
8274
- this.contents.addIn(path22, value);
8274
+ this.contents.addIn(path23, value);
8275
8275
  }
8276
8276
  /**
8277
8277
  * Create a new `Alias` node, ensuring that the target `node` has the required anchor.
@@ -8346,14 +8346,14 @@ var require_Document = __commonJS({
8346
8346
  * Removes a value from the document.
8347
8347
  * @returns `true` if the item was found and removed.
8348
8348
  */
8349
- deleteIn(path22) {
8350
- if (Collection.isEmptyPath(path22)) {
8349
+ deleteIn(path23) {
8350
+ if (Collection.isEmptyPath(path23)) {
8351
8351
  if (this.contents == null)
8352
8352
  return false;
8353
8353
  this.contents = null;
8354
8354
  return true;
8355
8355
  }
8356
- return assertCollection(this.contents) ? this.contents.deleteIn(path22) : false;
8356
+ return assertCollection(this.contents) ? this.contents.deleteIn(path23) : false;
8357
8357
  }
8358
8358
  /**
8359
8359
  * Returns item at `key`, or `undefined` if not found. By default unwraps
@@ -8368,10 +8368,10 @@ var require_Document = __commonJS({
8368
8368
  * scalar values from their surrounding node; to disable set `keepScalar` to
8369
8369
  * `true` (collections are always returned intact).
8370
8370
  */
8371
- getIn(path22, keepScalar) {
8372
- if (Collection.isEmptyPath(path22))
8371
+ getIn(path23, keepScalar) {
8372
+ if (Collection.isEmptyPath(path23))
8373
8373
  return !keepScalar && identity4.isScalar(this.contents) ? this.contents.value : this.contents;
8374
- return identity4.isCollection(this.contents) ? this.contents.getIn(path22, keepScalar) : void 0;
8374
+ return identity4.isCollection(this.contents) ? this.contents.getIn(path23, keepScalar) : void 0;
8375
8375
  }
8376
8376
  /**
8377
8377
  * Checks if the document includes a value with the key `key`.
@@ -8382,10 +8382,10 @@ var require_Document = __commonJS({
8382
8382
  /**
8383
8383
  * Checks if the document includes a value at `path`.
8384
8384
  */
8385
- hasIn(path22) {
8386
- if (Collection.isEmptyPath(path22))
8385
+ hasIn(path23) {
8386
+ if (Collection.isEmptyPath(path23))
8387
8387
  return this.contents !== void 0;
8388
- return identity4.isCollection(this.contents) ? this.contents.hasIn(path22) : false;
8388
+ return identity4.isCollection(this.contents) ? this.contents.hasIn(path23) : false;
8389
8389
  }
8390
8390
  /**
8391
8391
  * Sets a value in this document. For `!!set`, `value` needs to be a
@@ -8402,13 +8402,13 @@ var require_Document = __commonJS({
8402
8402
  * Sets a value in this document. For `!!set`, `value` needs to be a
8403
8403
  * boolean to add/remove the item from the set.
8404
8404
  */
8405
- setIn(path22, value) {
8406
- if (Collection.isEmptyPath(path22)) {
8405
+ setIn(path23, value) {
8406
+ if (Collection.isEmptyPath(path23)) {
8407
8407
  this.contents = value;
8408
8408
  } else if (this.contents == null) {
8409
- this.contents = Collection.collectionFromPath(this.schema, Array.from(path22), value);
8409
+ this.contents = Collection.collectionFromPath(this.schema, Array.from(path23), value);
8410
8410
  } else if (assertCollection(this.contents)) {
8411
- this.contents.setIn(path22, value);
8411
+ this.contents.setIn(path23, value);
8412
8412
  }
8413
8413
  }
8414
8414
  /**
@@ -10366,9 +10366,9 @@ var require_cst_visit = __commonJS({
10366
10366
  visit.BREAK = BREAK;
10367
10367
  visit.SKIP = SKIP;
10368
10368
  visit.REMOVE = REMOVE;
10369
- visit.itemAtPath = (cst, path22) => {
10369
+ visit.itemAtPath = (cst, path23) => {
10370
10370
  let item = cst;
10371
- for (const [field, index] of path22) {
10371
+ for (const [field, index] of path23) {
10372
10372
  const tok = item?.[field];
10373
10373
  if (tok && "items" in tok) {
10374
10374
  item = tok.items[index];
@@ -10377,23 +10377,23 @@ var require_cst_visit = __commonJS({
10377
10377
  }
10378
10378
  return item;
10379
10379
  };
10380
- visit.parentCollection = (cst, path22) => {
10381
- const parent = visit.itemAtPath(cst, path22.slice(0, -1));
10382
- const field = path22[path22.length - 1][0];
10380
+ visit.parentCollection = (cst, path23) => {
10381
+ const parent = visit.itemAtPath(cst, path23.slice(0, -1));
10382
+ const field = path23[path23.length - 1][0];
10383
10383
  const coll = parent?.[field];
10384
10384
  if (coll && "items" in coll)
10385
10385
  return coll;
10386
10386
  throw new Error("Parent collection not found");
10387
10387
  };
10388
- function _visit(path22, item, visitor) {
10389
- let ctrl = visitor(item, path22);
10388
+ function _visit(path23, item, visitor) {
10389
+ let ctrl = visitor(item, path23);
10390
10390
  if (typeof ctrl === "symbol")
10391
10391
  return ctrl;
10392
10392
  for (const field of ["key", "value"]) {
10393
10393
  const token = item[field];
10394
10394
  if (token && "items" in token) {
10395
10395
  for (let i2 = 0; i2 < token.items.length; ++i2) {
10396
- const ci = _visit(Object.freeze(path22.concat([[field, i2]])), token.items[i2], visitor);
10396
+ const ci = _visit(Object.freeze(path23.concat([[field, i2]])), token.items[i2], visitor);
10397
10397
  if (typeof ci === "number")
10398
10398
  i2 = ci - 1;
10399
10399
  else if (ci === BREAK)
@@ -10404,10 +10404,10 @@ var require_cst_visit = __commonJS({
10404
10404
  }
10405
10405
  }
10406
10406
  if (typeof ctrl === "function" && field === "key")
10407
- ctrl = ctrl(item, path22);
10407
+ ctrl = ctrl(item, path23);
10408
10408
  }
10409
10409
  }
10410
- return typeof ctrl === "function" ? ctrl(item, path22) : ctrl;
10410
+ return typeof ctrl === "function" ? ctrl(item, path23) : ctrl;
10411
10411
  }
10412
10412
  exports.visit = visit;
10413
10413
  }
@@ -13074,7 +13074,7 @@ var require_command = __commonJS({
13074
13074
  "node_modules/commander/lib/command.js"(exports) {
13075
13075
  var EventEmitter3 = __require("node:events").EventEmitter;
13076
13076
  var childProcess = __require("node:child_process");
13077
- var path22 = __require("node:path");
13077
+ var path23 = __require("node:path");
13078
13078
  var fs18 = __require("node:fs");
13079
13079
  var process10 = __require("node:process");
13080
13080
  var { Argument: Argument2, humanReadableArgName } = require_argument();
@@ -14007,9 +14007,9 @@ Expecting one of '${allowedValues.join("', '")}'`);
14007
14007
  let launchWithNode = false;
14008
14008
  const sourceExt = [".js", ".ts", ".tsx", ".mjs", ".cjs"];
14009
14009
  function findFile(baseDir, baseName) {
14010
- const localBin = path22.resolve(baseDir, baseName);
14010
+ const localBin = path23.resolve(baseDir, baseName);
14011
14011
  if (fs18.existsSync(localBin)) return localBin;
14012
- if (sourceExt.includes(path22.extname(baseName))) return void 0;
14012
+ if (sourceExt.includes(path23.extname(baseName))) return void 0;
14013
14013
  const foundExt = sourceExt.find(
14014
14014
  (ext) => fs18.existsSync(`${localBin}${ext}`)
14015
14015
  );
@@ -14027,17 +14027,17 @@ Expecting one of '${allowedValues.join("', '")}'`);
14027
14027
  } catch (err) {
14028
14028
  resolvedScriptPath = this._scriptPath;
14029
14029
  }
14030
- executableDir = path22.resolve(
14031
- path22.dirname(resolvedScriptPath),
14030
+ executableDir = path23.resolve(
14031
+ path23.dirname(resolvedScriptPath),
14032
14032
  executableDir
14033
14033
  );
14034
14034
  }
14035
14035
  if (executableDir) {
14036
14036
  let localFile = findFile(executableDir, executableFile);
14037
14037
  if (!localFile && !subcommand._executableFile && this._scriptPath) {
14038
- const legacyName = path22.basename(
14038
+ const legacyName = path23.basename(
14039
14039
  this._scriptPath,
14040
- path22.extname(this._scriptPath)
14040
+ path23.extname(this._scriptPath)
14041
14041
  );
14042
14042
  if (legacyName !== this._name) {
14043
14043
  localFile = findFile(
@@ -14048,7 +14048,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
14048
14048
  }
14049
14049
  executableFile = localFile || executableFile;
14050
14050
  }
14051
- launchWithNode = sourceExt.includes(path22.extname(executableFile));
14051
+ launchWithNode = sourceExt.includes(path23.extname(executableFile));
14052
14052
  let proc;
14053
14053
  if (process10.platform !== "win32") {
14054
14054
  if (launchWithNode) {
@@ -14888,7 +14888,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
14888
14888
  * @return {Command}
14889
14889
  */
14890
14890
  nameFromFilename(filename) {
14891
- this._name = path22.basename(filename, path22.extname(filename));
14891
+ this._name = path23.basename(filename, path23.extname(filename));
14892
14892
  return this;
14893
14893
  }
14894
14894
  /**
@@ -14902,9 +14902,9 @@ Expecting one of '${allowedValues.join("', '")}'`);
14902
14902
  * @param {string} [path]
14903
14903
  * @return {(string|null|Command)}
14904
14904
  */
14905
- executableDir(path23) {
14906
- if (path23 === void 0) return this._executableDir;
14907
- this._executableDir = path23;
14905
+ executableDir(path24) {
14906
+ if (path24 === void 0) return this._executableDir;
14907
+ this._executableDir = path24;
14908
14908
  return this;
14909
14909
  }
14910
14910
  /**
@@ -60073,15 +60073,15 @@ var require_route = __commonJS({
60073
60073
  };
60074
60074
  }
60075
60075
  function wrapConversion(toModel, graph) {
60076
- const path22 = [graph[toModel].parent, toModel];
60076
+ const path23 = [graph[toModel].parent, toModel];
60077
60077
  let fn = conversions[graph[toModel].parent][toModel];
60078
60078
  let cur = graph[toModel].parent;
60079
60079
  while (graph[cur].parent) {
60080
- path22.unshift(graph[cur].parent);
60080
+ path23.unshift(graph[cur].parent);
60081
60081
  fn = link2(conversions[graph[cur].parent][cur], fn);
60082
60082
  cur = graph[cur].parent;
60083
60083
  }
60084
- fn.conversion = path22;
60084
+ fn.conversion = path23;
60085
60085
  return fn;
60086
60086
  }
60087
60087
  module.exports = function(fromModel) {
@@ -77216,13 +77216,13 @@ var logOutputSync = ({ serializedResult, fdNumber, state, verboseInfo, encoding,
77216
77216
  }
77217
77217
  };
77218
77218
  var writeToFiles = (serializedResult, stdioItems, outputFiles) => {
77219
- for (const { path: path22, append } of stdioItems.filter(({ type }) => FILE_TYPES.has(type))) {
77220
- const pathString = typeof path22 === "string" ? path22 : path22.toString();
77219
+ for (const { path: path23, append } of stdioItems.filter(({ type }) => FILE_TYPES.has(type))) {
77220
+ const pathString = typeof path23 === "string" ? path23 : path23.toString();
77221
77221
  if (append || outputFiles.has(pathString)) {
77222
- appendFileSync(path22, serializedResult);
77222
+ appendFileSync(path23, serializedResult);
77223
77223
  } else {
77224
77224
  outputFiles.add(pathString);
77225
- writeFileSync(path22, serializedResult);
77225
+ writeFileSync(path23, serializedResult);
77226
77226
  }
77227
77227
  }
77228
77228
  };
@@ -80300,8 +80300,8 @@ function getErrorMap() {
80300
80300
 
80301
80301
  // node_modules/zod/v3/helpers/parseUtil.js
80302
80302
  var makeIssue = (params) => {
80303
- const { data, path: path22, errorMaps, issueData } = params;
80304
- const fullPath = [...path22, ...issueData.path || []];
80303
+ const { data, path: path23, errorMaps, issueData } = params;
80304
+ const fullPath = [...path23, ...issueData.path || []];
80305
80305
  const fullIssue = {
80306
80306
  ...issueData,
80307
80307
  path: fullPath
@@ -80417,11 +80417,11 @@ var errorUtil;
80417
80417
 
80418
80418
  // node_modules/zod/v3/types.js
80419
80419
  var ParseInputLazyPath = class {
80420
- constructor(parent, value, path22, key) {
80420
+ constructor(parent, value, path23, key) {
80421
80421
  this._cachedPath = [];
80422
80422
  this.parent = parent;
80423
80423
  this.data = value;
80424
- this._path = path22;
80424
+ this._path = path23;
80425
80425
  this._key = key;
80426
80426
  }
80427
80427
  get path() {
@@ -88837,7 +88837,7 @@ var ReaddirpStream = class extends Readable4 {
88837
88837
  this._directoryFilter = normalizeFilter(opts.directoryFilter);
88838
88838
  const statMethod = opts.lstat ? lstat : stat;
88839
88839
  if (wantBigintFsStats) {
88840
- this._stat = (path22) => statMethod(path22, { bigint: true });
88840
+ this._stat = (path23) => statMethod(path23, { bigint: true });
88841
88841
  } else {
88842
88842
  this._stat = statMethod;
88843
88843
  }
@@ -88862,8 +88862,8 @@ var ReaddirpStream = class extends Readable4 {
88862
88862
  const par = this.parent;
88863
88863
  const fil = par && par.files;
88864
88864
  if (fil && fil.length > 0) {
88865
- const { path: path22, depth } = par;
88866
- const slice = fil.splice(0, batch).map((dirent) => this._formatEntry(dirent, path22));
88865
+ const { path: path23, depth } = par;
88866
+ const slice = fil.splice(0, batch).map((dirent) => this._formatEntry(dirent, path23));
88867
88867
  const awaited = await Promise.all(slice);
88868
88868
  for (const entry of awaited) {
88869
88869
  if (!entry)
@@ -88903,20 +88903,20 @@ var ReaddirpStream = class extends Readable4 {
88903
88903
  this.reading = false;
88904
88904
  }
88905
88905
  }
88906
- async _exploreDir(path22, depth) {
88906
+ async _exploreDir(path23, depth) {
88907
88907
  let files;
88908
88908
  try {
88909
- files = await readdir(path22, this._rdOptions);
88909
+ files = await readdir(path23, this._rdOptions);
88910
88910
  } catch (error) {
88911
88911
  this._onError(error);
88912
88912
  }
88913
- return { files, depth, path: path22 };
88913
+ return { files, depth, path: path23 };
88914
88914
  }
88915
- async _formatEntry(dirent, path22) {
88915
+ async _formatEntry(dirent, path23) {
88916
88916
  let entry;
88917
88917
  const basename3 = this._isDirent ? dirent.name : dirent;
88918
88918
  try {
88919
- const fullPath = presolve(pjoin(path22, basename3));
88919
+ const fullPath = presolve(pjoin(path23, basename3));
88920
88920
  entry = { path: prelative(this._root, fullPath), fullPath, basename: basename3 };
88921
88921
  entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);
88922
88922
  } catch (err) {
@@ -89316,16 +89316,16 @@ var delFromSet = (main, prop, item) => {
89316
89316
  };
89317
89317
  var isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;
89318
89318
  var FsWatchInstances = /* @__PURE__ */ new Map();
89319
- function createFsWatchInstance(path22, options2, listener, errHandler, emitRaw) {
89319
+ function createFsWatchInstance(path23, options2, listener, errHandler, emitRaw) {
89320
89320
  const handleEvent = (rawEvent, evPath) => {
89321
- listener(path22);
89322
- emitRaw(rawEvent, evPath, { watchedPath: path22 });
89323
- if (evPath && path22 !== evPath) {
89324
- fsWatchBroadcast(sp.resolve(path22, evPath), KEY_LISTENERS, sp.join(path22, evPath));
89321
+ listener(path23);
89322
+ emitRaw(rawEvent, evPath, { watchedPath: path23 });
89323
+ if (evPath && path23 !== evPath) {
89324
+ fsWatchBroadcast(sp.resolve(path23, evPath), KEY_LISTENERS, sp.join(path23, evPath));
89325
89325
  }
89326
89326
  };
89327
89327
  try {
89328
- return fs_watch(path22, {
89328
+ return fs_watch(path23, {
89329
89329
  persistent: options2.persistent
89330
89330
  }, handleEvent);
89331
89331
  } catch (error) {
@@ -89341,12 +89341,12 @@ var fsWatchBroadcast = (fullPath, listenerType, val1, val2, val3) => {
89341
89341
  listener(val1, val2, val3);
89342
89342
  });
89343
89343
  };
89344
- var setFsWatchListener = (path22, fullPath, options2, handlers) => {
89344
+ var setFsWatchListener = (path23, fullPath, options2, handlers) => {
89345
89345
  const { listener, errHandler, rawEmitter } = handlers;
89346
89346
  let cont = FsWatchInstances.get(fullPath);
89347
89347
  let watcher;
89348
89348
  if (!options2.persistent) {
89349
- watcher = createFsWatchInstance(path22, options2, listener, errHandler, rawEmitter);
89349
+ watcher = createFsWatchInstance(path23, options2, listener, errHandler, rawEmitter);
89350
89350
  if (!watcher)
89351
89351
  return;
89352
89352
  return watcher.close.bind(watcher);
@@ -89357,7 +89357,7 @@ var setFsWatchListener = (path22, fullPath, options2, handlers) => {
89357
89357
  addAndConvert(cont, KEY_RAW, rawEmitter);
89358
89358
  } else {
89359
89359
  watcher = createFsWatchInstance(
89360
- path22,
89360
+ path23,
89361
89361
  options2,
89362
89362
  fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),
89363
89363
  errHandler,
@@ -89372,7 +89372,7 @@ var setFsWatchListener = (path22, fullPath, options2, handlers) => {
89372
89372
  cont.watcherUnusable = true;
89373
89373
  if (isWindows && error.code === "EPERM") {
89374
89374
  try {
89375
- const fd = await open(path22, "r");
89375
+ const fd = await open(path23, "r");
89376
89376
  await fd.close();
89377
89377
  broadcastErr(error);
89378
89378
  } catch (err) {
@@ -89403,7 +89403,7 @@ var setFsWatchListener = (path22, fullPath, options2, handlers) => {
89403
89403
  };
89404
89404
  };
89405
89405
  var FsWatchFileInstances = /* @__PURE__ */ new Map();
89406
- var setFsWatchFileListener = (path22, fullPath, options2, handlers) => {
89406
+ var setFsWatchFileListener = (path23, fullPath, options2, handlers) => {
89407
89407
  const { listener, rawEmitter } = handlers;
89408
89408
  let cont = FsWatchFileInstances.get(fullPath);
89409
89409
  const copts = cont && cont.options;
@@ -89425,7 +89425,7 @@ var setFsWatchFileListener = (path22, fullPath, options2, handlers) => {
89425
89425
  });
89426
89426
  const currmtime = curr.mtimeMs;
89427
89427
  if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {
89428
- foreach(cont.listeners, (listener2) => listener2(path22, curr));
89428
+ foreach(cont.listeners, (listener2) => listener2(path23, curr));
89429
89429
  }
89430
89430
  })
89431
89431
  };
@@ -89455,13 +89455,13 @@ var NodeFsHandler = class {
89455
89455
  * @param listener on fs change
89456
89456
  * @returns closer for the watcher instance
89457
89457
  */
89458
- _watchWithNodeFs(path22, listener) {
89458
+ _watchWithNodeFs(path23, listener) {
89459
89459
  const opts = this.fsw.options;
89460
- const directory = sp.dirname(path22);
89461
- const basename3 = sp.basename(path22);
89460
+ const directory = sp.dirname(path23);
89461
+ const basename3 = sp.basename(path23);
89462
89462
  const parent = this.fsw._getWatchedDir(directory);
89463
89463
  parent.add(basename3);
89464
- const absolutePath = sp.resolve(path22);
89464
+ const absolutePath = sp.resolve(path23);
89465
89465
  const options2 = {
89466
89466
  persistent: opts.persistent
89467
89467
  };
@@ -89471,12 +89471,12 @@ var NodeFsHandler = class {
89471
89471
  if (opts.usePolling) {
89472
89472
  const enableBin = opts.interval !== opts.binaryInterval;
89473
89473
  options2.interval = enableBin && isBinaryPath(basename3) ? opts.binaryInterval : opts.interval;
89474
- closer = setFsWatchFileListener(path22, absolutePath, options2, {
89474
+ closer = setFsWatchFileListener(path23, absolutePath, options2, {
89475
89475
  listener,
89476
89476
  rawEmitter: this.fsw._emitRaw
89477
89477
  });
89478
89478
  } else {
89479
- closer = setFsWatchListener(path22, absolutePath, options2, {
89479
+ closer = setFsWatchListener(path23, absolutePath, options2, {
89480
89480
  listener,
89481
89481
  errHandler: this._boundHandleError,
89482
89482
  rawEmitter: this.fsw._emitRaw
@@ -89498,7 +89498,7 @@ var NodeFsHandler = class {
89498
89498
  let prevStats = stats;
89499
89499
  if (parent.has(basename3))
89500
89500
  return;
89501
- const listener = async (path22, newStats) => {
89501
+ const listener = async (path23, newStats) => {
89502
89502
  if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5))
89503
89503
  return;
89504
89504
  if (!newStats || newStats.mtimeMs === 0) {
@@ -89512,11 +89512,11 @@ var NodeFsHandler = class {
89512
89512
  this.fsw._emit(EV.CHANGE, file, newStats2);
89513
89513
  }
89514
89514
  if ((isMacos || isLinux || isFreeBSD) && prevStats.ino !== newStats2.ino) {
89515
- this.fsw._closeFile(path22);
89515
+ this.fsw._closeFile(path23);
89516
89516
  prevStats = newStats2;
89517
89517
  const closer2 = this._watchWithNodeFs(file, listener);
89518
89518
  if (closer2)
89519
- this.fsw._addPathCloser(path22, closer2);
89519
+ this.fsw._addPathCloser(path23, closer2);
89520
89520
  } else {
89521
89521
  prevStats = newStats2;
89522
89522
  }
@@ -89548,7 +89548,7 @@ var NodeFsHandler = class {
89548
89548
  * @param item basename of this item
89549
89549
  * @returns true if no more processing is needed for this entry.
89550
89550
  */
89551
- async _handleSymlink(entry, directory, path22, item) {
89551
+ async _handleSymlink(entry, directory, path23, item) {
89552
89552
  if (this.fsw.closed) {
89553
89553
  return;
89554
89554
  }
@@ -89558,7 +89558,7 @@ var NodeFsHandler = class {
89558
89558
  this.fsw._incrReadyCount();
89559
89559
  let linkPath;
89560
89560
  try {
89561
- linkPath = await fsrealpath(path22);
89561
+ linkPath = await fsrealpath(path23);
89562
89562
  } catch (e) {
89563
89563
  this.fsw._emitReady();
89564
89564
  return true;
@@ -89568,12 +89568,12 @@ var NodeFsHandler = class {
89568
89568
  if (dir.has(item)) {
89569
89569
  if (this.fsw._symlinkPaths.get(full) !== linkPath) {
89570
89570
  this.fsw._symlinkPaths.set(full, linkPath);
89571
- this.fsw._emit(EV.CHANGE, path22, entry.stats);
89571
+ this.fsw._emit(EV.CHANGE, path23, entry.stats);
89572
89572
  }
89573
89573
  } else {
89574
89574
  dir.add(item);
89575
89575
  this.fsw._symlinkPaths.set(full, linkPath);
89576
- this.fsw._emit(EV.ADD, path22, entry.stats);
89576
+ this.fsw._emit(EV.ADD, path23, entry.stats);
89577
89577
  }
89578
89578
  this.fsw._emitReady();
89579
89579
  return true;
@@ -89603,9 +89603,9 @@ var NodeFsHandler = class {
89603
89603
  return;
89604
89604
  }
89605
89605
  const item = entry.path;
89606
- let path22 = sp.join(directory, item);
89606
+ let path23 = sp.join(directory, item);
89607
89607
  current.add(item);
89608
- if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path22, item)) {
89608
+ if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path23, item)) {
89609
89609
  return;
89610
89610
  }
89611
89611
  if (this.fsw.closed) {
@@ -89614,8 +89614,8 @@ var NodeFsHandler = class {
89614
89614
  }
89615
89615
  if (item === target || !target && !previous.has(item)) {
89616
89616
  this.fsw._incrReadyCount();
89617
- path22 = sp.join(dir, sp.relative(dir, path22));
89618
- this._addToNodeFs(path22, initialAdd, wh, depth + 1);
89617
+ path23 = sp.join(dir, sp.relative(dir, path23));
89618
+ this._addToNodeFs(path23, initialAdd, wh, depth + 1);
89619
89619
  }
89620
89620
  }).on(EV.ERROR, this._boundHandleError);
89621
89621
  return new Promise((resolve3, reject) => {
@@ -89684,13 +89684,13 @@ var NodeFsHandler = class {
89684
89684
  * @param depth Child path actually targeted for watch
89685
89685
  * @param target Child path actually targeted for watch
89686
89686
  */
89687
- async _addToNodeFs(path22, initialAdd, priorWh, depth, target) {
89687
+ async _addToNodeFs(path23, initialAdd, priorWh, depth, target) {
89688
89688
  const ready = this.fsw._emitReady;
89689
- if (this.fsw._isIgnored(path22) || this.fsw.closed) {
89689
+ if (this.fsw._isIgnored(path23) || this.fsw.closed) {
89690
89690
  ready();
89691
89691
  return false;
89692
89692
  }
89693
- const wh = this.fsw._getWatchHelpers(path22);
89693
+ const wh = this.fsw._getWatchHelpers(path23);
89694
89694
  if (priorWh) {
89695
89695
  wh.filterPath = (entry) => priorWh.filterPath(entry);
89696
89696
  wh.filterDir = (entry) => priorWh.filterDir(entry);
@@ -89706,8 +89706,8 @@ var NodeFsHandler = class {
89706
89706
  const follow = this.fsw.options.followSymlinks;
89707
89707
  let closer;
89708
89708
  if (stats.isDirectory()) {
89709
- const absPath = sp.resolve(path22);
89710
- const targetPath = follow ? await fsrealpath(path22) : path22;
89709
+ const absPath = sp.resolve(path23);
89710
+ const targetPath = follow ? await fsrealpath(path23) : path23;
89711
89711
  if (this.fsw.closed)
89712
89712
  return;
89713
89713
  closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);
@@ -89717,29 +89717,29 @@ var NodeFsHandler = class {
89717
89717
  this.fsw._symlinkPaths.set(absPath, targetPath);
89718
89718
  }
89719
89719
  } else if (stats.isSymbolicLink()) {
89720
- const targetPath = follow ? await fsrealpath(path22) : path22;
89720
+ const targetPath = follow ? await fsrealpath(path23) : path23;
89721
89721
  if (this.fsw.closed)
89722
89722
  return;
89723
89723
  const parent = sp.dirname(wh.watchPath);
89724
89724
  this.fsw._getWatchedDir(parent).add(wh.watchPath);
89725
89725
  this.fsw._emit(EV.ADD, wh.watchPath, stats);
89726
- closer = await this._handleDir(parent, stats, initialAdd, depth, path22, wh, targetPath);
89726
+ closer = await this._handleDir(parent, stats, initialAdd, depth, path23, wh, targetPath);
89727
89727
  if (this.fsw.closed)
89728
89728
  return;
89729
89729
  if (targetPath !== void 0) {
89730
- this.fsw._symlinkPaths.set(sp.resolve(path22), targetPath);
89730
+ this.fsw._symlinkPaths.set(sp.resolve(path23), targetPath);
89731
89731
  }
89732
89732
  } else {
89733
89733
  closer = this._handleFile(wh.watchPath, stats, initialAdd);
89734
89734
  }
89735
89735
  ready();
89736
89736
  if (closer)
89737
- this.fsw._addPathCloser(path22, closer);
89737
+ this.fsw._addPathCloser(path23, closer);
89738
89738
  return false;
89739
89739
  } catch (error) {
89740
89740
  if (this.fsw._handleError(error)) {
89741
89741
  ready();
89742
- return path22;
89742
+ return path23;
89743
89743
  }
89744
89744
  }
89745
89745
  }
@@ -89782,24 +89782,24 @@ function createPattern(matcher) {
89782
89782
  }
89783
89783
  return () => false;
89784
89784
  }
89785
- function normalizePath(path22) {
89786
- if (typeof path22 !== "string")
89785
+ function normalizePath(path23) {
89786
+ if (typeof path23 !== "string")
89787
89787
  throw new Error("string expected");
89788
- path22 = sp2.normalize(path22);
89789
- path22 = path22.replace(/\\/g, "/");
89788
+ path23 = sp2.normalize(path23);
89789
+ path23 = path23.replace(/\\/g, "/");
89790
89790
  let prepend = false;
89791
- if (path22.startsWith("//"))
89791
+ if (path23.startsWith("//"))
89792
89792
  prepend = true;
89793
- path22 = path22.replace(DOUBLE_SLASH_RE, "/");
89793
+ path23 = path23.replace(DOUBLE_SLASH_RE, "/");
89794
89794
  if (prepend)
89795
- path22 = "/" + path22;
89796
- return path22;
89795
+ path23 = "/" + path23;
89796
+ return path23;
89797
89797
  }
89798
89798
  function matchPatterns(patterns, testString, stats) {
89799
- const path22 = normalizePath(testString);
89799
+ const path23 = normalizePath(testString);
89800
89800
  for (let index = 0; index < patterns.length; index++) {
89801
89801
  const pattern = patterns[index];
89802
- if (pattern(path22, stats)) {
89802
+ if (pattern(path23, stats)) {
89803
89803
  return true;
89804
89804
  }
89805
89805
  }
@@ -89837,19 +89837,19 @@ var toUnix = (string) => {
89837
89837
  }
89838
89838
  return str;
89839
89839
  };
89840
- var normalizePathToUnix = (path22) => toUnix(sp2.normalize(toUnix(path22)));
89841
- var normalizeIgnored = (cwd = "") => (path22) => {
89842
- if (typeof path22 === "string") {
89843
- return normalizePathToUnix(sp2.isAbsolute(path22) ? path22 : sp2.join(cwd, path22));
89840
+ var normalizePathToUnix = (path23) => toUnix(sp2.normalize(toUnix(path23)));
89841
+ var normalizeIgnored = (cwd = "") => (path23) => {
89842
+ if (typeof path23 === "string") {
89843
+ return normalizePathToUnix(sp2.isAbsolute(path23) ? path23 : sp2.join(cwd, path23));
89844
89844
  } else {
89845
- return path22;
89845
+ return path23;
89846
89846
  }
89847
89847
  };
89848
- var getAbsolutePath = (path22, cwd) => {
89849
- if (sp2.isAbsolute(path22)) {
89850
- return path22;
89848
+ var getAbsolutePath = (path23, cwd) => {
89849
+ if (sp2.isAbsolute(path23)) {
89850
+ return path23;
89851
89851
  }
89852
- return sp2.join(cwd, path22);
89852
+ return sp2.join(cwd, path23);
89853
89853
  };
89854
89854
  var EMPTY_SET = Object.freeze(/* @__PURE__ */ new Set());
89855
89855
  var DirEntry = class {
@@ -89914,10 +89914,10 @@ var WatchHelper = class {
89914
89914
  dirParts;
89915
89915
  followSymlinks;
89916
89916
  statMethod;
89917
- constructor(path22, follow, fsw) {
89917
+ constructor(path23, follow, fsw) {
89918
89918
  this.fsw = fsw;
89919
- const watchPath = path22;
89920
- this.path = path22 = path22.replace(REPLACER_RE, "");
89919
+ const watchPath = path23;
89920
+ this.path = path23 = path23.replace(REPLACER_RE, "");
89921
89921
  this.watchPath = watchPath;
89922
89922
  this.fullWatchPath = sp2.resolve(watchPath);
89923
89923
  this.dirParts = [];
@@ -90057,20 +90057,20 @@ var FSWatcher = class extends EventEmitter2 {
90057
90057
  this._closePromise = void 0;
90058
90058
  let paths = unifyPaths(paths_);
90059
90059
  if (cwd) {
90060
- paths = paths.map((path22) => {
90061
- const absPath = getAbsolutePath(path22, cwd);
90060
+ paths = paths.map((path23) => {
90061
+ const absPath = getAbsolutePath(path23, cwd);
90062
90062
  return absPath;
90063
90063
  });
90064
90064
  }
90065
- paths.forEach((path22) => {
90066
- this._removeIgnoredPath(path22);
90065
+ paths.forEach((path23) => {
90066
+ this._removeIgnoredPath(path23);
90067
90067
  });
90068
90068
  this._userIgnored = void 0;
90069
90069
  if (!this._readyCount)
90070
90070
  this._readyCount = 0;
90071
90071
  this._readyCount += paths.length;
90072
- Promise.all(paths.map(async (path22) => {
90073
- const res = await this._nodeFsHandler._addToNodeFs(path22, !_internal, void 0, 0, _origAdd);
90072
+ Promise.all(paths.map(async (path23) => {
90073
+ const res = await this._nodeFsHandler._addToNodeFs(path23, !_internal, void 0, 0, _origAdd);
90074
90074
  if (res)
90075
90075
  this._emitReady();
90076
90076
  return res;
@@ -90092,17 +90092,17 @@ var FSWatcher = class extends EventEmitter2 {
90092
90092
  return this;
90093
90093
  const paths = unifyPaths(paths_);
90094
90094
  const { cwd } = this.options;
90095
- paths.forEach((path22) => {
90096
- if (!sp2.isAbsolute(path22) && !this._closers.has(path22)) {
90095
+ paths.forEach((path23) => {
90096
+ if (!sp2.isAbsolute(path23) && !this._closers.has(path23)) {
90097
90097
  if (cwd)
90098
- path22 = sp2.join(cwd, path22);
90099
- path22 = sp2.resolve(path22);
90098
+ path23 = sp2.join(cwd, path23);
90099
+ path23 = sp2.resolve(path23);
90100
90100
  }
90101
- this._closePath(path22);
90102
- this._addIgnoredPath(path22);
90103
- if (this._watched.has(path22)) {
90101
+ this._closePath(path23);
90102
+ this._addIgnoredPath(path23);
90103
+ if (this._watched.has(path23)) {
90104
90104
  this._addIgnoredPath({
90105
- path: path22,
90105
+ path: path23,
90106
90106
  recursive: true
90107
90107
  });
90108
90108
  }
@@ -90166,38 +90166,38 @@ var FSWatcher = class extends EventEmitter2 {
90166
90166
  * @param stats arguments to be passed with event
90167
90167
  * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag
90168
90168
  */
90169
- async _emit(event, path22, stats) {
90169
+ async _emit(event, path23, stats) {
90170
90170
  if (this.closed)
90171
90171
  return;
90172
90172
  const opts = this.options;
90173
90173
  if (isWindows)
90174
- path22 = sp2.normalize(path22);
90174
+ path23 = sp2.normalize(path23);
90175
90175
  if (opts.cwd)
90176
- path22 = sp2.relative(opts.cwd, path22);
90177
- const args = [path22];
90176
+ path23 = sp2.relative(opts.cwd, path23);
90177
+ const args = [path23];
90178
90178
  if (stats != null)
90179
90179
  args.push(stats);
90180
90180
  const awf = opts.awaitWriteFinish;
90181
90181
  let pw;
90182
- if (awf && (pw = this._pendingWrites.get(path22))) {
90182
+ if (awf && (pw = this._pendingWrites.get(path23))) {
90183
90183
  pw.lastChange = /* @__PURE__ */ new Date();
90184
90184
  return this;
90185
90185
  }
90186
90186
  if (opts.atomic) {
90187
90187
  if (event === EVENTS.UNLINK) {
90188
- this._pendingUnlinks.set(path22, [event, ...args]);
90188
+ this._pendingUnlinks.set(path23, [event, ...args]);
90189
90189
  setTimeout(() => {
90190
- this._pendingUnlinks.forEach((entry, path23) => {
90190
+ this._pendingUnlinks.forEach((entry, path24) => {
90191
90191
  this.emit(...entry);
90192
90192
  this.emit(EVENTS.ALL, ...entry);
90193
- this._pendingUnlinks.delete(path23);
90193
+ this._pendingUnlinks.delete(path24);
90194
90194
  });
90195
90195
  }, typeof opts.atomic === "number" ? opts.atomic : 100);
90196
90196
  return this;
90197
90197
  }
90198
- if (event === EVENTS.ADD && this._pendingUnlinks.has(path22)) {
90198
+ if (event === EVENTS.ADD && this._pendingUnlinks.has(path23)) {
90199
90199
  event = EVENTS.CHANGE;
90200
- this._pendingUnlinks.delete(path22);
90200
+ this._pendingUnlinks.delete(path23);
90201
90201
  }
90202
90202
  }
90203
90203
  if (awf && (event === EVENTS.ADD || event === EVENTS.CHANGE) && this._readyEmitted) {
@@ -90215,16 +90215,16 @@ var FSWatcher = class extends EventEmitter2 {
90215
90215
  this.emitWithAll(event, args);
90216
90216
  }
90217
90217
  };
90218
- this._awaitWriteFinish(path22, awf.stabilityThreshold, event, awfEmit);
90218
+ this._awaitWriteFinish(path23, awf.stabilityThreshold, event, awfEmit);
90219
90219
  return this;
90220
90220
  }
90221
90221
  if (event === EVENTS.CHANGE) {
90222
- const isThrottled = !this._throttle(EVENTS.CHANGE, path22, 50);
90222
+ const isThrottled = !this._throttle(EVENTS.CHANGE, path23, 50);
90223
90223
  if (isThrottled)
90224
90224
  return this;
90225
90225
  }
90226
90226
  if (opts.alwaysStat && stats === void 0 && (event === EVENTS.ADD || event === EVENTS.ADD_DIR || event === EVENTS.CHANGE)) {
90227
- const fullPath = opts.cwd ? sp2.join(opts.cwd, path22) : path22;
90227
+ const fullPath = opts.cwd ? sp2.join(opts.cwd, path23) : path23;
90228
90228
  let stats2;
90229
90229
  try {
90230
90230
  stats2 = await stat3(fullPath);
@@ -90255,23 +90255,23 @@ var FSWatcher = class extends EventEmitter2 {
90255
90255
  * @param timeout duration of time to suppress duplicate actions
90256
90256
  * @returns tracking object or false if action should be suppressed
90257
90257
  */
90258
- _throttle(actionType, path22, timeout) {
90258
+ _throttle(actionType, path23, timeout) {
90259
90259
  if (!this._throttled.has(actionType)) {
90260
90260
  this._throttled.set(actionType, /* @__PURE__ */ new Map());
90261
90261
  }
90262
90262
  const action = this._throttled.get(actionType);
90263
90263
  if (!action)
90264
90264
  throw new Error("invalid throttle");
90265
- const actionPath = action.get(path22);
90265
+ const actionPath = action.get(path23);
90266
90266
  if (actionPath) {
90267
90267
  actionPath.count++;
90268
90268
  return false;
90269
90269
  }
90270
90270
  let timeoutObject;
90271
90271
  const clear = () => {
90272
- const item = action.get(path22);
90272
+ const item = action.get(path23);
90273
90273
  const count2 = item ? item.count : 0;
90274
- action.delete(path22);
90274
+ action.delete(path23);
90275
90275
  clearTimeout(timeoutObject);
90276
90276
  if (item)
90277
90277
  clearTimeout(item.timeoutObject);
@@ -90279,7 +90279,7 @@ var FSWatcher = class extends EventEmitter2 {
90279
90279
  };
90280
90280
  timeoutObject = setTimeout(clear, timeout);
90281
90281
  const thr = { timeoutObject, clear, count: 0 };
90282
- action.set(path22, thr);
90282
+ action.set(path23, thr);
90283
90283
  return thr;
90284
90284
  }
90285
90285
  _incrReadyCount() {
@@ -90293,44 +90293,44 @@ var FSWatcher = class extends EventEmitter2 {
90293
90293
  * @param event
90294
90294
  * @param awfEmit Callback to be called when ready for event to be emitted.
90295
90295
  */
90296
- _awaitWriteFinish(path22, threshold, event, awfEmit) {
90296
+ _awaitWriteFinish(path23, threshold, event, awfEmit) {
90297
90297
  const awf = this.options.awaitWriteFinish;
90298
90298
  if (typeof awf !== "object")
90299
90299
  return;
90300
90300
  const pollInterval = awf.pollInterval;
90301
90301
  let timeoutHandler;
90302
- let fullPath = path22;
90303
- if (this.options.cwd && !sp2.isAbsolute(path22)) {
90304
- fullPath = sp2.join(this.options.cwd, path22);
90302
+ let fullPath = path23;
90303
+ if (this.options.cwd && !sp2.isAbsolute(path23)) {
90304
+ fullPath = sp2.join(this.options.cwd, path23);
90305
90305
  }
90306
90306
  const now = /* @__PURE__ */ new Date();
90307
90307
  const writes = this._pendingWrites;
90308
90308
  function awaitWriteFinishFn(prevStat) {
90309
90309
  statcb(fullPath, (err, curStat) => {
90310
- if (err || !writes.has(path22)) {
90310
+ if (err || !writes.has(path23)) {
90311
90311
  if (err && err.code !== "ENOENT")
90312
90312
  awfEmit(err);
90313
90313
  return;
90314
90314
  }
90315
90315
  const now2 = Number(/* @__PURE__ */ new Date());
90316
90316
  if (prevStat && curStat.size !== prevStat.size) {
90317
- writes.get(path22).lastChange = now2;
90317
+ writes.get(path23).lastChange = now2;
90318
90318
  }
90319
- const pw = writes.get(path22);
90319
+ const pw = writes.get(path23);
90320
90320
  const df = now2 - pw.lastChange;
90321
90321
  if (df >= threshold) {
90322
- writes.delete(path22);
90322
+ writes.delete(path23);
90323
90323
  awfEmit(void 0, curStat);
90324
90324
  } else {
90325
90325
  timeoutHandler = setTimeout(awaitWriteFinishFn, pollInterval, curStat);
90326
90326
  }
90327
90327
  });
90328
90328
  }
90329
- if (!writes.has(path22)) {
90330
- writes.set(path22, {
90329
+ if (!writes.has(path23)) {
90330
+ writes.set(path23, {
90331
90331
  lastChange: now,
90332
90332
  cancelWait: () => {
90333
- writes.delete(path22);
90333
+ writes.delete(path23);
90334
90334
  clearTimeout(timeoutHandler);
90335
90335
  return event;
90336
90336
  }
@@ -90341,8 +90341,8 @@ var FSWatcher = class extends EventEmitter2 {
90341
90341
  /**
90342
90342
  * Determines whether user has asked to ignore this path.
90343
90343
  */
90344
- _isIgnored(path22, stats) {
90345
- if (this.options.atomic && DOT_RE.test(path22))
90344
+ _isIgnored(path23, stats) {
90345
+ if (this.options.atomic && DOT_RE.test(path23))
90346
90346
  return true;
90347
90347
  if (!this._userIgnored) {
90348
90348
  const { cwd } = this.options;
@@ -90352,17 +90352,17 @@ var FSWatcher = class extends EventEmitter2 {
90352
90352
  const list3 = [...ignoredPaths.map(normalizeIgnored(cwd)), ...ignored];
90353
90353
  this._userIgnored = anymatch(list3, void 0);
90354
90354
  }
90355
- return this._userIgnored(path22, stats);
90355
+ return this._userIgnored(path23, stats);
90356
90356
  }
90357
- _isntIgnored(path22, stat4) {
90358
- return !this._isIgnored(path22, stat4);
90357
+ _isntIgnored(path23, stat4) {
90358
+ return !this._isIgnored(path23, stat4);
90359
90359
  }
90360
90360
  /**
90361
90361
  * Provides a set of common helpers and properties relating to symlink handling.
90362
90362
  * @param path file or directory pattern being watched
90363
90363
  */
90364
- _getWatchHelpers(path22) {
90365
- return new WatchHelper(path22, this.options.followSymlinks, this);
90364
+ _getWatchHelpers(path23) {
90365
+ return new WatchHelper(path23, this.options.followSymlinks, this);
90366
90366
  }
90367
90367
  // Directory helpers
90368
90368
  // -----------------
@@ -90394,63 +90394,63 @@ var FSWatcher = class extends EventEmitter2 {
90394
90394
  * @param item base path of item/directory
90395
90395
  */
90396
90396
  _remove(directory, item, isDirectory) {
90397
- const path22 = sp2.join(directory, item);
90398
- const fullPath = sp2.resolve(path22);
90399
- isDirectory = isDirectory != null ? isDirectory : this._watched.has(path22) || this._watched.has(fullPath);
90400
- if (!this._throttle("remove", path22, 100))
90397
+ const path23 = sp2.join(directory, item);
90398
+ const fullPath = sp2.resolve(path23);
90399
+ isDirectory = isDirectory != null ? isDirectory : this._watched.has(path23) || this._watched.has(fullPath);
90400
+ if (!this._throttle("remove", path23, 100))
90401
90401
  return;
90402
90402
  if (!isDirectory && this._watched.size === 1) {
90403
90403
  this.add(directory, item, true);
90404
90404
  }
90405
- const wp = this._getWatchedDir(path22);
90405
+ const wp = this._getWatchedDir(path23);
90406
90406
  const nestedDirectoryChildren = wp.getChildren();
90407
- nestedDirectoryChildren.forEach((nested) => this._remove(path22, nested));
90407
+ nestedDirectoryChildren.forEach((nested) => this._remove(path23, nested));
90408
90408
  const parent = this._getWatchedDir(directory);
90409
90409
  const wasTracked = parent.has(item);
90410
90410
  parent.remove(item);
90411
90411
  if (this._symlinkPaths.has(fullPath)) {
90412
90412
  this._symlinkPaths.delete(fullPath);
90413
90413
  }
90414
- let relPath = path22;
90414
+ let relPath = path23;
90415
90415
  if (this.options.cwd)
90416
- relPath = sp2.relative(this.options.cwd, path22);
90416
+ relPath = sp2.relative(this.options.cwd, path23);
90417
90417
  if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {
90418
90418
  const event = this._pendingWrites.get(relPath).cancelWait();
90419
90419
  if (event === EVENTS.ADD)
90420
90420
  return;
90421
90421
  }
90422
- this._watched.delete(path22);
90422
+ this._watched.delete(path23);
90423
90423
  this._watched.delete(fullPath);
90424
90424
  const eventName = isDirectory ? EVENTS.UNLINK_DIR : EVENTS.UNLINK;
90425
- if (wasTracked && !this._isIgnored(path22))
90426
- this._emit(eventName, path22);
90427
- this._closePath(path22);
90425
+ if (wasTracked && !this._isIgnored(path23))
90426
+ this._emit(eventName, path23);
90427
+ this._closePath(path23);
90428
90428
  }
90429
90429
  /**
90430
90430
  * Closes all watchers for a path
90431
90431
  */
90432
- _closePath(path22) {
90433
- this._closeFile(path22);
90434
- const dir = sp2.dirname(path22);
90435
- this._getWatchedDir(dir).remove(sp2.basename(path22));
90432
+ _closePath(path23) {
90433
+ this._closeFile(path23);
90434
+ const dir = sp2.dirname(path23);
90435
+ this._getWatchedDir(dir).remove(sp2.basename(path23));
90436
90436
  }
90437
90437
  /**
90438
90438
  * Closes only file-specific watchers
90439
90439
  */
90440
- _closeFile(path22) {
90441
- const closers = this._closers.get(path22);
90440
+ _closeFile(path23) {
90441
+ const closers = this._closers.get(path23);
90442
90442
  if (!closers)
90443
90443
  return;
90444
90444
  closers.forEach((closer) => closer());
90445
- this._closers.delete(path22);
90445
+ this._closers.delete(path23);
90446
90446
  }
90447
- _addPathCloser(path22, closer) {
90447
+ _addPathCloser(path23, closer) {
90448
90448
  if (!closer)
90449
90449
  return;
90450
- let list3 = this._closers.get(path22);
90450
+ let list3 = this._closers.get(path23);
90451
90451
  if (!list3) {
90452
90452
  list3 = [];
90453
- this._closers.set(path22, list3);
90453
+ this._closers.set(path23, list3);
90454
90454
  }
90455
90455
  list3.push(closer);
90456
90456
  }
@@ -92385,7 +92385,9 @@ function validateMountManifest(filePath, raw) {
92385
92385
  if (typeof m["hostPath"] !== "string") {
92386
92386
  throw new MountManifestError(filePath, `mounts[${i2}].hostPath must be a string`);
92387
92387
  }
92388
- if (typeof m["containerPath"] !== "string") {
92388
+ const kind = m["kind"];
92389
+ const isSymlinkOnly = kind === "symlink-only";
92390
+ if (!isSymlinkOnly && typeof m["containerPath"] !== "string") {
92389
92391
  throw new MountManifestError(filePath, `mounts[${i2}].containerPath must be a string`);
92390
92392
  }
92391
92393
  }
@@ -92711,9 +92713,7 @@ async function pickMounts(candidates) {
92711
92713
  candidates.map((c3) => c3.containerPath).filter((p) => typeof p === "string" && p.length > 0)
92712
92714
  )
92713
92715
  );
92714
- const knownHostPaths = Array.from(
92715
- new Set(candidates.flatMap((c3) => c3.alternativeSources ?? []))
92716
- );
92716
+ const knownHostPaths = Array.from(new Set(candidates.flatMap((c3) => c3.alternativeSources ?? [])));
92717
92717
  while (await confirm({
92718
92718
  message: candidates.length === 0 ? "Add a custom mount?" : "Add another (custom) mount?",
92719
92719
  default: false
@@ -93147,6 +93147,75 @@ function findHostClones(opts) {
93147
93147
  }
93148
93148
  return found;
93149
93149
  }
93150
+
93151
+ // src/mount/health-check.ts
93152
+ import path22 from "node:path";
93153
+ var DEFAULT_REMEDIATION = {
93154
+ key: "F",
93155
+ label: "mount apply",
93156
+ command: "dev-cockpit mount"
93157
+ };
93158
+ function createMountBrokenSymlinkCheck(opts) {
93159
+ const id = opts.id ?? "mount-broken-symlink";
93160
+ const label = opts.label ?? "Mount symlinks";
93161
+ const severity = opts.severity ?? "error";
93162
+ const triggers = opts.triggers ?? ["startup", "fsevent"];
93163
+ const remediation = opts.remediation ?? DEFAULT_REMEDIATION;
93164
+ const remediationKey = remediation.key;
93165
+ const predicate = async (ctx) => {
93166
+ const { workspaceRoot } = ctx;
93167
+ let manifestPath2;
93168
+ try {
93169
+ const { configPath } = discoverConfig({
93170
+ workspaceDiscoverer: () => ({ root: workspaceRoot })
93171
+ });
93172
+ const config = loadConfig(configPath);
93173
+ const paths = getStatePaths(workspaceRoot, { appName: config.appName });
93174
+ manifestPath2 = path22.join(paths.stateDir, config.mount.manifestFile);
93175
+ } catch (err) {
93176
+ if (err instanceof DiscoveryError) {
93177
+ return { id, label, severity: "ok", detail: "no cockpit.yaml found", remediationKey };
93178
+ }
93179
+ throw err;
93180
+ }
93181
+ let mounts;
93182
+ try {
93183
+ const manifest = readMountManifest(manifestPath2);
93184
+ mounts = manifest?.mounts ?? [];
93185
+ } catch {
93186
+ return {
93187
+ id,
93188
+ label,
93189
+ severity: "warn",
93190
+ detail: "mount manifest could not be read",
93191
+ remediationKey
93192
+ };
93193
+ }
93194
+ if (mounts.length === 0) {
93195
+ return { id, label, severity: "ok", detail: "no active mounts", remediationKey };
93196
+ }
93197
+ const broken = detectBrokenSymlinks(workspaceRoot, mounts, opts.symlinks);
93198
+ if (broken.length === 0) {
93199
+ return {
93200
+ id,
93201
+ label,
93202
+ severity: "ok",
93203
+ detail: `${mounts.length} symlink(s) healthy`,
93204
+ remediationKey
93205
+ };
93206
+ }
93207
+ const namesFor = (reason) => broken.filter((b) => b.reason === reason).map(
93208
+ (b) => b.mount.meta?.["name"] ?? b.mount.containerPath ?? b.mount.hostPath
93209
+ ).join(", ");
93210
+ const parts = [];
93211
+ const brokenNames = namesFor("broken");
93212
+ const missingNames = namesFor("missing");
93213
+ if (brokenNames) parts.push(`broken (target missing): ${brokenNames}`);
93214
+ if (missingNames) parts.push(`not applied (no symlink): ${missingNames}`);
93215
+ return { id, label, severity, detail: parts.join("; "), remediationKey };
93216
+ };
93217
+ return { id, label, severity, triggers, predicate, remediation };
93218
+ }
93150
93219
  export {
93151
93220
  BUILTIN_CHECK_FACTORIES,
93152
93221
  BUILTIN_DEFAULT_SEVERITY,
@@ -93188,6 +93257,7 @@ export {
93188
93257
  cockpitStore,
93189
93258
  compileHighlights,
93190
93259
  createLogger,
93260
+ createMountBrokenSymlinkCheck,
93191
93261
  deleteMountManifest,
93192
93262
  detectBrokenSymlinks,
93193
93263
  detectTransitions,