source: frontend/node_modules/@bcoe/v8-coverage/dist/lib/normalize.mjs

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 13 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 7.2 KB
Line 
1import { compareFunctionCovs, compareRangeCovs, compareScriptCovs } from "./compare";
2import { RangeTree } from "./range-tree";
3/**
4 * Normalizes a process coverage.
5 *
6 * Sorts the scripts alphabetically by `url`.
7 * Reassigns script ids: the script at index `0` receives `"0"`, the script at
8 * index `1` receives `"1"` etc.
9 * This does not normalize the script coverages.
10 *
11 * @param processCov Process coverage to normalize.
12 */
13export function normalizeProcessCov(processCov) {
14 processCov.result.sort(compareScriptCovs);
15 for (const [scriptId, scriptCov] of processCov.result.entries()) {
16 scriptCov.scriptId = scriptId.toString(10);
17 }
18}
19/**
20 * Normalizes a process coverage deeply.
21 *
22 * Normalizes the script coverages deeply, then normalizes the process coverage
23 * itself.
24 *
25 * @param processCov Process coverage to normalize.
26 */
27export function deepNormalizeProcessCov(processCov) {
28 for (const scriptCov of processCov.result) {
29 deepNormalizeScriptCov(scriptCov);
30 }
31 normalizeProcessCov(processCov);
32}
33/**
34 * Normalizes a script coverage.
35 *
36 * Sorts the function by root range (pre-order sort).
37 * This does not normalize the function coverages.
38 *
39 * @param scriptCov Script coverage to normalize.
40 */
41export function normalizeScriptCov(scriptCov) {
42 scriptCov.functions.sort(compareFunctionCovs);
43}
44/**
45 * Normalizes a script coverage deeply.
46 *
47 * Normalizes the function coverages deeply, then normalizes the script coverage
48 * itself.
49 *
50 * @param scriptCov Script coverage to normalize.
51 */
52export function deepNormalizeScriptCov(scriptCov) {
53 for (const funcCov of scriptCov.functions) {
54 normalizeFunctionCov(funcCov);
55 }
56 normalizeScriptCov(scriptCov);
57}
58/**
59 * Normalizes a function coverage.
60 *
61 * Sorts the ranges (pre-order sort).
62 * TODO: Tree-based normalization of the ranges.
63 *
64 * @param funcCov Function coverage to normalize.
65 */
66export function normalizeFunctionCov(funcCov) {
67 funcCov.ranges.sort(compareRangeCovs);
68 const tree = RangeTree.fromSortedRanges(funcCov.ranges);
69 normalizeRangeTree(tree);
70 funcCov.ranges = tree.toRanges();
71}
72/**
73 * @internal
74 */
75export function normalizeRangeTree(tree) {
76 tree.normalize();
77}
78
79//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvbm9ybWFsaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3pDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxVQUFzQjtJQUN4RCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFDLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQy9ELFNBQVMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUM1QztBQUNILENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFVBQXNCO0lBQzVELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUN6QyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNuQztJQUNELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFNBQW9CO0lBQ3JELFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsU0FBb0I7SUFDekQsS0FBSyxNQUFNLE9BQU8sSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1FBQ3pDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQy9CO0lBQ0Qsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsT0FBb0I7SUFDdkQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0QyxNQUFNLElBQUksR0FBYyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBRSxDQUFDO0lBQ3BFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFlO0lBQ2hELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNuQixDQUFDIiwiZmlsZSI6Im5vcm1hbGl6ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBhcmVGdW5jdGlvbkNvdnMsIGNvbXBhcmVSYW5nZUNvdnMsIGNvbXBhcmVTY3JpcHRDb3ZzIH0gZnJvbSBcIi4vY29tcGFyZVwiO1xuaW1wb3J0IHsgUmFuZ2VUcmVlIH0gZnJvbSBcIi4vcmFuZ2UtdHJlZVwiO1xuaW1wb3J0IHsgRnVuY3Rpb25Db3YsIFByb2Nlc3NDb3YsIFNjcmlwdENvdiB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHByb2Nlc3MgY292ZXJhZ2UuXG4gKlxuICogU29ydHMgdGhlIHNjcmlwdHMgYWxwaGFiZXRpY2FsbHkgYnkgYHVybGAuXG4gKiBSZWFzc2lnbnMgc2NyaXB0IGlkczogdGhlIHNjcmlwdCBhdCBpbmRleCBgMGAgcmVjZWl2ZXMgYFwiMFwiYCwgdGhlIHNjcmlwdCBhdFxuICogaW5kZXggYDFgIHJlY2VpdmVzIGBcIjFcImAgZXRjLlxuICogVGhpcyBkb2VzIG5vdCBub3JtYWxpemUgdGhlIHNjcmlwdCBjb3ZlcmFnZXMuXG4gKlxuICogQHBhcmFtIHByb2Nlc3NDb3YgUHJvY2VzcyBjb3ZlcmFnZSB0byBub3JtYWxpemUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQcm9jZXNzQ292KHByb2Nlc3NDb3Y6IFByb2Nlc3NDb3YpOiB2b2lkIHtcbiAgcHJvY2Vzc0Nvdi5yZXN1bHQuc29ydChjb21wYXJlU2NyaXB0Q292cyk7XG4gIGZvciAoY29uc3QgW3NjcmlwdElkLCBzY3JpcHRDb3ZdIG9mIHByb2Nlc3NDb3YucmVzdWx0LmVudHJpZXMoKSkge1xuICAgIHNjcmlwdENvdi5zY3JpcHRJZCA9IHNjcmlwdElkLnRvU3RyaW5nKDEwKTtcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwcm9jZXNzIGNvdmVyYWdlIGRlZXBseS5cbiAqXG4gKiBOb3JtYWxpemVzIHRoZSBzY3JpcHQgY292ZXJhZ2VzIGRlZXBseSwgdGhlbiBub3JtYWxpemVzIHRoZSBwcm9jZXNzIGNvdmVyYWdlXG4gKiBpdHNlbGYuXG4gKlxuICogQHBhcmFtIHByb2Nlc3NDb3YgUHJvY2VzcyBjb3ZlcmFnZSB0byBub3JtYWxpemUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwTm9ybWFsaXplUHJvY2Vzc0Nvdihwcm9jZXNzQ292OiBQcm9jZXNzQ292KTogdm9pZCB7XG4gIGZvciAoY29uc3Qgc2NyaXB0Q292IG9mIHByb2Nlc3NDb3YucmVzdWx0KSB7XG4gICAgZGVlcE5vcm1hbGl6ZVNjcmlwdENvdihzY3JpcHRDb3YpO1xuICB9XG4gIG5vcm1hbGl6ZVByb2Nlc3NDb3YocHJvY2Vzc0Nvdik7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHNjcmlwdCBjb3ZlcmFnZS5cbiAqXG4gKiBTb3J0cyB0aGUgZnVuY3Rpb24gYnkgcm9vdCByYW5nZSAocHJlLW9yZGVyIHNvcnQpLlxuICogVGhpcyBkb2VzIG5vdCBub3JtYWxpemUgdGhlIGZ1bmN0aW9uIGNvdmVyYWdlcy5cbiAqXG4gKiBAcGFyYW0gc2NyaXB0Q292IFNjcmlwdCBjb3ZlcmFnZSB0byBub3JtYWxpemUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTY3JpcHRDb3Yoc2NyaXB0Q292OiBTY3JpcHRDb3YpOiB2b2lkIHtcbiAgc2NyaXB0Q292LmZ1bmN0aW9ucy5zb3J0KGNvbXBhcmVGdW5jdGlvbkNvdnMpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBzY3JpcHQgY292ZXJhZ2UgZGVlcGx5LlxuICpcbiAqIE5vcm1hbGl6ZXMgdGhlIGZ1bmN0aW9uIGNvdmVyYWdlcyBkZWVwbHksIHRoZW4gbm9ybWFsaXplcyB0aGUgc2NyaXB0IGNvdmVyYWdlXG4gKiBpdHNlbGYuXG4gKlxuICogQHBhcmFtIHNjcmlwdENvdiBTY3JpcHQgY292ZXJhZ2UgdG8gbm9ybWFsaXplLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcE5vcm1hbGl6ZVNjcmlwdENvdihzY3JpcHRDb3Y6IFNjcmlwdENvdik6IHZvaWQge1xuICBmb3IgKGNvbnN0IGZ1bmNDb3Ygb2Ygc2NyaXB0Q292LmZ1bmN0aW9ucykge1xuICAgIG5vcm1hbGl6ZUZ1bmN0aW9uQ292KGZ1bmNDb3YpO1xuICB9XG4gIG5vcm1hbGl6ZVNjcmlwdENvdihzY3JpcHRDb3YpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBmdW5jdGlvbiBjb3ZlcmFnZS5cbiAqXG4gKiBTb3J0cyB0aGUgcmFuZ2VzIChwcmUtb3JkZXIgc29ydCkuXG4gKiBUT0RPOiBUcmVlLWJhc2VkIG5vcm1hbGl6YXRpb24gb2YgdGhlIHJhbmdlcy5cbiAqXG4gKiBAcGFyYW0gZnVuY0NvdiBGdW5jdGlvbiBjb3ZlcmFnZSB0byBub3JtYWxpemUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVGdW5jdGlvbkNvdihmdW5jQ292OiBGdW5jdGlvbkNvdik6IHZvaWQge1xuICBmdW5jQ292LnJhbmdlcy5zb3J0KGNvbXBhcmVSYW5nZUNvdnMpO1xuICBjb25zdCB0cmVlOiBSYW5nZVRyZWUgPSBSYW5nZVRyZWUuZnJvbVNvcnRlZFJhbmdlcyhmdW5jQ292LnJhbmdlcykhO1xuICBub3JtYWxpemVSYW5nZVRyZWUodHJlZSk7XG4gIGZ1bmNDb3YucmFuZ2VzID0gdHJlZS50b1JhbmdlcygpO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUmFuZ2VUcmVlKHRyZWU6IFJhbmdlVHJlZSk6IHZvaWQge1xuICB0cmVlLm5vcm1hbGl6ZSgpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
Note: See TracBrowser for help on using the repository browser.