@package-pal/core 0.0.5 → 0.0.8

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/index.js CHANGED
@@ -92,6 +92,7 @@ var Config = z3.object({
92
92
  })),
93
93
  watch: z3.optional(zLooseObjectWithoutIndexSignature({
94
94
  debounceMs: z3.optional(z3.number()),
95
+ ignore: z3.optional(z3.union([z3.string(), z3.array(z3.string())])),
95
96
  hooks: z3.optional(z3.object({
96
97
  onInit: z3.optional(zLooseFunction()),
97
98
  onBeforeProcessPackage: z3.optional(zLooseFunction()),
@@ -177,22 +178,12 @@ var isRootDir = (path) => {
177
178
  // packages/core/src/lib/configuration/functions/search-config-path.ts
178
179
  var dirDistLimit = 25;
179
180
  var checkForConfigInDir = async (dir) => {
180
- return new Promise((resolve) => {
181
- let pending = CONFIG_SUPPORTED_NAMES.length;
182
- for (const name of CONFIG_SUPPORTED_NAMES) {
183
- const pathToCheck = join(dir, name);
184
- Bun.file(pathToCheck).exists().then((exists) => {
185
- pending--;
186
- if (exists) {
187
- resolve(pathToCheck);
188
- return;
189
- }
190
- if (!pending) {
191
- resolve(undefined);
192
- }
193
- });
194
- }
195
- });
181
+ const checks = await Promise.all(CONFIG_SUPPORTED_NAMES.map((name) => Bun.file(join(dir, name)).exists().then((exists) => ({
182
+ name,
183
+ exists
184
+ }))));
185
+ const found = checks.find((c) => c.exists);
186
+ return found ? join(dir, found.name) : undefined;
196
187
  };
197
188
  var searchConfigPath = async (pathOverride) => {
198
189
  let activeDir = process.cwd();
@@ -226,6 +217,7 @@ var defaultConfig = {
226
217
  },
227
218
  watch: {
228
219
  debounceMs: 500,
220
+ ignore: "",
229
221
  hooks: {
230
222
  onInit: noOp2,
231
223
  onBeforeProcessPackage: noOp2,
@@ -703,82 +695,57 @@ import {
703
695
  Shell
704
696
  } from "@package-pal/util";
705
697
 
706
- // packages/core/src/lib/process/functions/parse-ps-flags.ts
698
+ // packages/core/src/lib/process/functions/parse-ps-shell-flags.ts
707
699
  import { assertDefined as assertDefined8 } from "@package-pal/util";
708
- var knownFlagsWithParams = new Set([
700
+ var shellFlagsWithParams = new Set([
709
701
  "-executionpolicy",
710
702
  "-windowstyle",
711
- "-version",
712
- "-file",
713
- "-inputformat",
714
- "-outputformat",
715
- "-workingdirectory",
716
- "-psconsolefile",
717
- "-pshome",
718
- "-configurationname",
719
- "-argumentlist",
720
- "-warningaction",
721
- "-erroraction",
722
- "-informationaction",
723
- "-informationvariable",
724
- "-warningvariable",
725
- "-errorvariable",
726
- "-outvariable",
727
- "-outbuffer",
728
- "-throttlelimit",
729
- "-culture",
730
- "-uiculture"
703
+ "-version"
731
704
  ]);
732
- var knownFlagsNoParams = new Set([
705
+ var shellFlagsNoParams = new Set([
733
706
  "-noprofile",
734
707
  "-noninteractive",
735
- "-nologo",
736
708
  "-sta",
737
709
  "-mta",
738
- "-encodedcommand",
739
- "-command",
710
+ "-nologo",
740
711
  "-help",
741
712
  "-?",
742
- "-verbose",
743
- "-debug",
744
- "-whatif",
745
- "-confirm",
746
- "-usewindowspowershell",
747
- "-noexit"
713
+ "-noexit",
714
+ "-usewindowspowerShell"
748
715
  ]);
749
- var parsePsFlags = (input) => {
750
- const tokens = input.trim().split(/\s+/);
751
- const flags = [];
716
+ var parsePsShellFlags = (input) => {
717
+ const isPreEncoded = input.toLowerCase().includes("-encodedcommand");
718
+ const tokens = input.match(/"[^"]*"|'[^']*'|\S+/g) ?? [];
719
+ const flags = new Set;
752
720
  let i = 0;
753
721
  while (i < tokens.length) {
754
722
  const token = assertDefined8(tokens[i]);
755
723
  const tokenLower = token.toLowerCase();
756
- if (knownFlagsWithParams.has(tokenLower)) {
757
- if (i + 1 >= tokens.length) {
758
- break;
724
+ if (shellFlagsWithParams.has(tokenLower)) {
725
+ flags.add(token);
726
+ if (i + 1 < tokens.length) {
727
+ flags.add(assertDefined8(tokens[i + 1]));
728
+ i++;
759
729
  }
760
- flags.push(token, assertDefined8(tokens[i + 1]));
761
- i += 2;
762
- continue;
763
- }
764
- if (knownFlagsNoParams.has(tokenLower)) {
765
- flags.push(token);
766
- i += 1;
767
- continue;
730
+ i++;
731
+ } else if (shellFlagsNoParams.has(tokenLower)) {
732
+ flags.add(token);
733
+ i++;
734
+ } else {
735
+ break;
768
736
  }
769
- break;
770
737
  }
771
738
  const command = tokens.slice(i).join(" ");
772
739
  return {
773
740
  flags,
774
- command
741
+ command,
742
+ isPreEncoded
775
743
  };
776
744
  };
777
745
 
778
746
  // packages/core/src/lib/process/functions/get-commands-for-shell.ts
779
- var shell;
780
747
  var getCommandsForShell = (shellCommand) => {
781
- shell = shell ?? getShell();
748
+ const shell = getShell();
782
749
  switch (shell) {
783
750
  case Shell.cmd:
784
751
  return [
@@ -790,9 +757,13 @@ var getCommandsForShell = (shellCommand) => {
790
757
  case Shell.powershell:
791
758
  const {
792
759
  flags,
793
- command
794
- } = parsePsFlags(shellCommand);
795
- const encodedCommand = Buffer.from(command, "utf16le").toString("base64");
760
+ command,
761
+ isPreEncoded
762
+ } = parsePsShellFlags(shellCommand);
763
+ if (isPreEncoded) {
764
+ return [shell, shellCommand];
765
+ }
766
+ const encodedCommand = Buffer.from(command || " ", "utf16le").toString("base64");
796
767
  return [
797
768
  shell,
798
769
  ...flags,
@@ -1077,6 +1048,7 @@ import {
1077
1048
  isDefined as isDefined4,
1078
1049
  runAsync as runAsync2
1079
1050
  } from "@package-pal/util";
1051
+ var {Glob } = globalThis.Bun;
1080
1052
 
1081
1053
  // packages/core/src/lib/graph/functions/merge-graphs.ts
1082
1054
  var mergeGraphs = (a, b) => {
@@ -1107,7 +1079,9 @@ var ChangeAction = {
1107
1079
  var filterFilesModifiedSince = (paths, sinceMs) => {
1108
1080
  return paths.filter((path) => {
1109
1081
  const changedFile = Bun.file(path);
1110
- return changedFile.lastModified >= sinceMs;
1082
+ const isDeleted = changedFile.lastModified === 0;
1083
+ const isModifiedSince = changedFile.lastModified >= sinceMs;
1084
+ return isDeleted || isModifiedSince;
1111
1085
  });
1112
1086
  };
1113
1087
 
@@ -1255,6 +1229,11 @@ var getChangeLogic = (packageGraphs, packageChanges, lastProcessedSubgraph, conf
1255
1229
  };
1256
1230
  };
1257
1231
 
1232
+ // packages/core/src/lib/watch/functions/normalise-pattern-separators.ts
1233
+ var normalisePatternSeparators = (path) => {
1234
+ return path.replace(/\\/g, "/");
1235
+ };
1236
+
1258
1237
  // packages/core/src/lib/watch/functions/normalise-watched-file-path.ts
1259
1238
  import {
1260
1239
  basename as basename3,
@@ -1293,8 +1272,9 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
1293
1272
  changedPackageProcessOrder,
1294
1273
  changedPackageSubgraph
1295
1274
  } = getChangeLogic(packageGraphs, packageChanges, lastProcessedSubgraph, watchConfig, logger);
1296
- const controller = determineAbortController(action === ChangeAction.Restart);
1275
+ const isRestart = action === ChangeAction.Restart;
1297
1276
  const isSequential = watchConfig.subprocess.concurrency === 1;
1277
+ const controller = determineAbortController(isRestart);
1298
1278
  const onProcessFailure = () => {
1299
1279
  logger.debug(styleText10("dim", "Aborting controller: process failed."));
1300
1280
  controller.abort();
@@ -1305,20 +1285,11 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
1305
1285
  return;
1306
1286
  }
1307
1287
  if (packageChanges.size) {
1308
- logger.info(`${action === ChangeAction.Restart ? "Restarting processing" : "Initiating partial processing"} ${isSequential ? "sequentially" : `in parallel${isDefined4(watchConfig.subprocess.concurrency) ? ` with concurrency ${watchConfig.subprocess.concurrency.toString()}` : ""}`}.`);
1309
- lastProcessedSubgraph = lastProcessedSubgraph ? mergeGraphs(lastProcessedSubgraph, changedPackageSubgraph) : changedPackageSubgraph;
1288
+ logger.info(`${isRestart ? "Restarting processing" : "Initiating partial processing"} ${isSequential ? "sequentially" : `in parallel${isDefined4(watchConfig.subprocess.concurrency) ? ` with concurrency ${watchConfig.subprocess.concurrency.toString()}` : ""}`}.`);
1289
+ lastProcessedSubgraph = lastProcessedSubgraph && !isRestart ? mergeGraphs(lastProcessedSubgraph, changedPackageSubgraph) : changedPackageSubgraph;
1310
1290
  }
1311
1291
  for (const group of changedPackageProcessOrder) {
1312
- const {
1313
- promise: longRunningParallelProcessReady,
1314
- resolve: matchedParallelLongReadyRunningOutput
1315
- } = getDeferredPromise();
1316
- let matchedLongRunningOutputCount = 0;
1317
1292
  await runAsync2(group.map((packageName) => async () => {
1318
- const {
1319
- promise: longRunningSequentialProcessReady,
1320
- resolve: matchedSequentialLongRunningReadyOutput
1321
- } = getDeferredPromise();
1322
1293
  const packageNode = assertDefined12(packageGraphs.dependencies.get(packageName));
1323
1294
  const changedPaths = packageChanges.get(packageName) ?? [];
1324
1295
  const processPackageProps = {
@@ -1346,6 +1317,10 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
1346
1317
  const longRunningOutputErroredText = watchConfig.subprocess.matchLongRunningOutputAsErrored;
1347
1318
  const readyMatcher = longRunningOutputReadyText ? getStringMatcher(longRunningOutputReadyText) : undefined;
1348
1319
  const erroredMatcher = longRunningOutputErroredText ? getStringMatcher(longRunningOutputErroredText) : undefined;
1320
+ const {
1321
+ promise: packageReady,
1322
+ resolve: resolvePackageReady
1323
+ } = getDeferredPromise();
1349
1324
  let ready = false;
1350
1325
  let errored = false;
1351
1326
  const exit = runSubprocess({
@@ -1359,11 +1334,8 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
1359
1334
  const matchedReadyText = readyMatcher?.push(chunk).matched();
1360
1335
  if (matchedReadyText) {
1361
1336
  ready = true;
1362
- matchedLongRunningOutputCount++;
1363
- logger.debug(`'${packageName}' (${matchedLongRunningOutputCount.toString()}/${group.length.toString()}) subprocess matched ready text '${matchedReadyText}'.`);
1364
- if (isSequential && matchedLongRunningOutputCount) {
1365
- matchedSequentialLongRunningReadyOutput();
1366
- }
1337
+ logger.debug(`'${packageName}' subprocess matched ready text '${matchedReadyText}'.`);
1338
+ resolvePackageReady();
1367
1339
  }
1368
1340
  }
1369
1341
  if (!errored) {
@@ -1390,20 +1362,13 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
1390
1362
  });
1391
1363
  }
1392
1364
  }
1393
- if (!isSequential && matchedLongRunningOutputCount === group.length) {
1394
- matchedParallelLongReadyRunningOutput();
1395
- }
1396
1365
  }
1397
1366
  }).then((exitState) => {
1398
1367
  if (exitState === ExitState.Errored) {
1399
1368
  onProcessFailure();
1400
1369
  }
1401
1370
  });
1402
- await Promise.race([
1403
- longRunningParallelProcessReady,
1404
- longRunningSequentialProcessReady,
1405
- exit
1406
- ]);
1371
+ await Promise.race([packageReady, exit]);
1407
1372
  }
1408
1373
  const afterProcessPackageShellCommand = await watchConfig.hooks.onAfterProcessPackage(processPackageProps);
1409
1374
  if (afterProcessPackageShellCommand) {
@@ -1459,6 +1424,7 @@ var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, log
1459
1424
  let debounceTimeout;
1460
1425
  let startedDebounceMs;
1461
1426
  let controller;
1427
+ const ignoreGlobs = watchConfig.ignore ? (Array.isArray(watchConfig.ignore) ? watchConfig.ignore : [watchConfig.ignore]).map((pattern) => new Glob(pattern)) : undefined;
1462
1428
  const changedPackagePaths = new Map;
1463
1429
  const useController = (reset) => {
1464
1430
  if (controller && (reset || controller.signal.aborted)) {
@@ -1480,11 +1446,13 @@ var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, log
1480
1446
  if (!isDefined4(startedDebounceMs)) {
1481
1447
  startedDebounceMs = Date.now();
1482
1448
  }
1483
- if (debounceTimeout) {
1484
- clearTimeout(debounceTimeout);
1485
- }
1486
1449
  if (packageName && watchPath && filePath) {
1487
- const changedPath = join4(watchPath, normaliseWatchedFilePath(filePath));
1450
+ const changedPath = normalisePatternSeparators(join4(watchPath, normaliseWatchedFilePath(filePath)));
1451
+ if (ignoreGlobs?.some((glob) => glob.match(changedPath))) {
1452
+ logger.debug(styleText10("dim", `Ignoring change '${changedPath}' (matched ignore pattern).`));
1453
+ return;
1454
+ }
1455
+ logger.debug(styleText10("dim", `Tracked change '${changedPath}'.`));
1488
1456
  const existingPaths = changedPackagePaths.get(packageName);
1489
1457
  if (existingPaths) {
1490
1458
  existingPaths.add(changedPath);
@@ -1492,6 +1460,9 @@ var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, log
1492
1460
  changedPackagePaths.set(packageName, new Set([changedPath]));
1493
1461
  }
1494
1462
  }
1463
+ if (debounceTimeout) {
1464
+ clearTimeout(debounceTimeout);
1465
+ }
1495
1466
  const debounceMs = isInitial ? 0 : watchConfig.debounceMs;
1496
1467
  debounceTimeout = setTimeout(() => {
1497
1468
  if (closed) {
@@ -1610,5 +1581,5 @@ export {
1610
1581
  BumpVersionType
1611
1582
  };
1612
1583
 
1613
- //# debugId=57C320DF799C435664756E2164756E21
1584
+ //# debugId=68AF287603F1263364756E2164756E21
1614
1585
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["..\\..\\packages\\core\\src\\lib\\types\\bump-version-type.ts", "..\\..\\packages\\core\\src\\lib\\api.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\check-bun.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\load-config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\get-default-logger.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\schemas\\config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\z-loose-function.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\z-loose-object-without-index-signature.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\validate-config-path.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\types\\supported-config-type.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\parse-config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\search-config-path.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\is-root-dir.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-graphs.ts", "..\\..\\packages\\core\\src\\lib\\package\\types\\dependencies-field.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-package-circular-dependency-paths.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\dfs-traverse-graph-paths.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\extract-subgraph.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\dfs-traverse-graph.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-sorted-groups.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\load-packages.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\scan-packages.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\parse-package.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\scan-package-paths.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\run-for-each-package.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\run-subprocess.ts", "..\\..\\packages\\core\\src\\lib\\process\\types\\exit-state.ts", "..\\..\\packages\\core\\src\\lib\\process\\types\\std-type.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\get-commands-for-shell.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\parse-ps-flags.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\get-line-buffered-writer.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\read-stream.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\update-package-version.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\watch-package-changes.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\merge-graphs.ts", "..\\..\\packages\\core\\src\\lib\\watch\\types\\change-action.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\filter-files-modified-since.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\get-change-logic.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-ranking-range.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-ranking.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-disjoint.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-ranked-greater-than-or-equal.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-subgraph.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\normalise-watched-file-path.ts"],
3
+ "sources": ["..\\..\\packages\\core\\src\\lib\\types\\bump-version-type.ts", "..\\..\\packages\\core\\src\\lib\\api.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\check-bun.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\load-config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\get-default-logger.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\schemas\\config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\z-loose-function.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\z-loose-object-without-index-signature.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\validate-config-path.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\types\\supported-config-type.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\parse-config.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\search-config-path.ts", "..\\..\\packages\\core\\src\\lib\\configuration\\functions\\is-root-dir.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-graphs.ts", "..\\..\\packages\\core\\src\\lib\\package\\types\\dependencies-field.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-package-circular-dependency-paths.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\dfs-traverse-graph-paths.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\extract-subgraph.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\dfs-traverse-graph.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-sorted-groups.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\load-packages.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\scan-packages.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\parse-package.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\scan-package-paths.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\run-for-each-package.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\run-subprocess.ts", "..\\..\\packages\\core\\src\\lib\\process\\types\\exit-state.ts", "..\\..\\packages\\core\\src\\lib\\process\\types\\std-type.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\get-commands-for-shell.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\parse-ps-shell-flags.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\get-line-buffered-writer.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\read-stream.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\update-package-version.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\watch-package-changes.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\merge-graphs.ts", "..\\..\\packages\\core\\src\\lib\\watch\\types\\change-action.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\filter-files-modified-since.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\get-change-logic.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-ranking-range.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\generate-topological-ranking.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-disjoint.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-ranked-greater-than-or-equal.ts", "..\\..\\packages\\core\\src\\lib\\graph\\functions\\is-subgraph.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\normalise-pattern-separators.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\normalise-watched-file-path.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const BumpVersionType = {\r\n\tMajor: 'major',\r\n\tMinor: 'minor',\r\n\tPatch: 'patch',\r\n\tPremajor: 'premajor',\r\n\tPreminor: 'preminor',\r\n\tPrepatch: 'prepatch',\r\n\tPrerelease: 'prerelease',\r\n} as const;\r\n\r\nexport type BumpVersionType = ValueOf<typeof BumpVersionType>;\r\n",
6
6
  "import { isDefined } from '@package-pal/util';\r\nimport { checkBun } from './configuration/functions/check-bun.ts';\r\nimport { loadConfig } from './configuration/functions/load-config.ts';\r\nimport type { ActivatedConfigAndRootDir } from './configuration/types/activated-config.ts';\r\nimport { generateGraphs } from './graph/functions/generate-graphs.ts';\r\nimport { generatePackageCircularDependencyPaths } from './graph/functions/generate-package-circular-dependency-paths.ts';\r\nimport { generateTopologicalSortedGroups } from './graph/functions/generate-topological-sorted-groups.ts';\r\nimport type { PackageGraphs } from './graph/types/package-graphs.ts';\r\nimport type { PackageOrder } from './graph/types/package-order.ts';\r\nimport { loadPackages } from './package/functions/load-packages.ts';\r\nimport { runForEachPackage } from './package/functions/run-for-each-package.ts';\r\nimport { updatePackageVersion } from './package/functions/update-package-version.ts';\r\nimport type { PackageData } from './package/types/package-data.ts';\r\nimport type { BumpPackageVersionOptions } from './types/bump-package-version-options.ts';\r\nimport type { ForEachPackageOptions } from './types/for-each-package-options.ts';\r\nimport type { GetConfigOptions } from './types/get-config-options.ts';\r\nimport type { GetPackageCircularDependencyPathsOptions } from './types/get-package-circular-dependency-paths-options.ts';\r\nimport type { GetPackageDataOptions } from './types/get-package-data-options.ts';\r\nimport type { GetPackageGraphOptions } from './types/get-package-graph-options.ts';\r\nimport type { GetPackageOrderOptions } from './types/get-package-order-options.ts';\r\nimport type { WatchPackagesOptions } from './types/watch-packages-options.ts';\r\nimport { watchPackageChanges } from './watch/functions/watch-package-changes.ts';\r\n\r\n/**\r\n * Searches upward from the current directory for a config file until one is found or the root is reached.\r\n * If found, the config is loaded and merged with default values.\r\n */\r\nexport const readPackagePalConfig = (options?: GetConfigOptions): Promise<ActivatedConfigAndRootDir> => {\r\n\tcheckBun();\r\n\treturn loadConfig(options?.overrideConfigPath);\r\n};\r\n\r\n/**\r\n * Finds and reads all `package.json` files that match the given glob patterns.\r\n */\r\nexport const readPackageData = async (options: GetPackageDataOptions): Promise<PackageData[]> => {\r\n\tcheckBun();\r\n\tconst packagePatterns = Array.isArray(options.config.packages) ? options.config.packages : [options.config.packages];\r\n\treturn loadPackages(\r\n\t\toptions.rootDir, packagePatterns, options.config.logger,\r\n\t);\r\n};\r\n\r\n/**\r\n * Computes dependency graphs for all packages.\r\n */\r\nexport const getPackageGraphs = (options: GetPackageGraphOptions): PackageGraphs => {\r\n\tcheckBun();\r\n\treturn generateGraphs(options.packageData, options.config.logger);\r\n};\r\n\r\n/**\r\n * Computes topologically sorted groups of packages.\r\n * Actions must be performed on each group sequentially,\r\n * but packages within the same group can be processed in parallel.\r\n */\r\nexport const getPackageOrder = (options: GetPackageOrderOptions): PackageOrder => {\r\n\tcheckBun();\r\n\treturn generateTopologicalSortedGroups(options.packageGraphs.dependencies, options.config.logger);\r\n};\r\n\r\n/**\r\n * Detects circular dependencies between packages and computes paths representing each cycle.\r\n */\r\nexport const getPackageCircularDependencyPaths = (options: GetPackageCircularDependencyPathsOptions): string[][] => {\r\n\tcheckBun();\r\n\treturn generatePackageCircularDependencyPaths(\r\n\t\toptions.packageGraphs,\r\n\t\toptions.packageOrder,\r\n\t\toptions.config.logger,\r\n\t);\r\n};\r\n\r\n/**\r\n * Bumps the source package version and updates any dependents if the new version\r\n * is no longer semver-compatible, preserving original version prefixes (e.g., `^`, `~`).\r\n * Does not publish.\r\n */\r\nexport const bumpPackageVersion = (options: BumpPackageVersionOptions): Promise<void> => {\r\n\tcheckBun();\r\n\tconst exact = isDefined(options.exact) ? options.exact : options.config.version.exact;\r\n\tconst preId = isDefined(options.preId) ? options.preId : options.config.version.preId;\r\n\treturn updatePackageVersion(\r\n\t\toptions.packageName,\r\n\t\toptions.type,\r\n\t\toptions.packageGraphs,\r\n\t\tpreId,\r\n\t\texact,\r\n\t\toptions.config.logger,\r\n\t);\r\n};\r\n\r\n/**\r\n * Watches package source file changes, and triggers respective hooks defined in config.\r\n */\r\nexport const watchPackages = (options: WatchPackagesOptions): void => {\r\n\tcheckBun();\r\n\twatchPackageChanges(\r\n\t\toptions.packageData,\r\n\t\toptions.packageGraphs,\r\n\t\toptions.config.watch,\r\n\t\toptions.rootDir,\r\n\t\toptions.config.logger,\r\n\t);\r\n};\r\n\r\n/**\r\n * Run a command for each package.\r\n */\r\nexport const forEachPackage = (options: ForEachPackageOptions): Promise<void> => {\r\n\tcheckBun();\r\n\treturn runForEachPackage(\r\n\t\toptions.packageGraphs,\r\n\t\toptions.packageOrder,\r\n\t\toptions.getCommand,\r\n\t\toptions.config.logger,\r\n\t\toptions.topological,\r\n\t\toptions.concurrency,\r\n\t);\r\n};\r\n",
7
7
  "export const checkBun = () => {\r\n\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\r\n\tif (!Bun) {\r\n\t\tthrow new Error('This package must be run using the Bun runtime (see https://bun.com/).');\r\n\t}\r\n};\r\n",
8
- "import { styleText } from 'node:util';\r\nimport { dirname } from 'path';\r\nimport { cwd } from 'process';\r\nimport {\r\n\tdeepMergeDefined, formatSimpleLogObject, noOp,\r\n} from '@package-pal/util';\r\nimport type {\r\n\tActivatedConfig, ActivatedConfigAndRootDir,\r\n} from '../types/activated-config.ts';\r\nimport type { Logger } from '../types/logger.ts';\r\nimport { getDefaultLogger } from './get-default-logger.ts';\r\nimport { parseConfig } from './parse-config.ts';\r\nimport { searchConfigPath } from './search-config-path.ts';\r\n\r\nconst defaultConfig: ActivatedConfig = {\r\n\tpackages: 'packages/*',\r\n\tversion: {\r\n\t\tpreId: '',\r\n\t\texact: false,\r\n\t},\r\n\twatch: {\r\n\t\tdebounceMs: 500,\r\n\t\thooks: {\r\n\t\t\tonInit: noOp,\r\n\t\t\tonBeforeProcessPackage: noOp,\r\n\t\t\tonProcessPackage: noOp,\r\n\t\t\tonProcessPackageError: noOp,\r\n\t\t\tonAfterProcessPackage: noOp,\r\n\t\t\tonBeforePackagesReady: noOp,\r\n\t\t\tonPackagesReady: noOp,\r\n\t\t\tonAfterPackagesReady: noOp,\r\n\t\t},\r\n\t\tsubprocess: {\r\n\t\t\tpartialProcessing: false,\r\n\t\t\tconcurrency: null,\r\n\t\t\tmatchLongRunningOutputAsReady: null,\r\n\t\t\tmatchLongRunningOutputAsErrored: null,\r\n\t\t},\r\n\t},\r\n\tlogger: getDefaultLogger('info'),\r\n\tlogLevel: 'info',\r\n};\r\n\r\nexport const loadConfig = async (overrideConfigPath: string | undefined): Promise<ActivatedConfigAndRootDir> => {\r\n\tconst path = await searchConfigPath(overrideConfigPath);\r\n\r\n\tif (!path) {\r\n\t\tdefaultConfig.logger.info('No config file found. Defaults will be applied.');\r\n\t\treturn {\r\n\t\t\tconfig: defaultConfig,\r\n\t\t\trootDir: cwd(),\r\n\t\t};\r\n\t}\r\n\r\n\tconst parsedConfig = await parseConfig(path);\r\n\tconst parsedLogger = parsedConfig['logger' as keyof typeof parsedConfig] as Logger | undefined;\r\n\tconst logger = parsedLogger ?? (!parsedConfig.logLevel || parsedConfig.logLevel === defaultConfig.logLevel ? defaultConfig.logger : getDefaultLogger(parsedConfig.logLevel));\r\n\tlogger.debug(`Successfully loaded config file '${path}'.`);\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'User config:')), `\\n${styleText('dim', formatSimpleLogObject(parsedConfig))}`);\r\n\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'Default config:')), `\\n${styleText('dim', formatSimpleLogObject(defaultConfig))}`);\r\n\tconst activatedConfig = deepMergeDefined(defaultConfig, parsedConfig);\r\n\t// @ts-expect-error Override readonly.\r\n\tactivatedConfig.logger = logger;\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'Activated config:')), `\\n${styleText('dim', formatSimpleLogObject(activatedConfig))}`);\r\n\r\n\treturn {\r\n\t\tconfig: activatedConfig,\r\n\t\trootDir: dirname(path),\r\n\t};\r\n};\r\n",
8
+ "import { styleText } from 'node:util';\r\nimport { dirname } from 'path';\r\nimport { cwd } from 'process';\r\nimport {\r\n\tdeepMergeDefined, formatSimpleLogObject, noOp,\r\n} from '@package-pal/util';\r\nimport type {\r\n\tActivatedConfig, ActivatedConfigAndRootDir,\r\n} from '../types/activated-config.ts';\r\nimport type { Logger } from '../types/logger.ts';\r\nimport { getDefaultLogger } from './get-default-logger.ts';\r\nimport { parseConfig } from './parse-config.ts';\r\nimport { searchConfigPath } from './search-config-path.ts';\r\n\r\nconst defaultConfig: ActivatedConfig = {\r\n\tpackages: 'packages/*',\r\n\tversion: {\r\n\t\tpreId: '',\r\n\t\texact: false,\r\n\t},\r\n\twatch: {\r\n\t\tdebounceMs: 500,\r\n\t\tignore: '',\r\n\t\thooks: {\r\n\t\t\tonInit: noOp,\r\n\t\t\tonBeforeProcessPackage: noOp,\r\n\t\t\tonProcessPackage: noOp,\r\n\t\t\tonProcessPackageError: noOp,\r\n\t\t\tonAfterProcessPackage: noOp,\r\n\t\t\tonBeforePackagesReady: noOp,\r\n\t\t\tonPackagesReady: noOp,\r\n\t\t\tonAfterPackagesReady: noOp,\r\n\t\t},\r\n\t\tsubprocess: {\r\n\t\t\tpartialProcessing: false,\r\n\t\t\tconcurrency: null,\r\n\t\t\tmatchLongRunningOutputAsReady: null,\r\n\t\t\tmatchLongRunningOutputAsErrored: null,\r\n\t\t},\r\n\t},\r\n\tlogger: getDefaultLogger('info'),\r\n\tlogLevel: 'info',\r\n};\r\n\r\nexport const loadConfig = async (overrideConfigPath: string | undefined): Promise<ActivatedConfigAndRootDir> => {\r\n\tconst path = await searchConfigPath(overrideConfigPath);\r\n\r\n\tif (!path) {\r\n\t\tdefaultConfig.logger.info('No config file found. Defaults will be applied.');\r\n\t\treturn {\r\n\t\t\tconfig: defaultConfig,\r\n\t\t\trootDir: cwd(),\r\n\t\t};\r\n\t}\r\n\r\n\tconst parsedConfig = await parseConfig(path);\r\n\tconst parsedLogger = parsedConfig['logger' as keyof typeof parsedConfig] as Logger | undefined;\r\n\tconst logger = parsedLogger ?? (!parsedConfig.logLevel || parsedConfig.logLevel === defaultConfig.logLevel ? defaultConfig.logger : getDefaultLogger(parsedConfig.logLevel));\r\n\tlogger.debug(`Successfully loaded config file '${path}'.`);\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'User config:')), `\\n${styleText('dim', formatSimpleLogObject(parsedConfig))}`);\r\n\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'Default config:')), `\\n${styleText('dim', formatSimpleLogObject(defaultConfig))}`);\r\n\tconst activatedConfig = deepMergeDefined(defaultConfig, parsedConfig);\r\n\t// @ts-expect-error Override readonly.\r\n\tactivatedConfig.logger = logger;\r\n\tlogger.debug(styleText('dim', styleText('bgGray', 'Activated config:')), `\\n${styleText('dim', formatSimpleLogObject(activatedConfig))}`);\r\n\r\n\treturn {\r\n\t\tconfig: activatedConfig,\r\n\t\trootDir: dirname(path),\r\n\t};\r\n};\r\n",
9
9
  "import {\r\n\tassertDefined, noOp,\r\n} from '@package-pal/util';\r\nimport type { SchemaLogLevel } from '../types/config.ts';\r\nimport type { Logger } from '../types/logger.ts';\r\n\r\nconst levelOrder: Record<SchemaLogLevel, number> = {\r\n\tdebug: 0,\r\n\tinfo: 1,\r\n\twarn: 2,\r\n\terror: 3,\r\n\tsilent: Infinity,\r\n};\r\n\r\nexport const getDefaultLogger = (logLevel: SchemaLogLevel): Logger => {\r\n\tconst level = assertDefined(levelOrder[logLevel]);\r\n\r\n\treturn {\r\n\t\tdebug: level <= levelOrder.debug ? console.debug : noOp,\r\n\t\tinfo: level <= levelOrder.info ? console.info : noOp,\r\n\t\twarn: level <= levelOrder.warn ? console.warn : noOp,\r\n\t\terror: level <= levelOrder.error ? console.error : noOp,\r\n\t};\r\n};\r\n",
10
- "import * as z from 'zod/mini';\r\nimport { zLooseFunction } from '../functions/z-loose-function.ts';\r\nimport { zLooseObjectWithoutIndexSignature } from '../functions/z-loose-object-without-index-signature.ts';\r\n\r\nexport const LogLevel = z.enum([\r\n\t'debug',\r\n\t'info',\r\n\t'warn',\r\n\t'error',\r\n\t'silent',\r\n]);\r\n\r\nexport const Config = z.object({\r\n\t/**\r\n\t * Tell PackagePal where to look for package.json files.\r\n\t * @default 'packages/*'\r\n\t * @example\r\n\t * // ppal.config.json\r\n\t * {\r\n\t * \"packages\": \"packages/*\"\r\n\t * }\r\n\t */\r\n\tpackages: z.optional(z.union([z.string(), z.array(z.string())])),\r\n\t/**\r\n\t * Versioning strategy.\r\n\t */\r\n\tversion: z.optional(z.object({\r\n\t\t/**\r\n\t\t * Pre-release identifier to use when bumping versions.\r\n\t\t * @default ''\r\n\t\t * @example\r\n\t\t * // ppal.config.json\r\n\t\t * {\r\n\t\t * \"preId\": \"beta\"\r\n\t\t * }\r\n\t\t */\r\n\t\tpreId: z.optional(z.string()),\r\n\t\t/**\r\n\t\t * If true, all dependencies will be bumped to the new version exactly (no ranges or wildcards).\r\n\t\t * @default false\r\n\t\t */\r\n\t\texact: z.optional(z.boolean()),\r\n\t})),\r\n\t/**\r\n\t * Configuration for watching packages and triggering tasks on change.\r\n\t */\r\n\twatch: z.optional(zLooseObjectWithoutIndexSignature({\r\n\t\t/**\r\n\t\t * Delay (in milliseconds) before triggering after detecting a change.\r\n\t\t * @default 500\r\n\t\t */\r\n\t\tdebounceMs: z.optional(z.number()),\r\n\t\t/**\r\n\t\t * Lifecycle hooks to tap into different stages of topological package processing and readiness.\r\n\t\t */\r\n\t\thooks: z.optional(z.object({\r\n\t\t\t/**\r\n\t\t\t * Called once when watch is initialised.\r\n\t\t\t */\r\n\t\t\tonInit: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called before each package is processed.\r\n\t\t\t */\r\n\t\t\tonBeforeProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called to process each package.\r\n\t\t\t */\r\n\t\t\tonProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called if an error occurs while processing a package.\r\n\t\t\t */\r\n\t\t\tonProcessPackageError: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after each package is successfully processed.\r\n\t\t\t */\r\n\t\t\tonAfterProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed, before packages ready.\r\n\t\t\t */\r\n\t\t\tonBeforePackagesReady: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed.\r\n\t\t\t */\r\n\t\t\tonPackagesReady: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed, after packages ready.\r\n\t\t\t */\r\n\t\t\tonAfterPackagesReady: z.optional(zLooseFunction()),\r\n\t\t})),\r\n\t\t/**\r\n\t\t * Subprocess behavior options when running package commands.\r\n\t\t */\r\n\t\tsubprocess: z.optional(z.object({\r\n\t\t\t/**\r\n\t\t\t * If true, keep previous processes alive on changes when possible.\r\n\t\t\t * @default false\r\n\t\t\t */\r\n\t\t\tpartialProcessing: z.optional(z.boolean()),\r\n\t\t\t/**\r\n\t\t\t * If set, limits concurrency of parallel processing of (non-dependent) packages.\r\n\t\t\t */\r\n\t\t\tconcurrency: z.nullish(z.number()),\r\n\t\t\t/**\r\n\t\t\t * A string or list of strings that indicates a long-running subprocess is \"ready\" - from stdout or stderr.\r\n\t\t\t * @example\r\n\t\t\t * { \"matchLongRunningOutputAsReady\": [\"Listening on port\"] }\r\n\t\t\t */\r\n\t\t\tmatchLongRunningOutputAsReady: z.nullish(z.union([z.string(), z.array(z.string())])),\r\n\t\t\t/**\r\n\t\t\t * A string or list of strings that indicates a long-running subprocess has errored - from stdout or stderr.\r\n\t\t\t * @example\r\n\t\t\t * { \"matchLongRunningOutputAsErrored\": [\"ERROR\"] }\r\n\t\t\t */\r\n\t\t\tmatchLongRunningOutputAsErrored: z.nullish(z.union([z.string(), z.array(z.string())])),\r\n\t\t})),\r\n\t})),\r\n\t/**\r\n\t * Controls the verbosity of logs.\r\n\t * @default \"info\"\r\n\t * @example\r\n\t * { \"logLevel\": \"debug\" }\r\n\t */\r\n\tlogLevel: z.optional(LogLevel),\r\n});\r\n",
10
+ "import * as z from 'zod/mini';\r\nimport { zLooseFunction } from '../functions/z-loose-function.ts';\r\nimport { zLooseObjectWithoutIndexSignature } from '../functions/z-loose-object-without-index-signature.ts';\r\n\r\nexport const LogLevel = z.enum([\r\n\t'debug',\r\n\t'info',\r\n\t'warn',\r\n\t'error',\r\n\t'silent',\r\n]);\r\n\r\nexport const Config = z.object({\r\n\t/**\r\n\t * Tell PackagePal where to look for package.json files.\r\n\t * @default 'packages/*'\r\n\t * @example\r\n\t * // ppal.config.json\r\n\t * {\r\n\t * \"packages\": \"packages/*\"\r\n\t * }\r\n\t */\r\n\tpackages: z.optional(z.union([z.string(), z.array(z.string())])),\r\n\t/**\r\n\t * Versioning strategy.\r\n\t */\r\n\tversion: z.optional(z.object({\r\n\t\t/**\r\n\t\t * Pre-release identifier to use when bumping versions.\r\n\t\t * @default ''\r\n\t\t * @example\r\n\t\t * // ppal.config.json\r\n\t\t * {\r\n\t\t * \"preId\": \"beta\"\r\n\t\t * }\r\n\t\t */\r\n\t\tpreId: z.optional(z.string()),\r\n\t\t/**\r\n\t\t * If true, all dependencies will be bumped to the new version exactly (no ranges or wildcards).\r\n\t\t * @default false\r\n\t\t */\r\n\t\texact: z.optional(z.boolean()),\r\n\t})),\r\n\t/**\r\n\t * Configuration for watching packages and triggering tasks on change.\r\n\t */\r\n\twatch: z.optional(zLooseObjectWithoutIndexSignature({\r\n\t\t/**\r\n\t\t * Delay (in milliseconds) before triggering after detecting a change.\r\n\t\t * @default 500\r\n\t\t */\r\n\t\tdebounceMs: z.optional(z.number()),\r\n\t\t/**\r\n\t\t * Patterns to ignore and prevent watch updates from matching files.\r\n\t\t */\r\n\t\tignore: z.optional(z.union([z.string(), z.array(z.string())])),\r\n\t\t/**\r\n\t\t * Lifecycle hooks to tap into different stages of topological package processing and readiness.\r\n\t\t */\r\n\t\thooks: z.optional(z.object({\r\n\t\t\t/**\r\n\t\t\t * Called once when watch is initialised.\r\n\t\t\t */\r\n\t\t\tonInit: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called before each package is processed.\r\n\t\t\t */\r\n\t\t\tonBeforeProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called to process each package.\r\n\t\t\t */\r\n\t\t\tonProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called if an error occurs while processing a package.\r\n\t\t\t */\r\n\t\t\tonProcessPackageError: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after each package is successfully processed.\r\n\t\t\t */\r\n\t\t\tonAfterProcessPackage: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed, before packages ready.\r\n\t\t\t */\r\n\t\t\tonBeforePackagesReady: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed.\r\n\t\t\t */\r\n\t\t\tonPackagesReady: z.optional(zLooseFunction()),\r\n\t\t\t/**\r\n\t\t\t * Called after all packages have been processed, after packages ready.\r\n\t\t\t */\r\n\t\t\tonAfterPackagesReady: z.optional(zLooseFunction()),\r\n\t\t})),\r\n\t\t/**\r\n\t\t * Subprocess behavior options when running package commands.\r\n\t\t */\r\n\t\tsubprocess: z.optional(z.object({\r\n\t\t\t/**\r\n\t\t\t * If true, keep previous processes alive on changes when possible.\r\n\t\t\t * @default false\r\n\t\t\t */\r\n\t\t\tpartialProcessing: z.optional(z.boolean()),\r\n\t\t\t/**\r\n\t\t\t * If set, limits concurrency of parallel processing of (non-dependent) packages.\r\n\t\t\t */\r\n\t\t\tconcurrency: z.nullish(z.number()),\r\n\t\t\t/**\r\n\t\t\t * A string or list of strings that indicates a long-running subprocess is \"ready\" - from stdout or stderr.\r\n\t\t\t * @example\r\n\t\t\t * { \"matchLongRunningOutputAsReady\": [\"Listening on port\"] }\r\n\t\t\t */\r\n\t\t\tmatchLongRunningOutputAsReady: z.nullish(z.union([z.string(), z.array(z.string())])),\r\n\t\t\t/**\r\n\t\t\t * A string or list of strings that indicates a long-running subprocess has errored - from stdout or stderr.\r\n\t\t\t * @example\r\n\t\t\t * { \"matchLongRunningOutputAsErrored\": [\"ERROR\"] }\r\n\t\t\t */\r\n\t\t\tmatchLongRunningOutputAsErrored: z.nullish(z.union([z.string(), z.array(z.string())])),\r\n\t\t})),\r\n\t})),\r\n\t/**\r\n\t * Controls the verbosity of logs.\r\n\t * @default \"info\"\r\n\t * @example\r\n\t * { \"logLevel\": \"debug\" }\r\n\t */\r\n\tlogLevel: z.optional(LogLevel),\r\n});\r\n",
11
11
  "import { z } from 'zod/mini';\r\n\r\nexport const zLooseFunction = (): z.ZodMiniType<Function> => {\r\n\treturn z.transform((arg: unknown, ctx) => {\r\n\t\tif (typeof arg !== 'function') {\r\n\t\t\tctx.issues.push({\r\n\t\t\t\tmessage: 'Expected a function',\r\n\t\t\t\tcode: 'custom',\r\n\t\t\t\tinput: arg,\r\n\t\t\t});\r\n\t\t\treturn z.NEVER;\r\n\t\t}\r\n\r\n\t\treturn arg;\r\n\t});\r\n};\r\n",
12
12
  "import * as z from 'zod/mini';\r\nimport type * as core from 'zod/v4/core';\r\n\r\nexport const zLooseObjectWithoutIndexSignature = <T extends core.$ZodLooseShape = Record<never, core.SomeType>>(\r\n\tshape: T,\r\n\tparams?: string | core.$ZodObjectParams,\r\n): z.ZodMiniObject<T> => {\r\n\treturn z.looseObject(shape, params);\r\n};\r\n",
13
13
  "import {\r\n\tbasename, extname,\r\n} from 'path';\r\nimport type { ConfigValidationResult } from '../types/config-validation-result.ts';\r\nimport { SupportedConfigType } from '../types/supported-config-type.ts';\r\n\r\nexport const CONFIG_SUPPORTED_BASE_NAME = 'ppal.config' as const;\r\n\r\nexport const CONFIG_SUPPORTED_TYPES = Object.values(SupportedConfigType);\r\n\r\nexport const CONFIG_SUPPORTED_NAMES = CONFIG_SUPPORTED_TYPES.map(type => `${CONFIG_SUPPORTED_BASE_NAME}.${type}` as const);\r\n\r\nexport const validateConfigPath = (path: string): ConfigValidationResult => {\r\n\tconst name = basename(path);\r\n\tconst extension = extname(path);\r\n\tconst type = CONFIG_SUPPORTED_TYPES.find(option => `.${option}` === extension);\r\n\r\n\tif (!name.startsWith(CONFIG_SUPPORTED_BASE_NAME) || !type) {\r\n\t\treturn {\r\n\t\t\tvalid: false,\r\n\t\t\terrorMessage: `'${name}' is not a valid config file. Only '${CONFIG_SUPPORTED_NAMES.join(', ')}' are supported.`,\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tvalid: true,\r\n\t\tname,\r\n\t\ttype,\r\n\t};\r\n};\r\n",
14
14
  "import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const SupportedConfigType = {\r\n\tTS: 'ts',\r\n\tCTS: 'cts',\r\n\tMTS: 'mts',\r\n\tJS: 'js',\r\n\tCJS: 'cjs',\r\n\tMJS: 'mjs',\r\n} as const;\r\n\r\nexport type SupportedConfigType = ValueOf<typeof SupportedConfigType>;\r\n",
15
15
  "import { Config } from '../schemas/config.ts';\r\nimport type { SchemaConfig } from '../types/config.ts';\r\nimport { validateConfigPath } from './validate-config-path.ts';\r\n\r\nexport const parseConfig = async (path: string) => {\r\n\tconst result = validateConfigPath(path);\r\n\r\n\tif (!result.valid) {\r\n\t\tthrow new Error(result.errorMessage);\r\n\t}\r\n\r\n\tconst module = await import(path) as { default?: SchemaConfig };\r\n\tconst base = (module.default ?? module) as SchemaConfig;\r\n\treturn Config.parse(base);\r\n};\r\n",
16
- "import {\r\n\tisAbsolute, join, dirname,\r\n} from 'path';\r\nimport { isDefined } from '@package-pal/util';\r\nimport { isRootDir } from './is-root-dir.ts';\r\nimport { CONFIG_SUPPORTED_NAMES } from './validate-config-path.ts';\r\n\r\nconst dirDistLimit = 25;\r\n\r\nconst checkForConfigInDir = async (dir: string) => {\r\n\treturn new Promise<string | undefined>((resolve) => {\r\n\t\tlet pending = CONFIG_SUPPORTED_NAMES.length;\r\n\r\n\t\tfor (const name of CONFIG_SUPPORTED_NAMES) {\r\n\t\t\tconst pathToCheck = join(dir, name);\r\n\r\n\t\t\tvoid Bun.file(pathToCheck).exists()\r\n\t\t\t\t.then((exists) => {\r\n\t\t\t\t\tpending--;\r\n\r\n\t\t\t\t\tif (exists) {\r\n\t\t\t\t\t\tresolve(pathToCheck);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!pending) {\r\n\t\t\t\t\t\tresolve(undefined);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t});\r\n};\r\n\r\nexport const searchConfigPath = async (pathOverride?: string) => {\r\n\tlet activeDir = process.cwd();\r\n\r\n\tif (isDefined(pathOverride)) {\r\n\t\tif (isAbsolute(pathOverride)) {\r\n\t\t\treturn pathOverride;\r\n\t\t}\r\n\r\n\t\treturn join(activeDir, pathOverride);\r\n\t}\r\n\r\n\tlet trackDist = 0;\r\n\twhile (!isRootDir(activeDir)) {\r\n\t\tif (trackDist > dirDistLimit) {\r\n\t\t\tthrow new Error(`Maximum config search directory distance reached (${dirDistLimit.toString()}).`);\r\n\t\t}\r\n\r\n\t\tconst configPath = await checkForConfigInDir(activeDir);\r\n\r\n\t\tif (configPath) {\r\n\t\t\treturn configPath;\r\n\t\t}\r\n\r\n\t\ttrackDist++;\r\n\t\tactiveDir = dirname(activeDir);\r\n\t}\r\n\r\n\treturn checkForConfigInDir(activeDir);\r\n};\r\n",
16
+ "import {\r\n\tisAbsolute, join, dirname,\r\n} from 'path';\r\nimport { isDefined } from '@package-pal/util';\r\nimport { isRootDir } from './is-root-dir.ts';\r\nimport { CONFIG_SUPPORTED_NAMES } from './validate-config-path.ts';\r\n\r\nconst dirDistLimit = 25;\r\n\r\nconst checkForConfigInDir = async (dir: string) => {\r\n\tconst checks = await Promise.all(CONFIG_SUPPORTED_NAMES.map(name => Bun.file(join(dir, name)).exists()\r\n\t\t.then(exists => ({\r\n\t\t\tname,\r\n\t\t\texists,\r\n\t\t}))));\r\n\tconst found = checks.find(c => c.exists);\r\n\treturn found ? join(dir, found.name) : undefined;\r\n};\r\n\r\nexport const searchConfigPath = async (pathOverride?: string) => {\r\n\tlet activeDir = process.cwd();\r\n\r\n\tif (isDefined(pathOverride)) {\r\n\t\tif (isAbsolute(pathOverride)) {\r\n\t\t\treturn pathOverride;\r\n\t\t}\r\n\r\n\t\treturn join(activeDir, pathOverride);\r\n\t}\r\n\r\n\tlet trackDist = 0;\r\n\twhile (!isRootDir(activeDir)) {\r\n\t\tif (trackDist > dirDistLimit) {\r\n\t\t\tthrow new Error(`Maximum config search directory distance reached (${dirDistLimit.toString()}).`);\r\n\t\t}\r\n\r\n\t\tconst configPath = await checkForConfigInDir(activeDir);\r\n\r\n\t\tif (configPath) {\r\n\t\t\treturn configPath;\r\n\t\t}\r\n\r\n\t\ttrackDist++;\r\n\t\tactiveDir = dirname(activeDir);\r\n\t}\r\n\r\n\treturn checkForConfigInDir(activeDir);\r\n};\r\n",
17
17
  "import { dirname } from 'path';\r\n\r\nexport const isRootDir = (path: string) => {\r\n\treturn dirname(path) === path;\r\n};\r\n",
18
18
  "import { styleText } from 'node:util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { DependenciesField } from '../../package/types/dependencies-field.ts';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\ninterface TrackPackageOptions {\r\n\ttrackedDependencies: Set<string>;\r\n\tpackageNames: Set<string>;\r\n\tpackageData: PackageData;\r\n}\r\n\r\nconst trackPackageEntryDependencies = ({\r\n\ttrackedDependencies,\r\n\tpackageNames,\r\n\tpackageData,\r\n}: TrackPackageOptions) => {\r\n\tconst iterateEntries = Object.values(DependenciesField).map(field => packageData[field]);\r\n\r\n\tfor (const packageEntries of iterateEntries) {\r\n\t\tif (!packageEntries) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tfor (const trackPackageName of Object.keys(packageEntries)) {\r\n\t\t\tif (!packageNames.has(trackPackageName)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttrackedDependencies.add(trackPackageName);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst generateReverseGraph = (packages: PackageData[], packageGraph: PackageGraph) => {\r\n\tconst reversePackageGraph: PackageGraph = new Map(packages.map(packageData => [packageData.name, {\r\n\t\tpackageData: packageData,\r\n\t\tpointsToPackages: new Set<string>(),\r\n\t}]));\r\n\r\n\tfor (const packageData of packages) {\r\n\t\tconst packageNode = assertDefined(packageGraph.get(packageData.name));\r\n\r\n\t\tfor (const dependency of packageNode.pointsToPackages) {\r\n\t\t\tconst reverseNode = assertDefined(reversePackageGraph.get(dependency));\r\n\t\t\treverseNode.pointsToPackages.add(packageData.name);\r\n\t\t}\r\n\t}\r\n\r\n\treturn reversePackageGraph;\r\n};\r\n\r\nexport const generateGraphs = (packages: PackageData[], logger: Logger) => {\r\n\tlogger.debug(styleText('dim', `Generating package graphs for ${packages.length.toString()} packages...`));\r\n\tconst packageNames = new Set(packages.map(packageData => packageData.name));\r\n\tconst packageGraph: PackageGraph = new Map();\r\n\r\n\tfor (const packageData of packages) {\r\n\t\tconst trackedDependencies = new Set<string>();\r\n\r\n\t\ttrackPackageEntryDependencies({\r\n\t\t\ttrackedDependencies,\r\n\t\t\tpackageNames,\r\n\t\t\tpackageData,\r\n\t\t});\r\n\r\n\t\tpackageGraph.set(packageData.name, {\r\n\t\t\tpackageData: packageData,\r\n\t\t\tpointsToPackages: trackedDependencies,\r\n\t\t});\r\n\t}\r\n\r\n\tconst reversePackageGraph = generateReverseGraph(packages, packageGraph);\r\n\r\n\treturn {\r\n\t\tdependencies: packageGraph,\r\n\t\tdependents: reversePackageGraph,\r\n\t};\r\n};\r\n",
19
19
  "import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const DependenciesField = {\r\n\tDependencies: 'dependencies',\r\n\tDevDependencies: 'devDependencies',\r\n\tPeerDependencies: 'peerDependencies',\r\n\tOptionalDependencies: 'optionalDependencies',\r\n} as const;\r\n\r\nexport type DependenciesField = ValueOf<typeof DependenciesField>;\r\n",
@@ -23,31 +23,32 @@
23
23
  "import { assertDefined } from '@package-pal/util';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport const dfsTraverseGraph = function* (graph: PackageGraph, traverseFromPackages: string | string[]): Generator<Readonly<PackageData>, void, undefined> {\r\n\tconst visited = new Set<string>();\r\n\tconst stack = Array.isArray(traverseFromPackages) ? [...traverseFromPackages] : [traverseFromPackages];\r\n\r\n\twhile (stack.length) {\r\n\t\tconst activePackage = assertDefined(stack.pop());\r\n\t\tif (visited.has(activePackage)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tvisited.add(activePackage);\r\n\r\n\t\tconst node = graph.get(activePackage);\r\n\t\tif (!node) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tyield node.packageData;\r\n\r\n\t\tfor (const dep of node.pointsToPackages) {\r\n\t\t\tif (!visited.has(dep)) {\r\n\t\t\t\tstack.push(dep);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n",
24
24
  "import { styleText } from 'node:util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\nimport type { PackageOrder } from '../types/package-order.ts';\r\n\r\nconst getCircularDependencies = (inDegree: Map<string, number>) => {\r\n\treturn Array.from(inDegree.keys()).sort((a, b) => {\r\n\t\tconst degA = assertDefined(inDegree.get(a));\r\n\t\tconst degB = assertDefined(inDegree.get(b));\r\n\t\treturn degB - degA;\r\n\t})\r\n\t\t.sort();\r\n};\r\n\r\nexport const generateTopologicalSortedGroups = (packageGraph: PackageGraph, logger: Logger): PackageOrder => {\r\n\tlogger.debug(styleText('dim', 'Generating topological sorted groups...'));\r\n\tconst graphEntries = Array.from(packageGraph.entries());\r\n\tconst inDegree = new Map<string, number>(graphEntries.map(([packageName]) => [packageName, 0]));\r\n\tconst graph = new Map<string, Set<string>>(graphEntries.map(([packageName]) => [packageName, new Set()]));\r\n\r\n\tfor (const [packageName, node] of graphEntries) {\r\n\t\tfor (const dependencyName of node.pointsToPackages) {\r\n\t\t\tassertDefined(graph.get(dependencyName)).add(packageName);\r\n\t\t\tinDegree.set(packageName, assertDefined(inDegree.get(packageName)) + 1);\r\n\t\t}\r\n\t}\r\n\r\n\tconst result: string[][] = [];\r\n\tlet ready: string[] = [];\r\n\r\n\tfor (const [packageName, deg] of inDegree) {\r\n\t\tif (deg === 0) {\r\n\t\t\tready.push(packageName);\r\n\t\t}\r\n\t}\r\n\r\n\twhile (ready.length > 0) {\r\n\t\tresult.push(ready);\r\n\t\tconst nextReady: string[] = [];\r\n\r\n\t\tfor (const packageName of ready) {\r\n\t\t\tinDegree.delete(packageName);\r\n\t\t\tconst dependentPackages = graph.get(packageName);\r\n\r\n\t\t\tif (!dependentPackages) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor (const dependentPackage of dependentPackages) {\r\n\t\t\t\tinDegree.set(dependentPackage, assertDefined(inDegree.get(dependentPackage)) - 1);\r\n\t\t\t\tif (inDegree.get(dependentPackage) === 0) {\r\n\t\t\t\t\tnextReady.push(dependentPackage);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tready = nextReady;\r\n\t}\r\n\r\n\tlogger.debug(styleText('dim', `Sorted packages into ${result.length.toString()} sequential groups of parallelizable dependencies.`));\r\n\r\n\tconst circular = getCircularDependencies(inDegree);\r\n\tif (circular.length) {\r\n\t\tlogger.warn(styleText('yellow', `${circular.length.toString()} packages could not be sorted due to circular dependencies. Correct ordering cannot be guaranteed.`));\r\n\t}\r\n\r\n\treturn {\r\n\t\tgroups: result.map(group => group.sort()),\r\n\t\tcircular,\r\n\t};\r\n};\r\n",
25
25
  "import { styleText } from 'node:util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageData } from '../types/package-data.ts';\r\nimport { scanPackages } from './scan-packages.ts';\r\n\r\nexport const loadPackages = async (\r\n\trootDir: string, packagePatterns: string[], logger: Logger,\r\n) => {\r\n\tconst patternContent = packagePatterns.map(pattern => `'${pattern}'`).join(', ');\r\n\tlogger.debug(styleText('dim', `Loading packages matching pattern/s ${patternContent}...${rootDir ? ` from ${rootDir}` : ''}`));\r\n\tconst packages: PackageData[] = [];\r\n\tconst seen = new Set<string>();\r\n\r\n\tfor await (const packageData of scanPackages(\r\n\t\tArray.from(new Set(packagePatterns)), logger, rootDir,\r\n\t)) {\r\n\t\tif (seen.has(packageData.name)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tseen.add(packageData.name);\r\n\t\tpackages.push(packageData);\r\n\t}\r\n\r\n\tif (!packages.length) {\r\n\t\tthrow new Error(`No packages found for pattern/s ${patternContent}.`);\r\n\t}\r\n\r\n\treturn packages;\r\n};\r\n",
26
- "import { styleText } from 'node:util';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport { formatUnknownError } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageData } from '../types/package-data.ts';\r\nimport { parsePackage } from './parse-package.ts';\r\nimport { scanPackagePaths } from './scan-package-paths.ts';\r\n\r\nexport const scanPackages = async function* (\r\n\tpatterns: string[], logger: Logger, cwd?: string,\r\n): AsyncIterable<PackageData> {\r\n\tfor await (const path of scanPackagePaths(patterns, cwd)) {\r\n\t\tconst packagePath = join(path, 'package.json');\r\n\t\tconst dir = dirname(packagePath);\r\n\r\n\t\ttry {\r\n\t\t\tlogger.debug(styleText('dim', `Trying to read read package.json in '${dir}'.`));\r\n\t\t\tconst file = Bun.file(packagePath);\r\n\r\n\t\t\t// TODO-MC: investigate file.text() hangs for non-existent file???\r\n\t\t\tif (!file.size) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Failed to read package.json in '${dir}' - ${styleText('red', 'File not found')}.`));\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst text = await file.text();\r\n\t\t\tconst packageData = parsePackage(packagePath, text);\r\n\r\n\t\t\tif (!packageData) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Invalid package.json found in '${dir}'.`));\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlogger.debug(styleText('dim', `Successfully read package.json in '${dir}'.`));\r\n\t\t\tyield packageData;\r\n\t\t} catch (e: unknown) {\r\n\t\t\tlogger.debug(styleText('dim', `Failed to read package.json in '${dir}' - ${styleText('red', formatUnknownError(e))}.`));\r\n\t\t}\r\n\t}\r\n};\r\n",
26
+ "import { styleText } from 'node:util';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport { formatUnknownError } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageData } from '../types/package-data.ts';\r\nimport { parsePackage } from './parse-package.ts';\r\nimport { scanPackagePaths } from './scan-package-paths.ts';\r\n\r\nexport const scanPackages = async function* (\r\n\tpatterns: string[], logger: Logger, cwd?: string,\r\n): AsyncIterable<PackageData> {\r\n\tfor await (const path of scanPackagePaths(patterns, cwd)) {\r\n\t\tconst packagePath = join(path, 'package.json');\r\n\t\tconst dir = dirname(packagePath);\r\n\r\n\t\ttry {\r\n\t\t\tlogger.debug(styleText('dim', `Trying to read read package.json in '${dir}'.`));\r\n\t\t\tconst file = Bun.file(packagePath);\r\n\r\n\t\t\t// TODO-MC: Windows - file.text() kills the process for non-existent files...\r\n\t\t\tif (!file.size) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Failed to read package.json in '${dir}' - ${styleText('red', 'File not found')}.`));\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst text = await file.text();\r\n\t\t\tconst packageData = parsePackage(packagePath, text);\r\n\r\n\t\t\tif (!packageData) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Invalid package.json found in '${dir}'.`));\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlogger.debug(styleText('dim', `Successfully read package.json in '${dir}'.`));\r\n\t\t\tyield packageData;\r\n\t\t} catch (e: unknown) {\r\n\t\t\tlogger.debug(styleText('dim', `Failed to read package.json in '${dir}' - ${styleText('red', formatUnknownError(e))}.`));\r\n\t\t}\r\n\t}\r\n};\r\n",
27
27
  "import {\r\n\tdirname, basename,\r\n} from 'path';\r\nimport { isDefined } from '@package-pal/util';\r\nimport { DependenciesField } from '../types/dependencies-field.ts';\r\nimport type { PackageData } from '../types/package-data.ts';\r\n\r\nexport const parsePackage = (path: string, text: string): PackageData | undefined => {\r\n\tconst base: unknown = JSON.parse(text);\r\n\r\n\tif (!isDefined(base) || typeof base !== 'object') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst props = base as Partial<PackageData>;\r\n\tconst {\r\n\t\tdependencies, peerDependencies, devDependencies,\r\n\t} = props;\r\n\r\n\tfor (const field of Object.values(DependenciesField)) {\r\n\t\tconst value = props[field];\r\n\t\tif (isDefined(value) && typeof value !== 'object') {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\trawContent: text,\r\n\t\tpath,\r\n\t\tname: props.name ?? path,\r\n\t\tdir: basename(dirname(path)),\r\n\t\tversion: props.version ?? undefined,\r\n\t\tdependencies: dependencies ?? undefined,\r\n\t\tpeerDependencies: peerDependencies ?? undefined,\r\n\t\tdevDependencies: devDependencies ?? undefined,\r\n\t};\r\n};\r\n",
28
28
  "import { scanGlobPatternPaths } from '@package-pal/util';\r\nimport type { GlobScanOptions } from 'bun';\r\n\r\nexport const scanPackagePaths = (packages: string[], cwd?: string) => {\r\n\tconst baseOpts = {\r\n\t\tabsolute: true,\r\n\t\tonlyFiles: false,\r\n\t} as const satisfies Partial<GlobScanOptions>;\r\n\r\n\tconst opts: GlobScanOptions = {\r\n\t\t...baseOpts,\r\n\t\t...(cwd ? { cwd } : {}),\r\n\t};\r\n\r\n\treturn scanGlobPatternPaths(packages, opts);\r\n};\r\n",
29
29
  "import { dirname } from 'path';\r\nimport {\r\n\tassertDefined, runAsync,\r\n} from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { PackageOrder } from '../../graph/types/package-order.ts';\r\nimport { runSubprocess } from '../../process/functions/run-subprocess.ts';\r\nimport { ExitState } from '../../process/types/exit-state.ts';\r\nimport type { ForEachCommandCallback } from '../../types/for-each-command-callback.ts';\r\n\r\nexport const runForEachPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageOrder: PackageOrder,\r\n\tgetCommand: ForEachCommandCallback,\r\n\tlogger: Logger,\r\n\ttopological = true,\r\n\tconcurrency?: number,\r\n) => {\r\n\tconst controller = new AbortController();\r\n\tlet processPackageOrder = packageOrder.groups.concat(packageOrder.circular);\r\n\tif (!topological) {\r\n\t\tprocessPackageOrder = [processPackageOrder.flat()];\r\n\t}\r\n\r\n\tfor (const group of processPackageOrder) {\r\n\t\tawait runAsync(group.map(packageName => async () => {\r\n\t\t\tconst packageNode = assertDefined(packageGraphs.dependencies.get(packageName));\r\n\t\t\tconst processPackageProps = {\r\n\t\t\t\tname: packageName,\r\n\t\t\t\tdir: packageNode.packageData.dir,\r\n\t\t\t};\r\n\t\t\tconst processPackageCwd = dirname(packageNode.packageData.path);\r\n\r\n\t\t\tconst shellCommand = await getCommand(processPackageProps);\r\n\t\t\tif (!shellCommand) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst exitState = await runSubprocess({\r\n\t\t\t\tdebugName: `run for ${packageName}`,\r\n\t\t\t\tshellCommand: shellCommand,\r\n\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\tsignal: controller.signal,\r\n\t\t\t\tlogger,\r\n\t\t\t});\r\n\r\n\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\tcontroller.abort();\r\n\t\t\t\tthrow new Error('Command failed.');\r\n\t\t\t}\r\n\t\t}),\r\n\t\tconcurrency);\r\n\t}\r\n};\r\n",
30
30
  "import { styleText } from 'node:util';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { ExitState } from '../types/exit-state.ts';\r\nimport { StdType } from '../types/std-type.ts';\r\nimport { getCommandsForShell } from './get-commands-for-shell.ts';\r\nimport { getLineBufferedWriter } from './get-line-buffered-writer.ts';\r\nimport { readStream } from './read-stream.ts';\r\n\r\nconst sigintCode = 130;\r\nconst sigtermCode = 143;\r\nconst sigkillCode = 137;\r\nconst cancelCodes = new Set([\r\n\tsigintCode,\r\n\tsigtermCode,\r\n\tsigkillCode,\r\n]);\r\n\r\nexport const runSubprocess = async (opts: {\r\n\tdebugName: string;\r\n\tshellCommand: string;\r\n\tcwd?: string;\r\n\tsignal?: AbortSignal;\r\n\tlogger: Logger;\r\n\tonStdChunk?: (chunk: string, type: StdType) => void;\r\n}) => {\r\n\tif (opts.signal?.aborted) {\r\n\t\topts.logger.debug(styleText('dim', `Skipped '${opts.debugName}' subprocess command; signal already cancelled.`));\r\n\t\treturn ExitState.Cancelled;\r\n\t}\r\n\r\n\tconst commands = getCommandsForShell(opts.shellCommand);\r\n\tconst baseSubprocessOpts = {\r\n\t\tstdout: 'pipe',\r\n\t\tstderr: 'pipe',\r\n\t\tstdin: 'ignore',\r\n\t} as const;\r\n\tconst subprocessOpts = {\r\n\t\t...baseSubprocessOpts,\r\n\t\t...(opts.cwd ? { cwd: opts.cwd } : {}),\r\n\t\t...(opts.signal ? { signal: opts.signal } : {}),\r\n\t};\r\n\r\n\tconst subprocess = Bun.spawn(commands, subprocessOpts);\r\n\tconst pid = subprocess.pid.toString();\r\n\tconst minPrefixLen = 14;\r\n\r\n\tconst [readStdout, readStderr] = (\r\n\t\t[{\r\n\t\t\tsource: subprocess.stdout,\r\n\t\t\ttype: StdType.Out,\r\n\t\t\twrite: getLineBufferedWriter(styleText('dim', `[O-${pid}]`.padEnd(minPrefixLen, ' '))),\r\n\t\t}, {\r\n\t\t\tsource: subprocess.stderr,\r\n\t\t\ttype: StdType.Err,\r\n\t\t\twrite: getLineBufferedWriter(styleText('yellow', styleText('dim', `[E-${pid}]`.padEnd(minPrefixLen, ' ')))),\r\n\t\t}] as const\r\n\t).map(({\r\n\t\tsource, type, write,\r\n\t}) => {\r\n\t\treturn readStream(source, (chunk) => {\r\n\t\t\twrite(chunk);\r\n\r\n\t\t\tif (opts.onStdChunk) {\r\n\t\t\t\topts.onStdChunk(chunk, type);\r\n\t\t\t}\r\n\t\t});\r\n\t}) as [Promise<void>, Promise<void>];\r\n\r\n\tconst executedCommand = commands.join(' ');\r\n\topts.logger.debug(styleText('dim', `Started '${opts.debugName}' subprocess command '${opts.shellCommand}' (${executedCommand}) with PID ${pid}.`));\r\n\r\n\tconst [\r\n\t\t,,exitState,\r\n\t] = await Promise.all([\r\n\t\treadStdout,\r\n\t\treadStderr,\r\n\t\tsubprocess.exited.then((exitCode) => {\r\n\t\t\tif (cancelCodes.has(exitCode)) {\r\n\t\t\t\topts.logger.debug(styleText('dim', `Cancelled '${opts.debugName}' subprocess command; PID ${pid} exited.`));\r\n\t\t\t\treturn ExitState.Cancelled;\r\n\t\t\t}\r\n\r\n\t\t\tif (exitCode !== 0) {\r\n\t\t\t\topts.logger.error(styleText('red', `'${opts.debugName}' command '${opts.shellCommand}' (${executedCommand}) with PID ${pid} failed with exit code ${exitCode.toString()}.`));\r\n\t\t\t\treturn ExitState.Errored;\r\n\t\t\t}\r\n\r\n\t\t\topts.logger.debug(styleText('dim', `Completed '${opts.debugName}' subprocess command; PID ${pid} exited.`));\r\n\t\t\treturn ExitState.Completed;\r\n\t\t}),\r\n\t]);\r\n\r\n\treturn exitState;\r\n};\r\n",
31
31
  "import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const ExitState = {\r\n\tCompleted: 'Completed',\r\n\tErrored: 'Errored',\r\n\tCancelled: 'Cancelled',\r\n} as const;\r\n\r\nexport type ExitState = ValueOf<typeof ExitState>;\r\n",
32
32
  "import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const StdType = {\r\n\tOut: 'Out',\r\n\tErr: 'Err',\r\n} as const;\r\n\r\nexport type StdType = ValueOf<typeof StdType>;\r\n",
33
- "import {\n\tescapeShellArg,\n\tgetShell, Shell,\n} from '@package-pal/util';\nimport { parsePsFlags } from './parse-ps-flags.ts';\n\nlet shell: Shell | undefined;\n\nexport const getCommandsForShell = (shellCommand: string): string[] => {\n\tshell = shell ?? getShell();\n\n\tswitch (shell) {\n\t\tcase Shell.cmd:\n\t\t\treturn [\n\t\t\t\tshell,\n\t\t\t\t'/c',\n\t\t\t\tescapeShellArg(shellCommand, shell),\n\t\t\t];\n\n\t\tcase Shell.pwsh:\n\t\tcase Shell.powershell:\n\t\t\tconst {\n\t\t\t\tflags, command,\n\t\t\t} = parsePsFlags(shellCommand);\n\t\t\tconst encodedCommand = Buffer.from(command, 'utf16le').toString('base64');\n\t\t\treturn [\n\t\t\t\tshell,\n\t\t\t\t...flags,\n\t\t\t\t...(encodedCommand ? ['-EncodedCommand', encodedCommand] : []),\n\t\t\t];\n\n\t\tdefault:\n\t\t\treturn [\n\t\t\t\tshell,\n\t\t\t\t'-c',\n\t\t\t\tescapeShellArg(shellCommand, shell),\n\t\t\t];\n\t}\n};\n",
34
- "import { assertDefined } from '@package-pal/util';\r\n\r\nconst knownFlagsWithParams = new Set([\r\n\t'-executionpolicy',\r\n\t'-windowstyle',\r\n\t'-version',\r\n\t'-file',\r\n\t'-inputformat',\r\n\t'-outputformat',\r\n\t'-workingdirectory',\r\n\t'-psconsolefile',\r\n\t'-pshome',\r\n\t'-configurationname',\r\n\t'-argumentlist',\r\n\t'-warningaction',\r\n\t'-erroraction',\r\n\t'-informationaction',\r\n\t'-informationvariable',\r\n\t'-warningvariable',\r\n\t'-errorvariable',\r\n\t'-outvariable',\r\n\t'-outbuffer',\r\n\t'-throttlelimit',\r\n\t'-culture',\r\n\t'-uiculture',\r\n]);\r\n\r\nconst knownFlagsNoParams = new Set([\r\n\t'-noprofile',\r\n\t'-noninteractive',\r\n\t'-nologo',\r\n\t'-sta',\r\n\t'-mta',\r\n\t'-encodedcommand',\r\n\t'-command',\r\n\t'-help',\r\n\t'-?',\r\n\t'-verbose',\r\n\t'-debug',\r\n\t'-whatif',\r\n\t'-confirm',\r\n\t'-usewindowspowershell',\r\n\t'-noexit',\r\n]);\r\n\r\nexport const parsePsFlags = (input: string) => {\r\n\tconst tokens = input.trim().split(/\\s+/);\r\n\tconst flags: string[] = [];\r\n\tlet i = 0;\r\n\r\n\twhile (i < tokens.length) {\r\n\t\tconst token = assertDefined(tokens[i]);\r\n\t\tconst tokenLower = token.toLowerCase();\r\n\r\n\t\tif (knownFlagsWithParams.has(tokenLower)) {\r\n\t\t\tif (i + 1 >= tokens.length) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tflags.push(token, assertDefined(tokens[i + 1]));\r\n\t\t\ti += 2;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (knownFlagsNoParams.has(tokenLower)) {\r\n\t\t\tflags.push(token);\r\n\t\t\ti += 1;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tbreak;\r\n\t}\r\n\r\n\tconst command = tokens.slice(i).join(' ');\r\n\r\n\treturn {\r\n\t\tflags,\r\n\t\tcommand,\r\n\t};\r\n};\r\n",
33
+ "import {\r\n\tescapeShellArg,\r\n\tgetShell, Shell,\r\n} from '@package-pal/util';\r\nimport { parsePsShellFlags } from './parse-ps-shell-flags.ts';\r\n\r\nexport const getCommandsForShell = (shellCommand: string): string[] => {\r\n\tconst shell = getShell();\r\n\r\n\tswitch (shell) {\r\n\t\tcase Shell.cmd:\r\n\t\t\treturn [\r\n\t\t\t\tshell,\r\n\t\t\t\t'/c',\r\n\t\t\t\tescapeShellArg(shellCommand, shell),\r\n\t\t\t];\r\n\r\n\t\tcase Shell.pwsh:\r\n\t\tcase Shell.powershell:\r\n\t\t\tconst {\r\n\t\t\t\tflags, command, isPreEncoded,\r\n\t\t\t} = parsePsShellFlags(shellCommand);\r\n\r\n\t\t\tif (isPreEncoded) {\r\n\t\t\t\treturn [shell, shellCommand];\r\n\t\t\t}\r\n\r\n\t\t\tconst encodedCommand = Buffer.from(command || ' ', 'utf16le').toString('base64');\r\n\t\t\treturn [\r\n\t\t\t\tshell,\r\n\t\t\t\t...flags,\r\n\t\t\t\t...(encodedCommand ? ['-EncodedCommand', encodedCommand] : []),\r\n\t\t\t];\r\n\r\n\t\tdefault:\r\n\t\t\treturn [\r\n\t\t\t\tshell,\r\n\t\t\t\t'-c',\r\n\t\t\t\tescapeShellArg(shellCommand, shell),\r\n\t\t\t];\r\n\t}\r\n};\r\n",
34
+ "import { assertDefined } from '@package-pal/util';\r\n\r\nconst shellFlagsWithParams = new Set([\r\n\t'-executionpolicy',\r\n\t'-windowstyle',\r\n\t'-version',\r\n]);\r\n\r\nconst shellFlagsNoParams = new Set([\r\n\t'-noprofile',\r\n\t'-noninteractive',\r\n\t'-sta',\r\n\t'-mta',\r\n\t'-nologo',\r\n\t'-help',\r\n\t'-?',\r\n\t'-noexit',\r\n\t'-usewindowspowerShell',\r\n]);\r\n\r\n/**\r\n * Extracts shell-level flags from a command string\r\n */\r\nexport const parsePsShellFlags = (input: string) => {\r\n\tconst isPreEncoded = input.toLowerCase().includes('-encodedcommand');\r\n\tconst tokens = input.match(/\"[^\"]*\"|'[^']*'|\\S+/g) ?? [];\r\n\tconst flags = new Set<string>();\r\n\tlet i = 0;\r\n\r\n\twhile (i < tokens.length) {\r\n\t\tconst token = assertDefined(tokens[i]);\r\n\t\tconst tokenLower = token.toLowerCase();\r\n\r\n\t\tif (shellFlagsWithParams.has(tokenLower)) {\r\n\t\t\tflags.add(token);\r\n\r\n\t\t\tif (i + 1 < tokens.length) {\r\n\t\t\t\tflags.add(assertDefined(tokens[i + 1]));\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\ti++;\r\n\t\t} else if (shellFlagsNoParams.has(tokenLower)) {\r\n\t\t\tflags.add(token);\r\n\t\t\ti++;\r\n\t\t} else {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tconst command = tokens.slice(i).join(' ');\r\n\r\n\treturn {\r\n\t\tflags,\r\n\t\tcommand,\r\n\t\tisPreEncoded,\r\n\t};\r\n};\r\n",
35
35
  "import { identity } from '@package-pal/util';\r\n\r\nexport const getLineBufferedWriter = (\r\n\tprefix: string, style: (s: string) => string = identity, write: (chunk: string) => void = process.stdout.write.bind(process.stdout),\r\n) => {\r\n\tlet buffer = '';\r\n\r\n\treturn (chunk: string) => {\r\n\t\tbuffer += chunk;\r\n\r\n\t\tconst lines = buffer.split('\\n');\r\n\t\tbuffer = lines.pop() ?? '';\r\n\r\n\t\tfor (const line of lines) {\r\n\t\t\twrite(`${prefix}${style(line)}\\n`);\r\n\t\t}\r\n\t};\r\n};\r\n",
36
36
  "export const readStream = async (stream: ReadableStream<Uint8Array>,\r\n\tuse: (chunk: string) => void) => {\r\n\tconst decoder = new TextDecoder();\r\n\tconst reader = stream.getReader();\r\n\r\n\tlet result = await reader.read();\r\n\twhile (!result.done) {\r\n\t\tuse(decoder.decode(result.value, { stream: true }));\r\n\t\tresult = await reader.read();\r\n\t}\r\n\r\n\tconst flush = decoder.decode();\r\n\tif (flush) {\r\n\t\tuse(flush);\r\n\t}\r\n};\r\n",
37
37
  "import { styleText } from 'node:util';\r\nimport { semver } from 'bun';\r\nimport { inc } from 'semver';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { dfsTraverseGraph } from '../../graph/functions/dfs-traverse-graph.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { BumpVersionType } from '../../types/bump-version-type.ts';\r\nimport { DependenciesField } from '../types/dependencies-field.ts';\r\n\r\nconst findAndReplaceVersion = ({\r\n\traw,\r\n\tfield,\r\n\tpackageName,\r\n\tupdatePackageName,\r\n\tnewVersion,\r\n\texact,\r\n\tlogger,\r\n}: {\r\n\traw: string;\r\n\tfield: 'version' | DependenciesField;\r\n\tpackageName: string;\r\n\tupdatePackageName: string;\r\n\tnewVersion: string;\r\n\texact: boolean | undefined;\r\n\tlogger: Logger;\r\n}): string => {\r\n\tif (field === 'version' && packageName === updatePackageName) {\r\n\t\tconst versionKey = `\"version\"`;\r\n\t\tconst keyIndex = raw.indexOf(versionKey);\r\n\t\tif (keyIndex === -1) {\r\n\t\t\treturn raw;\r\n\t\t}\r\n\r\n\t\tconst versionStart = raw.indexOf('\"', keyIndex + versionKey.length);\r\n\t\tconst versionEnd = raw.indexOf('\"', versionStart + 1);\r\n\t\tif (versionStart === -1 || versionEnd === -1) {\r\n\t\t\treturn raw;\r\n\t\t}\r\n\r\n\t\tconst currentVersionString = raw.slice(versionStart + 1, versionEnd);\r\n\t\tconst updatedVersion = newVersion;\r\n\t\tlogger.info(`Updating '${updatePackageName}' version: ${currentVersionString} → ${updatedVersion}.`);\r\n\t\tconst before = raw.slice(0, versionStart + 1);\r\n\t\tconst after = raw.slice(versionEnd);\r\n\r\n\t\treturn `${before}${updatedVersion}${after}`;\r\n\t}\r\n\r\n\tconst fieldIndex = raw.indexOf(`\"${field}\"`);\r\n\tif (fieldIndex === -1) {\r\n\t\treturn raw;\r\n\t}\r\n\r\n\tconst fieldStart = raw.indexOf('{', fieldIndex);\r\n\tif (fieldStart === -1) {\r\n\t\treturn raw;\r\n\t}\r\n\r\n\tconst fieldEnd = raw.indexOf('}', fieldStart);\r\n\tif (fieldEnd === -1) {\r\n\t\treturn raw;\r\n\t}\r\n\r\n\tconst fieldBlock = raw.slice(fieldStart, fieldEnd);\r\n\tconst depKey = `\"${packageName}\"`;\r\n\tconst depIndex = fieldBlock.indexOf(depKey);\r\n\tif (depIndex === -1) {\r\n\t\treturn raw;\r\n\t}\r\n\r\n\tconst versionStart = fieldBlock.indexOf('\"', depIndex + depKey.length);\r\n\tconst versionEnd = fieldBlock.indexOf('\"', versionStart + 1);\r\n\tif (versionStart === -1 || versionEnd === -1) {\r\n\t\treturn raw;\r\n\t}\r\n\r\n\tconst currentVersionString = fieldBlock.slice(versionStart + 1, versionEnd);\r\n\tconst preservedPrefix = exact ? '' : (/^([~^><=]*)/.exec(currentVersionString)?.[1] ?? '');\r\n\tconst updatedVersion = `${preservedPrefix}${newVersion}`;\r\n\tlogger.info(`Updating '${updatePackageName}' ${field} '${packageName}': ${currentVersionString} → ${updatedVersion}.`);\r\n\tconst before = raw.slice(0, fieldStart + versionStart + 1);\r\n\tconst after = raw.slice(fieldStart + versionEnd);\r\n\r\n\treturn `${before}${updatedVersion}${after}`;\r\n};\r\n\r\nexport const updatePackageVersion = async (\r\n\tpackageName: string,\r\n\ttype: BumpVersionType,\r\n\tpackageGraphs: PackageGraphs,\r\n\tpreId: string | undefined,\r\n\texact: boolean | undefined,\r\n\tlogger: Logger,\r\n): Promise<void> => {\r\n\tlogger.debug(styleText('dim', `Bumping package '${packageName}'...`));\r\n\tconst packageNode = packageGraphs.dependencies.get(packageName);\r\n\tif (!packageNode) {\r\n\t\tthrow new Error(`Package '${packageName}' not found.`);\r\n\t}\r\n\r\n\tconst currentVersion = packageNode.packageData.version;\r\n\tif (!currentVersion) {\r\n\t\tthrow new Error(`Package '${packageName}' has no version.`);\r\n\t}\r\n\r\n\tconst bumpedVersion = inc(\r\n\t\tcurrentVersion, type, undefined, preId,\r\n\t);\r\n\tif (!bumpedVersion) {\r\n\t\tthrow new Error(`Package '${packageName}' version '${currentVersion}' is invalid.`);\r\n\t}\r\n\r\n\tconst updatedContent = findAndReplaceVersion({\r\n\t\traw: packageNode.packageData.rawContent,\r\n\t\tfield: 'version',\r\n\t\tpackageName,\r\n\t\tupdatePackageName: packageName,\r\n\t\tnewVersion: bumpedVersion,\r\n\t\texact,\r\n\t\tlogger,\r\n\t});\r\n\r\n\tconst baseWrite = Bun.write(packageNode.packageData.path, updatedContent);\r\n\tconst dependentWrites = Array.from(dfsTraverseGraph(packageGraphs.dependents, packageName).flatMap((dependent) => {\r\n\t\treturn Object.values(DependenciesField).flatMap((field) => {\r\n\t\t\tconst entry = dependent[field];\r\n\t\t\tconst depVersion = entry?.[packageName];\r\n\t\t\tif (!depVersion) {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\r\n\t\t\tif (exact ? depVersion === bumpedVersion : semver.satisfies(bumpedVersion, depVersion)) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Skipping '${dependent.name}': ${field} version '${depVersion}' already satisfies '${bumpedVersion}'.`));\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\r\n\t\t\tconst updatedContent = findAndReplaceVersion({\r\n\t\t\t\traw: dependent.rawContent,\r\n\t\t\t\tfield,\r\n\t\t\t\tpackageName,\r\n\t\t\t\tupdatePackageName: dependent.name,\r\n\t\t\t\tnewVersion: bumpedVersion,\r\n\t\t\t\texact,\r\n\t\t\t\tlogger,\r\n\t\t\t});\r\n\r\n\t\t\treturn [Bun.write(dependent.path, updatedContent)];\r\n\t\t});\r\n\t}));\r\n\r\n\treturn Promise.all([baseWrite, ...dependentWrites]).then(() => undefined);\r\n};\r\n",
38
- "import {\r\n\twatch, type WatchEventType,\r\n} from 'fs';\r\nimport { styleText } from 'node:util';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport {\r\n\tassertDefined, DedupePathsBy, dedupeSharedPaths, getDeferredPromise, getStringMatcher, isDefined, runAsync,\r\n} from '@package-pal/util';\r\nimport type { ActivatedWatchConfig } from '../../configuration/types/activated-config.ts';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { mergeGraphs } from '../../graph/functions/merge-graphs.ts';\r\nimport type { PackageGraph } from '../../graph/types/package-graph.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport { runSubprocess } from '../../process/functions/run-subprocess.ts';\r\nimport { ExitState } from '../../process/types/exit-state.ts';\r\nimport { ChangeAction } from '../types/change-action.ts';\r\nimport type { PackageChanges } from '../types/package-changes.ts';\r\nimport { filterFilesModifiedSince } from './filter-files-modified-since.ts';\r\nimport { getChangeLogic } from './get-change-logic.ts';\r\nimport { normaliseWatchedFilePath } from './normalise-watched-file-path.ts';\r\n\r\nconst fileModifiedThresholdMs = 5000;\r\n\r\nlet lastProcessedSubgraph: PackageGraph | undefined;\r\n\r\nconst onProcessPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageChanges: PackageChanges,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\tdetermineAbortController: (reset: boolean) => AbortController,\r\n\tlogger: Logger,\r\n) => {\r\n\tconst {\r\n\t\taction,\r\n\t\tchangedPackageProcessOrder,\r\n\t\tchangedPackageSubgraph,\r\n\t} = getChangeLogic(\r\n\t\tpackageGraphs, packageChanges, lastProcessedSubgraph, watchConfig, logger,\r\n\t);\r\n\tconst controller = determineAbortController(action === ChangeAction.Restart);\r\n\tconst isSequential = watchConfig.subprocess.concurrency === 1;\r\n\r\n\tconst onProcessFailure = () => {\r\n\t\tlogger.debug(styleText('dim', 'Aborting controller: process failed.'));\r\n\t\tcontroller.abort();\r\n\t\tlastProcessedSubgraph = undefined;\r\n\t};\r\n\r\n\tif (action === ChangeAction.Ignore && packageChanges.size) {\r\n\t\tlogger.info(`Changes detected; but were ignored due to 'partialProcessing: true'. Waiting for changes..`);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.info(`${action === ChangeAction.Restart\r\n\t\t\t? 'Restarting processing'\r\n\t\t\t: 'Initiating partial processing'} ${\r\n\t\t\tisSequential\r\n\t\t\t\t? 'sequentially'\r\n\t\t\t\t: `in parallel${\r\n\t\t\t\t\tisDefined(watchConfig.subprocess.concurrency)\r\n\t\t\t\t\t\t? ` with concurrency ${watchConfig.subprocess.concurrency.toString()}`\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}`\r\n\t\t}.`);\r\n\r\n\t\tlastProcessedSubgraph = lastProcessedSubgraph ? mergeGraphs(lastProcessedSubgraph, changedPackageSubgraph) : changedPackageSubgraph;\r\n\t}\r\n\r\n\tfor (const group of changedPackageProcessOrder) {\r\n\t\tconst {\r\n\t\t\tpromise: longRunningParallelProcessReady, resolve: matchedParallelLongReadyRunningOutput,\r\n\t\t} = getDeferredPromise();\r\n\t\tlet matchedLongRunningOutputCount = 0;\r\n\r\n\t\tawait runAsync(group.map(packageName => async () => {\r\n\t\t\tconst {\r\n\t\t\t\tpromise: longRunningSequentialProcessReady, resolve: matchedSequentialLongRunningReadyOutput,\r\n\t\t\t} = getDeferredPromise();\r\n\r\n\t\t\tconst packageNode = assertDefined(packageGraphs.dependencies.get(packageName));\r\n\t\t\tconst changedPaths = packageChanges.get(packageName) ?? [];\r\n\t\t\tconst processPackageProps = {\r\n\t\t\t\tname: packageName,\r\n\t\t\t\tdir: packageNode.packageData.dir,\r\n\t\t\t\tfilePaths: changedPaths,\r\n\t\t\t\ttotalChanges: packageChanges,\r\n\t\t\t\ttotalProcessOrder: changedPackageProcessOrder,\r\n\t\t\t\tsignal: controller.signal,\r\n\t\t\t};\r\n\t\t\tconst processPackageCwd = dirname(packageNode.packageData.path);\r\n\r\n\t\t\tconst beforeProcessPackageShellCommand = await watchConfig.hooks.onBeforeProcessPackage(processPackageProps);\r\n\t\t\tif (beforeProcessPackageShellCommand) {\r\n\t\t\t\tawait runSubprocess({\r\n\t\t\t\t\tdebugName: `before process ${packageName}`,\r\n\t\t\t\t\tshellCommand: beforeProcessPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst processPackageShellCommand = await watchConfig.hooks.onProcessPackage(processPackageProps);\r\n\t\t\tif (processPackageShellCommand) {\r\n\t\t\t\tconst longRunningOutputReadyText = watchConfig.subprocess.matchLongRunningOutputAsReady;\r\n\t\t\t\tconst longRunningOutputErroredText = watchConfig.subprocess.matchLongRunningOutputAsErrored;\r\n\t\t\t\tconst readyMatcher = longRunningOutputReadyText ? getStringMatcher(longRunningOutputReadyText) : undefined;\r\n\t\t\t\tconst erroredMatcher = longRunningOutputErroredText ? getStringMatcher(longRunningOutputErroredText) : undefined;\r\n\t\t\t\tlet ready = false;\r\n\t\t\t\tlet errored = false;\r\n\r\n\t\t\t\tconst exit = runSubprocess({\r\n\t\t\t\t\tdebugName: `process ${packageName}`,\r\n\t\t\t\t\tshellCommand: processPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t\tonStdChunk: (chunk: string) => {\r\n\t\t\t\t\t\tif (!ready) {\r\n\t\t\t\t\t\t\tconst matchedReadyText = readyMatcher?.push(chunk).matched();\r\n\r\n\t\t\t\t\t\t\tif (matchedReadyText) {\r\n\t\t\t\t\t\t\t\tready = true;\r\n\t\t\t\t\t\t\t\tmatchedLongRunningOutputCount++;\r\n\t\t\t\t\t\t\t\tlogger.debug(`'${packageName}' (${matchedLongRunningOutputCount.toString()}/${group.length.toString()}) subprocess matched ready text '${matchedReadyText}'.`);\r\n\r\n\t\t\t\t\t\t\t\tif (isSequential && matchedLongRunningOutputCount) {\r\n\t\t\t\t\t\t\t\t\tmatchedSequentialLongRunningReadyOutput();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!errored) {\r\n\t\t\t\t\t\t\tconst matchedErrorText = erroredMatcher?.push(chunk).matched();\r\n\r\n\t\t\t\t\t\t\tif (matchedErrorText) {\r\n\t\t\t\t\t\t\t\tlogger.error(styleText('red', `'${packageName}' subprocess matched error text '${matchedErrorText}'.`));\r\n\t\t\t\t\t\t\t\terrored = true;\r\n\r\n\t\t\t\t\t\t\t\tvoid Promise.resolve(watchConfig.hooks.onProcessPackageError(processPackageProps)).then((processPackageErrorCommand) => {\r\n\t\t\t\t\t\t\t\t\tif (!processPackageErrorCommand) {\r\n\t\t\t\t\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn runSubprocess({\r\n\t\t\t\t\t\t\t\t\t\tdebugName: `after process ${packageName}`,\r\n\t\t\t\t\t\t\t\t\t\tshellCommand: processPackageErrorCommand,\r\n\t\t\t\t\t\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\t\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\t\t\t\t\t\tlogger,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.then((exitState) => {\r\n\t\t\t\t\t\t\t\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\t\t\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!isSequential && matchedLongRunningOutputCount === group.length) {\r\n\t\t\t\t\t\t\tmatchedParallelLongReadyRunningOutput();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t}).then((exitState) => {\r\n\t\t\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tawait Promise.race([\r\n\t\t\t\t\tlongRunningParallelProcessReady,\r\n\t\t\t\t\tlongRunningSequentialProcessReady,\r\n\t\t\t\t\texit,\r\n\t\t\t\t]);\r\n\t\t\t}\r\n\r\n\t\t\tconst afterProcessPackageShellCommand = await watchConfig.hooks.onAfterProcessPackage(processPackageProps);\r\n\t\t\tif (afterProcessPackageShellCommand) {\r\n\t\t\t\tawait runSubprocess({\r\n\t\t\t\t\tdebugName: `after process ${packageName}`,\r\n\t\t\t\t\tshellCommand: afterProcessPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}), watchConfig.subprocess.concurrency);\r\n\t}\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.info(`Processing ${controller.signal.aborted ? 'cancelled due to new changes' : 'completed'}.`);\r\n\t}\r\n\r\n\tconst packagesReadyProps = {\r\n\t\ttotalChanges: packageChanges,\r\n\t\ttotalProcessOrder: changedPackageProcessOrder,\r\n\t\tsignal: controller.signal,\r\n\t};\r\n\r\n\tconst beforePackagesReadyShellCommand = await watchConfig.hooks.onBeforePackagesReady(packagesReadyProps);\r\n\tif (beforePackagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'before packages ready',\r\n\t\t\tshellCommand: beforePackagesReadyShellCommand,\r\n\t\t\tsignal: controller.signal,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n\r\n\tconst packagesReadyShellCommand = await watchConfig.hooks.onPackagesReady(packagesReadyProps);\r\n\tif (packagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'packages ready',\r\n\t\t\tshellCommand: packagesReadyShellCommand,\r\n\t\t\tsignal: controller.signal,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n\r\n\tconst afterPackagesReadyShellCommand = await watchConfig.hooks.onAfterPackagesReady(packagesReadyProps);\r\n\tif (afterPackagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'after packages ready',\r\n\t\t\tshellCommand: afterPackagesReadyShellCommand,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const watchPackageChanges = (\r\n\tpackageData: PackageData[],\r\n\tpackageGraphs: PackageGraphs,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\trootDir: string,\r\n\tlogger: Logger,\r\n) => {\r\n\tconst dedupedRootPackageData = dedupeSharedPaths(packageData.map(packageData => packageData.path), DedupePathsBy.Parent)\r\n\t\t.map(packagePath => assertDefined(packageData.find(data => data.path === packagePath)));\r\n\tlogger.debug(styleText('dim', `Starting ${dedupedRootPackageData.length.toString()} watchers for ${packageData.length.toString()} packages.`));\r\n\r\n\tlet closed = false;\r\n\tlet debounceTimeout: ReturnType<typeof setTimeout> | undefined;\r\n\tlet startedDebounceMs: number | undefined;\r\n\tlet controller: AbortController | undefined;\r\n\tconst changedPackagePaths = new Map<string, Set<string>>();\r\n\r\n\tconst useController = (reset: boolean) => {\r\n\t\tif (controller && (reset || controller.signal.aborted)) {\r\n\t\t\tif (reset) {\r\n\t\t\t\tlogger.debug(styleText('dim', 'Aborting controller: reset for new packages.'));\r\n\t\t\t\tcontroller.abort();\r\n\t\t\t}\r\n\t\t\tcontroller = undefined;\r\n\t\t}\r\n\r\n\t\tcontroller ??= new AbortController();\r\n\t\treturn controller;\r\n\t};\r\n\r\n\tconst onWatchEvent = ({\r\n\t\twatchPath, packageName, filePath, isInitial = false,\r\n\t}: {\r\n\t\twatchPath?: string;\r\n\t\tpackageName?: string;\r\n\t\tevent?: WatchEventType;\r\n\t\tfilePath?: string | undefined;\r\n\t\tisInitial?: boolean;\r\n\t}) => {\r\n\t\tif (!isDefined(startedDebounceMs)) {\r\n\t\t\tstartedDebounceMs = Date.now();\r\n\t\t}\r\n\r\n\t\tif (debounceTimeout) {\r\n\t\t\tclearTimeout(debounceTimeout);\r\n\t\t}\r\n\r\n\t\tif (packageName && watchPath && filePath) {\r\n\t\t\tconst changedPath = join(watchPath, normaliseWatchedFilePath(filePath));\r\n\t\t\tconst existingPaths = changedPackagePaths.get(packageName);\r\n\t\t\tif (existingPaths) {\r\n\t\t\t\texistingPaths.add(changedPath);\r\n\t\t\t} else {\r\n\t\t\t\tchangedPackagePaths.set(packageName, new Set([changedPath]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst debounceMs = isInitial ? 0 : watchConfig.debounceMs;\r\n\t\tdebounceTimeout = setTimeout(() => {\r\n\t\t\tif (closed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst packageChanges: PackageChanges = new Map();\r\n\t\t\tfor (const [packageName, paths] of changedPackagePaths) {\r\n\t\t\t\tconst dedupedPaths = dedupeSharedPaths(Array.from(paths), DedupePathsBy.Child).sort();\r\n\t\t\t\tconst processedPaths = filterFilesModifiedSince(dedupedPaths, assertDefined(startedDebounceMs) - fileModifiedThresholdMs);\r\n\t\t\t\tif (processedPaths.length) {\r\n\t\t\t\t\tpackageChanges.set(packageName, processedPaths);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tstartedDebounceMs = undefined;\r\n\t\t\tchangedPackagePaths.clear();\r\n\r\n\t\t\tif (!packageChanges.size && !isInitial) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvoid onProcessPackage(\r\n\t\t\t\tpackageGraphs,\r\n\t\t\t\tpackageChanges,\r\n\t\t\t\twatchConfig,\r\n\t\t\t\t(reset: boolean) => useController(reset),\r\n\t\t\t\tlogger,\r\n\t\t\t);\r\n\t\t}, debounceMs);\r\n\t};\r\n\r\n\tconst watchers = dedupedRootPackageData.map(({\r\n\t\tname, path,\r\n\t}) => {\r\n\t\tconst watchPath = dirname(path);\r\n\r\n\t\treturn watch(\r\n\t\t\twatchPath, { recursive: true }, (event, filePath) => {\r\n\t\t\t\tonWatchEvent({\r\n\t\t\t\t\twatchPath,\r\n\t\t\t\t\tpackageName: name,\r\n\t\t\t\t\tevent,\r\n\t\t\t\t\tfilePath: filePath ?? undefined,\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t);\r\n\t});\r\n\r\n\tconst closeWatchers = () => {\r\n\t\twatchers.forEach((watcher) => {\r\n\t\t\twatcher.close();\r\n\t\t});\r\n\t\tlogger.debug(styleText('dim', 'Aborting controller: closing watchers.'));\r\n\t\tcontroller?.abort();\r\n\t\tclosed = true;\r\n\t};\r\n\r\n\tprocess.on('SIGINT', () => {\r\n\t\tlogger.debug(styleText('dim', 'Received SIGINT: closing watchers.'));\r\n\t\tcloseWatchers();\r\n\t\tprocess.exit(0);\r\n\t});\r\n\r\n\tvoid Promise.resolve(watchConfig.hooks.onInit()).then(async (onInitShellCommand) => {\r\n\t\tif (onInitShellCommand) {\r\n\t\t\tawait runSubprocess({\r\n\t\t\t\tdebugName: `on init`,\r\n\t\t\t\tshellCommand: onInitShellCommand,\r\n\t\t\t\tsignal: useController(false).signal,\r\n\t\t\t\tcwd: rootDir,\r\n\t\t\t\tlogger,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tonWatchEvent({ isInitial: true });\r\n\t});\r\n\r\n\treturn { close: () => {\r\n\t\tif (closed) {\r\n\t\t\tlogger.debug(styleText('dim', 'Watchers already closed.'));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlogger.debug(styleText('dim', 'Closing watchers.'));\r\n\t\tcloseWatchers();\r\n\t} };\r\n};\r\n",
38
+ "import {\r\n\twatch, type WatchEventType,\r\n} from 'fs';\r\nimport { styleText } from 'node:util';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport {\r\n\tassertDefined, DedupePathsBy, dedupeSharedPaths, getDeferredPromise, getStringMatcher, isDefined, runAsync,\r\n} from '@package-pal/util';\r\nimport { Glob } from 'bun';\r\nimport type { ActivatedWatchConfig } from '../../configuration/types/activated-config.ts';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { mergeGraphs } from '../../graph/functions/merge-graphs.ts';\r\nimport type { PackageGraph } from '../../graph/types/package-graph.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport type { PackageData } from '../../package/types/package-data.ts';\r\nimport { runSubprocess } from '../../process/functions/run-subprocess.ts';\r\nimport { ExitState } from '../../process/types/exit-state.ts';\r\nimport { ChangeAction } from '../types/change-action.ts';\r\nimport type { PackageChanges } from '../types/package-changes.ts';\r\nimport { filterFilesModifiedSince } from './filter-files-modified-since.ts';\r\nimport { getChangeLogic } from './get-change-logic.ts';\r\nimport { normalisePatternSeparators } from './normalise-pattern-separators.ts';\r\nimport { normaliseWatchedFilePath } from './normalise-watched-file-path.ts';\r\n\r\nconst fileModifiedThresholdMs = 5000;\r\n\r\nlet lastProcessedSubgraph: PackageGraph | undefined;\r\n\r\nconst onProcessPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageChanges: PackageChanges,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\tdetermineAbortController: (reset: boolean) => AbortController,\r\n\tlogger: Logger,\r\n) => {\r\n\tconst {\r\n\t\taction,\r\n\t\tchangedPackageProcessOrder,\r\n\t\tchangedPackageSubgraph,\r\n\t} = getChangeLogic(\r\n\t\tpackageGraphs, packageChanges, lastProcessedSubgraph, watchConfig, logger,\r\n\t);\r\n\tconst isRestart = action === ChangeAction.Restart;\r\n\tconst isSequential = watchConfig.subprocess.concurrency === 1;\r\n\tconst controller = determineAbortController(isRestart);\r\n\r\n\tconst onProcessFailure = () => {\r\n\t\tlogger.debug(styleText('dim', 'Aborting controller: process failed.'));\r\n\t\tcontroller.abort();\r\n\t\tlastProcessedSubgraph = undefined;\r\n\t};\r\n\r\n\tif (action === ChangeAction.Ignore && packageChanges.size) {\r\n\t\tlogger.info(`Changes detected; but were ignored due to 'partialProcessing: true'. Waiting for changes..`);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.info(`${isRestart\r\n\t\t\t? 'Restarting processing'\r\n\t\t\t: 'Initiating partial processing'} ${\r\n\t\t\tisSequential\r\n\t\t\t\t? 'sequentially'\r\n\t\t\t\t: `in parallel${\r\n\t\t\t\t\tisDefined(watchConfig.subprocess.concurrency)\r\n\t\t\t\t\t\t? ` with concurrency ${watchConfig.subprocess.concurrency.toString()}`\r\n\t\t\t\t\t\t: ''\r\n\t\t\t\t}`\r\n\t\t}.`);\r\n\r\n\t\tlastProcessedSubgraph = lastProcessedSubgraph && !isRestart ? mergeGraphs(lastProcessedSubgraph, changedPackageSubgraph) : changedPackageSubgraph;\r\n\t}\r\n\r\n\tfor (const group of changedPackageProcessOrder) {\r\n\t\tawait runAsync(group.map(packageName => async () => {\r\n\t\t\tconst packageNode = assertDefined(packageGraphs.dependencies.get(packageName));\r\n\t\t\tconst changedPaths = packageChanges.get(packageName) ?? [];\r\n\t\t\tconst processPackageProps = {\r\n\t\t\t\tname: packageName,\r\n\t\t\t\tdir: packageNode.packageData.dir,\r\n\t\t\t\tfilePaths: changedPaths,\r\n\t\t\t\ttotalChanges: packageChanges,\r\n\t\t\t\ttotalProcessOrder: changedPackageProcessOrder,\r\n\t\t\t\tsignal: controller.signal,\r\n\t\t\t};\r\n\t\t\tconst processPackageCwd = dirname(packageNode.packageData.path);\r\n\r\n\t\t\tconst beforeProcessPackageShellCommand = await watchConfig.hooks.onBeforeProcessPackage(processPackageProps);\r\n\t\t\tif (beforeProcessPackageShellCommand) {\r\n\t\t\t\tawait runSubprocess({\r\n\t\t\t\t\tdebugName: `before process ${packageName}`,\r\n\t\t\t\t\tshellCommand: beforeProcessPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst processPackageShellCommand = await watchConfig.hooks.onProcessPackage(processPackageProps);\r\n\t\t\tif (processPackageShellCommand) {\r\n\t\t\t\tconst longRunningOutputReadyText = watchConfig.subprocess.matchLongRunningOutputAsReady;\r\n\t\t\t\tconst longRunningOutputErroredText = watchConfig.subprocess.matchLongRunningOutputAsErrored;\r\n\t\t\t\tconst readyMatcher = longRunningOutputReadyText ? getStringMatcher(longRunningOutputReadyText) : undefined;\r\n\t\t\t\tconst erroredMatcher = longRunningOutputErroredText ? getStringMatcher(longRunningOutputErroredText) : undefined;\r\n\r\n\t\t\t\tconst {\r\n\t\t\t\t\tpromise: packageReady, resolve: resolvePackageReady,\r\n\t\t\t\t} = getDeferredPromise();\r\n\r\n\t\t\t\tlet ready = false;\r\n\t\t\t\tlet errored = false;\r\n\r\n\t\t\t\tconst exit = runSubprocess({\r\n\t\t\t\t\tdebugName: `process ${packageName}`,\r\n\t\t\t\t\tshellCommand: processPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t\tonStdChunk: (chunk: string) => {\r\n\t\t\t\t\t\tif (!ready) {\r\n\t\t\t\t\t\t\tconst matchedReadyText = readyMatcher?.push(chunk).matched();\r\n\r\n\t\t\t\t\t\t\tif (matchedReadyText) {\r\n\t\t\t\t\t\t\t\tready = true;\r\n\t\t\t\t\t\t\t\tlogger.debug(`'${packageName}' subprocess matched ready text '${matchedReadyText}'.`);\r\n\t\t\t\t\t\t\t\tresolvePackageReady();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!errored) {\r\n\t\t\t\t\t\t\tconst matchedErrorText = erroredMatcher?.push(chunk).matched();\r\n\r\n\t\t\t\t\t\t\tif (matchedErrorText) {\r\n\t\t\t\t\t\t\t\tlogger.error(styleText('red', `'${packageName}' subprocess matched error text '${matchedErrorText}'.`));\r\n\t\t\t\t\t\t\t\terrored = true;\r\n\r\n\t\t\t\t\t\t\t\tvoid Promise.resolve(watchConfig.hooks.onProcessPackageError(processPackageProps)).then((processPackageErrorCommand) => {\r\n\t\t\t\t\t\t\t\t\tif (!processPackageErrorCommand) {\r\n\t\t\t\t\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn runSubprocess({\r\n\t\t\t\t\t\t\t\t\t\tdebugName: `after process ${packageName}`,\r\n\t\t\t\t\t\t\t\t\t\tshellCommand: processPackageErrorCommand,\r\n\t\t\t\t\t\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\t\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\t\t\t\t\t\tlogger,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.then((exitState) => {\r\n\t\t\t\t\t\t\t\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\t\t\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t}).then((exitState) => {\r\n\t\t\t\t\tif (exitState === ExitState.Errored) {\r\n\t\t\t\t\t\tonProcessFailure();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tawait Promise.race([packageReady, exit]);\r\n\t\t\t}\r\n\r\n\t\t\tconst afterProcessPackageShellCommand = await watchConfig.hooks.onAfterProcessPackage(processPackageProps);\r\n\t\t\tif (afterProcessPackageShellCommand) {\r\n\t\t\t\tawait runSubprocess({\r\n\t\t\t\t\tdebugName: `after process ${packageName}`,\r\n\t\t\t\t\tshellCommand: afterProcessPackageShellCommand,\r\n\t\t\t\t\tcwd: processPackageCwd,\r\n\t\t\t\t\tsignal: controller.signal,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}), watchConfig.subprocess.concurrency);\r\n\t}\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.info(`Processing ${controller.signal.aborted ? 'cancelled due to new changes' : 'completed'}.`);\r\n\t}\r\n\r\n\tconst packagesReadyProps = {\r\n\t\ttotalChanges: packageChanges,\r\n\t\ttotalProcessOrder: changedPackageProcessOrder,\r\n\t\tsignal: controller.signal,\r\n\t};\r\n\r\n\tconst beforePackagesReadyShellCommand = await watchConfig.hooks.onBeforePackagesReady(packagesReadyProps);\r\n\tif (beforePackagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'before packages ready',\r\n\t\t\tshellCommand: beforePackagesReadyShellCommand,\r\n\t\t\tsignal: controller.signal,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n\r\n\tconst packagesReadyShellCommand = await watchConfig.hooks.onPackagesReady(packagesReadyProps);\r\n\tif (packagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'packages ready',\r\n\t\t\tshellCommand: packagesReadyShellCommand,\r\n\t\t\tsignal: controller.signal,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n\r\n\tconst afterPackagesReadyShellCommand = await watchConfig.hooks.onAfterPackagesReady(packagesReadyProps);\r\n\tif (afterPackagesReadyShellCommand) {\r\n\t\tawait runSubprocess({\r\n\t\t\tdebugName: 'after packages ready',\r\n\t\t\tshellCommand: afterPackagesReadyShellCommand,\r\n\t\t\tlogger,\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const watchPackageChanges = (\r\n\tpackageData: PackageData[],\r\n\tpackageGraphs: PackageGraphs,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\trootDir: string,\r\n\tlogger: Logger,\r\n) => {\r\n\tconst dedupedRootPackageData = dedupeSharedPaths(packageData.map(packageData => packageData.path), DedupePathsBy.Parent)\r\n\t\t.map(packagePath => assertDefined(packageData.find(data => data.path === packagePath)));\r\n\tlogger.debug(styleText('dim', `Starting ${dedupedRootPackageData.length.toString()} watchers for ${packageData.length.toString()} packages.`));\r\n\r\n\tlet closed = false;\r\n\tlet debounceTimeout: ReturnType<typeof setTimeout> | undefined;\r\n\tlet startedDebounceMs: number | undefined;\r\n\tlet controller: AbortController | undefined;\r\n\tconst ignoreGlobs = watchConfig.ignore ? (Array.isArray(watchConfig.ignore) ? watchConfig.ignore : [watchConfig.ignore]).map(pattern => new Glob(pattern)) : undefined;\r\n\tconst changedPackagePaths = new Map<string, Set<string>>();\r\n\r\n\tconst useController = (reset: boolean) => {\r\n\t\tif (controller && (reset || controller.signal.aborted)) {\r\n\t\t\tif (reset) {\r\n\t\t\t\tlogger.debug(styleText('dim', 'Aborting controller: reset for new packages.'));\r\n\t\t\t\tcontroller.abort();\r\n\t\t\t}\r\n\t\t\tcontroller = undefined;\r\n\t\t}\r\n\r\n\t\tcontroller ??= new AbortController();\r\n\t\treturn controller;\r\n\t};\r\n\r\n\tconst onWatchEvent = ({\r\n\t\twatchPath, packageName, filePath, isInitial = false,\r\n\t}: {\r\n\t\twatchPath?: string;\r\n\t\tpackageName?: string;\r\n\t\tevent?: WatchEventType;\r\n\t\tfilePath?: string | undefined;\r\n\t\tisInitial?: boolean;\r\n\t}) => {\r\n\t\tif (!isDefined(startedDebounceMs)) {\r\n\t\t\tstartedDebounceMs = Date.now();\r\n\t\t}\r\n\r\n\t\tif (packageName && watchPath && filePath) {\r\n\t\t\tconst changedPath = normalisePatternSeparators(join(watchPath, normaliseWatchedFilePath(filePath)));\r\n\t\t\tif (ignoreGlobs?.some(glob => glob.match(changedPath))) {\r\n\t\t\t\tlogger.debug(styleText('dim', `Ignoring change '${changedPath}' (matched ignore pattern).`));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlogger.debug(styleText('dim', `Tracked change '${changedPath}'.`));\r\n\t\t\tconst existingPaths = changedPackagePaths.get(packageName);\r\n\t\t\tif (existingPaths) {\r\n\t\t\t\texistingPaths.add(changedPath);\r\n\t\t\t} else {\r\n\t\t\t\tchangedPackagePaths.set(packageName, new Set([changedPath]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (debounceTimeout) {\r\n\t\t\tclearTimeout(debounceTimeout);\r\n\t\t}\r\n\r\n\t\tconst debounceMs = isInitial ? 0 : watchConfig.debounceMs;\r\n\t\tdebounceTimeout = setTimeout(() => {\r\n\t\t\tif (closed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst packageChanges: PackageChanges = new Map();\r\n\t\t\tfor (const [packageName, paths] of changedPackagePaths) {\r\n\t\t\t\tconst dedupedPaths = dedupeSharedPaths(Array.from(paths), DedupePathsBy.Child).sort();\r\n\t\t\t\tconst processedPaths = filterFilesModifiedSince(dedupedPaths, assertDefined(startedDebounceMs) - fileModifiedThresholdMs);\r\n\t\t\t\tif (processedPaths.length) {\r\n\t\t\t\t\tpackageChanges.set(packageName, processedPaths);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tstartedDebounceMs = undefined;\r\n\t\t\tchangedPackagePaths.clear();\r\n\r\n\t\t\tif (!packageChanges.size && !isInitial) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvoid onProcessPackage(\r\n\t\t\t\tpackageGraphs,\r\n\t\t\t\tpackageChanges,\r\n\t\t\t\twatchConfig,\r\n\t\t\t\t(reset: boolean) => useController(reset),\r\n\t\t\t\tlogger,\r\n\t\t\t);\r\n\t\t}, debounceMs);\r\n\t};\r\n\r\n\tconst watchers = dedupedRootPackageData.map(({\r\n\t\tname, path,\r\n\t}) => {\r\n\t\tconst watchPath = dirname(path);\r\n\r\n\t\treturn watch(\r\n\t\t\twatchPath, { recursive: true }, (event, filePath) => {\r\n\t\t\t\tonWatchEvent({\r\n\t\t\t\t\twatchPath,\r\n\t\t\t\t\tpackageName: name,\r\n\t\t\t\t\tevent,\r\n\t\t\t\t\tfilePath: filePath ?? undefined,\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t);\r\n\t});\r\n\r\n\tconst closeWatchers = () => {\r\n\t\twatchers.forEach((watcher) => {\r\n\t\t\twatcher.close();\r\n\t\t});\r\n\t\tlogger.debug(styleText('dim', 'Aborting controller: closing watchers.'));\r\n\t\tcontroller?.abort();\r\n\t\tclosed = true;\r\n\t};\r\n\r\n\tprocess.on('SIGINT', () => {\r\n\t\tlogger.debug(styleText('dim', 'Received SIGINT: closing watchers.'));\r\n\t\tcloseWatchers();\r\n\t\tprocess.exit(0);\r\n\t});\r\n\r\n\tvoid Promise.resolve(watchConfig.hooks.onInit()).then(async (onInitShellCommand) => {\r\n\t\tif (onInitShellCommand) {\r\n\t\t\tawait runSubprocess({\r\n\t\t\t\tdebugName: `on init`,\r\n\t\t\t\tshellCommand: onInitShellCommand,\r\n\t\t\t\tsignal: useController(false).signal,\r\n\t\t\t\tcwd: rootDir,\r\n\t\t\t\tlogger,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tonWatchEvent({ isInitial: true });\r\n\t});\r\n\r\n\treturn { close: () => {\r\n\t\tif (closed) {\r\n\t\t\tlogger.debug(styleText('dim', 'Watchers already closed.'));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlogger.debug(styleText('dim', 'Closing watchers.'));\r\n\t\tcloseWatchers();\r\n\t} };\r\n};\r\n",
39
39
  "import type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport const mergeGraphs = (a: PackageGraph, b: PackageGraph) => {\r\n\tconst merged: PackageGraph = new Map();\r\n\r\n\tfor (const [name, node] of a) {\r\n\t\tmerged.set(name, {\r\n\t\t\tpackageData: node.packageData,\r\n\t\t\tpointsToPackages: new Set(node.pointsToPackages),\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const [name, node] of b) {\r\n\t\tmerged.set(name, {\r\n\t\t\tpackageData: node.packageData,\r\n\t\t\tpointsToPackages: new Set(node.pointsToPackages),\r\n\t\t});\r\n\t}\r\n\r\n\treturn merged;\r\n};\r\n",
40
40
  "import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const ChangeAction = {\r\n\tIgnore: 'Ignore',\r\n\tPartial: 'Partial',\r\n\tRestart: 'Restart',\r\n} as const;\r\n\r\nexport type ChangeAction = ValueOf<typeof ChangeAction>;\r\n",
41
- "export const filterFilesModifiedSince = (paths: string[], sinceMs: number) => {\r\n\treturn paths.filter((path) => {\r\n\t\tconst changedFile = Bun.file(path);\r\n\t\treturn changedFile.lastModified >= sinceMs;\r\n\t});\r\n};\r\n",
41
+ "export const filterFilesModifiedSince = (paths: string[], sinceMs: number) => {\r\n\treturn paths.filter((path) => {\r\n\t\tconst changedFile = Bun.file(path);\r\n\t\tconst isDeleted = changedFile.lastModified === 0;\r\n\t\tconst isModifiedSince = changedFile.lastModified >= sinceMs;\r\n\r\n\t\treturn isDeleted || isModifiedSince;\r\n\t});\r\n};\r\n",
42
42
  "import { styleText } from 'node:util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { ActivatedWatchConfig } from '../../configuration/types/activated-config.ts';\r\nimport type { Logger } from '../../configuration/types/logger.ts';\r\nimport { extractSubgraph } from '../../graph/functions/extract-subgraph.ts';\r\nimport { generateTopologicalRankingRange } from '../../graph/functions/generate-topological-ranking-range.ts';\r\nimport { generateTopologicalRanking } from '../../graph/functions/generate-topological-ranking.ts';\r\nimport { generateTopologicalSortedGroups } from '../../graph/functions/generate-topological-sorted-groups.ts';\r\nimport { isDisjoint } from '../../graph/functions/is-disjoint.ts';\r\nimport { isRankedGreaterThanOrEqual } from '../../graph/functions/is-ranked-greater-than-or-equal.ts';\r\nimport { isSubgraph } from '../../graph/functions/is-subgraph.ts';\r\nimport type { PackageGraph } from '../../graph/types/package-graph.ts';\r\nimport type { PackageGraphs } from '../../graph/types/package-graphs.ts';\r\nimport { ChangeAction } from '../types/change-action.ts';\r\nimport type { PackageChanges } from '../types/package-changes.ts';\r\n\r\nexport const getChangeLogic = (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageChanges: PackageChanges,\r\n\tlastProcessedSubgraph: PackageGraph | undefined,\r\n\tconfig: ActivatedWatchConfig,\r\n\tlogger: Logger,\r\n) => {\r\n\tconst changedPackages = Array.from(packageChanges.keys());\r\n\tconst changedFilePaths = Array.from(packageChanges.values()).flat();\r\n\r\n\tif (packageChanges.size) {\r\n\t\tlogger.debug(styleText('dim', `Changes detected in ${changedPackages.map(packageName => `'${packageName}'`).join(', ')}.`));\r\n\t\tlogger.debug(styleText('dim', `Changed file paths: ${changedFilePaths.map(filePath => `'${filePath}'`).join(', ')}.`));\r\n\t}\r\n\r\n\tconst packageOrder = generateTopologicalSortedGroups(packageGraphs.dependents, logger);\r\n\tconst packageProcessOrder = packageOrder.groups.toReversed().concat(packageOrder.circular);\r\n\tconst packageRankings = generateTopologicalRanking(packageProcessOrder);\r\n\r\n\tconst changedPackageSubgraph = extractSubgraph(packageGraphs.dependents, changedPackages);\r\n\tconst changedPackageOrder = generateTopologicalSortedGroups(changedPackageSubgraph, logger);\r\n\tconst changedPackageProcessOrder = changedPackageOrder.groups.toReversed().concat(changedPackageOrder.circular);\r\n\r\n\tconst isSubgraphOfPrevious = !!lastProcessedSubgraph && isSubgraph(lastProcessedSubgraph, changedPackageSubgraph);\r\n\tconst isDisjointFromPrevious = !lastProcessedSubgraph || (!isSubgraphOfPrevious && isDisjoint(lastProcessedSubgraph, changedPackageSubgraph));\r\n\tconst isRankedGreaterThanOrEqualToPrevious = !!lastProcessedSubgraph && !isSubgraphOfPrevious && isRankedGreaterThanOrEqual(\r\n\t\tlastProcessedSubgraph, changedPackageSubgraph, packageRankings,\r\n\t);\r\n\r\n\tlogger.debug(styleText('dim', `Changes are subgraph of previous: ${isSubgraphOfPrevious.toString()}.`));\r\n\tlogger.debug(styleText('dim', `Changes are disjoint from previous: ${isDisjointFromPrevious.toString()}.`));\r\n\tlogger.debug(styleText('dim', `Changes are ranked greater than or equal to previous: ${isRankedGreaterThanOrEqualToPrevious.toString()}.`));\r\n\r\n\tlet action: ChangeAction = ChangeAction.Restart;\r\n\tif (!packageChanges.size) {\r\n\t\taction = ChangeAction.Ignore;\r\n\t} else if (!config.subprocess.partialProcessing) {\r\n\t\taction = ChangeAction.Restart;\r\n\t} else if (isSubgraphOfPrevious) {\r\n\t\taction = ChangeAction.Ignore;\r\n\t} else if (isDisjointFromPrevious || isRankedGreaterThanOrEqualToPrevious) {\r\n\t\taction = ChangeAction.Partial;\r\n\t}\r\n\r\n\tif (action === ChangeAction.Partial && isRankedGreaterThanOrEqualToPrevious) {\r\n\t\tconst [prevMinRank] = generateTopologicalRankingRange(assertDefined(lastProcessedSubgraph), packageRankings);\r\n\r\n\t\tfor (let i = 0; i < changedPackageProcessOrder.length; i++) {\r\n\t\t\tchangedPackageProcessOrder[i] = assertDefined(changedPackageProcessOrder[i]).filter((packageName) => {\r\n\t\t\t\tconst rank = packageRankings.get(packageName);\r\n\t\t\t\treturn rank !== undefined && rank >= prevMinRank;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tlogger.debug(styleText('dim', `Determined change action: ${action}.`));\r\n\r\n\treturn {\r\n\t\tchangedPackageProcessOrder,\r\n\t\tchangedPackageSubgraph,\r\n\t\taction,\r\n\t};\r\n};\r\n",
43
43
  "import { isDefined } from '@package-pal/util';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport const generateTopologicalRankingRange = (graph: PackageGraph, ranking: ReadonlyMap<string, number>) => {\r\n\tlet min = Infinity;\r\n\tlet max = -Infinity;\r\n\r\n\tfor (const key of graph.keys()) {\r\n\t\tconst rank = ranking.get(key);\r\n\t\tif (!isDefined(rank)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (rank < min) {\r\n\t\t\tmin = rank;\r\n\t\t}\r\n\r\n\t\tif (rank > max) {\r\n\t\t\tmax = rank;\r\n\t\t}\r\n\t}\r\n\r\n\tif (min === Infinity) {\r\n\t\treturn [-1, -1] as const;\r\n\t}\r\n\r\n\treturn [min, max] as const;\r\n};\r\n",
44
44
  "import { assertDefined } from '@package-pal/util';\r\n\r\nexport const generateTopologicalRanking = (packageProcessOrder: string[][]) => {\r\n\tconst rankMap = new Map<string, number>();\r\n\r\n\tfor (let i = 0; i < packageProcessOrder.length; i++) {\r\n\t\tfor (const packageName of assertDefined(packageProcessOrder[i])) {\r\n\t\t\trankMap.set(packageName, i);\r\n\t\t}\r\n\t}\r\n\r\n\treturn rankMap as ReadonlyMap<string, number>;\r\n};\r\n",
45
45
  "import type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nexport const isDisjoint = (a: PackageGraph, b: PackageGraph): boolean => {\r\n\tfor (const key of a.keys()) {\r\n\t\tif (b.has(key)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n",
46
46
  "import type { PackageGraph } from '../types/package-graph.ts';\r\nimport { generateTopologicalRankingRange } from './generate-topological-ranking-range.ts';\r\n\r\nexport const isRankedGreaterThanOrEqual = (\r\n\ta: PackageGraph, b: PackageGraph, ranking: ReadonlyMap<string, number>,\r\n) => {\r\n\tconst [prevMin] = generateTopologicalRankingRange(a, ranking);\r\n\r\n\tfor (const key of b.keys()) {\r\n\t\tconst rank = ranking.get(key);\r\n\t\tif (rank !== undefined && rank < prevMin) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n",
47
47
  "import type { PackageData } from '../../package/types/package-data.ts';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\n\r\nconst recordEqual = (a?: Record<string, unknown>, b?: Record<string, unknown>): boolean => {\r\n\tif (!a && !b) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tif (!a || !b) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst aKeys = Object.keys(a);\r\n\tconst bKeys = Object.keys(b);\r\n\tif (aKeys.length !== bKeys.length) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn aKeys.every(key => b[key] === a[key]);\r\n};\r\n\r\nconst isPackageDataLooseEqual = (a: PackageData, b: PackageData): boolean => {\r\n\treturn a.name === b.name\r\n\t\t&& recordEqual(a.dependencies, b.dependencies)\r\n\t\t&& recordEqual(a.peerDependencies, b.peerDependencies)\r\n\t\t&& recordEqual(a.devDependencies, b.devDependencies);\r\n};\r\n\r\nexport const isSubgraph = (a: PackageGraph, b: PackageGraph) => {\r\n\tfor (const [key, nodeB] of b) {\r\n\t\tconst nodeA = a.get(key);\r\n\t\tif (!nodeA) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isPackageDataLooseEqual(nodeA.packageData, nodeB.packageData)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (const dep of nodeB.pointsToPackages) {\r\n\t\t\tif (!nodeA.pointsToPackages.has(dep)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n",
48
+ "export const normalisePatternSeparators = (path: string) => {\r\n\treturn path.replace(/\\\\/g, '/');\r\n};\r\n",
48
49
  "import {\r\n\tbasename, dirname, join,\r\n} from 'path';\r\n\r\nconst removeTrailing = [\r\n\t'~',\r\n\t'.tmp',\r\n\t'.temp',\r\n\t'.bak',\r\n\t'.backup',\r\n\t'.swp',\r\n\t'.swo',\r\n\t'.swn',\r\n];\r\n\r\nexport const normaliseWatchedFilePath = (filePath: string) => {\r\n\tconst dir = dirname(filePath);\r\n\tlet base = basename(filePath);\r\n\r\n\tfor (const trailing of removeTrailing) {\r\n\t\tif (base.toLowerCase().endsWith(trailing)) {\r\n\t\t\tconst sliceStart = base.startsWith('.') ? 1 : 0;\r\n\t\t\tbase = base.slice(sliceStart, -trailing.length);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn join(dir, base);\r\n};\r\n"
49
50
  ],
50
- "mappings": "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",
51
- "debugId": "57C320DF799C435664756E2164756E21",
51
+ "mappings": "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",
52
+ "debugId": "68AF287603F1263364756E2164756E21",
52
53
  "names": []
53
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/load-config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACM,yBAAyB,EAC1C,MAAM,8BAA8B,CAAC;AAmCtC,eAAO,MAAM,UAAU,GAAU,oBAAoB,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,yBAAyB,CA2B1G,CAAC"}
1
+ {"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/load-config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACM,yBAAyB,EAC1C,MAAM,8BAA8B,CAAC;AAoCtC,eAAO,MAAM,UAAU,GAAU,oBAAoB,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,yBAAyB,CA2B1G,CAAC"}
@@ -6,6 +6,7 @@ export declare const parseConfig: (path: string) => Promise<{
6
6
  } | undefined;
7
7
  watch?: {
8
8
  debounceMs?: number | undefined;
9
+ ignore?: string | string[] | undefined;
9
10
  hooks?: {
10
11
  onInit?: Function | undefined;
11
12
  onBeforeProcessPackage?: Function | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/parse-config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,GAAU,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7C,CAAC"}
1
+ {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/parse-config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,GAAU,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-config-path.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/search-config-path.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,gBAAgB,GAAU,eAAe,MAAM,gCA4B3D,CAAC"}
1
+ {"version":3,"file":"search-config-path.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/functions/search-config-path.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,gBAAgB,GAAU,eAAe,MAAM,gCA4B3D,CAAC"}
@@ -46,6 +46,10 @@ export declare const Config: z.ZodMiniObject<{
46
46
  * @default 500
47
47
  */
48
48
  debounceMs: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
49
+ /**
50
+ * Patterns to ignore and prevent watch updates from matching files.
51
+ */
52
+ ignore: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
49
53
  /**
50
54
  * Lifecycle hooks to tap into different stages of topological package processing and readiness.
51
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAI9B,eAAO,MAAM,QAAQ;;;;;;EAMnB,CAAC;AAEH,eAAO,MAAM,MAAM;IAClB;;;;;;;;OAQG;;IAEH;;OAEG;;QAEF;;;;;;;;WAQG;;QAEH;;;WAGG;;;IAGJ;;OAEG;;QAEF;;;WAGG;;QAEH;;WAEG;;YAEF;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;;QAGJ;;WAEG;;YAEF;;;eAGG;;YAEH;;eAEG;;YAEH;;;;eAIG;;YAEH;;;;eAIG;;;;IAIL;;;;;OAKG;;;;;;;;iBAEF,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAI9B,eAAO,MAAM,QAAQ;;;;;;EAMnB,CAAC;AAEH,eAAO,MAAM,MAAM;IAClB;;;;;;;;OAQG;;IAEH;;OAEG;;QAEF;;;;;;;;WAQG;;QAEH;;;WAGG;;;IAGJ;;OAEG;;QAEF;;;WAGG;;QAEH;;WAEG;;QAEH;;WAEG;;YAEF;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;YAEH;;eAEG;;;QAGJ;;WAEG;;YAEF;;;eAGG;;YAEH;;eAEG;;YAEH;;;;eAIG;;YAEH;;;;eAIG;;;;IAIL;;;;;OAKG;;;;;;;;iBAEF,CAAC"}
@@ -1,2 +1,2 @@
1
- export type SubprocessCallback<T> = (props: T) => string | Promise<string | undefined> | undefined;
1
+ export type SubprocessCallback<T> = (props: T) => string | Promise<string | undefined | void> | void;
2
2
  //# sourceMappingURL=subprocess-callback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subprocess-callback.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/types/subprocess-callback.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"subprocess-callback.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/configuration/types/subprocess-callback.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-commands-for-shell.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/process/functions/get-commands-for-shell.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,GAAI,cAAc,MAAM,KAAG,MAAM,EA8BhE,CAAC"}
1
+ {"version":3,"file":"get-commands-for-shell.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/process/functions/get-commands-for-shell.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,GAAI,cAAc,MAAM,KAAG,MAAM,EAmChE,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Extracts shell-level flags from a command string
3
+ */
4
+ export declare const parsePsShellFlags: (input: string) => {
5
+ flags: Set<string>;
6
+ command: string;
7
+ isPreEncoded: boolean;
8
+ };
9
+ //# sourceMappingURL=parse-ps-shell-flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-ps-shell-flags.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/process/functions/parse-ps-shell-flags.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM;;;;CAkC9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-files-modified-since.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/filter-files-modified-since.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,EAAE,EAAE,SAAS,MAAM,aAKxE,CAAC"}
1
+ {"version":3,"file":"filter-files-modified-since.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/filter-files-modified-since.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,EAAE,EAAE,SAAS,MAAM,aAQxE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const normalisePatternSeparators: (path: string) => string;
2
+ //# sourceMappingURL=normalise-pattern-separators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalise-pattern-separators.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/normalise-pattern-separators.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,WAEtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch-package-changes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/watch-package-changes.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AA4NvE,eAAO,MAAM,mBAAmB,GAC/B,aAAa,WAAW,EAAE,EAC1B,eAAe,aAAa,EAC5B,aAAa,oBAAoB,EACjC,SAAS,MAAM,EACf,QAAQ,MAAM;;CA2Id,CAAC"}
1
+ {"version":3,"file":"watch-package-changes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/watch-package-changes.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AA8MvE,eAAO,MAAM,mBAAmB,GAC/B,aAAa,WAAW,EAAE,EAC1B,eAAe,aAAa,EAC5B,aAAa,oBAAoB,EACjC,SAAS,MAAM,EACf,QAAQ,MAAM;;CAkJd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@package-pal/core",
3
- "version": "0.0.5",
3
+ "version": "0.0.8",
4
4
  "description": "Core PackagePal functionality.",
5
5
  "keywords": [
6
6
  "package",
@@ -13,13 +13,13 @@
13
13
  "license": "MIT",
14
14
  "type": "module",
15
15
  "dependencies": {
16
- "@package-pal/util": "^0.0.7",
17
- "semver": "^7.7.3",
18
- "zod": "^4.1.12"
16
+ "@package-pal/util": "^0.0.9",
17
+ "semver": "^7.7.4",
18
+ "zod": "^4.3.6"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/semver": "^7.7.1",
22
- "@types/bun": "^1.3.0",
22
+ "@types/bun": "^1.3.9",
23
23
  "typescript": "^5.9.3"
24
24
  },
25
25
  "engines": {
@@ -1,5 +0,0 @@
1
- export declare const parsePsFlags: (input: string) => {
2
- flags: string[];
3
- command: string;
4
- };
5
- //# sourceMappingURL=parse-ps-flags.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-ps-flags.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/process/functions/parse-ps-flags.ts"],"names":[],"mappings":"AA6CA,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM;;;CAkCzC,CAAC"}