aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/@bcoe/v8-coverage/src/lib/normalize.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/@bcoe/v8-coverage/src/lib/normalize.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/@bcoe/v8-coverage/src/lib/normalize.js')
-rw-r--r--vanilla/node_modules/@bcoe/v8-coverage/src/lib/normalize.js96
1 files changed, 96 insertions, 0 deletions
diff --git a/vanilla/node_modules/@bcoe/v8-coverage/src/lib/normalize.js b/vanilla/node_modules/@bcoe/v8-coverage/src/lib/normalize.js
new file mode 100644
index 0000000..130e9b8
--- /dev/null
+++ b/vanilla/node_modules/@bcoe/v8-coverage/src/lib/normalize.js
@@ -0,0 +1,96 @@
+const {
+ compareFunctionCovs,
+ compareRangeCovs,
+ compareScriptCovs,
+} = require("./compare");
+const { RangeTree } = require("./range-tree");
+
+/**
+ * Normalizes a process coverage.
+ *
+ * Sorts the scripts alphabetically by `url`.
+ * Reassigns script ids: the script at index `0` receives `"0"`, the script at
+ * index `1` receives `"1"` etc.
+ * This does not normalize the script coverages.
+ *
+ * @param processCov Process coverage to normalize.
+ */
+function normalizeProcessCov(processCov) {
+ processCov.result.sort(compareScriptCovs);
+ for (const [scriptId, scriptCov] of processCov.result.entries()) {
+ scriptCov.scriptId = scriptId.toString(10);
+ }
+}
+
+/**
+ * Normalizes a process coverage deeply.
+ *
+ * Normalizes the script coverages deeply, then normalizes the process coverage
+ * itself.
+ *
+ * @param processCov Process coverage to normalize.
+ */
+function deepNormalizeProcessCov(processCov) {
+ for (const scriptCov of processCov.result) {
+ deepNormalizeScriptCov(scriptCov);
+ }
+ normalizeProcessCov(processCov);
+}
+
+/**
+ * Normalizes a script coverage.
+ *
+ * Sorts the function by root range (pre-order sort).
+ * This does not normalize the function coverages.
+ *
+ * @param scriptCov Script coverage to normalize.
+ */
+function normalizeScriptCov(scriptCov) {
+ scriptCov.functions.sort(compareFunctionCovs);
+}
+
+/**
+ * Normalizes a script coverage deeply.
+ *
+ * Normalizes the function coverages deeply, then normalizes the script coverage
+ * itself.
+ *
+ * @param scriptCov Script coverage to normalize.
+ */
+function deepNormalizeScriptCov(scriptCov) {
+ for (const funcCov of scriptCov.functions) {
+ normalizeFunctionCov(funcCov);
+ }
+ normalizeScriptCov(scriptCov);
+}
+
+/**
+ * Normalizes a function coverage.
+ *
+ * Sorts the ranges (pre-order sort).
+ * TODO: Tree-based normalization of the ranges.
+ *
+ * @param funcCov Function coverage to normalize.
+ */
+function normalizeFunctionCov(funcCov) {
+ funcCov.ranges.sort(compareRangeCovs);
+ const tree = RangeTree.fromSortedRanges(funcCov.ranges);
+ normalizeRangeTree(tree);
+ funcCov.ranges = tree.toRanges();
+}
+
+/**
+ * @internal
+ */
+function normalizeRangeTree(tree) {
+ tree.normalize();
+}
+
+module.exports = {
+ normalizeProcessCov,
+ deepNormalizeProcessCov,
+ normalizeScriptCov,
+ deepNormalizeScriptCov,
+ normalizeFunctionCov,
+ normalizeRangeTree,
+};