@package-pal/core 0.0.11 → 0.0.13
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 +160 -101
- package/index.js.map +15 -14
- package/lib/api.d.ts.map +1 -1
- package/lib/graph/functions/generate-graphs.d.ts.map +1 -1
- package/lib/graph/functions/generate-topological-sorted-groups.d.ts.map +1 -1
- package/lib/package/functions/bump-package-version.d.ts +3 -0
- package/lib/package/functions/bump-package-version.d.ts.map +1 -0
- package/lib/package/functions/load-packages.d.ts.map +1 -1
- package/lib/package/functions/scan-glob-pattern-paths.d.ts.map +1 -1
- package/lib/package/types/package-adapter.d.ts +11 -12
- package/lib/package/types/package-adapter.d.ts.map +1 -1
- package/lib/watch/functions/dedupe-shared-paths.d.ts.map +1 -1
- package/lib/watch/functions/filter-files-modified-since.d.ts.map +1 -1
- package/lib/watch/functions/normalise-watched-file-path.d.ts.map +1 -1
- package/lib/watch/functions/watch-package-changes.d.ts.map +1 -1
- package/package.json +7 -8
package/index.js
CHANGED
|
@@ -12,9 +12,6 @@ var BumpVersionType = {
|
|
|
12
12
|
// packages/core/src/lib/package/types/package-adapter.ts
|
|
13
13
|
class PackageAdapter {
|
|
14
14
|
}
|
|
15
|
-
// packages/core/src/lib/api.ts
|
|
16
|
-
import { isDefined as isDefined4 } from "@package-pal/util";
|
|
17
|
-
|
|
18
15
|
// packages/core/src/lib/configuration/functions/check-bun.ts
|
|
19
16
|
var checkBun = () => {
|
|
20
17
|
if (!Bun) {
|
|
@@ -290,10 +287,13 @@ var trackPackageEntryDependencies = ({
|
|
|
290
287
|
}
|
|
291
288
|
};
|
|
292
289
|
var generateReverseGraph = (packages, packageGraph) => {
|
|
293
|
-
const reversePackageGraph = new Map
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
290
|
+
const reversePackageGraph = new Map;
|
|
291
|
+
for (const packageData of packages) {
|
|
292
|
+
reversePackageGraph.set(packageData.name, {
|
|
293
|
+
packageData,
|
|
294
|
+
pointsToPackages: new Set
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
297
|
for (const packageData of packages) {
|
|
298
298
|
const packageNode = assertDefined2(packageGraph.get(packageData.name));
|
|
299
299
|
for (const dependency of packageNode.pointsToPackages) {
|
|
@@ -351,14 +351,14 @@ var dfsTraverseGraphPaths = function* (graph, traverseFromPackages, options = {}
|
|
|
351
351
|
if (localVisited.has(node)) {
|
|
352
352
|
const idx = path.indexOf(node);
|
|
353
353
|
if (idx !== -1) {
|
|
354
|
-
yield
|
|
354
|
+
yield path.slice(idx).concat(node);
|
|
355
355
|
}
|
|
356
356
|
continue;
|
|
357
357
|
}
|
|
358
358
|
if (useGlobalVisited && globalVisited.has(node)) {
|
|
359
359
|
continue;
|
|
360
360
|
}
|
|
361
|
-
const newPath =
|
|
361
|
+
const newPath = path.concat(node);
|
|
362
362
|
const newLocalVisited = new Set(localVisited);
|
|
363
363
|
newLocalVisited.add(node);
|
|
364
364
|
const neighbours = graph.get(node)?.pointsToPackages;
|
|
@@ -390,7 +390,7 @@ import { assertDefined as assertDefined5 } from "@package-pal/util";
|
|
|
390
390
|
import { assertDefined as assertDefined4 } from "@package-pal/util";
|
|
391
391
|
var dfsTraverseGraph = function* (graph, traverseFromPackages) {
|
|
392
392
|
const visited = new Set;
|
|
393
|
-
const stack = Array.isArray(traverseFromPackages) ?
|
|
393
|
+
const stack = Array.isArray(traverseFromPackages) ? traverseFromPackages.slice() : [traverseFromPackages];
|
|
394
394
|
while (stack.length) {
|
|
395
395
|
const activePackage = assertDefined4(stack.pop());
|
|
396
396
|
if (visited.has(activePackage)) {
|
|
@@ -519,13 +519,20 @@ var getCircularDependencies = (inDegree) => {
|
|
|
519
519
|
};
|
|
520
520
|
var generateTopologicalSortedGroups = (packageGraph, logger) => {
|
|
521
521
|
logger?.debug(styleText4("dim", "Generating topological sorted groups..."));
|
|
522
|
-
const
|
|
523
|
-
const
|
|
524
|
-
const
|
|
525
|
-
|
|
522
|
+
const inDegree = new Map;
|
|
523
|
+
const graph = new Map;
|
|
524
|
+
for (const [packageName] of packageGraph) {
|
|
525
|
+
inDegree.set(packageName, 0);
|
|
526
|
+
graph.set(packageName, new Set);
|
|
527
|
+
}
|
|
528
|
+
for (const [packageName, node] of packageGraph) {
|
|
526
529
|
for (const dependencyName of node.pointsToPackages) {
|
|
527
|
-
|
|
528
|
-
|
|
530
|
+
const adj = graph.get(dependencyName);
|
|
531
|
+
if (adj) {
|
|
532
|
+
adj.add(packageName);
|
|
533
|
+
}
|
|
534
|
+
const currentDeg = inDegree.get(packageName) ?? 0;
|
|
535
|
+
inDegree.set(packageName, currentDeg + 1);
|
|
529
536
|
}
|
|
530
537
|
}
|
|
531
538
|
const result = [];
|
|
@@ -564,35 +571,88 @@ var generateTopologicalSortedGroups = (packageGraph, logger) => {
|
|
|
564
571
|
};
|
|
565
572
|
};
|
|
566
573
|
|
|
567
|
-
// packages/core/src/lib/package/functions/
|
|
574
|
+
// packages/core/src/lib/package/functions/bump-package-version.ts
|
|
568
575
|
import { styleText as styleText5 } from "util";
|
|
576
|
+
import {
|
|
577
|
+
isDefined as isDefined2,
|
|
578
|
+
runAsync
|
|
579
|
+
} from "@package-pal/util";
|
|
580
|
+
import { inc } from "semver";
|
|
581
|
+
var dependentWriteConcurrency = 20;
|
|
582
|
+
var bumpPackageVersion = async (options) => {
|
|
583
|
+
const exact = isDefined2(options.exact) ? options.exact : options.config.version.exact;
|
|
584
|
+
const preId = isDefined2(options.preId) ? options.preId : options.config.version.preId;
|
|
585
|
+
const {
|
|
586
|
+
packageName,
|
|
587
|
+
type,
|
|
588
|
+
packageGraphs,
|
|
589
|
+
adapter,
|
|
590
|
+
config: { logger }
|
|
591
|
+
} = options;
|
|
592
|
+
logger.debug(styleText5("dim", `Bumping package '${packageName}'...`));
|
|
593
|
+
const packageNode = packageGraphs.dependencies.get(packageName);
|
|
594
|
+
if (!packageNode) {
|
|
595
|
+
throw new Error(`Package '${packageName}' not found.`);
|
|
596
|
+
}
|
|
597
|
+
const currentVersion = packageNode.packageData.version ?? "1.0.0";
|
|
598
|
+
const bumpedVersion = inc(currentVersion, type, undefined, preId);
|
|
599
|
+
if (!bumpedVersion) {
|
|
600
|
+
throw new Error(`Package '${packageName}' version '${currentVersion}' is invalid.`);
|
|
601
|
+
}
|
|
602
|
+
logger.info(`Updating '${packageName}' version: ${currentVersion} \u2192 ${bumpedVersion}.`);
|
|
603
|
+
await adapter.bumpOwnVersion(packageNode.packageData, bumpedVersion, logger);
|
|
604
|
+
const dependentWriteTasks = [];
|
|
605
|
+
for (const dependent of dfsTraverseGraph(packageGraphs.dependents, packageName)) {
|
|
606
|
+
dependentWriteTasks.push(async () => {
|
|
607
|
+
const updated = await adapter.bumpDependencyVersion(dependent, packageName, bumpedVersion, exact, logger);
|
|
608
|
+
if (updated) {
|
|
609
|
+
logger.debug(styleText5("dim", `Updated dependency '${packageName}' in '${dependent.name}'.`));
|
|
610
|
+
}
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
await runAsync(dependentWriteTasks, dependentWriteConcurrency);
|
|
614
|
+
};
|
|
615
|
+
|
|
616
|
+
// packages/core/src/lib/package/functions/load-packages.ts
|
|
617
|
+
import { styleText as styleText6 } from "util";
|
|
618
|
+
import { normalisePath } from "@package-pal/util";
|
|
569
619
|
var loadPackages = async (rootDir, packagePatterns, adapter, logger) => {
|
|
570
|
-
|
|
571
|
-
|
|
620
|
+
let resolvedPatterns = packagePatterns;
|
|
621
|
+
if (packagePatterns.length === 1 && packagePatterns[0] === "packages/*") {
|
|
622
|
+
resolvedPatterns = adapter.defaultPatterns;
|
|
623
|
+
}
|
|
624
|
+
const patternContent = resolvedPatterns.map((pattern) => `'${pattern}'`).join(", ");
|
|
625
|
+
logger.debug(styleText6("dim", `Loading packages matching pattern/s ${patternContent}...${rootDir ? ` from ${rootDir}` : ""}`));
|
|
572
626
|
const packages = [];
|
|
573
|
-
const
|
|
574
|
-
for await (const packageData of adapter.scanPackages(Array.from(new Set(
|
|
575
|
-
|
|
627
|
+
const seenByName = new Map;
|
|
628
|
+
for await (const packageData of adapter.scanPackages(Array.from(new Set(resolvedPatterns)), logger, rootDir)) {
|
|
629
|
+
const normalizedPath = normalisePath(packageData.path);
|
|
630
|
+
const existingPath = seenByName.get(packageData.name);
|
|
631
|
+
if (existingPath === normalizedPath) {
|
|
576
632
|
continue;
|
|
577
633
|
}
|
|
578
|
-
|
|
634
|
+
if (existingPath) {
|
|
635
|
+
const duplicatePaths = existingPath.localeCompare(normalizedPath) <= 0 ? [existingPath, normalizedPath] : [normalizedPath, existingPath];
|
|
636
|
+
throw new Error(`Duplicate package name '${packageData.name}' found in multiple manifests: '${duplicatePaths[0]}' and '${duplicatePaths[1]}'.`);
|
|
637
|
+
}
|
|
638
|
+
seenByName.set(packageData.name, normalizedPath);
|
|
579
639
|
packages.push(packageData);
|
|
580
640
|
}
|
|
581
641
|
if (!packages.length) {
|
|
582
642
|
throw new Error(`No packages found for pattern/s ${patternContent}.`);
|
|
583
643
|
}
|
|
584
|
-
return packages;
|
|
644
|
+
return packages.sort((a, b) => a.name.localeCompare(b.name) || normalisePath(a.path).localeCompare(normalisePath(b.path)));
|
|
585
645
|
};
|
|
586
646
|
|
|
587
647
|
// packages/core/src/lib/package/functions/run-for-each-package.ts
|
|
588
648
|
import { dirname as dirname4 } from "path";
|
|
589
649
|
import {
|
|
590
650
|
assertDefined as assertDefined8,
|
|
591
|
-
runAsync
|
|
651
|
+
runAsync as runAsync2
|
|
592
652
|
} from "@package-pal/util";
|
|
593
653
|
|
|
594
654
|
// packages/core/src/lib/process/functions/run-subprocess.ts
|
|
595
|
-
import { styleText as
|
|
655
|
+
import { styleText as styleText7 } from "util";
|
|
596
656
|
|
|
597
657
|
// packages/core/src/lib/process/types/exit-state.ts
|
|
598
658
|
var ExitState = {
|
|
@@ -888,7 +948,7 @@ var cancelCodes = new Set([
|
|
|
888
948
|
]);
|
|
889
949
|
var runSubprocess = async (opts) => {
|
|
890
950
|
if (opts.signal?.aborted) {
|
|
891
|
-
opts.logger?.debug(
|
|
951
|
+
opts.logger?.debug(styleText7("dim", `Skipped '${opts.debugName}' subprocess command; signal already cancelled.`));
|
|
892
952
|
return ExitState.Cancelled;
|
|
893
953
|
}
|
|
894
954
|
const {
|
|
@@ -915,11 +975,11 @@ var runSubprocess = async (opts) => {
|
|
|
915
975
|
const [readStdout, readStderr] = [{
|
|
916
976
|
source: subprocess.stdout,
|
|
917
977
|
type: StdType.Out,
|
|
918
|
-
writer: getLineBufferedWriter(
|
|
978
|
+
writer: getLineBufferedWriter(styleText7("dim", `[O-${pid}]`.padEnd(minPrefixLen, " ")))
|
|
919
979
|
}, {
|
|
920
980
|
source: subprocess.stderr,
|
|
921
981
|
type: StdType.Err,
|
|
922
|
-
writer: getLineBufferedWriter(
|
|
982
|
+
writer: getLineBufferedWriter(styleText7("yellow", styleText7("dim", `[E-${pid}]`.padEnd(minPrefixLen, " "))), undefined, process.stderr.write.bind(process.stderr))
|
|
923
983
|
}].map(async ({
|
|
924
984
|
source,
|
|
925
985
|
type,
|
|
@@ -938,7 +998,7 @@ var runSubprocess = async (opts) => {
|
|
|
938
998
|
writer.flush();
|
|
939
999
|
});
|
|
940
1000
|
const executedCommand = commands.join(" ");
|
|
941
|
-
opts.logger?.debug(
|
|
1001
|
+
opts.logger?.debug(styleText7("dim", `Started '${opts.debugName}' subprocess command '${opts.shellCommand}' (${executedCommand}) with PID ${pid}.`));
|
|
942
1002
|
const [
|
|
943
1003
|
,
|
|
944
1004
|
,
|
|
@@ -948,14 +1008,14 @@ var runSubprocess = async (opts) => {
|
|
|
948
1008
|
readStderr,
|
|
949
1009
|
subprocess.exited.then((exitCode) => {
|
|
950
1010
|
if (cancelCodes.has(exitCode)) {
|
|
951
|
-
opts.logger?.debug(
|
|
1011
|
+
opts.logger?.debug(styleText7("dim", `Cancelled '${opts.debugName}' subprocess command; PID ${pid} exited.`));
|
|
952
1012
|
return ExitState.Cancelled;
|
|
953
1013
|
}
|
|
954
1014
|
if (exitCode !== 0) {
|
|
955
|
-
opts.logger?.error(
|
|
1015
|
+
opts.logger?.error(styleText7("red", `'${opts.debugName}' command '${opts.shellCommand}' (${executedCommand}) with PID ${pid} failed with exit code ${exitCode.toString()}.`));
|
|
956
1016
|
return ExitState.Errored;
|
|
957
1017
|
}
|
|
958
|
-
opts.logger?.debug(
|
|
1018
|
+
opts.logger?.debug(styleText7("dim", `Completed '${opts.debugName}' subprocess command; PID ${pid} exited.`));
|
|
959
1019
|
return ExitState.Completed;
|
|
960
1020
|
})
|
|
961
1021
|
]);
|
|
@@ -970,7 +1030,7 @@ var runForEachPackage = async (packageGraphs, packageOrder, getCommand, logger,
|
|
|
970
1030
|
processPackageOrder = [processPackageOrder.flat()];
|
|
971
1031
|
}
|
|
972
1032
|
for (const group of processPackageOrder) {
|
|
973
|
-
await
|
|
1033
|
+
await runAsync2(group.map((packageName) => async () => {
|
|
974
1034
|
const packageNode = assertDefined8(packageGraphs.dependencies.get(packageName));
|
|
975
1035
|
const processPackageProps = {
|
|
976
1036
|
name: packageName,
|
|
@@ -1008,14 +1068,14 @@ import {
|
|
|
1008
1068
|
dirname as dirname6,
|
|
1009
1069
|
join as join3
|
|
1010
1070
|
} from "path";
|
|
1011
|
-
import { styleText as
|
|
1071
|
+
import { styleText as styleText9 } from "util";
|
|
1012
1072
|
import {
|
|
1013
|
-
assertDefined as
|
|
1073
|
+
assertDefined as assertDefined11,
|
|
1014
1074
|
getDeferredPromise,
|
|
1015
1075
|
getStringMatcher,
|
|
1016
|
-
isDefined as
|
|
1017
|
-
normalisePath,
|
|
1018
|
-
runAsync as
|
|
1076
|
+
isDefined as isDefined4,
|
|
1077
|
+
normalisePath as normalisePath2,
|
|
1078
|
+
runAsync as runAsync4
|
|
1019
1079
|
} from "@package-pal/util";
|
|
1020
1080
|
var {Glob } = globalThis.Bun;
|
|
1021
1081
|
|
|
@@ -1052,36 +1112,41 @@ var DedupePathsBy = {
|
|
|
1052
1112
|
|
|
1053
1113
|
// packages/core/src/lib/watch/functions/dedupe-shared-paths.ts
|
|
1054
1114
|
import { sep } from "path";
|
|
1055
|
-
|
|
1115
|
+
var isStrictDescendant = (path, candidateParent) => path.startsWith(candidateParent + sep);
|
|
1056
1116
|
var dedupeSharedPaths = (paths, by) => {
|
|
1057
|
-
const
|
|
1058
|
-
const deduped = [];
|
|
1117
|
+
const sortedUniquePaths = Array.from(new Set(paths)).sort((a, b) => a.localeCompare(b));
|
|
1059
1118
|
if (by === DedupePathsBy.Parent) {
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1119
|
+
const deduped2 = [];
|
|
1120
|
+
let lastKept2;
|
|
1121
|
+
for (const path of sortedUniquePaths) {
|
|
1122
|
+
if (!lastKept2 || !isStrictDescendant(path, lastKept2)) {
|
|
1123
|
+
deduped2.push(path);
|
|
1124
|
+
lastKept2 = path;
|
|
1063
1125
|
}
|
|
1064
1126
|
}
|
|
1065
|
-
return
|
|
1127
|
+
return deduped2;
|
|
1066
1128
|
}
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1129
|
+
const deduped = [];
|
|
1130
|
+
let lastKept;
|
|
1131
|
+
for (let i = sortedUniquePaths.length - 1;i >= 0; i--) {
|
|
1132
|
+
const path = sortedUniquePaths[i];
|
|
1133
|
+
if (!path) {
|
|
1134
|
+
continue;
|
|
1073
1135
|
}
|
|
1074
|
-
if (!
|
|
1136
|
+
if (!lastKept || !isStrictDescendant(lastKept, path)) {
|
|
1075
1137
|
deduped.push(path);
|
|
1138
|
+
lastKept = path;
|
|
1076
1139
|
}
|
|
1077
1140
|
}
|
|
1078
|
-
|
|
1141
|
+
deduped.reverse();
|
|
1142
|
+
return deduped;
|
|
1079
1143
|
};
|
|
1080
1144
|
|
|
1081
1145
|
// packages/core/src/lib/watch/functions/filter-files-modified-since.ts
|
|
1082
1146
|
import { stat } from "fs/promises";
|
|
1147
|
+
import { runAsync as runAsync3 } from "@package-pal/util";
|
|
1083
1148
|
var filterFilesModifiedSince = async (paths, sinceMs) => {
|
|
1084
|
-
const
|
|
1149
|
+
const tasks = paths.map((path) => async () => {
|
|
1085
1150
|
try {
|
|
1086
1151
|
const s = await stat(path);
|
|
1087
1152
|
const isModifiedSince = s.mtimeMs >= sinceMs;
|
|
@@ -1089,22 +1154,23 @@ var filterFilesModifiedSince = async (paths, sinceMs) => {
|
|
|
1089
1154
|
} catch {
|
|
1090
1155
|
return path;
|
|
1091
1156
|
}
|
|
1092
|
-
})
|
|
1157
|
+
});
|
|
1158
|
+
const results = await runAsync3(tasks, 20);
|
|
1093
1159
|
return results.filter((path) => path !== null);
|
|
1094
1160
|
};
|
|
1095
1161
|
|
|
1096
1162
|
// packages/core/src/lib/watch/functions/get-change-logic.ts
|
|
1097
|
-
import { styleText as
|
|
1098
|
-
import { assertDefined as
|
|
1163
|
+
import { styleText as styleText8 } from "util";
|
|
1164
|
+
import { assertDefined as assertDefined10 } from "@package-pal/util";
|
|
1099
1165
|
|
|
1100
1166
|
// packages/core/src/lib/graph/functions/generate-topological-ranking-range.ts
|
|
1101
|
-
import { isDefined as
|
|
1167
|
+
import { isDefined as isDefined3 } from "@package-pal/util";
|
|
1102
1168
|
var generateTopologicalRankingRange = (graph, ranking) => {
|
|
1103
1169
|
let min = Infinity;
|
|
1104
1170
|
let max = -Infinity;
|
|
1105
1171
|
for (const key of graph.keys()) {
|
|
1106
1172
|
const rank = ranking.get(key);
|
|
1107
|
-
if (!
|
|
1173
|
+
if (!isDefined3(rank)) {
|
|
1108
1174
|
continue;
|
|
1109
1175
|
}
|
|
1110
1176
|
if (rank < min) {
|
|
@@ -1121,11 +1187,11 @@ var generateTopologicalRankingRange = (graph, ranking) => {
|
|
|
1121
1187
|
};
|
|
1122
1188
|
|
|
1123
1189
|
// packages/core/src/lib/graph/functions/generate-topological-ranking.ts
|
|
1124
|
-
import { assertDefined as
|
|
1190
|
+
import { assertDefined as assertDefined9 } from "@package-pal/util";
|
|
1125
1191
|
var generateTopologicalRanking = (packageProcessOrder) => {
|
|
1126
1192
|
const rankMap = new Map;
|
|
1127
1193
|
for (let i = 0;i < packageProcessOrder.length; i++) {
|
|
1128
|
-
for (const packageName of
|
|
1194
|
+
for (const packageName of assertDefined9(packageProcessOrder[i])) {
|
|
1129
1195
|
rankMap.set(packageName, i);
|
|
1130
1196
|
}
|
|
1131
1197
|
}
|
|
@@ -1195,8 +1261,8 @@ var getChangeLogic = (packageGraphs, packageChanges, lastProcessedSubgraph, conf
|
|
|
1195
1261
|
const changedPackages = Array.from(packageChanges.keys());
|
|
1196
1262
|
const changedFilePaths = Array.from(packageChanges.values()).flat();
|
|
1197
1263
|
if (packageChanges.size) {
|
|
1198
|
-
logger?.debug(
|
|
1199
|
-
logger?.debug(
|
|
1264
|
+
logger?.debug(styleText8("dim", `Changes detected in ${changedPackages.map((packageName) => `'${packageName}'`).join(", ")}.`));
|
|
1265
|
+
logger?.debug(styleText8("dim", `Changed file paths: ${changedFilePaths.map((filePath) => `'${filePath}'`).join(", ")}.`));
|
|
1200
1266
|
}
|
|
1201
1267
|
const packageOrder = generateTopologicalSortedGroups(packageGraphs.dependents, logger);
|
|
1202
1268
|
const packageProcessOrder = packageOrder.circular.length > 0 ? packageOrder.groups.toReversed().concat([packageOrder.circular]) : packageOrder.groups.toReversed();
|
|
@@ -1207,9 +1273,9 @@ var getChangeLogic = (packageGraphs, packageChanges, lastProcessedSubgraph, conf
|
|
|
1207
1273
|
const isSubgraphOfPrevious = !!lastProcessedSubgraph && isSubgraph(lastProcessedSubgraph, changedPackageSubgraph);
|
|
1208
1274
|
const isDisjointFromPrevious = !lastProcessedSubgraph || !isSubgraphOfPrevious && isDisjoint(lastProcessedSubgraph, changedPackageSubgraph);
|
|
1209
1275
|
const isRankedGreaterThanOrEqualToPrevious = !!lastProcessedSubgraph && !isSubgraphOfPrevious && isRankedGreaterThanOrEqual(lastProcessedSubgraph, changedPackageSubgraph, packageRankings);
|
|
1210
|
-
logger?.debug(
|
|
1211
|
-
logger?.debug(
|
|
1212
|
-
logger?.debug(
|
|
1276
|
+
logger?.debug(styleText8("dim", `Changes are subgraph of previous: ${isSubgraphOfPrevious.toString()}.`));
|
|
1277
|
+
logger?.debug(styleText8("dim", `Changes are disjoint from previous: ${isDisjointFromPrevious.toString()}.`));
|
|
1278
|
+
logger?.debug(styleText8("dim", `Changes are ranked greater than or equal to previous: ${isRankedGreaterThanOrEqualToPrevious.toString()}.`));
|
|
1213
1279
|
let action = ChangeAction.Restart;
|
|
1214
1280
|
if (!packageChanges.size) {
|
|
1215
1281
|
action = ChangeAction.Ignore;
|
|
@@ -1221,15 +1287,15 @@ var getChangeLogic = (packageGraphs, packageChanges, lastProcessedSubgraph, conf
|
|
|
1221
1287
|
action = ChangeAction.Partial;
|
|
1222
1288
|
}
|
|
1223
1289
|
if (action === ChangeAction.Partial && isRankedGreaterThanOrEqualToPrevious) {
|
|
1224
|
-
const [prevMinRank] = generateTopologicalRankingRange(
|
|
1290
|
+
const [prevMinRank] = generateTopologicalRankingRange(assertDefined10(lastProcessedSubgraph), packageRankings);
|
|
1225
1291
|
for (let i = 0;i < changedPackageProcessOrder.length; i++) {
|
|
1226
|
-
changedPackageProcessOrder[i] =
|
|
1292
|
+
changedPackageProcessOrder[i] = assertDefined10(changedPackageProcessOrder[i]).filter((packageName) => {
|
|
1227
1293
|
const rank = packageRankings.get(packageName);
|
|
1228
1294
|
return rank !== undefined && rank >= prevMinRank;
|
|
1229
1295
|
});
|
|
1230
1296
|
}
|
|
1231
1297
|
}
|
|
1232
|
-
logger?.debug(
|
|
1298
|
+
logger?.debug(styleText8("dim", `Determined change action: ${action}.`));
|
|
1233
1299
|
return {
|
|
1234
1300
|
changedPackageProcessOrder,
|
|
1235
1301
|
changedPackageSubgraph,
|
|
@@ -1256,8 +1322,9 @@ var removeTrailing = [
|
|
|
1256
1322
|
var normaliseWatchedFilePath = (filePath) => {
|
|
1257
1323
|
const dir = dirname5(filePath);
|
|
1258
1324
|
let base = basename3(filePath);
|
|
1325
|
+
const baseLower = base.toLowerCase();
|
|
1259
1326
|
for (const trailing of removeTrailing) {
|
|
1260
|
-
if (
|
|
1327
|
+
if (baseLower.endsWith(trailing)) {
|
|
1261
1328
|
const sliceStart = base.startsWith(".") ? 1 : 0;
|
|
1262
1329
|
base = base.slice(sliceStart, -trailing.length);
|
|
1263
1330
|
break;
|
|
@@ -1278,7 +1345,7 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
|
|
|
1278
1345
|
const isSequential = watchConfig.subprocess.concurrency === 1;
|
|
1279
1346
|
const controller = determineAbortController(isRestart);
|
|
1280
1347
|
const onProcessFailure = () => {
|
|
1281
|
-
logger.debug(
|
|
1348
|
+
logger.debug(styleText9("dim", "Aborting controller: process failed."));
|
|
1282
1349
|
controller.abort();
|
|
1283
1350
|
state.lastProcessedSubgraph = undefined;
|
|
1284
1351
|
};
|
|
@@ -1287,12 +1354,12 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
|
|
|
1287
1354
|
return;
|
|
1288
1355
|
}
|
|
1289
1356
|
if (packageChanges.size) {
|
|
1290
|
-
logger.info(`${isRestart ? "Restarting processing" : "Initiating partial processing"} ${isSequential ? "sequentially" : `in parallel${
|
|
1357
|
+
logger.info(`${isRestart ? "Restarting processing" : "Initiating partial processing"} ${isSequential ? "sequentially" : `in parallel${isDefined4(watchConfig.subprocess.concurrency) ? ` with concurrency ${watchConfig.subprocess.concurrency.toString()}` : ""}`}.`);
|
|
1291
1358
|
state.lastProcessedSubgraph = state.lastProcessedSubgraph && !isRestart ? mergeGraphs(state.lastProcessedSubgraph, changedPackageSubgraph) : changedPackageSubgraph;
|
|
1292
1359
|
}
|
|
1293
1360
|
for (const group of changedPackageProcessOrder) {
|
|
1294
|
-
await
|
|
1295
|
-
const packageNode =
|
|
1361
|
+
await runAsync4(group.map((packageName) => async () => {
|
|
1362
|
+
const packageNode = assertDefined11(packageGraphs.dependencies.get(packageName));
|
|
1296
1363
|
const changedPaths = packageChanges.get(packageName) ?? [];
|
|
1297
1364
|
const processPackageProps = {
|
|
1298
1365
|
name: packageName,
|
|
@@ -1343,7 +1410,7 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
|
|
|
1343
1410
|
if (!errored) {
|
|
1344
1411
|
const matchedErrorText = erroredMatcher?.push(chunk).matched();
|
|
1345
1412
|
if (matchedErrorText) {
|
|
1346
|
-
logger.error(
|
|
1413
|
+
logger.error(styleText9("red", `'${packageName}' subprocess matched error text '${matchedErrorText}'.`));
|
|
1347
1414
|
errored = true;
|
|
1348
1415
|
Promise.resolve(watchConfig.hooks.onProcessPackageError(processPackageProps)).then((processPackageErrorCommand) => {
|
|
1349
1416
|
if (!processPackageErrorCommand) {
|
|
@@ -1420,8 +1487,9 @@ var onProcessPackage = async (packageGraphs, packageChanges, watchConfig, determ
|
|
|
1420
1487
|
}
|
|
1421
1488
|
};
|
|
1422
1489
|
var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, logger) => {
|
|
1423
|
-
const
|
|
1424
|
-
|
|
1490
|
+
const packageDataByPath = new Map(packageData.map((data) => [data.path, data]));
|
|
1491
|
+
const dedupedRootPackageData = dedupeSharedPaths(Array.from(packageDataByPath.keys()), DedupePathsBy.Parent).map((packagePath) => assertDefined11(packageDataByPath.get(packagePath)));
|
|
1492
|
+
logger.debug(styleText9("dim", `Starting ${dedupedRootPackageData.length.toString()} watchers for ${packageData.length.toString()} packages.`));
|
|
1425
1493
|
let closed = false;
|
|
1426
1494
|
const state = { lastProcessedSubgraph: undefined };
|
|
1427
1495
|
let debounceTimeout;
|
|
@@ -1432,7 +1500,7 @@ var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, log
|
|
|
1432
1500
|
const useController = (reset) => {
|
|
1433
1501
|
if (controller && (reset || controller.signal.aborted)) {
|
|
1434
1502
|
if (reset) {
|
|
1435
|
-
logger.debug(
|
|
1503
|
+
logger.debug(styleText9("dim", "Aborting controller: reset for new packages."));
|
|
1436
1504
|
controller.abort();
|
|
1437
1505
|
}
|
|
1438
1506
|
controller = undefined;
|
|
@@ -1446,16 +1514,16 @@ var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, log
|
|
|
1446
1514
|
filePath,
|
|
1447
1515
|
isInitial = false
|
|
1448
1516
|
}) => {
|
|
1449
|
-
if (!
|
|
1517
|
+
if (!isDefined4(startedDebounceMs)) {
|
|
1450
1518
|
startedDebounceMs = Date.now();
|
|
1451
1519
|
}
|
|
1452
1520
|
if (packageName && watchPath && filePath) {
|
|
1453
|
-
const changedPath =
|
|
1521
|
+
const changedPath = normalisePath2(join3(watchPath, normaliseWatchedFilePath(filePath)));
|
|
1454
1522
|
if (ignoreGlobs?.some((glob) => glob.match(changedPath))) {
|
|
1455
|
-
logger.debug(
|
|
1523
|
+
logger.debug(styleText9("dim", `Ignoring change '${changedPath}' (matched ignore pattern).`));
|
|
1456
1524
|
return;
|
|
1457
1525
|
}
|
|
1458
|
-
logger.debug(
|
|
1526
|
+
logger.debug(styleText9("dim", `Tracked change '${changedPath}'.`));
|
|
1459
1527
|
const existingPaths = changedPackagePaths.get(packageName);
|
|
1460
1528
|
if (existingPaths) {
|
|
1461
1529
|
existingPaths.add(changedPath);
|
|
@@ -1475,7 +1543,7 @@ var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, log
|
|
|
1475
1543
|
const packageChanges = new Map;
|
|
1476
1544
|
for (const [packageName2, paths] of changedPackagePaths) {
|
|
1477
1545
|
const dedupedPaths = dedupeSharedPaths(Array.from(paths), DedupePathsBy.Child).sort();
|
|
1478
|
-
const processedPaths = await filterFilesModifiedSince(dedupedPaths,
|
|
1546
|
+
const processedPaths = await filterFilesModifiedSince(dedupedPaths, assertDefined11(startedDebounceMs) - fileModifiedThresholdMs);
|
|
1479
1547
|
if (processedPaths.length) {
|
|
1480
1548
|
packageChanges.set(packageName2, processedPaths);
|
|
1481
1549
|
}
|
|
@@ -1507,12 +1575,12 @@ var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, log
|
|
|
1507
1575
|
watchers.forEach((watcher) => {
|
|
1508
1576
|
watcher.close();
|
|
1509
1577
|
});
|
|
1510
|
-
logger.debug(
|
|
1578
|
+
logger.debug(styleText9("dim", "Aborting controller: closing watchers."));
|
|
1511
1579
|
controller?.abort();
|
|
1512
1580
|
closed = true;
|
|
1513
1581
|
};
|
|
1514
1582
|
process.on("SIGINT", () => {
|
|
1515
|
-
logger.debug(
|
|
1583
|
+
logger.debug(styleText9("dim", "Received SIGINT: closing watchers."));
|
|
1516
1584
|
closeWatchers();
|
|
1517
1585
|
process.exit(0);
|
|
1518
1586
|
});
|
|
@@ -1530,10 +1598,10 @@ var watchPackageChanges = (packageData, packageGraphs, watchConfig, rootDir, log
|
|
|
1530
1598
|
});
|
|
1531
1599
|
return { close: () => {
|
|
1532
1600
|
if (closed) {
|
|
1533
|
-
logger.debug(
|
|
1601
|
+
logger.debug(styleText9("dim", "Watchers already closed."));
|
|
1534
1602
|
return;
|
|
1535
1603
|
}
|
|
1536
|
-
logger.debug(
|
|
1604
|
+
logger.debug(styleText9("dim", "Closing watchers."));
|
|
1537
1605
|
closeWatchers();
|
|
1538
1606
|
} };
|
|
1539
1607
|
};
|
|
@@ -1560,18 +1628,9 @@ var getPackageCircularDependencyPaths = (options) => {
|
|
|
1560
1628
|
checkBun();
|
|
1561
1629
|
return generatePackageCircularDependencyPaths(options.packageGraphs, options.packageOrder, options.config.logger);
|
|
1562
1630
|
};
|
|
1563
|
-
var
|
|
1631
|
+
var bumpPackageVersion2 = (options) => {
|
|
1564
1632
|
checkBun();
|
|
1565
|
-
|
|
1566
|
-
const preId = isDefined4(options.preId) ? options.preId : options.config.version.preId;
|
|
1567
|
-
return options.adapter.updateVersion({
|
|
1568
|
-
packageName: options.packageName,
|
|
1569
|
-
type: options.type,
|
|
1570
|
-
packageGraphs: options.packageGraphs,
|
|
1571
|
-
preId,
|
|
1572
|
-
exact,
|
|
1573
|
-
logger: options.config.logger
|
|
1574
|
-
});
|
|
1633
|
+
return bumpPackageVersion(options);
|
|
1575
1634
|
};
|
|
1576
1635
|
var watchPackages = (options) => {
|
|
1577
1636
|
checkBun();
|
|
@@ -1591,10 +1650,10 @@ export {
|
|
|
1591
1650
|
getPackageCircularDependencyPaths,
|
|
1592
1651
|
forEachPackage,
|
|
1593
1652
|
dfsTraverseGraph2 as dfsTraverseGraph,
|
|
1594
|
-
bumpPackageVersion,
|
|
1653
|
+
bumpPackageVersion2 as bumpPackageVersion,
|
|
1595
1654
|
PackageAdapter,
|
|
1596
1655
|
BumpVersionType
|
|
1597
1656
|
};
|
|
1598
1657
|
|
|
1599
|
-
//# debugId=
|
|
1658
|
+
//# debugId=9A67423F575E08A064756E2164756E21
|
|
1600
1659
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["..\\..\\packages\\core\\src\\lib\\types\\bump-version-type.ts", "..\\..\\packages\\core\\src\\lib\\package\\types\\package-adapter.ts", "..\\..\\packages\\core\\src\\lib\\
|
|
3
|
+
"sources": ["..\\..\\packages\\core\\src\\lib\\types\\bump-version-type.ts", "..\\..\\packages\\core\\src\\lib\\package\\types\\package-adapter.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\\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\\bump-package-version.ts", "..\\..\\packages\\core\\src\\lib\\package\\functions\\load-packages.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\\types\\shell.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\get-shell.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\parse-ps-shell-flags.ts", "..\\..\\packages\\core\\src\\lib\\process\\functions\\strip-clixml.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\\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\\types\\dedupe-paths-by.ts", "..\\..\\packages\\core\\src\\lib\\watch\\functions\\dedupe-shared-paths.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", "..\\..\\packages\\core\\src\\lib\\api.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
|
-
"import type { Logger } from '../../configuration/types/logger.ts';\r\nimport type {
|
|
7
|
-
"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 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 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.adapter, 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 options.adapter.updateVersion({\r\n\t\tpackageName: options.packageName,\r\n\t\ttype: options.type,\r\n\t\tpackageGraphs: options.packageGraphs,\r\n\t\tpreId,\r\n\t\texact,\r\n\t\tlogger: options.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",
|
|
6
|
+
"import type { Logger } from '../../configuration/types/logger.ts';\r\nimport type { PackageData } from './package-data.ts';\r\n\r\nexport abstract class PackageAdapter {\r\n\t/**\r\n\t * Unique identifier for the adapter (e.g., 'package-json', 'msbuild').\r\n\t */\r\n\tabstract readonly name: string;\r\n\r\n\t/**\r\n\t * Glob pattern matching project manifests (e.g., 'package.json', '*.*proj').\r\n\t */\r\n\tabstract readonly manifestPattern: string;\r\n\r\n\t/**\r\n\t * Default package glob patterns to use if none are specified.\r\n\t */\r\n\tabstract readonly defaultPatterns: string[];\r\n\r\n\t/**\r\n\t * Returns true if this adapter detects that it should be used for the current workspace/CWD.\r\n\t */\r\n\tabstract detect(cwd: string): Promise<boolean>;\r\n\r\n\t/**\r\n\t * Scans and parses all package manifests within the specified patterns.\r\n\t * Each adapter chooses the most optimized way to scan and yield packages.\r\n\t */\r\n\tabstract scanPackages(\r\n\t\tpatterns: string[],\r\n\t\tlogger: Logger,\r\n\t\tcwd?: string,\r\n\t): AsyncIterable<PackageData>;\r\n\r\n\t/**\r\n\t * Bumps a package's own version in its manifest.\r\n\t */\r\n\tabstract bumpOwnVersion(\r\n\t\tpackageData: PackageData,\r\n\t\tnewVersion: string,\r\n\t\tlogger: Logger,\r\n\t): Promise<void>;\r\n\r\n\t/**\r\n\t * Updates a dependent package's manifest to point to the new dependency version.\r\n\t * Returns true if a modification was made.\r\n\t */\r\n\tabstract bumpDependencyVersion(\r\n\t\tdependentPackageData: PackageData,\r\n\t\ttargetDependencyName: string,\r\n\t\tnewVersion: string,\r\n\t\texact: boolean,\r\n\t\tlogger: Logger,\r\n\t): Promise<boolean>;\r\n}\r\n",
|
|
8
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",
|
|
9
8
|
"import { dirname } from 'path';\r\nimport { cwd } from 'process';\r\nimport { styleText } from 'util';\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\tadapter: 'auto',\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.debug('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",
|
|
10
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",
|
|
@@ -16,13 +15,14 @@
|
|
|
16
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",
|
|
17
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",
|
|
18
17
|
"import { dirname } from 'path';\r\n\r\nexport const isRootDir = (path: string) => {\r\n\treturn dirname(path) === path;\r\n};\r\n",
|
|
19
|
-
"import { styleText } from 'util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.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\tfor (const trackPackageName of packageData.localDependencies ?? []) {\r\n\t\tif (!packageNames.has(trackPackageName)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\ttrackedDependencies.add(trackPackageName);\r\n\t}\r\n};\r\n\r\nconst generateReverseGraph = (packages: PackageData[], packageGraph: PackageGraph) => {\r\n\tconst reversePackageGraph: PackageGraph = new Map(
|
|
18
|
+
"import { styleText } from 'util';\r\nimport { assertDefined } from '@package-pal/util';\r\nimport type { Logger } from '../../configuration/types/logger.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\tfor (const trackPackageName of packageData.localDependencies ?? []) {\r\n\t\tif (!packageNames.has(trackPackageName)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\ttrackedDependencies.add(trackPackageName);\r\n\t}\r\n};\r\n\r\nconst generateReverseGraph = (packages: PackageData[], packageGraph: PackageGraph) => {\r\n\tconst reversePackageGraph: PackageGraph = new Map();\r\n\tfor (const packageData of packages) {\r\n\t\treversePackageGraph.set(packageData.name, {\r\n\t\t\tpackageData: packageData,\r\n\t\t\tpointsToPackages: new Set<string>(),\r\n\t\t});\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",
|
|
20
19
|
"import { styleText } from '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 { PackageGraphs } from '../types/package-graphs.ts';\r\nimport type { PackageOrder } from '../types/package-order.ts';\r\nimport { dfsTraverseGraphPaths } from './dfs-traverse-graph-paths.ts';\r\nimport { extractSubgraph } from './extract-subgraph.ts';\r\n\r\nconst findStronglyConnectedComponents = (graph: PackageGraph) => {\r\n\tlet index = 0;\r\n\tconst indices = new Map<string, number>();\r\n\tconst lowlinks = new Map<string, number>();\r\n\tconst stack: string[] = [];\r\n\tconst onStack = new Set<string>();\r\n\tconst sccs: string[][] = [];\r\n\r\n\tconst strongConnect = (node: string) => {\r\n\t\tindices.set(node, index);\r\n\t\tlowlinks.set(node, index);\r\n\t\tindex++;\r\n\t\tstack.push(node);\r\n\t\tonStack.add(node);\r\n\r\n\t\tconst neighbors = graph.get(node)?.pointsToPackages ?? new Set();\r\n\t\tfor (const neighbor of neighbors) {\r\n\t\t\tif (!indices.has(neighbor)) {\r\n\t\t\t\tstrongConnect(neighbor);\r\n\t\t\t\tlowlinks.set(node, Math.min(assertDefined(lowlinks.get(node)), assertDefined(lowlinks.get(neighbor))));\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (onStack.has(neighbor)) {\r\n\t\t\t\tlowlinks.set(node, Math.min(assertDefined(lowlinks.get(node)), assertDefined(indices.get(neighbor))));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (lowlinks.get(node) === indices.get(node)) {\r\n\t\t\tconst scc: string[] = [];\r\n\t\t\tlet stackNode = assertDefined(stack.pop());\r\n\t\t\tonStack.delete(stackNode);\r\n\t\t\tscc.push(stackNode);\r\n\r\n\t\t\twhile (stackNode !== node) {\r\n\t\t\t\tstackNode = assertDefined(stack.pop());\r\n\t\t\t\tonStack.delete(stackNode);\r\n\t\t\t\tscc.push(stackNode);\r\n\t\t\t}\r\n\r\n\t\t\tconst firstNode = scc[0];\r\n\t\t\tconst isSelfCycle = !!firstNode && (graph.get(firstNode)?.pointsToPackages.has(firstNode) ?? false);\r\n\r\n\t\t\tif (scc.length > 1 || isSelfCycle) {\r\n\t\t\t\tsccs.push(scc);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfor (const node of graph.keys()) {\r\n\t\tif (!indices.has(node)) {\r\n\t\t\tstrongConnect(node);\r\n\t\t}\r\n\t}\r\n\r\n\treturn sccs;\r\n};\r\n\r\nconst findSampleCyclePath = (scc: string[], graph: PackageGraph) => {\r\n\tconst sccSet = new Set(scc);\r\n\r\n\treturn assertDefined(dfsTraverseGraphPaths(graph, scc).find((path) => {\r\n\t\tconst lastPackage = path[path.length - 1];\r\n\t\treturn path.length >= 2 && lastPackage && sccSet.has(lastPackage);\r\n\t}));\r\n};\r\n\r\nexport const generatePackageCircularDependencyPaths = (\r\n\t{ dependents }: PackageGraphs,\r\n\tpackageSorted: PackageOrder,\r\n\tlogger: Logger,\r\n) => {\r\n\tlogger.debug(styleText('dim', 'Generating circular dependency paths...'));\r\n\tconst subgraph = extractSubgraph(dependents, packageSorted.circular);\r\n\tconst scss = findStronglyConnectedComponents(subgraph);\r\n\tconst sampleCycles = scss.map(scc => findSampleCyclePath(scc, subgraph).reverse());\r\n\r\n\tif (sampleCycles.length) {\r\n\t\tconst sampleCycleContents = sampleCycles\r\n\t\t\t.map((cycle, index) => {\r\n\t\t\t\treturn `\\t${(index + 1).toString()}. ` + cycle.map(name => `'${name}'`).join(' → ');\r\n\t\t\t})\r\n\t\t\t.join('\\n');\r\n\t\tlogger.warn(styleText('yellow', `${sampleCycles.length.toString()} cyclic paths found:\\n${sampleCycleContents}`));\r\n\t} else {\r\n\t\tlogger.debug(styleText('dim', `No cyclic paths found.`));\r\n\t}\r\n\r\n\treturn sampleCycles;\r\n};\r\n",
|
|
21
|
-
"import { assertDefined } from '@package-pal/util';\r\nimport type { PackageGraph } from '../types/package-graph';\r\n\r\n// eslint-disable-next-line @stylistic/object-curly-newline\r\nexport interface DfsTraverseGraphPathsOptions {\r\n\t/**\r\n\t * Whether to use a global visited set to skip already visited nodes across different paths.\r\n\t * @default true\r\n\t */\r\n\tuseGlobalVisited?: boolean; }\r\n\r\nexport const dfsTraverseGraphPaths = function* (\r\n\tgraph: PackageGraph,\r\n\ttraverseFromPackages: string | string[],\r\n\toptions: DfsTraverseGraphPathsOptions = {},\r\n): Generator<string[]> {\r\n\tconst { useGlobalVisited = true } = options;\r\n\tconst globalVisited = new Set<string>();\r\n\tconst startPackages = Array.isArray(traverseFromPackages) ? traverseFromPackages : [traverseFromPackages];\r\n\r\n\tfor (const start of startPackages) {\r\n\t\tconst stack: {\r\n\t\t\tnode: string;\r\n\t\t\tpath: string[];\r\n\t\t\tlocalVisited: Set<string>;\r\n\t\t}[] = [{\r\n\t\t\tnode: start,\r\n\t\t\tpath: [],\r\n\t\t\tlocalVisited: new Set(),\r\n\t\t}];\r\n\r\n\t\twhile (stack.length) {\r\n\t\t\tconst {\r\n\t\t\t\tnode, path, localVisited,\r\n\t\t\t} = assertDefined(stack.pop());\r\n\r\n\t\t\tif (localVisited.has(node)) {\r\n\t\t\t\tconst idx = path.indexOf(node);\r\n\t\t\t\tif (idx !== -1) {\r\n\t\t\t\t\tyield
|
|
20
|
+
"import { assertDefined } from '@package-pal/util';\r\nimport type { PackageGraph } from '../types/package-graph';\r\n\r\n// eslint-disable-next-line @stylistic/object-curly-newline\r\nexport interface DfsTraverseGraphPathsOptions {\r\n\t/**\r\n\t * Whether to use a global visited set to skip already visited nodes across different paths.\r\n\t * @default true\r\n\t */\r\n\tuseGlobalVisited?: boolean; }\r\n\r\nexport const dfsTraverseGraphPaths = function* (\r\n\tgraph: PackageGraph,\r\n\ttraverseFromPackages: string | string[],\r\n\toptions: DfsTraverseGraphPathsOptions = {},\r\n): Generator<string[]> {\r\n\tconst { useGlobalVisited = true } = options;\r\n\tconst globalVisited = new Set<string>();\r\n\tconst startPackages = Array.isArray(traverseFromPackages) ? traverseFromPackages : [traverseFromPackages];\r\n\r\n\tfor (const start of startPackages) {\r\n\t\tconst stack: {\r\n\t\t\tnode: string;\r\n\t\t\tpath: string[];\r\n\t\t\tlocalVisited: Set<string>;\r\n\t\t}[] = [{\r\n\t\t\tnode: start,\r\n\t\t\tpath: [],\r\n\t\t\tlocalVisited: new Set(),\r\n\t\t}];\r\n\r\n\t\twhile (stack.length) {\r\n\t\t\tconst {\r\n\t\t\t\tnode, path, localVisited,\r\n\t\t\t} = assertDefined(stack.pop());\r\n\r\n\t\t\tif (localVisited.has(node)) {\r\n\t\t\t\tconst idx = path.indexOf(node);\r\n\t\t\t\tif (idx !== -1) {\r\n\t\t\t\t\tyield path.slice(idx).concat(node);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (useGlobalVisited && globalVisited.has(node)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst newPath = path.concat(node);\r\n\t\t\tconst newLocalVisited = new Set(localVisited);\r\n\t\t\tnewLocalVisited.add(node);\r\n\r\n\t\t\tconst neighbours = graph.get(node)?.pointsToPackages;\r\n\t\t\tlet pushed = false;\r\n\r\n\t\t\tif (neighbours) {\r\n\t\t\t\tfor (const neighbour of neighbours) {\r\n\t\t\t\t\tstack.push({\r\n\t\t\t\t\t\tnode: neighbour,\r\n\t\t\t\t\t\tpath: newPath,\r\n\t\t\t\t\t\tlocalVisited: newLocalVisited,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tpushed = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!pushed) {\r\n\t\t\t\tyield newPath;\r\n\t\t\t}\r\n\r\n\t\t\tif (useGlobalVisited) {\r\n\t\t\t\tglobalVisited.add(node);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n",
|
|
22
21
|
"import { assertDefined } from '@package-pal/util';\r\nimport type { PackageGraph } from '../types/package-graph.ts';\r\nimport { dfsTraverseGraph } from './dfs-traverse-graph.ts';\r\n\r\nexport const extractSubgraph = (graph: PackageGraph, fromPackages: string | string[]) => {\r\n\tconst reachablePackages = new Set(dfsTraverseGraph(graph, fromPackages).map(packageData => packageData.name));\r\n\tconst subgraph: PackageGraph = new Map();\r\n\r\n\tfor (const packageName of reachablePackages) {\r\n\t\tconst node = assertDefined(graph.get(packageName));\r\n\t\tconst filteredNeighbours = new Set<string>();\r\n\r\n\t\tfor (const dep of node.pointsToPackages) {\r\n\t\t\tif (reachablePackages.has(dep)) {\r\n\t\t\t\tfilteredNeighbours.add(dep);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsubgraph.set(packageName, {\r\n\t\t\tpackageData: node.packageData,\r\n\t\t\tpointsToPackages: filteredNeighbours,\r\n\t\t});\r\n\t}\r\n\r\n\treturn subgraph;\r\n};\r\n",
|
|
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) ?
|
|
24
|
-
"import { styleText } from '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\tif (degB !== degA) {\r\n\t\t\treturn degB - degA;\r\n\t\t}\r\n\t\treturn a.localeCompare(b);\r\n\t});\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
|
|
25
|
-
"import { styleText } from 'util';\
|
|
22
|
+
"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.slice() : [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",
|
|
23
|
+
"import { styleText } from '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\tif (degB !== degA) {\r\n\t\t\treturn degB - degA;\r\n\t\t}\r\n\t\treturn a.localeCompare(b);\r\n\t});\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 inDegree = new Map<string, number>();\r\n\tconst graph = new Map<string, Set<string>>();\r\n\r\n\tfor (const [packageName] of packageGraph) {\r\n\t\tinDegree.set(packageName, 0);\r\n\t\tgraph.set(packageName, new Set<string>());\r\n\t}\r\n\r\n\tfor (const [packageName, node] of packageGraph) {\r\n\t\tfor (const dependencyName of node.pointsToPackages) {\r\n\t\t\tconst adj = graph.get(dependencyName);\r\n\t\t\tif (adj) {\r\n\t\t\t\tadj.add(packageName);\r\n\t\t\t}\r\n\t\t\tconst currentDeg = inDegree.get(packageName) ?? 0;\r\n\t\t\tinDegree.set(packageName, currentDeg + 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",
|
|
24
|
+
"import { styleText } from 'util';\nimport {\n\tisDefined, runAsync,\n} from '@package-pal/util';\nimport { inc } from 'semver';\nimport { dfsTraverseGraph } from '../../graph/functions/dfs-traverse-graph.ts';\nimport type { BumpPackageVersionOptions } from '../../types/bump-package-version-options.ts';\n\nconst dependentWriteConcurrency = 20;\n\nexport const bumpPackageVersion = async (options: BumpPackageVersionOptions): Promise<void> => {\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\tconst {\r\n\t\tpackageName, type, packageGraphs, adapter, config: { logger },\r\n\t} = options;\r\n\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 ?? '1.0.0';\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\tlogger.info(`Updating '${packageName}' version: ${currentVersion} → ${bumpedVersion}.`);\r\n\tawait adapter.bumpOwnVersion(\r\n\t\tpackageNode.packageData, bumpedVersion, logger,\r\n\t);\r\n\r\n\tconst dependentWriteTasks: (() => Promise<void>)[] = [];\n\tfor (const dependent of dfsTraverseGraph(packageGraphs.dependents, packageName)) {\n\t\tdependentWriteTasks.push(async () => {\n\t\t\tconst updated = await adapter.bumpDependencyVersion(\n\t\t\t\tdependent, packageName, bumpedVersion, exact, logger,\n\t\t\t);\n\t\t\tif (updated) {\n\t\t\t\tlogger.debug(styleText('dim', `Updated dependency '${packageName}' in '${dependent.name}'.`));\n\t\t\t}\n\t\t});\n\t}\n\n\tawait runAsync(dependentWriteTasks, dependentWriteConcurrency);\n};\n",
|
|
25
|
+
"import { styleText } from 'util';\nimport { normalisePath } from '@package-pal/util';\nimport type { Logger } from '../../configuration/types/logger.ts';\nimport type { PackageAdapter } from '../types/package-adapter.ts';\nimport type { PackageData } from '../types/package-data.ts';\n\r\nexport const loadPackages = async (\r\n\trootDir: string,\r\n\tpackagePatterns: string[],\r\n\tadapter: PackageAdapter,\r\n\tlogger: Logger,\r\n) => {\r\n\tlet resolvedPatterns = packagePatterns;\r\n\tif (\r\n\t\tpackagePatterns.length === 1\r\n\t\t&& packagePatterns[0] === 'packages/*'\r\n\t) {\r\n\t\tresolvedPatterns = adapter.defaultPatterns;\r\n\t}\r\n\r\n\tconst patternContent = resolvedPatterns.map(pattern => `'${pattern}'`).join(', ');\r\n\tlogger.debug(styleText('dim', `Loading packages matching pattern/s ${patternContent}...${rootDir ? ` from ${rootDir}` : ''}`));\n\tconst packages: PackageData[] = [];\n\tconst seenByName = new Map<string, string>();\n\n\tfor await (const packageData of adapter.scanPackages(\n\t\tArray.from(new Set(resolvedPatterns)), logger, rootDir,\n\t)) {\n\t\tconst normalizedPath = normalisePath(packageData.path);\n\t\tconst existingPath = seenByName.get(packageData.name);\n\n\t\tif (existingPath === normalizedPath) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (existingPath) {\n\t\t\tconst duplicatePaths: [string, string] = existingPath.localeCompare(normalizedPath) <= 0\n\t\t\t\t? [existingPath, normalizedPath]\n\t\t\t\t: [normalizedPath, existingPath];\n\t\t\tthrow new Error(`Duplicate package name '${packageData.name}' found in multiple manifests: '${duplicatePaths[0]}' and '${duplicatePaths[1]}'.`);\n\t\t}\n\n\t\tseenByName.set(packageData.name, normalizedPath);\n\t\tpackages.push(packageData);\n\t}\n\n\tif (!packages.length) {\n\t\tthrow new Error(`No packages found for pattern/s ${patternContent}.`);\n\t}\n\n\treturn packages.sort((a, b) => a.name.localeCompare(b.name) || normalisePath(a.path).localeCompare(normalisePath(b.path)));\n};\n",
|
|
26
26
|
"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.circular.length > 0\r\n\t\t? packageOrder.groups.concat([packageOrder.circular])\r\n\t\t: packageOrder.groups;\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\tenv: {\r\n\t\t\t\t\tPP_PACKAGE_NAME: packageName,\r\n\t\t\t\t\tPP_PACKAGE_DIR: processPackageProps.dir,\r\n\t\t\t\t},\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",
|
|
27
27
|
"import { styleText } from '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\tenv?: Record<string, string | undefined>;\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 {\r\n\t\tcommands, stderrProcessor,\r\n\t} = 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\tenv: {\r\n\t\t\t...process.env,\r\n\t\t\t...opts.env,\r\n\t\t},\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\twriter: 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\twriter: getLineBufferedWriter(\r\n\t\t\t\tstyleText('yellow', styleText('dim', `[E-${pid}]`.padEnd(minPrefixLen, ' '))),\r\n\t\t\t\tundefined,\r\n\t\t\t\tprocess.stderr.write.bind(process.stderr),\r\n\t\t\t),\r\n\t\t}] as const\r\n\t).map(async ({\r\n\t\tsource, type, writer,\r\n\t}) => {\r\n\t\tawait readStream(source, (chunk) => {\r\n\t\t\tconst processedChunk = type === StdType.Err ? stderrProcessor(chunk) : chunk;\r\n\r\n\t\t\t// Skip writing if the processor suppressed the chunk entirely (e.g. PowerShell CLIXML header)\r\n\t\t\tif (processedChunk === '' && chunk !== '') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\twriter.write(processedChunk);\r\n\r\n\t\t\tif (opts.onStdChunk) {\r\n\t\t\t\topts.onStdChunk(processedChunk, type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\twriter.flush();\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",
|
|
28
28
|
"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",
|
|
@@ -34,21 +34,22 @@
|
|
|
34
34
|
"/**\r\n * Creates a stateful stripper for PowerShell CLIXML.\r\n * Buffers chunks to handle XML tags split across stream boundaries.\r\n */\r\nexport const createClixmlStripper = () => {\r\n\tlet buffer = '';\r\n\r\n\treturn (chunk: string): string => {\r\n\t\tbuffer += chunk;\r\n\r\n\t\t// If no XML markers, flush buffer and return\r\n\t\tif (!buffer.includes('<') && !buffer.includes('#< CLIXML')) {\r\n\t\t\tconst out = buffer;\r\n\t\t\tbuffer = '';\r\n\t\t\treturn out;\r\n\t\t}\r\n\r\n\t\t// If it has a '<' but doesn't look like an XML tag or CLIXML header,\r\n\t\t// it might just be a comparison operator in normal text.\r\n\t\t// However, to be safe, if we haven't seen the CLIXML header yet,\r\n\t\t// we should only buffer if we see the header or something that looks like an Obj/S tag.\r\n\t\tconst hasClixmlHeader = buffer.includes('#< CLIXML');\r\n\t\tconst hasClixmlTags = /<Obj|S S=\"Error\"|<\\/Objs>/.test(buffer);\r\n\r\n\t\tif (!hasClixmlHeader && !hasClixmlTags) {\r\n\t\t\tconst out = buffer;\r\n\t\t\tbuffer = '';\r\n\t\t\treturn out;\r\n\t\t}\r\n\r\n\t\t// Remove handshake and progress objects\r\n\t\tbuffer = buffer\r\n\t\t\t.replace(/#< CLIXML/g, '')\r\n\t\t\t.replace(/<Obj S=\"progress\"[\\s\\S]*?<\\/Obj>/g, '');\r\n\r\n\t\tlet output = '';\r\n\t\t// Extract content from error string tags\r\n\t\tbuffer = buffer.replace(/<S S=\"Error\">([\\s\\S]*?)<\\/S>/g, (_: string, msg: string) => {\r\n\t\t\toutput += msg;\r\n\t\t\treturn '';\r\n\t\t});\r\n\r\n\t\t// Clear noise if we hit the end of an XML block\r\n\t\tif (buffer.includes('</Objs>')) {\r\n\t\t\t// Extract any remaining text between tags before clearing\r\n\t\t\toutput += buffer.replace(/<[^>]+>/g, '');\r\n\t\t\tbuffer = '';\r\n\t\t}\r\n\r\n\t\tif (!output) return '';\r\n\r\n\t\treturn output\r\n\t\t\t.replace(/_x([0-9A-F]{4})_/g, (_: string, hex: string) => String.fromCharCode(parseInt(hex, 16)))\r\n\t\t\t.replace(/<[^>]+>/g, '');\r\n\t};\r\n};\r\n",
|
|
35
35
|
"import { identity } from '@package-pal/util';\r\n\r\n/**\r\n * Creates a writer that buffers input chunks and writes them line-by-line, prepending a prefix to each line.\r\n */\r\nexport const getLineBufferedWriter = (\r\n\tprefix: string,\r\n\tstyle: (s: string) => string = identity,\r\n\twrite: (chunk: string) => void = process.stdout.write.bind(process.stdout),\r\n) => {\r\n\tlet buffer = '';\r\n\r\n\treturn {\r\n\t\twrite: (chunk: string | null) => {\r\n\t\t\tif (chunk === null) {\r\n\t\t\t\tif (buffer.length > 0) {\r\n\t\t\t\t\twrite(`${prefix}${style(buffer)}\\n`);\r\n\t\t\t\t\tbuffer = '';\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tbuffer += chunk;\r\n\t\t\tlet start = 0;\r\n\t\t\tlet newlineIndex = buffer.indexOf('\\n');\r\n\r\n\t\t\twhile (newlineIndex !== -1) {\r\n\t\t\t\tlet end = newlineIndex;\r\n\r\n\t\t\t\t// Handle CRLF (\\r\\n)\r\n\t\t\t\tif (end > start && buffer[end - 1] === '\\r') {\r\n\t\t\t\t\tend--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst line = buffer.slice(start, end);\r\n\t\t\t\twrite(`${prefix}${style(line)}\\n`);\r\n\r\n\t\t\t\tstart = newlineIndex + 1;\r\n\t\t\t\tnewlineIndex = buffer.indexOf('\\n', start);\r\n\t\t\t}\r\n\r\n\t\t\t// Keep only the remaining partial line in the buffer\r\n\t\t\tbuffer = buffer.slice(start);\r\n\t\t},\r\n\t\tflush() {\r\n\t\t\tthis.write(null);\r\n\t\t},\r\n\t};\r\n};\r\n",
|
|
36
36
|
"export const readStream = async (stream: ReadableStream<Uint8Array>, use: (chunk: string) => void) => {\r\n\tconst decoder = new TextDecoder();\r\n\tconst reader = stream.getReader();\r\n\r\n\ttry {\r\n\t\tlet result = await reader.read();\r\n\t\twhile (!result.done) {\r\n\t\t\tuse(decoder.decode(result.value, { stream: true }));\r\n\t\t\tresult = await reader.read();\r\n\t\t}\r\n\t} finally {\r\n\t\treader.releaseLock();\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
|
-
"import {\r\n\twatch, type WatchEventType,\r\n} from 'fs';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport { styleText } from 'util';\r\nimport {\r\n\tassertDefined,\r\n\tgetDeferredPromise,\r\n\tgetStringMatcher,\r\n\tisDefined,\r\n\tnormalisePath,\r\n\trunAsync,\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 { DedupePathsBy } from '../types/dedupe-paths-by.ts';\r\nimport type { PackageChanges } from '../types/package-changes.ts';\r\nimport { dedupeSharedPaths } from './dedupe-shared-paths.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\nconst onProcessPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageChanges: PackageChanges,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\tdetermineAbortController: (reset: boolean) => AbortController,\r\n\tstate: { lastProcessedSubgraph: PackageGraph | undefined },\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, state.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\tstate.lastProcessedSubgraph = 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\tstate.lastProcessedSubgraph = state.lastProcessedSubgraph && !isRestart ? mergeGraphs(state.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\tconst state = { lastProcessedSubgraph: undefined as PackageGraph | undefined };\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 = normalisePath(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\tvoid (async () => {\r\n\t\t\t\tif (closed) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst packageChanges: PackageChanges = new Map();\r\n\t\t\t\tfor (const [packageName, paths] of changedPackagePaths) {\r\n\t\t\t\t\tconst dedupedPaths = dedupeSharedPaths(Array.from(paths), DedupePathsBy.Child).sort();\r\n\t\t\t\t\tconst processedPaths = await filterFilesModifiedSince(dedupedPaths, assertDefined(startedDebounceMs) - fileModifiedThresholdMs);\r\n\t\t\t\t\tif (processedPaths.length) {\r\n\t\t\t\t\t\tpackageChanges.set(packageName, processedPaths);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartedDebounceMs = undefined;\r\n\t\t\t\tchangedPackagePaths.clear();\r\n\r\n\t\t\t\tif (!packageChanges.size && !isInitial) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvoid onProcessPackage(\r\n\t\t\t\t\tpackageGraphs,\r\n\t\t\t\t\tpackageChanges,\r\n\t\t\t\t\twatchConfig,\r\n\t\t\t\t\t(reset: boolean) => useController(reset),\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t);\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",
|
|
37
|
+
"import {\r\n\twatch, type WatchEventType,\r\n} from 'fs';\r\nimport {\r\n\tdirname, join,\r\n} from 'path';\r\nimport { styleText } from 'util';\r\nimport {\r\n\tassertDefined,\r\n\tgetDeferredPromise,\r\n\tgetStringMatcher,\r\n\tisDefined,\r\n\tnormalisePath,\r\n\trunAsync,\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 { DedupePathsBy } from '../types/dedupe-paths-by.ts';\r\nimport type { PackageChanges } from '../types/package-changes.ts';\r\nimport { dedupeSharedPaths } from './dedupe-shared-paths.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\nconst onProcessPackage = async (\r\n\tpackageGraphs: PackageGraphs,\r\n\tpackageChanges: PackageChanges,\r\n\twatchConfig: ActivatedWatchConfig,\r\n\tdetermineAbortController: (reset: boolean) => AbortController,\r\n\tstate: { lastProcessedSubgraph: PackageGraph | undefined },\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, state.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\tstate.lastProcessedSubgraph = 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\tstate.lastProcessedSubgraph = state.lastProcessedSubgraph && !isRestart ? mergeGraphs(state.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) => {\n\tconst packageDataByPath = new Map(packageData.map(data => [data.path, data] as const));\n\tconst dedupedRootPackageData = dedupeSharedPaths(Array.from(packageDataByPath.keys()), DedupePathsBy.Parent)\n\t\t.map(packagePath => assertDefined(packageDataByPath.get(packagePath)));\n\tlogger.debug(styleText('dim', `Starting ${dedupedRootPackageData.length.toString()} watchers for ${packageData.length.toString()} packages.`));\n\r\n\tlet closed = false;\r\n\tconst state = { lastProcessedSubgraph: undefined as PackageGraph | undefined };\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 = normalisePath(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\tvoid (async () => {\r\n\t\t\t\tif (closed) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst packageChanges: PackageChanges = new Map();\r\n\t\t\t\tfor (const [packageName, paths] of changedPackagePaths) {\r\n\t\t\t\t\tconst dedupedPaths = dedupeSharedPaths(Array.from(paths), DedupePathsBy.Child).sort();\r\n\t\t\t\t\tconst processedPaths = await filterFilesModifiedSince(dedupedPaths, assertDefined(startedDebounceMs) - fileModifiedThresholdMs);\r\n\t\t\t\t\tif (processedPaths.length) {\r\n\t\t\t\t\t\tpackageChanges.set(packageName, processedPaths);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartedDebounceMs = undefined;\r\n\t\t\t\tchangedPackagePaths.clear();\r\n\r\n\t\t\t\tif (!packageChanges.size && !isInitial) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvoid onProcessPackage(\r\n\t\t\t\t\tpackageGraphs,\r\n\t\t\t\t\tpackageChanges,\r\n\t\t\t\t\twatchConfig,\r\n\t\t\t\t\t(reset: boolean) => useController(reset),\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tlogger,\r\n\t\t\t\t);\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
38
|
"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",
|
|
39
39
|
"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",
|
|
40
40
|
"import type { ValueOf } from '@package-pal/util';\r\n\r\nexport const DedupePathsBy = {\r\n\tParent: 'parent',\r\n\tChild: 'child',\r\n} as const;\r\n\r\nexport type DedupePathsBy = ValueOf<typeof DedupePathsBy>;\r\n",
|
|
41
|
-
"import { sep } from 'path';\
|
|
42
|
-
"import { stat } from 'fs/promises';\r\n\r\nexport const filterFilesModifiedSince = async (paths: string[], sinceMs: number): Promise<string[]> => {\r\n\tconst
|
|
41
|
+
"import { sep } from 'path';\nimport { DedupePathsBy } from '../types/dedupe-paths-by.ts';\n\nconst isStrictDescendant = (path: string, candidateParent: string): boolean => path.startsWith(candidateParent + sep);\n\nexport const dedupeSharedPaths = (paths: string[], by: DedupePathsBy) => {\n\tconst sortedUniquePaths = Array.from(new Set(paths)).sort((a, b) => a.localeCompare(b));\n\n\tif (by === DedupePathsBy.Parent) {\n\t\tconst deduped: string[] = [];\n\t\tlet lastKept: string | undefined;\n\n\t\tfor (const path of sortedUniquePaths) {\n\t\t\tif (!lastKept || !isStrictDescendant(path, lastKept)) {\n\t\t\t\tdeduped.push(path);\n\t\t\t\tlastKept = path;\n\t\t\t}\n\t\t}\n\n\t\treturn deduped;\n\t}\n\n\tconst deduped: string[] = [];\n\tlet lastKept: string | undefined;\n\tfor (let i = sortedUniquePaths.length - 1; i >= 0; i--) {\n\t\tconst path = sortedUniquePaths[i];\n\t\tif (!path) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!lastKept || !isStrictDescendant(lastKept, path)) {\n\t\t\tdeduped.push(path);\n\t\t\tlastKept = path;\n\t\t}\n\t}\n\n\tdeduped.reverse();\n\treturn deduped;\n};\n",
|
|
42
|
+
"import { stat } from 'fs/promises';\r\nimport { runAsync } from '@package-pal/util';\r\n\r\nexport const filterFilesModifiedSince = async (paths: string[], sinceMs: number): Promise<string[]> => {\r\n\tconst tasks = paths.map(path => async () => {\r\n\t\ttry {\r\n\t\t\tconst s = await stat(path);\r\n\t\t\tconst isModifiedSince = s.mtimeMs >= sinceMs;\r\n\t\t\treturn isModifiedSince ? path : null;\r\n\t\t} catch {\r\n\t\t\t// File does not exist (deleted)\r\n\t\t\treturn path;\r\n\t\t}\r\n\t});\r\n\r\n\tconst results = await runAsync(tasks, 20);\r\n\treturn results.filter((path): path is string => path !== null);\r\n};\r\n",
|
|
43
43
|
"import { styleText } from '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.circular.length > 0\r\n\t\t? packageOrder.groups.toReversed().concat([packageOrder.circular])\r\n\t\t: packageOrder.groups.toReversed();\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.circular.length > 0\r\n\t\t? changedPackageOrder.groups.toReversed().concat([changedPackageOrder.circular])\r\n\t\t: changedPackageOrder.groups.toReversed();\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",
|
|
44
44
|
"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",
|
|
45
45
|
"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",
|
|
46
46
|
"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",
|
|
47
47
|
"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",
|
|
48
48
|
"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",
|
|
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 (
|
|
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\tconst baseLower = base.toLowerCase();\r\n\r\n\tfor (const trailing of removeTrailing) {\r\n\t\tif (baseLower.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",
|
|
50
|
+
"import { 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 { bumpPackageVersion as doBumpPackageVersion } from './package/functions/bump-package-version.ts';\r\nimport { loadPackages } from './package/functions/load-packages.ts';\r\nimport { runForEachPackage } from './package/functions/run-for-each-package.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 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.adapter, 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\treturn doBumpPackageVersion(options);\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"
|
|
50
51
|
],
|
|
51
|
-
"mappings": "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",
|
|
52
|
-
"debugId": "
|
|
52
|
+
"mappings": "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",
|
|
53
|
+
"debugId": "9A67423F575E08A064756E2164756E21",
|
|
53
54
|
"names": []
|
|
54
55
|
}
|
package/lib/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../packages/core/src/lib/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../packages/core/src/lib/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAI3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAInE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,0DAA0D,CAAC;AACzH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG9E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,gBAAgB,KAAG,OAAO,CAAC,yBAAyB,CAGlG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,WAAW,EAAE,CAM3F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,sBAAsB,KAAG,aAGlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,sBAAsB,KAAG,YAGjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iCAAiC,GAAI,SAAS,wCAAwC,KAAG,MAAM,EAAE,EAO7G,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,yBAAyB,KAAG,OAAO,CAAC,IAAI,CAGnF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,oBAAoB,KAAG,IAS7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,qBAAqB,KAAG,OAAO,CAAC,IAAI,CAU3E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-graphs.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/graph/functions/generate-graphs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-graphs.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/graph/functions/generate-graphs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AA2C9D,eAAO,MAAM,cAAc,GAAI,UAAU,WAAW,EAAE,EAAE,QAAQ,MAAM;;;CA0BrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-topological-sorted-groups.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/graph/functions/generate-topological-sorted-groups.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAa9D,eAAO,MAAM,+BAA+B,GAAI,cAAc,YAAY,EAAE,SAAS,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"generate-topological-sorted-groups.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/graph/functions/generate-topological-sorted-groups.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAa9D,eAAO,MAAM,+BAA+B,GAAI,cAAc,YAAY,EAAE,SAAS,MAAM,KAAG,YAgE7F,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bump-package-version.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/package/functions/bump-package-version.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAI7F,eAAO,MAAM,kBAAkB,GAAU,SAAS,yBAAyB,KAAG,OAAO,CAAC,IAAI,CAuCzF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-packages.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/package/functions/load-packages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"load-packages.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/package/functions/load-packages.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,eAAO,MAAM,YAAY,GACxB,SAAS,MAAM,EACf,iBAAiB,MAAM,EAAE,EACzB,SAAS,cAAc,EACvB,QAAQ,MAAM,2BAyCd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-glob-pattern-paths.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/package/functions/scan-glob-pattern-paths.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAK3C,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,EAAE,EAAE,UAAU,eAAe,KAAG,aAAa,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"scan-glob-pattern-paths.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/package/functions/scan-glob-pattern-paths.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAK3C,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,EAAE,EAAE,UAAU,eAAe,KAAG,aAAa,CAAC,MAAM,CAuBrG,CAAC"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type { Logger } from '../../configuration/types/logger.ts';
|
|
2
|
-
import type { PackageGraphs } from '../../graph/types/package-graphs.ts';
|
|
3
|
-
import type { BumpVersionType } from '../../types/bump-version-type.ts';
|
|
4
2
|
import type { PackageData } from './package-data.ts';
|
|
5
3
|
export declare abstract class PackageAdapter {
|
|
6
4
|
/**
|
|
@@ -11,6 +9,10 @@ export declare abstract class PackageAdapter {
|
|
|
11
9
|
* Glob pattern matching project manifests (e.g., 'package.json', '*.*proj').
|
|
12
10
|
*/
|
|
13
11
|
abstract readonly manifestPattern: string;
|
|
12
|
+
/**
|
|
13
|
+
* Default package glob patterns to use if none are specified.
|
|
14
|
+
*/
|
|
15
|
+
abstract readonly defaultPatterns: string[];
|
|
14
16
|
/**
|
|
15
17
|
* Returns true if this adapter detects that it should be used for the current workspace/CWD.
|
|
16
18
|
*/
|
|
@@ -21,16 +23,13 @@ export declare abstract class PackageAdapter {
|
|
|
21
23
|
*/
|
|
22
24
|
abstract scanPackages(patterns: string[], logger: Logger, cwd?: string): AsyncIterable<PackageData>;
|
|
23
25
|
/**
|
|
24
|
-
* Bumps a package's own version
|
|
26
|
+
* Bumps a package's own version in its manifest.
|
|
27
|
+
*/
|
|
28
|
+
abstract bumpOwnVersion(packageData: PackageData, newVersion: string, logger: Logger): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Updates a dependent package's manifest to point to the new dependency version.
|
|
31
|
+
* Returns true if a modification was made.
|
|
25
32
|
*/
|
|
26
|
-
abstract
|
|
27
|
-
packageName: string;
|
|
28
|
-
type: BumpVersionType;
|
|
29
|
-
packageGraphs: PackageGraphs;
|
|
30
|
-
preId: string | undefined;
|
|
31
|
-
exact: boolean | undefined;
|
|
32
|
-
logger: Logger;
|
|
33
|
-
}): Promise<void>;
|
|
33
|
+
abstract bumpDependencyVersion(dependentPackageData: PackageData, targetDependencyName: string, newVersion: string, exact: boolean, logger: Logger): Promise<boolean>;
|
|
34
34
|
}
|
|
35
|
-
export type { PackageAdapter as IPackageAdapter };
|
|
36
35
|
//# sourceMappingURL=package-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-adapter.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/package/types/package-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"package-adapter.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/package/types/package-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,8BAAsB,cAAc;IACnC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAE9C;;;OAGG;IACH,QAAQ,CAAC,YAAY,CACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACV,aAAa,CAAC,WAAW,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,cAAc,CACtB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAC7B,oBAAoB,EAAE,WAAW,EACjC,oBAAoB,EAAE,MAAM,EAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;CACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedupe-shared-paths.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/dedupe-shared-paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dedupe-shared-paths.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/dedupe-shared-paths.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,EAAE,IAAI,aAAa,aAgCnE,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":"
|
|
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":"AAGA,eAAO,MAAM,wBAAwB,GAAU,OAAO,MAAM,EAAE,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAcjG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalise-watched-file-path.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/normalise-watched-file-path.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,wBAAwB,GAAI,UAAU,MAAM,
|
|
1
|
+
{"version":3,"file":"normalise-watched-file-path.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/normalise-watched-file-path.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,wBAAwB,GAAI,UAAU,MAAM,WAcxD,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":"AAgBA,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;;
|
|
1
|
+
{"version":3,"file":"watch-package-changes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/src/lib/watch/functions/watch-package-changes.ts"],"names":[],"mappings":"AAgBA,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;;CAuJd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@package-pal/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"description": "Core PackagePal functionality.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"package",
|
|
7
7
|
"pal",
|
|
8
|
-
"
|
|
9
|
-
"dependencies",
|
|
10
|
-
"deps",
|
|
8
|
+
"ppal",
|
|
11
9
|
"core"
|
|
12
10
|
],
|
|
13
11
|
"license": "MIT",
|
|
14
12
|
"type": "module",
|
|
15
13
|
"dependencies": {
|
|
16
|
-
"@package-pal/util": "^0.0.
|
|
17
|
-
"zod": "^4.4.3"
|
|
14
|
+
"@package-pal/util": "^0.0.12",
|
|
15
|
+
"zod": "^4.4.3",
|
|
16
|
+
"semver": "^7.8.4"
|
|
18
17
|
},
|
|
19
18
|
"devDependencies": {
|
|
20
|
-
"@types/semver": "^7.7.1",
|
|
21
19
|
"@types/bun": "^1.3.14",
|
|
22
|
-
"typescript": "^6.0.3"
|
|
20
|
+
"typescript": "^6.0.3",
|
|
21
|
+
"@types/semver": "^7.7.1"
|
|
23
22
|
},
|
|
24
23
|
"engines": {
|
|
25
24
|
"bun": ">=1.3.0"
|