Skip to content

Commit

Permalink
Merge 74743af into 0ea4fa1
Browse files Browse the repository at this point in the history
  • Loading branch information
nikolay-borzov committed Feb 20, 2020
2 parents 0ea4fa1 + 74743af commit d68e5d7
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 12 deletions.
29 changes: 20 additions & 9 deletions src/html.ts
Expand Up @@ -86,6 +86,10 @@ function makeMergedBundle(exploreResults: ExploreBundleResult[]): ExploreBundleR

type TreeNodesMap = { [source: string]: string[] };

function getNodePath(parts: string[], depthIndex: number): string {
return parts.slice(0, depthIndex + 1).join('/');
}

function getTreeNodesMap(fileDataMap: FileDataMap): TreeNodesMap {
let partsSourceTuples = Object.keys(fileDataMap).map<[string[], string]>(file => [
file.split('/'),
Expand All @@ -95,15 +99,22 @@ function getTreeNodesMap(fileDataMap: FileDataMap): TreeNodesMap {
const maxDepth = Math.max(...partsSourceTuples.map(([parts]) => parts.length));

for (let depthIndex = 0; depthIndex < maxDepth; depthIndex += 1) {
partsSourceTuples = partsSourceTuples.map(([parts, file]) => {
const rootPart = parts[depthIndex];

if (rootPart) {
const sameRootParts = partsSourceTuples.filter(
([pathParts]) => pathParts[depthIndex] === rootPart
);

if (sameRootParts.length === 1) {
partsSourceTuples = partsSourceTuples.map(([parts, file], currentNodeIndex) => {
if (parts[depthIndex]) {
const nodePath = getNodePath(parts, depthIndex);

const hasSameRootPaths = partsSourceTuples.some(([pathParts], index) => {
if (index === currentNodeIndex) {
return false;
}
if (!pathParts[depthIndex]) {
return false;
}

return getNodePath(pathParts, depthIndex) === nodePath;
});

if (!hasSameRootPaths) {
// Collapse non-contributing path parts
return [[...parts.slice(0, depthIndex), parts.slice(depthIndex).join('/')], file];
}
Expand Down
2 changes: 1 addition & 1 deletion tests/__snapshots__/cli.test.ts.snap
Expand Up @@ -68,7 +68,7 @@ exports['CLI should multiple bundles output result as html 1'] = `
</body>
<script>
const treeDataMap = {"0":{"name":"[combined]","data":{"name":"/ \u2022 3.62 KB \u2022 100.0%","data":{"$area":3709},"children":[{"name":"inline-map.js \u2022 2.92 KB \u2022 80.6%","data":{"$area":2991},"children":[{"name":"node_modules \u2022 480 B \u2022 12.9%","data":{"$area":480},"children":[{"name":"browser-pack \u2022 480 B \u2022 12.9%","data":{"$area":480},"children":[{"name":"_prelude.js \u2022 480 B \u2022 12.9%","data":{"$area":480}}]}]},{"name":"src \u2022 201 B \u2022 5.4%","data":{"$area":201},"children":[{"name":"bar.js \u2022 104 B \u2022 2.8%","data":{"$area":104}},{"name":"foo.js \u2022 97 B \u2022 2.6%","data":{"$area":97}}]},{"name":"[sourceMappingURL] \u2022 2.25 KB \u2022 62.2%","data":{"$area":2308}},{"name":"[unmapped] \u2022 1 B \u2022 0.0%","data":{"$area":1}},{"name":"[EOLs] \u2022 1 B \u2022 0.0%","data":{"$area":1}}]},{"name":"foo.min.js \u2022 718 B \u2022 19.4%","data":{"$area":718},"children":[{"name":"node_modules \u2022 480 B \u2022 12.9%","data":{"$area":480},"children":[{"name":"browser-pack \u2022 480 B \u2022 12.9%","data":{"$area":480},"children":[{"name":"_prelude.js \u2022 480 B \u2022 12.9%","data":{"$area":480}}]}]},{"name":"src \u2022 201 B \u2022 5.4%","data":{"$area":201},"children":[{"name":"bar.js \u2022 104 B \u2022 2.8%","data":{"$area":104}},{"name":"foo.js \u2022 97 B \u2022 2.6%","data":{"$area":97}}]},{"name":"[sourceMappingURL] \u2022 35 B \u2022 0.9%","data":{"$area":35}},{"name":"[unmapped] \u2022 1 B \u2022 0.0%","data":{"$area":1}},{"name":"[EOLs] \u2022 1 B \u2022 0.0%","data":{"$area":1}}]}]}},"1":{"name":"data/inline-map.js","data":{"name":"/ \u2022 2.92 KB \u2022 100.0%","data":{"$area":2991},"children":[{"name":"node_modules/browser-pack/_prelude.js \u2022 480 B \u2022 16.0%","data":{"$area":480}},{"name":"src \u2022 201 B \u2022 6.7%","data":{"$area":201},"children":[{"name":"bar.js \u2022 104 B \u2022 3.5%","data":{"$area":104}},{"name":"foo.js \u2022 97 B \u2022 3.2%","data":{"$area":97}}]},{"name":"[sourceMappingURL] \u2022 2.25 KB \u2022 77.2%","data":{"$area":2308}},{"name":"[unmapped] \u2022 1 B \u2022 0.0%","data":{"$area":1}},{"name":"[EOLs] \u2022 1 B \u2022 0.0%","data":{"$area":1}}]}},"2":{"name":"data/foo.min.js","data":{"name":"/ \u2022 718 B \u2022 100.0%","data":{"$area":718},"children":[{"name":"node_modules/browser-pack/_prelude.js \u2022 480 B \u2022 66.9%","data":{"$area":480}},{"name":"src \u2022 201 B \u2022 28.0%","data":{"$area":201},"children":[{"name":"bar.js \u2022 104 B \u2022 14.5%","data":{"$area":104}},{"name":"foo.js \u2022 97 B \u2022 13.5%","data":{"$area":97}}]},{"name":"[sourceMappingURL] \u2022 35 B \u2022 4.9%","data":{"$area":35}},{"name":"[unmapped] \u2022 1 B \u2022 0.1%","data":{"$area":1}},{"name":"[EOLs] \u2022 1 B \u2022 0.1%","data":{"$area":1}}]}}};
const treeDataMap = {"0":{"name":"[combined]","data":{"name":"/ \u2022 3.62 KB \u2022 100.0%","data":{"$area":3709},"children":[{"name":"inline-map.js \u2022 2.92 KB \u2022 80.6%","data":{"$area":2991},"children":[{"name":"node_modules/browser-pack/_prelude.js \u2022 480 B \u2022 12.9%","data":{"$area":480}},{"name":"src \u2022 201 B \u2022 5.4%","data":{"$area":201},"children":[{"name":"bar.js \u2022 104 B \u2022 2.8%","data":{"$area":104}},{"name":"foo.js \u2022 97 B \u2022 2.6%","data":{"$area":97}}]},{"name":"[sourceMappingURL] \u2022 2.25 KB \u2022 62.2%","data":{"$area":2308}},{"name":"[unmapped] \u2022 1 B \u2022 0.0%","data":{"$area":1}},{"name":"[EOLs] \u2022 1 B \u2022 0.0%","data":{"$area":1}}]},{"name":"foo.min.js \u2022 718 B \u2022 19.4%","data":{"$area":718},"children":[{"name":"node_modules/browser-pack/_prelude.js \u2022 480 B \u2022 12.9%","data":{"$area":480}},{"name":"src \u2022 201 B \u2022 5.4%","data":{"$area":201},"children":[{"name":"bar.js \u2022 104 B \u2022 2.8%","data":{"$area":104}},{"name":"foo.js \u2022 97 B \u2022 2.6%","data":{"$area":97}}]},{"name":"[sourceMappingURL] \u2022 35 B \u2022 0.9%","data":{"$area":35}},{"name":"[unmapped] \u2022 1 B \u2022 0.0%","data":{"$area":1}},{"name":"[EOLs] \u2022 1 B \u2022 0.0%","data":{"$area":1}}]}]}},"1":{"name":"data/inline-map.js","data":{"name":"/ \u2022 2.92 KB \u2022 100.0%","data":{"$area":2991},"children":[{"name":"node_modules/browser-pack/_prelude.js \u2022 480 B \u2022 16.0%","data":{"$area":480}},{"name":"src \u2022 201 B \u2022 6.7%","data":{"$area":201},"children":[{"name":"bar.js \u2022 104 B \u2022 3.5%","data":{"$area":104}},{"name":"foo.js \u2022 97 B \u2022 3.2%","data":{"$area":97}}]},{"name":"[sourceMappingURL] \u2022 2.25 KB \u2022 77.2%","data":{"$area":2308}},{"name":"[unmapped] \u2022 1 B \u2022 0.0%","data":{"$area":1}},{"name":"[EOLs] \u2022 1 B \u2022 0.0%","data":{"$area":1}}]}},"2":{"name":"data/foo.min.js","data":{"name":"/ \u2022 718 B \u2022 100.0%","data":{"$area":718},"children":[{"name":"node_modules/browser-pack/_prelude.js \u2022 480 B \u2022 66.9%","data":{"$area":480}},{"name":"src \u2022 201 B \u2022 28.0%","data":{"$area":201},"children":[{"name":"bar.js \u2022 104 B \u2022 14.5%","data":{"$area":104}},{"name":"foo.js \u2022 97 B \u2022 13.5%","data":{"$area":97}}]},{"name":"[sourceMappingURL] \u2022 35 B \u2022 4.9%","data":{"$area":35}},{"name":"[unmapped] \u2022 1 B \u2022 0.1%","data":{"$area":1}},{"name":"[EOLs] \u2022 1 B \u2022 0.1%","data":{"$area":1}}]}}};
</script>
<script src="data:application/javascript;base64,ZnVuY3Rpb24gY29sb3JpemUoY2hpbGQpIHsKICBjaGlsZC5kb20uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY2hpbGQuZGF0YS5iYWNrZ3JvdW5kQ29sb3IKfQoKLy8gVmVuZG9yZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcm1taC93ZWJ0cmVlbWFwL2Jsb2IvOWZhMGMwNjZhMTBlYTQ0MDJkOTYwYjBjNmMxYTQzMjg0NmFjN2ZjNC93ZWJ0cmVlbWFwLmpzCgovLyBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKLy8gU2l6ZSBvZiBib3JkZXIgYXJvdW5kIG5vZGVzLgovLyBXZSBjb3VsZCBzdXBwb3J0IGFyYml0cmFyeSBib3JkZXJzIHVzaW5nIGdldENvbXB1dGVkU3R5bGUoKSwgYnV0IEkgYW0KLy8gc2tlcHRpY2FsIHRoZSBleHRyYSBjb21wbGV4aXR5IChhbmQgcGVyZm9ybWFuY2UgaGl0KSBpcyB3b3J0aCBpdC4KCjsoZnVuY3Rpb24oKSB7CnZhciBrQm9yZGVyV2lkdGggPSAxOwoKLy8gUGFkZGluZyBhcm91bmQgY29udGVudHMuCi8vIFRPRE86IGRvIHRoaXMgd2l0aCBhIG5lc3RlZCBkaXYgdG8gYWxsb3cgaXQgdG8gYmUgQ1NTLXN0eWxlYWJsZS4KdmFyIGtQYWRkaW5nID0gNDsKCi8vIHgveSByYXRpbyB0byBhaW0gZm9yIC0tIHdpZGVyIHJlY3RhbmdsZXMgYXJlIGJldHRlciBmb3IgdGV4dCBkaXNwbGF5CnZhciBrQXNwZWN0UmF0aW8gPSAxLjI7Cgp2YXIgZm9jdXNlZCA9IG51bGw7CgpmdW5jdGlvbiBmb2N1cyh0cmVlKSB7CiAgZm9jdXNlZCA9IHRyZWU7CgogIC8vIEhpZGUgYWxsIHZpc2libGUgc2libGluZ3Mgb2YgYWxsIG91ciBhbmNlc3RvcnMgYnkgbG93ZXJpbmcgdGhlbS4KICB2YXIgbGV2ZWwgPSAwOwogIHZhciByb290ID0gdHJlZTsKICB3aGlsZSAocm9vdC5wYXJlbnQpIHsKICAgIHJvb3QgPSByb290LnBhcmVudDsKICAgIGxldmVsICs9IDE7CiAgICBmb3IgKHZhciBpID0gMCwgc2libGluZzsgc2libGluZyA9IHJvb3QuY2hpbGRyZW5baV07ICsraSkgewogICAgICBpZiAoc2libGluZy5kb20pCiAgICAgICAgc2libGluZy5kb20uc3R5bGUuekluZGV4ID0gMDsKICAgIH0KICB9CiAgdmFyIHdpZHRoID0gcm9vdC5kb20ub2Zmc2V0V2lkdGg7CiAgdmFyIGhlaWdodCA9IHJvb3QuZG9tLm9mZnNldEhlaWdodDsKICAvLyBVbmhpZGUgKHJhaXNlKSBhbmQgbWF4aW1pemUgdXMgYW5kIG91ciBhbmNlc3RvcnMuCiAgZm9yICh2YXIgdCA9IHRyZWU7IHQucGFyZW50OyB0ID0gdC5wYXJlbnQpIHsKICAgIC8vIFNoaWZ0IG9mZiBieSBib3JkZXIgc28gd2UgZG9uJ3QgZ2V0IG5lc3RlZCBib3JkZXJzLgogICAgLy8gVE9ETzogYWN0dWFsbHkgbWFrZSBuZXN0ZWQgYm9yZGVycyB3b3JrIChuZWVkIHRvIGFkanVzdCB3aWR0aC9oZWlnaHQpLgogICAgcG9zaXRpb24odC5kb20sIC1rQm9yZGVyV2lkdGgsIC1rQm9yZGVyV2lkdGgsIHdpZHRoLCBoZWlnaHQpOwogICAgdC5kb20uc3R5bGUuekluZGV4ID0gMTsKICB9CiAgLy8gQW5kIGxheW91dCBpbnRvIHRoZSB0b3Btb3N0IGJveC4KICBsYXlvdXQodHJlZSwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQpOwp9CgpmdW5jdGlvbiBtYWtlRG9tKHRyZWUsIGxldmVsKSB7CiAgdmFyIGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIGRvbS5zdHlsZS56SW5kZXggPSAxOwogIGRvbS5jbGFzc05hbWUgPSAnd2VidHJlZW1hcC1ub2RlIHdlYnRyZWVtYXAtbGV2ZWwnICsgTWF0aC5taW4obGV2ZWwsIDQpOwogIGlmICh0cmVlLmRhdGFbJyRzeW1ib2wnXSkgewogICAgZG9tLmNsYXNzTmFtZSArPSAoJyB3ZWJ0cmVlbWFwLXN5bWJvbC0nICsKICB0cmVlLmRhdGFbJyRzeW1ib2wnXS5yZXBsYWNlKCcgJywgJ18nKSk7CiAgfQogIGlmICh0cmVlLmRhdGFbJyRkb21pbmFudF9zeW1ib2wnXSkgewogICAgZG9tLmNsYXNzTmFtZSArPSAoJyB3ZWJ0cmVlbWFwLXN5bWJvbC0nICsKICB0cmVlLmRhdGFbJyRkb21pbmFudF9zeW1ib2wnXS5yZXBsYWNlKCcgJywgJ18nKSk7CiAgICBkb20uY2xhc3NOYW1lICs9ICgnIHdlYnRyZWVtYXAtYWdncmVnYXRlJyk7CiAgfQoKICBkb20ub25tb3VzZWRvd24gPSBmdW5jdGlvbihlKSB7CiAgICBpZiAoZS5idXR0b24gPT0gMCkgewogICAgICBpZiAoZm9jdXNlZCAmJiB0cmVlID09IGZvY3VzZWQgJiYgZm9jdXNlZC5wYXJlbnQpIHsKICAgICAgICBmb2N1cyhmb2N1c2VkLnBhcmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9jdXModHJlZSk7CiAgICAgIH0KICAgIH0KICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICByZXR1cm4gdHJ1ZTsKICB9OwoKICB2YXIgY2FwdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIGNhcHRpb24uY2xhc3NOYW1lID0gJ3dlYnRyZWVtYXAtY2FwdGlvbic7CiAgY2FwdGlvbi5pbm5lckhUTUwgPSB0cmVlLm5hbWU7CiAgZG9tLmFwcGVuZENoaWxkKGNhcHRpb24pOwogIGRvbS50aXRsZSA9IHRyZWUubmFtZTsKCiAgdHJlZS5kb20gPSBkb207CiAgcmV0dXJuIGRvbTsKfQoKZnVuY3Rpb24gcG9zaXRpb24oZG9tLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7CiAgLy8gQ1NTIHdpZHRoL2hlaWdodCBkb2VzIG5vdCBpbmNsdWRlIGJvcmRlci4KICB3aWR0aCAtPSBrQm9yZGVyV2lkdGgqMjsKICBoZWlnaHQgLT0ga0JvcmRlcldpZHRoKjI7CgogIGRvbS5zdHlsZS5sZWZ0ICAgPSB4ICsgJ3B4JzsKICBkb20uc3R5bGUudG9wICAgID0geSArICdweCc7CiAgZG9tLnN0eWxlLndpZHRoICA9IE1hdGgubWF4KHdpZHRoLCAwKSArICdweCc7CiAgZG9tLnN0eWxlLmhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgMCkgKyAncHgnOwp9CgovLyBHaXZlbiBhIGxpc3Qgb2YgcmVjdGFuZ2xlcyB8bm9kZXN8LCB0aGUgMS1kIHNwYWNlIGF2YWlsYWJsZQovLyB8c3BhY2V8LCBhbmQgYSBzdGFydGluZyByZWN0YW5nbGUgaW5kZXggfHN0YXJ0fCwgY29tcHV0ZSBhbiBzcGFuIG9mCi8vIHJlY3RhbmdsZXMgdGhhdCBvcHRpbWl6ZXMgYSBwbGVhc2FudCBhc3BlY3QgcmF0aW8uCi8vCi8vIFJldHVybnMgW2VuZCwgc3VtXSwgd2hlcmUgZW5kIGlzIG9uZSBwYXN0IHRoZSBsYXN0IHJlY3RhbmdsZSBhbmQgc3VtIGlzIHRoZQovLyAyLWQgc3VtIG9mIHRoZSByZWN0YW5nbGVzJyBhcmVhcy4KZnVuY3Rpb24gc2VsZWN0U3Bhbihub2Rlcywgc3BhY2UsIHN0YXJ0KSB7CiAgLy8gQWRkIHJlY3RhbmdsZSBvbmUgYnkgb25lLCBzdG9wcGluZyB3aGVuIGFzcGVjdCByYXRpb3MgYmVnaW4gdG8gZ28KICAvLyBiYWQuICBSZXN1bHQgaXMgW3N0YXJ0LGVuZCkgY292ZXJpbmcgdGhlIGJlc3QgcnVuIGZvciB0aGlzIHNwYW4uCiAgLy8gaHR0cDovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS4zNi42Njg1CiAgdmFyIG5vZGUgPSBub2Rlc1tzdGFydF07CiAgdmFyIHJtaW4gPSBub2RlLmRhdGFbJyRhcmVhJ107ICAvLyBTbWFsbGVzdCBzZWVuIGNoaWxkIHNvIGZhci4KICB2YXIgcm1heCA9IHJtaW47ICAgICAgICAgICAgICAgIC8vIExhcmdlc3QgY2hpbGQuCiAgdmFyIHJzdW0gPSAwOyAgICAgICAgICAgICAgICAgICAvLyBTdW0gb2YgY2hpbGRyZW4gaW4gdGhpcyBzcGFuLgogIHZhciBsYXN0X3Njb3JlID0gMDsgICAgICAgICAgICAgLy8gQmVzdCBzY29yZSB5ZXQgZm91bmQuCiAgZm9yICh2YXIgZW5kID0gc3RhcnQ7IG5vZGUgPSBub2Rlc1tlbmRdOyArK2VuZCkgewogICAgdmFyIHNpemUgPSBub2RlLmRhdGFbJyRhcmVhJ107CiAgICBpZiAoc2l6ZSA8IHJtaW4pCiAgICAgIHJtaW4gPSBzaXplOwogICAgaWYgKHNpemUgPiBybWF4KQogICAgICBybWF4ID0gc2l6ZTsKICAgIHJzdW0gKz0gc2l6ZTsKCiAgICAvLyBUaGlzIGZvcm11bGEgaXMgZnJvbSB0aGUgcGFwZXIsIGJ1dCB5b3UgY2FuIGVhc2lseSBwcm92ZSB0bwogICAgLy8geW91cnNlbGYgaXQncyB0YWtpbmcgdGhlIGxhcmdlciBvZiB0aGUgeC95IGFzcGVjdCByYXRpbyBvciB0aGUKICAgIC8vIHkveCBhc3BlY3QgcmF0aW8uICBUaGUgYWRkaXRpb25hbCBtYWdpYyBmdWRnZSBjb25zdGFudCBvZiBrQXNwZWN0UmF0aW8KICAgIC8vIGxldHMgdXMgcHJlZmVyIHdpZGVyIHJlY3RhbmdsZXMgdG8gdGFsbGVyIG9uZXMuCiAgICB2YXIgc2NvcmUgPSBNYXRoLm1heChzcGFjZSpzcGFjZSpybWF4IC8gKHJzdW0qcnN1bSksCiAgICAgICAgICAgICAgICAgICAgICAgICBrQXNwZWN0UmF0aW8qcnN1bSpyc3VtIC8gKHNwYWNlKnNwYWNlKnJtaW4pKTsKICAgIGlmIChsYXN0X3Njb3JlICYmIHNjb3JlID4gbGFzdF9zY29yZSkgewogICAgICByc3VtIC09IHNpemU7ICAvLyBVbmRvIHNpemUgYWRkaXRpb24gZnJvbSBqdXN0IGFib3ZlLgogICAgICBicmVhazsKICAgIH0KICAgIGxhc3Rfc2NvcmUgPSBzY29yZTsKICB9CiAgcmV0dXJuIFtlbmQsIHJzdW1dOwp9CgpmdW5jdGlvbiBsYXlvdXQodHJlZSwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQpIHsKICBpZiAoISgnY2hpbGRyZW4nIGluIHRyZWUpKQogICAgcmV0dXJuOwoKICB2YXIgdG90YWwgPSB0cmVlLmRhdGFbJyRhcmVhJ107CgogIC8vIFhYWCB3aHkgZG8gSSBuZWVkIGFuIGV4dHJhIC0xLy0yIGhlcmUgZm9yIHdpZHRoL2hlaWdodCB0byBsb29rIHJpZ2h0PwogIHZhciB4MSA9IDAsIHkxID0gMCwgeDIgPSB3aWR0aCAtIDEsIHkyID0gaGVpZ2h0IC0gMjsKICB4MSArPSBrUGFkZGluZzsgeTEgKz0ga1BhZGRpbmc7CiAgeDIgLT0ga1BhZGRpbmc7IHkyIC09IGtQYWRkaW5nOwogIHkxICs9IDE0OyAgLy8gWFhYIGdldCBmaXJzdCBjaGlsZCBoZWlnaHQgZm9yIGNhcHRpb24gc3BhY2luZwoKICB2YXIgcGl4ZWxzX3RvX3VuaXRzID0gTWF0aC5zcXJ0KHRvdGFsIC8gKCh4MiAtIHgxKSAqICh5MiAtIHkxKSkpOwoKICAvLyBUaGUgYWxnb3JpdGhtIGRvZXMgYmVzdCBhdCBsYXlpbmcgb3V0IGl0ZW1zIGZyb20gbGFyZ2VzdCB0byBzbWFsbGVzdC4KICAvLyBTb3J0IHRoZW0gdG8gZW5zdXJlIHRoaXMuCiAgaWYgKCF0cmVlLmNoaWxkcmVuLnNvcnRlZCkgewogICAgdHJlZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgIHJldHVybiBiLmRhdGFbJyRhcmVhJ10gLSBhLmRhdGFbJyRhcmVhJ107CiAgICB9KTsKICAgIHRyZWUuY2hpbGRyZW4uc29ydGVkID0gdHJ1ZTsKICB9CgogIGZvciAodmFyIHN0YXJ0ID0gMCwgY2hpbGQ7IGNoaWxkID0gdHJlZS5jaGlsZHJlbltzdGFydF07ICsrc3RhcnQpIHsKICAgIGlmICh4MiAtIHgxIDwgNjAgfHwgeTIgLSB5MSA8IDQwKSB7CiAgICAgIGlmIChjaGlsZC5kb20pIHsKICAgICAgICBjaGlsZC5kb20uc3R5bGUuekluZGV4ID0gMDsKICAgICAgICBwb3NpdGlvbihjaGlsZC5kb20sIC0yLCAtMiwgMCwgMCk7CiAgICAgICAgY29sb3JpemUoY2hpbGQpCiAgICAgIH0KICAgICAgY29udGludWU7CiAgICB9CgogICAgLy8gRHluYW1pY2FsbHkgZGVjaWRlIHdoZXRoZXIgdG8gc3BsaXQgaW4geCBvciB5IGJhc2VkIG9uIGFzcGVjdCByYXRpby4KICAgIHZhciB5c3BsaXQgPSAoKHkyIC0geTEpIC8gKHgyIC0geDEpKSA+IGtBc3BlY3RSYXRpbzsKCiAgICB2YXIgc3BhY2U7ICAvLyBTcGFjZSBhdmFpbGFibGUgYWxvbmcgbGF5b3V0IGF4aXMuCiAgICBpZiAoeXNwbGl0KQogICAgICBzcGFjZSA9ICh5MiAtIHkxKSAqIHBpeGVsc190b191bml0czsKICAgIGVsc2UKICAgICAgc3BhY2UgPSAoeDIgLSB4MSkgKiBwaXhlbHNfdG9fdW5pdHM7CgogICAgdmFyIHNwYW4gPSBzZWxlY3RTcGFuKHRyZWUuY2hpbGRyZW4sIHNwYWNlLCBzdGFydCk7CiAgICB2YXIgZW5kID0gc3BhblswXSwgcnN1bSA9IHNwYW5bMV07CgogICAgLy8gTm93IHRoYXQgd2UndmUgc2VsZWN0ZWQgYSBzcGFuLCBsYXkgb3V0IHJlY3RhbmdsZXMgW3N0YXJ0LGVuZCkgaW4gb3VyCiAgICAvLyBhdmFpbGFibGUgc3BhY2UuCiAgICB2YXIgeCA9IHgxLCB5ID0geTE7CiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkgewogICAgICBjaGlsZCA9IHRyZWUuY2hpbGRyZW5baV07CiAgICAgIGlmICghY2hpbGQuZG9tKSB7CiAgICAgICAgY2hpbGQucGFyZW50ID0gdHJlZTsKICAgICAgICBjaGlsZC5kb20gPSBtYWtlRG9tKGNoaWxkLCBsZXZlbCArIDEpOwogICAgICAgIHRyZWUuZG9tLmFwcGVuZENoaWxkKGNoaWxkLmRvbSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2hpbGQuZG9tLnN0eWxlLnpJbmRleCA9IDE7CiAgICAgIH0KICAgICAgdmFyIHNpemUgPSBjaGlsZC5kYXRhWyckYXJlYSddOwogICAgICB2YXIgZnJhYyA9IHNpemUgLyByc3VtOwogICAgICBpZiAoeXNwbGl0KSB7CiAgICAgICAgd2lkdGggPSByc3VtIC8gc3BhY2U7CiAgICAgICAgaGVpZ2h0ID0gc2l6ZSAvIHdpZHRoOwogICAgICB9IGVsc2UgewogICAgICAgIGhlaWdodCA9IHJzdW0gLyBzcGFjZTsKICAgICAgICB3aWR0aCA9IHNpemUgLyBoZWlnaHQ7CiAgICAgIH0KICAgICAgd2lkdGggLz0gcGl4ZWxzX3RvX3VuaXRzOwogICAgICBoZWlnaHQgLz0gcGl4ZWxzX3RvX3VuaXRzOwogICAgICB3aWR0aCA9IE1hdGgucm91bmQod2lkdGgpOwogICAgICBoZWlnaHQgPSBNYXRoLnJvdW5kKGhlaWdodCk7CiAgICAgIHBvc2l0aW9uKGNoaWxkLmRvbSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgIGNvbG9yaXplKGNoaWxkKQogICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBjaGlsZCkgewogICAgICAgIGxheW91dChjaGlsZCwgbGV2ZWwgKyAxLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfQogICAgICBpZiAoeXNwbGl0KQogICAgICAgIHkgKz0gaGVpZ2h0OwogICAgICBlbHNlCiAgICAgICAgeCArPSB3aWR0aDsKICAgIH0KCiAgICAvLyBTaHJpbmsgb3VyIGF2YWlsYWJsZSBzcGFjZSBiYXNlZCBvbiB0aGUgYW1vdW50IHdlIHVzZWQuCiAgICBpZiAoeXNwbGl0KQogICAgICB4MSArPSBNYXRoLnJvdW5kKChyc3VtIC8gc3BhY2UpIC8gcGl4ZWxzX3RvX3VuaXRzKTsKICAgIGVsc2UKICAgICAgeTEgKz0gTWF0aC5yb3VuZCgocnN1bSAvIHNwYWNlKSAvIHBpeGVsc190b191bml0cyk7CgogICAgLy8gZW5kIHBvaW50cyBvbmUgcGFzdCB3aGVyZSB3ZSBlbmRlZCwgd2hpY2ggaXMgd2hlcmUgd2Ugd2FudCB0bwogICAgLy8gYmVnaW4gdGhlIG5leHQgaXRlcmF0aW9uLCBidXQgc3VidHJhY3Qgb25lIHRvIGJhbGFuY2UgdGhlICsrIGluCiAgICAvLyB0aGUgbG9vcC4KICAgIHN0YXJ0ID0gZW5kIC0gMTsKICB9Cn0KCmZ1bmN0aW9uIGFwcGVuZFRyZWVtYXAoZG9tLCBkYXRhKSB7CiAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShkb20sIG51bGwpOwogIHZhciB3aWR0aCA9IHBhcnNlSW50KHN0eWxlLndpZHRoKTsKICB2YXIgaGVpZ2h0ID0gcGFyc2VJbnQoc3R5bGUuaGVpZ2h0KTsKICBpZiAoIWRhdGEuZG9tKQogICAgbWFrZURvbShkYXRhLCAwKTsKICBkb20uYXBwZW5kQ2hpbGQoZGF0YS5kb20pOwogIHBvc2l0aW9uKGRhdGEuZG9tLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICBsYXlvdXQoZGF0YSwgMCwgd2lkdGgsIGhlaWdodCk7Cn0KCndpbmRvdy5hcHBlbmRUcmVlbWFwID0gYXBwZW5kVHJlZW1hcDsKfSkod2luZG93KTsK"></script>
Expand Down
2 changes: 1 addition & 1 deletion tests/__snapshots__/html.test.ts.snap
Expand Up @@ -118,7 +118,7 @@ exports['html getWebTreeMapData should collapse non-contributing nodes 1'] = {
]
},
{
"name": "j/k.js \u2022 6 B \u2022 21.4%",
"name": "j/i.js \u2022 6 B \u2022 21.4%",
"data": {
"$area": 6
}
Expand Down
2 changes: 1 addition & 1 deletion tests/html.test.ts
Expand Up @@ -12,7 +12,7 @@ describe('html', () => {
'd/f.js': { size: 3 },
'd/g/h.js': { size: 4 },
'd/g/i.js': { size: 5 },
'd/j/k.js': { size: 6 },
'd/j/i.js': { size: 6 },
z: { size: 7 },
};

Expand Down

0 comments on commit d68e5d7

Please sign in to comment.